暗号装置及び復号装置及び暗号方法及び復号方法及びプログラム
【課題】中間鍵保存メモリのメモリ量を抑制し、通信路でパケットの順序変化が起こっても、正順序時と同等の復号処理が可能な仕組みを実現する。
【解決手段】暗号装置1では、中間鍵MK1(平)を用いて平文101を暗号文103にし、中間鍵MK2を用いて中間鍵MK1(平)を暗号化して中間鍵MK(暗)104とし、暗号文103と中間鍵MK(暗)104を秘匿パケット105として送信し、復号装置では、予め中間鍵MK2を保存しており、秘匿パケット105の受信時に、中間鍵MK2を用いて、中間鍵MK1(暗)を復号して中間鍵MK1(平)とし、中間鍵MK1(平)を用いて、暗号文を復号して平文とする。復号装置では中間鍵MK2のみを管理すればよく、中間鍵保存メモリのメモリ量を抑制でき、中間鍵MK2を予め求めておくことで、パケットの順序変化発生時に、正順序時と同等の処理負荷及びメモリ使用量で復号処理が可能である。
【解決手段】暗号装置1では、中間鍵MK1(平)を用いて平文101を暗号文103にし、中間鍵MK2を用いて中間鍵MK1(平)を暗号化して中間鍵MK(暗)104とし、暗号文103と中間鍵MK(暗)104を秘匿パケット105として送信し、復号装置では、予め中間鍵MK2を保存しており、秘匿パケット105の受信時に、中間鍵MK2を用いて、中間鍵MK1(暗)を復号して中間鍵MK1(平)とし、中間鍵MK1(平)を用いて、暗号文を復号して平文とする。復号装置では中間鍵MK2のみを管理すればよく、中間鍵保存メモリのメモリ量を抑制でき、中間鍵MK2を予め求めておくことで、パケットの順序変化発生時に、正順序時と同等の処理負荷及びメモリ使用量で復号処理が可能である。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケット通信の際にパケットを秘匿するための暗号装置及び復号装置、更に、これを実現するための暗号方法、復号方法およびプログラムに関する。
【背景技術】
【0002】
外部同期式ストリーム暗号装置は、その特徴として、通信データにビット誤りが発生した場合でも、そのビットだけが誤りとなり、その後の処理に影響を与えない。ただし、通信中は暗号装置と復号装置でその内部状態を常に同期させていなければならない。
【0003】
図10は、外部同期式ストリーム暗号処理方式を用いてパケットの暗号処理を行う暗号装置における暗号処理部を示すものである。
【0004】
最初に構成について説明する。
A01は、平文データである(以下、単に平文と呼ぶ)。
A02は、平文A01を暗号化する秘密鍵とIV(Initial Vector)の保存先アドレス等の鍵情報である。
A03は、暗号処理後の暗号文データである(以下、単に暗号文と呼ぶ)。
A1は、秘密鍵とIVを保存する秘密鍵・IV保存メモリである。
A2は、鍵系列を生成するための中間鍵MKを保存する中間鍵保存メモリである。
A3は、メモリアクセス管理部である。
A4は、鍵系列生成部である。
A5は、鍵系列と平文の排他的論理和を行うXOR(Exclusive OR)部である。
ここで鍵系列とは、鍵系列生成部A4から出力される乱数性の高いビット列のことで、暗号化側では平文のビット列と排他的論理和を行うことで暗号文を生成し、復号側では暗号文のビット列と排他的論理和を行うことで平文を生成するためのものである。
【0005】
次に動作について説明する。
パケット通信前に、対向となる装置間で同じ秘密鍵とIVを共有し、それを秘密鍵・IV保存メモリA1に保存する。
パケット通信時は、平文A01を暗号化するにあたり、メモリアクセス管理部A3は、鍵情報A02を受け取り、この情報を元に秘密鍵・IV保存メモリA1から該当する秘密鍵とIVを読み出し、これを鍵系列生成部A4に渡す。
秘密鍵とIVを受け取った鍵系列生成部A4は、平文A01の暗号化に使用する鍵系列を生成し、これをXOR部A5に渡す。XOR部A5は平文A01と鍵系列の排他的論理和を行い、暗号文A03を出力する。
ここで、暗号化で使用した最後の鍵系列を生成する際に同時に生成された中間鍵は、中間鍵保存メモリA2に保存する。
尚、図10は暗号装置における暗号処理部の構成を表しているが、復号装置においても構成は同一で、図10中の平文A01と暗号文A03の位置を入れ替えた構成となる。
【0006】
図11は、図10における鍵系列生成部A4の内部を示すものである。
最初に構成について説明する。
B0は、鍵系列生成部である。
B11は、鍵系列を生成するための秘密鍵とIVである。
B12は、生成された鍵系列である。
B2は、入力データの乱数性を高めるための攪拌関数である。
B3は、中間鍵である。
ここで中間鍵について説明する。
攪拌関数B2は秘密鍵とIV B11を入力とし、処理を実行して得られるデータを再び攪拌関数B2の入力として処理を行う。以降これを繰り返すことで攪拌関数B2による処理一回ごとに得られる鍵系列の乱数性を高める。この攪拌関数B2による1回の処理をラウンド処理と呼び、ラウンド間の攪拌関数B2の入力データを中間鍵と呼ぶ。
【0007】
次に鍵系列生成部B0の動作について説明する。
図12は、鍵系列生成部B0の鍵系列生成処理動作を示した図で、まず秘密鍵とIV B11を入力として初期化を行う。
初期化とは、一定回数のラウンド処理を行うことで、攪拌関数B2の出力する鍵系列の乱数性を高めるためのものである。このラウンド処理回数はストリーム暗号アルゴリズムごとに推奨されている回数が異なる。
初期化完了後は、乱数性の高い鍵系列を得られるため、以降のラウンドごとに得られる鍵系列KC#1,KC#2,・・・を暗号処理に使用する。
また、鍵系列の生成と同時に、次のラウンドの入力データとなる中間鍵が得られ、初期化完了後の中間鍵をMK#1とし、以降のラウンドごとに得られる中間鍵をMK#2,MK#3,・・・とする。
2回目以降のラウンドでは、秘密鍵とIV B11は使用せず、前回のラウンドで得られた中間鍵のみを利用して鍵系列を生成する。
【0008】
続いて、一般的な外部同期式ストリーム暗号装置のパケット通信時の動作について説明する。
パケット通信時は、1パケットにつき複数の鍵系列を使用する。鍵系列は、KC#1, KC#2,・・・の順に使用される。
例えば、あるパケットでKC#1,KC#2,・・・,KC#30まで使用して暗号化した場合、次のパケットではKC#31,KC#32,・・・を使用して暗号化する。
同様に、復号装置でも暗号装置と同一の鍵系列を求めてパケットを復号する。
【0009】
以上のように、パケットの暗号化と復号において同一の鍵系列を生成するために、暗号装置と復号装置では中間鍵を合わせる必要があり、これを「同期を取る」という。
VPN(Virtual Private Network)装置等の中継装置で暗号通信を行う場合、同期を取るために中間鍵をメモリ等で管理する方法がある。
その理由は、通信トンネルごとに秘密鍵とIVを変えて鍵系列KCを生成する必要があるためである。
ここで通信トンネルとは、インターネットのような公衆通信網の中で、暗号通信によって仮想的にPoint−to−Pointの通信を行うこと及びPoint−to−Point通信を行うための仮想ネットワークを指す。
通信トンネルごとに別々の鍵系列KCを使用するため、図10では中間鍵を鍵系列生成部A4から一時的に退避させるために中間鍵保存メモリA5を使用する。
また、通信前には通信トンネルごとに中間鍵MK#1を求めて中間鍵保存メモリA5に保持しておくことにより、通信開始時の初期化時間を隠蔽することも可能である。
【0010】
また、本発明に関連する技術として、特許文献1に記載の技術がある。
【特許文献1】特開平5−249891号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
以上のように、外部同期式ストリーム暗号では、暗号装置と復号装置で同期を取る必要があり、異なる通信トンネルの鍵系列を生成する場合に中間鍵を一時的にメモリ等に保持しておく必要があるが、復号装置では同一の秘密鍵を使用するパケットを処理する場合においてもメモリ等に保持する必要がある。
例えば、暗号装置で暗号化されたパケットP#1,P#2,P#3(同一の秘密鍵からP#1→P#2→P#3の順で生成されたパケット)を復号装置が受信する際、P#3を先に受信したときを考える。
元々復号装置はP#1用の中間鍵MK#1をメモリ等に保持しているがP#3用の中間鍵を持っていない。そのためMK#1からラウンド処理を行ってP#3用の中間鍵を作成する必要があるが、P#1およびP#2でどれだけの鍵系列を必要とするか不明なため、どれだけの回数ラウンド処理した後のMKがP#3用であるのか判別できない。
【0012】
この課題を解決する案として、P#3に使用するMKの識別子(例えば100ラウンド後のMK#101をP#3で使用する場合は101の情報)をP#3に付設して通信することが考えられる。
しかし、P#3用の中間鍵を生成する途中ではP#2で必要となる中間鍵も生成されるが、こちらについては、どのMKがP#2用であるのかを識別することができない。この間の全てのラウンド処理で生成されるMKを全てメモリに保持しておく方法もあるが、必要となるメモリ量が肥大化するという課題がある。メモリに保存しない回避策としては、P#2を受信した際にMK#1からMK#2を再計算する方法も考えられるが、通信路でのパケット順序変化が発生するごとに行うと通信性能が低下するという課題がある。
【0013】
また、このような外部同期式ゆえの課題を解決する方法としては、内部同期式ストリーム暗号を使用することも考えられる。内部同期式ストリーム暗号装置は、その特徴として、暗号文の系列に依存した形で鍵系列を生成させるため、外部同期式のように暗号装置と復号装置で同期する必要がない。
ただし、暗号文のあるビットに誤りが発生すると他のビットにも波及してエラーが拡大してしまうという課題があり、更に、あるパケットでのビット誤りが他のパケットの復号にも影響を与える可能性がある。
【0014】
この発明は、上記のような課題を解決することを主な目的の一つとしており、中間鍵を保存するメモリのメモリ量を抑制するとともに、通信路でパケットの順序変化が起こった場合であっても、正順序時と同等の処理負荷及びメモリ使用量で復号処理可能な仕組みを実現することを主な目的とする。
【課題を解決するための手段】
【0015】
本発明に係る暗号装置は、
第1中間鍵と第2中間鍵を保存する中間鍵保存部と、
前記中間鍵保存部に保存されている第1中間鍵を用いて第1鍵系列を生成し、前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する鍵系列生成部と、
前記鍵系列生成部により生成された第1鍵系列を用いて平文データを暗号化して暗号文データとし、前記鍵系列生成部により生成された第2鍵系列を用いて第1中間鍵を暗号化して暗号化第1中間鍵とする暗号処理部とを有することを特徴とする。
【0016】
本発明に係る復号装置は、
第1中間鍵から生成される第1鍵系列を用いて暗号化された暗号文データと第2中間鍵から生成される第2鍵系列を用いて暗号化された暗号化第1中間鍵とを受信する受信部と、
暗号文データ及び暗号化第1中間鍵の受信に先立って生成されている第2中間鍵を保存する中間鍵保存部と、
前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成し、復号された第1中間鍵を用いて第1鍵系列を生成する鍵系列生成部と、
前記鍵系列生成部により生成された第2鍵系列を用いて暗号化第1中間鍵を復号して第1中間鍵とし、前記鍵系列生成部により生成された第1鍵系列を用いて暗号文データを復号する復号処理部とを有することを特徴とする。
【発明の効果】
【0017】
本発明によれば、データを秘匿する第1中間鍵と第1中間鍵を秘匿する第2中間鍵を用い、秘匿したデータと秘匿した第1中間鍵を合わせて通信することにより、復号側では第2中間鍵のみを管理すればよく、中間鍵を保存するメモリのメモリ量を抑制することができる。また、復号装置で復号に使用する第2中間鍵を予め求めておくことが可能であり、通信路でパケットの順序変化が起こった場合であっても、正順序時と同等の処理負荷及びメモリ使用量で復号処理が可能である。
【発明を実施するための最良の形態】
【0018】
実施の形態1.
実施の形態1に係る暗号装置1の構成例を図1に示し、復号装置2の構成例を図2に示す。
【0019】
まず、本実施の形態に係る暗号装置1及び復号装置2の動作の概略を説明する。
【0020】
暗号装置1では、中間鍵MK1(平)を用いて平文101を暗号文103にし、別の中間鍵である中間鍵MK2を用いて中間鍵MK1(平)を暗号化して中間鍵MK(暗)104とし、暗号文103と中間鍵MK(暗)104を合わせて秘匿パケット105として送信する。
復号装置2では、予め中間鍵MK2を生成して保存しており、秘匿パケット105を受信した際に、保存している中間鍵MK2を用いて、秘匿パケット105に含まれている中間鍵MK1(暗)201を復号して中間鍵MK1(平)とし、中間鍵MK1(平)を用いて、秘匿パケット105に含まれている暗号文202を復号して平文204とする。
復号装置2では中間鍵MK2のみを管理すればよく、中間鍵を保存するメモリのメモリ量を抑制することができる。また、復号装置2で復号に使用する中間鍵MK2を予め求めておくことが可能であり、通信路でパケットの順序変化が起こった場合であっても、正順序時と同等の処理負荷及びメモリ使用量で復号処理が可能である。
【0021】
次に、図1の暗号装置1の構成と動作を詳述する。
101は、平文である。
102は、平文101を暗号化する鍵の保存先アドレス等の鍵情報である。
103は、暗号処理後の暗号文である。
104は、平文101を暗号化するときに最初のラウンドで使用した中間鍵MK1(平)を中間鍵MK2で暗号化した中間鍵MK1(暗)である。
11は、秘密鍵とIVを保存する秘密鍵・IV保存メモリである。
12は、平文101を暗号化するときに使用する中間鍵MK1(平)を保存する中間鍵MK1(平)保存メモリである。
13は、中間鍵MK1(平)を暗号化するときに使用する中間鍵MK2を保存する中間鍵MK2保存メモリである。
14は、メモリアクセス管理部である。
15は、平文101を暗号化するための鍵系列を中間鍵MK1(平)から生成する鍵系列生成部_1である。
16は、MK1(平)を暗号化するための鍵系列を中間鍵MK2から生成する鍵系列生成部_2である。
17は、鍵系列生成部_1により生成された鍵系列と平文101の排他的論理和を行うXOR部_1である。
18は、鍵系列生成部_2により生成された鍵系列と中間鍵MK1(平)の排他的論理和を行うXOR部_2である。
19は、暗号文103と中間鍵MK1(暗)104とを合わせて秘匿パケット105として送信する送信部である。
【0022】
鍵系列とは、前述したように、鍵系列生成部_1 15および鍵系列生成部_2 16から出力される乱数性の高いビット列のことで、暗号化側では平文のビット列と排他的論理和を行うことで暗号文を生成し、復号側では暗号文のビット列と排他的論理和を行うことで平文を生成するためのものである。
後述するように、鍵系列生成部_1 15および鍵系列生成部_2 16は、平文101もしくは中間鍵MK1(平)が入力される前に、秘密鍵とIVとを用いて中間鍵を生成するものであり、それぞれ第1の鍵系列生成部、第2の鍵系列生成部に相当する。また、鍵系列生成部_1 15および鍵系列生成部_2 16により生成される鍵系列は第1鍵系列及び第2鍵系列に相当する。
【0023】
また、中間鍵MK1(平)保存メモリおよび中間鍵MK2保存メモリは、中間鍵生成部たる鍵系列生成部_1 15および鍵系列生成部_2 16により生成された中間鍵を保存するものであり、中間鍵保存部に相当する。
また、中間鍵MK1(平)保存メモリ12に保存されている中間鍵MK1(平)は、第1中間鍵に相当し、中間鍵MK2保存メモリ13に保存されている中間鍵MK2は、第2中間鍵に相当する。
更に、中間鍵MK1(暗)104は、暗号化第1中間鍵に相当する。
【0024】
XOR部_1 17は、鍵系列生成部_1 15により生成された鍵系列を入力とし、順次入力された平文101の暗号化を行うものであり、第1の暗号化処理部に相当する。
同様にXOR部_2 18は、鍵系列生成部_2 16により生成された鍵系列を入力とし、順次入力された中間鍵MK1(平)の暗号化を行うものであり、第2の暗号化処理部に相当する。
【0025】
つまり、本実施の形態の暗号装置1では、鍵系列生成部_1 15が、平文101が入力される前に、一つの秘密鍵とIVを用いて中間鍵MK1(平)を生成し、中間鍵MK1(平)保存メモリ12が、生成された中間鍵MK1(平)を保存し、更に鍵系列生成部_1 15は、平文101が入力された際に、中間鍵MK1(平)保存メモリ12に保存されている中間鍵MK1(平)を入力し、入力した中間鍵MK1(平)から鍵系列を生成し、XOR部_1 17は、鍵系列生成部_1 15により生成された鍵系列を入力し、入力した鍵系列を用いて、平文101の暗号化を行う。
【0026】
同じく、鍵系列生成部_2 16が、中間鍵MK1(平)が入力される前に、上記とは異なる一つの秘密鍵とIVを用いて中間鍵MK2を生成し、中間鍵MK2保存メモリ13が、生成された中間鍵MK2を保存し、更に鍵系列生成部_2 16は、中間鍵MK1(平)が入力された際に、中間鍵MK2保存メモリ13に保存されている中間鍵MK2を入力し、入力した中間鍵MK2から鍵系列を生成し、XOR部_2 18は、鍵系列生成部_2 16により生成された鍵系列を入力し、入力した鍵系列を用いて、中間鍵MK1(平)の暗号化を行って中間鍵MK1(暗)104を得る。
【0027】
また、生成された暗号文103と中間鍵MK1(暗)は、送信部19において組み合わせて秘匿パケット105として通信路に出力される。例えば、一般的なパケット暗号通信の規格であるIPsecでは、IPsecパケットのESPペイロード領域として、組み合わされた暗号文103と中間鍵MK1(暗)が通信路に出力される。
【0028】
また、鍵系列生成部とXOR部はそれぞれ2個ずつあるが、これは平文101の暗号化のための鍵系列生成とXOR処理、および中間鍵MK1(平)の暗号化のための鍵系列生成とXOR処理をパイプライン処理して高速化するのに効果がある。
【0029】
続いて復号装置2の構成を図2に示す。
29は、暗号装置1から送信された秘匿パケット105を受信し、秘匿パケット105から中間鍵MK1(暗)201及び暗号文202を抽出する受信部である。
201は、暗号文202を復号する際に使用する中間鍵MK1(平)が、暗号装置1で中間鍵MK2によって暗号化された中間鍵MK1(暗)である。前述したように、中間鍵MK1(暗)201は受信部29により秘匿パケット105から抽出される。
202は、暗号装置1で中間鍵MK1(平)によって暗号化された暗号文である。前述したように、暗号文202は受信部29により秘匿パケット105から抽出される。
203は、中間鍵MK1(暗)201および暗号文202を復号する鍵の保存先アドレス等の鍵情報である。
204は、復号後の平文である。
21は、パケットの復号ごとに新規に中間鍵MK2を計算するか否かを判定する中間鍵MK2更新管理部である。
22は、秘密鍵とIVを保存する秘密鍵・IV保存メモリである。
23は、中間鍵MK1(暗)201を復号するときに使用する中間鍵MK2を保存する中間鍵MK2保存メモリである。
24は、メモリアクセス管理部である。
25は、中間鍵MK1(暗)を復号するための鍵系列を中間鍵MK2から生成する鍵系列生成部_1である。
26は、暗号文202を復号するための鍵系列を中間鍵MK1(平)から生成する鍵系列生成部_2である。
27は、鍵系列生成部_1により生成された鍵系列と平文101の排他的論理和を行うXOR部_1である。
28は、鍵系列生成部_2により生成された鍵系列と中間鍵MK1(平)の排他的論理和を行うXOR部_2である。
【0030】
つまり、本実施の形態の復号装置2では、鍵系列生成部_1 25が、中間鍵MK1(暗)201が入力される前に、一つの秘密鍵とIVを用いて中間鍵MK2を生成し、中間鍵MK2保存メモリ23が、生成された中間鍵MK2を保存し、更に鍵系列生成部_1 25は、中間鍵MK1(暗)201が入力された際に、中間鍵MK2保存メモリ23に保存されている中間鍵MK2を入力し、入力した中間鍵MK2から鍵系列を生成し、XOR部_1 27は、鍵系列生成部_1 25により生成された鍵系列を入力し、入力した鍵系列を用いて、中間鍵MK1(暗)201の復号を行う。
【0031】
続いて、鍵系列生成部_2 26は、暗号文202が入力された際に、先に復号された中間鍵MK1(平)を入力し、入力した中間鍵MK1(平)から鍵系列を生成し、XOR部_2 28は、鍵系列生成部_2 26により生成された鍵系列を入力し、入力した鍵系列を用いて、暗号文202の復号を行って平文204を得る。
【0032】
また、鍵系列生成部とXOR部はそれぞれ2個ずつあるが、これは中間鍵MK1(暗)201の復号のための鍵系列生成とXOR処理、および暗号文202の復号のための鍵系列生成とXOR処理をパイプライン処理して高速化するのに効果がある。
【0033】
中間鍵MK2更新管理部21は、鍵情報203から受信パケットが、その通信トンネルで最新(暗号装置1で暗号化された最新のパケット)か否かを判別する。最新の場合はメモリアクセス管理部24が中間鍵MK2保存メモリに保存している最新の中間鍵MK2を読み出し、鍵系列生成部_1 25によって新しい中間鍵MK2を生成し、メモリアクセス管理部24がそれを中間鍵MK2保存メモリに保存する。
【0034】
復号装置2において、中間鍵MK2保存メモリ23は中間鍵保存部に相当する。また、中間鍵MK2保存メモリ23に保存されている中間鍵MK2は第2中間鍵に相当する。
また、鍵系列生成部_1 25は第1の鍵系列生成部に相当し、鍵系列生成部_2 26は第2の鍵系列生成部に相当する。なお、鍵系列生成部_1 25が生成する鍵系列が第2鍵系列に相当し、鍵系列生成部_2 26により生成される鍵系列が第1鍵系列に相当する。
また、XOR部_1 27は第1の復号処理部に相当し、XOR部_2 28は第2の復号処理部に相当する。
【0035】
次に、本実施の形態について、パケット通信前に行う初期化の動作を、暗号装置1について図4のフローチャートを参照して説明する。
【0036】
メモリアクセス管理部14は秘密鍵・IV保存メモリ11から秘密鍵とIVを読み出し(S401)、これを処理待機中の鍵系列生成部_1 15に渡す。
鍵系列生成部_1 15は、受け取った秘密鍵とIVから、暗号化に使用可能な鍵系列を生成する直前のラウンドまでラウンド処理を行い、中間鍵MK1(平)を生成する(S402)(中間鍵MK1(平)生成ステップ)。
そして、鍵系列生成部_1 15は、最終的に得られた中間鍵MK1(平)をメモリアクセス管理部14に渡し、メモリアクセス管理部14は中間鍵MK1(平)を中間鍵MK1(平)保存メモリ12に保存する(S403)(中間鍵MK1(平)保存ステップ)。
以上の中間鍵生成処理は、ある秘密鍵1個とIV1個の組み合わせについて行うものである。
続いて、メモリアクセス管理部14は上記で使用したものとは異なる秘密鍵とIVを秘密鍵・IV保存部11から読み出し(S404)、これを処理待機中の鍵系列生成部_2 16に渡す。
鍵系列生成部_2 16は、受け取った秘密鍵とIVから、暗号化に使用可能な鍵系列を生成する直前のラウンドまでラウンド処理を行い、中間鍵MK2を生成する(S405)(中間鍵MK2生成ステップ)。
そして、鍵系列生成部_2 16は、最終的に得られた中間鍵MK2をメモリアクセス管理部14に渡し、メモリアクセス管理部14は中間鍵MK2を中間鍵MK2保存メモリ13に保存する(S406)(中間鍵MK2保存ステップ)。
以上、S401〜S406までについて、通信トンネルごとに行う(S407)。
【0037】
続いてパケット通信前に行う初期化の動作を、復号装置2について図5のフローチャートを参照して説明する。
【0038】
メモリアクセス管理部24は秘密鍵・IV保存メモリ22から秘密鍵とIVを読み出し(S501)、これを処理待機中の鍵系列生成部_1 25に渡す。
鍵系列生成部_1 25は、受け取った秘密鍵とIVから、暗号化に使用可能な鍵系列を生成する直前のラウンドまでラウンド処理を行い、中間鍵MK2を生成する(S502)(中間鍵MK2生成ステップ)。
ここで、暗号装置で最初に暗号化されたパケットに付加されている中間鍵MK1(暗)を復号するのに使用する中間鍵MK2をMK2_1とし、以降暗号装置で暗号化された順のパケットに付加されている中間鍵MK1(暗)を復号するのに使用する中間鍵MK2をMK2_2,MK2_3,・・・とする。
通信前に生成しておく中間鍵MK2の個数をn個とした場合、nの値が大きいほど、通信路でより大きなパケットの順序変化が起こった際にも正順序で受信したときと同一の処理で復号が可能となる。
ただしnの値を大きくすると、それに比例して必要となる中間鍵MK2保存メモリ23のサイズも大きくなる。
ここではn=32とし、通信前に鍵系列生成部_1 25でMK2_1〜MK2_32を生成して秘密鍵・IV保存メモリ22に保存しておくこととする。(中間鍵MK2保存ステップ)(S503)。
以上の中間鍵生成処理は、ある秘密鍵1個とIV1個の組み合わせについて行うものである。S501〜S503までについて、通信トンネルごとに行う(S504)。
【0039】
次に、パケット通信時の動作について、まずは暗号装置1側の動作を図6のフローチャートに沿って説明する。
【0040】
平文101を暗号化するにあたり、メモリアクセス管理部14は、暗号化に使用する鍵情報102を受け取り(S601)、この情報を元に中間鍵MK1(平)保存メモリ12から該当する中間鍵MK1(平)(暗号化対象の平文101に対応する秘密鍵とIVで生成された中間鍵MK1(平))を読み出し(S602)、これを処理待機中の鍵系列生成部_1 15に渡す。
中間鍵を受け取った鍵系列生成部_1 15は、その中間鍵MK1(平)を入力として複数回のラウンド処理を行い、平文101の暗号化に使用する複数個の鍵系列を生成する(S603)(鍵系列生成ステップ)。
鍵系列生成部_1 15は、生成した複数個の鍵系列をXOR部_1 17に渡し、XOR部_1 17は平文と鍵系列の排他的論理和を行い、暗号文103を出力する(S604)(暗号処理ステップ)。
XOR部_1 17は、暗号文103を生成するのと同時に生成された中間鍵MK1(平)をメモリアクセス管理部14とXOR部_2 18に渡す。
メモリアクセス管理部14は、中間鍵MK1(平)を中間鍵MK1(平)保存メモリ12に上書き保存する(中間鍵MK1(平)保存ステップ)(S605)。
メモリアクセス管理部14は、鍵情報102を元に中間鍵MK2保存メモリ13から該当する中間鍵MK2(暗号化対象の中間鍵MK1(平)に対応する秘密鍵とIVで生成された中間鍵MK2)を読み出し(S606)、これを処理待機中の鍵系列生成部_2 16に渡す。
中間鍵MK2を受け取った鍵系列生成部_2 16は、その中間鍵MK2を入力として複数回のラウンド処理を行い、中間鍵MK1(平)の暗号化に使用する複数個の鍵系列を生成する(S607)((中間鍵MK1(平)用)鍵系列生成ステップ)。
鍵系列生成部_2 16は、生成した複数個の鍵系列をXOR部_2 18に渡し、XOR部_2 18は中間鍵MK1(平)と鍵系列の排他的論理和を行い、中間鍵MK1(暗)104を出力する(S608)((中間鍵MK1(平))暗号処理ステップ)。
メモリアクセス管理部14は、中間鍵MK2を中間鍵MK2保存メモリ13に上書き保存する(中間鍵MK2保存ステップ)(S609)。
次の暗号化対象のパケットが存在する場合はS601〜S609を繰り返す(S610)。
暗号化対象のパケットがなくなったら、送信部19が秘匿パケット105として送信する。
以上は暗号装置の動作である。
【0041】
続いて復号装置2の動作を図7のフローチャートに沿って説明する。
【0042】
先ず、受信部29が、暗号装置1から送信された秘匿パケット105を受信し、秘匿パケット105から中間鍵MK1(暗)201及び暗号文202を抽出する(S700)。
次に、MK1(暗)201を復号するにあたり、メモリアクセス管理部24が、復号に使用する鍵情報203を受け取り(S701)、この情報を元に中間鍵MK2保存メモリ23から該当する中間鍵MK2(復号対象の暗号文202に対応する秘密鍵とIVで生成された中間鍵MK2_Aを読み出し(S702)、これを処理待機中の鍵系列生成部_1 25に渡す。
中間鍵MK2_Aを受け取った鍵系列生成部_1 25は、その中間鍵MK2_Aを入力として複数回のラウンド処理を行い、中間鍵MK1(暗)201の復号に使用する複数個の鍵系列を生成する(S703)(中間鍵MK1(平)用鍵系列生成ステップ)(第1の鍵系列生成ステップ)。
鍵系列生成部_1 25は、生成した複数個の鍵系列をXOR部_1 27に渡し、XOR部_1 27は中間鍵MK1(暗)201と鍵系列の排他的論理和を行い、中間鍵MK1(平)を出力する(S704)(中間鍵MK1(平)復号処理ステップ)(第1の復号処理ステップ)。
XOR部_1 27は、中間鍵MK1(平)を鍵系列生成部_2 26に渡す。
中間鍵MK1(平)を受け取った鍵系列生成部_2 26は、その中間鍵MK1(平)を複数回のラウンド処理を行い、暗号文202の復号に使用する複数個の鍵系列を生成する(S705)(第2の鍵系列生成ステップ)。
鍵系列生成部_2 26は、生成した複数個の鍵系列をXOR部_2 28に渡し、XOR部_2 28は暗号文202と鍵系列の排他的論理和を行い、平文204を出力する(S706)(第2の復号処理ステップ)。
【0043】
ここで、中間鍵MK2更新管理部28は今復号したパケットが同トンネル内で最新のパケットであるかどうかを、鍵情報203から判定し(S707)、最新である場合は中間鍵MK2の更新処理を行うためメモリアクセス管理部24に指示を出す。
メモリアクセス管理部24は、同トンネル用の最新の鍵系列を生成することが可能な中間鍵MK2_Nを秘密鍵・IV保存メモリ22から読み出し(S708)、これを鍵系列生成部_1 25に渡す。
N=N+1とし(S709)、鍵系列生成部_1 25は、鍵系列生成部_1 25はラウンド処理を行って中間鍵MK2_Nを生成し(S710)、これをメモリアクセス管理部24に渡す。
メモリアクセス管理部24はMK2_Nを中間鍵MK2保存メモリ13に保存する(S711)。ここで、生成した中間鍵MK2_NのNが、最新の復号で使用した中間鍵MK2_AのAより一定数(Wとする)より小さい場合は、S709〜S711を繰り返す(S712)。ここでWの値は、最新の受信パケットから何個先までの順序変化が起こったときに正順序の処理と同一の処理で対応できるかに関係し、先の通信前に準備したトンネルごとの中間鍵MK2の個数nと合わせておくことが望ましい。
以上が1パケットを復号するときのフローであり、ここまで行った後に次のパケットが存在する場合はS701〜S712までを繰り返す(S713)。
【0044】
中間鍵MK2保存メモリの構成を図3に示す。
通信トンネル(仮想ネットワーク)ごとに秘密鍵とIVを用意し、その秘密鍵とIVから生成した中間鍵MK2を保存する領域を設ける。
図3では、管理する通信トンネルの個数をL個とする。
通信トンネル(仮想ネットワーク)ごとに複数個の中間鍵MK2を持ち、表記がMK2_a_bであったら、通信トンネル番号aのb番目の中間鍵MK2であることとする。
パケット1個について1個の中間鍵MK2が対応するため、例えばIPsecで暗号通信を行うとき、個々のパケットに付加されているIPsecシーケンス番号がbの値と対応し、どのパケットでどのMK2_a_bを使用すれば良いのか判別できる。
【0045】
例えば、通信トンネルごとに通信前に32個の中間鍵MK2を求めると、通信トンネル番号1では、MK2_1_1からMK2_1_32までを保持している状態となる。
ここで図3のMの値を64とすると、通信トンネルごとに最大64個の中間鍵MK2が持てることになる。
通信が始まると、予め生成しておいた中間鍵は、基本的にbの番号の若い方から順に消費されるため、適宜新しい中間鍵MK2_1_33以降を生成する必要がある。
一度MK2_1_64まで生成し、該当する領域に保存した後は、MK2_1_65はMK2_1_1の領域に上書きするように、メモリ領域を巡回して使用する。
【0046】
次は、中間鍵MK2保存メモリ23の使い方の例を示す。
最初に、中間鍵MK2保存メモリ23にはMK2_1_1〜MK2_1_32が保存されているとする。
通信トンネル1で暗号化された順にパケットを受信するとしたとき、まだ1個もパケットを受信していないときに、次に受信すると予想されるのはMK2_1_1であり、順序変化を考慮して32個先までのMK2_1_32を保持していることになる。
MK2_1_1に対応するパケットを受信し復号したら、次に受信すると予想されるのはMK_2_1_2に対応するパケットであるため、先と同様に32個先までを考慮してMK2_1_33を生成して中間鍵MK2保存メモリに保存する。
続いて、通信路でパケットの順序変化が起こり、MK2_10を使用するパケットを受信したとする。
MK2_1_10使用後に、この中間鍵は不要となるが、MK2_1_2〜MK2_1_9については未使用であるため、今後それらを使用するパケットを受信する可能性を考慮して、中間鍵保存メモリには残しておく必要がある。
また、MK2_1_11から32個先までの順序変化に対応することを考慮し、MK2_1_34〜MK2_1_42を生成して中間鍵MK2保存メモリに保存する。
このように、最新の受信パケットを基準としてQ個前までからS個先までに暗号化されたパケットに対応することを考慮したメモリ管理を行うことで、より多くの通信路での順序変化に対応できると考えられる。
IPsecのシーケンス番号チェックにもあるように、Qは数十個程度とし、リプレイ攻撃防止のためにQ個以上前のパケットを受信したときには復号せずに無条件で廃棄するのが適切である。
先の例では、通信トンネルごとに64個のMK2保存領域を設けているため、これまで受信した最新のシーケンス番号を持つパケットの番号をkとすると、中間鍵保存メモリにはMK2_1_k−31〜MK2_1_k+32を常に保存しておくことが望ましい。
【0047】
このように、中間鍵MK2保存メモリ23は、Q+S+1個(Q≧1、S≧1)の中間鍵MK2を保存可能であり、鍵系列生成部_1 25は、受信部29が最新の暗号文を受信する度に、受信部29が受信した最新の暗号文に対応する中間鍵MK2からS個先までの中間鍵MK2のうち未生成の中間鍵MK2を生成する。
そして、中間鍵MK2保存メモリ23は、鍵系列生成部_1 25により生成された中間鍵MK2を、現在保存している末尾の中間鍵MK2に続けて保存するとともに、受信部29が受信した最新の暗号文に対応する中間鍵MK2よりもQ個以上前の中間鍵MK2を破棄する。
【0048】
以上が図1及び図2に示した暗号装置1及び復号装置2の基本的な処理の流れである。
【0049】
続いては、本実施の形態における通信路中でのパケット順序変化時の処理の負荷について説明する。
本実施の形態において、復号装置2での復号処理は、受信パケットの順序が暗号化順序通りでない場合も、正しい順序で受信したときと処理の負荷やメモリの使用量は特に変わらない。
例えば、暗号装置1でパケットP#1,パケットP#2,パケットP#3の順に暗号化された場合、パケットP#1とパケットP#2の前にパケットP#3を受信した場合であっても、対応する中間鍵MK2を中間鍵MK2保存メモリから読み出してP#3中の中間鍵MK1(暗)を復号するための鍵系列を生成すればよい。
【0050】
従来は、あるパケットが未着である場合に、未着パケット用の中間鍵から未着パケットに対する鍵系列を生成し、未着パケットに対する鍵系列生成時に生成される中間鍵から次のパケットに対する鍵系列を生成していた。このため、未着パケットが到着するまで未着パケットに対する鍵系列を別途メモリに保持している必要があったが、このような未着パケットに対する鍵系列をメモリに保持しておく必要がない。
これはMK2が復号対象としているMK1(暗)が固定長であるからである。
復号側で予め使用する中間鍵MK2を求めておくことが可能であるため、事前にメモリ等に保持しておくことにより、従来方式で問題となったような順序変化時に鍵系列を保持しておくためのメモリを用意するなどといった特別な対策を必要としない。
【0051】
以上のように本実施の形態の方式によれば、復号装置で復号に使用する中間鍵MK2を予め求めておくことが可能であり、通信路でパケットの順序変化が起こった場合であっても、正順序時と同等の復号処理で対応できる。
また、本実施の形態の方式は外部同期式ストリーム暗号方式であるため、暗号文のあるビットに誤りが発生しても、内部同期式ストリーム暗号方式のように他のビットに波及してエラーが拡大してしまう問題がない。
【0052】
本実施の形態では、データを秘匿する中間鍵1と中間鍵1を秘匿する中間鍵2を用い、秘匿したデータと共に秘匿した中間鍵1を合わせて秘匿パケットとして通信することにより、復号側では中間鍵2のみを管理することで、暗号装置と復号装置の同期を容易にするストリーム暗号実装方式について説明した。
【0053】
また、本実施の形態では、復号装置において、今後受信する可能性のあるパケットに対応する中間鍵2を1パケットについて1個メモリ等に保持しておくことで、メモリの使用容量を抑制するストリーム暗号実装方式について説明した。
【0054】
また、本実施の形態では、復号装置において、今後受信する可能性のあるパケットに対応する中間鍵2を予め計算してメモリ等に保持しておくことにより、通信路中でパケットの順序変化が起こった際にも、正順序で受信したときと同等の性能を確保可能なストリーム暗号実装方式について説明した。
【0055】
実施の形態2.
他の実施の形態として、図8に示す暗号装置8及び図9に示す復号装置9のような構成も考えられる。
暗号装置8は図1の鍵系列生成部_1 15と鍵系列生成部_2 16およびXOR部_1 17とXOR部_2 18を一つずつとした構成で、復号装置9は図2の鍵系列生成部_1 25と鍵系列生成部_2 26およびXOR部_1 27とXOR部_2 28を一つずつとした構成である。
【0056】
図8の構成では、平文と中間鍵MK1(平)の暗号化で鍵系列生成部とXOR部を共有して使用する。
同様に図9の構成では、暗号文と中間鍵MK1(暗)の復号で鍵系列生成部とXOR部を共有して使用する。
鍵系列生成処理とXOR処理のパイプライン処理ができないため、図1や図2の形態より処理性能は劣るが、暗号装置と復号装置の同期を容易化するという点では実施の形態1と同等の効果がある。
【0057】
最後に、実施の形態1、2に示した暗号装置1、8及び復号装置2、9のハードウェア構成例について説明する。
図13は、実施の形態1、2に示す暗号装置1、8及び復号装置2、9のハードウェア資源の一例を示す図である。
なお、図13の構成は、あくまでも暗号装置1、8及び復号装置2、9のハードウェア構成の一例を示すものであり、暗号装置1、8及び復号装置2、9のハードウェア構成は図13に記載の構成に限らず、他の構成であってもよい。
【0058】
図13において、暗号装置1、8及び復号装置2、9は、プログラムを実行するCPU1911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU1911は、バス1912を介して、例えば、ROM(Read Only Memory)1913、RAM(Random Access Memory)1914、通信ボード1915、表示装置1901、キーボード1902、マウス1903、磁気ディスク装置1920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU1911は、FDD1904(Flexible Disk Drive)、コンパクトディスク装置1905(CDD)、プリンタ装置1906、スキャナ装置1907と接続していてもよい。また、磁気ディスク装置1920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM1914は、揮発性メモリの一例である。ROM1913、FDD1904、CDD1905、磁気ディスク装置1920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード1915、キーボード1902、マウス1903、スキャナ装置1907、FDD1904などは、入力装置の一例である。
また、通信ボード1915、表示装置1901、プリンタ装置1906などは、出力装置の一例である。
【0059】
通信ボード1915は、ネットワークに接続されている。例えば、通信ボード1915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続されている。
【0060】
磁気ディスク装置1920には、オペレーティングシステム1921(OS)、ウィンドウシステム1922、プログラム群1923、ファイル群1924が記憶されている。
プログラム群1923のプログラムは、CPU1911がオペレーティングシステム1921、ウィンドウシステム1922を利用しながら実行する。
【0061】
また、RAM1914には、CPU1911に実行させるオペレーティングシステム1921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM1914には、CPU1911による処理に必要な各種データが格納される。
【0062】
また、ROM1913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置1920にはブートプログラムが格納されている。
暗号装置1、8及び復号装置2、9の起動時には、ROM1913のBIOSプログラム及び磁気ディスク装置1920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム1921が起動される。
【0063】
上記プログラム群1923には、実施の形態1、2の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU1911により読み出され実行される。
【0064】
ファイル群1924には、実施の形態1、2の説明において、「〜の判断」、「〜の計算」、「〜の演算」、「〜の比較」、「〜の生成」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU1911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1、2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM1914のメモリ、FDD1904のフレキシブルディスク、CDD1905のコンパクトディスク、磁気ディスク装置1920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス1912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0065】
また、実施の形態1、2の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ROM1913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU1911により読み出され、CPU1911により実行される。すなわち、プログラムは、実施の形態1、2の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1、2の「〜部」の手順や方法をコンピュータに実行させるものである。
【0066】
このように、実施の形態1、2に示す暗号装置1、8及び復号装置2、9は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【0067】
【図1】実施の形態1の暗号装置の構成例を示す図である。
【図2】実施の形態1の復号装置の構成例を示す図である。
【図3】実施の形態1の中間鍵MK2保存メモリの内部構成例を示す図である。
【図4】実施の形態1の暗号装置の初期化時の動作例を示すフローチャート図である。
【図5】実施の形態1の復号装置の初期化時の動作例を示すフローチャート図である。
【図6】実施の形態1の暗号装置の通信時の動作例を示すフローチャート図である。
【図7】実施の形態1の復号装置の通信時の動作例を示すフローチャート図である。
【図8】実施の形態2の暗号装置の構成例を示す図である。
【図9】実施の形態2の復号装置の構成例を示す図である。
【図10】従来技術に係るストリーム暗号による一般的な暗号処理部の内部構成図である。
【図11】従来技術に係る鍵系列生成部の内部構成図である。
【図12】従来技術に係る鍵系列生成部の鍵系列生成イメージを示す図である。
【図13】実施の形態1及び2の暗号装置及び復号装置のハードウェア構成例を示す図である。
【符号の説明】
【0068】
1 暗号装置、2 復号装置、8 暗号装置、9 復号装置、11 秘密鍵・IV保存メモリ、12 中間鍵MK1(平)保存メモリ、13 中間鍵MK2保存メモリ、14 メモリアクセス管理部、15 鍵系列生成部_1、16 鍵系列生成部_2、17 XOR部_1、18 XOR部_2、19 送信部、21 中間鍵MK2更新管理部、22 秘密鍵・IV保存メモリ、23 中間鍵MK2保存メモリ、24 メモリアクセス管理部、25 鍵系列生成部_1、26 鍵系列生成部_2、27 XOR部_1、28 XOR部_2、29 受信部、81 秘密鍵・IV保存メモリ、82 中間鍵MK1(平)保存メモリ、83 中間鍵MK2保存メモリ、84 メモリアクセス管理部、85 鍵系列生成部_1、86 XOR部_1、87 送信部、91 中間鍵MK2更新管理部、92 秘密鍵・IV保存メモリ、93 中間鍵MK2保存メモリ、94 メモリアクセス管理部、95 鍵系列生成部_1、96 XOR部_1、97 受信部、101 平文、102 鍵情報、103 暗号文、104 中間鍵MK1(暗)、105 秘匿パケット、201 中間鍵MK1(暗)、202 暗号文、203 鍵情報、204 平文、801 平文、802 鍵情報、803 暗号文、804 中間鍵MK1(暗)、805 秘匿パケット、901 中間鍵MK1(暗)、902 暗号文、903 鍵情報、904 平文。
【技術分野】
【0001】
本発明は、パケット通信の際にパケットを秘匿するための暗号装置及び復号装置、更に、これを実現するための暗号方法、復号方法およびプログラムに関する。
【背景技術】
【0002】
外部同期式ストリーム暗号装置は、その特徴として、通信データにビット誤りが発生した場合でも、そのビットだけが誤りとなり、その後の処理に影響を与えない。ただし、通信中は暗号装置と復号装置でその内部状態を常に同期させていなければならない。
【0003】
図10は、外部同期式ストリーム暗号処理方式を用いてパケットの暗号処理を行う暗号装置における暗号処理部を示すものである。
【0004】
最初に構成について説明する。
A01は、平文データである(以下、単に平文と呼ぶ)。
A02は、平文A01を暗号化する秘密鍵とIV(Initial Vector)の保存先アドレス等の鍵情報である。
A03は、暗号処理後の暗号文データである(以下、単に暗号文と呼ぶ)。
A1は、秘密鍵とIVを保存する秘密鍵・IV保存メモリである。
A2は、鍵系列を生成するための中間鍵MKを保存する中間鍵保存メモリである。
A3は、メモリアクセス管理部である。
A4は、鍵系列生成部である。
A5は、鍵系列と平文の排他的論理和を行うXOR(Exclusive OR)部である。
ここで鍵系列とは、鍵系列生成部A4から出力される乱数性の高いビット列のことで、暗号化側では平文のビット列と排他的論理和を行うことで暗号文を生成し、復号側では暗号文のビット列と排他的論理和を行うことで平文を生成するためのものである。
【0005】
次に動作について説明する。
パケット通信前に、対向となる装置間で同じ秘密鍵とIVを共有し、それを秘密鍵・IV保存メモリA1に保存する。
パケット通信時は、平文A01を暗号化するにあたり、メモリアクセス管理部A3は、鍵情報A02を受け取り、この情報を元に秘密鍵・IV保存メモリA1から該当する秘密鍵とIVを読み出し、これを鍵系列生成部A4に渡す。
秘密鍵とIVを受け取った鍵系列生成部A4は、平文A01の暗号化に使用する鍵系列を生成し、これをXOR部A5に渡す。XOR部A5は平文A01と鍵系列の排他的論理和を行い、暗号文A03を出力する。
ここで、暗号化で使用した最後の鍵系列を生成する際に同時に生成された中間鍵は、中間鍵保存メモリA2に保存する。
尚、図10は暗号装置における暗号処理部の構成を表しているが、復号装置においても構成は同一で、図10中の平文A01と暗号文A03の位置を入れ替えた構成となる。
【0006】
図11は、図10における鍵系列生成部A4の内部を示すものである。
最初に構成について説明する。
B0は、鍵系列生成部である。
B11は、鍵系列を生成するための秘密鍵とIVである。
B12は、生成された鍵系列である。
B2は、入力データの乱数性を高めるための攪拌関数である。
B3は、中間鍵である。
ここで中間鍵について説明する。
攪拌関数B2は秘密鍵とIV B11を入力とし、処理を実行して得られるデータを再び攪拌関数B2の入力として処理を行う。以降これを繰り返すことで攪拌関数B2による処理一回ごとに得られる鍵系列の乱数性を高める。この攪拌関数B2による1回の処理をラウンド処理と呼び、ラウンド間の攪拌関数B2の入力データを中間鍵と呼ぶ。
【0007】
次に鍵系列生成部B0の動作について説明する。
図12は、鍵系列生成部B0の鍵系列生成処理動作を示した図で、まず秘密鍵とIV B11を入力として初期化を行う。
初期化とは、一定回数のラウンド処理を行うことで、攪拌関数B2の出力する鍵系列の乱数性を高めるためのものである。このラウンド処理回数はストリーム暗号アルゴリズムごとに推奨されている回数が異なる。
初期化完了後は、乱数性の高い鍵系列を得られるため、以降のラウンドごとに得られる鍵系列KC#1,KC#2,・・・を暗号処理に使用する。
また、鍵系列の生成と同時に、次のラウンドの入力データとなる中間鍵が得られ、初期化完了後の中間鍵をMK#1とし、以降のラウンドごとに得られる中間鍵をMK#2,MK#3,・・・とする。
2回目以降のラウンドでは、秘密鍵とIV B11は使用せず、前回のラウンドで得られた中間鍵のみを利用して鍵系列を生成する。
【0008】
続いて、一般的な外部同期式ストリーム暗号装置のパケット通信時の動作について説明する。
パケット通信時は、1パケットにつき複数の鍵系列を使用する。鍵系列は、KC#1, KC#2,・・・の順に使用される。
例えば、あるパケットでKC#1,KC#2,・・・,KC#30まで使用して暗号化した場合、次のパケットではKC#31,KC#32,・・・を使用して暗号化する。
同様に、復号装置でも暗号装置と同一の鍵系列を求めてパケットを復号する。
【0009】
以上のように、パケットの暗号化と復号において同一の鍵系列を生成するために、暗号装置と復号装置では中間鍵を合わせる必要があり、これを「同期を取る」という。
VPN(Virtual Private Network)装置等の中継装置で暗号通信を行う場合、同期を取るために中間鍵をメモリ等で管理する方法がある。
その理由は、通信トンネルごとに秘密鍵とIVを変えて鍵系列KCを生成する必要があるためである。
ここで通信トンネルとは、インターネットのような公衆通信網の中で、暗号通信によって仮想的にPoint−to−Pointの通信を行うこと及びPoint−to−Point通信を行うための仮想ネットワークを指す。
通信トンネルごとに別々の鍵系列KCを使用するため、図10では中間鍵を鍵系列生成部A4から一時的に退避させるために中間鍵保存メモリA5を使用する。
また、通信前には通信トンネルごとに中間鍵MK#1を求めて中間鍵保存メモリA5に保持しておくことにより、通信開始時の初期化時間を隠蔽することも可能である。
【0010】
また、本発明に関連する技術として、特許文献1に記載の技術がある。
【特許文献1】特開平5−249891号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
以上のように、外部同期式ストリーム暗号では、暗号装置と復号装置で同期を取る必要があり、異なる通信トンネルの鍵系列を生成する場合に中間鍵を一時的にメモリ等に保持しておく必要があるが、復号装置では同一の秘密鍵を使用するパケットを処理する場合においてもメモリ等に保持する必要がある。
例えば、暗号装置で暗号化されたパケットP#1,P#2,P#3(同一の秘密鍵からP#1→P#2→P#3の順で生成されたパケット)を復号装置が受信する際、P#3を先に受信したときを考える。
元々復号装置はP#1用の中間鍵MK#1をメモリ等に保持しているがP#3用の中間鍵を持っていない。そのためMK#1からラウンド処理を行ってP#3用の中間鍵を作成する必要があるが、P#1およびP#2でどれだけの鍵系列を必要とするか不明なため、どれだけの回数ラウンド処理した後のMKがP#3用であるのか判別できない。
【0012】
この課題を解決する案として、P#3に使用するMKの識別子(例えば100ラウンド後のMK#101をP#3で使用する場合は101の情報)をP#3に付設して通信することが考えられる。
しかし、P#3用の中間鍵を生成する途中ではP#2で必要となる中間鍵も生成されるが、こちらについては、どのMKがP#2用であるのかを識別することができない。この間の全てのラウンド処理で生成されるMKを全てメモリに保持しておく方法もあるが、必要となるメモリ量が肥大化するという課題がある。メモリに保存しない回避策としては、P#2を受信した際にMK#1からMK#2を再計算する方法も考えられるが、通信路でのパケット順序変化が発生するごとに行うと通信性能が低下するという課題がある。
【0013】
また、このような外部同期式ゆえの課題を解決する方法としては、内部同期式ストリーム暗号を使用することも考えられる。内部同期式ストリーム暗号装置は、その特徴として、暗号文の系列に依存した形で鍵系列を生成させるため、外部同期式のように暗号装置と復号装置で同期する必要がない。
ただし、暗号文のあるビットに誤りが発生すると他のビットにも波及してエラーが拡大してしまうという課題があり、更に、あるパケットでのビット誤りが他のパケットの復号にも影響を与える可能性がある。
【0014】
この発明は、上記のような課題を解決することを主な目的の一つとしており、中間鍵を保存するメモリのメモリ量を抑制するとともに、通信路でパケットの順序変化が起こった場合であっても、正順序時と同等の処理負荷及びメモリ使用量で復号処理可能な仕組みを実現することを主な目的とする。
【課題を解決するための手段】
【0015】
本発明に係る暗号装置は、
第1中間鍵と第2中間鍵を保存する中間鍵保存部と、
前記中間鍵保存部に保存されている第1中間鍵を用いて第1鍵系列を生成し、前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する鍵系列生成部と、
前記鍵系列生成部により生成された第1鍵系列を用いて平文データを暗号化して暗号文データとし、前記鍵系列生成部により生成された第2鍵系列を用いて第1中間鍵を暗号化して暗号化第1中間鍵とする暗号処理部とを有することを特徴とする。
【0016】
本発明に係る復号装置は、
第1中間鍵から生成される第1鍵系列を用いて暗号化された暗号文データと第2中間鍵から生成される第2鍵系列を用いて暗号化された暗号化第1中間鍵とを受信する受信部と、
暗号文データ及び暗号化第1中間鍵の受信に先立って生成されている第2中間鍵を保存する中間鍵保存部と、
前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成し、復号された第1中間鍵を用いて第1鍵系列を生成する鍵系列生成部と、
前記鍵系列生成部により生成された第2鍵系列を用いて暗号化第1中間鍵を復号して第1中間鍵とし、前記鍵系列生成部により生成された第1鍵系列を用いて暗号文データを復号する復号処理部とを有することを特徴とする。
【発明の効果】
【0017】
本発明によれば、データを秘匿する第1中間鍵と第1中間鍵を秘匿する第2中間鍵を用い、秘匿したデータと秘匿した第1中間鍵を合わせて通信することにより、復号側では第2中間鍵のみを管理すればよく、中間鍵を保存するメモリのメモリ量を抑制することができる。また、復号装置で復号に使用する第2中間鍵を予め求めておくことが可能であり、通信路でパケットの順序変化が起こった場合であっても、正順序時と同等の処理負荷及びメモリ使用量で復号処理が可能である。
【発明を実施するための最良の形態】
【0018】
実施の形態1.
実施の形態1に係る暗号装置1の構成例を図1に示し、復号装置2の構成例を図2に示す。
【0019】
まず、本実施の形態に係る暗号装置1及び復号装置2の動作の概略を説明する。
【0020】
暗号装置1では、中間鍵MK1(平)を用いて平文101を暗号文103にし、別の中間鍵である中間鍵MK2を用いて中間鍵MK1(平)を暗号化して中間鍵MK(暗)104とし、暗号文103と中間鍵MK(暗)104を合わせて秘匿パケット105として送信する。
復号装置2では、予め中間鍵MK2を生成して保存しており、秘匿パケット105を受信した際に、保存している中間鍵MK2を用いて、秘匿パケット105に含まれている中間鍵MK1(暗)201を復号して中間鍵MK1(平)とし、中間鍵MK1(平)を用いて、秘匿パケット105に含まれている暗号文202を復号して平文204とする。
復号装置2では中間鍵MK2のみを管理すればよく、中間鍵を保存するメモリのメモリ量を抑制することができる。また、復号装置2で復号に使用する中間鍵MK2を予め求めておくことが可能であり、通信路でパケットの順序変化が起こった場合であっても、正順序時と同等の処理負荷及びメモリ使用量で復号処理が可能である。
【0021】
次に、図1の暗号装置1の構成と動作を詳述する。
101は、平文である。
102は、平文101を暗号化する鍵の保存先アドレス等の鍵情報である。
103は、暗号処理後の暗号文である。
104は、平文101を暗号化するときに最初のラウンドで使用した中間鍵MK1(平)を中間鍵MK2で暗号化した中間鍵MK1(暗)である。
11は、秘密鍵とIVを保存する秘密鍵・IV保存メモリである。
12は、平文101を暗号化するときに使用する中間鍵MK1(平)を保存する中間鍵MK1(平)保存メモリである。
13は、中間鍵MK1(平)を暗号化するときに使用する中間鍵MK2を保存する中間鍵MK2保存メモリである。
14は、メモリアクセス管理部である。
15は、平文101を暗号化するための鍵系列を中間鍵MK1(平)から生成する鍵系列生成部_1である。
16は、MK1(平)を暗号化するための鍵系列を中間鍵MK2から生成する鍵系列生成部_2である。
17は、鍵系列生成部_1により生成された鍵系列と平文101の排他的論理和を行うXOR部_1である。
18は、鍵系列生成部_2により生成された鍵系列と中間鍵MK1(平)の排他的論理和を行うXOR部_2である。
19は、暗号文103と中間鍵MK1(暗)104とを合わせて秘匿パケット105として送信する送信部である。
【0022】
鍵系列とは、前述したように、鍵系列生成部_1 15および鍵系列生成部_2 16から出力される乱数性の高いビット列のことで、暗号化側では平文のビット列と排他的論理和を行うことで暗号文を生成し、復号側では暗号文のビット列と排他的論理和を行うことで平文を生成するためのものである。
後述するように、鍵系列生成部_1 15および鍵系列生成部_2 16は、平文101もしくは中間鍵MK1(平)が入力される前に、秘密鍵とIVとを用いて中間鍵を生成するものであり、それぞれ第1の鍵系列生成部、第2の鍵系列生成部に相当する。また、鍵系列生成部_1 15および鍵系列生成部_2 16により生成される鍵系列は第1鍵系列及び第2鍵系列に相当する。
【0023】
また、中間鍵MK1(平)保存メモリおよび中間鍵MK2保存メモリは、中間鍵生成部たる鍵系列生成部_1 15および鍵系列生成部_2 16により生成された中間鍵を保存するものであり、中間鍵保存部に相当する。
また、中間鍵MK1(平)保存メモリ12に保存されている中間鍵MK1(平)は、第1中間鍵に相当し、中間鍵MK2保存メモリ13に保存されている中間鍵MK2は、第2中間鍵に相当する。
更に、中間鍵MK1(暗)104は、暗号化第1中間鍵に相当する。
【0024】
XOR部_1 17は、鍵系列生成部_1 15により生成された鍵系列を入力とし、順次入力された平文101の暗号化を行うものであり、第1の暗号化処理部に相当する。
同様にXOR部_2 18は、鍵系列生成部_2 16により生成された鍵系列を入力とし、順次入力された中間鍵MK1(平)の暗号化を行うものであり、第2の暗号化処理部に相当する。
【0025】
つまり、本実施の形態の暗号装置1では、鍵系列生成部_1 15が、平文101が入力される前に、一つの秘密鍵とIVを用いて中間鍵MK1(平)を生成し、中間鍵MK1(平)保存メモリ12が、生成された中間鍵MK1(平)を保存し、更に鍵系列生成部_1 15は、平文101が入力された際に、中間鍵MK1(平)保存メモリ12に保存されている中間鍵MK1(平)を入力し、入力した中間鍵MK1(平)から鍵系列を生成し、XOR部_1 17は、鍵系列生成部_1 15により生成された鍵系列を入力し、入力した鍵系列を用いて、平文101の暗号化を行う。
【0026】
同じく、鍵系列生成部_2 16が、中間鍵MK1(平)が入力される前に、上記とは異なる一つの秘密鍵とIVを用いて中間鍵MK2を生成し、中間鍵MK2保存メモリ13が、生成された中間鍵MK2を保存し、更に鍵系列生成部_2 16は、中間鍵MK1(平)が入力された際に、中間鍵MK2保存メモリ13に保存されている中間鍵MK2を入力し、入力した中間鍵MK2から鍵系列を生成し、XOR部_2 18は、鍵系列生成部_2 16により生成された鍵系列を入力し、入力した鍵系列を用いて、中間鍵MK1(平)の暗号化を行って中間鍵MK1(暗)104を得る。
【0027】
また、生成された暗号文103と中間鍵MK1(暗)は、送信部19において組み合わせて秘匿パケット105として通信路に出力される。例えば、一般的なパケット暗号通信の規格であるIPsecでは、IPsecパケットのESPペイロード領域として、組み合わされた暗号文103と中間鍵MK1(暗)が通信路に出力される。
【0028】
また、鍵系列生成部とXOR部はそれぞれ2個ずつあるが、これは平文101の暗号化のための鍵系列生成とXOR処理、および中間鍵MK1(平)の暗号化のための鍵系列生成とXOR処理をパイプライン処理して高速化するのに効果がある。
【0029】
続いて復号装置2の構成を図2に示す。
29は、暗号装置1から送信された秘匿パケット105を受信し、秘匿パケット105から中間鍵MK1(暗)201及び暗号文202を抽出する受信部である。
201は、暗号文202を復号する際に使用する中間鍵MK1(平)が、暗号装置1で中間鍵MK2によって暗号化された中間鍵MK1(暗)である。前述したように、中間鍵MK1(暗)201は受信部29により秘匿パケット105から抽出される。
202は、暗号装置1で中間鍵MK1(平)によって暗号化された暗号文である。前述したように、暗号文202は受信部29により秘匿パケット105から抽出される。
203は、中間鍵MK1(暗)201および暗号文202を復号する鍵の保存先アドレス等の鍵情報である。
204は、復号後の平文である。
21は、パケットの復号ごとに新規に中間鍵MK2を計算するか否かを判定する中間鍵MK2更新管理部である。
22は、秘密鍵とIVを保存する秘密鍵・IV保存メモリである。
23は、中間鍵MK1(暗)201を復号するときに使用する中間鍵MK2を保存する中間鍵MK2保存メモリである。
24は、メモリアクセス管理部である。
25は、中間鍵MK1(暗)を復号するための鍵系列を中間鍵MK2から生成する鍵系列生成部_1である。
26は、暗号文202を復号するための鍵系列を中間鍵MK1(平)から生成する鍵系列生成部_2である。
27は、鍵系列生成部_1により生成された鍵系列と平文101の排他的論理和を行うXOR部_1である。
28は、鍵系列生成部_2により生成された鍵系列と中間鍵MK1(平)の排他的論理和を行うXOR部_2である。
【0030】
つまり、本実施の形態の復号装置2では、鍵系列生成部_1 25が、中間鍵MK1(暗)201が入力される前に、一つの秘密鍵とIVを用いて中間鍵MK2を生成し、中間鍵MK2保存メモリ23が、生成された中間鍵MK2を保存し、更に鍵系列生成部_1 25は、中間鍵MK1(暗)201が入力された際に、中間鍵MK2保存メモリ23に保存されている中間鍵MK2を入力し、入力した中間鍵MK2から鍵系列を生成し、XOR部_1 27は、鍵系列生成部_1 25により生成された鍵系列を入力し、入力した鍵系列を用いて、中間鍵MK1(暗)201の復号を行う。
【0031】
続いて、鍵系列生成部_2 26は、暗号文202が入力された際に、先に復号された中間鍵MK1(平)を入力し、入力した中間鍵MK1(平)から鍵系列を生成し、XOR部_2 28は、鍵系列生成部_2 26により生成された鍵系列を入力し、入力した鍵系列を用いて、暗号文202の復号を行って平文204を得る。
【0032】
また、鍵系列生成部とXOR部はそれぞれ2個ずつあるが、これは中間鍵MK1(暗)201の復号のための鍵系列生成とXOR処理、および暗号文202の復号のための鍵系列生成とXOR処理をパイプライン処理して高速化するのに効果がある。
【0033】
中間鍵MK2更新管理部21は、鍵情報203から受信パケットが、その通信トンネルで最新(暗号装置1で暗号化された最新のパケット)か否かを判別する。最新の場合はメモリアクセス管理部24が中間鍵MK2保存メモリに保存している最新の中間鍵MK2を読み出し、鍵系列生成部_1 25によって新しい中間鍵MK2を生成し、メモリアクセス管理部24がそれを中間鍵MK2保存メモリに保存する。
【0034】
復号装置2において、中間鍵MK2保存メモリ23は中間鍵保存部に相当する。また、中間鍵MK2保存メモリ23に保存されている中間鍵MK2は第2中間鍵に相当する。
また、鍵系列生成部_1 25は第1の鍵系列生成部に相当し、鍵系列生成部_2 26は第2の鍵系列生成部に相当する。なお、鍵系列生成部_1 25が生成する鍵系列が第2鍵系列に相当し、鍵系列生成部_2 26により生成される鍵系列が第1鍵系列に相当する。
また、XOR部_1 27は第1の復号処理部に相当し、XOR部_2 28は第2の復号処理部に相当する。
【0035】
次に、本実施の形態について、パケット通信前に行う初期化の動作を、暗号装置1について図4のフローチャートを参照して説明する。
【0036】
メモリアクセス管理部14は秘密鍵・IV保存メモリ11から秘密鍵とIVを読み出し(S401)、これを処理待機中の鍵系列生成部_1 15に渡す。
鍵系列生成部_1 15は、受け取った秘密鍵とIVから、暗号化に使用可能な鍵系列を生成する直前のラウンドまでラウンド処理を行い、中間鍵MK1(平)を生成する(S402)(中間鍵MK1(平)生成ステップ)。
そして、鍵系列生成部_1 15は、最終的に得られた中間鍵MK1(平)をメモリアクセス管理部14に渡し、メモリアクセス管理部14は中間鍵MK1(平)を中間鍵MK1(平)保存メモリ12に保存する(S403)(中間鍵MK1(平)保存ステップ)。
以上の中間鍵生成処理は、ある秘密鍵1個とIV1個の組み合わせについて行うものである。
続いて、メモリアクセス管理部14は上記で使用したものとは異なる秘密鍵とIVを秘密鍵・IV保存部11から読み出し(S404)、これを処理待機中の鍵系列生成部_2 16に渡す。
鍵系列生成部_2 16は、受け取った秘密鍵とIVから、暗号化に使用可能な鍵系列を生成する直前のラウンドまでラウンド処理を行い、中間鍵MK2を生成する(S405)(中間鍵MK2生成ステップ)。
そして、鍵系列生成部_2 16は、最終的に得られた中間鍵MK2をメモリアクセス管理部14に渡し、メモリアクセス管理部14は中間鍵MK2を中間鍵MK2保存メモリ13に保存する(S406)(中間鍵MK2保存ステップ)。
以上、S401〜S406までについて、通信トンネルごとに行う(S407)。
【0037】
続いてパケット通信前に行う初期化の動作を、復号装置2について図5のフローチャートを参照して説明する。
【0038】
メモリアクセス管理部24は秘密鍵・IV保存メモリ22から秘密鍵とIVを読み出し(S501)、これを処理待機中の鍵系列生成部_1 25に渡す。
鍵系列生成部_1 25は、受け取った秘密鍵とIVから、暗号化に使用可能な鍵系列を生成する直前のラウンドまでラウンド処理を行い、中間鍵MK2を生成する(S502)(中間鍵MK2生成ステップ)。
ここで、暗号装置で最初に暗号化されたパケットに付加されている中間鍵MK1(暗)を復号するのに使用する中間鍵MK2をMK2_1とし、以降暗号装置で暗号化された順のパケットに付加されている中間鍵MK1(暗)を復号するのに使用する中間鍵MK2をMK2_2,MK2_3,・・・とする。
通信前に生成しておく中間鍵MK2の個数をn個とした場合、nの値が大きいほど、通信路でより大きなパケットの順序変化が起こった際にも正順序で受信したときと同一の処理で復号が可能となる。
ただしnの値を大きくすると、それに比例して必要となる中間鍵MK2保存メモリ23のサイズも大きくなる。
ここではn=32とし、通信前に鍵系列生成部_1 25でMK2_1〜MK2_32を生成して秘密鍵・IV保存メモリ22に保存しておくこととする。(中間鍵MK2保存ステップ)(S503)。
以上の中間鍵生成処理は、ある秘密鍵1個とIV1個の組み合わせについて行うものである。S501〜S503までについて、通信トンネルごとに行う(S504)。
【0039】
次に、パケット通信時の動作について、まずは暗号装置1側の動作を図6のフローチャートに沿って説明する。
【0040】
平文101を暗号化するにあたり、メモリアクセス管理部14は、暗号化に使用する鍵情報102を受け取り(S601)、この情報を元に中間鍵MK1(平)保存メモリ12から該当する中間鍵MK1(平)(暗号化対象の平文101に対応する秘密鍵とIVで生成された中間鍵MK1(平))を読み出し(S602)、これを処理待機中の鍵系列生成部_1 15に渡す。
中間鍵を受け取った鍵系列生成部_1 15は、その中間鍵MK1(平)を入力として複数回のラウンド処理を行い、平文101の暗号化に使用する複数個の鍵系列を生成する(S603)(鍵系列生成ステップ)。
鍵系列生成部_1 15は、生成した複数個の鍵系列をXOR部_1 17に渡し、XOR部_1 17は平文と鍵系列の排他的論理和を行い、暗号文103を出力する(S604)(暗号処理ステップ)。
XOR部_1 17は、暗号文103を生成するのと同時に生成された中間鍵MK1(平)をメモリアクセス管理部14とXOR部_2 18に渡す。
メモリアクセス管理部14は、中間鍵MK1(平)を中間鍵MK1(平)保存メモリ12に上書き保存する(中間鍵MK1(平)保存ステップ)(S605)。
メモリアクセス管理部14は、鍵情報102を元に中間鍵MK2保存メモリ13から該当する中間鍵MK2(暗号化対象の中間鍵MK1(平)に対応する秘密鍵とIVで生成された中間鍵MK2)を読み出し(S606)、これを処理待機中の鍵系列生成部_2 16に渡す。
中間鍵MK2を受け取った鍵系列生成部_2 16は、その中間鍵MK2を入力として複数回のラウンド処理を行い、中間鍵MK1(平)の暗号化に使用する複数個の鍵系列を生成する(S607)((中間鍵MK1(平)用)鍵系列生成ステップ)。
鍵系列生成部_2 16は、生成した複数個の鍵系列をXOR部_2 18に渡し、XOR部_2 18は中間鍵MK1(平)と鍵系列の排他的論理和を行い、中間鍵MK1(暗)104を出力する(S608)((中間鍵MK1(平))暗号処理ステップ)。
メモリアクセス管理部14は、中間鍵MK2を中間鍵MK2保存メモリ13に上書き保存する(中間鍵MK2保存ステップ)(S609)。
次の暗号化対象のパケットが存在する場合はS601〜S609を繰り返す(S610)。
暗号化対象のパケットがなくなったら、送信部19が秘匿パケット105として送信する。
以上は暗号装置の動作である。
【0041】
続いて復号装置2の動作を図7のフローチャートに沿って説明する。
【0042】
先ず、受信部29が、暗号装置1から送信された秘匿パケット105を受信し、秘匿パケット105から中間鍵MK1(暗)201及び暗号文202を抽出する(S700)。
次に、MK1(暗)201を復号するにあたり、メモリアクセス管理部24が、復号に使用する鍵情報203を受け取り(S701)、この情報を元に中間鍵MK2保存メモリ23から該当する中間鍵MK2(復号対象の暗号文202に対応する秘密鍵とIVで生成された中間鍵MK2_Aを読み出し(S702)、これを処理待機中の鍵系列生成部_1 25に渡す。
中間鍵MK2_Aを受け取った鍵系列生成部_1 25は、その中間鍵MK2_Aを入力として複数回のラウンド処理を行い、中間鍵MK1(暗)201の復号に使用する複数個の鍵系列を生成する(S703)(中間鍵MK1(平)用鍵系列生成ステップ)(第1の鍵系列生成ステップ)。
鍵系列生成部_1 25は、生成した複数個の鍵系列をXOR部_1 27に渡し、XOR部_1 27は中間鍵MK1(暗)201と鍵系列の排他的論理和を行い、中間鍵MK1(平)を出力する(S704)(中間鍵MK1(平)復号処理ステップ)(第1の復号処理ステップ)。
XOR部_1 27は、中間鍵MK1(平)を鍵系列生成部_2 26に渡す。
中間鍵MK1(平)を受け取った鍵系列生成部_2 26は、その中間鍵MK1(平)を複数回のラウンド処理を行い、暗号文202の復号に使用する複数個の鍵系列を生成する(S705)(第2の鍵系列生成ステップ)。
鍵系列生成部_2 26は、生成した複数個の鍵系列をXOR部_2 28に渡し、XOR部_2 28は暗号文202と鍵系列の排他的論理和を行い、平文204を出力する(S706)(第2の復号処理ステップ)。
【0043】
ここで、中間鍵MK2更新管理部28は今復号したパケットが同トンネル内で最新のパケットであるかどうかを、鍵情報203から判定し(S707)、最新である場合は中間鍵MK2の更新処理を行うためメモリアクセス管理部24に指示を出す。
メモリアクセス管理部24は、同トンネル用の最新の鍵系列を生成することが可能な中間鍵MK2_Nを秘密鍵・IV保存メモリ22から読み出し(S708)、これを鍵系列生成部_1 25に渡す。
N=N+1とし(S709)、鍵系列生成部_1 25は、鍵系列生成部_1 25はラウンド処理を行って中間鍵MK2_Nを生成し(S710)、これをメモリアクセス管理部24に渡す。
メモリアクセス管理部24はMK2_Nを中間鍵MK2保存メモリ13に保存する(S711)。ここで、生成した中間鍵MK2_NのNが、最新の復号で使用した中間鍵MK2_AのAより一定数(Wとする)より小さい場合は、S709〜S711を繰り返す(S712)。ここでWの値は、最新の受信パケットから何個先までの順序変化が起こったときに正順序の処理と同一の処理で対応できるかに関係し、先の通信前に準備したトンネルごとの中間鍵MK2の個数nと合わせておくことが望ましい。
以上が1パケットを復号するときのフローであり、ここまで行った後に次のパケットが存在する場合はS701〜S712までを繰り返す(S713)。
【0044】
中間鍵MK2保存メモリの構成を図3に示す。
通信トンネル(仮想ネットワーク)ごとに秘密鍵とIVを用意し、その秘密鍵とIVから生成した中間鍵MK2を保存する領域を設ける。
図3では、管理する通信トンネルの個数をL個とする。
通信トンネル(仮想ネットワーク)ごとに複数個の中間鍵MK2を持ち、表記がMK2_a_bであったら、通信トンネル番号aのb番目の中間鍵MK2であることとする。
パケット1個について1個の中間鍵MK2が対応するため、例えばIPsecで暗号通信を行うとき、個々のパケットに付加されているIPsecシーケンス番号がbの値と対応し、どのパケットでどのMK2_a_bを使用すれば良いのか判別できる。
【0045】
例えば、通信トンネルごとに通信前に32個の中間鍵MK2を求めると、通信トンネル番号1では、MK2_1_1からMK2_1_32までを保持している状態となる。
ここで図3のMの値を64とすると、通信トンネルごとに最大64個の中間鍵MK2が持てることになる。
通信が始まると、予め生成しておいた中間鍵は、基本的にbの番号の若い方から順に消費されるため、適宜新しい中間鍵MK2_1_33以降を生成する必要がある。
一度MK2_1_64まで生成し、該当する領域に保存した後は、MK2_1_65はMK2_1_1の領域に上書きするように、メモリ領域を巡回して使用する。
【0046】
次は、中間鍵MK2保存メモリ23の使い方の例を示す。
最初に、中間鍵MK2保存メモリ23にはMK2_1_1〜MK2_1_32が保存されているとする。
通信トンネル1で暗号化された順にパケットを受信するとしたとき、まだ1個もパケットを受信していないときに、次に受信すると予想されるのはMK2_1_1であり、順序変化を考慮して32個先までのMK2_1_32を保持していることになる。
MK2_1_1に対応するパケットを受信し復号したら、次に受信すると予想されるのはMK_2_1_2に対応するパケットであるため、先と同様に32個先までを考慮してMK2_1_33を生成して中間鍵MK2保存メモリに保存する。
続いて、通信路でパケットの順序変化が起こり、MK2_10を使用するパケットを受信したとする。
MK2_1_10使用後に、この中間鍵は不要となるが、MK2_1_2〜MK2_1_9については未使用であるため、今後それらを使用するパケットを受信する可能性を考慮して、中間鍵保存メモリには残しておく必要がある。
また、MK2_1_11から32個先までの順序変化に対応することを考慮し、MK2_1_34〜MK2_1_42を生成して中間鍵MK2保存メモリに保存する。
このように、最新の受信パケットを基準としてQ個前までからS個先までに暗号化されたパケットに対応することを考慮したメモリ管理を行うことで、より多くの通信路での順序変化に対応できると考えられる。
IPsecのシーケンス番号チェックにもあるように、Qは数十個程度とし、リプレイ攻撃防止のためにQ個以上前のパケットを受信したときには復号せずに無条件で廃棄するのが適切である。
先の例では、通信トンネルごとに64個のMK2保存領域を設けているため、これまで受信した最新のシーケンス番号を持つパケットの番号をkとすると、中間鍵保存メモリにはMK2_1_k−31〜MK2_1_k+32を常に保存しておくことが望ましい。
【0047】
このように、中間鍵MK2保存メモリ23は、Q+S+1個(Q≧1、S≧1)の中間鍵MK2を保存可能であり、鍵系列生成部_1 25は、受信部29が最新の暗号文を受信する度に、受信部29が受信した最新の暗号文に対応する中間鍵MK2からS個先までの中間鍵MK2のうち未生成の中間鍵MK2を生成する。
そして、中間鍵MK2保存メモリ23は、鍵系列生成部_1 25により生成された中間鍵MK2を、現在保存している末尾の中間鍵MK2に続けて保存するとともに、受信部29が受信した最新の暗号文に対応する中間鍵MK2よりもQ個以上前の中間鍵MK2を破棄する。
【0048】
以上が図1及び図2に示した暗号装置1及び復号装置2の基本的な処理の流れである。
【0049】
続いては、本実施の形態における通信路中でのパケット順序変化時の処理の負荷について説明する。
本実施の形態において、復号装置2での復号処理は、受信パケットの順序が暗号化順序通りでない場合も、正しい順序で受信したときと処理の負荷やメモリの使用量は特に変わらない。
例えば、暗号装置1でパケットP#1,パケットP#2,パケットP#3の順に暗号化された場合、パケットP#1とパケットP#2の前にパケットP#3を受信した場合であっても、対応する中間鍵MK2を中間鍵MK2保存メモリから読み出してP#3中の中間鍵MK1(暗)を復号するための鍵系列を生成すればよい。
【0050】
従来は、あるパケットが未着である場合に、未着パケット用の中間鍵から未着パケットに対する鍵系列を生成し、未着パケットに対する鍵系列生成時に生成される中間鍵から次のパケットに対する鍵系列を生成していた。このため、未着パケットが到着するまで未着パケットに対する鍵系列を別途メモリに保持している必要があったが、このような未着パケットに対する鍵系列をメモリに保持しておく必要がない。
これはMK2が復号対象としているMK1(暗)が固定長であるからである。
復号側で予め使用する中間鍵MK2を求めておくことが可能であるため、事前にメモリ等に保持しておくことにより、従来方式で問題となったような順序変化時に鍵系列を保持しておくためのメモリを用意するなどといった特別な対策を必要としない。
【0051】
以上のように本実施の形態の方式によれば、復号装置で復号に使用する中間鍵MK2を予め求めておくことが可能であり、通信路でパケットの順序変化が起こった場合であっても、正順序時と同等の復号処理で対応できる。
また、本実施の形態の方式は外部同期式ストリーム暗号方式であるため、暗号文のあるビットに誤りが発生しても、内部同期式ストリーム暗号方式のように他のビットに波及してエラーが拡大してしまう問題がない。
【0052】
本実施の形態では、データを秘匿する中間鍵1と中間鍵1を秘匿する中間鍵2を用い、秘匿したデータと共に秘匿した中間鍵1を合わせて秘匿パケットとして通信することにより、復号側では中間鍵2のみを管理することで、暗号装置と復号装置の同期を容易にするストリーム暗号実装方式について説明した。
【0053】
また、本実施の形態では、復号装置において、今後受信する可能性のあるパケットに対応する中間鍵2を1パケットについて1個メモリ等に保持しておくことで、メモリの使用容量を抑制するストリーム暗号実装方式について説明した。
【0054】
また、本実施の形態では、復号装置において、今後受信する可能性のあるパケットに対応する中間鍵2を予め計算してメモリ等に保持しておくことにより、通信路中でパケットの順序変化が起こった際にも、正順序で受信したときと同等の性能を確保可能なストリーム暗号実装方式について説明した。
【0055】
実施の形態2.
他の実施の形態として、図8に示す暗号装置8及び図9に示す復号装置9のような構成も考えられる。
暗号装置8は図1の鍵系列生成部_1 15と鍵系列生成部_2 16およびXOR部_1 17とXOR部_2 18を一つずつとした構成で、復号装置9は図2の鍵系列生成部_1 25と鍵系列生成部_2 26およびXOR部_1 27とXOR部_2 28を一つずつとした構成である。
【0056】
図8の構成では、平文と中間鍵MK1(平)の暗号化で鍵系列生成部とXOR部を共有して使用する。
同様に図9の構成では、暗号文と中間鍵MK1(暗)の復号で鍵系列生成部とXOR部を共有して使用する。
鍵系列生成処理とXOR処理のパイプライン処理ができないため、図1や図2の形態より処理性能は劣るが、暗号装置と復号装置の同期を容易化するという点では実施の形態1と同等の効果がある。
【0057】
最後に、実施の形態1、2に示した暗号装置1、8及び復号装置2、9のハードウェア構成例について説明する。
図13は、実施の形態1、2に示す暗号装置1、8及び復号装置2、9のハードウェア資源の一例を示す図である。
なお、図13の構成は、あくまでも暗号装置1、8及び復号装置2、9のハードウェア構成の一例を示すものであり、暗号装置1、8及び復号装置2、9のハードウェア構成は図13に記載の構成に限らず、他の構成であってもよい。
【0058】
図13において、暗号装置1、8及び復号装置2、9は、プログラムを実行するCPU1911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU1911は、バス1912を介して、例えば、ROM(Read Only Memory)1913、RAM(Random Access Memory)1914、通信ボード1915、表示装置1901、キーボード1902、マウス1903、磁気ディスク装置1920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU1911は、FDD1904(Flexible Disk Drive)、コンパクトディスク装置1905(CDD)、プリンタ装置1906、スキャナ装置1907と接続していてもよい。また、磁気ディスク装置1920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM1914は、揮発性メモリの一例である。ROM1913、FDD1904、CDD1905、磁気ディスク装置1920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード1915、キーボード1902、マウス1903、スキャナ装置1907、FDD1904などは、入力装置の一例である。
また、通信ボード1915、表示装置1901、プリンタ装置1906などは、出力装置の一例である。
【0059】
通信ボード1915は、ネットワークに接続されている。例えば、通信ボード1915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続されている。
【0060】
磁気ディスク装置1920には、オペレーティングシステム1921(OS)、ウィンドウシステム1922、プログラム群1923、ファイル群1924が記憶されている。
プログラム群1923のプログラムは、CPU1911がオペレーティングシステム1921、ウィンドウシステム1922を利用しながら実行する。
【0061】
また、RAM1914には、CPU1911に実行させるオペレーティングシステム1921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM1914には、CPU1911による処理に必要な各種データが格納される。
【0062】
また、ROM1913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置1920にはブートプログラムが格納されている。
暗号装置1、8及び復号装置2、9の起動時には、ROM1913のBIOSプログラム及び磁気ディスク装置1920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム1921が起動される。
【0063】
上記プログラム群1923には、実施の形態1、2の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU1911により読み出され実行される。
【0064】
ファイル群1924には、実施の形態1、2の説明において、「〜の判断」、「〜の計算」、「〜の演算」、「〜の比較」、「〜の生成」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU1911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1、2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM1914のメモリ、FDD1904のフレキシブルディスク、CDD1905のコンパクトディスク、磁気ディスク装置1920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス1912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0065】
また、実施の形態1、2の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ROM1913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU1911により読み出され、CPU1911により実行される。すなわち、プログラムは、実施の形態1、2の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1、2の「〜部」の手順や方法をコンピュータに実行させるものである。
【0066】
このように、実施の形態1、2に示す暗号装置1、8及び復号装置2、9は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【0067】
【図1】実施の形態1の暗号装置の構成例を示す図である。
【図2】実施の形態1の復号装置の構成例を示す図である。
【図3】実施の形態1の中間鍵MK2保存メモリの内部構成例を示す図である。
【図4】実施の形態1の暗号装置の初期化時の動作例を示すフローチャート図である。
【図5】実施の形態1の復号装置の初期化時の動作例を示すフローチャート図である。
【図6】実施の形態1の暗号装置の通信時の動作例を示すフローチャート図である。
【図7】実施の形態1の復号装置の通信時の動作例を示すフローチャート図である。
【図8】実施の形態2の暗号装置の構成例を示す図である。
【図9】実施の形態2の復号装置の構成例を示す図である。
【図10】従来技術に係るストリーム暗号による一般的な暗号処理部の内部構成図である。
【図11】従来技術に係る鍵系列生成部の内部構成図である。
【図12】従来技術に係る鍵系列生成部の鍵系列生成イメージを示す図である。
【図13】実施の形態1及び2の暗号装置及び復号装置のハードウェア構成例を示す図である。
【符号の説明】
【0068】
1 暗号装置、2 復号装置、8 暗号装置、9 復号装置、11 秘密鍵・IV保存メモリ、12 中間鍵MK1(平)保存メモリ、13 中間鍵MK2保存メモリ、14 メモリアクセス管理部、15 鍵系列生成部_1、16 鍵系列生成部_2、17 XOR部_1、18 XOR部_2、19 送信部、21 中間鍵MK2更新管理部、22 秘密鍵・IV保存メモリ、23 中間鍵MK2保存メモリ、24 メモリアクセス管理部、25 鍵系列生成部_1、26 鍵系列生成部_2、27 XOR部_1、28 XOR部_2、29 受信部、81 秘密鍵・IV保存メモリ、82 中間鍵MK1(平)保存メモリ、83 中間鍵MK2保存メモリ、84 メモリアクセス管理部、85 鍵系列生成部_1、86 XOR部_1、87 送信部、91 中間鍵MK2更新管理部、92 秘密鍵・IV保存メモリ、93 中間鍵MK2保存メモリ、94 メモリアクセス管理部、95 鍵系列生成部_1、96 XOR部_1、97 受信部、101 平文、102 鍵情報、103 暗号文、104 中間鍵MK1(暗)、105 秘匿パケット、201 中間鍵MK1(暗)、202 暗号文、203 鍵情報、204 平文、801 平文、802 鍵情報、803 暗号文、804 中間鍵MK1(暗)、805 秘匿パケット、901 中間鍵MK1(暗)、902 暗号文、903 鍵情報、904 平文。
【特許請求の範囲】
【請求項1】
第1中間鍵と第2中間鍵を保存する中間鍵保存部と、
前記中間鍵保存部に保存されている第1中間鍵を用いて第1鍵系列を生成し、前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する鍵系列生成部と、
前記鍵系列生成部により生成された第1鍵系列を用いて平文データを暗号化して暗号文データとし、前記鍵系列生成部により生成された第2鍵系列を用いて第1中間鍵を暗号化して暗号化第1中間鍵とする暗号処理部とを有することを特徴とする暗号装置。
【請求項2】
前記鍵系列生成部は、
第1鍵系列を生成するとともに新たな第1中間鍵を生成し、第2鍵系列を生成するとともに新たな第2中間鍵を生成し、
前記中間鍵生成部は、
前記鍵系列生成部により新たな第1中間鍵及び第2中間鍵が生成される度に、保存している第1中間鍵及び第2中間鍵に上書きして新たな第1中間鍵及び第2中間鍵を保存することを特徴とする請求項1に記載の暗号装置。
【請求項3】
前記鍵系列生成部は、
前記中間鍵保存部に保存されている第1中間鍵を用いて第1鍵系列を生成する第1の鍵系列生成部と、前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する第2の鍵系列生成部とを有し、
前記暗号処理部は、
前記第1の鍵系列生成部により生成された第1鍵系列を用いて平文データを暗号化して暗号文データとする第1の暗号処理部と、前記第2の鍵系列生成部により生成された第2鍵系列を用いて第1中間鍵を暗号化して暗号化第1中間鍵とする第2の暗号処理部とを有することを特徴とする請求項1又2に記載の暗号装置。
【請求項4】
第1中間鍵から生成される第1鍵系列を用いて暗号化された暗号文データと第2中間鍵から生成される第2鍵系列を用いて暗号化された暗号化第1中間鍵とを受信する受信部と、
暗号文データ及び暗号化第1中間鍵の受信に先立って生成されている第2中間鍵を保存する中間鍵保存部と、
前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成し、復号された第1中間鍵を用いて第1鍵系列を生成する鍵系列生成部と、
前記鍵系列生成部により生成された第2鍵系列を用いて暗号化第1中間鍵を復号して第1中間鍵とし、前記鍵系列生成部により生成された第1鍵系列を用いて暗号文データを復号する復号処理部とを有することを特徴とする復号装置。
【請求項5】
前記受信部は、
データ順序が定められている複数の暗号文データを順不同に受信し、
前記中間鍵保存部は、
暗号文データのデータ順序に対応づけて複数の第2中間鍵を保存し、
前記復号装置は、更に、
前記受信部により受信された暗号文データのデータ順序を判断する中間鍵更新管理部を有し、
前記鍵系列生成部は、
前記中間鍵保存部に保存されている複数の第2中間鍵のうち前記中間更新管理部により判断されたデータ順序に対応する第2中間鍵を用いて第2鍵系列を生成することを特徴とする請求項4に記載の復号装置。
【請求項6】
前記鍵系列生成部は、
前記受信部により受信された暗号文データが最新の暗号文データであると前記中間鍵更新管理部により判断された場合に、前記中間鍵保存部に保存されている第2の中間鍵を用いて、前記受信部が以降に受信する暗号文データの復号に用いる第2中間鍵を1つ以上生成し、
前記中間鍵保存部は、
前記鍵系列生成部により生成された第2中間鍵を保存することを特徴とする請求項5に記載の復号装置。
【請求項7】
前記中間鍵保存部は、
Q+S+1個(Q≧1、S≧1)の第2中間鍵を保存可能であり、
前記鍵系列生成部は、
前記受信部が最新の暗号文データを受信する度に、前記受信部が受信した最新の暗号文データに対応する第2中間鍵からS個先までの第2中間鍵のうち未生成の第2中間鍵を生成し、
前記中間鍵保存部は、
前記鍵系列生成部により生成された第2中間鍵を、現在保存している末尾の第2中間鍵に続けて保存するとともに、前記受信部が受信した最新の暗号文データに対応する第2暗号鍵よりもQ個以上前の第2中間鍵を破棄することを特徴とする請求項6に記載の復号装置。
【請求項8】
前記鍵系列生成部は、
前記中間鍵保存部に保存されている末尾の第2中間鍵を用いて新たな第2中間鍵を1つ生成し、以降、新たに生成した第2中間鍵から更に新たな第2中間鍵を生成することを繰り返して未生成の第2中間鍵を生成することを特徴とする請求項7に記載の復号装置。
【請求項9】
前記受信部は、
複数の仮想ネットワークの各々から暗号化データを受信し、
前記中間鍵保存部は、
仮想ネットワークごとに第2中間鍵を保存していることを特徴とする請求項4〜8のいずれかに記載の復号装置。
【請求項10】
前記鍵系列生成部は、
前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する第1の鍵系列生成部と、復号された第1中間鍵を用いて第1鍵系列を生成する第2の鍵系列生成部とを有し、
前記復号処理部は、
前記第1の鍵系列生成部により生成された第2鍵系列を用いて暗号化第1中間鍵を復号する第1の復号処理部と、前記第2の鍵系列生成部により生成された第1鍵系列を用いて暗号文データを復号する第2の復号処理部とを有することを特徴とする請求項4〜9のいずれかに記載の復号装置。
【請求項11】
第1中間鍵と第2中間鍵を保存する中間鍵保存部を有するコンピュータを用いる暗号方法であって、
前記コンピュータが、前記中間鍵保存部に保存されている第1中間鍵を用いて第1鍵系列を生成し、前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する鍵系列生成ステップと、
前記コンピュータが、前記鍵系列生成ステップにより生成された第1鍵系列を用いて平文データを暗号化して暗号文データとし、前記鍵系列生成ステップにより生成された第2鍵系列を用いて第1中間鍵を暗号化して暗号化第1中間鍵とする暗号処理ステップとを有することを特徴とする暗号方法。
【請求項12】
コンピュータが、第1中間鍵から生成される第1鍵系列を用いて暗号化された暗号文データと第2中間鍵から生成される第2鍵系列を用いて暗号化された暗号化第1中間鍵とを受信する受信ステップと、
前記コンピュータが、暗号文データ及び暗号化第1中間鍵の受信に先立って生成されている第2中間鍵を用いて第2鍵系列を生成する第1の鍵系列生成ステップと、
前記コンピュータが、前記第1の鍵系列生成ステップにより生成された第2鍵系列を用いて暗号化第1中間鍵を復号して第1中間鍵とする第1の復号処理ステップと、
前記コンピュータが、前記第1の復号処理ステップにより復号された第1中間鍵を用いて第1鍵系列を生成する第2の鍵系列生成ステップと、
前記コンピュータが、前記第2の鍵系列生成ステップにより生成された第1鍵系列を用いて暗号文データを復号する第2の復号処理ステップとを有することを特徴とする復号方法。
【請求項13】
第1中間鍵と第2中間鍵を保存する中間鍵保存部を有するコンピュータに、
前記中間鍵保存部に保存されている第1中間鍵を用いて第1鍵系列を生成し、前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する鍵系列生成処理と、
前記鍵系列生成処理により生成された第1鍵系列を用いて平文データを暗号化して暗号文データとし、前記鍵系列生成処理により生成された第2鍵系列を用いて第1中間鍵を暗号化して暗号化第1中間鍵とする暗号処理処理とを実行させることを特徴とするプログラム。
【請求項14】
第1中間鍵から生成される第1鍵系列を用いて暗号化された暗号文データと第2中間鍵から生成される第2鍵系列を用いて暗号化された暗号化第1中間鍵とを受信する受信処理と、
暗号文データ及び暗号化第1中間鍵の受信に先立って生成されている第2中間鍵を用いて第2鍵系列を生成する第1の鍵系列生成処理と、
前記第1の鍵系列生成処理により生成された第2鍵系列を用いて暗号化第1中間鍵を復号して第1中間鍵とする第1の復号処理処理と、
前記第1の復号処理処理により復号された第1中間鍵を用いて第1鍵系列を生成する第2の鍵系列生成処理と、
前記第2の鍵系列生成処理により生成された第1鍵系列を用いて暗号文データを復号する第2の復号処理処理とをコンピュータに実行させることを特徴とするプログラム。
【請求項1】
第1中間鍵と第2中間鍵を保存する中間鍵保存部と、
前記中間鍵保存部に保存されている第1中間鍵を用いて第1鍵系列を生成し、前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する鍵系列生成部と、
前記鍵系列生成部により生成された第1鍵系列を用いて平文データを暗号化して暗号文データとし、前記鍵系列生成部により生成された第2鍵系列を用いて第1中間鍵を暗号化して暗号化第1中間鍵とする暗号処理部とを有することを特徴とする暗号装置。
【請求項2】
前記鍵系列生成部は、
第1鍵系列を生成するとともに新たな第1中間鍵を生成し、第2鍵系列を生成するとともに新たな第2中間鍵を生成し、
前記中間鍵生成部は、
前記鍵系列生成部により新たな第1中間鍵及び第2中間鍵が生成される度に、保存している第1中間鍵及び第2中間鍵に上書きして新たな第1中間鍵及び第2中間鍵を保存することを特徴とする請求項1に記載の暗号装置。
【請求項3】
前記鍵系列生成部は、
前記中間鍵保存部に保存されている第1中間鍵を用いて第1鍵系列を生成する第1の鍵系列生成部と、前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する第2の鍵系列生成部とを有し、
前記暗号処理部は、
前記第1の鍵系列生成部により生成された第1鍵系列を用いて平文データを暗号化して暗号文データとする第1の暗号処理部と、前記第2の鍵系列生成部により生成された第2鍵系列を用いて第1中間鍵を暗号化して暗号化第1中間鍵とする第2の暗号処理部とを有することを特徴とする請求項1又2に記載の暗号装置。
【請求項4】
第1中間鍵から生成される第1鍵系列を用いて暗号化された暗号文データと第2中間鍵から生成される第2鍵系列を用いて暗号化された暗号化第1中間鍵とを受信する受信部と、
暗号文データ及び暗号化第1中間鍵の受信に先立って生成されている第2中間鍵を保存する中間鍵保存部と、
前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成し、復号された第1中間鍵を用いて第1鍵系列を生成する鍵系列生成部と、
前記鍵系列生成部により生成された第2鍵系列を用いて暗号化第1中間鍵を復号して第1中間鍵とし、前記鍵系列生成部により生成された第1鍵系列を用いて暗号文データを復号する復号処理部とを有することを特徴とする復号装置。
【請求項5】
前記受信部は、
データ順序が定められている複数の暗号文データを順不同に受信し、
前記中間鍵保存部は、
暗号文データのデータ順序に対応づけて複数の第2中間鍵を保存し、
前記復号装置は、更に、
前記受信部により受信された暗号文データのデータ順序を判断する中間鍵更新管理部を有し、
前記鍵系列生成部は、
前記中間鍵保存部に保存されている複数の第2中間鍵のうち前記中間更新管理部により判断されたデータ順序に対応する第2中間鍵を用いて第2鍵系列を生成することを特徴とする請求項4に記載の復号装置。
【請求項6】
前記鍵系列生成部は、
前記受信部により受信された暗号文データが最新の暗号文データであると前記中間鍵更新管理部により判断された場合に、前記中間鍵保存部に保存されている第2の中間鍵を用いて、前記受信部が以降に受信する暗号文データの復号に用いる第2中間鍵を1つ以上生成し、
前記中間鍵保存部は、
前記鍵系列生成部により生成された第2中間鍵を保存することを特徴とする請求項5に記載の復号装置。
【請求項7】
前記中間鍵保存部は、
Q+S+1個(Q≧1、S≧1)の第2中間鍵を保存可能であり、
前記鍵系列生成部は、
前記受信部が最新の暗号文データを受信する度に、前記受信部が受信した最新の暗号文データに対応する第2中間鍵からS個先までの第2中間鍵のうち未生成の第2中間鍵を生成し、
前記中間鍵保存部は、
前記鍵系列生成部により生成された第2中間鍵を、現在保存している末尾の第2中間鍵に続けて保存するとともに、前記受信部が受信した最新の暗号文データに対応する第2暗号鍵よりもQ個以上前の第2中間鍵を破棄することを特徴とする請求項6に記載の復号装置。
【請求項8】
前記鍵系列生成部は、
前記中間鍵保存部に保存されている末尾の第2中間鍵を用いて新たな第2中間鍵を1つ生成し、以降、新たに生成した第2中間鍵から更に新たな第2中間鍵を生成することを繰り返して未生成の第2中間鍵を生成することを特徴とする請求項7に記載の復号装置。
【請求項9】
前記受信部は、
複数の仮想ネットワークの各々から暗号化データを受信し、
前記中間鍵保存部は、
仮想ネットワークごとに第2中間鍵を保存していることを特徴とする請求項4〜8のいずれかに記載の復号装置。
【請求項10】
前記鍵系列生成部は、
前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する第1の鍵系列生成部と、復号された第1中間鍵を用いて第1鍵系列を生成する第2の鍵系列生成部とを有し、
前記復号処理部は、
前記第1の鍵系列生成部により生成された第2鍵系列を用いて暗号化第1中間鍵を復号する第1の復号処理部と、前記第2の鍵系列生成部により生成された第1鍵系列を用いて暗号文データを復号する第2の復号処理部とを有することを特徴とする請求項4〜9のいずれかに記載の復号装置。
【請求項11】
第1中間鍵と第2中間鍵を保存する中間鍵保存部を有するコンピュータを用いる暗号方法であって、
前記コンピュータが、前記中間鍵保存部に保存されている第1中間鍵を用いて第1鍵系列を生成し、前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する鍵系列生成ステップと、
前記コンピュータが、前記鍵系列生成ステップにより生成された第1鍵系列を用いて平文データを暗号化して暗号文データとし、前記鍵系列生成ステップにより生成された第2鍵系列を用いて第1中間鍵を暗号化して暗号化第1中間鍵とする暗号処理ステップとを有することを特徴とする暗号方法。
【請求項12】
コンピュータが、第1中間鍵から生成される第1鍵系列を用いて暗号化された暗号文データと第2中間鍵から生成される第2鍵系列を用いて暗号化された暗号化第1中間鍵とを受信する受信ステップと、
前記コンピュータが、暗号文データ及び暗号化第1中間鍵の受信に先立って生成されている第2中間鍵を用いて第2鍵系列を生成する第1の鍵系列生成ステップと、
前記コンピュータが、前記第1の鍵系列生成ステップにより生成された第2鍵系列を用いて暗号化第1中間鍵を復号して第1中間鍵とする第1の復号処理ステップと、
前記コンピュータが、前記第1の復号処理ステップにより復号された第1中間鍵を用いて第1鍵系列を生成する第2の鍵系列生成ステップと、
前記コンピュータが、前記第2の鍵系列生成ステップにより生成された第1鍵系列を用いて暗号文データを復号する第2の復号処理ステップとを有することを特徴とする復号方法。
【請求項13】
第1中間鍵と第2中間鍵を保存する中間鍵保存部を有するコンピュータに、
前記中間鍵保存部に保存されている第1中間鍵を用いて第1鍵系列を生成し、前記中間鍵保存部に保存されている第2中間鍵を用いて第2鍵系列を生成する鍵系列生成処理と、
前記鍵系列生成処理により生成された第1鍵系列を用いて平文データを暗号化して暗号文データとし、前記鍵系列生成処理により生成された第2鍵系列を用いて第1中間鍵を暗号化して暗号化第1中間鍵とする暗号処理処理とを実行させることを特徴とするプログラム。
【請求項14】
第1中間鍵から生成される第1鍵系列を用いて暗号化された暗号文データと第2中間鍵から生成される第2鍵系列を用いて暗号化された暗号化第1中間鍵とを受信する受信処理と、
暗号文データ及び暗号化第1中間鍵の受信に先立って生成されている第2中間鍵を用いて第2鍵系列を生成する第1の鍵系列生成処理と、
前記第1の鍵系列生成処理により生成された第2鍵系列を用いて暗号化第1中間鍵を復号して第1中間鍵とする第1の復号処理処理と、
前記第1の復号処理処理により復号された第1中間鍵を用いて第1鍵系列を生成する第2の鍵系列生成処理と、
前記第2の鍵系列生成処理により生成された第1鍵系列を用いて暗号文データを復号する第2の復号処理処理とをコンピュータに実行させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2009−232034(P2009−232034A)
【公開日】平成21年10月8日(2009.10.8)
【国際特許分類】
【出願番号】特願2008−73236(P2008−73236)
【出願日】平成20年3月21日(2008.3.21)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
【公開日】平成21年10月8日(2009.10.8)
【国際特許分類】
【出願日】平成20年3月21日(2008.3.21)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
[ Back to top ]