説明

復号装置及び復号方法及びプログラム

【課題】ストリーム暗号方式において、パケットの消失又は到着順序の変動を吸収する。
【解決手段】通信開始前に、鍵ストリーム生成部101、201が同じ鍵ストリームを生成し、鍵ストリーム記憶部102、202に記憶させる。暗号装置100では、入力部103が平文データを順に入力し、鍵ストリーム記憶部102が、平文データの順序に対応する乱数を鍵ストリームから選択し、暗号処理部104が当該乱数を用いて暗号化を行い、鍵ストリーム位置情報生成部105が、暗号化に用いられた乱数の鍵ストリーム中の位置を示す位置情報を生成し、送信部106が暗号データと位置情報を併せて送信し、復号装置200では、鍵ストリーム記憶部202が、位置情報に示される位置に対応する乱数を鍵ストリームから選択し、復号処理部204が当該乱数を用いて復号する。これにより、パケットの消失又は到着順序の変動があっても復号が可能となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケット通信の際にパケットに含まれるデータを秘匿するための復号装置、更に、これを実現するための復号方法及びプログラムに関する。
【背景技術】
【0002】
最近の情報のディジタル化やブロードバンドネットワークの発達により様々なデータがインターネットを代表とするネットワークにより伝送されている。
また、セキュリティに対する意識の高まりと共に、これらの情報を安全に伝達したいという要求も高まっている。
ネットワーク上で安全に情報をやり取りするためのフレームワークの代表として、IPsec(Security Architecture for Internet Protocol)が挙げられる。
IPsecは暗号技術を用いて、IPパケット単位でのデータの秘匿等の機能を提供するプロトコルである。
一方、大容量のデータやリアルタイム性を重視する通信において、秘匿機能を提供する場合に、ストリーム暗号を採用するケースが増えている。
【0003】
ストリーム暗号を用いた通信装置の秘匿機能の基本概念を図8に示す。
ストリーム暗号を用いた秘匿通信は以下の手順による。
【0004】
まず、事前に秘密鍵を送信側と受信側で共有する。
次に、秘密鍵を送信側の鍵ストリーム生成部に入力し鍵ストリームを生成する。
一般に鍵ストリームは秘密鍵に依存した擬似乱数系列となる。
次に、鍵ストリームと平文データ(以下、単に平文ともいう)をExORし暗号データ(以下、単に暗号文ともいう)として受信側に伝送する。
受信側では、送信側と同一手順で生成した鍵ストリームを暗号文とExORすることにより復号し平文を得る。
【0005】
上記の基本動作をパケット通信に適用した例を図9に示す。
暗号側(送信側)では、入力された平文1、2、3…に合わせて生成した鍵ストリーム1、2、3・・・と、入力された平文をExORすることにより暗号化を行い、これを暗号化パケット1、2、3として伝送する。
復号側(受信側)では、受け取った暗号化パケット1、2、3・・・を暗号化時と同様に生成した鍵ストリーム1、2、3・・・とExORすることにより復号を行い、元の平文1、2、3・・・を得る。
このとき重要な点は、暗号化時と同じ鍵ストリーム(乱数)で復号を行うという点であり、この条件が保てなくなると正しく復号を行うことができない。
【0006】
図10及び図11は、暗号化時と復号時で同じ鍵ストリーム(乱数)を使うという条件が満たせなくなった場合の例を示す。
【0007】
図10は、パケットの伝送時にパケットが失われた場合を示す。
図10では、暗号化パケット2が伝送時に失われており、このため鍵ストリームと暗号化パケットとを一致させることができず、復号時は暗号化パケット1が正しく復号できるのみで、以降のパケットは全て正しく復号することができない。
【0008】
図11は、パケットの到着順序が伝送時に変化してしまった場合の例を示す。
図11では、本来の到着順序である、暗号化パケット1、2、3、4、5…の到着順序が、パケット4の到着順序が早まってしまい、暗号化パケット1、4、2、3、5の順となってしまった場合である。
このとき正しく復号できるのは、パケット1、5および6降のパケットで、パケット2、3、4を正しく復号することはできない。
【0009】
このような、伝送時のパケットの消失や順序変化は、パケット通信では普通に発生しており、上記の課題に対する対応が求められるが、上記の課題に対応する技術として、特許文献1に記載の技術がある。
【0010】
図12は、特許文献1の送信装置と受信装置の構成を示す図である。
図12において、送信装置(暗号化側)では、入力されたデータの通算データ量をデータサイズ累計記憶部でカウントする。そして、MUX部が、通算データ量のカウント値をXOR演算部(1)により暗号化された暗号文に付加して暗号化パケットとし、ネットワークI/F部(1)が暗号化パケットを伝送する。
受信装置(復号側)では、DMUX部が、暗号文と通算データ量のカウント値とを分離し、数値比較部が、通算データ量のカウント値と実際に受信したパケットの暗号文のデータ量を比較し、受信データ量が少なかった場合(即ちパケットが失われた場合)に、鍵ストリームを生成する乱数発生部(2)を不足分だけ動作させ、通算データ量のカウント値と一致するように鍵データストリームを生成する。
復号動作は、XOR演算部(2)が、通算データ量と一致するようにして生成した鍵ストリームとExORすることにより行う。
このようにすることで、パケットの消失に対応できるようにした方式である。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2005−318041号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
特許文献1の技術は、パケットの消失や受信側でのパケット到着順序の変化に対応させることが困難であるという課題がある。
つまり、図10に示したように、先の順序の暗号化パケット(暗号化パケット2)が消失してしまい後の順序の暗号化パケット(暗号化パケット3、4)のみを受信した場合には、後の順序の暗号化パケットを受信した段階で、消失した暗号化パケットに対応する鍵ストリームを生成し、更に、受信できた後の順序の暗号化パケットに対応する鍵ストリームを生成することになる。
更には、図11に示したように、暗号化パケットの到着順序が入れ替わってしまい後の順序の暗号化パケット(暗号化パケット4)を先の順序の暗号化パケット(暗号化パケット2、3)よりも先に受信した場合には、後の順序の暗号化パケットを受信した段階で、先の順序の暗号化パケットに対応する鍵ストリームを生成し、更に、後の順序の暗号化パケットに対応する鍵ストリームを生成し後の順序の暗号化パケットの復号を行う。そして、その後に先の順序の暗号化パケットを受信した場合は、もはや当該先の順序の暗号化パケットに対応する鍵ストリームを取得することができず、当該先の順序の暗号化パケットを廃棄することになる。
このように、特許文献1の技術によれば、暗号化パケットの受信状況に対応させて鍵ストリームを生成、管理することが必要であり、運用が困難であるという課題がある。
【0013】
また、特許文献1の方式では、暗号化パケットの消失又は到着順序の変動があった場合に、暗号化パケットを受信した段階で、受信した暗号化パケットの順序に対応する鍵ストリームの生成を開始するので、暗号化パケットの受信から復号処理までに時間がかかるという課題がある。
【0014】
また、特許文献1に示される構成では、鍵ストリームの生成は入力パケットと連動する必要がある。
パケットには通常、暗号化されない宛先や送信元などが管理情報としてヘッダに付加されるため、これら管理情報を処理している間は鍵ストリーム生成動作が停止することとなる。つまり、鍵ストリームの生成は間欠的に動作と停止を繰り返すこととなり、動作効率が低下するという課題がある。
【0015】
この発明は、上記のような課題を解決することを主な目的の一つとしており、暗号データの消失又は到着順序の変動を吸収し、暗号データの消失又は到着順序の変動があった場合の鍵ストリームの管理を用意にし、また、暗号データの受信から復号までの動作を効率化することを主な目的とする。
【課題を解決するための手段】
【0016】
本発明に係る復号装置は、
乱数列である鍵ストリームを用いる暗号装置においてストリーム暗号アルゴリズムに従って鍵ストリーム中の所定位置の乱数を用いて暗号化された暗号データを前記ストリーム暗号アルゴリズムに従って復号する復号処理部と、
前記復号処理部による復号に先立ち、前記ストリーム暗号アルゴリズムに従って前記暗号装置が用いる鍵ストリームと同じ鍵ストリームを生成する鍵ストリーム生成部と、
前記鍵ストリーム生成部により生成された鍵ストリームを記憶する鍵ストリーム記憶部と、
暗号データと、当該暗号データの暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報とを対応付けて受信する受信部とを有し、
前記復号処理部は、
前記受信部により受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数を前記鍵ストリーム記憶部から入力し、入力した乱数を用いて、前記受信部により受信された暗号データを復号することを特徴とする。
【発明の効果】
【0017】
本発明によれば、暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報を暗号データに対応付けて受信するので、復号側では、鍵ストリーム位置情報に基づいて復号に用いる乱数を特定することができ、これにより、暗号データの消失又は到着順序の変動を吸収することができ、暗号データの消失又は到着順序の変動があった場合の鍵ストリームの管理を容易にすることができ、また、暗号データの受信から復号までの動作効率を向上させることができる。
【図面の簡単な説明】
【0018】
【図1】実施の形態1に係る暗号装置及び復号装置の構成例を示す図。
【図2】実施の形態1に係る暗号装置及び復号装置の動作の概略を示す図。
【図3】実施の形態1に係る暗号装置及び復号装置の動作の概略を示す図。
【図4】実施の形態1に係る暗号装置及び復号装置の動作の概略を示す図。
【図5】実施の形態1に係る暗号復号装置の構成例を示す図。
【図6】実施の形態1に係る暗号装置の動作例を示すフローチャート図。
【図7】実施の形態1に係る復号装置の動作例を示すフローチャート図。
【図8】従来技術を説明する図。
【図9】従来技術を説明する図。
【図10】従来技術を説明する図。
【図11】従来技術を説明する図。
【図12】従来技術を説明する図。
【発明を実施するための形態】
【0019】
実施の形態1.
図1は、本実施の形態に係る暗号装置100と復号装置200の構成例を示す。
暗号装置100と復号装置200は伝送路300により接続されている。
暗号装置100及び復号装置200は、それぞれストリーム暗号アルゴリズムに対応している。
暗号装置100及び復号装置200は、秘密鍵を共有しており、通信の開始前に、それぞれ、秘密鍵を用いて、乱数の連鎖である鍵ストリームを生成し、記憶している。暗号装置100と復号装置200が生成し、記憶する鍵ストリームは同じものである。
暗号装置100は、データ順序が定められている平文データ(以下、単に平文ともいう)を順に入力し、入力した平文の順序に対応させて鍵ストリームから乱数を選択し、選択した乱数を用いて平文を暗号化して暗号データ(以下、単に暗号文ともいう)を生成し、また、暗号文を鍵ストリーム位置情報(暗号化に用いた乱数の鍵ストリームにおける位置を示す情報)と対応付けて暗号化パケットとし、暗号文パケットを伝送路300を介して復号装置200に送信する。
平文のデータサイズは、可変である。暗号装置100は、平文を入力する度に、入力した平文のデータサイズと同じデータサイズ分の乱数を鍵ストリームの先頭から順に抽出して、抽出した乱数とのExORにより平文を暗号化する。
復号装置200は、伝送路300から暗号化パケットを受信し、暗号化パケットを暗号文と鍵ストリーム位置情報に分離し、鍵ストリーム位置情報に示されている位置に対応する乱数を鍵ストリームから選択し、選択した乱数を用いて暗号文を復号して、平文を得る。
【0020】
次に、暗号装置100、復号装置200の各々の内部構成を説明する。
【0021】
暗号装置100において、鍵ストリーム生成部101は、後述の暗号処理部104による暗号化に先立ち、復号装置200と共有している秘密鍵を用いて、ストリーム暗号アルゴリズムに従って、擬似乱数系列である鍵ストリームを生成し、鍵ストリーム記憶部102に鍵ストリームを格納する。
鍵ストリーム記憶部102は、鍵ストリーム生成部101により生成された鍵ストリームを記憶する。なお、鍵ストリーム記憶部102は暗号装置100では、必須の要素ではなく、省略してもよい。
入力部103は、暗号化対象データである平文を入力する。
暗号処理部104は、鍵ストリーム中の所定位置の乱数を用いて、平文を暗号化する。暗号処理部104は、入力した平文の順序に対応する位置の乱数を鍵ストリーム記憶部102から入力して、平文と乱数のExOR演算により暗号化を行う。
鍵ストリーム位置情報生成部105は、暗号処理部104による平文の暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報(以下、単に位置情報ともいう)を生成する。鍵ストリーム位置情報で通知される乱数の位置とは、例えば、鍵ストリームの基準点(鍵ストリームの先頭等)からのビット数である。
送信部106は、暗号処理部104により暗号化された暗号データと鍵ストリーム位置情報生成部105により生成された鍵ストリーム位置情報とを対応付け、シーケンス番号、送信元アドレス、宛先アドレス等のヘッダ情報を付加して暗号化パケットとし、暗号化パケットを伝送路300を介して復号装置200に送信する。
制御部107は、暗号装置100の各要素の制御を行う。
【0022】
復号装置200において、鍵ストリーム生成部201は、後述の復号処理部204による復号に先立ち、暗号装置100と共有している秘密鍵を用いて、ストリーム暗号アルゴリズムに従って、乱数列である鍵ストリームを生成し、鍵ストリーム記憶部202に鍵ストリームを格納する。
鍵ストリーム記憶部202は、鍵ストリーム生成部201により生成された鍵ストリームを記憶する。また、鍵ストリーム記憶部202は、後述する受信部203から入力した鍵ストリーム位置情報に示されている位置に対応する乱数を選択し、選択した乱数を復号処理部204に出力する。
受信部203は、伝送路300から暗号化パケットを受信し、受信した暗号化パケットを暗号文と鍵ストリーム位置情報に分離し、暗号文を復号処理部204に出力し、鍵ストリーム位置情報を鍵ストリーム記憶部202に出力する。
復号処理部204は、鍵ストリーム位置情報で通知されている位置の乱数を鍵ストリーム記憶部202から入力し、入力した乱数を用いて、暗号文を復号する。暗号化パケットが順序通りに受信されない場合でも、暗号化パケットに含まれている鍵ストリーム位置情報で通知されている位置の乱数を鍵ストリーム記憶部202から入力し、入力した乱数を用いて暗号文を復号することができる。
出力部205は、復号処理部204により復号された平文を出力する。
【0023】
次に、本実施の形態に係る暗号装置100の動作例を図6のフローチャートを参照して説明する。
【0024】
まず、鍵ストリーム生成部101が、秘密鍵から鍵ストリームを生成する(S601)。なお、鍵ストリームの生成アルゴリズムは、既存のものでもよい。
次に、鍵ストリーム生成部101が生成した鍵ストリームを鍵ストリーム記憶部102に格納し、鍵ストリーム記憶部102が鍵ストリームを記憶する(S602)。
【0025】
次に、入力部103が平文データを入力し(S603)、入力した平文データを鍵ストリーム記憶部102と入力部103に出力する。
鍵ストリーム記憶部102は、入力部103から平文データを入力する度に、平文データの通算の入力データ量(ビット数)をカウントしており、新たに入力した平文データが対応する区間の乱数を鍵ストリームから抽出し、抽出した乱数を暗号処理部104に出力するとともに、暗号処理部104に出力した乱数の鍵ストリームにおける位置(例えば、鍵ストリームの先頭からのビット数)を鍵ストリーム位置情報生成部105に通知する(S604)。
暗号処理部104では、入力部103から入力した平文データと鍵ストリーム記憶部102から入力した乱数とのExORをとり、平文データを暗号化する(S605)。
一方、鍵ストリーム位置情報生成部105は、鍵ストリーム記憶部102から通知された位置を示す鍵ストリーム位置情報を生成する(S606)。
次に、送信部106が、暗号処理部104で暗号された暗号データと、鍵ストリーム位置情報生成部105で生成された鍵ストリーム位置情報とを合成し、更にヘッダ情報を付加して暗号化パケットを生成する(S607)。
そして、送信部106が、暗号化パケットを送信し(S608)、処理をS603に戻す。
【0026】
なお、鍵ストリーム記憶部102は、暗号化に使用された乱数は順次消去していく。
また、鍵ストリーム生成部101は、一定周期ごとに鍵ストリームの生成と生成した鍵ストリームの鍵ストリーム記憶部102への格納を繰り返す。このとき、鍵ストリーム記憶部102は、乱数を消去して空いている記憶領域に新たに生成された乱数を格納する。
または、鍵ストリーム記憶部102が、暗号化に未使用の乱数が一定の閾値以下となった場合に、鍵ストリーム生成部101にその旨を通知し、鍵ストリーム生成部101が新たな鍵ストリームを生成するようにしてもよい。
【0027】
次に、本実施の形態に係る復号装置200の動作例を図7のフローチャートを参照して説明する。
【0028】
まず、鍵ストリーム生成部201が、秘密鍵から鍵ストリームを生成する(S701)(鍵ストリーム生成ステップ)。秘密鍵は予め暗号装置100と共有しているものであり、鍵ストリームの生成アルゴリズムは、暗号装置100と同じものである。これにより、暗号装置100と同じ鍵ストリームを生成することができる。
次に、鍵ストリーム生成部201が生成した鍵ストリームを鍵ストリーム記憶部202に格納し、鍵ストリーム記憶部202が鍵ストリームを記憶する(S702)(鍵ストリーム記憶ステップ)。
【0029】
次に、受信部203が、暗号装置100から送信された暗号化パケットを受信し(S703)(受信ステップ)、また、暗号化パケットを暗号データと鍵ストリーム位置情報に分離し(S704)、暗号データを復号処理部204に出力し、鍵ストリーム位置情報を鍵ストリーム記憶部202に出力する。
鍵ストリーム記憶部202は、受信部203から鍵ストリーム位置情報を入力し、入力した鍵ストリーム位置情報に示されている位置に対応する乱数を検索する(S705)。
検索の結果、対応する乱数が存在すれば(S706でYES)、鍵ストリーム記憶部202は、対応する乱数を復号処理部204に出力する(S708)。
【0030】
一方、対応する乱数が存在しない場合(S706でNO)は、途中の順序の暗号化パケットが多数消失した等により、直前に受信した暗号化パケットから大幅に後の順序の暗号化パケットを受信し、このため、鍵ストリーム記憶部202に記憶している鍵ストリーム中には対応する乱数が存在しない場合である。この場合には、鍵ストリーム記憶部202は、受信部203から入力した鍵ストリーム位置情報を鍵ストリーム生成部201に出力し、鍵ストリーム生成部201が鍵ストリーム位置情報に示される位置が含まれる鍵ストリームを生成し(S707)、鍵ストリーム記憶部202が、新たに生成された鍵ストリームを記憶する。
そして、鍵ストリーム記憶部202は、鍵ストリーム位置情報に示される位置に対応する乱数を復号処理部204に出力する(S708)。
【0031】
次に、復号処理部204が、受信部203から入力した暗号データと鍵ストリーム記憶部202から入力した乱数とのExORをとり、暗号データを復号し(S709)(復号処理ステップ)、出力部205が平文データを出力する(S710)。
【0032】
なお、鍵ストリーム記憶部202は、復号に使用された乱数は順次消去していく。
また、鍵ストリーム生成部201は、一定周期ごとに鍵ストリームの生成と生成した鍵ストリームの鍵ストリーム記憶部202への格納を繰り返す。このとき、鍵ストリーム記憶部202は、乱数を消去して空いている記憶領域に新たに生成された乱数を格納する。
または、鍵ストリーム記憶部202が、復号に未使用の乱数が一定の閾値以下となった場合に、鍵ストリーム生成部201にその旨を通知し、鍵ストリーム生成部201が新たな鍵ストリームを生成するようにしてもよい。
【0033】
また、S706でNOの場合、すなわち、暗号化パケットが順序通りに受信されず、受信部203により受信された暗号化パケットの鍵ストリーム位置情報で通知されている位置の乱数が未生成であり、S707において鍵ストリーム生成部101が生成した新たな鍵ストリームを記憶する際に、鍵ストリーム記憶部202は、IPsecにおけるシーケンス番号のチェックウィンドウ値に基づいて、既に記憶している鍵ストリームの特定の乱数を消去する。
つまり、IPsecでは、リプレイ攻撃等の防止のためにチェックウィンドウ値よりも前のパケットを受信したときには復号せずに無条件で廃棄する。このように、チェックウィンドウ値よりも前のパケットは廃棄されるので、廃棄対象のパケットに対応する乱数は保持する必要がない。
パケットのヘッダに付加されているパケットシーケンス番号のうち、現在復号の対象にしている暗号化パケット、つまり、最後に受信した暗号化パケット(受信側から見て最新のもの)から、チェックウィンドウ値より小さな値のもの(シーケンス番号はアップカウンタなので、古いものとなる)は破棄されることになる。
このようにすることで、使用されない乱数を保持し続けるという事態を回避することができ、鍵ストリーム記憶部202の記憶容量を効率的に利用することが可能である。
【0034】
次に、図2〜図5を参照して、本実施の形態に係る暗号装置100と復号装置200の動作例をより具体的に説明する。
なお、図2〜図5では、入力部103、送信部106、制御部107、受信部203、出力部205及び制御部206の記載を省略している。
【0035】
図2は、暗号装置100から送信された順序通りに復号装置200において暗号化パケットを受信した場合を示している。
この場合は、復号装置200では、受信した暗号化パケットの鍵ストリーム位置情報に基づき、鍵ストリームの順序通りに乱数が抽出され、復号処理部204により復号され、平文データを得ることができる。
【0036】
図3は、暗号装置100から送信された一部の暗号化パケットが消失し、復号装置200が順序通りに暗号化パケットを受信できない場合を示している。
より具体的には、暗号化パケット2が消失しており、復号装置200は、暗号化パケット1、暗号パケット3、暗号化パケット4、暗号化パケット5の順序で受信している。
この場合にも、各暗号化パケットに含まれている鍵ストリーム位置情報により、各暗号化パケットに対応する適切な位置の乱数が抽出され、これにより、正しく復号が行われ、平文データを得ることができる。
【0037】
また、途中の暗号化パケットが連続して大量に消失した場合、例えば、図3の例において、復号装置200が、暗号化パケット1の次に暗号化パケット50を受信したような場合は、前述したように、鍵ストリーム生成部201が新たな鍵ストリームを生成することで、暗号化パケット50を正しく復号することができる。
また、このような場合には、前述したように、鍵ストリーム記憶部202は、IPsecのシーケンス番号のチェックウィンドウ値に基づいて古い乱数を削除して、新たな鍵ストリームを記憶する。
【0038】
図4は、暗号装置100から送信された順序と異なる順序で復号装置200が暗号化パケットを受信している場合を示している。
より具体的には、暗号化パケット2及び暗号化パケット3よりも暗号化パケット4が先に復号装置200に到着しており、このため、復号装置200は、暗号化パケット1、暗号パケット4、暗号化パケット2、暗号化パケット3、暗号化パケット5の順序で受信している。
この場合にも、各暗号化パケットに含まれている鍵ストリーム位置情報により、各暗号化パケットに対応する適切な位置の乱数が抽出され、これにより、正しく復号が行われ、平文データを得ることができる。
【0039】
このように、本実施の形態によれば、パケットの消失については、たとえ伝送路上でパケットが消失しても、鍵ストリーム記憶部に記録されている鍵ストリームの中から、受信したパケットに対応する位置の乱数を抽出して、受信したパケットの暗号データを復号することができる。
また、連続して大量のパケットが喪失した結果、まだ生成していない鍵ストリームを利用する必要が生じた場合には、鍵ストリーム生成部で新たな鍵ストリームを生成することで復号が可能となる。
また、パケットの順序が変わった場合は、鍵ストリーム記憶部から該当する位置の乱数を読み出すことにより復号が可能である。
【0040】
更に、本実施の形態によれば、鍵ストリーム生成の動作効率を向上することができる。
これは以下の理由による。
特許文献1に示される構成では、鍵ストリーム生成部は入力パケットと連動して動作する必要がある。
パケットには通常、暗号化されないあて先や送信元などが管理情報としてヘッダに付加されるため、この情報を処理している間は鍵ストリーム生成部は動作を停止することとなる。つまり、鍵ストリーム生成部は間欠的に動作と停止を繰り返すこととなり、動作効率が低下する。
本実施の形態では、鍵ストリーム記憶部を設け、一旦鍵ストリームを蓄えることにより、連続して鍵ストリーム生成部を動作させることができ、動作効率の向上に繋がる。
【0041】
また、図1〜図4では、暗号専用の暗号装置100と、復号専用の復号装置200とが通信を行う例を示したが、図5に示すように、暗号装置100と復号装置200の両者を備える暗号復号装置400同士で通信を行うようにしてもよい。
【0042】
以上、本実施の形態では、ストリーム暗号アルゴリズムを用い、秘密鍵をシードとして鍵ストリームとしての擬似乱数を生成する鍵ストリーム生成手段と、暗号化の際に使用した鍵ストリームの位置を通知する鍵ストリーム位置情報を出力する鍵ストリーム位置情報出力手段とを有する暗号装置と、鍵ストリームを保存する鍵ストリーム保存手段と、復号の際に鍵ストリーム位置情報を入力する鍵ストリーム位置情報入力手段とを有する復号装置を説明した。
【0043】
また、本実施の形態では、暗号化時には使用した鍵ストリームのビット数をカウントして鍵ストリーム位置情報として出力する暗号装置と、復号時には、鍵ストリーム保存手段に保存された鍵ストリームから、復号に使用する鍵ストリームを入力された鍵ストリーム位置情報から選び出して復号処理を行う復号装置を説明した。
【0044】
また、本実施の形態では、鍵ストリーム保存手段に保存する鍵ストリーム数を、IPsecにおけるシーケンス番号のチェックウィンドウ値と最大パケットのペイロードサイズの積とした復号装置を説明した。
【0045】
また、本実施の形態では、鍵ストリーム保存手段に保存する鍵ストリームは、復号に使用したものは消去し、鍵ストリーム生成手段で新たに生成される鍵ストリームで上書きを行う復号装置を説明した。
【0046】
また、本実施の形態では、大量にパケットが消失した等により、復号時に入力された鍵ストリーム位置情報の鍵ストリームが鍵ストリーム保存手段に無く、かつ鍵ストリーム保存手段で記録しているより新しい鍵ストリーム位置情報の場合、鍵ストリーム生成手段を受信した鍵ストリーム位置情報に対応するまで動作させ、対応する鍵ストリームを生成させ復号動作を行わせる復号装置を説明した。
【0047】
最後に、本実施の形態に示した暗号装置100及び復号装置200のハードウェア構成例について説明する。
【0048】
暗号装置100及び復号装置200は、例えば、プログラムを実行するCPU(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPUは、バスを介して、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、通信ボード、表示装置、キーボード、マウス、磁気ディスク装置と接続され、これらのハードウェアデバイスを制御する。
更に、CPUは、FDD(Flexible Disk Drive)、コンパクトディスク装置(CDD)、プリンタ装置、スキャナ装置と接続していてもよい。また、磁気ディスク装置の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAMは、揮発性メモリの一例である。バス、FDD、CDD、磁気ディスク装置の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード、キーボード、マウス、スキャナ装置、FDDなどは、入力装置の一例である。
また、通信ボード、表示装置、プリンタ装置などは、出力装置の一例である。
【0049】
通信ボードは、図1に示すように、ネットワークに接続されている。例えば、通信ボードは、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続されていても構わない。
【0050】
磁気ディスク装置には、オペレーティングシステム(OS)、ウィンドウシステム、プログラム群、ファイル群が記憶されている。
プログラム群のプログラムは、CPUがオペレーティングシステム、ウィンドウシステムを利用しながら実行する。
【0051】
また、RAMには、CPUに実行させるオペレーティングシステムのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAMには、CPUによる処理に必要な各種データが格納される。
【0052】
また、ROMには、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置にはブートプログラムが格納されている。
暗号装置100及び復号装置200の起動時には、バスのBIOSプログラム及び磁気ディスク装置のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステムが起動される。
【0053】
上記プログラム群には、本実施の形態の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPUにより読み出され実行される。
【0054】
ファイル群924には、本実施の形態の説明において、「〜の生成」、「〜の暗号化」、「〜の復号」、「〜の抽出」、「〜の設定」、「〜のカウント」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPUによりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAMのメモリ、FDDのフレキシブルディスク、CDDのコンパクトディスク、磁気ディスク装置の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バスや信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0055】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、バスに記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPUにより読み出され、CPUにより実行される。すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【0056】
このように、本実施の形態に示す暗号装置100及び復号装置200は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【0057】
100 暗号装置、101 鍵ストリーム生成部、102 鍵ストリーム記憶部、103 入力部、104 暗号処理部、105 鍵ストリーム位置情報生成部、106 送信部、107 制御部、200 復号装置、201 鍵ストリーム生成部、202 鍵ストリーム記憶部、203 受信部、204 復号処理部、205 出力部、206 制御部、300 伝送路、400 暗号復号装置。

【特許請求の範囲】
【請求項1】
乱数列である鍵ストリームを用いる暗号装置においてストリーム暗号アルゴリズムに従って鍵ストリーム中の所定位置の乱数を用いて暗号化された暗号データを前記ストリーム暗号アルゴリズムに従って復号する復号処理部と、
前記復号処理部による復号に先立ち、前記ストリーム暗号アルゴリズムに従って前記暗号装置が用いる鍵ストリームと同じ鍵ストリームを生成する鍵ストリーム生成部と、
前記鍵ストリーム生成部により生成された鍵ストリームを記憶する鍵ストリーム記憶部と、
暗号データと、当該暗号データの暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報とを対応付けて受信する受信部とを有し、
前記復号処理部は、
前記受信部により受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数を前記鍵ストリーム記憶部から入力し、入力した乱数を用いて、前記受信部により受信された暗号データを復号することを特徴とする復号装置。
【請求項2】
前記受信部は、
データ順序が定められている複数の暗号データを受信し、
前記復号処理部は、
暗号データが順序通りに受信されない場合でも、前記受信部により受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数を前記鍵ストリーム記憶部から入力し、入力した乱数を用いて、前記受信部により受信された暗号データを復号することを特徴とする請求項1に記載の復号装置。
【請求項3】
前記受信部は、
データ順序が定められている複数の暗号データを受信し、
前記鍵ストリーム生成部は、
暗号データが順序通りに受信されず、前記受信部により受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数が未生成である場合に、前記ストリーム暗号アルゴリズムに従って対応する位置の乱数を生成し、
前記復号処理部は、
前記鍵ストリーム生成部により生成された乱数を用いて、前記受信部により受信された暗号データを復号することを特徴とする請求項1又は2に記載の復号装置。
【請求項4】
前記鍵ストリーム記憶部は、
IPsecにおけるシーケンス番号のチェックウィンドウ値に基づいて、記憶している鍵ストリームの特定の乱数を消去することを特徴とする請求項1〜3のいずれかに記載の復号装置。
【請求項5】
コンピュータが、乱数列である鍵ストリームを用いる暗号装置においてストリーム暗号アルゴリズムに従って鍵ストリーム中の所定位置の乱数を用いて暗号化された暗号データを前記ストリーム暗号アルゴリズムに従って復号する復号処理ステップと、
前記コンピュータが、前記復号処理ステップによる復号に先立ち、前記ストリーム暗号アルゴリズムに従って前記暗号装置が用いる鍵ストリームと同じ鍵ストリームを生成する鍵ストリーム生成ステップと、
前記コンピュータが、前記鍵ストリーム生成ステップにより生成された鍵ストリームを記憶領域に記憶する鍵ストリーム記憶ステップと、
前記コンピュータが、暗号データと、当該暗号データの暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報とを対応付けて受信する受信ステップとを有し、
前記復号処理ステップにおいて、
前記コンピュータが、前記受信ステップにより受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数を前記記憶領域から入力し、入力した乱数を用いて、前記受信ステップにより受信された暗号データを復号することを特徴とする復号方法。
【請求項6】
乱数列である鍵ストリームを用いる暗号装置においてストリーム暗号アルゴリズムに従って鍵ストリーム中の所定位置の乱数を用いて暗号化された暗号データを前記ストリーム暗号アルゴリズムに従って復号する復号処理と、
前記復号処理による復号に先立ち、前記ストリーム暗号アルゴリズムに従って前記暗号装置が用いる鍵ストリームと同じ鍵ストリームを生成する鍵ストリーム生成処理と、
前記コンピュータが、前記鍵ストリーム生成処理により生成された鍵ストリームを記憶領域に記憶する鍵ストリーム記憶処理と、
暗号データと、当該暗号データの暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報とを対応付けて受信する受信処理とをコンピュータに実行させ、
前記復号処理において、
前記コンピュータに、前記受信処理により受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数を前記記憶領域から入力し、入力した乱数を用いて、前記受信処理により受信された暗号データを復号する処理を実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate