「Sボックス」の版間の差分

削除された内容 追加された内容
Addbot (会話 | 投稿記録)
m ボット: 言語間リンク 10 件をウィキデータ上の d:q748364 に転記
m Bot: DES改名によるリンク修正
4行目:
S-boxは、m ビットの入力を n ビット出力に変換する関数であり、2<sup>m</sup> のルックアップテーブルによって実装できる。
 
通常は、[[DESData (暗号)Encryption Standard|DES]]のように固定テーブルとして定義されるが、暗号によっては[[鍵 (暗号)|鍵]]によってテーブルを動的に生成して使用するものもある。動的に生成する例として、[[Blowfish (暗号)|Blowfish]]や[[Twofish]] がある。
 
1970年代に設計されたDESでは6ビット入力 4ビット出力の S-box を8種類使用しているが、2000年代に設計された[[AES暗号|AES]]や[[Camellia]]では8ビット入出力のS-boxを1種類使用している(Camelliaでは4種の S-box を持つが、三つのS-boxは一つのS-boxの単純な変換となっている)。これはソフトウェアやハードウェアでの実装時に、スピード優先だけではなく、サイズ縮小を優先させた実装も考慮したためである。
 
S-boxの設計は、[[DESData (暗号)Encryption Standard|DES]]作成時にはIBM大型コンピュータを何ヶ月か使ったほど設計は難しい、と言われている。Lucifer暗号はSボックスがとても弱いため、40個の選択平文で破れた。DESは設計時に差分解読法への耐性を持つことを設計方針にしていたことが後に公開された。
 
1990年代前半に[[差分解読法]]・[[線形解読法]]が見つかり、これらの解読法に耐性を持つことが安全なS-boxの必要条件と認識された。(証明されていないが)nビット入出力のS-boxの場合、2の拡大体 GF(2<sup>m</sup>)での逆変換が差分・線形解読に対して最も強いテーブルと考えられている。このとき、差分確率及び線形確率は、 n が奇数の場合 2<sup>-n+1</sup> 、偶数の場合 2<sup>-n+2</sup> となる。AESやCamelliaではそれを線形変換したものが採用されており、差分確率及び線形確率は、 2<sup>-6</sup> である。