SHA-1

提供: tezos-wiki
移動先: 案内検索

メッセージを拡張し、h メッセージ ))}}(0の長さ b < / sup>の長さ)を再計算することによって、[[暗号化のメッセージ ' 、ゼロブロックは、ハッシュ関数のブロックサイズに等しい)。

攻撃[編集]

2005年の初めに、[Vincent Rijmen | Rijmen]と[Elisabeth Oswald | Oswald]は、80ラウンドのうちSHA-1の53個の縮小版に対する攻撃を公開しました。 2 80 80 </ sup>オペレーション。

2005年2月には、[Xiaoyun Wang]、[Yiqun Lisa Yin]、[Hongbo Yu]の攻撃が発表されました。著者らは、2回の33回の実験で発見された58ラウンドのSHA-1の衝突を提示した。ハッシュ演算。完全攻撃の記述を含むペーパーは、2005年8月にCRYPTOカンファレンスで発表されました。

インタビューでは、「大まかに、我々は次の2つの弱点を利用する:1つは、ファイル前処理ステップが十分に複雑ではないことであり、もう1つは、最初の20回の数学演算では予期しないセキュリティ問題があるということです。

2005年8月17日、CRYPTO 2005 Rump SessionでXiaoyun Wang [Andrew Yao]とFrances Yaoの代わりにSHA-1攻撃の改善が発表され、衝突を発見するために必要な複雑さが軽減されましたSHA-1~270 63 / sup。 2007年12月18日、この結果の詳細がMartin Cochranによって説明され、検証されました。

Christophe DeCannièreとChristian Rechbergerは、[ASIACRYPT] 2006で最優秀論文賞を受賞した「SHA-1の特徴を見つける:一般的な結果とアプリケーション」でSHA-1に対する攻撃をさらに改善しました.64ラウンドの2ブロックの衝突SHA-1が提示され、2&apos; 35&apos;を有する最適化されていない方法を用いて見出された。圧縮関数の評価この攻撃は約2 35 /秒の等価を必要とするので、重要な理論上の欠点であると考えられています。彼らの攻撃はGrechnikovによって2010年にさらに73回(80回)に拡大された。しかし、ハッシュ関数の完全な80ラウンドで実際の衝突を見つけるためには、膨大なコンピュータ時間が必要です。そのために、分散コンピューティングプラットフォームBOINCを使用したSHA-1の衝突検索は2007年8月8日に[Graz University of Technology]によって開始されました。 2009年5月12日、進捗状況の不足により、この取り組みは中止されました。

CRYPTO 2006のRumpセッションでは、Christian RechbergerとChristophe DeCannièreが、攻撃者がメッセージの少なくとも一部を選択できるようにするSHA-1の衝突攻撃を発見したと主張しています。

2 51 51の理論的複雑性と比較した。 〜2 57の範囲内である。オペレーション。しかし、後に彼は、局所的な衝突経路が実際には独立していないことを発見した後、その主張を後退させ、最後にこの作業の前に既に知られていた最も効率的な衝突ベクトルを引用した。

Cameron McDonald、Philip HawkesおよびJosef Pieprzykは、要求された複雑度2を有するハッシュ衝突攻撃を提示した(52)。しかし、付録の論文「複雑な[[Big O notation | O ](2 <52> </ sup>)を持つSHA-1の差分パスは、彼らの見積りが間違っていたという著者の発見のために取り下げられた。

SHA-1に対する攻撃の1つはMarc Stevensで、クラウドサーバからCPUパワーを借りて単一のハッシュ値を破るための推定コストは2.77Mです。スティーブンスは、この攻撃をHashClashというプロジェクトで開発し、差分パス攻撃を実装しました。 2010年11月8日に、彼は、完全なSHA-1に対してほぼ完全に動作する衝突衝突攻撃が、2 57.5に等しい推定複雑さで動作していると主張した。 SHA-1圧迫。彼は、この攻撃が約2 61 / s前後の複雑さを有する完全な衝突まで拡張できると推定した。

SHAppening[編集]

On、Marc Stevens、Pierre Karpman、およびThomas Peyrinは、SHA-1の圧縮機能に対するフリースタットコリジョン攻撃を公開しましたが、これは2 57だけしか必要としませんでした。 SHA-1の評価。これは完全なSHA-1ハッシュ関数(攻撃者が最初の内部状態を自由に選択できない場合)では衝突に直接変換されませんが、SHA-1のセキュリティ要求を弱体化させます。特に、完全なSHA-1に対する攻撃が初めて実証されたのは初めてでした。初期の攻撃はすべて、作者がそれらを実行するには高価でした。著者らはSHA-1の解読法でこの重要なブレークスルーを「SHAppening」と命名しました。

SHAttered - 最初のパブリックコリジョン[編集]

Googleは、「SHAttered」攻撃を発表しました。この攻撃では、SHA-1ハッシュが2つの異なるPDFファイルを約2つの63.1 </ sup>で生成しました。 SHA-1の評価。この攻撃はブルートゥースよりも約10万倍高速であり、SHA-1とbirthday attackとの衝突が強制され、2&gt; 80&lt; SHA-1の評価。この攻撃には、「6,500年の単一CPU計算と110年の単一GPU計算」と同等の処理能力が必要でした。

ほとんど同じ値にハッシュされます。この場合、160ビットのうち142ビットは等しい。彼らはまた、80ラウンドのうち62個に減少したSHA-0の完全な衝突を発見しました。

その後、2004年8月12日に、Joux、Carribault、Lemuet、およびJalbyによって完全なSHA-0アルゴリズムの衝突が発表されました。これはChabaud攻撃とJoux攻撃の一般化を使って行われました。衝突を見つけることは、複雑さ2 1 51を有していた。 256 [Itanium 2]プロセッサを搭載した[スーパーコンピュータ]で約8万プロセッサ時間(コンピュータのフルタイム使用の13日間に相当)を要しました。

2004年8月17日、CRYPTO 2004のRumpセッションで、 Wang、Feng、Lai、Yuによって[MD5]、SHA-0および他のハッシュに対する攻撃についての予備結果が発表されました機能。 SHA-0に対するそれらの攻撃の複雑さは、2&lt; 40&lt; / sup>であり、Jouxらの攻撃よりもかなり良好である。

2005年2月にSHA-0の衝突を2&acd; 39で見つけることができるXiaoyun Wang、Yiqun Lisa Yin、Hongbo Yuによる攻撃が発表された。オペレーション。

2008年の[ブーメラン攻撃]を適用した別の攻撃では、平均PCで1時間かかると見積もられる2 33.6 / supに衝突を見つける複雑さが生じました。

SHA-0の結果に照らして、いくつかの専門家は、新しいcryptosystemにおけるSHA-1の使用計画について再考すべきであると提案した。 CRYPTO 2004の成果が公表された後、NISTは、SHA-1の使用を2010年までに段階的に廃止する予定であることを発表しました。

正式な検証[編集]

FIPSで承認されたすべてのセキュリティ機能の実装は、[[国立標準技術研究所](NIST)と通信セキュリティの確立によって共同運営されている CMVPプロ​​グラム] (CSE)。非公式検証のために、多数のテストベクトルを生成するパッケージをNISTサイトでダウンロードすることができます。しかし、その結果の検証は、特定のアプリケーションに対して法律で要求される正式なCMVPの検証に取って代わるものではありません。

SHA-1には2000を超える検証済みの実装があり、そのうち14個は8の倍数ではないビット長のメッセージを処理できます(/shs/shaval.htm SHS Validation List)。

サンプルハッシュ[編集]

これらは、SHA-1 メッセージダイジェストの16進数の例とBase64バイナリからASCIIテキストエンコーディングの例です。

 SHA1(「茶色のキツネが怠け者の上に飛ぶ」)  16進数を与える:2fd4e1c67a2d28fced849ee1bb76e7391b93eb12  Base64バイナリにASCIIテキストエンコーディングを与える:L9ThxnotKPzthJ7hu3bnORuT6xI =

圧倒的な確率で、メッセージの小さな変化でさえ、[アバランシェ効果]によって多くのビットが変化します。たとえば、&lt; code&gt; dog&lt; / code&gt;を変更すると、 〜&lt; code&gt; cog&lt; / code&gt; 160ビットのうちの81ビットについて異なる値を有するハッシュを生成する。

 SHA1(「茶色のキツネが怠け者の上に飛ぶ」)  16進数を与える:de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3  Base64バイナリにASCIIテキストエンコーディングを与える:3p8sf9JeGzr60 + haC9F9mxANtLM =

長さゼロの文字列のハッシュは次のとおりです。

 SHA1( "")  16進数を与える:da39a3ee5e6b4b0d3255bfef95601890afd80709  Base64バイナリにASCIIテキストエンコーディングを与える:2jmj7l5rSw0yVb / vlWAYkK / YBwk =

SHA-1擬似コード[編集]

SHA-1アルゴリズムの擬似コードは次のようになります。    注1:すべての変数は、符号なし32ビット量であり、2を法とする32をラップする(&lt; span style = "color:green;">計算時は、 &lt; / span&gt;    例えばビット1をメッセージに付加する。メッセージの長さが8ビットの倍数の場合は0x80を追加します。  追加0≦k < 512ビット '0'であり、その結果得られるメッセージの長さを 'bits' '  -64≡448(mod 512)に合同があります。  元のメッセージ長であるmlを64ビットビッグエンディアン整数として付加する。従って、全長は512ビットの倍数である。    &lt; span style = "color:green;"&gt; 連続した512ビットのチャンクでメッセージを処理します: &lt; / span&gt;  メッセージを512ビットのチャンクに分割する   各チャンク  チャンクを16個の32ビットビッグエンディアンワードw [i]、0≤i≤15    &lt; span style = "color:green;"&gt; "'16個の32ビットワードを80個の32ビットワードに拡張する:'&lt; / span&gt;   〜のために  w [i] =(w [i-3] xor 'w [i-8]' xor 'w [i-14]' 'xor' '[i-16 ]) '左回転' 1    &lt; span style = "color:green;"&gt; このチャンクのハッシュ値を初期化します: &lt; / span&gt;  a = h0  b = h1  c = h2  d = h3  e = h4

'へ79   0≤i≤19 'ならば'  f =(b 'および' c b)  k = 0x5A827999   'else if' 20≦i≦39  f = b 'xor' c 'xor' "'d  k = 0x6ED9EBA1   'else if' 40≤i≤59  f =(b 'と' c 'と' d '  k = 0x8F1BBCDC   'else if' 60≤i≤79  f = b 'xor' c 'xor' "'d  k = 0xCA62C1D6    temp =(a '左回転' 5)+ f + e + k + w [i]  e = d  d = c  c = b '左回転' 30  b = a  a = temp    &lt; span style = "color:green;"&gt; これまでの結果にこのチャンクのハッシュを追加します: &lt; / span&gt;  h0 = h0 + a  h1 = h1 + b  h2 = h2 + c  h3 = h3 + d  h4 = h4 + e    &lt; span style = "color:green;"&gt; 最終的なハッシュ値(ビッグエンディアン)を160ビットの数値として生成します: &lt; / span&gt;  hh =(h0 'leftshift' 128 '(h1' leftshift '96)' (h2 'leftshift' 64) または '(h3' leftshift '32)' または 'h4

&lt; code&gt; hh&lt; / code&gt;はメッセージダイジェストで、16進数(16進数)で書くことができますが、しばしば[Base64]]バイナリからASCIIテキストエンコーディングを使用して記述されます。   使用される定数値は、何も私の袖の番号をつけない sとなるように選択される:4つの定数k < 2≦b≦30である。 &lt; code&gt; h0&lt; / code&gt;の最初の4つの開始値は、2、3、5、 &lt; code&gt; h3&lt; / code&gt; MD5アルゴリズムと同じであり、第5の( h4 </ code>)は同様である。

示されたオリジナルのFIPS PUB 180-1からの処方の代わりに、以下の等価物 この変換は、すべてのオペランドを64ビットに整列させ、&lt; code&gt; w [i]&lt; / code&gt; x86 SSE命令のようなベクトル長4の効率的なSIMD実装を可能にする。

SHA関数の比較[編集]

以下の表で、「内部状態」は、データブロックの各圧縮後の「内部ハッシュサム」を意味します。

パフォーマンスはアルゴリズム間だけでなく、使用される特定の実装やハードウェアによっても異なることに注意してください。 OpenSSLツールには、ユーザーのシステム上のさまざまなアルゴリズムをベンチマークする「速度」コマンドが組み込まれています。

関連項目[編集]

Notes[編集]

ソース[編集]

http://wikipedia.org/