では小型暗号化アルゴリズム:
ラウンドの対称性に基づく単純な攻撃を防ぐために、異なる定数のマジック定数が使用されます。マジック定数2654435769または9E3779B9 16は、に選択されます。ここで、ϕは黄金比です。
どのプロパティがないそれはこの文脈では、それは有用なものにする必要がありますか?
では小型暗号化アルゴリズム:
ラウンドの対称性に基づく単純な攻撃を防ぐために、異なる定数のマジック定数が使用されます。マジック定数2654435769または9E3779B9 16は、に選択されます。ここで、ϕは黄金比です。
どのプロパティがないそれはこの文脈では、それは有用なものにする必要がありますか?
回答:
私の知る限り、そのような「マジック」値には次の2つのプロパティがあります。
MD5でも同様のケースが見つかる場合があります。次の行を検討してください。
k[i] := floor(abs(sin(i + 1)) × (2 pow 32))
ここでsin(i + 1)
は、マジック値を生成するためのものです。ユニークでランダムに見えるもので、多くので機能しi
ます。(実際にi
は、0..63の範囲)。
編集:TEAの元の論文を読むと、「Steven Stadnicki」の回答が正しいことがわかります。マジック定数は名前デルタであることに注意してください。
デルタの異なる倍数が各ラウンドで使用されるため、倍数のビットが頻繁に変更されることはありません。アルゴリズムはデルタの値にあまり敏感ではないので、悪い値を避ける必要があるだけです。デルタは切り捨てまたは最も近い丸めでは奇数になるため、合計の桁が確実に変更されるようにするための特別な予防措置は必要ありません。
32の倍数のデルタのみが使用されるため(各ラウンドに1つ)、アルゴリズムが特定のデルタにあまり敏感ではないことは奇妙ではありません。(詳細については、Steven Stadnickiの回答を参照してください。)
編集2:ちなみに、MD4は2(0x5a827999)と3(0x6ed9eba1)の平方根を操作の「マジック」定数として使用します。本「ネットワークセキュリティ:パブリックワールドでのプライベートコミュニケーション」のセクション5.4.4で、これについて詳しく説明しています。
設計者が意図的に定数の悪魔的な値を選択しなかったことを示すために、定数は2の平方根に基づいています。
この説明は、Gillesのコメントで下に述べたポイントと同じです。
k[i]
MD5で定義されているについて、コメントはありますか?(上記の私の答えを参照してください。)