SPN構造

SPN構造（エスピーエヌこうぞう、Substitution Permutation Network Structure）は、ブロック暗号の構成法の一種である。ほとんどのブロック暗号は、実装コストを効率化するため、同一のラウンド関数を繰り返す「繰返し暗号」になっていて、SPN構造は繰返し暗号の代表的な構成法である。他の構成としてはFeistel構造がある。

概要 
小さな非線形置換 (Substitution) とそれを処理ブロック単位に拡大する転置 (Permutation) からなる構造からSPN構造と呼ばれる。暗号に求められる性質の一つに、暗号文から平文を復号できること（復号可能性）があるが、SPN構造は、置換および転置の逆変換を行うことで復号を実現するため、置換及び転置の両方が全単射である必要がある。(このため、置換の入力ビット数と出力ビット数は同一である必要がある。)

AES、Hierocrypt、Serpentなど多くのブロック暗号でSPN構造は採用されている。

利点 
 1ラウンドあたりブロック全体が撹拌される
 Feistel構造と同様の撹拌性を得るためのラウンド数が少なくてすむ

欠点 
 解析実績が少ない
 ラウンド関数の選択の自由度が小さい
 暗号化と復号のルーチンを共通化できない。コードサイズ・回路規模などの点で、ソフトウェアおよびハードウェアでの実装性がFeistel構造に対して劣る

関連項目 
 Feistel構造
 ブロック暗号
 共通鍵暗号
 暗号理論

暗号技術