web-dev-qa-db-ja.com

ハッシュアルゴリズムSHA-2とSHA-3の違いは何ですか?

SHA-224、SHA-256、SHA-384、SHA-512はすべて SHA-2ハッシュ関数ファミリー の一部であることを私は知っています。しかし、新しいSHA-3ハッシュアルゴリズムもあります。

SHA-2とSHA-3の違いを教えてください。いつ、なぜSHA-3を使用する必要がありますか?そして、SHA-3には実際にどのセキュアハッシュアルゴリズムが含まれていますか?

18
user1926193

SHA- 、別名Keccak( NIST SHA-3コンペティション の勝者として選ばれる前の元の名前)は、完全に新しいハッシュアルゴリズムです。 SHA-1およびSHA-2とは何の関係もありません。

実際、NISTが他のSHA-3コンペティションファイナリストよりもKeccakを選択した理由の1つは、既存のSHA-1/2アルゴリズムとの非類似性でした。この非類似性により、既存のSHA-2アルゴリズム(依然として安全であると見なされ、NISTによって推奨されている)をより適切に補完し、将来の暗号解読の突破口が両方のSHA-のセキュリティを危険にさらす可能性が低くなると主張されました。 2およびSHA-3。

いくつかの背景として、SHA-3ハッシュ関数の競合は、いくつかの新しい暗号解読攻撃がSHA-1のセキュリティに疑問を投げかけた後、2007年にNISTによって最初に発表されました。当時、SHA-1への攻撃は主に理論的な関心事でしたが、これらの手法をさらに改善すると、SHA-1に対する実際の衝突発見攻撃が可能になり、同じ手法がSHA-2にも適用される可能性があることが懸念されました。 SHA-1と同様のデザインを共有しています。そのため、NISTは、SHA-3の後継者を選択するためのコンテストを開催することを決定しました。

ただし、SHA-1に対する実際の衝突攻撃 2017年にようやく実証されました 一方で、SHA-2に対する恐れられた攻撃は実現していません。今日では、SHA-2の破壊は、10年前のように簡単ではないことが一般的に認められています。したがって、SHA-2のすべての亜種は、当面の間、安全であると見なされています。しかし、NISTが2012年にSHA-3を選択することを約束していたため、そして多くの人々が競争のための新しいハッシュ関数の提出と評価にかなりの時間と労力を費やしたため、そしていくつかの本当に素晴らしいデザインがあったためファイナリストの中で、結局、勝者として選ばなかったのは残念に思えたでしょう。そのため、NISTはKeccakをSHA-3として選択し、SHA-2ハッシュ関数の代替(後継ではない)として推奨することにしました。

つまり、安全で標準化されたハッシュ関数が必要な場合は、SHA-2またはSHA-3のいずれかを選択できます。 本当に妄想を感じている場合は、両方を使用し、どちらか一方が安全であるように暗号システムを設計することもできます。ハッシュ関数が壊れています。

29
Ilmari Karonen