・ブロック暗号の操作モード
ブロック暗号の多様な応用のため、5つの操作モードが定められている。
以下、暗号化処理をEnc、復号化処理をDecで表し、Enc/Decの入出力ブロックサイズをnとおく。
1.ECB(electronic codebook)
ブロック暗号をそのまま使うモード。鍵を変えなければ、入力が同じなら出力も同じになる。
データを暗号化する用途ではあまり使われず、ワーク鍵を暗号化するときなどに利用される。
暗号文に1ビット誤りが生じると、復号処理によりそのエラーが1ブロック全体に拡大する。
従って、通信路などの1ビットエラー率がnビットに拡大されることになる。
2.CBC(Cipher Block Chaining)
始めにレジスタに、初期ベクトルと呼ばれるビットパターンIVをセットする。
nビットに分割された入力系列M1,M2,M3,・・・に対して、暗号文系列C1,C2,C3・・・を
C1 = Enc(IV+M1)
C_{i+1} = Enc(Ci+Mi)
で得る。復号化は
M1 = Dec(C1)+IV,
M_{i+1} = Dec(C_{i+1})+Ci
となる。
IVは暗号化で利用した初期ベクトルであり、何らかの形で伝え合わねばならないが、
秘密にする必要は無い。
CBCモードでは、暗号の1ビットエラーは復号化後に2ブロックに広がる。
エラー率は最大n+1倍になる。
3.CFB(Cipher feedback)
乱数生成モード。但し、乱数生成に暗号文を用いていることが特徴。
kビットに分割された平文系列をM_1,M_2,・・・とする。
暗号文系列C_1,C_2,・・・を、M_iと、C_iを再帰的に暗号化したものとの排他的論理和で定義していく。
4.OFB(output feedback)
乱数生成モード。乱数系列は
D_1 = Enc(IV)
D_i = Enc(D_{i-1}).
暗号化に用いる場合には、この乱数ブロック系列と平文の排他的論理和を取る。
復号化も同じ。
伝送中のエラーがまったく拡大しないことが特徴。
5.CTR(counter)
乱数生成器の一種だが、ブロック暗号Encの入力としてカウンター値T_1, T_2, ・・・を用いる。
入力ブロック系列M_1,M_2,・・・に対し、暗号化出力ブロック系列C_1,C_2,・・・は
C_i = M_i + Enc(T_i)
で与えられる。
・ストリーム暗号
メッセージに乱数をXORする。乱数は、メッセージに依存して生成される場合と
そうでない場合がある。
- 非同期式ストリーム暗号(自己同期式)
データに依存した暗号処理により、暗号・復号側で同期が必要でなくなる。
ブロック暗号から、非同期式ストリーム暗号が構成可能。
この方式の特徴は、暗号・復号側で同期がずれたり、伝送エラーが生じてしまっても、
シフトレジスタ長分のクロックが経過したら、再び両シフトレジスタの内容が一致して、
正しい復号化が再開される。しかし、伝送中のエラーに対しては、1ビットのエラーに対しても、
シフトレジスタ長分の誤りに拡大される。
- 同期式ストリーム暗号
メッセージとは独立した乱数を用いて、メッセージにその乱数をXORする。
伝送中のエラーが拡大することは無いが、同期がずれるとまったく復号化
されなくなる。
・暗号用乱数
←同期式ストリーム暗号で用いられる。一般の乱数は、統計的性質を重視するが、
暗号用乱数はさらに予測不可能性も重視する。
定義:暗号学的に安全な乱数
乱数列の任意の一部から他のビットを多項式計算量で推測できない(予測不可能性を持つ)乱数。
定義:予測不可能性
長さnの離散変数Xが予測不可能とは、任意の多項式計算アルゴリズムAと
任意の整数cに対して整数Nが存在し、Nより大きい任意のnについては
|Prob(A(w)=a) - 1/2| < 1/n^c
が成立することをいう。
w,aは重なり合わないXの一部分である。
その他の乱数性としては、
1.統計的乱数性
2.長周期性
3.非線形性
4.無相関性
5.線型複雑度が大きいこと
がある。
PR