
前身(MD5)は、従来のプロセッサの周波数が33MHz以下であった1991年に作成されました。 任意の長さのバイナリ文字列をサイズdの文字列にマッピングし、衝突に耐性があり、プリイメージを見つけ、擬似ランダムである必要がありました。
ハッキング後、米国標準技術局(NIST)はSHA-3ハッシュ関数を作成するための競争を発表しました。
新しいMD6関数は、差分暗号化(MD5がハッキングされた)に対して証明可能な耐性があると想定されています。
開発者は、ハッシュ関数の設計に独自のアイデアを使用しました。 そのため、一度に処理されるデータブロックのサイズは512ビット(ビットではなく)になり、多くの攻撃を実行することが難しくなり、並列化が促進されます。
開発では、従来のDamgard-Merkl設計の代わりに、ツリー構造の助けを借りて圧縮が使用されました。 各ツリーのノードには、圧縮関数4-1(ミニ圧縮関数を持つマークルツリーの類似物)があります。 小さいプロセッサの場合、階層ツリー構造の代わりに、シーケンシャル構造を使用できます。
MD6は512ビットキーハッシュもサポートしています。 さまざまな設計機能(サブノードへの入り口でのツリーノード、ルート、zビットの番号付け)により、関数が挿入攻撃や拡張攻撃から保護されます。 関数の非線形性は、XOR、加算、定数付きシフトの3つの単純な操作を使用して実現されます。
関数ラウンドの数は異常に大きく、 r = 40 +(d / 4)です。 したがって、256出力の場合、104ラウンドが必要になり、512-168ラウンドが必要になります! 同時に、MD6-512は32ビットプラットフォームのSHA2-512より1.5倍遅く、ほぼ4倍6です。
ウィキペディアのMD6
Crypto 2008でのプレゼンテーション