| 一般的な | |
|---|---|
| デザイナー | ブルース・シュナイアー、ニールス・ファーガソン、ステファン・ラックス、 ダグ・ホワイティング 、ミヒル・ベラーレ、 河野忠良 、ジョン・カラス、 ジェシー・ウォーカー |
| 初版 | 2008 |
| 関連 | フグ、ツーフィッシュ |
| 暗号の詳細 | |
| キーサイズ | 256、512、または1024ビット (キーサイズはブロックサイズと同じ) |
| ブロックサイズ | 256、512、または1024ビット |
| ラウンド | 72 (1024 ビット ブロック サイズの場合は 80) |
| スピード | Core 2では6.1cpb。[ 1 ] |
| 最高の公開暗号解読 | |
| 2010年10月、回転暗号解読とリバウンド攻撃を組み合わせた攻撃が公開されました。この攻撃では、Threefish-256の72ラウンドのうち53ラウンド、Threefish-512の72ラウンドのうち57ラウンドに対して既知の鍵識別器が実装されています。また、 Skeinハッシュ関数にも影響します。 [2] | |
Threefishは、 NISTハッシュ関数コンペティションのエントリーであるSkeinハッシュ関数の一部として設計された対称 鍵調整可能ブロック暗号です。Threefishは、キャッシュタイミング攻撃を回避するためにSボックスやその他のテーブル検索を使用しません。[1]その非線形性は、排他的論理和との交互加算に由来しています。その点で、 Salsa20、TEA、およびSHA-3候補のCubeHashやBLAKEに似ています。
Threefish と Skein ハッシュ関数は、Bruce Schneier、Niels Ferguson、Stefan Lucks、Doug Whiting、Mihir Bellare、Tadashi Kohno、Jon Callas、および Jesse Walker によって設計されました。
暗号の説明
Threefish は 64ビットのワード(符号なしリトルエンディアン 整数)で動作します。はプレーンテキストのワード数とキーワード数です。 調整は 2 つのワードで構成されます。 すべての加算と減算は を法として定義されます。
主なスケジュール
Threefish はラウンドで暗号化し、異なるラウンド キーを使用します。4 ラウンドごとに、最初のラウンドの前に、ラウンド キーワードがデータ ワードに追加されます。ラウンド キーを計算するために、追加のキーワードが元のキーワードに追加されます。また、追加の調整ワードが調整ワードに追加されます。
一見任意の定数の目的は、と他のキーワード の関係を利用した攻撃を阻止することです。
ラウンドキーワードは次のように定義されます。
ここで、 はラウンドキーワードが使用されるラウンドの番号です。
ミックス機能

mix 関数は単語のタプルを受け取り、別の単語のタプルを返します。関数は次のように定義されます。
迅速な拡散を実現するために選択された固定された回転定数のセットです。
並べ替え
置換ステップでは、一定のパターンに従ってワードの位置を入れ替えます。このステップではビットレベルの置換は行われませんが、MIX 関数はビット単位の回転の形でビットレベルの置換を提供するため、これは必要ありません。[引用が必要] MIX 関数の置換ステップと回転定数は、全体的な効果がデータ ブロック内のすべてのビットの完全な拡散になるように選択されます。[引用が必要]
この順列は固定されており、キーとは独立しているため、計算に必要な時間からはキーや平文に関する情報は得られません。これは重要なことです。なぜなら、最近のマイクロプロセッサのほとんどでは、パフォーマンスの最適化により、配列操作の計算にかかる時間が、データがメモリ内のどこに保存されているかによって変わる可能性があるからです。配列の検索がキーまたは平文のいずれかに依存する暗号では (AES の置換ステップの場合のように)、暗号化に必要な時間を調べることで、タイミング攻撃に対して暗号が脆弱になる可能性があります。したがって、順列は、使用されているキーや暗号化されたデータに関係なく、同じ方法で実行されるように意図的に設計されています。[引用が必要]
完全なThreefishラウンド
- ラウンドキーが単語に追加された場合
- ミックス関数は単語のペアに適用され、回転幅はラウンド数と単語のペアによって異なります。
- 単語は、丸め数とは無関係な順列を使用して並べ替えられる
Threefish256 と Threefish512 はこのラウンドを回適用します ( )。Threefish1024 はこれを 80 回適用します ( )。
最終操作
すべてのラウンドが適用された後、最後のラウンドのキーワードが単語に追加され、単語はバイトの文字列に変換されます。
安全
2010 年 10 月、回転暗号解読とリバウンド攻撃を組み合わせた攻撃が公開されました。この攻撃では、Threefish-256 の 72 ラウンドのうち 53 ラウンド、Threefish-512 の 72 ラウンドのうち 57 ラウンドに対して既知のキー識別器を実装します。また、 Skeinハッシュ関数にも影響します。[2]これは、それぞれ 39 ラウンドと 42 ラウンドを破る 2 月に公開された以前の攻撃の続編です。[3]この攻撃に対応して、Skein チームは Threefish で使用される回転定数を微調整し、それによってNIST ハッシュ関数コンペティションの第 3 ラウンドのキースケジュール定数を調整しました。 [1]
2009 年には、短縮ラウンドの Threefish バージョンに対する関連する重要なブーメラン攻撃が公開されました。32 ラウンド バージョンでは、時間計算量は、メモリ計算量は です。33 ラウンド バージョンでは、時間計算量はで、メモリ使用量はごくわずかです。この攻撃は、Threefish の調整バージョンに対しても有効です。32 ラウンド バージョンでは、時間計算量は、メモリ計算量は です。33 ラウンド バージョンでは、時間計算量はで、メモリ使用量はごくわずかです。[4]
参照
参考文献
- ^ abc ファーガソン、ニールス;運がよかった、ステファン。シュナイアー、ブルース。ホワイティング、ダグ。ベッラーレ、ミヒル。河野忠良;カラス、ジョン。 Walker, Jesse (2010 年 10 月 1 日)、The Skein Hash Function Family (PDF) 、 2014 年 8 月 24 日のオリジナル(PDF)からアーカイブThreefish が紹介された論文。
- ^ ab Khovratovich, Dmitry; Nikolic, Ivica; Rechberger, Christian (2014). 「縮小されたかせに対する回転リバウンド攻撃」。Journal of Cryptology . 27 (3): 452–479. doi :10.1007/S00145-013-9150-0.
- ^ Khovratovich, Dmitry; Nikolic, Ivica (2010). 「ARX の回転暗号解析」 Hong, Seokhie; Iwata, Tetsu (編)。高速ソフトウェア暗号化、第17 回国際ワークショップ、FSE 2010、ソウル、韓国、2010 年 2 月 7 ~ 10 日、改訂選定論文。コンピュータ サイエンスの講義ノート。第 6147 巻。Springer。pp. 333 ~ 346。doi :10.1007/978-3-642-13858-4_19。
- ^ Chen, Jiazhe; Jia, Keting (2010)。「ラウンド削減された Threefish-512 に対する改良された関連キー ブーメラン攻撃」。Kwak, Jin、Deng, Robert H.、Won, Yoojae、Wang, Guilin (編)。情報セキュリティ、実践と経験、第 6 回国際会議、ISPEC 2010、韓国ソウル、2010 年 5 月 12 ~ 13 日。議事録。コンピュータ サイエンスの講義ノート。第 6047 巻。Springer。pp. 1 ~ 18。doi : 10.1007/978-3-642-12827-1_1。
