←セキュリティ論シラバスへ
←講義のツボメニューへ

4共通鍵暗号系

【2001.11.06 】【第6回】

AES-Advanced Encryption Standardの略、National Institute of Standards and Technology(NIST)が募集
・1997.01 :NISTがAES選定計画発表
・1998.06.15:AES候補暗号 提出締め切り
・1998.8  ―2000.4.AES候補暗号締め切り
・2000.10.02:AES最終選定

AESの要件
・128ビット 平文、暗号文ブロック
・128、182、256 ビット鍵長
・ハード、ソフト(C/JAVA)両方の実現を考慮に入れること
・採用されたときには知的財産権行使を放棄すること

4.3 Rijndael
・RijndaelAES候補としてベルギーのDaemenとRijimenによって提案、2000.10にAES選定
・ブロック長、鍵長は独立に128,192,256ビットから選択できる
・暗号化アルゴリズム:暗号化部と鍵生成部の2つより構成される
・nビットの暗号化/復号入力、あるいは鍵入力を8ビット(=1バイト)毎に区切り、それを有限体GF(28)の元とみなすさらにn/8バイトを4行n列の格子状に配置する(N=4,6,8)下図は128ビット(N=6)のときの例
0,00,10,20,30,40,5
1,01,11,21,31,41,5
2,02,12,22,32,42,5
3,03,13,23,33,43,5

入力はa0,0、a1,0、a2,0、a3,0、a0,1、a0,2、・・・a3,N、の順に配置される
一つの列を構成する4バイトをワードと呼ぶ
●ラウンド数
ブロック長
128192256
鍵長128101214
192121214
256141414

暗号化部全体の構成図


AddRoundKey
・各バイトとラウンド鍵のビット毎の排他的論理輪をとる


Bytesub 非線形操作
・各バイトごとに以下の1,2を行う(1バイト単位で非線形な置換を行う)
1.有限体GF(28)の乗法にに関する逆元に置換する。ただし、'0'は'0'に置換する。GF(28)上の演算にはGF(2)上の既約多項式;
m(x)=x8+x4+x3+x+1を用いる。
2.1バイトをGF(2)上の長さ8のベクトルとみなし、以下のアファン変換を行う。

ShiftRow
・各行を以下の行に示すバイトだけ左巡回シフトする。
ブロック長
128192256
第0行000
第1行111
第2行223
第3行334

MixColumn
・各列をGF(28)の多項式とみなし、以下のGF(28)上の多項式c(x)を乗じて、x4+1で割った剰余多項式をとる
c(x)='03'x3+'01'x2+'01'x+'02'
 ここで、'yy'は、GF(28)の元をGF(2)のベクトルで表したものの16進数表示
c(x)とx4は互いに素である

鍵生成部
・一つのラウンド鍵は4×Nばいとである(AddRoundKeyを参照)。ここでAddRoundKey図中の各列をワードとみなす。
・全ラウンド数をNrとすると、ラウンド全体を通して、ラウンド鍵は(Nr)×ブロック長ビット、すなわち、(nr)×Nワード数である。
・次の手続きによって、暗号化/復号鍵から大きさが(Nr+1)×Nワードの拡大鍵Wを作成する。
 Wから各ラウンド鍵をR0はWの最初のNワード、R1は次のNワード、というように作っていく。

拡大鍵生成手続き
入力:暗号化・復号鍵nkビット、ここでは暗号化・復号鍵はサイズNk=n/32ワードの配列Kに格納されているものとする。
出力:拡大鍵W、ここでは拡大鍵サイズ(Nr+1)×Nワードの配列Wに格納されるものとする。
 〇以下では暗号化/復号鍵長が192ビット以下の時に手続きを示す。鍵長256ビット以下の時の手続きはわずかに異なる。
手続き:i=0から(nr+1)×Nまで順に以下を行う。
 ●i<Nrのとき、W[i]=K[i]とする。
 ●iがNkの倍数のとき、
      −temp=W[i-1]とする
      −tempをバイト左シフトする
      −tempの各バイトに暗号化部の手続き:ByteSubを施す
      −W[i]=W[i-Nk]⊕Rcon[i/Nk]⊕temp
 ●それ以外のとき、W[i]=W[i-Nk]⊕Rcon[i/Nk]⊕W[i-1]

但し、Rcon[j]はワードのはいれつであり、Rcon[j]の第0バイトは、2j-1を2進数展開して得られる長さ8ビットベクトル(第jビット目だけが'1'で残りが'0')、第1-3バイトは全ビット0のベクトルである。


4.4その他の共通鍵暗号系、応用
・ケーブルモデム:DESのCBCモードおよび、3−Key Triple-DES使用(DOCSIS 1.0)

  • MULTI2 ・1989年日立が考案、ブロック長、鍵長64ビット。
    ・CSデジタル衛星放送スクランブルの標準暗号。

  • IDEA ・1990年スイスのLai、Masseyによって提案。
    ・ブロック長64ビット。
    ・鍵長128ビット。
    ・PGPで用いられている(た?)。
    ・特許があり、商業利用にはライセンス料が必要。

  • blowfish ・1994年B.Schneierによって提案。
    ・ブロック長64ビット。 
    ・鍵長32-448ビット。
    ・OpenSSHで用いられる。

  • MISTY,KASUMI ・三菱によって提案。
    ・MISTYは1995年提案。
    ・KASUMIはW-CDMA(次世代携帯電話システム)向けにカスタマイズされた国際標準暗号。
    ・ブロック長64ビット。
    ・鍵長128ビット。

  • SAFER+ ・Cylink社によって提案。
    ・AES候補暗号。
    ・Bluetoothで使用。

  • FEALシリーズ ・NTTによって提案。
    ・ブロック長64ビット。
    ・鍵長64,128ビット。
    ・クレジットカード、金融システムなどに応用。

  • CAST-128,CAST-256 ・Entrust Technologies社によって提案。
    ・CAST-128はRFC2144、PGP5.xに採用。
    ・CAST-256はAES候補暗号。
  • RCシリーズ ・Rivestによって提案、
      RC2:ブロック長64ビット、鍵長可変のブロック暗号(RFC2268)、40ビット鍵のものがS/MIMEに使われている。
      RC4:ストリーム暗号(1987)、SSLに使用されブラウザに組み込まれている。
      RC5,6:ブロック長と鍵長が可変のブロック暗号。RC6はAES候補暗号。


    ←セキュリティ論シラバスへ