暗号
Twofish
定義
Schneier らが設計した 128 ビットブロック・128/192/256 ビット鍵の対称暗号で、AES コンテストの最終候補。安全だが標準採用された AES に押され、利用は限定的。
Twofish は Bruce Schneier、Niels Ferguson、John Kelsey、Doug Whiting、David Wagner、Chris Hall が設計した Feistel 型の 16 ラウンドブロック暗号で、128 ビットブロックと 128/192/256 ビットの鍵長を持ちます。AES コンテスト(1997–2000)の 5 つの最終候補に残り、鍵依存の S-Box、擬似アダマール変換、複雑な鍵スケジュールを用います。特許とライセンス料の制約がなく、現在も暗号解析的に破られていませんが、性能と簡潔性の観点から最終的に Rijndael に敗れました。今日は TrueCrypt/VeraCrypt、GnuPG などで選択肢として実装されています。新規システムでは通常 AES が選ばれ、アルゴリズムの多様化が必要な場合は ChaCha20 などのストリーム暗号と併用するのが一般的です。
例
- VeraCrypt は Twofish を AES、Serpent と重ねたカスケード暗号化を提供する。
- GnuPG は Twofish を対称暗号の選択肢の一つとして提供する。
関連用語
Blowfish
Bruce Schneier が 1993 年に設計した 64 ビットブロック・可変鍵長の Feistel 暗号。暗号解析的には現役だがブロック長が短く、現在は AES に置き換わっている。
AES(Advanced Encryption Standard)
NIST が標準化した 128 ビットブロック暗号で、鍵長は 128・192・256 ビット。Daemen と Rijmen が設計し、世界で最も広く使われている対称暗号。
ブロック暗号
固定長の平文ブロックを秘密鍵で暗号化する対称暗号で、任意長のデータを扱うために通常は暗号利用モードと組み合わせて使う。
対称鍵暗号
暗号化と復号に同じ秘密鍵を使う暗号方式で、鍵を安全に共有できれば高速で強力な機密性を提供する。
暗号化
アルゴリズムと鍵を用いて平文を暗号文に変換し、認可された当事者のみが元のデータを復元できるようにする処理。
暗号スイート
鍵交換、認証、データ暗号化、完全性のアルゴリズム群を 1 つの名前にまとめた組み合わせで、TLS などの協議によりセッションごとに選ばれる。