粉砕とは何ですか? SHA-1の衝突攻撃、説明
2016年の初日に、MozillaはFirefox WebブラウザでのSHA-1と呼ばれる脆弱なセキュリティ技術のサポートを終了しました。ほとんどすぐに、彼らは彼らの決定を覆しました。しかし、2017年2月に、彼らの懸念はついに実現しました。研究者たちは、SHA-1を最初の実世界での衝突攻撃で攻撃しました。これがすべての意味です.
SHA-1とは?
SHA-1のSHAはの略 セキュアハッシュアルゴリズム, 簡単に言えば、あなたはそれを一種の数学的な問題または方法として考えることができます。 入れられたデータをスクランブルする. 米国のNSAによって開発された、インターネット上の重要な通信を暗号化するために使用される多くの技術の中核的要素です。あなたが聞いたことがあるかもしれない一般的な暗号化方式SSLとTLSはあなたのブラウザのツールバーに見える署名された証明書を作成するためにSHA-1のようなハッシュ関数を使うことができます.
私たちはどのSHA機能の数学やコンピューター科学にも深く入るつもりはありませんが、これが基本的な考え方です。 「ハッシュ」は、任意のデータの入力に基づく一意のコードです。 SHA-1のようなハッシュ関数に入力された小さくてランダムな文字列でも、長い設定文字数が返されるため、文字列を元のデータに戻すことは(潜在的に)不可能になります。これがパスワードの保存方法です。パスワードを作成すると、入力したパスワードはサーバーによってハッシュ化されて保存されます。あなたが戻ったとき、あなたがあなたのパスワードを入力するとき、それは再びハッシュされます。元のハッシュと一致する場合、入力は同じであると見なすことができ、あなたのデータへのアクセスが許可されます。.
ハッシュ関数は、入力、たとえばファイルやパスワードが変更されたかどうかを簡単に見分けることができるため、便利です。入力データがパスワードのように秘密である場合、ハッシュは元のデータ(「キー」とも呼ばれる)を元に戻して復元することはほとんど不可能です。これは、暗号化と秘密鍵を使用して、後で暗号化解除する目的でデータをスクランブル化することを目的とする「暗号化」とは少し異なります。ハッシュは単にデータの完全性を保証することを意味しています - すべてが同じであることを確認するため。 Git、オープンソースコードのバージョン管理および配布ソフトウェアは、まさにこの理由でSHA-1ハッシュを使用します.
これは多くの技術情報ですが、簡単に言うと、ハッシュは暗号化と同じものではありません。 ファイルが変更されたかどうかを識別するために使用されます。.
この技術は私にどのように影響しますか?
あなたが個人的にウェブサイトを訪問する必要があるとしましょう。あなたの銀行、あなたのEメール、そしてあなたのFacebookアカウントさえも、あなたがそれらを送るデータを秘密にするために暗号化を使います。プロのWebサイトは、信頼できる機関、つまりWebサイトとユーザーの間で暗号化レベルが非公開であり、他の第三者からの傍受を受けないように信頼できる第三者から証明書を取得することによって暗号化を提供します。第三者とのこの関係は、と呼ばれる 認証局, または CA, どのユーザも「自己署名」証明書を作成できるので、重要です。OpenSSLを備えたLinuxを実行しているマシンで自分で証明書を作成することもできます。 SymantecとDigicertは、2つの有名なCA企業です。.
理論的なシナリオを実行しましょう。How-To Geekは、ログインしたユーザーのセッションを暗号化して非公開にしたいので、SymantecのようなCAに 証明書署名要求, または CSR. 彼らは作成します 公開鍵 そして 秘密鍵 インターネットを介して送信されたデータの暗号化と復号化のため。 CSR要求は、Webサイトに関する情報とともに公開鍵をシマンテックに送信します。データに少しでも変更を加えるとハッシュが根本的に異なるため、シマンテックはデータをすべての関係者が変更していないことを確認するために、キーとそのレコードを照合します。.
これらの公開鍵とデジタル証明書はハッシュ関数によって署名されています。これらの関数の出力は見やすいからです。シマンテック社(この例では)からの検証済みハッシュ付きの公開鍵および証明書は、How-To Geekのユーザーに、鍵が変更されていないこと、悪意のある第三者から送信されていないことを保証します。.
ハッシュは監視が容易であり、元に戻すことは不可能である(「難しい」と言う人もいる)ため、証明書と接続を信頼でき、データをエンドツーエンドで暗号化して送信することに同意できます。 。しかし、もしハッシュが 実際にはユニークではなかった?
衝突攻撃とは何か、そして実世界では可能か?
数学で「誕生日の問題」について聞いたことがあるかもしれませんが、それが何と呼ばれていたのかわからないかもしれません。基本的な考え方は、十分な人数の人々を集めると、2人以上の人々が同じ誕生日を迎える可能性がかなり高いということです。あなたが予想していたよりも高い、実際には十分にそれは奇妙な偶然の一致のように思えます。 23人という小さなグループでは、2人が誕生日を共有する可能性が50%あります.
これは、SHA-1を含むすべてのハッシュに固有の弱点です。理論的には、SHA関数はそこに入れられるデータに対して一意のハッシュを作成する必要がありますが、ハッシュの数が増えるにつれて、異なるデータのペアが同じハッシュを作成する可能性が高くなります。そのため、信頼できる証明書と同じハッシュを持つ信頼できない証明書を作成する可能性があります。その信頼されていない証明書をインストールしてもらうと、信頼されていると見せかけて悪意のあるデータを配布する可能性があります。.
2つのファイル内で一致するハッシュを見つけることを 衝突攻撃. 少なくとも1回の大規模な衝突攻撃がMD5ハッシュに対してすでに起こっていることが知られています。しかし、2017年2月27日に、GoogleはSHAtteredを発表しました。これは、SHA-1のための初の衝突です。内容が異なるにもかかわらず、Googleは他のPDFファイルと同じSHA-1ハッシュを持つPDFファイルを作成することができました.
PDFファイルに対してSHAtteredが実行されました。 PDFは比較的緩いファイル形式です。読者がそれを開くことを妨げたり、目に見える違いを生じさせたりすることなく、多くの小さなビットレベルの変更を加えることができます。 PDFはマルウェアの配信にもよく使用されます。 SHAtteredはISOなどの他の種類のファイルでも動作する可能性がありますが、証明書は厳密に指定されているため、そのような攻撃は起こりそうにありません。.
では、この攻撃はどれほど簡単に実行できますか? SHAtteredは、2012年にMarc Stevensによって発見された方法に基づいており、2 ^ 60.3(9.223 quintillion)SHA-1以上の処理が必要でした。しかしながら、この方法は、総当たりで同じ結果を達成するのに必要とされるよりも依然として10万倍少ない操作である。グーグルは、110台のハイエンドグラフィックスカードが並行して動作していると、衝突を起こすのに約1年かかるだろうと考えました。 Amazon AWSからこの計算時間を借りると、約110,000ドルの費用がかかります。コンピュータ部品の価格が下がり、あなたがより少ない力でより多くの力を得ることができるようになるにつれて、SHAtteredのような攻撃はやってのけるのがより簡単になることを覚えておいてください.
11万ドルものように思えるかもしれませんが、現実のサイバービリヤンがデジタル文書の署名を偽造したり、GitやSVNのようなバックアップやバージョン管理システムを妨害したり、悪質なLinux ISOを合法的に見せかけることができます。.
幸いなことに、このような攻撃を防ぐための問題を緩和する要素があります。 SHA-1がデジタル署名に使用されることはほとんどありません。認証局はSHA-1で署名された証明書を提供しなくなりました。ChromeとFirefoxはどちらもそれらのサポートを終了しました。 Linuxディストリビューションは通常1年に1回以上の頻度でリリースするため、攻撃者が悪意のあるバージョンを作成してから同じSHA-1ハッシュを持つようにパディングしたものを生成することは非現実的です。.
一方、SHAtteredに基づくいくつかの攻撃はすでに現実の世界で起こっています。 SVNバージョン管理システムはファイルを区別するためにSHA-1を使用します。同一のSHA-1ハッシュを持つ2つのPDFをSVNリポジトリにアップロードすると、破損する可能性があります。.
SHA-1攻撃から身を守る方法はありますか?
一般的なユーザーが行うことはそれほど多くありません。ファイルの比較にチェックサムを使用している場合は、SHA-1またはMD5ではなくSHA-2(SHA-256)またはSHA-3を使用してください。同様に、あなたが開発者であれば、SHA-2、SHA-3、またはbcryptのようなより現代的なハッシュアルゴリズムを使うようにしてください。 SHAtteredが2つの異なるファイルに同じハッシュを与えるために使用されているのではないかと心配な場合は、GoogleがSHAtteredサイトで確認できるツールをリリースしました。.
画像のクレジット:Lego Firefox、Lots of Hash、Web作成者を傷つけないでください。Google.