web-dev-qa-db-ja.com

MD5およびSHA512ハッシュアルゴリズムのラウンド

MD5およびSHA512ハッシュアルゴリズムで採用されている正確なラウンド数はいくつですか?

さまざまな情報源によると、SHA512ハッシュアルゴリズムは合計80ラウンドを採用しています( http://en.wikipedia.org/wiki/SHA2 )。

一方、MD5ハッシュアルゴリズムに関しては、混乱しています。ウィキペディアによると、MD5は64ラウンドを採用しています( http://en.wikipedia.org/wiki/SHA2 )。ただし、別のWebサイトでは、MD5は4ラウンドを使用すると述べています( http://md5live.com/2013/03/06/encryption-methods-sha1-vs-md5-vs-sha256/ )。どちらが正しいですか?

ラウンド数に関する信頼できる情報源を見つけられないようです。さらに、これらのラウンドは正確には何ですか?簡単に言えば、ハッシュアルゴリズムはこれらのラウンド中に何をしますか?どうもありがとうございました :))

6
Matthew

「ラウンド」とは何かについての客観的で体系的で一貫した概念はありません。各アルゴリズム仕様は、独自の方法で物事を定義します。

MD5 は、最初にパディングしてから、その入力を512ビットblocksに分割するものとして説明されています。次に、RFCが言うように、4つのラウンドがあり、各ラウンドは16の非常に類似した操作のシーケンスです。つまり、MD5は(ブロックごとに)「4ラウンド」を使用していると言えます。ただし、暗号学者はすぐにこの用語を避け、MD5の潜在的な弱点について話すとき、「ラウンド」と呼ばれる内部操作に集中します。その見方では、MD5は64ラウンドを持っています。

SHA-512 は、入力データを1024ビットブロックにパディングおよび分割するのと同じように指定され、各ブロックは4のシーケンスを80回繰り返すループで処理されます steps。したがって、SHA-512は(ブロックごとに)「320ステップ」を使用していると言えます。そこでも、暗号学者は「80ラウンド」について話すことに多かれ少なかれ暗黙のうちに同意します。これらの各ラウンドは、MD5の「ラウンド」(MD5が64ラウンドであると言われる場合)のおよそ2倍の操作を意味するため、SHA-512は実際には160ラウンドであると主張できます。か否か。

これらの用語の問題は、話していることについて全員が同意する限り、重要ではありません。重要な点は、他よりも正しい「ラウンド」という絶対的な概念がないこと、または「ラウンドの数」に基づいて異なるアルゴリズムを比較できるということです。


ラウンド内で何が発生するかを知ることに関して、最も簡単な方法は、仕様を読んで、それをある言語で実装することです。これは(MD5で始まる)難しくはなく、優れた教育実験です。

12
Tom Leek

ハッシュ関数は通常、単一の操作を繰り返し実行することによって機能します。通過するたびに「ラウンド」と呼ばれます。

鍋をかき混ぜるのに少し似ています。スプーンを1回転するだけで、完全に何かを混ぜることは期待できません。しかし、十分に長くかき混ぜると、成分の元の状態を判別できなくなります。

これは、SHA-1のラウンドの例です。単一のデータブロックは小さなチャンクに分割され、各チャンクに対して特定の操作がその位置に応じて実行されます。最後に、位置が少しずれて、関数を再度実行します。

Sha1 from wikipedia
[記号の意味については Wikipediaページ を参照]

ラウンド数を見つける場所については、ほとんどの技術的な説明は、通常はWikipediaを含め、これらの詳細を提供します。しかし、最も正確で信頼できる定義が必要な場合は、NISTに提出された元の技術仕様が最も信頼できるソースです。

10
tylerl