Twofish
Twofish は Bruce Schneier らが AES 競技のために設計した対称ブロック暗号である。128 ビットブロックと 128/192/256 ビット鍵を持ち、AES 決勝進出アルゴリズムの 1 つだった。
目的
AES 競技でセキュアな選択肢を提供した。Feistel + 鍵依存 S ボックスという異なる構造を採用し、解析の多様化を図る。
メカニズム
128 ビットブロック上の 16 ラウンド Feistel ネットワークである。鍵によって決まる 4 つの鍵依存 S ボックスを、MDS 行列と疑似アダマール変換と組み合わせて使う。鍵スケジュールは比較的複雑であるが、ホワイトニング(入出力での鍵 XOR)を提供する。
ユースケース
- AES コンペティションの歴史
- 一部の暗号ライブラリでの選択肢
- 暗号学のレクチャー
- 高セキュリティな代替手段
例
- 入力
key=256bit, data=16bytesOutput16-byte ciphertextAES finalist
よくあるエラー
- Mistaking Twofish for the AES standard
- AES ultimately selected Rijndael
関連用語
AES
AES(Advanced Encryption Standard)は NIST が 2001 年に確立した対称ブロック暗号であり、128/192/256 ビット鍵をサポートし、現代暗号化の事実上の標準である。 用語集
Blowfish
Blowfish は Bruce Schneier が 1993 年に設計した対称ブロック暗号であり、可変長鍵(32〜448 ビット)と 64 ビットブロックを使う。高速で、特許の制約がない。 用語集
Serpent
Serpent は Ross Anderson らが AES コンペティション向けに設計した対称ブロック暗号である。128 ビットブロックと 128/192/256 ビット鍵を用い、大きなセキュリティ余裕で知られている。 用語集
Block Cipher
ブロック暗号は固定長のブロック(例: 128 ビット)を暗号化・復号する対称暗号であり、任意長のデータを扱うには運用モードが必要である。 用語集