共通鍵暗号アルゴリズム
暗号方式の分類
- 古典暗号と現代暗号
- 古典暗号
古典暗号は,1970年代以前の暗号で一般に次の特徴を持つ.
- 暗号アルゴリズムが非公開
- 暗号の鍵のサイズが小さく(あるいは鍵がなく),暗号アルゴリズムも比較的単純
- 暗号の使用目的が主に軍事と外交
- 現代暗号
現代暗号は,一般に次の特徴を持つ.
- 暗号アルゴリズムは公開され,鍵のみが秘密にされる.
- 暗号の安全性は計算量に基づいている.
- 軍事と外交以外にも一般社会 (企業・個人) でも広く使われる.
- DES,AES などの共通鍵暗号の他,RSA 暗号,ElGamal 暗号などの公開鍵暗号もある.
- 暗号文生成メカニズム
共通鍵暗号は,暗号文を生成するメカニズムからは次のように分類される.
- 転置式暗号 (Transposition cipher)
平文の文字の順序を変える暗号方式である.アナグラム (単語または文の中の文字をいくつか入れ替えることにより別の意味にする),スキュタレー暗号などがこれにあたる.
- 換字式暗号 (Substitution cipher)
平文の文字を他の文字に1文字単位あるいは数文字単位で置き換える暗号方式である.
変換ルールの性質 (1対1,1対多) や種類 (単一固定,複数可変),変換の単位(1文字か複数文字)などによって様々な方式がある.なお,"換字" は "かえじ" と読む.
- 混合式暗号
転置と換字の組合せで暗号文を生成する方式である.
転置式暗号や換字式暗号は,単独で用いられると文字の発生頻度などの統計的性質を調べることにより解読される危険性が高い.混合式暗号は,暗号の強度を高めるために転置と換字を組合せた暗号であり,現代の共通鍵暗号 (ブロック暗号) はほとんどこの方式の暗号である.
古典暗号
転置式暗号
平文の文字の順序をある規則に従って入れ替えて暗号文を生成する方式である.
一般に,平文をブロック分けして暗号化する.最大の並べ替え数はブロック長の階乗に比例する大きさを持つ.ブロックの文字数 n が少ないと並べ替えの総数が少なくなり解読し易くなるが,多いと暗号化と復号が困難になる.
- 図形転置式
決められた n x m の枠に左上から横に平文を入れていき,左上から縦に読むことで暗号にする.枠の形や,斜め読みや渦巻き状に読むなど読む順番を変えることで様々な暗号方式ができる.
その他,図形転置式を次のように変形した方式もある.
- 空欄転置式
図形枠の不規則な場所に欠枠を設け,そこには文字を書き入れない方式.
- グリル転置式
正方形の枠の中に欠欄を設け,枠を回転させながら文章を書き込み,定められた順序に取り出す.
- 二重転置式
上記各種転置式を2回行って暗号文を作る方式
- 鍵式転置式
一定のブロック単位(周期 n)に文字を入れ替える方式である.
鍵を K = (K1, K2, … , Kn) とするとき,Ki = j ならば,j の位置の文字を i の位置に転置する.
例えば,鍵を K = (3, 5, 2, 1, 4) とするとき,平文 CRYPT に対する暗号文は次のようになる.
この暗号では,暗号文の各文字の出現頻度は元の平文と同じであり,暗号強度(安全性)は低い.
換字式暗号
平文を1文字または数文字単位で別の文字 (数字,記号,図形を含む) に変換する方式の暗号である.
換字式暗号を行うには,
- 換字表と呼ばれる変換表や円盤
- 1文字または複数文字を単語に変換するコードブック(暗号辞書)
などが用いられる.
換字式暗号は,次のように分類される.
- 単表式換字暗号 (Monoalphabetic Ciphers)
暗号化にただ一つの換字表を使う暗号 (変換ルールが一つ).
- 単一換字 (単純換字) 暗号 (Simple Substitution Cipher)
1対1の単純写像で平文の1文字を対応する1文字に変換する.
- 同音換字 (異綴換字) 暗号 (Homophonic Substitution Cipher)
一つの平文が複数通りの暗号文になりうる暗号.写像は1種類であるが,1対多の写像である (写像を選択).文字の出現頻度を操作できるが,暗号文に同じ文字が1度しか出現しない場合には解読できなくなる,
- 綴字換字暗号 (Polygraphic Substitution Cipher)
複数文字単位で暗号化する.64 ビットや128 ビット単位で変換を行う現代のブロック暗号の元と言える暗号.
- 多表式換字暗号 (Polyalphabetic Ciphers)
暗号化に複数の換字表を使う暗号.1文字単位の変換であるが内部状態を保持し,変換ルールを切り替えながら変換する.
- 周期換字 (順変多表式) 暗号 (Periodic substitution cipher)
内部状態の周期的変化に対応し,変換ルールが周期的に切り替わる.複数個の換字表を連動させて周期を長くすることができる.
- 非周期換字
- 連続鍵 (進行鍵) 暗号 (Running key cipher)
平文と同じ長さの鍵を用いて非周期的に変換ルールを変化させる.書籍の指定位置から始まる文章を鍵としたりする.
使い捨ての乱数を鍵として用いると情報理論的に安全な暗号(ワンタイムパッド)となる.鍵としてランダムな文字列や数列を使ったものは,乱字式,乱数式ともいう.
- 自己鍵 (自動鍵) 暗号 (Autokey cipher)
平文や暗号文を内部状態に取り込み次の状態を決める.
換字式暗号の具体的アルゴリズムの例を 換字式暗号アルゴリズム に示す.
現代暗号
現代暗号の共通鍵暗号は,暗号の処理単位からブロック暗号 (Block cipher) とストリーム暗号 (Stream cipher) の2つに分類される.
共通鍵暗号は,暗号化/復号処理が高速であること,アルゴリズムが公開されているものが多いことなどから,多くの情報通信セキュリティシステムにおけるデータの暗号化に用いられている.
- ブロック暗号
ブロック暗号は,入力データを一定長のブロックに区切って暗号化を行うものである.ブロック長としては,多くのブロック暗号で 64ビットまたは 128ビットが採用されている.ブロック暗号は,一般的なデータの暗号化に広く使われている.( → ブロック暗号アルゴリズム)
- ストリーム暗号
ストリーム暗号は,ブロック暗号がブロック単位で暗号化されるのに対し,もっと小さな単位(多くは 1ビット単位)で暗号化されるものである.一般的にストリーム暗号の方がブロック暗号よりも高速である.ストリーム暗号は回線暗号装置のような連続的なデータの暗号化に用いられる.ストリーム暗号は,換字式暗号の一種とも言える. (→ ストリーム暗号アルゴリズム)
推奨暗号アルゴリズム
現在,米国,欧州,日本で推奨されている暗号アルゴリズムを示す.
- NIST
米商務省技術標準局(NIST)が選定している暗号である.
共通鍵暗号としては,これまで以下の暗号が標準化されてきている.これまで,DESあるいはTriple-DESが長く標準暗号として使われてきたが,DESとTriple-DESに代わりAESが推奨暗号となる.DESは鍵長が56ビットであり安全性に問題が出てきている.また,Triple-DESは処理性能が低い.
- NESSIE
欧州の暗号評価危難であるNESSIEは,暗号アルゴリズムを評価し,推奨暗号として公表している(
NESSIE Project Announces Final Selection of Crypto Algorithm
, February 27, 2003). 共通鍵暗号に対する推奨暗号は次のものである.
- MISTY1
Mitsubishi Electric Corp., Japan
- Camellia
Nippon Telegraph and Telephone Corp., Japan and Mitsubishi Electric Corp., Japan
- SHACAL-2
Gemplus, France
- AES (Advanced Encryption Standard)
USA FIPS 197
- 政府推奨暗号
2023年3月30日に総務省・経済産業省から共通鍵暗号に対して以下の電子政府推奨暗号リストが提示されている (→ CRYPTREC 暗号リスト).
- 電子政府推奨暗号リスト
安全性及び実装性能が確認され,市場における利用実績が十分であるか,今後の普及が見込まれ当該技術の利用を推奨するもの
- 64 ビットブロック暗号
- 128 ビットブロック暗号
- ストリーム暗号
- 推奨候補暗号リスト
安全性及び実装性能が確認され,今後,電子政府推奨暗号リストに掲載される可能性のあるもの
- 64 ビットブロック暗号
- CIPHERUNICORN-E
- Hierocrypt-L1
- MISTY1
- 128 ビットブロック暗号
- CIPHERUNICORN-A
- CLEFIA
- Hierocrypt-3
- ストリーム暗号
- Enocoro-128v2
- MUGI
- MULTI-S01