ブロック暗号アルゴリズム
ブロック暗号とは
ブロック暗号は入力データを一定長のブロックに区切って暗号化を行う方式ある.ブロック長としては,多くのブロック暗号で 64ビットまたは 128ビットが採用されている.
ブロック暗号の機能は次のように表わされる.
- 暗号化:C = EK (M)
- 復号 :M = DK (C)
ここで,M は平文ブロック,C は暗号文ブロック,EK は鍵 K を用いた暗号化関数,DK は鍵 K を用いた復号関数である.
ブロック単位ではなく 1ビット単位に暗号化するのがストリーム暗号である.
(→ ストリーム暗号アルゴリズム)
ブロック暗号の基本構造
ブロック暗号方式の基本構造を図に示す.鍵処理部は,入力された鍵からデータ攪拌処理に使う鍵(拡張鍵あるいは副鍵と呼ばれる)を生成する処理である.データ攪拌処理は,入力データの置換や換字によりデータを攪拌する処理であり,この攪拌処理が複数回 (16~32回程度) 繰り返される.
共通鍵暗号(ブロック暗号)の基本構造
ブロック暗号は,データ攪拌処理の基本構造により次の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 などの使用関数は全単射で,逆関数が用意できるものに限られる.
ブロック暗号アルゴリズム
代表的な共通鍵暗号(ブロック暗号)アルゴリズムを示す.
- DES
DES (Data Encryption Standard)は,1973年に米国商務省標準局(NBS: National Bureau of Standard)がコンピュータデータの暗号化方式を公募し,IBM社から提案された方式をもとに,1977年に標準化(FIPS-77)された暗号である. DESは,64ビットのブロック暗号であり,鍵長 56ビットで転置と換字の組合せ処理を 16段行う.
(仕様:FIPS PUB 46: "Data Encryption Standard (DES)", 1977)
- Triple DES
DES の鍵長は 56ビットであり安全性に問題が指摘されたため,この DES を 3段に組合わせた暗号 Triple DES が提案された.各段への鍵の設定方式により 2-Key Triple DES と 3-Key Triple DES がある.
3-Key Triple DES の鍵長は 168ビットであるが,中間一致攻撃が可能なため実質的な鍵長は 112ビットである.また,2-Key Triple DES の場合は,実質的な鍵長は 80ビットである.
(仕様:FIPS PUB 46-3 : "Data Encryption Standard (DES)", October 25, 1999)
- AES
AES (Advanced Encryption Standard)は「DES」に代わる次世代の暗号標準技術として,米商務省技術標準局(NIST)が選定した暗号技術である.
ベルギーの暗号学者 Joan Daemen氏と Vincent Rijmen氏によって提案された暗号「Rijndael」 が2000年に米国政府によって採用された.
128,192および 256ビットの暗号鍵に対応するブロック暗号であり,2001年12月にFIPS(Federal Infomation Processing Standard)- PUB-197として発行された.
SPN型暗号であり,線形変換層(ビットシフト等),非線形変換層(換字変換),拡大鍵変換層(拡大鍵との排他的論理和)を用いて変換される.
(仕様:FIPS PUB 197: "Advanced Encryption Standard (AES)", November 26, 2001)
- IDEA
IDEA (International Data Encryption Algorithm) は1991年にチューリッヒ工科大学の Lai と Massey によって提案された暗号である. IDEA は異なる代数群上の演算を組合せるというコンセプトに基づいて設計されており,さらに当時までに提案された差分解読法に対して強力になるように設計された.フリー・ソフトウェアの暗号化パッケージである PGP(Pretty Good Privacy)にも用いられている.
- RC5
RC5は 1994年に Rivest により発表された共通鍵ブロック暗号で,典型的なマイクロプロセッサに備えられているprimitiveな演算 (排他的論理和, ローテーション, 加算)のみを用いているため,ハードウェア・ソフトウェアともに高速実装が可能となっている. またRC5のブロック長(2
w bit), 段数(r 段),秘密鍵長(k byte)は可変で,RC5-w/r/kで指定する.これらのパラメータを可変にすることで,プロセッサの語長の変化や安全性解析の進歩,鍵長に対する輸出規制,種々のユーザ環境等に対応できるようになっている.
- MISTY
MISTY は 1995年に三菱電機により発表され,差分解読法と線形解読法に対して安全であることが証明され,かつソフトウェアでもハードウェアでも高速な暗号として知られている.
MISTY はブロック長 64 ビット,鍵長 128ビットのブロック暗号であり,MISTY1とMISTY2の2種類がある.段数は MISTY1 では 8段,MISTY2 では 12段が推奨されている.
実装面ではICカード向け 8ビットプロセッサから 64ビットRISCプロセッサまであらゆる分野に適した暗号であり,とりわけレジスタが多いプロセッサではソフトウエアによる高速処理が実現できる点は大きな特徴である.
- Camellia
NTTと三菱電機で共同開発された 128ビットブロック長の共通鍵暗号(2000年発表)であり,鍵長は 128/192/256 の 3 通りある.
基本構造は 18段(128ビット鍵長)または 24段(192/256鍵長) のFeistel構造である.
(仕様:
"Specification of Camellia - a 128-bit Block Cipher")
- CLEFIA
ソニーが 2007年に発表した共通鍵ブロック暗号であり,軽量暗号 (Lightweight Cryptography) の国際標準規格 ISO/IEC 29192 の一つとして採択されたものである.
AES と同様なブロック長が 128ビット,鍵長は 128/192/256 ビットから選択可能なブロック暗号である.コンパクトな実装に適した一般化 Feistel構造を採用,演算量を低く抑えても安全性を確保できる「拡散行列切り替え法」や,データ処理部と鍵スケジュール部の部品の共通化などを行っている.高い実装効率から,従来の利用用途に加え ISO/IEC 29192 が適用対象として示す軽量暗号用途,例えばスマートカードやRFIDタグ,センサーネットワーク,医療機器などでの利用に適していると言われている.
(仕様:
"The 128-bit Blockcipher CLEFIA Algorithm Specification" )