説明

復号装置

【課題】暗号文パケットの到着順序が入れ替わっても遅延なく暗号文パケットを復号することができる復号装置を実現する。
【解決手段】乱数バッファ320に複数の乱数列を保持するとともに、受信部322が暗号文パケット332を受信し、受信した暗号文パケットの復号に用いるために乱数バッファから乱数列を読み出した場合には、乱数生成部316が新たに乱数列を生成して乱数バッファ320に補充することによって暗号文パケットの復号に使用すると予想される複数の乱数列を常に保持することができ、暗号文パケットの到着順序が入れ替わっても遅延なく暗号文パケットを復号することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化された暗号文データを復号して平文データを抽出する復号装置に関する。
【背景技術】
【0002】
共通鍵を用いた暗号化方式は、一定のブロック単位で暗号化するブロック暗号と、ビット単位のストリーム暗号に大別される。
これらの暗号化方式に対して、ネットワーク上のパケットをルータ等の中継装置で暗号化する方式としてはブロック暗号を利用することが多く、例えばブロック暗号を用いたIPsec(IP security)で高速にパケットを暗号化する方式として特許文献1(特開2004−180234号公報)に記載の技術がある。
【0003】
他方、ストリーム暗号は共通鍵やIV(Initialization Vector)の設定等の初期化を一度実施した後は高いスループットで乱数を生成できる、ブロックサイズを一致させるためのパディングが不要なため伝送効率が高いといった利点があり、ネットワークの中継装置に用いる場合もある。
以下、一般的なストリーム暗号と、ネットワーク上のパケットをストリーム暗号で暗号化する中継装置を説明する。
【0004】
図6は、一般的なストリーム暗号の構造を示すものである。
【0005】
最初に、構成を説明する。
101は、乱数生成部である。乱数生成部101は、中間鍵111、更新関数112、出力関数113で構成される。
102は、平文データである。
103は、暗号文データである。
104は、共通鍵とIVである。
105は、クロックである。
106は、乱数列である。乱数列106は、出力関数113から出力される乱数性の高いビット列である。
107はXOR(eXclusive OR)部である。XOR部107は、乱数列と平文データの排他的論理和を行うことで暗号文データを生成する。
【0006】
なお、図6は平文データを暗号化する際の構成を表しているが、暗号文データを復号する際も構成は同一で、図6中の平文データ102と暗号文データ103の位置を入れ替えた構成となる。
【0007】
次に、動作を説明する。
まず共通鍵とIV104、及び中間鍵111に適切な初期値を設定する。
次に、更新関数112は、共通鍵とIV104、中間鍵111を入力として、クロック105が与えられる都度、新たな中間鍵111を出力として生成し、それまでの中間鍵111を更新していく。
出力関数113は、中間鍵111の一部を乱数列106として出力する。
XOR部107は、乱数列106と平文データ102の排他的論理和を行い暗号文データ103として出力する。
このようにクロック105が与えられる都度、更新関数112で中間鍵111を更新しながら乱数列106を生成し、それと平文データ102の排他的論理和をとることで暗号文パケット103を出力する。
【0008】
ストリーム暗号は、一度出力した乱数を再度出力するためには再度中間鍵とIVを与えて所定の回数のクロックを与える必要がある。
当該の乱数を再出力するために与えるクロックの回数は一連の乱数列から当該の乱数を取り出した位置によって増減し、乱数列の生成を続けて後方に進むほど再度出力するのに時間が必要となる。
【0009】
またストリーム暗号は、一連の乱数列を順番に出力していくため一部の乱数を飛ばしてその先の乱数を生成するような動作は困難である。
このような場合は、まず飛ばしたい部分の乱数を生成し、次に所望の乱数を生成する。飛ばした部分の乱数を後に使用する場合は、これを保管しておく必要がある。
【0010】
図7は、ストリーム暗号で暗号化されたパケットを中継する一般的なストリーム暗号パケット中継装置を示すものである。
【0011】
最初に、構成を説明する。
201は、パケットを暗号化する中継装置である(以下、単に暗号装置ともいう)。
211は、パケットを復号する中継装置である(以下、単に復号装置ともいう)。
202と212は、それぞれ暗号装置と復号装置の受信部である。
203と213は、それぞれ暗号装置と復号装置のXOR部である。
204と214は、それぞれ暗号装置と復号装置の送信部である。
205と215は、それぞれ暗号装置と復号装置のクロック生成部である。
206と216は、それぞれ暗号装置と復号装置の乱数生成部である。乱数生成部
206、216の構造と動作は図6の乱数生成部101で説明した通りである。
207と217は、それぞれ暗号装置と復号装置の乱数列である。
208と218は、それぞれ暗号装置と復号装置が使用する共通鍵とIVである。
219は、復号装置の順序制御部である。
220は、復号装置の乱数バッファである。
231は、平文パケットである。
232は、暗号文パケットである。
233は、暗号文パケット232を転送するネットワークである。
【0012】
次に、暗号装置201と復号装置211の動作を説明する。
【0013】
まず、暗号装置201と復号装置211は暗号化されたパケットで通信を行なう前に両装置の間で共通鍵とIV208及び218を共有しておく。
なお、両装置が互いに正しく暗号化と復号を行なうために前提となる動作として、暗号装置201と復号装置211は、ここで共有した単一の共通鍵と単一のIVをもとにして生成される一連の乱数列から、受信したパケットの暗号化及び復号に必要な量の乱数を順番に使用していく。
従って、暗号装置201と復号装置211の両装置において、暗号化するパケットの順番と復号するパケットの順番が一致している必要がある。
【0014】
次に、暗号装置201の動作を説明する。
はじめに、受信部202は、平文パケット231を受信するとクロック生成部205にパケット一個分の乱数列の生成を要求するとともに平文パケット231をXOR部203に転送する。
次に、クロック生成部205は、パケット一個分のクロックを生成して乱数生成部206に出力する。
次に、乱数生成部206は、乱数列207を出力しXOR部203に転送する。
次に、XOR部203は、乱数列207と平文パケット231の排他的論理和をとり暗号文パケット232を生成し送信部204に転送する。
次に、送信部204は、暗号文パケット232のヘッダ部分に、パケット毎の転送順序番号(以下、転送番号ともいう)を付与してネットワーク233に送信する。
【0015】
次に、復号装置211の動作を説明する。
はじめに、受信部212は、暗号文パケット232を受信するとパケット毎の転送順序を確認する。
ここでパケットを順序通り受信した場合と、順序が入れ替わって受信した場合の2通りがある。
【0016】
第一に、パケットを順序通り受信した場合の復号装置211の動作を説明する。
はじめに、受信部212は、パケットを順序通り受信したことを順序制御部219に通知する。加えて受信部212は、クロック生成部215にパケット一個分の乱数列の生成を要求するとともに暗号文パケット232をXOR部213に転送する。
次に、クロック生成部215は、パケット一個分のクロックを生成して乱数生成部216に出力する。
次に、乱数生成部216は、乱数列217を出力し順序制御部219に転送する。
次に、順序制御部219は、受信部212からパケットを順序通り受信した通知を受けているため、乱数列217をそのままXOR部213に転送する。
次に、XOR部213は、乱数列217と暗号文パケット232の排他的論理和をとり平文パケット231を生成し送信部214に転送する。
次に、送信部214は、平文パケット231を装置外に送信する。この際、ヘッダ部分に付与されたパケット毎の転送順序番号は削除して元に戻しておく。
【0017】
第二に、パケットの順序が入れ替わって受信した場合の復号装置211の動作を説明する。
なお、この場合の動作は、ネットワーク233にて転送経路の切り替えや中継機器のバッファの枯渇等の理由で、パケットの転送順序が入れ替わったり、パケットが消失した場合を想定している。
ここで、あるパケットが他のパケットを追い越して受信した場合と、追い越されたパケットを後になって受信した場合の2通りがある。
【0018】
第一に、パケットを追い越して受信した場合の復号装置211の動作を説明する。
はじめに、受信部212は、パケットを追い越して受信したことを順序制御部219に通知する。加えて受信部212は、クロック生成部215に、受信順序が入れ替わって追い抜かされたパケットの個数分の乱数列と、受信したパケット一個分の乱数列の生成を要求するとともに、暗号文パケット232をXOR部213に転送する。
次に、クロック生成部215は、受信順序が入れ替わって追い抜かされたパケットの個数分のクロックとパケット一個分のクロックを生成して乱数生成部216に出力する。
次に、乱数生成部216は、乱数列217を出力し順序制御部219に転送する。ここではパケットの転送順序の追い越しが発生しているため、まず追い抜かれたパケットの復号に必要な乱数列217を生成し、次に当該のパケットの復号に必要な乱数列217を生成する。
次に、順序制御部219は、受信部212からパケットを追い越して受信した通知を受けているため、まず追い抜かれたパケットの復号に必要な乱数列217を乱数バッファ220に格納し、続いて当該のパケットの復号に必要な乱数列217をXOR部213に転送する。
次に、XOR部213は、当該のパケットの復号に必要な乱数列217と暗号文パケット232の排他的論理和をとり平文パケット231を生成し送信部214に転送する。
次に、送信部214は、平文パケット231を装置外に送信する。この際、ヘッダ部分に付与されたパケット毎の転送順序番号は削除して元に戻しておく。
【0019】
第二に、追い越されたパケットを後になって受信した場合の復号装置211の動作を説明する。
はじめに、受信部212は、追い越されたパケットを受信したことを順序制御部219に通知する。加えて受信部212は、暗号文パケット232をXOR部213に転送する。なお当該のパケットの復号に必要な乱数列217は乱数バッファ220に既に格納されているため、受信部212はクロック生成部215に乱数列の生成を要求しない。
次に、順序制御部219は、受信部212から追い越されたパケットを受信した通知を受けているため、当該のパケットの復号に必要な乱数列217を乱数バッファ220から読み出してXOR部213に転送する。
次に、XOR部213は、当該のパケットの復号に必要な乱数列217と暗号文パケット232の排他的論理和をとり平文パケット231を生成し送信部214に転送する。
次に、送信部214は、平文パケット231を装置外に送信する。この際、ヘッダ部分に付与されたパケット毎の転送順序番号は削除して元に戻しておく。
【特許文献1】特開2004−180234号公報
【発明の開示】
【発明が解決しようとする課題】
【0020】
ネットワーク上に配置された中継装置間をストリーム暗号によって暗号化されたパケットで通信する際に、暗号装置がパケットを送信する順序と、復号装置がパケットを受信する順序が入れ替わり、復号装置においてあるパケットが他のパケットを追い越して受信すると、復号装置は受信したパケットの復号に必要な乱数列の生成に加えて、追い抜かされたパケットの復号に必要な乱数列も生成する必要がある。
このように追い越しが発生した場合、追い越しが発生しない通常の状態に比較して遅延が著しく増加して中継性能が落ち込むという課題がある。
【0021】
この発明は上記のような課題を解決することを主な目的の一つとしており、暗号文データの到着順序が入れ替わっても復号装置において遅延なく暗号文データを復号することを主な目的とする。
【課題を解決するための手段】
【0022】
本発明に係る復号装置は、
所定の乱数列生成アルゴリズムに従って乱数列を順序付けて生成し、データ順序が定められている平文データに対して順序が一致する乱数列を用いて平文データを暗号化する暗号装置から、平文データが暗号化された暗号文データを受信する復号装置であって、
前記暗号装置が用いる乱数列生成アルゴリズムと同じ乱数列生成アルゴリズムに従って乱数列を順序付けて生成する乱数生成部と、
前記乱数生成部により生成された複数の乱数列をその順序と対応付けて記憶する乱数記憶部と、
乱数列を用いて暗号文データを復号して平文データを抽出する復号部と、
前記暗号装置から送信された暗号文データを受信し、受信した暗号文データのデータ順序に一致する順序の乱数列を前記乱数記憶部から読み出し、読み出した乱数列と前記暗号文データとを前記復号部に出力するとともに、前記乱数生成部に対して新たな乱数列の生成を要求する受信部とを有し、
前記乱数生成部は、
前記受信部から新たな乱数列の生成が要求された場合に、前記暗号装置が用いる乱数列生成アルゴリズムと同じ乱数列生成アルゴリズムに従って、前記乱数記憶部における最後尾の順序の後の順序に対応する乱数列を生成し、
前記乱数記憶部は、
前記受信部が前記暗号文データに対して読み出した乱数列に代えて、前記乱数生成部により新たに生成された乱数列を記憶することを特徴とする。
【発明の効果】
【0023】
本発明によれば、複数の乱数列を保持するとともに、受信した暗号文データの復号に用いるために乱数列を読み出した場合には、新たに乱数列を生成して補充することによって暗号文データの復号に使用すると予想される複数の乱数列を常に保持することができ、暗号文データの到着順序が入れ替わっても遅延なく暗号文データを復号することができる。
【発明を実施するための最良の形態】
【0024】
実施の形態1.
図1は、本実施の形態に係る復号装置311の構成例を示す。
本実施の形態に係る復号装置311は、ストリーム暗号で暗号化されたパケットを中継するストリーム暗号パケット中継装置において用いられる。
なお、本復号装置311と対になる暗号装置の構成と動作は、図6及び図7を参照して背景技術において説明した通りである。
つまり、本実施の形態に係る復号装置311と対になる暗号装置は、所定の乱数列生成アルゴリズムに従って乱数列を順序付けて生成し、データ順序が定められている平文パケット(平文データ)に対して順序が一致する乱数列を用いて平文パケットを暗号化する暗号装置である。
そして、本実施の形態に係る復号装置311は、当該暗号装置から、平文パケットが暗号化された暗号文パケット(暗号文データ)を受信し、暗号文パケットのデータ順序に一致する順序の乱数列を用いて復号処理を行う。
【0025】
最初に、本実施の形態における復号装置311の構成を説明する。
312は、復号装置311の受信部である。
313は、復号装置311のXOR部である。
314は、復号装置311の送信部である。
315は、復号装置311のクロック生成部である。
316は、復号装置311の乱数生成部である。乱数生成部316の構造と動作は図6の乱数生成部101で説明した通りである。
【0026】
317は、復号装置311の乱数列である。
318は、復号装置311の共通鍵とIVである。
320は、復号装置311の乱数バッファである。乱数バッファ320はパケットを復号するための乱数列を格納するためのバッファであり、N(N≧2)個のパケットの乱数列を格納できるものとする。
321は、復号装置311の転送番号管理バッファである。転送番号管理バッファ321はパケットの転送番号を格納するためのバッファであり、N個のパケットの転送番号を格納できるものとする。
322は、復号装置311の最大転送番号レジスタである。最大転送番号レジスタ322はその内容が転送番号管理バッファ321に格納されたN個の転送番号の中で最も大きい番号(最後尾の順序の番号)を示すレジスタである。なお、最大転送番号レジスタで管理されているN個の転送番号の中で最も大きい番号をimaxとも表記する。
331は、平文パケットである。
332は、暗号文パケットである。暗号文パケット332には、ヘッダ部分に転送番号が示されている。
【0027】
図1の構成において、乱数生成部316は、暗号装置が用いる乱数列生成アルゴリズムと同じ乱数列生成アルゴリズムに従って乱数列317を順序付けて生成する。つまり、乱数生成部316は、背景技術において説明したように、一つ前の乱数列の生成過程において生成された中間鍵を更新して次の中間鍵を生成し、生成した次の中間鍵の少なくとも一部を用いて次の乱数列を生成し、以降、中間鍵の更新と乱数列の生成を繰り返して、乱数列を順序付けて生成する。
乱数バッファ320は、乱数生成部316により生成された複数の乱数列317をその順序と対応付けて記憶する。乱数バッファ320は、乱数記憶部の例である。
受信部312は、暗号装置から送信された暗号文パケット332を受信し、受信した暗号文パケットの転送番号(データ順序)に一致する順序の乱数列を乱数バッファ320から読み出し、読み出した乱数列と暗号文パケット332とをXOR部313に出力するとともに、クロック生成部315を介して乱数生成部316に対して新たな乱数列の生成を要求する。
XOR部313は、受信部312から出力された乱数列を用いて暗号文パケット332を復号して平文パケット331を抽出する。XOR部313は、復号部の例である。
また、乱数生成部316は、受信部312から新たな乱数列の生成が要求された場合に、暗号装置が用いる乱数列生成アルゴリズムと同じ乱数列生成アルゴリズムに従って、乱数バッファ320における最後尾の順序の後の順序に対応する乱数列を生成し、乱数バッファ320は、受信部312が暗号文パケット332に対して読み出した乱数列に代えて、乱数生成部316により新たに生成された乱数列を記憶する。
【0028】
図2は、本実施の形態に係る復号装置の、乱数バッファ320と転送番号管理バッファ321の関係を示すものである。
転送番号管理バッファ321では、パケットの転送番号を記憶しており、乱数バッファでは転送番号管理バッファ321における転送番号の順序に対応させて、それぞれの転送番号のパケットの復号に用いられる乱数列が記憶されている。
このように、乱数バッファ320では、複数の乱数列を、パケットの転送番号(データ順序)に対応させて、順序付けて記憶している。
【0029】
次に、本実施の形態における復号装置311の動作を説明する。
【0030】
まず、復号装置311は暗号化されたパケットで通信を行う前に対となる暗号装置との間で共通鍵とIV318を共有しておく。
また、復号装置311が対となる暗号装置と互いに正しく暗号化と復号を行うために前提となる動作として、復号装置311は、ここで共有した単一の共通鍵と単一のIVをもとにして生成される一連の乱数列から、受信したパケットの復号に必要な量の乱数列を順番に使用していく。
【0031】
さらに、パケットの通信を行う前の準備として、復号装置311は最初に受信するN個分のパケットの乱数列を事前に生成し乱数バッファ320に格納しておく。
そして、復号装置311は、転送番号管理バッファ321に、乱数を準備したN個のパケットのそれぞれの転送番号を格納しておく。
【0032】
以上の手順が完了すると、復号装置311は、暗号装置から送信された暗号文パケット332を受信することができる。
以下、復号装置311が暗号文パケット332を受信し、暗号文パケット332の復号を行う際の処理例を図3及び図4を参照して説明する。
【0033】
まず、復号装置311が暗号文パケット332を受信する(S101)と、受信部312は受信したパケット毎の転送順序(ここではiとする)を転送番号管理バッファ321に存在するか否かを確認する(S102)。
ここで、確認の結果、(1)受信したパケットの転送番号と一致する転送番号が転送番号管理バッファ321に存在する場合と、(2)受信したパケットの転送番号と一致する転送番号が存在せずかつ受信したパケットの転送番号が転送番号管理バッファ321に格納されたN個の転送番号のいずれかよりも小さい場合(受信したバケットの転送番号がN個の転送番号のうちの先頭の順序のものよりも前の順序である場合)と、(3)受信したパケットの転送番号と一致する転送番号が存在せずかつ受信したパケットの転送番号が当該のバッファに格納されたN個の転送番号のいずれかよりも大きい場合(受信したバケットの転送番号がN個の転送番号のうちの最後尾の順序のものよりも後の順序である場合)の、3通りがある。
【0034】
第一に、受信したパケットの転送番号に一致する転送番号が転送番号管理バッファ321に存在する場合(S102でYES)は、受信部312は、転送番号管理バッファ321のなかに転送番号がiからNを引いた数より小さいものがある場合(S103でYES)は、それを無効にする(ここではj個が無効化されたとする)(S104)。
なお、この場合の動作は、暗号装置が送信したパケットが何らかの理由でネットワーク上から消失したり、悪意を持った第三者が一度ネットワーク上に転送されたパケットを再送したりするような状況を想定している。復号装置311が一定時間を経過しても受信できなかったパケットの乱数列を無効にする動作である。
【0035】
例えば、図5(a)〜(c)に示す経緯で暗号文パケットが受信された場合は、図5(c)において転送番号11に対応する乱数列は無効化される。
具体的には、N=5の場合に、転送番号11〜15に対応する乱数列が乱数バッファ320に格納されているときに転送番号12(i=12)のパケットを受信した場合(図5(a))は、(i−N)は、12−5=7となり、すべての転送番号が(i−N)よりも値が大きいので、無効化される乱数列はない。
そして、次の番号である転送番号16に対応する乱数列が生成され、転送番号12の乱数列が格納されていた位置に転送番号16に対する乱数列が格納される。そして、この状態で、転送番号13(i=13)のパケットを受信した場合(図5(b))も、(i−N)は、13−5=8となり、すべての転送番号が(i−N)よりも値が大きいので、無効化される乱数列はない。
そして、次の番号である転送番号17に対応する乱数列が生成され、転送番号13の乱数列が格納されていた位置に転送番号17に対する乱数列が格納される。そして、この状態で、転送番号17(i=17)のパケットを受信した場合(図5(c))は、(i−N)は、17−5=12となり、転送番号11が(i−N)の値よりも小さいので、転送番号11に対する乱数列が無効化される。
【0036】
一方、転送番号が(i−N)よりも小さいものがない場合(S103でNO)は、受信部312は、当該のパケットの復号に必要な乱数列をパケットの転送番号をもとにして乱数バッファ320から読みだしXOR部313に転送する(S105)。
さらに、受信部312は、クロック生成部315にパケット一個分の乱数列の生成を要求する(S106)とともに暗号文パケット332をXOR部313に転送する(S107)。
ここで生成を要求する乱数列は、今後受信することとなるパケット一個分の復号に必要な乱数列であるが、もしS104の動作において無効化した転送番号がある場合は、さらにパケットj個分の乱数列も要求する。
【0037】
次に、受信部312は、転送番号管理バッファ321のなかで転送番号がiの要素(領域)を、最大転送番号レジスタ322が示す値(imax)にさらに1を加えた値に変更する(S108)。
もしS104の動作において無効化した転送番号がある場合は、無効化したj個の要素を、最大転送番号レジスタ322が示す値(imax)にそれぞれ2からj+1ずつ加えた値に変更する。
【0038】
次に、受信部312は、最大転送番号レジスタ322の値(imax)に1を加える(S109)。
もしS104の動作において無効化した転送番号がある場合は、さらにjを加える。
【0039】
次に、XOR部313は、当該のパケットの復号に必要な乱数列と暗号文パケット332の排他的論理和をとり平文パケット331を生成し送信部314に転送する(S110)。
次に、送信部314は、平文パケット331を装置外に送信する。この際、ヘッダ部分に付与されたパケット毎の転送順序番号は削除して元に戻しておく。
【0040】
次に、クロック生成部315は、パケット一個分のクロックを生成して乱数生成部316に出力する。なお、もしS104の動作において無効化した転送番号がある場合は、これにパケットj個分のクロックを加えて生成する。
【0041】
次に、乱数生成部316は、乱数列317を生成し(S111)、受信部312に転送する。
【0042】
次に、受信部312は、乱数列317を乱数バッファ320に書き込む(S112)。
このときに乱数バッファ320のなかで乱数列317を書き込む場所は、これまでパケットの転送番号がiのパケットの乱数列が格納されていた場所である。
もしS104の動作において無効化した転送番号がある場合は乱数列317にはさらにパケットj個分の乱数列が含まれるが、乱数バッファ320のなかでこれらのパケットj個分の乱数列を書き込む場所は、転送番号管理バッファ321で新たに2からj+1の値を書き込んだ要素に対応する乱数バッファ内の位置で、受信部312はそれぞれの位置にj個の乱数列を生成した順に書き込む。
【0043】
第二に、受信したパケットの転送番号が転送番号管理バッファ321に格納されたN個の転送番号のいずれかよりも小さい場合、すなわちS102でNOであり、S113で小の場合は、受信部312は受信したパケットを復号せずに廃棄する(S114)。
なお、この場合の動作は、当該のパケットが暗号装置から送信されてから必要以上の時間を経過した後に復号装置が受信したもので通常起こりうる状況ではない。
悪意を持った第三者がパケットを再送したりすることを考慮して当該のパケットを廃棄する動作である。
【0044】
第三に、受信したパケットの転送番号が転送番号管理バッファ321に格納されたN個の転送番号のいずれかよりも大きい場合、すなわちS102でNOであり、S113で大の場合は、受信部312は、受信したパケットを復号するための乱数列を含み、かつ転送番号が連続するパケットN個分の乱数列を新たに生成し、乱数バッファ320の内容を入れ替える。
なお、この場合の動作は、ケーブルの断線等で暗号装置から送信された暗号文パケットが一定の期間ネットワーク上で廃棄されていたことを考慮した動作である。
以下、詳細に動作を説明する。
【0045】
まず、受信部312は、クロック生成部315にパケットN個分の乱数列の生成を要求する(S115)。
ここで、生成を要求する乱数列は、受信した当該のパケットを復号するための乱数列を含み、かつ転送番号が連続するパケットN個分の乱数列である。
なお、転送番号が連続するN個のパケットのそれぞれの転送番号をM、M+1、・・・、M+N−1とする。
受信したパケットの転送番号iは、このうちのどれかに一致することになる。
さらに受信部312は、転送番号管理バッファ321に、新たに乱数を準備するN個のパケットのそれぞれの転送番号M、M+1、・・・、M+N−1を格納する(S116)。つまり、転送番号管理バッファ321のN個の要素をM〜M+N−1の転送番号に対応させるように変更する。
【0046】
このときの乱数生成部316は、それまでの自身の内部状態は、転送番号が最大転送番号レジスタ322が示す値となるパケットを復号するための乱数列を生成する状態を保持している。
これに対してクロック生成部315は、乱数生成部316にクロックを継続して与えて転送番号がMのパケットを復号するための乱数列を生成する状態に遷移させる。
なお受信部312は、この間に生成される乱数列は破棄する。
次に、クロック生成部315は、パケットN個分のクロックを生成して乱数生成部316に出力する。
【0047】
次に、乱数生成部316は、乱数列317を生成し(S117)、受信部312に転送する。
【0048】
次に、受信部312は、乱数列317を乱数バッファ320に書き込む(S118)。
このときに乱数バッファ320のなかでパケットN個分の乱数に相当する乱数列317を書き込む場所は、転送番号管理バッファ321で新たにMからM+(N−1)の値を書き込んだ要素に対応する乱数バッファ内の位置で、乱数生成部はそれぞれの位置にN個の乱数列を生成した順に書き込む。
次に、受信部312は、最大転送番号レジスタ322の内容をM+(N−1)に変更する(S119)。
【0049】
次に、受信部312は暗号文パケット332をXOR部313に転送する。
また、受信部312は、当該のパケットの復号に必要な乱数列317をパケットの転送番号をもとにして乱数バッファ320から読みだしXOR部313に転送する(S105)。
【0050】
次に、受信部312は、クロック生成部315にパケット一個分の乱数列の生成を要求する(S106)。
ここで生成を要求する乱数列は、今後受信することとなる転送番号がM+Nのパケットの復号に必要な乱数列である。
さらに受信部312は、転送番号管理バッファ321のうち転送番号がiの要素を、最大転送番号レジスタ322が示す値(imax)にさらに1を加えた値に変更する(S108)。
【0051】
次に、XOR部313は、当該のパケットの復号に必要な乱数列と暗号文パケット332の排他的論理和をとり平文パケット331を生成し送信部314に転送する(S110)。
次に、送信部314は、平文パケット331を装置外に送信する。この際、ヘッダ部分に付与されたパケット毎の転送順序番号は削除して元に戻しておく。
【0052】
次に、クロック生成部315は、パケット一個分のクロックを生成して乱数生成部316に出力する。
【0053】
次に、乱数生成部316は、乱数列317を生成し(S111)、受信部312に転送する。
【0054】
次に、受信部312は、乱数列317を乱数バッファ320に書き込む(S112)。
このときに乱数バッファ320のなかで乱数列317を書き込む場所は、これまでパケットの転送番号がiのパケットの乱数列が格納されていた場所である。
【0055】
復号装置311がパケットの復号する際の遅延を少なくするには、なるべくS102でYESとなる第一のケースで動作できるようにする必要がある。
このため、乱数バッファ320が格納する乱数列の量には、暗号装置から復号装置311にパケットが到着するまでの遅延や、両装置の間に存在するルータ等の中継機器等の影響を考慮して、それぞれのネットワークに適切となるように選択する。
【0056】
以上のように、本実施の形態によれば、復号装置の、乱数バッファを複数のパケットの乱数列を格納できるように、転送番号管理バッファと最大転送番号を当該のパケットが既に受信済か否かを把握できるように、またそれを把握したことによって受信部が乱数バッファを更新できるように構成することで、復号装置でパケットの到着順序が入れ替わっても、当該パケットを復号するための乱数列が乱数バッファに用意されている範囲であれば、遅延を増すことなくパケットを復号して中継することができる。
【0057】
以上、本実施の形態では、常に乱数生成部から生成された一定量の乱数列を所定のバッファに準備しておき、パケットを受信してバッファにある乱数列を復号で使用したら、乱数生成部で新たに乱数列を生成してバッファに補充することによって、パケットの到着順序が入れ替わっても遅延を増すことなくストリーム暗号で暗号化されたパケットを復号することができる復号装置について説明した。
【0058】
なお、以上の説明では、復号装置としてIPsec等における中継装置を例示しつつ説明を行ったが、復号装置はパケットの最終的な受信装置であってもよい。
【0059】
最後に、本実施の形態に示した復号装置311のハードウェア構成例について説明する。
図8は、本実施の形態に示す復号装置311のハードウェア資源の一例を示す図である。
なお、図8の構成は、あくまでも復号装置311のハードウェア構成の一例を示すものであり、復号装置311のハードウェア構成は図8に記載の構成に限らず、他の構成であってもよい。
【0060】
図8において、復号装置311は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
【0061】
通信ボード915は、ネットワークに接続されている。例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続されている。
【0062】
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
【0063】
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
【0064】
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
復号装置311の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
【0065】
上記プログラム群923には、本実施の形態の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
【0066】
ファイル群924には、本実施の形態の説明において、「〜の判断」、「〜の計算」、「〜の演算」、「〜の比較」、「〜の生成」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0067】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【0068】
このように、本実施の形態に示す復号装置311は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【0069】
【図1】実施の形態1に係る復号装置の構成例を示す図。
【図2】実施の形態1に係る復号装置の乱数バッファと転送番号管理バッファとの関係を説明する図。
【図3】実施の形態1に係る復号装置の動作例を示すフローチャート図。
【図4】実施の形態1に係る復号装置の動作例を示すフローチャート図。
【図5】実施の形態1に係る復号装置において乱数列が無効化される例を説明する図。
【図6】一般的なストリーム暗号の暗号装置の構成例を示す図。
【図7】一般的なストリーム暗号パケット中継装置を示す図。
【図8】実施の形態1に係る復号装置のハードウェア構成例を示す図。
【符号の説明】
【0070】
311 復号装置、312 受信部、313 XOR部、314 送信部、315 クロック生成部、316 乱数生成部、317 乱数列、318 共通鍵・IV、320 乱数バッファ、321 転送番号管理バッファ、322 最大転送番号レジスタ、331 平文パケット、332 暗号文パケット。

