(57)【要約】【課題】ストリーム暗号方式において、パケットの消失又は到着順序の変動を吸収する。【解決手段】通信開始前に、鍵ストリーム生成部１０１、２０１が同じ鍵ストリームを生成し、鍵ストリーム記憶部１０２、２０２に記憶させる。暗号装置１００では、入力部１０３が平文データを順に入力し、鍵ストリーム記憶部１０２が、平文データの順序に対応する乱数を鍵ストリームから選択し、暗号処理部１０４が当該乱数を用いて暗号化を行い、鍵ストリーム位置情報生成部１０５が、暗号化に用いられた乱数の鍵ストリーム中の位置を示す位置情報を生成し、送信部１０６が暗号データと位置情報を併せて送信し、復号装置２００では、鍵ストリーム記憶部２０２が、位置情報に示される位置に対応する乱数を鍵ストリームから選択し、復号処理部２０４が当該乱数を用いて復号する。これにより、パケットの消失又は到着順序の変動があっても復号が可能となる。【選択図】図１
2010268149.tif 000002
【特許請求の範囲】
【請求項１】
乱数列である鍵ストリームを用いる暗号装置においてストリーム暗号アルゴリズムに従って鍵ストリーム中の所定位置の乱数を用いて暗号化された暗号データを前記ストリーム暗号アルゴリズムに従って復号する復号処理部と、
前記復号処理部による復号に先立ち、前記ストリーム暗号アルゴリズムに従って前記暗号装置が用いる鍵ストリームと同じ鍵ストリームを生成する鍵ストリーム生成部と、
前記鍵ストリーム生成部により生成された鍵ストリームを記憶する鍵ストリーム記憶部と、
暗号データと、当該暗号データの暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報とを対応付けて受信する受信部とを有し、
前記復号処理部は、
前記受信部により受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数を前記鍵ストリーム記憶部から入力し、入力した乱数を用いて、前記受信部により受信された暗号データを復号することを特徴とする復号装置。
【請求項２】
前記受信部は、
データ順序が定められている複数の暗号データを受信し、
前記復号処理部は、
暗号データが順序通りに受信されない場合でも、前記受信部により受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数を前記鍵ストリーム記憶部から入力し、入力した乱数を用いて、前記受信部により受信された暗号データを復号することを特徴とする請求項１に記載の復号装置。
【請求項３】
前記受信部は、
データ順序が定められている複数の暗号データを受信し、
前記鍵ストリーム生成部は、
暗号データが順序通りに受信されず、前記受信部により受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数が未生成である場合に、前記ストリーム暗号アルゴリズムに従って対応する位置の乱数を生成し、
前記復号処理部は、
前記鍵ストリーム生成部により生成された乱数を用いて、前記受信部により受信された暗号データを復号することを特徴とする請求項１又は２に記載の復号装置。
【請求項４】
前記鍵ストリーム記憶部は、
ＩＰｓｅｃにおけるシーケンス番号のチェックウィンドウ値に基づいて、記憶している鍵ストリームの特定の乱数を消去することを特徴とする請求項１〜３のいずれかに記載の復号装置。
【請求項５】
コンピュータが、乱数列である鍵ストリームを用いる暗号装置においてストリーム暗号アルゴリズムに従って鍵ストリーム中の所定位置の乱数を用いて暗号化された暗号データを前記ストリーム暗号アルゴリズムに従って復号する復号処理ステップと、
前記コンピュータが、前記復号処理ステップによる復号に先立ち、前記ストリーム暗号アルゴリズムに従って前記暗号装置が用いる鍵ストリームと同じ鍵ストリームを生成する鍵ストリーム生成ステップと、
前記コンピュータが、前記鍵ストリーム生成ステップにより生成された鍵ストリームを記憶領域に記憶する鍵ストリーム記憶ステップと、
前記コンピュータが、暗号データと、当該暗号データの暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報とを対応付けて受信する受信ステップとを有し、
前記復号処理ステップにおいて、
前記コンピュータが、前記受信ステップにより受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数を前記記憶領域から入力し、入力した乱数を用いて、前記受信ステップにより受信された暗号データを復号することを特徴とする復号方法。
【請求項６】
乱数列である鍵ストリームを用いる暗号装置においてストリーム暗号アルゴリズムに従って鍵ストリーム中の所定位置の乱数を用いて暗号化された暗号データを前記ストリーム暗号アルゴリズムに従って復号する復号処理と、
前記復号処理による復号に先立ち、前記ストリーム暗号アルゴリズムに従って前記暗号装置が用いる鍵ストリームと同じ鍵ストリームを生成する鍵ストリーム生成処理と、
前記コンピュータが、前記鍵ストリーム生成処理により生成された鍵ストリームを記憶領域に記憶する鍵ストリーム記憶処理と、
暗号データと、当該暗号データの暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報とを対応付けて受信する受信処理とをコンピュータに実行させ、
前記復号処理において、
前記コンピュータに、前記受信処理により受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数を前記記憶領域から入力し、入力した乱数を用いて、前記受信処理により受信された暗号データを復号する処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット通信の際にパケットに含まれるデータを秘匿するための復号装置、更に、これを実現するための復号方法及びプログラムに関する。
【背景技術】
【０００２】
最近の情報のディジタル化やブロードバンドネットワークの発達により様々なデータがインターネットを代表とするネットワークにより伝送されている。
また、セキュリティに対する意識の高まりと共に、これらの情報を安全に伝達したいという要求も高まっている。
ネットワーク上で安全に情報をやり取りするためのフレームワークの代表として、ＩＰｓｅｃ（Ｓｅｃｕｒｉｔｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）が挙げられる。
ＩＰｓｅｃは暗号技術を用いて、ＩＰパケット単位でのデータの秘匿等の機能を提供するプロトコルである。
一方、大容量のデータやリアルタイム性を重視する通信において、秘匿機能を提供する場合に、ストリーム暗号を採用するケースが増えている。
【０００３】
ストリーム暗号を用いた通信装置の秘匿機能の基本概念を図８に示す。
ストリーム暗号を用いた秘匿通信は以下の手順による。
【０００４】
まず、事前に秘密鍵を送信側と受信側で共有する。
次に、秘密鍵を送信側の鍵ストリーム生成部に入力し鍵ストリームを生成する。
一般に鍵ストリームは秘密鍵に依存した擬似乱数系列となる。
次に、鍵ストリームと平文データ（以下、単に平文ともいう）をＥｘＯＲし暗号データ（以下、単に暗号文ともいう）として受信側に伝送する。
受信側では、送信側と同一手順で生成した鍵ストリームを暗号文とＥｘＯＲすることにより復号し平文を得る。
【０００５】
上記の基本動作をパケット通信に適用した例を図９に示す。
暗号側（送信側）では、入力された平文１、２、３…に合わせて生成した鍵ストリーム１、２、３・・・と、入力された平文をＥｘＯＲすることにより暗号化を行い、これを暗号化パケット１、２、３として伝送する。
復号側（受信側）では、受け取った暗号化パケット１、２、３・・・を暗号化時と同様に生成した鍵ストリーム１、２、３・・・とＥｘＯＲすることにより復号を行い、元の平文１、２、３・・・を得る。
このとき重要な点は、暗号化時と同じ鍵ストリーム（乱数）で復号を行うという点であり、この条件が保てなくなると正しく復号を行うことができない。
【０００６】
図１０及び図１１は、暗号化時と復号時で同じ鍵ストリーム（乱数）を使うという条件が満たせなくなった場合の例を示す。
【０００７】
図１０は、パケットの伝送時にパケットが失われた場合を示す。
図１０では、暗号化パケット２が伝送時に失われており、このため鍵ストリームと暗号化パケットとを一致させることができず、復号時は暗号化パケット１が正しく復号できるのみで、以降のパケットは全て正しく復号することができない。
【０００８】
図１１は、パケットの到着順序が伝送時に変化してしまった場合の例を示す。
図１１では、本来の到着順序である、暗号化パケット１、２、３、４、５…の到着順序が、パケット４の到着順序が早まってしまい、暗号化パケット１、４、２、３、５の順となってしまった場合である。
このとき正しく復号できるのは、パケット１、５および６降のパケットで、パケット２、３、４を正しく復号することはできない。
【０００９】
このような、伝送時のパケットの消失や順序変化は、パケット通信では普通に発生しており、上記の課題に対する対応が求められるが、上記の課題に対応する技術として、特許文献１に記載の技術がある。
【００１０】
図１２は、特許文献１の送信装置と受信装置の構成を示す図である。
図１２において、送信装置（暗号化側）では、入力されたデータの通算データ量をデータサイズ累計記憶部でカウントする。そして、ＭＵＸ部が、通算データ量のカウント値をＸＯＲ演算部（１）により暗号化された暗号文に付加して暗号化パケットとし、ネットワークＩ／Ｆ部（１）が暗号化パケットを伝送する。
受信装置（復号側）では、ＤＭＵＸ部が、暗号文と通算データ量のカウント値とを分離し、数値比較部が、通算データ量のカウント値と実際に受信したパケットの暗号文のデータ量を比較し、受信データ量が少なかった場合（即ちパケットが失われた場合）に、鍵ストリームを生成する乱数発生部（２）を不足分だけ動作させ、通算データ量のカウント値と一致するように鍵データストリームを生成する。
復号動作は、ＸＯＲ演算部（２）が、通算データ量と一致するようにして生成した鍵ストリームとＥｘＯＲすることにより行う。
このようにすることで、パケットの消失に対応できるようにした方式である。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−３１８０４１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
特許文献１の技術は、パケットの消失や受信側でのパケット到着順序の変化に対応させることが困難であるという課題がある。
つまり、図１０に示したように、先の順序の暗号化パケット（暗号化パケット２）が消失してしまい後の順序の暗号化パケット（暗号化パケット３、４）のみを受信した場合には、後の順序の暗号化パケットを受信した段階で、消失した暗号化パケットに対応する鍵ストリームを生成し、更に、受信できた後の順序の暗号化パケットに対応する鍵ストリームを生成することになる。
更には、図１１に示したように、暗号化パケットの到着順序が入れ替わってしまい後の順序の暗号化パケット（暗号化パケット４）を先の順序の暗号化パケット（暗号化パケット２、３）よりも先に受信した場合には、後の順序の暗号化パケットを受信した段階で、先の順序の暗号化パケットに対応する鍵ストリームを生成し、更に、後の順序の暗号化パケットに対応する鍵ストリームを生成し後の順序の暗号化パケットの復号を行う。そして、その後に先の順序の暗号化パケットを受信した場合は、もはや当該先の順序の暗号化パケットに対応する鍵ストリームを取得することができず、当該先の順序の暗号化パケットを廃棄することになる。
このように、特許文献１の技術によれば、暗号化パケットの受信状況に対応させて鍵ストリームを生成、管理することが必要であり、運用が困難であるという課題がある。
【００１３】
また、特許文献１の方式では、暗号化パケットの消失又は到着順序の変動があった場合に、暗号化パケットを受信した段階で、受信した暗号化パケットの順序に対応する鍵ストリームの生成を開始するので、暗号化パケットの受信から復号処理までに時間がかかるという課題がある。
【００１４】
また、特許文献１に示される構成では、鍵ストリームの生成は入力パケットと連動する必要がある。
パケットには通常、暗号化されない宛先や送信元などが管理情報としてヘッダに付加されるため、これら管理情報を処理している間は鍵ストリーム生成動作が停止することとなる。つまり、鍵ストリームの生成は間欠的に動作と停止を繰り返すこととなり、動作効率が低下するという課題がある。
【００１５】
この発明は、上記のような課題を解決することを主な目的の一つとしており、暗号データの消失又は到着順序の変動を吸収し、暗号データの消失又は到着順序の変動があった場合の鍵ストリームの管理を用意にし、また、暗号データの受信から復号までの動作を効率化することを主な目的とする。
【課題を解決するための手段】
【００１６】
本発明に係る復号装置は、
乱数列である鍵ストリームを用いる暗号装置においてストリーム暗号アルゴリズムに従って鍵ストリーム中の所定位置の乱数を用いて暗号化された暗号データを前記ストリーム暗号アルゴリズムに従って復号する復号処理部と、
前記復号処理部による復号に先立ち、前記ストリーム暗号アルゴリズムに従って前記暗号装置が用いる鍵ストリームと同じ鍵ストリームを生成する鍵ストリーム生成部と、
前記鍵ストリーム生成部により生成された鍵ストリームを記憶する鍵ストリーム記憶部と、
暗号データと、当該暗号データの暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報とを対応付けて受信する受信部とを有し、
前記復号処理部は、
前記受信部により受信された暗号データに対応付けられている鍵ストリーム位置情報で通知されている位置の乱数を前記鍵ストリーム記憶部から入力し、入力した乱数を用いて、前記受信部により受信された暗号データを復号することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報を暗号データに対応付けて受信するので、復号側では、鍵ストリーム位置情報に基づいて復号に用いる乱数を特定することができ、これにより、暗号データの消失又は到着順序の変動を吸収することができ、暗号データの消失又は到着順序の変動があった場合の鍵ストリームの管理を容易にすることができ、また、暗号データの受信から復号までの動作効率を向上させることができる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態１に係る暗号装置及び復号装置の構成例を示す図。
【図２】実施の形態１に係る暗号装置及び復号装置の動作の概略を示す図。
【図３】実施の形態１に係る暗号装置及び復号装置の動作の概略を示す図。
【図４】実施の形態１に係る暗号装置及び復号装置の動作の概略を示す図。
【図５】実施の形態１に係る暗号復号装置の構成例を示す図。
【図６】実施の形態１に係る暗号装置の動作例を示すフローチャート図。
【図７】実施の形態１に係る復号装置の動作例を示すフローチャート図。
【図８】従来技術を説明する図。
【図９】従来技術を説明する図。
【図１０】従来技術を説明する図。
【図１１】従来技術を説明する図。
【図１２】従来技術を説明する図。
【発明を実施するための形態】
【００１９】
実施の形態１．
図１は、本実施の形態に係る暗号装置１００と復号装置２００の構成例を示す。
暗号装置１００と復号装置２００は伝送路３００により接続されている。
暗号装置１００及び復号装置２００は、それぞれストリーム暗号アルゴリズムに対応している。
暗号装置１００及び復号装置２００は、秘密鍵を共有しており、通信の開始前に、それぞれ、秘密鍵を用いて、乱数の連鎖である鍵ストリームを生成し、記憶している。暗号装置１００と復号装置２００が生成し、記憶する鍵ストリームは同じものである。
暗号装置１００は、データ順序が定められている平文データ（以下、単に平文ともいう）を順に入力し、入力した平文の順序に対応させて鍵ストリームから乱数を選択し、選択した乱数を用いて平文を暗号化して暗号データ（以下、単に暗号文ともいう）を生成し、また、暗号文を鍵ストリーム位置情報（暗号化に用いた乱数の鍵ストリームにおける位置を示す情報）と対応付けて暗号化パケットとし、暗号文パケットを伝送路３００を介して復号装置２００に送信する。
平文のデータサイズは、可変である。暗号装置１００は、平文を入力する度に、入力した平文のデータサイズと同じデータサイズ分の乱数を鍵ストリームの先頭から順に抽出して、抽出した乱数とのＥｘＯＲにより平文を暗号化する。
復号装置２００は、伝送路３００から暗号化パケットを受信し、暗号化パケットを暗号文と鍵ストリーム位置情報に分離し、鍵ストリーム位置情報に示されている位置に対応する乱数を鍵ストリームから選択し、選択した乱数を用いて暗号文を復号して、平文を得る。
【００２０】
次に、暗号装置１００、復号装置２００の各々の内部構成を説明する。
【００２１】
暗号装置１００において、鍵ストリーム生成部１０１は、後述の暗号処理部１０４による暗号化に先立ち、復号装置２００と共有している秘密鍵を用いて、ストリーム暗号アルゴリズムに従って、擬似乱数系列である鍵ストリームを生成し、鍵ストリーム記憶部１０２に鍵ストリームを格納する。
鍵ストリーム記憶部１０２は、鍵ストリーム生成部１０１により生成された鍵ストリームを記憶する。なお、鍵ストリーム記憶部１０２は暗号装置１００では、必須の要素ではなく、省略してもよい。
入力部１０３は、暗号化対象データである平文を入力する。
暗号処理部１０４は、鍵ストリーム中の所定位置の乱数を用いて、平文を暗号化する。暗号処理部１０４は、入力した平文の順序に対応する位置の乱数を鍵ストリーム記憶部１０２から入力して、平文と乱数のＥｘＯＲ演算により暗号化を行う。
鍵ストリーム位置情報生成部１０５は、暗号処理部１０４による平文の暗号化に用いられている乱数の鍵ストリームにおける位置を通知する鍵ストリーム位置情報（以下、単に位置情報ともいう）を生成する。鍵ストリーム位置情報で通知される乱数の位置とは、例えば、鍵ストリームの基準点（鍵ストリームの先頭等）からのビット数である。
送信部１０６は、暗号処理部１０４により暗号化された暗号データと鍵ストリーム位置情報生成部１０５により生成された鍵ストリーム位置情報とを対応付け、シーケンス番号、送信元アドレス、宛先アドレス等のヘッダ情報を付加して暗号化パケットとし、暗号化パケットを伝送路３００を介して復号装置２００に送信する。
制御部１０７は、暗号装置１００の各要素の制御を行う。
【００２２】
復号装置２００において、鍵ストリーム生成部２０１は、後述の復号処理部２０４による復号に先立ち、暗号装置１００と共有している秘密鍵を用いて、ストリーム暗号アルゴリズムに従って、乱数列である鍵ストリームを生成し、鍵ストリーム記憶部２０２に鍵ストリームを格納する。
鍵ストリーム記憶部２０２は、鍵ストリーム生成部２０１により生成された鍵ストリームを記憶する。また、鍵ストリーム記憶部２０２は、後述する受信部２０３から入力した鍵ストリーム位置情報に示されている位置に対応する乱数を選択し、選択した乱数を復号処理部２０４に出力する。
受信部２０３は、伝送路３００から暗号化パケットを受信し、受信した暗号化パケットを暗号文と鍵ストリーム位置情報に分離し、暗号文を復号処理部２０４に出力し、鍵ストリーム位置情報を鍵ストリーム記憶部２０２に出力する。
復号処理部２０４は、鍵ストリーム位置情報で通知されている位置の乱数を鍵ストリーム記憶部２０２から入力し、入力した乱数を用いて、暗号文を復号する。暗号化パケットが順序通りに受信されない場合でも、暗号化パケットに含まれている鍵ストリーム位置情報で通知されている位置の乱数を鍵ストリーム記憶部２０２から入力し、入力した乱数を用いて暗号文を復号することができる。
出力部２０５は、復号処理部２０４により復号された平文を出力する。
【００２３】
次に、本実施の形態に係る暗号装置１００の動作例を図６のフローチャートを参照して説明する。
【００２４】
まず、鍵ストリーム生成部１０１が、秘密鍵から鍵ストリームを生成する（Ｓ６０１）。なお、鍵ストリームの生成アルゴリズムは、既存のものでもよい。
次に、鍵ストリーム生成部１０１が生成した鍵ストリームを鍵ストリーム記憶部１０２に格納し、鍵ストリーム記憶部１０２が鍵ストリームを記憶する（Ｓ６０２）。
【００２５】
次に、入力部１０３が平文データを入力し（Ｓ６０３）、入力した平文データを鍵ストリーム記憶部１０２と入力部１０３に出力する。
鍵ストリーム記憶部１０２は、入力部１０３から平文データを入力する度に、平文データの通算の入力データ量（ビット数）をカウントしており、新たに入力した平文データが対応する区間の乱数を鍵ストリームから抽出し、抽出した乱数を暗号処理部１０４に出力するとともに、暗号処理部１０４に出力した乱数の鍵ストリームにおける位置（例えば、鍵ストリームの先頭からのビット数）を鍵ストリーム位置情報生成部１０５に通知する（Ｓ６０４）。
暗号処理部１０４では、入力部１０３から入力した平文データと鍵ストリーム記憶部１０２から入力した乱数とのＥｘＯＲをとり、平文データを暗号化する（Ｓ６０５）。
一方、鍵ストリーム位置情報生成部１０５は、鍵ストリーム記憶部１０２から通知された位置を示す鍵ストリーム位置情報を生成する（Ｓ６０６）。
次に、送信部１０６が、暗号処理部１０４で暗号された暗号データと、鍵ストリーム位置情報生成部１０５で生成された鍵ストリーム位置情報とを合成し、更にヘッダ情報を付加して暗号化パケットを生成する（Ｓ６０７）。
そして、送信部１０６が、暗号化パケットを送信し（Ｓ６０８）、処理をＳ６０３に戻す。
【００２６】
なお、鍵ストリーム記憶部１０２は、暗号化に使用された乱数は順次消去していく。
また、鍵ストリーム生成部１０１は、一定周期ごとに鍵ストリームの生成と生成した鍵ストリームの鍵ストリーム記憶部１０２への格納を繰り返す。このとき、鍵ストリーム記憶部１０２は、乱数を消去して空いている記憶領域に新たに生成された乱数を格納する。
または、鍵ストリーム記憶部１０２が、暗号化に未使用の乱数が一定の閾値以下となった場合に、鍵ストリーム生成部１０１にその旨を通知し、鍵ストリーム生成部１０１が新たな鍵ストリームを生成するようにしてもよい。
【００２７】
次に、本実施の形態に係る復号装置２００の動作例を図７のフローチャートを参照して説明する。
【００２８】
まず、鍵ストリーム生成部２０１が、秘密鍵から鍵ストリームを生成する（Ｓ７０１）（鍵ストリーム生成ステップ）。秘密鍵は予め暗号装置１００と共有しているものであり、鍵ストリームの生成アルゴリズムは、暗号装置１００と同じものである。これにより、暗号装置１００と同じ鍵ストリームを生成することができる。
次に、鍵ストリーム生成部２０１が生成した鍵ストリームを鍵ストリーム記憶部２０２に格納し、鍵ストリーム記憶部２０２が鍵ストリームを記憶する（Ｓ７０２）（鍵ストリーム記憶ステップ）。
【００２９】
次に、受信部２０３が、暗号装置１００から送信された暗号化パケットを受信し（Ｓ７０３）（受信ステップ）、また、暗号化パケットを暗号データと鍵ストリーム位置情報に分離し（Ｓ７０４）、暗号データを復号処理部２０４に出力し、鍵ストリーム位置情報を鍵ストリーム記憶部２０２に出力する。
鍵ストリーム記憶部２０２は、受信部２０３から鍵ストリーム位置情報を入力し、入力した鍵ストリーム位置情報に示されている位置に対応する乱数を検索する（Ｓ７０５）。
検索の結果、対応する乱数が存在すれば（Ｓ７０６でＹＥＳ）、鍵ストリーム記憶部２０２は、対応する乱数を復号処理部２０４に出力する（Ｓ７０８）。
【００３０】
一方、対応する乱数が存在しない場合（Ｓ７０６でＮＯ）は、途中の順序の暗号化パケットが多数消失した等により、直前に受信した暗号化パケットから大幅に後の順序の暗号化パケットを受信し、このため、鍵ストリーム記憶部２０２に記憶している鍵ストリーム中には対応する乱数が存在しない場合である。この場合には、鍵ストリーム記憶部２０２は、受信部２０３から入力した鍵ストリーム位置情報を鍵ストリーム生成部２０１に出力し、鍵ストリーム生成部２０１が鍵ストリーム位置情報に示される位置が含まれる鍵ストリームを生成し（Ｓ７０７）、鍵ストリーム記憶部２０２が、新たに生成された鍵ストリームを記憶する。
そして、鍵ストリーム記憶部２０２は、鍵ストリーム位置情報に示される位置に対応する乱数を復号処理部２０４に出力する（Ｓ７０８）。
【００３１】
次に、復号処理部２０４が、受信部２０３から入力した暗号データと鍵ストリーム記憶部２０２から入力した乱数とのＥｘＯＲをとり、暗号データを復号し（Ｓ７０９）（復号処理ステップ）、出力部２０５が平文データを出力する（Ｓ７１０）。
【００３２】
なお、鍵ストリーム記憶部２０２は、復号に使用された乱数は順次消去していく。
また、鍵ストリーム生成部２０１は、一定周期ごとに鍵ストリームの生成と生成した鍵ストリームの鍵ストリーム記憶部２０２への格納を繰り返す。このとき、鍵ストリーム記憶部２０２は、乱数を消去して空いている記憶領域に新たに生成された乱数を格納する。
または、鍵ストリーム記憶部２０２が、復号に未使用の乱数が一定の閾値以下となった場合に、鍵ストリーム生成部２０１にその旨を通知し、鍵ストリーム生成部２０１が新たな鍵ストリームを生成するようにしてもよい。
【００３３】
また、Ｓ７０６でＮＯの場合、すなわち、暗号化パケットが順序通りに受信されず、受信部２０３により受信された暗号化パケットの鍵ストリーム位置情報で通知されている位置の乱数が未生成であり、Ｓ７０７において鍵ストリーム生成部１０１が生成した新たな鍵ストリームを記憶する際に、鍵ストリーム記憶部２０２は、ＩＰｓｅｃにおけるシーケンス番号のチェックウィンドウ値に基づいて、既に記憶している鍵ストリームの特定の乱数を消去する。
つまり、ＩＰｓｅｃでは、リプレイ攻撃等の防止のためにチェックウィンドウ値よりも前のパケットを受信したときには復号せずに無条件で廃棄する。このように、チェックウィンドウ値よりも前のパケットは廃棄されるので、廃棄対象のパケットに対応する乱数は保持する必要がない。
パケットのヘッダに付加されているパケットシーケンス番号のうち、現在復号の対象にしている暗号化パケット、つまり、最後に受信した暗号化パケット（受信側から見て最新のもの）から、チェックウィンドウ値より小さな値のもの（シーケンス番号はアップカウンタなので、古いものとなる）は破棄されることになる。
このようにすることで、使用されない乱数を保持し続けるという事態を回避することができ、鍵ストリーム記憶部２０２の記憶容量を効率的に利用することが可能である。
【００３４】
次に、図２〜図５を参照して、本実施の形態に係る暗号装置１００と復号装置２００の動作例をより具体的に説明する。
なお、図２〜図５では、入力部１０３、送信部１０６、制御部１０７、受信部２０３、出力部２０５及び制御部２０６の記載を省略している。
【００３５】
図２は、暗号装置１００から送信された順序通りに復号装置２００において暗号化パケットを受信した場合を示している。
この場合は、復号装置２００では、受信した暗号化パケットの鍵ストリーム位置情報に基づき、鍵ストリームの順序通りに乱数が抽出され、復号処理部２０４により復号され、平文データを得ることができる。
【００３６】
図３は、暗号装置１００から送信された一部の暗号化パケットが消失し、復号装置２００が順序通りに暗号化パケットを受信できない場合を示している。
より具体的には、暗号化パケット２が消失しており、復号装置２００は、暗号化パケット１、暗号パケット３、暗号化パケット４、暗号化パケット５の順序で受信している。
この場合にも、各暗号化パケットに含まれている鍵ストリーム位置情報により、各暗号化パケットに対応する適切な位置の乱数が抽出され、これにより、正しく復号が行われ、平文データを得ることができる。
【００３７】
また、途中の暗号化パケットが連続して大量に消失した場合、例えば、図３の例において、復号装置２００が、暗号化パケット１の次に暗号化パケット５０を受信したような場合は、前述したように、鍵ストリーム生成部２０１が新たな鍵ストリームを生成することで、暗号化パケット５０を正しく復号することができる。
また、このような場合には、前述したように、鍵ストリーム記憶部２０２は、ＩＰｓｅｃのシーケンス番号のチェックウィンドウ値に基づいて古い乱数を削除して、新たな鍵ストリームを記憶する。
【００３８】
図４は、暗号装置１００から送信された順序と異なる順序で復号装置２００が暗号化パケットを受信している場合を示している。
より具体的には、暗号化パケット２及び暗号化パケット３よりも暗号化パケット４が先に復号装置２００に到着しており、このため、復号装置２００は、暗号化パケット１、暗号パケット４、暗号化パケット２、暗号化パケット３、暗号化パケット５の順序で受信している。
この場合にも、各暗号化パケットに含まれている鍵ストリーム位置情報により、各暗号化パケットに対応する適切な位置の乱数が抽出され、これにより、正しく復号が行われ、平文データを得ることができる。
【００３９】
このように、本実施の形態によれば、パケットの消失については、たとえ伝送路上でパケットが消失しても、鍵ストリーム記憶部に記録されている鍵ストリームの中から、受信したパケットに対応する位置の乱数を抽出して、受信したパケットの暗号データを復号することができる。
また、連続して大量のパケットが喪失した結果、まだ生成していない鍵ストリームを利用する必要が生じた場合には、鍵ストリーム生成部で新たな鍵ストリームを生成することで復号が可能となる。
また、パケットの順序が変わった場合は、鍵ストリーム記憶部から該当する位置の乱数を読み出すことにより復号が可能である。
【００４０】
更に、本実施の形態によれば、鍵ストリーム生成の動作効率を向上することができる。
これは以下の理由による。
特許文献１に示される構成では、鍵ストリーム生成部は入力パケットと連動して動作する必要がある。
パケットには通常、暗号化されないあて先や送信元などが管理情報としてヘッダに付加されるため、この情報を処理している間は鍵ストリーム生成部は動作を停止することとなる。つまり、鍵ストリーム生成部は間欠的に動作と停止を繰り返すこととなり、動作効率が低下する。
本実施の形態では、鍵ストリーム記憶部を設け、一旦鍵ストリームを蓄えることにより、連続して鍵ストリーム生成部を動作させることができ、動作効率の向上に繋がる。
【００４１】
また、図１〜図４では、暗号専用の暗号装置１００と、復号専用の復号装置２００とが通信を行う例を示したが、図５に示すように、暗号装置１００と復号装置２００の両者を備える暗号復号装置４００同士で通信を行うようにしてもよい。
【００４２】
以上、本実施の形態では、ストリーム暗号アルゴリズムを用い、秘密鍵をシードとして鍵ストリームとしての擬似乱数を生成する鍵ストリーム生成手段と、暗号化の際に使用した鍵ストリームの位置を通知する鍵ストリーム位置情報を出力する鍵ストリーム位置情報出力手段とを有する暗号装置と、鍵ストリームを保存する鍵ストリーム保存手段と、復号の際に鍵ストリーム位置情報を入力する鍵ストリーム位置情報入力手段とを有する復号装置を説明した。
【００４３】
また、本実施の形態では、暗号化時には使用した鍵ストリームのビット数をカウントして鍵ストリーム位置情報として出力する暗号装置と、復号時には、鍵ストリーム保存手段に保存された鍵ストリームから、復号に使用する鍵ストリームを入力された鍵ストリーム位置情報から選び出して復号処理を行う復号装置を説明した。
【００４４】
また、本実施の形態では、鍵ストリーム保存手段に保存する鍵ストリーム数を、ＩＰｓｅｃにおけるシーケンス番号のチェックウィンドウ値と最大パケットのペイロードサイズの積とした復号装置を説明した。
【００４５】
また、本実施の形態では、鍵ストリーム保存手段に保存する鍵ストリームは、復号に使用したものは消去し、鍵ストリーム生成手段で新たに生成される鍵ストリームで上書きを行う復号装置を説明した。
【００４６】
また、本実施の形態では、大量にパケットが消失した等により、復号時に入力された鍵ストリーム位置情報の鍵ストリームが鍵ストリーム保存手段に無く、かつ鍵ストリーム保存手段で記録しているより新しい鍵ストリーム位置情報の場合、鍵ストリーム生成手段を受信した鍵ストリーム位置情報に対応するまで動作させ、対応する鍵ストリームを生成させ復号動作を行わせる復号装置を説明した。
【００４７】
最後に、本実施の形態に示した暗号装置１００及び復号装置２００のハードウェア構成例について説明する。
【００４８】
暗号装置１００及び復号装置２００は、例えば、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵは、バスを介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、通信ボード、表示装置、キーボード、マウス、磁気ディスク装置と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵは、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置（ＣＤＤ）、プリンタ装置、スキャナ装置と接続していてもよい。また、磁気ディスク装置の代わりに、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭは、揮発性メモリの一例である。バス、ＦＤＤ、ＣＤＤ、磁気ディスク装置の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード、キーボード、マウス、スキャナ装置、ＦＤＤなどは、入力装置の一例である。
また、通信ボード、表示装置、プリンタ装置などは、出力装置の一例である。
【００４９】
通信ボードは、図１に示すように、ネットワークに接続されている。例えば、通信ボードは、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。
【００５０】
磁気ディスク装置には、オペレーティングシステム（ＯＳ）、ウィンドウシステム、プログラム群、ファイル群が記憶されている。
プログラム群のプログラムは、ＣＰＵがオペレーティングシステム、ウィンドウシステムを利用しながら実行する。
【００５１】
また、ＲＡＭには、ＣＰＵに実行させるオペレーティングシステムのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭには、ＣＰＵによる処理に必要な各種データが格納される。
【００５２】
また、ＲＯＭには、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置にはブートプログラムが格納されている。
暗号装置１００及び復号装置２００の起動時には、バスのＢＩＯＳプログラム及び磁気ディスク装置のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステムが起動される。
【００５３】
上記プログラム群には、本実施の形態の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵにより読み出され実行される。
【００５４】
ファイル群９２４には、本実施の形態の説明において、「〜の生成」、「〜の暗号化」、「〜の復号」、「〜の抽出」、「〜の設定」、「〜のカウント」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵによりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭのメモリ、ＦＤＤのフレキシブルディスク、ＣＤＤのコンパクトディスク、磁気ディスク装置の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バスや信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００５５】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、バスに記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵにより読み出され、ＣＰＵにより実行される。すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【００５６】
このように、本実施の形態に示す暗号装置１００及び復号装置２００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００５７】
１００  暗号装置、１０１  鍵ストリーム生成部、１０２  鍵ストリーム記憶部、１０３  入力部、１０４  暗号処理部、１０５  鍵ストリーム位置情報生成部、１０６  送信部、１０７  制御部、２００  復号装置、２０１  鍵ストリーム生成部、２０２  鍵ストリーム記憶部、２０３  受信部、２０４  復号処理部、２０５  出力部、２０６  制御部、３００  伝送路、４００  暗号復号装置。
【図１】
2010268149.tif 000003
【図２】
2010268149.tif 000004
【図３】
2010268149.tif 000005
【図４】
2010268149.tif 000006
【図５】
2010268149.tif 000007
【図６】
2010268149.tif 000008
【図７】
2010268149.tif 000009
【図８】
2010268149.tif 000010
【図９】
2010268149.tif 000011
【図１０】
2010268149.tif 000012
【図１１】
2010268149.tif 000013
【図１２】
2010268149.tif 000014