危険なSHA-1アルゴリズムがSSHライブラリから削除されました


SHA-1に対する攻撃の複雑さ。価格は、1つのGTX 1060のレンタル価格の計算に基づいており、月額35ドルです。

他のすべての GTX 1060よりはるかに遅いですが、SSHのライブラリの開発者は、デフォルトで古いSHA-1暗号機能を最終的に無効にすることを決定しました。今日、レンタルされたGPUクラスターでサーバー認証キーSHA-1を選択すること、つまり選択したプレフィックスと競合することは、上記の表に示すように45,000ドルかかります。これにより、州の諜報機関だけでなく、民間のクライアントも攻撃にアクセスできるようになります。

デフォルトでSHA-1を無効にすることは、OpenSSH openSSH(リリースノート)およびlibssh(コード変更ライブラリの開発者によって同時に発表されました

セキュアハッシュアルゴリズム(SHA)は、NSAがNISTと共同で開発しました。 SHA-0の最初のバージョンは1993年に導入されましたが、NSAはすぐにこのバージョンを呼び戻しました。

NSAの修正バージョンは1995年に公開され、SHA-1と呼ばれていました。

SHA-1(Secure Hash Algorithm 1)暗号化ハッシュ関数は、ハッシュダイジェストと呼ばれる160ビットの文字列を生成します。理論的には、ダイジェストは、ファイル、メッセージ、または関数への他の入力ごとに一意である必要があります。入力値として、SHA-1はメッセージのみを受け入れます2641ビット、つまり約2エクサバイト。

ダイジェスト値の範囲が入力値の範囲よりも小さいことは明らかです。しかし、実際には、既存のコンピューティングリソースのパフォーマンス機能を考慮すると、ダイジェスト衝突は実現可能ではありません。残念ながら、SHA-1はこの基準を満たしていません。

2017年、Googleとアムステルダムの数学とコンピューターサイエンスセンターの従業員は、SHA-1の衝突を生成する最初の方法を紹介しました

彼らは証拠を公開しました:異なる内容であるが同じデジタル署名SHA-1を持つ2つのPDF文書


  $ls -l sha*.pdf 
  -rw-r--r--@ 1 amichal  staff  422435 Feb 23 10:01 shattered-1.pdf
  -rw-r--r--@ 1 amichal  staff  422435 Feb 23 10:14 shattered-2.pdf
  $shasum -a 1 sha*.pdf
  38762cf7f55934b34d179ae6a4c80cadccbb7f0a  shattered-1.pdf
  38762cf7f55934b34d179ae6a4c80cadccbb7f0a  shattered-2.pdf



shattered.itの Webサイトで、衝突の可能性があるスペースに含まれているかどうか、ファイルを確認できます。つまり、同じハッシュで別のデータセット(ファイル)を取得することは可能ですか。攻撃の方向性は明らかです。攻撃者は「良い」ファイルを自分のコピーでブックマーク、悪意のあるマクロ、またはトロイの木馬のダウンローダーに置き換えることができます。そして、この「悪い」ファイルは同じハッシュまたはデジタル署名を持っています。

近年、研究者がSHA-1を使用してデジタル署名を偽造する実用的な方法を示した後、多くのプログラムとサービスがSHA-1の使用を停止しています。専門家の満場一致の意見では、このアルゴリズムは現在、ほとんどすべてのセキュリティコンテキストで安全ではありません。

Googleは長い間、特にこの機能を使用してTLS証明書に署名することで、SHA-1に対する不信を表明してきました。 2014年に、Chrome開発チームはSHA-1の段階的廃止を発表しました。

2017年、研究者はGoogleインフラストラクチャを使用して計算を実行し、衝突の検索にかかる時間の理論計算をチェックしました。これは、Googleがこれまでに行った最大のコンピューティングの1つであると開発者は言います。合計で9千兆のSHA-1計算が実行され(9,223,372,036,854,775,808)、攻撃の第1フェーズで6,500プロセッサ年、第2フェーズで110年のGPUが必要でした。

同じSHA-1ハッシュのメッセージブロック


2019年に、研究者のGaetan LaurentとThomas Peyrinは、選択したプレフィックスとの競合を検出する攻撃を示しました。これは、特定のPGP / GnuPG暗号化キーを選択するのに実用的です。最後に、2020年1月に、著者らは攻撃を桁違いに最適化し、理論上のコストを商業的に許容できる価格まで削減しました(上記の表とpdfを参照)。実例を示すために、彼らは同じSHA-1証明書で異なるPGP / GnuPGキーのペアを作成しました。

SHA-1衝突の検出に対する攻撃に対する防御策として、より優れた暗号化ハッシュ関数SHA-256およびSHA-3に切り替えることをお勧めします。

最新リリースのメモに書いたOpenSSH開発者は、2020年1月からこの調査を引用しています。「SHA-1アルゴリズムを使用して、選択した接頭辞で5万米ドル未満で攻撃を実行できるようになりました。このため、近い将来、デフォルトのssh-rsa公開鍵署名アルゴリズムを無効にする予定です。残念ながら、このアルゴリズムはまだ広く使用されています。より優れた代替策が存在するにもかかわらず、元のSSH RFCによって定義された唯一の公開鍵署名アルゴリズムであり続けました。

最良の選択肢の中で、OpenSSH開発者はRFC8332 RSA SHA-2アルゴリズム(OpenSSH 7.2からサポートされ、サーバーとクライアントがサポートしている場合はデフォルトですでに使用されています)、ssh-ed25519(6.5からサポート)、RFC5656 ECDSA(バージョン5.7から)を呼び出します。

サーバーが認証用の公開鍵を生成するときに弱いSHA-1アルゴリズムを使用していることを確認するには、ssh(1)で許可されているリストからssh-rsaアルゴリズムを削除してから接続を試みます

ssh -oHostKeyAlgorithms=-ssh-rsa user@host

検証が失敗し、他のタイプのキーが使用できない場合は、サーバーソフトウェアを更新する必要があります。

OpenSSHの将来のバージョンでは、UpdateHostKeysオプションがデフォルトで有効になり、クライアントは自動的に最適なアルゴリズムに切り替えます。手動でアクティブ化できます。

どうやら、SHA-1の完全なシャットダウンには長い時間がかかります。 1月の調査の共著者の1人である、コンピュータサイエンスおよびオートメーションの国立研究所(フランス)のGaetan Laurentは、OpenSSH開発者がこれをすぐに行うことを期待していません。 SSHサーバー- 書き込み彼。-おそらく、これの前に、彼らは一連の段階的な段階を踏むでしょう(大きな警告付き)。一方、長年更新されていないSSHを搭載した組み込みシステムでは、おそらくセキュリティ上の問題が多いため、作業を中断することはそれほど悪くないかもしれません...とにかく、この動きに非常に満足しています、これまさに私たちが達成したかったものです:-)」。