【特許請求の範囲】
【請求項1】
所定の乱数列生成アルゴリズムに従って乱数列を順序付けて生成し、データ順序が定められている平文データに対して順序が一致する乱数列を用いて平文データを暗号化する暗号装置から、平文データが暗号化された暗号文データを受信する復号装置であって、
前記暗号装置が用いる乱数列生成アルゴリズムと同じ乱数列生成アルゴリズムに従って乱数列を順序付けて生成する乱数生成部と、
前記乱数生成部により生成された複数の乱数列をその順序と対応付けて記憶する乱数記憶部と、
乱数列を用いて暗号文データを復号して平文データを抽出する復号部と、
前記暗号装置から送信された暗号文データを受信し、受信した暗号文データのデータ順序に一致する順序の乱数列を前記乱数記憶部から読み出し、読み出した乱数列と前記暗号文データとを前記復号部に出力するとともに、前記乱数生成部に対して新たな乱数列の生成を要求する受信部とを有し、
前記乱数生成部は、
前記受信部から新たな乱数列の生成が要求された場合に、前記暗号装置が用いる乱数列生成アルゴリズムと同じ乱数列生成アルゴリズムに従って、前記乱数記憶部における最後尾の順序の後の順序に対応する乱数列を生成し、
前記乱数記憶部は、
前記受信部が前記暗号文データに対して読み出した乱数列に代えて、前記乱数生成部により新たに生成された乱数列を記憶することを特徴とする復号装置。
【請求項2】
前記乱数記憶部は、
N(N≧2)個の乱数列を記憶しており、
前記受信部は、
受信した暗号文データのデータ順序に一致する順序の乱数列が前記乱数記憶部に記憶されていない場合に、受信した暗号文データのデータ順序が前記乱数記憶部における先頭の順序よりも前の順序であるか最後尾の順序よりも後の順序であるかを判断し、受信した暗号文のデータ順序が前記乱数記憶部における最後尾の順序よりも後の順序の場合は、前記暗号文データのデータ順序に一致する順序の乱数列を含むN個の乱数列を生成するよう前記乱数生成部に対して要求し、
前記乱数生成部は、
前記受信部からN個の乱数列の生成を要求された場合に、前記暗号装置が用いる乱数列生成アルゴリズムと同じ乱数列生成アルゴリズムに従って、前記受信部が受信した暗号文データのデータ順序に一致する順序の乱数列を含むN個の乱数列を生成し、
前記乱数記憶部は、
記憶しているN個の乱数列に代えて、前記乱数生成部により生成された新たなN個の乱数列を記憶することを特徴とする請求項1に記載の復号装置。
【請求項3】
前記受信部は、
前記乱数生成部によりN個の乱数列が新たに生成され、前記乱数記憶部により新たなN個の乱数列が記憶された後に、受信した暗号文データのデータ順序に一致する順序の乱数列を前記乱数記憶部から読み出すことを特徴とする請求項2に記載の復号装置。
【請求項4】
前記受信部は、
受信した暗号文のデータ順序が前記乱数記憶部における先頭の順序よりも前の順序の場合は、受信した暗号文データを破棄することを特徴とする請求項2又は3に記載の復号装置。
【請求項5】
前記乱数記憶部は、
N(N≧2)個の乱数列を記憶しており、
前記受信部は、
暗号文データを受信した際に、受信した暗号文データのデータ順序から値Nを減じた値よりも前の順序の乱数列が前記乱数記憶部に記憶されているか否かを判定し、当該乱数列が前記乱数記憶部に記憶されている場合に、当該乱数列を無効化し、
前記乱数生成部に対して、受信した暗号文データに対して読み出した乱数列の代わりとなる新たな乱数列の生成を要求するとともに、無効化した乱数列の代わりとなる新たな乱数列の生成を要求することを特徴とする請求項1〜4のいずれかに記載の復号装置。
【請求項6】
前記乱数生成部は、
一つ前の順序の乱数列の生成過程において生成された中間鍵を更新して次の中間鍵を生成し、生成した次の中間鍵の少なくとも一部を用いて次の順序の乱数列を生成し、以降、中間鍵の更新と乱数列の生成を繰り返して、乱数列を順序付けて生成することを特徴とする請求項1〜5のいずれかに記載の復号装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−278306(P2009−278306A)
【公開日】平成21年11月26日(2009.11.26)
【国際特許分類】
【出願番号】特願2008−126727(P2008−126727)
【出願日】平成20年5月14日(2008.5.14)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】