(57)【要約】【課題】ストリーム暗号方式において、並列処理により暗号化処理の高速化を図り、また、復号側にメモリを保持しておく等の対策を行わなくても、通信路中で生じたパケットの順序変化又はパケットロスに対応できるようにする。【解決手段】複数の鍵系列生成部１４１〜１４Ｎが、平文データ１０１が入力される前に、一つの秘密鍵と複数のＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて複数の中間鍵を生成し、中間鍵保存メモリ１２が、生成された複数の中間鍵を保存し、更に、複数の鍵系列生成部１４１〜１４Ｎは、平文データ１０１が入力された際に、中間鍵保存メモリ１２に保存されている複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成し、ＸＯＲ部１５は、複数の鍵系列生成部１４１〜１４Ｎにより生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、平文データの暗号化を行う。【選択図】図１
2008060750.tif 000002
【特許請求の範囲】
【請求項１】
中間鍵から生成される鍵系列を用いて、入力された平文データの暗号化を行う暗号装置であって、
平文データが入力される前に、秘密鍵とＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて中間鍵を生成する中間鍵生成部と、
前記中間鍵生成部により生成された中間鍵を保存する中間鍵保存部と、
平文データが入力された際に、前記中間鍵保存部に保存されている中間鍵を用いて鍵系列を生成する鍵系列生成部とを有することを特徴とする暗号装置。
【請求項２】
中間鍵から生成される鍵系列を用いて、入力された平文データの暗号化を行う暗号装置であって、
一つの秘密鍵から派生する複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成する複数の鍵系列生成部と、
前記複数の鍵系列生成部により生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、順次入力された複数の平文データの暗号化を行う暗号化処理部とを有することを特徴とする暗号装置。
【請求項３】
前記暗号化処理部は、
入力した複数の鍵系列のそれぞれを用いて、順次入力された複数の平文データのそれぞれの暗号化処理を並列して行うことを特徴とする請求項２に記載の暗号装置。
【請求項４】
前記暗号装置は、更に、
平文データが入力される前に、一つの秘密鍵と複数のＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて複数の中間鍵を生成する中間鍵生成部と、
前記中間鍵生成部により生成された複数の中間鍵を保存する中間鍵保存部とを有し、
前記複数の鍵系列生成部は、
平文データが入力された際に、前記中間鍵保存部に保存されている複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成することを特徴とする請求項２に記載の暗号装置。
【請求項５】
前記複数の鍵系列生成部は、
それぞれ、中間鍵を用いて鍵系列を生成するとともに新たな中間鍵を生成し、
前記中間鍵保存部は、
前記複数の鍵系列生成部により生成された複数の新たな中間鍵を、それぞれの生成のもとになった中間鍵に上書きして保存することを特徴とする請求項４に記載の暗号装置。
【請求項６】
前記複数の鍵系列生成部は、
新たに平文データが入力された際に、前記中間鍵保存部に保存されている複数の新たな中間鍵のそれぞれを入力し、入力した新たな中間鍵からそれぞれ並列に鍵系列を生成することを特徴とする請求項５に記載の暗号装置。
【請求項７】
前記中間鍵生成部は、
ＩＰＳｅｃ（ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）  Ｓｅｃｕｒｉｔｙ  Ｐｒｏｔｏｃｏｌ）におけるシーケンス番号のチェックウィンドウ値と同数の複数の中間鍵を生成することを特徴とする請求項２に記載の暗号装置。
【請求項８】
前記鍵系列生成部は、
ＩＰＳｅｃ（ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）  Ｓｅｃｕｒｉｔｙ  Ｐｒｏｔｏｃｏｌ）におけるシーケンス番号のチェックウィンドウ値と同数の複数の新たな中間鍵を生成することを特徴とする請求項５に記載の暗号装置。
【請求項９】
前記暗号装置は、
前記暗号化処理部により暗号化された暗号文データと、当該暗号文データの暗号化処理に用いられた鍵系列の生成に用いられた中間鍵の識別情報とを、復号装置に対して出力することを特徴とする請求項２に記載の暗号装置。
【請求項１０】
中間鍵から生成される鍵系列を用いて、入力された暗号文データの復号化を行う復号装置であって、
暗号文データが入力される前に、秘密鍵とＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて中間鍵を生成する中間鍵生成部と、
前記中間鍵生成部により生成された中間鍵を保存する中間鍵保存部と、
暗号文データが入力された際に、前記中間鍵保存部に保存されている中間鍵を用いて鍵系列を生成する鍵系列生成部とを有することを特徴とする復号装置。
【請求項１１】
中間鍵から生成される鍵系列を用いて、入力された暗号文データの復号化を行う復号装置であって、
一つの秘密鍵から派生する複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成する複数の鍵系列生成部と、
前記複数の鍵系列生成部により生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、順次入力された複数の暗号文データの復号化を行う復号化処理部とを有することを特徴とする復号装置。
【請求項１２】
前記復号化処理部は、
入力した複数の鍵系列のそれぞれを用いて、順次入力された複数の暗号文データのそれぞれの復号化処理を並列して行うことを特徴とする請求項１１に記載の復号装置。
【請求項１３】
前記復号装置は、更に、
暗号文データが入力される前に、一つの秘密鍵と複数のＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて複数の中間鍵を生成する中間鍵生成部と、
前記中間鍵生成部により生成された複数の中間鍵を保存する中間鍵保存部とを有し、
前記複数の鍵系列生成部は、
暗号文データが入力された際に、前記中間鍵保存部に保存されている複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成することを特徴とする請求項１１に記載の復号装置。
【請求項１４】
前記複数の鍵系列生成部は、
それぞれ、中間鍵を用いて鍵系列を生成するとともに新たな中間鍵を生成し、
前記中間鍵保存部は、
前記複数の鍵系列生成部により生成された複数の新たな中間鍵を、それぞれの生成のもとになった中間鍵に上書きして保存することを特徴とする請求項１３に記載の復号装置。
【請求項１５】
前記複数の鍵系列生成部は、
新たに暗号文データが入力された際に、前記中間鍵保存部に保存されている複数の新たな中間鍵のそれぞれを入力し、入力した新たな中間鍵からそれぞれ並列に鍵系列を生成することを特徴とする請求項１４に記載の復号装置。
【請求項１６】
前記中間鍵生成部は、
ＩＰＳｅｃ（ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）  Ｓｅｃｕｒｉｔｙ  Ｐｒｏｔｏｃｏｌ）におけるシーケンス番号のチェックウィンドウ値と同数の複数の中間鍵を生成することを特徴とする請求項１１に記載の復号装置。
【請求項１７】
前記鍵系列生成部は、
ＩＰＳｅｃ（ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）  Ｓｅｃｕｒｉｔｙ  Ｐｒｏｔｏｃｏｌ）におけるシーケンス番号のチェックウィンドウ値と同数の複数の新たな中間鍵を生成することを特徴とする請求項１４に記載の復号装置。
【請求項１８】
前記復号装置は、
暗号文データと、当該暗号文データの暗号化処理に用いられた鍵系列の生成に用いられた中間鍵の識別情報とを、暗号装置から入力し、
前記暗号装置から入力した中間鍵の識別情報に基づき、前記複数の鍵系列生成部による鍵系列生成の制御を行うことを特徴とする請求項１１に記載の復号装置。
【請求項１９】
中間鍵から生成される鍵系列を用いて、入力された平文データの暗号化を行う暗号方法であって、
平文データが入力される前に、秘密鍵とＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて中間鍵を生成する中間鍵生成ステップと、
前記中間鍵生成ステップにより生成された中間鍵を保存する中間鍵保存ステップと、
平文データが入力された際に、前記中間鍵保存ステップにより保存された中間鍵を用いて鍵系列を生成する鍵系列生成ステップとを有することを特徴とする暗号方法。
【請求項２０】
中間鍵から生成される鍵系列を用いて、入力された平文データの暗号化を行う暗号方法であって、
一つの秘密鍵から派生する複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成する複数の鍵系列生成ステップと、
前記複数の鍵系列生成ステップにより生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、順次入力された複数の平文データの暗号化を行う暗号化処理ステップとを有することを特徴とする暗号方法。
【請求項２１】
中間鍵から生成される鍵系列を用いて、入力された暗号文データの復号化を行う復号方法であって、
暗号文データが入力される前に、秘密鍵とＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて中間鍵を生成する中間鍵生成ステップと、
前記中間鍵生成ステップにより生成された中間鍵を保存する中間鍵保存ステップと、
暗号文データが入力された際に、前記中間鍵保存ステップにより保存された中間鍵を用いて鍵系列を生成する鍵系列生成ステップとを有することを特徴とする復号方法。
【請求項２２】
中間鍵から生成される鍵系列を用いて、入力された暗号文データの復号化を行う復号方法であって、
一つの秘密鍵から派生する複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成する複数の鍵系列生成ステップと、
前記複数の鍵系列生成ステップにより生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、順次入力された複数の暗号文データの復号化を行う復号化処理ステップとを有することを特徴とする復号方法。
【請求項２３】
中間鍵から生成される鍵系列を用いて、入力された平文データの暗号化を行うコンピュータに、
平文データが入力される前に、秘密鍵とＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて中間鍵を生成する中間鍵生成処理と、
前記中間鍵生成処理により生成された中間鍵を保存する中間鍵保存処理と、
平文データが入力された際に、前記中間鍵保存処理により保存された中間鍵を用いて鍵系列を生成する鍵系列生成処理とを実行させることを特徴とするプログラム。
【請求項２４】
中間鍵から生成される鍵系列を用いて、入力された平文データの暗号化を行うコンピュータに、
一つの秘密鍵から派生する複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成する複数の鍵系列生成処理と、
前記複数の鍵系列生成処理により生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、順次入力された複数の平文データの暗号化を行う暗号化処理とを実行させることを特徴とするプログラム。
【請求項２５】
中間鍵から生成される鍵系列を用いて、入力された暗号文データの復号化を行うコンピュータに、
暗号文データが入力される前に、秘密鍵とＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて中間鍵を生成する中間鍵生成処理と、
前記中間鍵生成処理により生成された中間鍵を保存する中間鍵保存処理と、
暗号文データが入力された際に、前記中間鍵保存処理により保存された中間鍵を用いて鍵系列を生成する鍵系列生成処理とを実行させることを特徴とするプログラム。
【請求項２６】
中間鍵から生成される鍵系列を用いて、入力された暗号文データの復号化を行うコンピュータに、
一つの秘密鍵から派生する複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成する複数の鍵系列生成処理と、
前記複数の鍵系列生成処理により生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、順次入力された複数の暗号文データの復号化を行う復号化処理とを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット通信の際にパケットを秘匿するための暗号装置及び復号装置、更に、これを実現するための暗号方法、復号方法及びプログラムに関する。
【背景技術】
【０００２】
パケットを秘匿する暗号処理方式としてはブロック暗号処理方式を利用することが多いが、ブロック暗号暗号処理方式のＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）モードの暗号処理を並列化するための方式として、特許文献１に記載の技術がある。
【０００３】
他方、大容量のデータ通信やリアルタイム性を重視する通信においては、ストリーム暗号処理方式を採用するケースが増えている。
【０００４】
図７は、ストリーム暗号処理方式を用いてパケットの暗号処理を行う暗号装置における暗号処理部を示すものである。
【０００５】
最初に構成について説明する。
４０１は、平文データである（以下、単に平文ともいう）。
４０２は、平文４０１を暗号化する秘密鍵とＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）の保存先アドレス等の鍵情報である。
４０３は、暗号処理後の暗号文データである（以下、単に暗号文ともいう）。
４１は、秘密鍵とＩＶを保存する秘密鍵・ＩＶ保存メモリである。
４２は、メモリアクセス管理部である。
４３は、鍵系列生成部である。
４４は、鍵系列と平文の排他的論理和を行うＸＯＲ（Ｅｘｃｌｕｓｉｖｅ  ＯＲ）部である。
ここで鍵系列とは、鍵系列生成部４３から出力される乱数性の高いビット列のことで、暗号化側では平文のビット列と排他的論理和を行うことで暗号文を生成し、復号側では暗号文のビット列と排他的論理和を行うことで平文を生成するためのものである。
【０００６】
次に、動作について説明する。
パケット通信前に、対向となる装置間で同じ秘密鍵とＩＶを共有し、それを秘密鍵・ＩＶ保存メモリ４１に保存する。
パケット通信時は、平文４０１を暗号化するにあたり、メモリアクセス管理部４２は、鍵情報４０２を受け取り、この情報を元に秘密鍵・ＩＶ保存メモリ４１から暗号化対象の平文４０１に対応する秘密鍵とＩＶを読み出し、これを鍵系列生成部４３に渡す。
秘密鍵とＩＶを受け取った鍵系列生成部４３は、平文４０１の暗号化に使用する鍵系列を生成し、これをＸＯＲ部４４に渡す。
ＸＯＲ部４４は、平文４０１と鍵系列の排他的論理和を行い、暗号文４０３を出力する。
【０００７】
尚、図７は、暗号化側装置における暗号処理部の構成を表しているが、復号側装置においても構成は同一で、図７中の平文４０１と暗号文４０３の位置を入れ替えた構成となる。
【０００８】
図８は、図７における鍵系列生成部４３の内部を示すものである。
最初に構成について説明する。
５１１は、鍵系列を生成するための秘密鍵とＩＶである。
５１２は、生成された鍵系列である。
５２は、入力データの乱数性を高めるための攪拌関数である。
５３は、中間鍵である。
ここで中間鍵について説明する。
攪拌関数５２は秘密鍵とＩＶ５１１を入力とし、処理を実行して得られるデータを再び攪拌関数５２の入力として処理を行う。以降これを繰り返すことで攪拌関数５２による処理一回ごとに得られる鍵系列の乱数性を高める。この攪拌関数５２による１回の処理をラウンド処理と呼び、ラウンド間の攪拌関数５２の入力データを中間鍵と呼ぶ。
【０００９】
次に、鍵系列生成部５０の動作について説明する。
図９は、鍵系列生成部５０の鍵系列生成処理動作を示した図で、まず秘密鍵とＩＶ５１１を入力として初期化を行う。
初期化とは、一定回数のラウンド処理を行うことで、攪拌関数５２の出力する鍵系列の乱数性を高めるためのものである。このラウンド処理回数はストリーム暗号アルゴリズムごとに推奨されている回数が異なる。
初期化完了後は、乱数性の高い鍵系列を得られるため、以降のラウンドごとに得られる鍵系列ＫＣ＃１、ＫＣ＃２、・・・を暗号処理に使用する。
また、鍵系列の生成と同時に、次のラウンドの入力データとなる中間鍵が得られ、初期化完了後の中間鍵をＭＫ＃１とし、以降のラウンドごとに得られる中間鍵をＭＫ＃２、ＭＫ＃３、・・・とする。
２回目以降のラウンドでは、秘密鍵とＩＶ５１１は使用せず、前回のラウンドで得られた中間鍵のみを利用して鍵系列を生成する。
【００１０】
次に、一般的なストリーム暗号の実装において、処理を高速化するための方法について説明する。
図９において、あるパケットの暗号処理で鍵系列ＫＣ＃１とＫＣ＃２を使用した際に、中間鍵ＭＫ＃３をメモリ等に一時的に保持しておくことで、その後ＫＣ＃３を使用するパケットを受信したときに中間鍵ＭＫ＃３を鍵系列生成部に入力することにより、（中間鍵ＭＫ＃３を生成する時間を省くことで）短時間で鍵系列ＫＣ＃３を生成する方法が考えられる。
同一の秘密鍵を使用するパケットを連続処理する場合は鍵系列をＫＣ＃１、ＫＣ＃２、ＫＣ＃３、・・・といったように連続生成するが、連続するパケットのそれぞれに対する秘密鍵が異なり、異なる秘密鍵で鍵系列を生成する場合は一時的に鍵系列生成部を明け渡す必要があるため、このように中間鍵を一時的にメモリ等に保持しておく必要がある。
【特許文献１】特開平５−２４９８９１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
一般的に、ストリーム暗号では初期化時間がブロック暗号に比べて大きい。そのため、パケット通信時に初期化を行うと暗号処理性能のボトルネックとなるといった課題があった。
また、同一の秘密鍵を使用した鍵系列の生成は、図９のＫＣ＃１、ＫＣ＃２、・・・といったように逐次的に生成されるため、複数の鍵系列生成部を設けて鍵系列を並列処理して生成することができずに処理の高速化が図れないといった課題があった。
また、同じ理由により復号側装置では、通信路中でパケットの順序変化が起こった場合を考慮し、追い抜かれたパケットの鍵系列をメモリに保持しておく等の対策が必要で、これによって実装が困難になるといった課題があった。
【００１２】
本発明は、上記の課題を解決することを主な目的としており、暗号側において並列処理等により暗号化処理の高速化を図ることを目的の一つとする。
また、復号側にメモリを保持しておく等の対策を行わなくても、通信路中で生じたパケットの順序変化又はパケットロスに対応できるようにすることを目的の一つとする。
【課題を解決するための手段】
【００１３】
本発明に係る暗号装置は、
中間鍵から生成される鍵系列を用いて、入力された平文データの暗号化を行う暗号装置であって、
平文データが入力される前に、秘密鍵とＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて中間鍵を生成する中間鍵生成部と、
前記中間鍵生成部により生成された中間鍵を保存する中間鍵保存部と、
平文データが入力された際に、前記中間鍵保存部に保存されている中間鍵を用いて鍵系列を生成する鍵系列生成部とを有することを特徴とする。
【００１４】
本発明に係る暗号装置は、
中間鍵から生成される鍵系列を用いて、入力された平文データの暗号化を行う暗号装置であって、
一つの秘密鍵から派生する複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成する複数の鍵系列生成部と、
前記複数の鍵系列生成部により生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、順次入力された複数の平文データの暗号化を行う暗号化処理部とを有することを特徴とする。
【００１５】
本発明に係る復号装置は、
中間鍵から生成される鍵系列を用いて、入力された暗号文データの復号化を行う復号装置であって、
暗号文データが入力される前に、秘密鍵とＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて中間鍵を生成する中間鍵生成部と、
前記中間鍵生成部により生成された中間鍵を保存する中間鍵保存部と、
暗号文データが入力された際に、前記中間鍵保存部に保存されている中間鍵を用いて鍵系列を生成する鍵系列生成部とを有することを特徴とする。
【００１６】
本発明に係る復号装置は、
中間鍵から生成される鍵系列を用いて、入力された暗号文データの復号化を行う復号装置であって、
一つの秘密鍵から派生する複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成する複数の鍵系列生成部と、
前記複数の鍵系列生成部により生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、順次入力された複数の暗号文データの復号化を行う復号化処理部とを有することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、平文データの入力前に予め生成した中間鍵を用いることにより初期化処理に要する時間を省略し、また、鍵系列の生成を並列に処理することにより暗号化処理の高速化を図ることができる。
また、暗号文データの入力前に予め生成した中間鍵を用いることで初期化処理に要する時間を省略して復号化処理の高速化が可能になるとともに、鍵系列の生成を並列に処理することにより、復号側にメモリを保持しておく等の対策を行わなくても、通信路中で生じたパケットの順序変化又はパケットロスに対応することができる。
【発明を実施するための最良の形態】
【００１８】
実施の形態１．
本発明の実施の形態１を図１に示す。
最初に構成について説明する。
図１は、本実施の形態に係る暗号装置１又は復号装置２を示す。
１０１は、平文データである（以下、単に平文ともいう）。
１０２は、平文１０１を暗号化する鍵の保存先アドレス等の鍵情報である。
１０３は、暗号処理後の暗号文データである（以下、単に暗号文ともいう）。
１１は、秘密鍵とＩＶを保存する秘密鍵・ＩＶ保存部である。
１２は、初期化処理完了後および暗号通信中の中間鍵を保存する中間鍵保存メモリである。
１３は、メモリアクセス管理部である。
１４１〜１４Ｎは、それぞれ鍵系列生成部１〜Ｎである。
１５は、鍵系列と平文の排他的論理和を行うＸＯＲ（Ｅｘｃｌｕｓｉｖｅ  ＯＲ）部である。
鍵系列とは、前述したように、鍵系列生成部１４１〜１４Ｎから出力される乱数性の高いビット列のことで、暗号化側では平文のビット列と排他的論理和を行うことで暗号文を生成し、復号側では暗号文のビット列と排他的論理和を行うことで平文を生成するためのものである。
また、各々の鍵系列生成部の構成は、図８に示したものと同様である。
【００１９】
尚、図１は暗号装置１の構成を表しているが、復号装置２も同一の構成で実現することができる。復号装置２の場合は、図１中の平文１０１と暗号文１０３の位置を入れ替えた構成となる。
【００２０】
後述するように、複数の鍵系列生成部１４１〜１４Ｎは、平文データ１０１が入力される前に、秘密鍵とＩＶ（Ｉｎｉｔｉａｌ  Ｖａｌｕｅ）とを用いて中間鍵を生成するものであり、それぞれ中間鍵生成部に相当する。
また、複数の鍵系列生成部１４１〜１４Ｎは、後述するように、一つの秘密鍵から派生する複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成する。
また、中間鍵保存メモリ１２は、中間鍵生成部たる鍵系列生成部１４１〜１４Ｎにより生成された中間鍵を保存するものであり、中間鍵保存部に相当する。
ＸＯＲ部１５は、複数の鍵系列生成部１４１〜１４Ｎにより生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、順次入力された複数の平文データ１０１の暗号化を行うものであり、暗号化処理部に相当する。また、復号装置２においては、ＸＯＲ部１５は、復号化処理部に相当する。
ＸＯＲ部１５は、入力した複数の鍵系列のそれぞれを用いて、順次入力された複数の平文データ１０１のそれぞれの暗号化処理を並列して行う。
【００２１】
つまり、本実施の形態では、複数の鍵系列生成部１４１〜１４Ｎが、平文データ１０１が入力される前に、一つの秘密鍵と複数のＩＶとを用いて複数の中間鍵を生成し、中間鍵保存メモリ１２が、生成された複数の中間鍵を保存し、更に、複数の鍵系列生成部１４１〜１４Ｎは、平文データ１０１が入力された際に、中間鍵保存メモリ１２に保存されている複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成し、ＸＯＲ部１５は、複数の鍵系列生成部１４１〜１４Ｎにより生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、平文データ１０１の暗号化を行う。
【００２２】
次に、本実施の形態に係る暗号装置１の動作（暗号方法）について図４及び図５を用いて説明する。
なお、本実施の形態に係る復号装置の動作（復号方法）も図４及び図５に示す通りである。
【００２３】
パケット通信前に行う初期化の動作を、図４のフローチャートを参照して説明する。
まず、対向となる装置間で同じ秘密鍵とＩＶを共有し、それを秘密鍵・ＩＶ保存部１１に保存する。
続いて中間鍵の生成を行う。
メモリアクセス管理部１３は秘密鍵・ＩＶ保存部１１から秘密鍵とＩＶを読み出し（Ｓ４０１）、これを処理待機中の鍵系列生成部１４１〜１４Ｎのいずれかに渡す。ここではその鍵系列生成部を鍵系列生成部１４１とする。
鍵系列生成部１４１は、受け取った秘密鍵とＩＶから、暗号化に使用可能な鍵系列を生成する直前のラウンドまでラウンド処理を行い、中間鍵を生成する（Ｓ４０２）（中間鍵生成ステップ）。
そして、鍵系列生成部１４１は、最終的に得られた中間鍵をメモリアクセス管理部１３に渡し、メモリアクセス管理部１３は中間鍵を中間鍵保存メモリ１２に保存する（Ｓ４０３）（中間鍵保存ステップ）。
以上の中間鍵生成処理は、ある秘密鍵１個とＩＶ１個の組み合わせについて行うものである。本実施の形態の方式では、秘密鍵１個に対して複数個のＩＶを予め用意しておくため、秘密鍵ごとにＩＶの個数分、この処理を行う。つまり、Ｍ個のＩＶに対して、Ｎ個の鍵生成系列部を用いて、Ｍ個の中間鍵を予め生成し、Ｍ個の中間鍵を中間鍵保存メモリ１２に保存する。Ｍ個のＩＶに対するＭ個の中間鍵の生成は、Ｎ個の鍵系列生成部が並列に処理する。
図４において、Ｍ個のＩＶのすべてについて中間鍵が生成されるまで、Ｓ４０２及びＳ４０３の処理が繰り返される（Ｓ４０４）。
また、この処理は暗号側、復号側の装置で共通であり、それぞれ装置起動後独立に行う。
【００２４】
次に、パケット通信時の動作を図５を参照して説明する。
平文１０１を暗号化するにあたり、メモリアクセス管理部１３は、暗号化に使用する鍵情報１０２を受け取り（Ｓ５０１）、この情報を元に中間鍵保存メモリ１２から該当する中間鍵（暗号化対象の平文１０１に対応する秘密鍵とＩＶで生成された中間鍵）を読み出し（Ｓ５０２）、これを処理待機中の鍵系列生成部１４１〜１４Ｎの何れかに渡す。ここでは鍵系列生成部１４１を使用するものとする。
中間鍵を受け取った鍵系列生成部１４１は、その中間鍵を入力として複数回のラウンド処理を行い、平文１０１の暗号化に使用する複数個の鍵系列を生成する（Ｓ５０３）（鍵系列生成ステップ）。
鍵系列生成部１４１は、生成した複数個の鍵系列をＸＯＲ部１５に渡し、ＸＯＲ部１５は平文と鍵系列の排他的論理和を行い、暗号文１０３を出力する（Ｓ５０４）（暗号化処理ステップ）。なお、復号装置２の場合は、平文１０１を出力する（復号化処理ステップ）。
ここでＸＯＲ部１５の内部は、Ｎ個の排他的論理和演算部から成っており、同時にＮ個のパケットのビット列に対して鍵系列との排他的論理和演算を行うことが可能な構成とする。また、鍵系列生成部１４１は、あるパケットで必要とする最終の鍵系列を生成した際に、同時に得られる中間鍵をメモリアクセス管理部１３に渡す。メモリアクセス管理部１３は、読み出した中間鍵を保存してあった領域に、この中間鍵を上書きして保存する（Ｓ５０５）。
次の暗号化対象のパケットがあれば、Ｓ５０１〜Ｓ５０５の処理を繰り返す（Ｓ５０６）。
以上は暗号装置の動作であるが、復号装置では上記の平文１０１と暗号文１０３を入れ替えた動作となる。
【００２５】
以上が図１に示した暗号処理部の基本的な処理の流れであり、本実施の形態の方式ではパケット通信時に初期化を行わないため、これによる暗号処理性能の低下を回避できる。
【００２６】
図１における中間鍵保存メモリ１２の構成は、同一の秘密鍵を使用した鍵系列の生成であっても並列処理を可能とする構成となっている。図２はそれを実現する中間鍵保存メモリ１２の内部を示すものである。
【００２７】
最初に構成について説明する。
秘密鍵ごと、それぞれ複数個のＩＶに対応する中間鍵を保持している。
図２では中間鍵をＭＫで表しており、秘密鍵の個数をＬ個、個々の秘密鍵に対応するＩＶをＭ個としており、個々の中間鍵を、秘密鍵番号をａ、ＩＶ番号をｂ、鍵系列を生成する攪拌関数のラウンドｃの入力となる中間鍵をＭＫ＃ａ＿ｂ＿ｃで表している。
【００２８】
次に、暗号装置での図２の中間鍵保存メモリ１２の使用方法について説明する。
ここでは、秘密鍵Ｐを使用する複数のパケットの暗号処理を想定する。
図１において、暗号装置１が秘密鍵Ｐを使用する最初のパケットを受信した場合、メモリアクセス管理部１３は鍵情報１０２から秘密鍵Ｐの中間鍵が必要であることを認識し、中間鍵保存メモリ１２から、中間鍵ＭＫ＃Ｐ＿１＿１を読み出して鍵系列生成部１４１〜１４Ｎの処理待機中のいずれかの鍵系列生成部に渡す。
続いて、同じく秘密鍵Ｐを使用するパケットを受信した場合、メモリアクセス管理部１３は中間鍵保存メモリ１２から中間鍵ＭＫ＃Ｐ＿２＿１を読み出して処理待機中のいずれかの鍵系列生成部に渡す。以降、同じ秘密鍵Ｐを使用するパケットは、中間鍵ＭＫ＃Ｐ＿３＿１、中間鍵ＭＫ＃Ｐ＿４＿１、・・・の順に処理待機中のいずれかの鍵系列生成部に渡して、各パケットの暗号処理に必要な分の鍵系列を生成する。
ここで、図２に示したとおり、１個の秘密鍵に対する中間鍵数がＭ個の場合、中間鍵ＭＫ＃Ｐ＿Ｍ＿１まで使用したら、次のパケットには、また中間鍵ＭＫ＃Ｐ＿１＿ｘ（ＩＶ番号が１番の中間鍵）を使用する。このとき、中間鍵ＭＫ＃Ｐ＿１＿１でパケットの暗号処理に必要な鍵系列の生成が終わっていれば、中間鍵ＭＫ＃Ｐ＿１＿１が保存されていた中間鍵保存メモリの領域には次の中間鍵が上書きされていることになる。つまり、最初のパケットが鍵系列をｓ個（ｓラウンド処理分の鍵系列）を使用して暗号化された場合、ｘ＝ｓ＋１であり、中間鍵ＭＫ＃Ｐ＿１＿１が保存されていた領域には中間鍵ＭＫ＃Ｐ＿１＿ｓ＋１が上書きされている。
よって、ＭＫ＃Ｐ＿１＿１〜ＭＫ＃Ｐ＿Ｍ＿１までのＭ個のパケットを処理した後、次のパケットの鍵系列を生成するためには中間鍵ＭＫ＃Ｐ＿１＿ｓ＋１を読み出して必要となる鍵系列の個数分だけラウンド処理を行い、処理完了後は中間鍵ＭＫ＃Ｐ＿１＿ｓ＋１を保存してあったメモリ領域に次の中間鍵を上書きして保存する。以降はこの繰り返しで暗号化を行う。
また、図１の暗号文１０３にあたる暗号パケットには、中間鍵ＭＫ＃ａ＿ｂ＿ｃの中間鍵番号ａ、ｂ、ｃの情報を持たせて送信する。つまり、暗号装置１は、暗号文データ１０３と、当該暗号文データ１０３の暗号化処理に用いられた鍵系列の生成に用いられた中間鍵の識別情報とを、復号装置２に対して出力する。
【００２９】
次に、復号装置２での図２の中間鍵保存メモリ１２の使用方法について説明する。
前述したように、復号装置２において、複数の鍵系列生成部１４１〜１４Ｎは、暗号文データが入力される前に、秘密鍵とＩＶとを用いて複数の中間鍵を生成し、中間鍵保存メモリ（中間鍵保存部）１２が当該複数の中間鍵を保存している。
複数の鍵系列生成部１４１〜１４Ｎは、暗号文データ１０３が入力された際に、中間鍵保存メモリ１２に保存されている複数の中間鍵のそれぞれを入力し、入力した中間鍵からそれぞれ並列に鍵系列を生成するが、復号装置２では、暗号文データの入力とともに、当該暗号文データの暗号化処理に用いられた鍵系列の生成に用いられた中間鍵の識別情報を入力し、暗号装置から入力した中間鍵の識別情報に基づき、複数の鍵系列生成部１４１〜１４Ｎによる鍵系列生成の制御を行う。
そして、ＸＯＲ部１５（復号化処理部）は、複数の鍵系列生成部１４１〜１４Ｎにより生成された複数の鍵系列を入力し、入力した複数の鍵系列を用いて、順次入力された複数の暗号文データの復号化を行う。
【００３０】
次に、復号装置２の動作例を具体的に説明する。
ここでは、暗号装置１と同じく、秘密鍵Ｐを使用する複数のパケットの復号処理を想定する。
復号側では、図１において鍵情報１０２として中間鍵番号ａ、ｂ、ｃを受信する。復号側では、この情報を元に受信パケットをどの中間鍵で復号するのかを識別する。
基本的には暗号側と同じく、秘密鍵Ｐを使用するパケットを連続して受信した場合は、中間鍵ＭＫ＃Ｐ＿１＿１、中間鍵ＭＫ＃Ｐ＿２＿１、・・・、中間鍵ＭＫ＃Ｐ＿Ｍ＿１、中間鍵ＭＫ＃Ｐ＿１＿ｓ＋１、・・・と使用していくので、その順序通りに鍵系列を生成して暗号パケットを復号する。
【００３１】
以上のように、本実施の形態の方式では、パケットごとに異なる中間鍵で鍵系列を生成するため、前のパケットの鍵系列生成が終わるまで、次パケットの鍵系列生成の開始を待たせる必要がなく、並列処理することが可能である。
図２で示したとおり、ある秘密鍵に中間鍵をＭ個用意した場合、最大Ｍ並列での鍵系列生成が可能となり、並列処理による高速化が実現できる。
【００３２】
以上が同一の秘密鍵を使用した鍵系列の生成であっても並列処理を可能とする処理についての説明である。
【００３３】
続いては、通信路中でのパケット順序変化時の処理について説明する。
本実施の形態の方式において、復号装置での復号処理は、受信パケットの順序が暗号化順序通りである場合も、暗号化とは異なる順序である場合も処理は特に変わらない。
例えば、中間鍵ＭＫ＃Ｐ＿４＿１で復号すべきパケットの前に中間鍵ＭＫ＃Ｐ＿５＿１で復号すべきパケットを受信した場合であっても、対応する中間鍵を中間鍵保存メモリ１２から読み出して鍵系列を生成すればよい。
従来は、あるパケットが未着である場合に、未着パケット用の中間鍵から未着パケットに対する鍵系列を生成し、未着パケットに対する鍵系列生成時に生成される中間鍵から次のパケットに対する鍵系列を生成していた。このため、未着パケットが到着するまで未着パケットに対する鍵系列を別途メモリに保持している必要があったが、このような未着パケットに対する鍵系列をメモリに保持しておく必要がない。
【００３４】
このように本実施の形態の方式では、パケットごとに異なる中間鍵で鍵系列を生成するため、従来方式で問題となったような、順序変化時に鍵系列を保持しておくためのメモリを用意するなどといった特別な対策を必要としない。
【００３５】
続いては、必要メモリ容量を抑制するための方法について説明する。
本実施の形態の方式では、一度使用した中間鍵を上書きすることによってこれを実現している。一度上書きしてしまうと、上書きされた中間鍵を必要とするパケットを遅れて受信した場合に復号できなくなるが、ＩＰｓｅｃ（ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）  Ｓｅｃｕｒｉｔｙ  Ｐｒｏｔｏｃｏｌ）のシーケンス番号チェックにもあるように、最新の受信パケットから一定数以上前に受信すべきであったパケットを廃棄することでリプレイ攻撃の防止につながるため、これは特に問題とならない。
【００３６】
ここで、ＩＰｓｅｃのシーケンス番号チェックについて説明する。
これは、リプレイ攻撃を防止するためのもので、同一パケットと最新の受信パケットから一定数以上前に送信されたパケットを受信したときに廃棄する機能である。これにはチェックウィンドウと呼ばれるパケット受信可否判定表を使用する。
暗号装置では、ある装置あてにＩＰｓｅｃパケットを送信するときにシーケンス番号を付加し、同一装置あてのパケットごとにインクリメントする。復号装置では受信したパケットのシーケンス番号とチェックウィンドウを比較することで、そのパケットが既に受信済みでないか、もしくは最新の受信パケットより一定数以上前に送信されたパケットでないかを見て受信可否を判定する。
この判定に合格したパケットだけ、認証処理や復号処理が行われる。
【００３７】
本実施の形態の方式をＩＰｓｅｃ方式による暗号装置に適用する場合は、図２で示した秘密鍵ごとに用意する中間鍵の個数ＭをＩＰｓｅｃシーケンス番号チェックのウィンドウサイズＷに合わせることで、一度使用した中間鍵を上書きしたとしても、その中間鍵を必要とするパケットを復号することはなくなる。
先の中間鍵保存メモリアクセス動作の説明にあった例で説明すると、中間鍵ＭＫ＃Ｐ＿１＿１で鍵系列を生成したら、その中間鍵ＭＫ＃Ｐ＿１＿１の保存領域に中間鍵ＭＫ＃Ｐ＿１＿ｓ＋１を上書きして保存するが、この中間鍵ＭＫ＃Ｐ＿１＿１と中間鍵ＭＫ＃Ｐ＿１＿ｓ＋１の間には中間鍵ＭＫ＃Ｐ＿２＿１〜中間鍵ＭＫ＃Ｐ＿Ｍ＿１で暗号処理すべきＭ−１個のパケットが存在する。よって、Ｍ＝Ｗとすることで、暗号装置は、最新の受信パケットからＭ個以上前に受信すべきであったパケットで使用する中間鍵を上書きすることになるが、そのようなパケットを受信したとしてもシーケンス番号チェックで廃棄される。
【００３８】
続いては、通信路中でパケットをロスしたときにも対応可能であることを説明する。
通信路中で中間鍵ＭＫ＃Ｐ＿１＿１を使用するパケットをロスした場合、復号装置２の中間鍵保存メモリ１２には中間鍵ＭＫ＃Ｐ＿１＿１が中間鍵ＭＫ＃Ｐ＿１＿ｓ＋１で上書きされずに残ることになる。その後、中間鍵ＭＫ＃Ｐ＿１＿ｓ＋１で復号すべきパケットを受信した際、中間鍵保存メモリ１２から中間鍵ＭＫ＃Ｐ＿１＿１を読み出し、鍵系列生成部は、このパケットが必要とする鍵系列（中間鍵ＭＫ＃Ｐ＿１＿ｓ＋１を使用する鍵系列）が生成されるまで処理を行う。
ここで、受信パケットには中間鍵番号Ｐ、１、ｓ＋１が付属しているため、中間鍵ＭＫ＃Ｐ＿１＿１から鍵系列を生成したとしても、何ラウンド目の出力からが自身の復号に使用する鍵系列であるかを識別できる。
よって、通信路でパケットをロスした場合であっても、その後のパケットを復号可能である。
【００３９】
このように、暗号装置１において、複数の鍵系列生成部１４１〜１４Ｎは、それぞれ、中間鍵を用いて鍵系列を生成するとともに新たな中間鍵を生成する。そして、中間鍵保存メモリ１２は、複数の鍵系列生成部１４１〜１４Ｎにより生成された複数の新たな中間鍵を、それぞれの生成のもとになった中間鍵に上書きして保存する。
また、複数の鍵系列生成部１４１〜１４Ｎは、新たに平文データが入力された際に、中間鍵保存メモリ１２に保存されている複数の新たな中間鍵のそれぞれを入力し、入力した新たな中間鍵からそれぞれ並列に鍵系列を生成する。
また、複数の鍵系列生成部１４１〜１４Ｎは、ＩＰＳｅｃにおけるシーケンス番号のチェックウィンドウ値と同数の複数の中間鍵を生成する。
【００４０】
また、復号装置２においても同様に、複数の鍵系列生成部１４１〜１４Ｎは、それぞれ、中間鍵を用いて鍵系列を生成するとともに新たな中間鍵を生成する。そして、中間鍵保存メモリ１２は、複数の鍵系列生成部１４１〜１４Ｎにより生成された複数の新たな中間鍵を、それぞれの生成のもとになった中間鍵に上書きして保存する。
また、複数の鍵系列生成部１４１〜１４Ｎは、新たに暗号文データが入力された際に、中間鍵保存メモリ１２に保存されている複数の新たな中間鍵のそれぞれを入力し、入力した新たな中間鍵からそれぞれ並列に鍵系列を生成する。
また、複数の鍵系列生成部１４１〜１４Ｎは、ＩＰＳｅｃにおけるシーケンス番号のチェックウィンドウ値と同数の複数の中間鍵を生成する。
【００４１】
以上のように本実施の形態に係る方式によれば、パケット通信時にストリーム暗号の初期化処理を行う必要がなく、鍵系列生成の並列化も可能であるため、高速な暗号処理が実現できる。
また通信路中でパケットの順序が入れ替わった場合であっても、復号装置で特別な処理を行う必要がない。
更に本実施の形態の方式では中間鍵保存のために必要なメモリサイズを抑制でき、加えて通信路中でパケットをロスした場合であっても、その後受信するパケットを復号することが可能である。
【００４２】
以上、本実施の形態では、秘密鍵とＩＶの入力から暗号処理に使用可能な鍵系列を生成するまでの初期化処理をパケット通信前に予め行っておくことで、パケット通信を高速に行う暗号装置及び復号装置について説明した。
【００４３】
また、本実施の形態では、秘密鍵ごとに複数個の中間鍵を用意することで、同一の秘密鍵を使用する鍵系列の生成を並列処理することを可能とする暗号装置及び復号装置について説明した。
【００４４】
また、本実施の形態では、秘密鍵ごとに複数個の中間鍵を用意することで、通信路中でのパケット順序変化に対応可能な暗号装置及び復号装置について説明した。
【００４５】
また、本実施の形態では、中間鍵をメモリに持ち、これを一度使用した後で次の暗号処理に使用するための異なる中間鍵をその領域に上書きすることで、メモリ容量を抑制する暗号装置及び復号装置について説明した。
【００４６】
また、本実施の形態では、暗号パケットに中間鍵を区別するための識別子を持つことで、通信路中であるパケットをロスした場合であっても、復号側でロスパケット以降のパケットの復号処理を正しく行うことができる暗号装置及び復号装置について説明した。
【００４７】
実施の形態２．
以上の実施の形態１では、秘密鍵・ＩＶ保存部を設けているが、パケット処理時これらのメモリを参照することはないため、暗号装置１又は復号装置２からこれを取り除いた構成も考えられる。その構成例を図３に示す。
【００４８】
最初に構成について説明する。
図３において、３０１は平文データである。
３０２は、パケット通信時においては、平文３０１を暗号化する中間鍵の保存先アドレス等の鍵情報、もしくは、初期化時の中間鍵生成時においては、秘密鍵とＩＶの実体およびそれらから生成される中間鍵の保存先アドレス等の鍵情報である。
３０３は、暗号処理後の暗号文データである。
３１は、中間鍵保存メモリである。
３２は、メモリアクセス管理部である。
３３１〜３３Ｎは、それぞれ鍵系列生成部１〜Ｎである。
３４は、鍵系列と平文の排他的論理和を行うＸＯＲ部である。
【００４９】
次に、動作について説明する。
まず、装置起動時は、メモリアクセス管理部３２は鍵情報３０２を受け取り、秘密鍵とＩＶを鍵系列生成部に渡し、中間鍵を生成する。
鍵系列生成部は生成した中間鍵をメモリアクセス管理部３２に渡し、メモリアクセス管理部３２はこれを中間鍵保存メモリ３１に保存する。
以上の動作を必要な中間鍵の個数分実施する。
その後のパケット通信時におけるパケットの暗号処理については実施の形態１の動作と同じである。
また、上記と同様の動作にて、本実施の形態に係る復号装置も実現できる。
【００５０】
本実施の形態に係る方式によっても、パケット通信時にストリーム暗号の初期化処理を行う必要がなく、鍵系列生成の並列化も可能であるため、高速な暗号処理が実現できる。
また通信路中でパケットの順序が入れ替わった場合であっても、復号装置で特別な処理を行う必要がない。
更に本実施の形態の方式では中間鍵保存のために必要なメモリサイズを抑制でき、加えて通信路中でパケットをロスした場合であっても、その後受信するパケットを復号することが可能である。
【００５１】
ここで、実施の形態１及び２に係る暗号装置１及び復号装置２のハードウェア構成について説明する。
図６は、実施の形態１及び２に係る暗号装置１及び復号装置２のハードウェア資源の一例を示す図である。なお、図６の構成は、あくまでも暗号装置１及び復号装置２のハードウェア構成の一例を示すものであり、暗号装置１及び復号装置２のハードウェア構成は図６に記載の構成に限らず、他の構成であってもよい。
図６において、暗号装置１及び復号装置２は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、鍵系列生成回路９０１、ＸＯＲ回路９０２、通信ボード９１５、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。更に、ＣＰＵ９１１は、表示装置、キーボード、マウス、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置（ＣＤＤ）、プリンタ装置、スキャナ装置等と接続していてもよい。また、磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ、ＣＤＤ、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード９１５、キーボード、スキャナ装置、ＦＤＤなどは、入力部、入力装置の一例である。
また、通信ボード９１５、表示装置、プリンタ装置などは、出力部、出力装置の一例である。
【００５２】
例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００５３】
上記プログラム群９２３には、実施の形態１及び実施の形態２の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、以上の実施の形態で示した説明において、「〜の判断」、「〜の計算」、「〜の生成」、「〜の暗号化」、「〜の復号化」、「〜の保存」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、以上の実施の形態で説明したフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤのフレキシブルディスク、ＣＤＤのコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００５４】
また、以上の実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」、「手段」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
例えば、図６では、図１及び図３に示す鍵系列生成部を、鍵系列生成回路９０１により実現し、ＸＯＲ部をＸＯＲ回路９０２で実現する例を示している。
また、以上の実施の形態の説明において「〜部」として説明しているものをファームウェアやソフトウェアにて実現する場合は、ファームウェアやソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、実施の形態１及び実施の形態２の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１及び実施の形態２の「〜部」の手順や方法をコンピュータに実行させるものである。
【００５５】
このように、実施の形態１及び実施の形態２に示す暗号装置１及び復号装置２は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【００５６】
【図１】実施の形態１の暗号装置及び復号装置の構成例を示す図である。
【図２】実施の形態１の中間鍵保存メモリの内部構成例を示す図である。
【図３】実施の形態２の暗号装置及び復号装置の構成例を示す図である。
【図４】実施の形態１の暗号装置及び復号装置の動作例を示すフローチャート図である。
【図５】実施の形態１の暗号装置及び復号装置の動作例を示すフローチャート図である。
【図６】実施の形態１及び実施の形態２の暗号装置及び復号装置のハードウェア構成例を示す図である。
【図７】従来技術に係るストリーム暗号による一般的な暗号処理部の内部構成図である。
【図８】従来技術に係る鍵系列生成部の内部構成図である。
【図９】従来技術に係る鍵系列生成部の鍵系列生成イメージを示す図である。
【符号の説明】
【００５７】
１  暗号装置、２  復号装置、１１  秘密鍵・ＩＶ保存部、１２  中間鍵保存メモリ、１３  メモリアクセス管理部、１５  ＸＯＲ部、３１  中間鍵保存メモリ、３２  メモリアクセス管理部、３４  ＸＯＲ部、１０１  平文データ、１０２  鍵情報、１０３  暗号文データ、１４１  鍵系列生成部、１４２  鍵系列生成部、１４Ｎ  鍵系列生成部、３０１  平文データ、３０２  鍵情報、３０３  暗号文データ、３３１  鍵系列生成部、３３２  鍵系列生成部、３３Ｎ  鍵系列生成部。
【図１】
2008060750.tif 000003
【図２】
2008060750.tif 000004
【図３】
2008060750.tif 000005
【図４】
2008060750.tif 000006
【図５】
2008060750.tif 000007
【図６】
2008060750.tif 000008
【図７】
2008060750.tif 000009
【図８】
2008060750.tif 000010
【図９】
2008060750.tif 000011