OpenSSHとlibsshがSHA-1を無効にする計画を発表した後、SHA-1ユーザーのリストは短くなりましたが、消えることはありませんでした。この機能は、最新バージョンのOpenSSLライブラリでも引き続きサポートされています。OpenSSLライブラリは、HTTPSやその他の暗号化プロトコルを実装するために多くのWebサイトやインターネットサービスで使用されています。今月初めにリリースされたGNUコレクションコンパイラの最新バージョンは、SHA-1ハッシュでデジタル署名されています。

ライナス・トーバルズ前記Gitリポジトリでは、ハッシュの衝突はセキュリティリスクを引き起こしません。彼は、暗号化システムのデジタル署名に暗号ハッシュを使用することと、Gitのようなシステムで「コンテンツID」を生成することには大きな違いがあると説明しました。すべてのデータがパブリックドメインにある場合、実際の攻撃はほとんど不可能です。科学研究の著者は、同じ接頭辞を持つドキュメントへの攻撃の例を挙げています。プレフィックス自体がブロブのようにドキュメント内で「閉じている」ため、この攻撃は成功しています。リポジトリにオープンソースがある場合、これはまったく別の問題です。ソースコードから(blobからのみ)このようなプレフィックスを作成することはほとんど不可能です。つまり、同じプレフィックスを作成し、同じSHA-1ハッシュでコードブランチを生成するには、コードにランダムデータを挿入する必要があります。これはすぐにわかります。ライナスは言うデータを非表示にできる場所がありますがgit fsckすでにそのようなトリックをキャッチしています。ただし、LinusはSHA-1の使用を回避して、誰もリポジトリを変換する必要がないようにする計画を持っています。

All Articles