2

AES キー スケジュールのチュートリアルで、キー スケジュールの操作 (rotate、rcon、s-box) が 4 バイトの単語に適用されることを確認しました。この単語がどこから来たのか説明してください。キーは 128 ビット長です。キーは 4x4 マトリックスとして保存されます。では、キー スケジュールに使用される単語を取得するにはどうすればよいですか?簡単な質問かもしれませんが、わかりません。ありがとうございます。

4

1 に答える 1

2

hereで説明されています(いくつかのコードを使用)。これは、「これまでのところ」拡張キーの最後の 4 バイトです。

  1. 128 ビット (16 バイト) のキーから始めます。拡張キーの最初の 16 バイトはそれらのバイトです。

  2. その最後の 4 バイトを取得し、(rotate,rcon,s-box) ダンスを実行し、さらに 4 バイトを取得します。これを 16 バイト前の 4 バイトと xor します (つまり、最初に、キーの開始時に)、それを拡張キーに追加します。

  3. 拡張キーの最後の 4 バイト (追加したもの) を取得し、それを 16 バイトの「バック」バイト (つまり、最初はバイト 5 から 8) で xor し、結果を拡張キーに追加します。

  4. 毎回拡張キーの最後の 4 バイトを使用して、3 をさらに 2 回繰り返します。

  5. 必要な合計の拡張長さが得られるまで、2 から繰り返します。

そのため、常に、拡張キーに最後に追加された 4 バイトを使用しています。セクションの最初の 4 バイトは (rotate,rcon,s-box) を使用して「初期化」されます。

また、標準のセクション 5.2 で少し異なる方法で説明されています (また、質問への回答がより明確になる可能性があります)。彼らは、常に最後の 4 バイトを取得し、16 バイト前の 4 バイトと xor 演算し、4 回ごとに (rotate,rcon,s-box) ダンスを行うと説明しています。これにより、上記の手順 2 と 3 の xor が「同じ」であることが明確になります。

より長いキーの場合、上記の定数の一部を調整します (したがって、より長い「セクション」を行います)。

于 2013-09-21T14:19:07.087 に答える