暗号鍵の生成

共通鍵暗号も公開鍵暗号もそれを利用するには鍵が必要である.共通鍵暗号の場合は,一般的には鍵は指定された長さの任意の乱数でよいが,公開鍵暗号の場合はそのアルゴリズムに応じて素数であることなどの条件が付く.

共通鍵暗号

鍵長の選択

暗号解読アルゴリズムの動向や暗号攻撃に利用できる計算機の処理能力により異なるが,現状の一般的な利用形態では次の鍵長が推奨されている.

弱い鍵

鍵を使った暗号アルゴリズムでは,ある特定の鍵を使うとその暗号強度が他の鍵より弱くなることがある.これを弱い鍵と呼ぶ.弱い鍵が存在するか否かは,各暗号アルゴリズムに固有の問題である.

DESでは,4 つの弱い鍵 (weak key) と 12 のやや弱い鍵 (semiweak key) が知られている.同じ鍵で平文を 2 回暗号化したとき出力が平文に戻る鍵を弱い鍵,鍵を反転したもので暗号化したとき暗号文が平文に戻る鍵がやや弱い鍵である.

すなわち,弱い鍵 K は,暗号化(E)と復号(D)に対して次の関係になる.

 EK(EK(P)) = P,または EK = DK

やや弱い鍵は,鍵 K1 を使った暗号化が反転した鍵 K2 を使った復号と等価になる.すなわち,以下の関係がある.

 EK2(EK1(P)) = P, または EK1 = DK2

DES の弱い鍵は以下である.

  Weak Keys
       0101 0101 0101 0101
       1F1F 1F1F E0E0 E0E0
       E0E0 E0E0 1F1F 1F1F
       FEFE FEFE FEFE FEFE

  DES Semi-Weak Keys
       01FE 01FE 01FE 01FE
       1FE0 1FE0 0EF1 0EF1
       01E0 01E0 01F1 01F1
       1FFE 1FFE 0EFE 0EFE
       011F 011F 010E 010E
       E0FE E0FE F1FE F1FE
       FE01 FE01 FE01 FE01
       E01F E01F F10E F10E
       E001 E001 F101 F101
       FE1F FE1F FE0E FE0E
       1F01 1F01 0E01 0E01
       FEE0 FEE0 FEF1 FEF1

なお,ランダムに鍵を選んでも,弱い鍵ややや弱い鍵を選ぶ確率は極めて低いといえる(16/256 の確率).

パスワード生成

米国防総省(The United States Department of Defense : DoD)は,パスワードの生成を次のように推奨している. DES暗号をOFBモードで次のように用いるものである.

パスワードは,64ビットの OFBモードで生成された 64ビットの DES暗号化テキストから生成する.これらの 64ビットから必要とされるビットが取り出され,人が覚える必要がある場合は,さらに発音し易い語や句,または覚えやすい他の形式に拡張してパスワードとする.

X9.17鍵生成

ANSI(American National Standards Institute)は共通鍵暗号用の鍵の系列を生成する方法を次のように規定している.

s0 : 64ビットの初期乱数種

gn : 生成される 64ビット鍵系列

k : この鍵系列を生成するためのランダムな予約鍵

t : できるだけ精度の高い鍵が生成された時刻 (64ビットまで)

DES(K, Q) : 鍵 K によるデータ Q の DES暗号化


gn = DES (k, DES (k, t) xor sn)

sn+1 = DES (k, DES (k, t) xor gn)

公開鍵暗号

鍵長の選択

暗号パラメータ

暗号機能を利用する場合,暗号アルゴリズムによっては動作内容を規定する特定のパラメータを指定する必要がある.

RSA鍵

inserted by FC2 system