SHA-3とSHA-256の違いは何ですか?

暗号化については初めてですが、SHA-3(Secure Hash Algorithm 3)がの最新メンバーであることを知りました。 NISTによってリリースされたSecureHashAlgorithmファミリーの標準。

しかし、最近SHA-256を見ましたが、

コメント

  • SHA-256は256ビット出力のSHA-2です。SHA-2はSHA-3の前身。名前以外の共有はほとんどありません。
  • ただし、名前は本質を捉えています。暗号化を行っていない場合、これらはすべてセキュアハッシュアルゴリズムです。契約とセキュリティの主張はほぼ同じです。 。
  • @MeirMaor大胆なステートメントのように見えるSHA-1の存在を考えると。
  • @ Maeher、SHA1は基本的に同じ要件で作成されましたが、今ではそうではないことがわかりました' tはそれらを満たしています。少なくとも、衝突抵抗の要件があります。また、出力サイズは小さくなりますがSHA3の出力サイズはSHA2と同じである可能性があります。

回答

古い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は 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を使用する必要があります。

コメント

  • "完全に壊れている"と言うと、私が理解している限り、 m1 、計算することは可能です。 H( m1 )= H( m2 )となるi> m2 。ただし、固定メッセージ M が与えられた場合、H(< M M と等しくない)メッセージ m を計算することは、まだ誰も管理していません。 i> M )= H( m )。
  • @MartinBonnerはい、' mは衝突耐性について話しますここで、「直前と完全に壊れた」という2つの単語が「衝突セキュリティ」であるのはそのためです。 'ここでは原像耐性に対処していません。これは、原像耐性の衝突耐性のないハッシュ関数の安全な使用が非常に 微妙と私は'不注意な読者に罠を残さないようにしています; MD5 'の preimage 抵抗他の場所の状態に対処します'具体的に質問されました。

回答

SHA256とSHA3の違い

SHA256とSHA3の主な違いは、内部アルゴリズム設計です。

SHA2(およびSHA1)は、 Merkle–Damgård構造を使用して構築されます。

一方、SHA3はスポンジ機能でKeccakファミリーに属しています。

この名前は、SHA2と比較してSHA3が単なる新しい"バージョンのアルゴリズム。 SEJPMが言ったように: " […]彼らは名前以外はほとんど共有していません。" 名前は NIST から付けられたもので、"安全なハッシュアルゴリズム"、公式標準のファミリー。

MAC <を構築できますが/ a> SHA256とSHA3の両方を使用すると、SHA3 MACの方が使いやすくなります(以下のfgrieuのコメントを参照)。

出力

SHA256は256ビットのハッシュを出力します。

SHA3では、

  • 224ビット
  • 256ビット
  • 384ビット
  • の出力が可能です。 512ビット

ハッシュ。ただし、SHA2バリアント(SHA256はこれらのバリアントの1つです)でもこれらの長さが可能です。

SHA3アルゴリズムは

SHAKE "アルゴリズムであり、任意の長さの出力が可能です。追加情報については、この以前に尋ねられた質問

セキュリティ

Merkle–Damgård構造のみを使用し、それらのフルを出力するハッシュl(またはほぼ満杯)状態は、長さ拡張攻撃に対して脆弱です。

SHAKEアルゴリズムは最適な非対称暗号化パディング。


直接比較を表示できますこちら(wikipedia)

コメント

  • 厳密に言えば、" Merkle–Damgを利用するハッシュå rd構造は長さ拡張攻撃に対して脆弱です"は正しくありません。反例には、SHA-512 / 256とSHA-384が含まれます。これらは、完全な状態を出力しないためです。もう1つはSHA-256dで、最初のハッシュの状態を非表示にするため、SHA-256d(m)= SHA-256(SHA-256(m))として定義されます。保持されるのは、" only がMerkle–Damg åの第3構造を使用するハッシュです。完全な(またはほぼ完全な)状態を出力するは、長さ拡張攻撃に対して脆弱です"。 ' SHA-2とSHA-3のもう1つの違いは、後者の方がMACとして使いやすいことです。

MACとして"を使用する方が簡単ですか?より安全/高速/実装?

  • SHA-3からのセキュリティ引数を使用して$ \ text {SHA-3}(K \ | M)$($ K $の長さ)としてMACを構築できます。これはSHA-3の亜種に依存し、そうあるべきです。'確かにわかりません)。 ' SHA-2でそのような引数がない場合(長さ拡張プロパティが適用されない場合でも)。 暗号化スポンジ関数 のセクション5.1.12を参照してください。
  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です