Twofish
暗号では、Twofishはブロックサイズが128ビット、鍵長が256ビットまでの対称鍵ブロック暗号です。
1997年、NISTはDESの後継をAESとして知られるようにするための競争を発表したが、TwofishはAdvanced Encryption Standardの競争のファイナリスト5人のうちの1人であったが、標準としては選ばれなかった。
Twofish はそれ以前のブロック暗号である Blowfish に関連しています。Twofish の主な特徴は、事前に計算された鍵依存の S-box を使用することと、比較的複雑な鍵スケジュールです。nビットの鍵の半分が実際の暗号化鍵として使用され、残りの半分は暗号化アルゴリズムの変更に使用されます(鍵依存Sボックス)。Twofishは他のデザインの要素をいくつか使用しています。例えば、SAFER暗号ファミリの擬似ハダマード変換(PHT)などです。TwofishはDESと同じFeistel構造を使用しています。
ほとんどのソフトウェアプラットフォームでは、Twofishは128ビットの鍵ではRijndael(Advanced Encryption Standardで選択されたアルゴリズム)よりもわずかに遅いが、256ビットの鍵ではやや速い。
TwofishはBruce Schneier、John Kelsey、Doug Whiting、David Wagner、Chris Hall、Niels Fergusonによって設計されたもので、Stefan Lucks、河野忠義、Mike StayらがTwofishや他のAESの競合他社の暗号解析を行うために集まった「拡張Twofishチーム」のメンバーです。
Twofishアルゴリズムは、何の制限もなく誰でも無料で利用できます。Twofish暗号は特許を取得しておらず、その仕様のソフトウェア例はパブリックドメインに置かれています。しかし、TwofishはBlowfishのように、より長い期間利用できるようになっているわけではありません。
暗号解析
2008年の時点で、Twofishブロック暗号に関する最高の暗号解析が、16ラウンド版の完全版の切り捨て差分暗号解析です。この論文では、切り捨てられた差分攻撃の確率は1ブロックあたり2-57.3であり、切り捨てられた差分の良いペアを見つけるには約251個の選択された平文(32PiB相当のデータ)が必要であると主張しています。
Bruce Schneier氏は2005年のブログエントリーで、この論文は完全な暗号攻撃を提示しているのではなく、いくつかの仮説的な差分特性を提示しているに過ぎないと反論しています。"しかし、理論的な観点から見ても、Twofishは全く壊れていません。2000年に発表されて以来、これらの結果を拡張したものはありません」。
質問と回答
Q: Twofishとは何ですか?
A: Twofishは対称鍵ブロック暗号で、ブロックサイズは128ビット、鍵長は最大256ビットです。
Q: Twofishは、以前のブロック暗号Blowfishとどのように関係していますか?
A:Twofishの主な特徴は、事前に計算された鍵依存のS-boxを使用することと、比較的複雑な鍵スケジュールであることです。nビット鍵の半分が実際の暗号鍵として使われ、残りの半分が暗号化アルゴリズムの変更に使われます(鍵依存S-box)。
Q:TwofishはAdvanced Encryption Standardに選ばれたのですか?
A:いいえ、1997年にNISTがDESの後継となるAESを選定するコンペを発表しましたが、Twofishは規格として選定されませんでした。
Q: Twofishは他の設計のどのような要素を使用していますか。
A: Twofishは、SAFER暗号ファミリーの擬似ハダマード変換(PHT)など、他の設計からいくつかの要素を使用しています。
Q: DESのようなFeistel構造を使用していますか?
A: はい、DESのようなFeistel構造を使用しています。
Q: 128ビット鍵の場合、Rijndaelより速いですか?
A: ほとんどのソフトウェアプラットフォームで、Twofishは128ビット鍵のRijndaelより若干遅くなります。
Q: 256ビット鍵の場合、Rijndaelより速いですか?
A: 256ビットキーでは、Rijndaelより若干速いです。