ブロック暗号アルゴリズム

ブロック暗号とは

ブロック暗号は入力データを一定長のブロックに区切って暗号化を行う方式ある.ブロック長としては,多くのブロック暗号で 64ビットまたは 128ビットが採用されている.

ブロック暗号の機能は次のように表わされる.

ここで,M は平文ブロック,C は暗号文ブロック,EK は鍵 K を用いた暗号化関数,DK は鍵 K を用いた復号関数である.

ブロック単位ではなく 1ビット単位に暗号化するのがストリーム暗号である. (→ ストリーム暗号アルゴリズム)

ブロック暗号の基本構造

ブロック暗号方式の基本構造を図に示す.鍵処理部は,入力された鍵からデータ攪拌処理に使う鍵(拡張鍵あるいは副鍵と呼ばれる)を生成する処理である.データ攪拌処理は,入力データの置換や換字によりデータを攪拌する処理であり,この攪拌処理が複数回 (16~32回程度) 繰り返される.


scipher_mech

共通鍵暗号(ブロック暗号)の基本構造

ブロック暗号は,データ攪拌処理の基本構造により次の2つに分類される.

Feistel型
入力されたブロックデータを左右2個のサブブロックに分け,片方のサブブロックにのみ鍵の値を与えた後F関数 (S-Box 等の非線形関数)により変換を行い,他方のサブブロックにXOR処理によって重ね合わせる処理をする.1ラウンドでは片側のみしか暗号化処理がされないため,処理後は左右のサブブロックを置き換えて同じように処理を繰り返し実行する.
Feistel型の代表的な暗号は DES である.
●利点
- F 関数の選択自由度が広い (F 関数が全単射である必要がない).
- 暗号化と復号のルーチンを共通化でき(ラウンド鍵の順番だけを入れ替えればよい),コードサイズ・回路規模などの点でソフトウェアおよびハードウェアでの実装性に優れる.
- 一度に処理するデータ長がブロック長の半分(変形Feistel構造の場合は半分以下)になるため,ラウンド関数のビット幅を小さくすることができる.これはSボックスの個数を少なく出来る等を意味する.
●欠点
- 1ラウンドあたり攪拌されるのはブロックのうち一部のみである.
- SPN構造と同様の攪拌性を得るためにはラウンド数を増やす必要がある.
SPN型
SPN(Substitution-Permutation Network)は,入力を分割せず,S層 と P層で構成されるラウンド関数を繰り返す構造を持つ.S層は S-boxによる換字,P層はビットシフト等により実現される.
SPN型の代表的な暗号は AES である.
●利点
- 1ラウンドあたりブロック全体が撹拌されるため,ラウンド処理数に比べて攪拌が速い.
- Feistel構造と同様の撹拌性を得るためのラウンド数が少なくてすむ.
●欠点
- ラウンド関数の選択の自由度が小さい.
- 暗号化と復号のルーチンを共通化できない.コードサイズ・回路規模などの点でソフトウェアおよびハードウェアでの実装性がFeistel構造に対して劣る.
- S-Box などの使用関数は全単射で,逆関数が用意できるものに限られる.

ブロック暗号アルゴリズム

代表的な共通鍵暗号(ブロック暗号)アルゴリズムを示す.

inserted by FC2 system