暗号化については初めてですが、SHA-3
(Secure Hash Algorithm 3)がの最新メンバーであることを知りました。 NISTによってリリースされたSecureHashAlgorithmファミリーの標準。
しかし、最近SHA-256
を見ましたが、
?
コメント
回答
古いSHA-256との主な違い FIPS 180 のSHA-2ファミリー、および FIPS 202 は次のとおりです。
-
長さ拡張攻撃への耐性。 SHA-256の場合、 $ H(m)$ が指定されますが $ mは指定されません$ 、 $ H(m \ mathbin \ |特定のサフィックス $ m “$ の場合はm”)$ 。どのSHA-3関数でもそうではありません。
これは、例、つまり $ m \ mapsto H(k \ mathbin \ | m)$ は、pan class = “math-の場合、キー $ k $ の下の安全なメッセージ認証コードではありません container “> $ H $ はSHA-256です。これは、あるメッセージのオーセンティケーターを知っていると、別のメッセージのオーセンティケーターを偽造できるためです。長さ拡張プロパティは、HMACの開発を部分的に動機付けました。
対照的に、キープレフィックス構造は、 $の場合、MACとして安全です。 H $ は、SHA-3関数のいずれか、または新しいSHA-2関数SHA-512 / 224とSHA-512 / 256のいずれかです。本質的にSHA-256の224ビットの切り捨てであるSHA-224の場合(ただし、IVが異なります)、攻撃者には $ 2 ^ {-32} $ のチャンスがあります。 1回の試行で破棄された出力ビットを推測する方法—小さいが無視できない。
-
パフォーマンス。 SHA-2機能(特にSHA-512、SHA-512 / 224、およびSHA-512 / 256)は、通常、SHA-3機能よりも高いパフォーマンスを発揮します。部分的には、これはSHA-3設計プロセスにおけるパラノイアと政治的理由によるものでした。
(それに応じて、SHA-3ファイナリストの1人がはるかに高速な BLAKE2 は、今日インターネットでも広く使用されており、SHA-3の勝者であるKeccakは、はるかに高速な KangarooTwelve にスピンアウトされました。 )
-
完全に異なる内部設計。 SHA-2はDaviesを使用します–Meyer構造、Merkle–Damgård構造のインスタンス、MD4などのARXネットワークから構築されたブロック暗号(SHACAL-2と呼ばれることもあります)。 SHA-3は、Keccak置換を使用したスポンジ構造を使用します。
ここではユーザーに表示される違いはありませんが、多くのDMの後、暗号学者の設計に対する信頼に違いがありました。 MD4に基づく/ ARX設計は、「90年代後半から2000年代初頭に壊れました。
歴史。 FIPS 180、Secure Hash Standard、およびその後のFIPS202¸SHA-3標準でNISTによって標準化されたハッシュ関数の長い列がありました:順列ベースおよび拡張可能出力機能。 SHA-0、SHA-1、およびSHA-2(SHA-3ではない)が基づいていた関連するMD4およびMD5ハッシュ関数を含む詳細と履歴:
\ begin {equation} \ begin {array} {ccc} \ text {hash} & \ text {year} & \ text {coll。 res。} & \ text {size(bits)} & \ text {design} & \ text {壊れた?} \\ \ hline \ text {MD4} & 1990 & 64 & 128 & \ text {32ビットARXDM} & 1995 \\ \ text {SHA-0(SHA)} & 1993 & 80 & 160 & \ text {32 -ビットARXDM} & 1998 \\ \ text {MD5} & 1993 & 64 & 128 & \ text {32ビットARXDM} & 2004 \\ \ text {SHA-1} & 1995 & 80 & 160 & \ text {32ビットARXDM} & 2005 \\ \ hline \ text {SHA-256(SHA-2)} & 2002 & 128 & 256 & \ text { 32ビットARXDM} & \\ \ te xt {SHA-384(SHA-2)} & 2002 & 192 & 384 & \ text {64ビットARXDM} & \\ \ text {SHA-512(SHA-2)} & 2002 & 256 & 512 & \ text {64ビットARXDM} & \\ \ hline \ text {SHA-224(SHA-2)} & 2008 & 112 & 224 & \ text {32ビットARXDM} & \\ \ text {SHA-512 / 224} & 2012 & 112 & 224 & \ text {64ビットARXDM} & \\ \ text {SHA-512 / 256 } & 2012 & 128 & 256 & \ text {64ビットARXDM} & \\ \ hli ne \ text {SHA3-224} & 2013 & 112 & 224 & \ text {64ビットKeccakスポンジ} & \\ \ text {SHA3-256} & 2013 & 128 & 256 & \ text {64ビットKeccakスポンジ} & \\ \ text {SHA3-384} & 2013 & 192 & 384 & \ text {64ビットKeccakスポンジ} & \\ \ text {SHA3-512 } & 2013 & 256 & 512 & \ text {64ビットKeccakスポンジ} & \\ \ text {SHAKE128} & 2013 & {\ leq} 128 & \ text {any} & \ text {64ビットKeccakスポンジ} \\ \ text {SHAKE256} & 2013 & {\ leq} 256 & \ text {any} & \ text {64ビットKeccakスポンジ} \ end {array} \ end {equation}
-
1993年、NISTは divを定義するセキュアハッシュ標準である FIPS 180 を公開しました。 > SHA-0 、元々はセキュアハッシュアルゴリズムの SHA という名前でした。新しく公開されたDSAでの使用を目的としています。 SHA-0は、80ビットの衝突セキュリティを目的とした単一の160ビットハッシュ関数です(現在は完全に壊れています)、ベース1990年のMD4の比較的新しく高速な設計について。
-
1995年、NISTは静かにFIPS 180を撤回し、に置き換えました。 SHA-1 を定義するFIPS180-1 は、SHA-0とは1つ含まれている点が異なります。 -ビット回転。 SHA-0と同様に、 SHA-1は、80ビットの衝突セキュリティを目的とした単一の160ビットハッシュ関数です(現在は完全に壊れています)。
変更についての公開説明はありませんでしたが、Eli Bihamが差分解読法を公開し、学術コミュニティがNSAのDESSボックスの調整に気付いたのはそう長くはありませんでした。 1970年代に、実際にセキュリティが向上しました(DES用にLuciferの128ビットキーサイズを56ビットに減らし、同時にセキュリティを完全に破壊したことを気にしないでください)。同じ年、DobbertinはMD4 [1] 、そして翌年、MD5に深刻な損傷を与えました [2] 。その後間もなく、1998年にFlorentChabaudがAntoine Jouxは、SHA-0に対する $ 2 ^ {61} $ コストの衝突攻撃を報告しました [3] 。
-
2002年、NISTは FIPS 180-2 を公開し、 SHA-2 、さまざまなサイズの関連するハッシュ関数のファミリ: SHA- 256、SHA-384、およびSHA-512は、出力サイズにちなんで名付けられ、それぞれ112ビット、128ビット、192ビット、および256ビットの衝突耐性を目指しています。 SHA -2つの関数は、MD4、MD5、SHA-0、およびSHA-1の設計原則を継続し、より多くのラウンドとより大きな状態を備えています。その後間もなく、2004年にXiaoyun Wangのチームは、MD5およびその他のハッシュ関数の完全な衝突を報告しました [4] 、2005年に $ 2 ^ {69} $ -SHA-1へのコスト攻撃 [5] 、ジェネリックよりも大幅に安価。 MD4をベースにしたデザインの多くが壊れたため、誰もがそのデザインに神経質になりました。そのため…
-
2007年、NISTはSHA-3コンペティションを開始してSHA-2の後継であり、設計が悪いことが判明した場合。競争は数年にわたって行われます。
-
一方、2008年にNISTはSecure HashStandardを更新しました。 FIPS 180-3 を使用し、 SHA-224 を追加しますSHA-2ファミリに追加され、2012年に、NISTは FIPS 180-4(2012)で再度更新し、 SHA-512 / 224 および SHA-512 / 256 、64ビットマシンでのより高速な256ビットおよび384ビットのハッシュ関数。1つの計算を可能にする長さ拡張攻撃に耐性があります。 $ H(m \ mathbin \ | m “)$ が $ H(m)$ と特定の $ m” $ が指定されていない場合 $ m $ を知っています。
-
2013年、SHA-3コンテストは、NISTの選ばれた勝者としてKeccakで終了しました。 、 FIPS 202 で公開しました。 SHA-3 には、4つの固定サイズのハッシュ関数 SHA3-224、SHA3-256、SHA3-384、SHA3-512 、および2つの拡張可能な出力ハッシュ関数 SHAKE128およびSHAKE256 は、最大128ビットまたは256を実現します -出力が十分に長い場合のビットセキュリティレベル。
SHA-3の設計はSHA-2とは完全に異なり、MD4に基づく設計のラインでの暗号分析のブレークスルーはおそらく影響を与えないという確信を与えます。 SHA-3、2000年代初頭の血浴から 10年半後、蜂はいないnSHA-2でも大きな進歩。固定サイズのSHA-3関数用に選択されたパラメーターは、政治的な理由で誤って設計しすぎたため、 [6] 、SHA3-256のようなSHA-3関数は必要以上に遅く、通常はSHAKE128またはSHAKE256を使用する必要があります。
コメント
回答
MACとして"を使用する方が簡単ですか?より安全/高速/実装?
SHA-3からのセキュリティ引数を使用して$ \ text {SHA-3}(K \ | M)$($ K $の長さ)としてMACを構築できます。これはSHA-3の亜種に依存し、そうあるべきです。'確かにわかりません)。 ' SHA-2でそのような引数がない場合(長さ拡張プロパティが適用されない場合でも)。 暗号化スポンジ関数 のセクション5.1.12を参照してください。