(57)【要約】【課題】暗号システムの中間鍵をワンタイムに使い捨て可能にリセットする。【解決手段】  秘密にされる複数の暗号鍵(k1、k2)と、公開されるイニシャルベクター（IV）と、予測困難な乱数を生成する乱数生成部と、中間鍵を生成する中間鍵生成部と、暗号化処理部とを備えた暗号システム。前記中間鍵生成部は、前記複数の暗号鍵(k1, k2)とリセットベクターとして作用する前記イニシャル・ベクター（IV）とを含む入力項目に応じて前記中間鍵を決定リセットし、前記乱数生成部は、暗号鍵(k1,k2)に対応する乱数生成関数（G()とｇ()）を含む。【選択図】図６
2005215559.tif 000002
【特許請求の範囲】
【請求項１】
秘密にされる複数の暗号鍵と、公開されるイニシャルベクターと、予測困難な乱数を生成する乱数生成部と、中間鍵を生成する中間鍵生成部と、暗号化処理部とを備え、
前記中間鍵生成部は、前記複数の暗号鍵とリセットベクターとして作用する前記イニシャル・ベクターとを含む入力項目に応じて前記中間鍵を決定リセットし、
前記乱数生成部は、暗号鍵に対応する乱数生成関数を含む
ことを特徴とする暗号システム。
【請求項２】
前記乱数生成部を有する上位層と、前記中間鍵生成部と暗号化処理部とを有する下位層とを備え、前記下位層にセキュリテイー手段を設けたことを特徴とする請求項1に記載の暗号システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号システムに関し、特に、当該暗号システムそれ自身が鍵を使い捨てる暗号システムに関する。
【背景技術】
【０００２】
１）   暗号鍵の再利用と中間鍵の再利用を可能にするシステム
共通鍵暗号系は「鍵、すなわち短いデータ、を繰り返し使えるように計算量的な安全性を設計する」という基本理念に基き構成される。より詳細には、図１に示すように、鍵交換後、その暗号鍵１０１により中間鍵を生成する中間鍵生成部１０２と、上記中間鍵を用いて平文１０４を暗号化することにより暗号文１０５を得る暗号化処理部１０３とを備え、上記暗号化に際し、平文１０４に、そのエントロピをバイアスするイニシャルベクター(Initial Vector)１０６（以下「IV」と呼ぶ。）が重畳される。
【０００３】
上記中間鍵生成部１０２と暗号化処理部１０３とは、それぞれラウンド計算処理を実行して中間鍵と暗号鍵と再利用するが、この処理を非線形化することにより、暗号鍵と平文との計算量的な安全性を確保している。なお、非線形処理には、例えばAESの場合、ByteSub / ShiftRow / MixColumnなどのツールが使用される。
【０００４】
以上の構成は、デス（DES）に始まり、今日に至るまで変わらない。
【０００５】
２）   暗号システムの運用
図１の共通鍵暗号系は、１つのセッションの間、中間鍵を不変に保ち、（複数のブロック叉は複数のメッセージから成る）平文を読み込んで暗号化処理を繰り返す仕方で運用される。暗号鍵が変更されない限り中間鍵は変わらない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
１）従来の暗号係が想定していなかった音声パケット通信の問題
音声パケットを暗号化する際に、従来は想定されなかった問題が浮上する。音声アイ・ピー(Voice IP:以下「VoIP」で示す。)は、音声を細分化して、1秒当たり数十個のパケットに変えることにより音質を確保する。従って、そこには「無言」のパケットが混在する。これは、暗号鍵が同じなら、同じ（似た）ビットパターンのパケットが存在し、それが暗号系の内部情報を提供することを意味する。
【０００７】
１−１）アイ・ピー（以下「IP」で示す。）による電話、つまり、IP電話において，VoIPの暗号化に対し、無言を既知平文とする攻撃が可能になる。
【０００８】
要するに、既知平文・暗号文の選択攻撃が有効になり、ストリーム暗号の場合に、後続のパケットがただちに解読され、盗聴されるおそれがある。
【０００９】
１−２）IVの利用もVoIPの問題解決に役立たない。
【００１０】
これを防ぐ方法は、ただ一つ、パケット単位に暗号鍵を交換することである。しかしながら、暗号鍵を交換する通信プロトコルの実行には、暗号処理の1000倍以上の時間がかかる。
【００１１】
そこで、個々のパケット処理に従来のIVを利用するモードが類推され、IV値を変えると平文が同じでも暗号文は変化するので、鍵を交換することと等価な安全性を提供できるように思えるが、この推論は正しくない。鍵は暗号系の内部状態（中間鍵）を決定するが、IV値は平文データ同様に暗号化の対象となるデータである。
【００１２】
例えば、DESのイ・シー・ビー（ECB）モードを関数形で表わし、暗号文をCi、入力平文をXi、鍵kで定義される暗号化関数をEkとすると、暗号文Ci = Ek (Xi)になる。ここでIVを導入すると、任意な自然数ｉに関し、暗号文Ci = Ek (Mi + Ci-1)、C0 = IV として与えられる。つまり、I従来のIVは暗号化される対象データの一つである。
【００１３】
IP通信のIV値は通信線上に公開される。無言パケットを拾うことにより平文が既知となると、IVと平文とが共に既知となり、その連鎖モードからなる暗号文Ci のエントロピーが落ちる。
【００１４】
この関係を図２に示す。鍵は暗号系の内部状態を決定し、IV値は暗号化の対象データの一つになる。復号の場合、IVの投入位置はオペレ−ションモードに依存する。いずれにしろ、音声の暗号化を行なう場合、パケット単位に暗号鍵を交換する以外に、安全性の議論が成立しない。
【００１５】
２）鍵のリセットを行なうと、スループットが極端に低下する。
【００１６】
２−１）暗号鍵を今一度交換すること自体に時間がかかる。
【００１７】
鍵交換プロトコルの実行には暗号化処理の約1000倍以上かかる。このプロトコルは、通常、セッションを開く時だけ運用される。
【００１８】
２−２）暗号鍵を交換すると、暗号化処理の能力自体が低下する。
【００１９】
アール・シーフォー（RC4）に極めてよく似た暗号系でテストした結果，64byteの平文入力に対応して暗号鍵をインプットする動作を繰り返し暗号化したとき、暗号化のスループットが14%に低下した。
【００２０】
この関係を図３に示す。平文を読み込む都度、暗号系の上位層で暗号鍵のリセット処理がなされ、その結果、暗号鍵がリセットされ(ステップ２１１)、これにより中間鍵がリセットされ(ステップ２１２)、その中間鍵を暗号化処理部２１３で使用することにより、平文２１４が暗号文２１５に暗号化される。この暗号化の処理能力が１４％に低下したのは、中間鍵のリセット動作(ステップ２１２)に時間がかかったことによる。
【００２１】
以上から、従来の暗号系ではVoIPの安全性を理論的に確保することが困難だとわかる。
【００２２】
VoIPに対しては、従来の鍵交換プロトコルに拠らない中間鍵のリセット方法が要求され、中間鍵をワンタイム（One-Time）に使い捨て可能にリセットする手法が必要となる。これにIVを利用する場合、IVは公開データであるから、中間鍵の“生成”に関与させてはならないという条件が克服されねばならない。
【課題を解決するための手段】
【００２３】
本発明に係る暗号システムは、暗号鍵を変更せずに、敢えてIVをリセットベクターとして用い中間鍵をリセットする。IVはコネクションレス（connection-less）に送信され、中間鍵のリセットに適する。
【００２４】
また本発明に係る暗号システムは、IVを中間鍵の“リセット”に関与させるとともに、暗号系を計算量的に安全に保つ。
【００２５】
本発明に係る暗号システムを構成するIVと暗号鍵と中間鍵との関係を図４に示す。この暗号システムは，暗号鍵を再利用すべく、ワンタイムに使い捨てるIVでエントロピーをバイアスし、計算量的安全性を満たす予測困難な乱数の生成部を介した乱数として、中間鍵のリセットに当てる。リセットされた中間鍵を暗号化処理部で用い、平文を暗号文に変換する。
【００２６】
以下，本発明に係る暗号システムの構成要素を、説明の便宜上、図４と一対一に対応する図５の記号で表し、理解を容易となす。図５中：
暗号鍵は複数k1,k2存在し；
それらの暗号鍵に対応する乱数生成関数 G()、ｇ()が一方向性関数として定義され（公正な第三者機関に認定されたその証拠が必要）；
これらの関数により、乱数r1 = G(k1)、r2 = g(k2, IV)が生成され；
これらの乱数の合成乱数（記号|）として中間鍵k3 = r1 | r2が生成され；
この中間鍵を用いた]暗号化処理Ek3により、平文Mが暗号文C = Ek3(M)に変換される。
【００２７】
つまり、本発明に係る暗号システムは：秘密にされる複数の暗号鍵(k1とk2)と、公開されるイニシャルベクター（IV）と、予測困難な乱数を生成する乱数生成部と、中間鍵を生成する中間鍵生成部と、暗号化処理部とを備え；前記中間鍵生成部は、前記複数の暗号鍵(k1, k2)とリセットベクターとして作用する前記イニシャル・ベクター（IV）とを含む入力項目に応じて前記中間鍵を決定リセットし；前記乱数生成部は、暗号鍵(k1,k2)に対応する乱数生成関数（G()とｇ()）を含む。
【００２８】
すなわち、暗号鍵k1をG()の入力として、G()により乱数r1 を出力するとともに、暗号鍵k2とIVとをｇ()の入力要素として、ｇ()により乱数r2 を出力し：
r1 = G(k1)   ------- (1)
r2 = g(k2, IV) ------- (2)
これらの乱数r1と乱数r2とから中間鍵k3を合成し：
k3 = r1 | r2  ------- (3)
この中間鍵k3を用いて平文Mの暗号処理部Ek3を行う：
C = Ek3(M)  --------(4)。
【００２９】
従って、本発明に係る暗号システムは、上式(1)〜(4)の数理の束を演算するプログラム又はそれを格納したメモリを備えるコンピュータとして構成される。
【発明を実施するための最良の形態】
【００３０】
次に、図６〜図８を参照して、本発明を実施するための最良の形態を説明する。
【００３１】
図６は、本発明の実施例に係る暗号システムのブロック図、図７は本発明の実施例に係る暗号システムの実行モジュール群を示す流れ図、図８は本発明の実施例に係る暗号システムのVoIPに適用されるパケット長を示すグラフである。
【００３２】
図6の暗号システムは、IVを中間鍵のリセットに関与させた実施例で,どのように計算量的な安全性を確保するかも示している。
【００３３】
この暗号システムは、非公開な共通鍵としての暗号鍵k1，k2、公開されるイニシャルベクターIV、予測困難な乱数r1,r2を生成する乱数生成部、中間鍵k3を生成する中間鍵生成部、及び暗号化処理Ek3を行う暗号化処理部を備える。
【００３４】
暗号鍵k1，k2及びイニシャルベクターIVが、中間鍵k3を決定する入力項目になる。暗号鍵k1、k2はそれぞれ256bit、IVは64bitとする。このIVは、暗号文Cと一緒に公開ネット上に平文状態で送信される。
【００３５】
乱数生成部は、暗号鍵k1を入力して前記乱数r1 を出力する乱数生成関数G()と、暗号鍵k2及びイニシャルベクターIVを入力して前記乱数r2 を出力する乱数生成関数g()とを備える。
【００３６】
r1 = G(k1)   ------- (1)
r2 = g(k2, IV) ------- (2)
図６実施例の関数g()には、出力が128bitのハッシュ関数を用いる。その入力はIVが64bit、鍵k2が256bitである。
【００３７】
k2 = 256bit
IV =  64bit
r2 = 128bit
このような入力を圧縮する乱数生成法はNISTが推奨する方法論である。IVは公開であるから、この64bitは単にトリガーの役割をするに過ぎない。256bit-64bit=192bitが関数g()入力のエントロピーである。つまり、IVの64bitから出力128bitを推定するには、192bitの計算量が要る。逆に、出力の128bitが公開されたとしても、鍵k2を推定するには、なお、192bit-128bit=64bitの計算量が要る。ただし、関数g()の出力128bitは暗号系の内部データであるから非公開である。
【００３８】
図６の実施例の関数G()には、PCT /JP99/00476:  1999.02.04“IP KEY MANAGEMENT MECHANISM WITH DIVERGENCE BARRIER INCREASING ENTROPY AGAINST COMPUTATIONAL CRYPTO-ANALYSES”で説明した一方向性関数、または特許法第３０条１項の規定の適用を受けようとする日本国特許出願2003-381395で説明した一方向性関数を用いる。関数G()は、256bit入力から256bitの乱数を出力するので、NIST推奨方式より効率が良い。その他にも、通常、鍵交換プロトコルと呼ばれる予測困難な乱数を生成する手段があり、これを用いても良いが、スピードが極端に遅くなる。
【００３９】
k1 = 256bit
r1 = 256bit
予測困難性は、出力256bitから他の出力256bitを推定しようとすると、128bitあるいは256bitの計算量が必要になるという点を根拠にしている。
【００４０】
これら関数G()と関数g()の出力256bitと128bitを合成して予測困難な352bit中間鍵k3を創る。
【００４１】
k3 = r1 | r2  ------- (3)
k3 = 352bit
この時、256bit+128bit=384bitとなるが、その内の32bitが合成のためのIVとして使われる。
【００４２】
上記中間鍵352bit を暗号処理部の鍵k3として、平文Mから暗号文Cへの暗号化処理Ek3を行う。
【００４３】
C = Ek3(M)  --------(4) 
上記(1)式〜(4)式の経過から明らかなように、中間鍵k3は、IVをトリガーとしてワンタイム化される。したがって、暗号処理 Ek3もワンタイム化される。これにより平文の解読が困難になる。
【００４４】
暗号処理Ek3単独の安全性は本発明の範囲外だが、これも確保されることが前提となる。既知平文攻撃に対する安全性に触れる。Ek3単独は、32bitのレジスター10個と32bitのIVから構成される鍵ストリーム生成部を持ち、排他的論理和[XORing]で暗号文を作る。k3 = 352bitであるから、352bitのエントロピーを誇るが、アルゴリズム公開の条件の下、既知平文攻撃を行なえば128bitのエントロピーに落とすことができる。しかし、k3がワンタイムなので、元の352bitに回復する。これにより暗号鍵の安全性も規定値を回復する。
【００４５】
図7に上位層VoIPとの関係を示す。
【００４６】
VoIPのアール・テー・ピー（RTP）パケットの暗号化処理は次のモジュール（関数）で構成する。
【００４７】
init()    : Ek3暗号初期化処理：暗号鍵とIVに関する初期化
Setprm()  : RTPパケット情報設定処理
encrypt() : Ek3暗号化処理
decrypt() : Ek3復号処理
final()   : Ek3暗号終了処理
これらモジュールはCPUメモリー上に展開され、処理終了時に消去される。
【００４８】
上位層で処理される内容は、２つの関数init()及びSetprm()で表される。  
関数init()は、暗号鍵とIVに関する初期化を行なう。IVに関する初期化とは、IVを生成する乱数生成器の初期値の設定である。IVは乱数として生成される。なお、出力暗号文を圧縮するなどしてIVを生成しても良い。いずれの場合も初期値が要る。コンピュータのOSには初期値を提供する関数を持つものがあり、例えば、UNIX系は関数Entropy-poolと有する。関数Setprm()はRTPパケットに関する情報を設定する。
【００４９】
図７の処理は関数encrypt(),decrypt(),final()を伴う。関数encrypt()は、平文とIV生成器をトリガーしてIV値を読み込み、暗号文をIV値と共にRTPパケットに乗せる。受信者は関数decrypt()により復号する。関数encrypt()とdecrypt()の演算が双方で繰り返される。RTPの終了を関数final()が行い、実行モジュール群をCPUメモリー上から解放する。このように、関数encrypt()は、暗号の都度都度のIV値を読み込む。
【００５０】
図７に示す処理は、IVをトリガーにして鍵を使い捨てる処理をする暗号系に対応する。
【００５１】
上記暗号システムは, 予測困難な乱数生成法の導入により、安全性の向上と暗号系全体の高速処理を可能にしている。
【００５２】
そこで、上記実施例に係るシステムと従来システムとの間で、中間鍵をリセットする能力を比較するベンチマークテストを行った。結果を表1に示す。
【００５３】
平文データの長さを、それぞれ8 バイト（bytes）/64 バイト/256 バイト/1024 バイト/8192 バイトとした場合に個々のデータを何回繰り返し暗号化できるか、１秒当たりのスループットを計った。鍵交換は暗号化の都度に行なった。
【００５４】
比較サンプルには、フリーで入手されるストリーム型の共通鍵暗号ソフト”rc4”を採り上げた、但し、これはRSA社の正式版ではなく、あくまでもストリーム型暗号の代表として採り上げたに過ぎない。
【表１】
2005215559.tif 000003
【００５５】
図8の両対数グラフから、本実施例にかかる暗号システムの、従来例との比較における一般的な傾向が判る。このシステムは処理能力が高く、斜線部分のパケット長がVoIPで使われ、そこでは約3倍から4倍速い。携帯端末などCPU能力の低い領域では、この能力の差は、直ちに音声品質に現れる。
【産業上の利用可能性】
【００５６】
本発明によれば、暗号システム自体が鍵を使い捨てるワンタイムキーイング暗号システムが得られ,セキュリテイ的に擬似ワンタイムパッド暗号の実用化を意味する。これは、従来の暗号系を凌駕するメカニズムである。また、鍵のリセット能力が高く、音声を初め、他のデータの処理にも応えられる。通信分野の全てに適応する。
【図面の簡単な説明】
【００５７】
【図１】従来の共通鍵暗号系のブロック図である。
【図２】従来の共通鍵暗号系の鍵とIVとの関係を示す流れ図である。
【図３】従来の共通鍵暗号系の鍵のリセット方式を示す流れ図である。
【図４】本発明に係る暗号システムの鍵とIVとの関係を示す流れ図である。
【図５】本発明に係る暗号システムの構成要素を示す流れ図である。
【図６】本発明の実施例に係る暗号システムのブロック図である。
【図７】本発明の実施例に係る暗号システムの実行モジュール群を示す流れ図である。
【図８】本発明の実施例に係る暗号システムのVoIPに適用されるパケット長を示すグラフである。
【符号の説明】
【００５８】
k1, k2    暗号鍵
G(),ｇ()    乱数生成関数
r1,  r2  乱数
k3    中間鍵
IV      リセットベクターとして作用するイニシャルベクター
Ek3  中間鍵k3を用いた暗号化処理
M    平文
C    暗号文
【図１】
2005215559.tif 000004
【図２】
2005215559.tif 000005
【図３】
2005215559.tif 000006
【図４】
2005215559.tif 000007
【図５】
2005215559.tif 000008
【図６】
2005215559.tif 000009
【図７】
2005215559.tif 000010
【図８】
2005215559.tif 000011