1

教育用ソフトウェアで使用するために Twofish アルゴリズムを実装しています。私は UI に QT を使用し、Wikipedia と Bruce Schneier の Twofish 論文からの調査を使用していますが、ホワイトニング サブキーの生成に固執しました。ラウンド サブキーを生成する方法は理解できましたが、ホワイトニング サブキーを生成する方法は見つかりませんでした。

k = 2 (128 ビット キー、128/64 = 2) を使用しているので、2k = 4; M_e と M_0 のサイズは 2 です。元のキーからそれらを埋め、16 ラウンドのラウンド キーをそれぞれ 2 つのキーで計算しています。

したがって、40 個のサブキーではなく、32 個しか得られません。

美白のために8を逃したのはどこですか?私は論文を読み直しましたが、それらのアルゴリズムが見つかりませんでした。または、ラウンドのものの前または後の最初または最後の N キーのようにそれらがどのように生成されるかについての提案も見つかりませんでした。

ホワイトニングキーを生成するにはどうすればよいですか?

4

1 に答える 1

1

二魚紙から:

ページ 5:

Twofish は、最初の Feistel ラウンドの前に 128 ビットのサブキーを xor し、最後の Feistel ラウンドの後に別の 128 ビットを xor します。これらのサブキーは、ラウンド サブキーと同じ方法で計算されますが、暗号の他の場所では使用されません。

7 ページの式は、入力ホワイトニングが最初の 4 Ki で行われ、出力ホワイトニングが次の 4 Ki で行われることを示しています。

関数 F (メイン ラウンドで使用) は、キー K_(2r+8) および K_(2r+9) を使用します。+8 と +9 は、ホワイトニングに使用される 8 つのキーをスキップするために追加されます。

要約すると、追加の 4 ラウンドのキーを生成する必要があります (8 つの追加のキーを作成します)。最初の 4 つのキーは入力に使用され、次の 4 つのキーは出力に使用されます。

于 2013-06-09T17:51:32.017 に答える