ブロック暗号
暗号標準として採用(もしくは推奨)されているブロック暗号には次のものがある。
64bit TDEA - ISO/IEC_18033, CRYPTREC MISTY1 -ISO/IEC_18033, CRYPTREC, NESSIE CAST-128 -ISO/IEC_18033 CIPHERUNICORN-E - CRYPTREC Hierocrypt-L1 -CRYPTREC MULTI2 - ARIB限定受信方式 KASUMI - 3GPP W-CDMAおよびGSM用の暗号
128bit AES -ISO/IEC_18033, CRYPTREC, NESSIE Camellia -ISO/IEC_18033, CRYPTREC, NESSIE SEED -ISO/IEC_18033 CIPHERUNICORN-A - CRYPTREC Hierocrypt-3 -CRYPTREC SC2000 -CRYPTREC
256bit SHACAL-2 -NESSIE
1971年頃にIBMでHorst Feistelにより開発されたLuciferが(民生用としての)最初のブロック暗号とされている。Luciferは、換字式暗号と転字式暗号を組み合わせた、換字-転字暗号 (Substitution-permutation cipher) である。1977年にLuciferをベースにして、DESが制定された。
ブロック暗号アルゴリズムの弱点を用いて鍵の全数探索以下の計算量で鍵(の一部)を求める手法を総称してショートカット法と呼ぶ。ショートカット法には多くの種類があるが、ここでは代表的なものを列挙する。
差分解読法(差分暗号解読) en:Differential cryptanalysis (Biham, 1989) 不能差分解読法 en:Impossible differential cryptanalysis 切詰差分解読法 Truncated Differential Cryptanalysis 高階差分解読法 Higher Order Differential Cryptanalysis Square攻撃 en:Square attack 飽和攻撃 Saturation Attack ブーメラン攻撃 en:Boomerang attack 補間攻撃 en:Interpolation attack (Jakobsen, Knudsen, 1997) 線形和攻撃 Linear Sum Attack (Aoki, 1999)
ブロック暗号は、メインのスクランブラと拡大鍵を生成する鍵スケジューラから構成されているものが多い。さらに、鍵スケジューラは鍵を入力として複数個の拡大鍵を出力し、スクランブラは複数のラウンドからなり、個々のラウンドで拡大鍵を使って入力の置換・転置等を行う構成になっているものが多い。この構成の暗号をProduct cipher(積暗号)という。また、ラウンドが同じ関数の繰り返しになっている場合にはIterated cipher(繰返し暗号)という。
ラウンド関数は置換や転置、論理演算、算術演算などのシンプルな部品で構成されていて、ラウンド関数を複数段、重ねることで十分な強度のスクランブルを行うものである。ラウンド段数は、通常、アルゴリズムの仕様によって指定されているが、セキュリティパラメータとして利用者が選択するものもある。
ラウンド関数の主な構成法にはFeistel構造とSPN構造の2つがある。DES, MISTY1, CamelliaはFeistel構造で、AESはSPN構造の暗号である。