説明

復号化装置、暗号化装置、復号化方法、暗号化方法、および通信システム

【課題】パケットロスやパケット到着順が逆になるようなことが起こり得る通信方式であっても、同期ずれなく暗号・復号処理を行うことの出来る復号化装置、暗号化装置、復号化方法、暗号化方法、および通信システムを提供することを目的とする。
【解決手段】ネットワーク制御部59は、暗号処理を実行する送信装置10Aから送信されるUDPパケットPKを受信する。UDPパケットPKには、鍵の生成に用いられるカウンタデータCTRが含まれており、暗号器52は、カウンタデータCTRを用いて、送信装置10Aの暗号処理に用いられた鍵KY1を生成する。XOR処理部56は、鍵KY1に基づいて生成された乱数に基づいて、UDPパケットPKに含まれる暗号文を復号化する。これにより、鍵の生成に用いられたカウンタデータCTRと、この鍵を用いて暗号化した平文を、同一のUDPパケットPKでまとめて受信することが出来る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケットロスやパケットの到着順が逆になることが起こりえる通信方式であっても、送信側と受信側の間の同期ずれを抑制することの出来る、復号化装置、暗号化装置、復号化方法、暗号化方法、および通信システムに関するものである。
【背景技術】
【0002】
近年、各種通信において、インターネットを利用するケースが増大している。インターネットが普及した当初は、非リアルタイム通信であるE−mailやWebが主流であった。しかし、インターネット技術の進歩に伴い、最近では、TVや、電話や、監視カメラといった音声・画像系のリアルタイム通信が、インターネットでも多く利用されるようになった。
【0003】
インターネットは、QoS(Quality of Service)を考慮していないので、リアルタイム通信には適していない。従って、インターネット経由の通信でリアルタイム性を向上するには、通信速度を向上することが望ましい。このような状況下、セキュリティ確保をしつつ、通信速度を向上させるために、ストリーミング暗号などの暗号方式が開示されている(例えば、特許文献1参照)。
【0004】
一方、利用ユーザ数や転送データ容量の急激な増大(例えば画像通信におけるハイビジョン化など)もあり、インターネットの通信速度向上は、必ずしもリアルタイム性向上にはつながっていない。このような背景から、リアルタイム通信では、通信速度の遅いTCP(Transmission Control Protocol)通信ではなく、より速いUDP(User Datagram Protocol)通信が採用されることが多い。
【0005】
しかし、UDP通信ではパケットロスやパケット到着順が逆になる場合があるので、共通鍵暗号化方式に特別の工夫を施さなくてはならない。例えば、SSL暗号通信(TCP通信)の共通鍵暗号化方式で最もよく利用されているストリーミング暗号のArcfour暗号やブッロク暗号のAES CBCモードでは、パケットロスやパケット到着順が逆になるようなことが起こると、同期ずれが起こり、それ以降、受信側で正しく復号できなくなる不都合がある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2007−33649号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
解決しようとする問題点は、パケットロスやパケット到着順が逆になることが起こり得る通信方式であっても、同期ずれなく暗号・復号処理を行うことの出来る暗号方式を提供することにある。
【課題を解決するための手段】
【0008】
本発明の復号化装置は、パケットに含まれる暗号文データを復号化する復号化装置であって、暗号処理を実行する暗号化装置から送信されるパケットを受信する受信手段と、暗号処理に用いられる鍵を生成する鍵生成手段と、鍵生成手段により生成される鍵に基づいて、受信手段により受信されたパケットに含まれる暗号文データを復号化する復号化手段とを有し、受信手段により受信されたパケットには、鍵の生成に用いられるパケット情報が含まれており、鍵生成手段は、パケット情報を用いて鍵を生成する構成を備えている。
【0009】
本発明の暗号化装置は、平文データを暗号化し、暗号文データを復号化装置に送信する暗号化装置であって、パケットに対応するパケット情報を用いて、鍵を生成する鍵生成手段と、鍵生成手段により生成される鍵に基づいて平文データを暗号化し、暗号文データを生成する暗号化手段と、暗号文データとパケット情報とを含むパケットを、復号化装置に送信する送信手段とを有する構成を備えている。
【発明の効果】
【0010】
本発明の復号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて受信するので、鍵の生成に必要な情報を、暗号文データの復号化に使用することが出来る。これにより、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
【0011】
本発明の暗号化装置は、暗号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて復号化装置に送信するので、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、復号化装置は、暗号文データの復号化に際して、当該復号化処理の鍵生成に必要な情報を受信することが出来る。
【図面の簡単な説明】
【0012】
【図1】実施例1における通信システムの機能ブロック図
【図2】実施例1における通信システムの動作を示すタイミングチャート
【図3】実施例1における送信装置の動作の説明図
【図4】実施例1における送信装置の動作を示すフローチャート
【図5】実施例1におけるカウンタデータの実装する方法の説明図
【図6】実施例1におけるカウンタデータ算出方法のフローチャート
【図7】実施例1における受信装置の動作を示すフローチャート
【図8】実施例1における処理速度の測定結果を示す図
【図9】実施例1における、MACチェックの説明図
【図10】実施例1におけるMACチェックの説明図
【図11】実施例2における通信システムの動作を示すタイミングチャート
【図12】実施例2における送信装置の動作を示すフローチャート
【図13】実施例2における受信装置の動作を示すフローチャート
【図14】実施例3における監視システムの全体図
【図15】実施例3における監視システムの機能ブロック図
【図16】実施例4における通信システムの動作を示すタイミングチャート
【図17】実施例5における通信システムの動作を示すタイミングチャート
【発明を実施するための形態】
【0013】
本発明の復号化装置は、パケットに含まれる暗号文データを復号化する復号化装置であって、暗号処理を実行する暗号化装置から送信されるパケットを受信する受信手段と、暗号処理に用いられる鍵を生成する鍵生成手段と、鍵生成手段により生成される鍵に基づいて、受信手段により受信されたパケットに含まれる暗号文データを復号化する復号化手段とを有し、受信手段により受信されたパケットには、鍵の生成に用いられるパケット情報が含まれており、鍵生成手段は、パケット情報を用いて鍵を生成する構成を備えている。これにより、復号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて受信するので、鍵の生成に必要な情報を、暗号文データの復号化に使用することが出来る。これにより、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
【0014】
さらに、復号化装置は、さらに、鍵生成手段により生成される鍵をシードとして、乱数を生成する乱数生成手段を有し、復号化手段は、乱数生成手段により生成された乱数と、パケットに含まれる暗号文データとを、XOR演算する構成を備えている。これにより、暗号処理に処理速度の速い乱数生成処理を利用するので、復号化処理の高速化を図ることが出来る。
【0015】
さらに、鍵生成手段は、少なくとも1以上のパケットおきにシードを生成する構成を備えている。これにより、パケットあたりのシード生成の処理回数が少なくなるので、復号化処理をさらに高速化させることが出来る。
【0016】
さらに、暗号化装置から、第1パケット、・・・、第Mパケット、・・・、第Nパケット(1≦M<N、Nは2以上の整数)を当該復号化装置に順次、送信され、復号化装置は、さらに、受信手段により受信された第Mパケットが示す通信データ数の総和に応じて、乱数生成手段が生成した乱数から乱数列を設定する乱数列設定手段を有し、復号化手段は、乱数列設定手段が設定した乱数列と、第Nパケットに含まれる暗号文データとを、XOR演算する構成を備えている。これにより、通信データ数の総和によって、第Nパケットの復号化に必要な乱数列を設定することが出来る。これにより、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、復号化装置は、必要な分だけ乱数を生成して、同期ずれの抑制を向上させることが出来る。
【0017】
さらに、第Mパケットには、第1パケットから第M−1パケットまでの通信データ数の総和を示す情報が含まれており、乱数列設定手段は、第Mパケットが示す情報を用いて乱数列を設定する構成を備えている。
【0018】
さらに、鍵生成手段は、逆関数を有する暗号方式に基づいてパケット情報を暗号化することにより、鍵を生成する構成を備えている。これにより、パケット情報から鍵が一意的に定まるので、暗号文データに最適な鍵を用いて復号することが出来る。
【0019】
さらに、鍵生成手段は、パケット情報をブロック毎に暗号化することにより、鍵を生成する構成を備えている。
【0020】
さらに、パケット情報は、パケットを識別自在なカウンタデータである構成を備えている。これにより、パケットのカウンタデータを利用するので、簡易な構成を実現することが出来る。
【0021】
さらに、カウンタデータは、パケットの通し番号である構成を備えている。これにより、同じカウンタデータが出現しないので、セキュリティレベルを向上させることが出来る。
【0022】
さらに、パケットは、コネクションレス型のプロトコルに基づく構成を備えている。これにより、コネクションレス型のため、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合があり得るが、このような場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
【0023】
さらに、コネクションレス型のプロトコルケットは、UDP(User Datagram Protocol)を含む構成を備えている。これにより、UDPでは、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合があり得るが、このような場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
【0024】
本発明の復号化装置は、平文データを暗号化し、暗号文データを復号化装置に送信する暗号化装置であって、パケットに対応するパケット情報を用いて、鍵を生成する鍵生成手段と、鍵生成手段により生成される鍵に基づいて平文データを暗号化し、暗号文データを生成する暗号化手段と、暗号文データとパケット情報とを含むパケットを、復号化装置に送信する送信手段とを有する構成を備えている。これにより、暗号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて復号化装置に送信するので、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、復号化装置は、暗号文データの復号化に際して、当該復号化処理の鍵生成に必要な情報を受信することが出来る。
【0025】
さらに、暗号化装置は、さらに、鍵生成手段により生成される鍵をシードとして、乱数を生成する乱数生成手段を有し、暗号化手段は、乱数生成手段により生成された乱数と、パケットに含まれる暗号文データとを、XOR演算する構成を備えている。これにより、暗号処理に処理速度の速い乱数生成処理を利用するので、暗号化処理の高速化を図ることが出来る。
【0026】
さらに、鍵生成手段は、少なくとも1以上のパケットおきにシードを生成する構成を備えている。これにより、パケットあたりのシード生成の処理回数が少なくなるので、暗号化処理をさらに高速化させることが出来る。
【0027】
さらに、送信手段は、第1パケット、・・・、第Mパケット、・・・、第Nパケット(1≦M<N、Nは2以上の整数)を順次、復号化装置に送信し、第Mパケットには、第1パケットから第M−1パケットまでの通信データ数の総和を示す情報が含まれている構成を備えている。これにより、暗号化装置は、第Nパケットの復号化に必要な情報を、復号化装置に通知することが出来る。
【0028】
さらに、鍵生成手段は、逆関数を有する暗号方式に基づいてパケット情報を暗号化することにより、鍵を生成する構成を備えている。これにより、パケット情報から鍵が一意的に定まるので、暗号文データに最適な鍵を用いて復号することが出来る。
【0029】
さらに、鍵生成手段は、パケット情報をブロック毎に暗号化することにより、鍵を生成する構成を備えている。
【0030】
さらに、パケット情報は、パケットを識別自在なカウンタデータである構成を備えている。これにより、パケットのカウンタデータを利用するので、簡易な構成を実現することが出来る。
【0031】
さらに、カウンタデータは、パケットの通し番号である構成を備えている。これにより、同じカウンタデータが出現しないので、セキュリティレベルを向上させることが出来る。
【0032】
さらに、パケットは、コネクションレス型のプロトコルに基づく構成を備えている。これにより、コネクションレス型のため、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合があり得るが、このような場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
【0033】
さらに、コネクションレス型のプロトコルケットは、UDP(User Datagram Protocol)を含む構成を備えている。これにより、UDPでは、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合があり得るが、このような場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
【0034】
本発明の復号化方法は、パケットに含まれる暗号文データを復号化する復号化方法であって、暗号処理を実行する暗号化装置から送信されるパケットを受信する受信ステップと、暗号処理に用いられる鍵を生成する鍵生成ステップと、鍵生成ステップで生成される鍵に基づいて、受信ステップで受信されたパケットに含まれる暗号文データを復号化する復号化ステップとを有し、受信ステップで受信されたパケットには、鍵の生成に用いられるパケット情報が含まれており、鍵生成ステップで、パケット情報を用いて鍵を生成する構成を備えている。これにより、復号化方法は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて受信するので、鍵の生成に必要な情報を、暗号文データの復号化に使用することが出来る。これにより、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
【0035】
本発明の暗号化方法は、平文データを暗号化し、暗号文データを復号化装置に送信する暗号化方法であって、パケットに対応するパケット情報を用いて、鍵を生成する鍵生成ステップと、鍵生成ステップで生成される鍵に基づいて平文データを暗号化し、暗号文データを生成する暗号化ステップと、暗号文データとパケット情報とを含むパケットを、復号化装置に送信する送信ステップとを有する構成を備えている。これにより、暗号化方法は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて復号化装置に送信するので、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、復号化装置は、暗号文データの復号化に際して、当該復号化処理の鍵生成に必要な情報を受信することが出来る。
【0036】
本発明の通信方法は、平文データを暗号化し、パケットに含まれる暗号文データを通信回線に送信する暗号化装置と、暗号化装置から通信回線を介してパケットを受信し、パケットに含まれる暗号文データを復号化する復号化装置とを備え、暗号化装置は、パケットに対応するパケット情報を用いて、鍵を生成する第1の鍵生成手段と、第1の鍵生成手段により生成される鍵に基づいて平文データを暗号化し、暗号文データを生成する暗号化手段と、暗号文データとパケット情報とを含むパケットを、復号化装置に送信する送信手段とを有し、復号化装置は、暗号化装置から送信されるパケットを受信する受信手段と、受信手段により受信されたパケットに含まれるパケット情報を用いて、鍵を生成する第2の鍵生成手段と、第2の鍵生成手段により生成される鍵に基づいて、受信手段により受信されたパケットに含まれる暗号文データを復号化する復号化手段とを有することを特徴とする構成を備えている。これにより、暗号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて復号化装置に送信するので、復号化装置は、暗号文データの復号化に際して、当該復号化処理の鍵生成に必要な情報を受信することが出来る。復号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて受信するので、鍵の生成に必要な情報を、暗号文データの復号化に使用することが出来る。これにより、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
【実施例1】
【0037】
通信システムは、図1に示すように、送信装置10Aおよび受信装置50Aを有している。送信装置10Aおよび受信装置50Aは、それぞれ暗号化装置および復号化装置の一例である。送信装置10Aおよび受信装置50Aは、インターネットなどの通信経路で接続自在である。なお、通信経路は、有線、無線いずれでも良い。また、本実施例では、通信プロトコルとして、UDP(User Datagram Protocol)などのコネクションレス型のプロトコルを使用している。なお、TCP(Transmission Control Transmission)などのコネクション型のプロトコルを使用することも可能である。
【0038】
送信装置10Aは、通信データ生成部11、暗号器12、鍵交換部13、CTR記憶部15、乱数生成器16、XOR処理部17、データ合成部19、カウンタアップ部20、UDPデータ送受信部21、およびネットワーク制御部22を有している。送信装置10Aは、図示しないCPUやASICなどの集積回路を有しており、図1に示す機能ブロックは、例えばCPUによって実現される。
【0039】
受信装置50Aは、データ分解部51、暗号器52、鍵交換部53、乱数生成器55、乱数生成器55、XOR処理部56、通信データ解釈部57、UDPデータ送受信部60、およびネットワーク制御部59を有している。受信装置50Aは、送信装置10Aと同様に、図示しないCPUやASICなどの集積回路を有しており、図1に示す機能ブロックは、例えばCPUによって実現される。
【0040】
乱数生成器16は、共通鍵を用いて乱数を生成し、XOR処理部17は、平文データをビット毎に暗号化する。すなわち、乱数生成器16およびXOR処理部17は、ストリーミング暗号を実行する機能ブロックを構成する。乱数生成器55は、乱数生成器16と同様に、共通鍵を用いて乱数を生成し、XOR処理部56は、暗号文データをビット毎に復号化する。すなわち、乱数生成器55およびXOR処理部56は、ストリーミング暗号を実行する機能ブロックを構成する。
【0041】
ストリーミング暗号は、共通鍵暗号方式の一種で、平文をビット単位、若しくはバイト単位で逐次、暗号化する暗号方式である。ストリーミング暗号は、共通鍵暗号化方式の一種なので、暗号側(乱数生成器16およびXOR処理部17)と復号側(乱数生成器55およびXOR処理部56)は、等価な計算手段である。ここでは同一の計算手段を用いている。ストリーミング暗号としては、例えばArcfourがあるが、これに限られるものではない。例えば、CBC(Cipher Block Chaining)モードなどのように、ブロック暗号をストリーミング暗号として利用する方法でも良い。なお、Arcfourのような専用のストリーミング暗号は、ブロック暗号の代表格であるAES(Advanced Encryption Standard)暗号よりも、ソフト処理では処理速度が速いことから、高速なUDP通信に適している。先に説明したように、リアルタイム性を要求される音声・画像通信では、音飛びや映像飛びを防ぐために、Arcfourのような専用のストリーミング暗号が望ましい。本実施例では、ストリーミング暗号として、Arcfourを利用している。
【0042】
暗号器12は、カウンタモードが適用可能なブロック暗号器である。本実施例では、AES暗号を利用している。ブロック暗号は、共通鍵暗号方式の一種で、平文をブロック単位で処理する暗号方式である。ブロック単位は、固定長であっても、可変長であってもよい。ブロック暗号としては、例えば、AESや3DES(Data Encryption Standard)がある。このように、ブロック暗号は共通鍵暗号化方式の一種なので、暗号器12と暗号器52と同様、等価な計算手段である。ここでは同一の計算手段を用いている。従って、暗号器12、52に入力される、共通鍵の鍵KY1は、同じ値である。また、ブロック暗号は、逆関数を有する暗号方式の一種であって、逆関数を有する暗号方式とは、異なる平文を同じ暗号文に変換しない方式をいう。
【0043】
カウンタモードは、カウンタデータを暗号化し、その数値を乱数として使用する処理である。また、カウンタデータは、パケットを識別自在な番号である。ここでは、カウンタデータは、パケットの通し番号である。通し番号の場合、同じカウンタデータが出現しないので、セキュリティレベルを向上させることが出来る。
【0044】
カウンタデータは、パケット情報の一例である。パケット情報とは、送信装置が、第1パケットPK1、・・・、第N−1パケットPKn−1、第NパケットPKn(N、nは2以上)を、受信装置に送信する場合に、パケットPK1、・・・、PKn−1、PKnのそれぞれに対応する情報であって、パケットPK1、・・・、PKn−1、PKnのそれぞれを識別自在な情報である。従って、パケット情報は、カウンタデータに限る必要はない。例えば、UDPパケット内にカウンタデータとして利用可能なものがあれば、それをカウンタデータとして代用しても構わない。例えば、音声データの通信を行っている際に、音声データのデータフォーマットに通し番号があれば、これをカウンタデータとして扱っても良い。
【0045】
以下、送信装置10Aの動作を説明する。はじめに、送信装置10Aが、鍵KY1を鍵交換部13で生成し、これを暗号器12にセットする。暗号器12は、この鍵KY1を公開鍵暗号化方式の公開鍵として用いて暗号化を行い、この暗号化された鍵をUDPデータ送受信部21に送る。UDPデータ送受信部21は、ネットワーク制御部22を介して、この暗号化された鍵KY1を受信装置50Aに送信する。受信装置50Aでは、UDPデータ送受信部60が、ネットワーク制御部59を介して、暗号化された鍵KY1を受信する。
【0046】
鍵交換部53は、この暗号化された鍵を、UDPデータ送受信部60から受け取る。鍵交換部53は、公開鍵と対となる公開鍵暗号化方式の秘密鍵を用いて、この暗号化された鍵KY1を復号化する。鍵交換部53は、送信装置10Aが生成した鍵KY1を取得し、この鍵KY1を暗号器52にセットする。ここでは、単純な公開鍵暗号化方式を用いて鍵の受け渡しを行っているが、実際は、SSL(Secure Sockets Layer)通信のように、暗号化においては、攻撃を受けないために、いくつもの注意事項がある。しかし、本発明の説明を簡単にするために、この鍵の交換は、このような簡単な説明に留める。また、UDPパケットで鍵の交換を行っているが、これはSSL通信のようにTCP通信で行っても良い。あるいは、手作業で共通鍵をセットしても良い。共通鍵の交換方法は、この他どのような手段を用いても良い。
【0047】
鍵KY1をセットすると、通信データ生成部11は、平文データの一例である通信データCDを生成し、XOR処理部17に送る。これと同時に、通信データ生成部11は、暗号器12に、暗号処理開始を通知する。なお、この暗号処理開始の通知は、XOR処理部17が行っても良い。
【0048】
暗号器12は、カウンタデータCTRを記憶しているCTR記憶部15から、現在のカウンタデータCTRを読み出す。暗号器12は、このカウンタデータCTRを暗号化して、暗号カウンタデータE(CTR)を生成する。暗号器12は、この暗号カウンタデータE(CTR)を、乱数生成器16のシードSDとして、つまりストリーミング暗号の共通鍵として設定する。これにより、乱数生成器16は、暗号学的に安全な乱数(つまり予測不可能な乱数)を発生させることができる。なお、カウンタデータCTRの初期値は、どんな値であっても良い。
【0049】
次に、暗号器12は、乱数生成器16に乱数の生成を要求する。この要求は、通信データ生成部11、またはXOR処理部17が行ってもよい。乱数生成器16は、通信データCDのデータ長と同じ、あるいは大きい乱数RNを生成し、乱数RNをXOR処理部17に送る。
【0050】
XOR処理部17は、乱数RN1を受けて、通信データCDと乱数RNのXOR(排他的論理和)を計算(つまり、通信データCDを暗号化)し、暗号通信データECDを生成する。以下の説明では、排他的論理輪を単に「XOR演算」と称す。XOR処理部17は、暗号通信データECDを、データ合成部19に送る。ここでは、通信データCDと乱数RNのXOR演算を一度に計算しているが、逐次行っても良い。
【0051】
データ合成部19は、CTR記憶部15から読み出したカウンタデータCTRを暗号通信データECDに付加して、カウンタデータCTR付きの暗号通信データECDを生成する。そして、データ合成部19は、これをUDPデータ送受信部21に送る。
【0052】
また、データ合成部19は、カウンタアップ部20に、カウンタデータCTRの更新を要求する。カウンタアップ部20は、CTR記憶部15からカウンタデータCTRを読み出し、この値を更新する。最も簡単な更新方法は、現在のカウンタデータCTRに1を加えたデータを次のカウンタデータCTRにする方法である。現在のカウンタデータのハッシュ値を次のカウンタデータCTRにするなど、この更新はどのようなものであっても良い。
【0053】
UDPデータ送受信部21は、カウンタデータCTR付きの暗号通信データECDにUDPヘッダを付加して、ネットワーク制御部22を介して、カウンタデータCTR付きの暗号通信データECDを、つまりUDPパケットを受信装置50Aに送信する。
【0054】
ついで、受信装置50Aの動作を説明する。UDPデータ送受信部60は、送信装置10Aが送信したUDPパケットを、ネットワーク制御部59を介して受信する。UDPデータ送受信部60は、UDPパケットのUDPヘッダを削除し、カウンタデータCTR付きの暗号通信データECDを、データ分解部51に送信する。
【0055】
データ分解部51は、カウンタデータCTR付きの暗号通信データECDから、カウンタデータCTRを読み取り、カウンタデータCTRを暗号器12に送る。またデータ分解部51は、カウンタデータCTR付きの暗号通信データECDから暗号通信データECDを読み取り、XOR処理部56に送る。
【0056】
一方、暗号器52は、読み取ったカウンタデータCTRを暗号化して、暗号カウンタデータE(CTR)を生成する。そして暗号器52は、この暗号カウンタデータE(CTR)を、乱数生成器55のシードSDとして、つまりストリーミング暗号の共通鍵として設定する。このように、乱数生成器16、55に入力するシードSDを、異なる乱数生成器で生成させるのではなく、カウンタデータを利用した同一の暗号方式で生成させている。
【0057】
暗号器52は、乱数生成器55に乱数の生成を要求する。この要求は、データ分解部51、またはXOR処理部56が行ってもよい。乱数生成器55は、暗号通信データECDのデータ長と同じ、あるいは大きい乱数RNを発生する。そして乱数生成器55は、乱数RN1をXOR処理部56に送る。
【0058】
XOR処理部56は、乱数RNを受けて、暗号通信データECDと乱数RNのXOR演算を行う。ある値Xに対して、同じ値YでXOR演算を2回行うと元の値Xに戻る。つまり、暗号・復号で、同じ乱数を2回用いて、XOR演算を行えば、正しく復号できる。従って、XOR処理部56は、暗号通信データECDを通信データCDに復号化する。XOR処理部56は、通信データCDを、通信データ解釈部57に送り、通信データ解釈部57は、送信装置10Aが送信した通信データCDの内容の解釈を行う。
【0059】
UDPパケットPKに付加されたカウンタデータCTRは、暗号化されていないので、第三者はカウンタデータを知り得る。しかし、暗号カウンタデータE(CTR)は、暗号化されたカウンタデータCTRなので、第三者には復号化できない。このことは、この方法で発生させたシードSDもまた第三者には予想されないということと等価である。つまり、ブロック暗号の共通鍵さえ秘密にできれば、カウンタデータCTRは公開されていても、暗号化カウンタデータE(CTR)、つまりシードSDを第三者に知られることはない。
【0060】
なお、カウンタデータCTRは、ブロック暗号で暗号化するので、暗号化カウンタデータE(CTR)のデータサイズは、ブロック暗号のブロック長になる。乱数生成器に必要なシードが、このブロック長サイズより小さければ、暗号化されたカウンタデータの一部分を利用するか、若しくはこの暗号化されたカウンタデータに何らかの計算処理を施し、シードのデータサイズに縮小すれば良い。もし逆に、乱数生成器に必要なシードが、このブロック長より大きければ、この暗号化されたカウンタデータに何らかの計算処理を施し、シードのデータサイズに拡張すれば良い。このような方法は種々あり、どのような方法を使っても良い。
【0061】
図2に沿って、パケットロスした場合の同期ずれ抑制について説明する。図2では、第1パケットPK1、・・・、第N−1パケットPKn−1、第NパケットPKnの送受信を図示している(N、nは3以上)。図2では、カウンタデータCTR1、・・・、CTRn−1、CTRnは1から始まるケースで説明しており、CTR1、CTR2、CTR3・・・はそれぞれ、1、2、3、・・・である。暗号器12、52で暗号化したものは、それぞれE(CTR1)、・・・、E(CTRn−1)、E(CTRn)である。暗号器12、52が、カウンタデータCTRを暗号化することで、パケット毎に、シードSDを設定している。
【0062】
UDP通信は、TCP通信とは異なり、コネクションレス通信なので、通信経路上でパケットロスしたり、パケットの到着順が逆になったり、することが起こり得る。例えば、通信経路上のルータの処理が混雑した場合などで、UDPパケットのロストが発生しやすい。
【0063】
まず、送信装置10Aが、パケットPK1を受信装置50Aに送信する。パケットPK1には、カウンタデータCTR1が含まれている。受信装置50Aは、受信したパケットPK1からカウンタデータCTR1を読み出し、暗号器52がこれを暗号化して、暗号カウンタデータE(CTR1)を取得する。乱数生成器55は、暗号カウンタデータE(CTR1)をシードSD1として乱数RN1を生成し、XOR処理部56は、生成された乱数RN1を用いて、パケットPK1に含まれる暗号通信データを復号化する。
【0064】
この処理を繰り返し、送信装置10Aは、パケット毎に、シードSDを設定して、パケットPK1、PK2、PK3、・・・を順次、受信装置50Aに送信していく。こうして、送信装置10Aが、乱数RNn−1を発生させ、暗号カウンタデータE(CTRn−1)を付与したパケットPKn−1を、受信装置50Aに送信した場合に、パケットPKn−1が、通信経路上のどこかでロストしたとする。この場合、受信装置50Aは、ロストしたパケットPKn−1を受信しない。
【0065】
この状態で、送信装置10Aが、乱数RNnを発生させ、暗号カウンタデータE(CTRn)を付与したパケットPKnを、受信装置50Aに送信する。パケットPKnはロストすることなく、受信装置50Aに受信されたとする。シードはパケット毎に設定されているので、パケットPKnには、暗号通信データと、その暗号通信データを復号するための情報としてカウンタデーCTRnとが含まれている。
【0066】
暗号器52は、受信したパケットPKnから、カウンタデータCTRnを暗号化して暗号カウンタデータE(CTRn)を生成し、乱数生成器55のシードSDnとして入力する。乱数生成器55は、パケットPKnのデータ部のデータサイズ分の乱数RNnを発生する。受信装置50Aは、パケットPKn−1を受信していないが、パケットPKnに含まれる暗号通信データを、パケットPKnからカウンタデータCTRnが読み出せるので、カウンタデータCTRnを暗号化することで、暗号文データを復号化することが出来る。これにより、パケットPKnの暗号と復号では問題なく同期が取れる。これは、通常のストリーミング暗号とは異なり、パケット毎に、カウンタデータを元にシードを生成し、これを元に乱数を生成しているからである。
【0067】
このように、送信装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて復号化装置に送信するので、受信装置は、暗号文データの復号化に際して、復号化処理の鍵生成に必要な情報を受信することが出来る。これにより、パケットが送信される途中で、パケットロスしたり、パケットの順番が入れ替わったりした場合であっても、送信側と受信側の間の同期ずれを抑制することが出来る。特に、パケットロスや到着順が入れ替わることが起き得る、UDP通信において、良好に、暗号化、および復号化処理を行える。また、ストリーミング暗号による暗号・復号とは異なり、かなり先のカウンタデータを付与された不正なパケットを送信されても、サービス不能状態に陥ることを抑制することが出来る。
【0068】
一般に、ブロック暗号は、ストリーミング暗号に比較して処理速度が遅いが、本実施例では、ブロック暗号をストリーミング暗号のシード生成に利用しているので、平文を直接ブロック暗号で暗号化する場合に比べて、パケットあたりのブロック暗号の処理回数を少なくすることが出来る。これにより、トータルの処理速度が速くすることが出来る。
【0069】
ここで、本実施例(XOR処理部と乱数生成器にストリーミング暗号を適用し、暗号器にブロック暗号を適用する場合)と、単なるブロック暗号の処理速度との対比について、具体的に説明する。リアルタイム性を要求される音声・画像通信のUDP通信では、128バイトや256バイト程度のUDP通信を行う。AES暗号のブロック暗号方式で暗号・復号を行うとすると、1パケットが128バイトで、ブロック暗号の処理単位が16バイトの場合、1パケット処理するのに、8回の暗号・復号処理が必要となる。しかしこの方法を用いれば、1パケット処理するのに、1回の128ビットのAES暗号は必要となるが、その後は、128バイトのArcfourで暗号・復号処理を行える。もしも、Arcfourが、128ビットのAES暗号より処理速度で倍のスピードがあれば、1パケットが128バイトの場合、約5回の128ビットのAES暗号処理をしたのと同じ速度になる。つまり約1.6倍の速度で処理できることになる。実際は、Arcfourのシードのセット時間に余計な処理時間がかかるので、これよりも速度は落ちるが、1パケットのデータサイズが増加すれば、この処理速度はさらに向上する。
【0070】
このように、リアルタイム性を要求される音声・画像通信のUDP通信において、高速な暗号・復号処理を行うことが可能となり、暗号通信と高速通信とを両立できるようになる。なお、暗号器12、52の暗号・復号処理には、ブロック暗号ではなく、ストリーミング暗号を利用することが可能である。ストリーミング暗号として、Arcfourのような、ソフト処理ではブロック暗号より、処理速度が速いストリーミング暗号を用いれば、高速な暗号・復号処理が可能となる。
【0071】
図3では、送信装置10Aの主要要素の詳細を説明している。主要要素は、図3上方に示す破線枠内の、暗号器12、乱数生成器16、およびXOR処理部17である。図3下方は、この主要要素の詳細を示している。ここでは、カウンタデータCTR1の処理のみを示している。
【0072】
暗号器12により暗号化されたカウンタデータCTR、つまり暗号カウンタデータE(CTR)が、乱数生成器16に入力されると、乱数RN1を生成する。乱数RN1は、乱数列RN11、RN12、RN13、・・・から構成される。一方、平文データは、平文PT1、PT2、PT3、・・・から構成される。平文PT1、PT2、PT3のデータ長は、乱数列RN11、RN12、RN13、・・・の乱数長とそれぞれ一致している。従って、XOR処理部17は、平文PT1と乱数列RN11、平文PT2と乱数列RN12、平文PT3と乱数列RN13、・・を順次、XOR演算する。これらの計算結果が暗号文データとなる。この時点で、「暗号化されたUDPパケット」を生成したことになる。なお、UDPパケットを暗号化するというのは、UDPパケット全体を暗号化するという意味ではない。通常は、UDPパケットのUDPデータ領域の一部、またはすべてを暗号化する。これ以降の説明も同じである。
【0073】
送信装置10Aの動作を、図4のフローチャートに沿って再度説明する。S101では、カウンタデータCTRの初期値を設定する。カウンタデータCTRは第三者に知られても問題ないので、暗号化しない。カウンタデータCTRの初期値は0でもその他の値でも良い。実際の実装では、送信装置10A、および受信装置50Aの間で、所定のIV(イニシャルベクタ)値を交換しておき、これをカウンタデータと混合するのが、セキュリティレベルが向上し、望ましい。
【0074】
S102では、カウンタデータCTRを暗号器12で暗号し、暗号カウンタデータE(CTR)を求める。例えば、暗号器12がAES暗号を実行する場合は、AESの暗号化関数であるAES_Encryptに、カウンタデータCTRを代入する。
【0075】
S103では、暗号カウンタデータE(CTR)を乱数生成器16のシードとして入力する。例えば、乱数生成器16が、ストリーミング暗号としてArcfourを実行する場合は、Arcfourの初期化関数であるArcfour_Initに、この暗号カウンタデータE(CTR)を代入する。
【0076】
S104では、1パケット分の平文データと、乱数生成器16が発生した1パケット分のデータサイズの乱数とをXOR演算して、1パケット分の暗号文データを生成する。例えば、乱数生成器、つまりストリーミング暗号がArcfourであれば、Arcfourの暗号化関数であるArcfour_Encryptに、平文データを代入する。
【0077】
S105では、カウンタデータCTRをUDPパケットPKに付加し、暗号文データをUDPパケットとして受信装置50Aに送信する。
【0078】
S106では、送信データの準備ができていない場合は(S106のNo)、送信データの準備ができるまで待つ。なお、これ以上の送信データがなければ、ここで終了しても良い。
【0079】
送信データの準備ができた場合は(S106のYes)、S107で、カウンタデータCTRを更新する。以下、S102〜S107を繰り返す。ここでは、カウンタデータCTRを1ずつアップさせているが、次に利用するカウンタデータCTRが、以前利用したカウンタデータCTRと同じものにならないように工夫を行えば、その方法はどのようなものであっても良い。カウンタデータCTRのハッシュ値を、新たなカウンタデータCTRとすることも可能である。
【0080】
UDPパケットPKは、図5に示すように、ヘッダ領域と、UDPデータ領域UDFを有している。ヘッダ領域は、MACヘッダHD1、IPヘッダHD2、およびUDPヘッダHD3を含む。UDPデータ領域UDFは、カウンタデータCTR、および暗号UDPデータEUDを含む。UDPデータ領域UDFには、実データの他、改ざんチェックやデータ誤り検知のために、MACやCRCが付加されていても良い。
【0081】
カウンタデータCTRのデータ長を固定にしておけば、受信装置50Aは、暗号UDPデータEUDがどこからスタートするかは簡単に分かる。またカウンタデータCTRにデータ長を付与すれば、カウンタデータCTRが可変長であっても、受信装置50Aはこのデータ長を読み取ることで、カウンタデータCTRのサイズを求めることが可能なので、同じく、暗号UDPデータEUDがどこからスタートするかが簡単に分かる。
【0082】
カウンタデータCTRは、図5に示すように、UDPデータ領域UDFの先頭にセットされている。カウンタデータCTRは、UDPパケットPKに関連付けられていれば、カウンタデータCTRを付加する箇所は、UDPデータ領域UDFである必要はなく、UDPパケットPKのどこにセットしても良い。
【0083】
また、UDPパケットに付与されているいずれかのヘッダ(例えば音声データであれば、この音声パケットのヘッダなど)より、カウンタデータCTRが導くことが出来れば、カウンタデータCTRをUDPパケットPKに付加する必要はない。例えば、カウンタデータCTRを、既存のEthernet(登録商標)ヘッダ、IPヘッダ、UDPヘッダの中から導くことの出来る値にすることも可能である。
【0084】
また、カウンタデータCTRを導く元データをUDPパケットPKに付加しても良い。例えば、図6に示すように、S301で、元データODをハッシュ計算ルーチンで処理する、つまり元データODのハッシュ値を計算することで、カウンタデータCTRを生成する。
【0085】
受信装置50Aの動作を、図7のフローチャートに沿って再度説明する。はじめに、S201で、図4の要領で生成されたUDPパケットPKを受信する。
【0086】
S202で、データ分解部51が、UDPパケットPKに付加されたカウンタデータCTRを読み取る。送信装置10Aおよび受信装置50A間で、所定のIV(イニシャルベクタ)値を交換しておき、これをカウンタデータと混合することになっていれば、ここで、カウンタデータCTRとIVの混合を行い、新たなカウンタデータCTRを計算する
S203で、暗号器52が、カウンタデータCTRを暗号化し、暗号カウンタデータE(CTR)を求める。例えば、送信側の暗号器12がAES暗号であれば、AESの暗号化関数であるAES_Encryptに、カウンタデータCTRを、暗号器52に代入する。
【0087】
S204で、暗号器52は、暗号カウンタデータE(CTR)をシードSDとして、乱数生成器55に入力する。例えば、送信側の乱数生成器16が実行するストリーミング暗号がArcfourであれば、Arcfourの初期化関数であるArcfour_initに、暗号カウンタデータE(CTR)を、乱数生成器55に代入する。
【0088】
乱数発生器55は、暗号カウンタデータE(CTR)を用いて乱数を発生し、S205で、1パケット分の暗号文データと、発生した1パケット分のデータサイズの乱数をXOR演算して、1パケット分の平文データを生成する。例えば、乱数生成器55が実行するストリーミング暗号がArcfourであれば、Arcfourの暗号化関数であるArcfour_Encryptに、暗号文データを代入する。送信装置10AからまたUDPパケットが送信されてきたら、S201〜S206を繰り返す。
【0089】
ついで、本実施例の効果を、図8に沿って説明する。図8は、UDPの1パケットのデータサイズが256バイトの場合における、ブロック暗号のCTRモード、実施例1、ストリーミング暗号でのそれぞれの処理速度を示している。
【0090】
図8左方は、CTRモードの処理速度:約15Mbpsを示している。CTRモードとは、256バイトすべてを128ビットのAESカウンタモードで暗号処理する場合である。128ビットのAESの1ブロックのデータサイズは16バイトなので、256バイトのブロック数は、256バイト / 16バイト = 16ブロックである。従って、16回のAES暗号(+256バイト分の排他的論理和の計算)が必要となる。UDPの1パケットに対して1回しかカウンタデータをAES暗号せず、この暗号化されたカウンタデータを256バイトすべての排他的論理和の計算に用いるとすることも可能であるが、これでは、同じ平文が同じ暗号文となるため、著しくセキュリティレベルを下げてしまう。
【0091】
図8右方は、ストリーミング暗号の処理速度:31Mbpsである。ここでは、ストリーミング暗号として、Arcfourを使用している。
【0092】
図8中央は、本実施例の処理速度:約27Mbpsを示している。ここでは、暗号器12、52にAESカウンタモードを適用し、乱数生成器16、55およびXOR処理部17、56にArcfour暗号を適用した場合である。
【0093】
本実施例では、UDP1パケットに1回だけカウンタデータをAES暗号化し、この暗号化されたカウンタデータをArcfour暗号の共通鍵(シード)として、256バイトすべてをArcfour暗号で暗号化する。通常のArcfour暗号に比べると、1回のAES暗号と、共通鍵のセット時間が余計な処理時間となる。通常、ソフト処理では、ArcfourはAES暗号の半分以下の時間で暗号・復号処理を行えるので、本方式をAES暗号処理で換算すると、1回のAES暗号(カウンタデータの暗号化)+16回のAES暗号/2(図8左方に示したCTRモードの場合の半分)+α(共通鍵のセット時間)により、おおよそ、9〜10回程度のAES暗号・復号処理となる。測定環境は、CPU:MIPS 32ビット、200MHzである。測定方法としては、UDPヘッダ作成時間+暗号処理時間を測定した。また、1パケットあたりの平分データサイズは1024バイト、データ中身は“0×00〜0×FF”を4回セット、10Mバイト分繰り返した時間を計測し、bpsを算出、CTRモードには高速なAESを利用、ストリーミング暗号にはArcfourを利用した。以上の測定結果から、ブロック暗号を基準にすれば、本実施例の処理速度は、ストリーミング暗号の処理速度:31Mbpsに接近している。
【0094】
このように、本実施例では、ブロック暗号で暗号化したカウンタデータを、通信データの暗号・復号処理に直接用いるのではなく、暗号化したカウンタデータを、通信データを暗号化する共通鍵暗号の共通鍵として用いている。なお、図1のストリーミング暗号を実行する要素(乱数生成器16、55およびXOR処理部17、56)は、Arcfourのようなストリーミング暗号に限られるものではなく、AESや3DESのようなブロック暗号であっても良い。なお、全体の処理速度を上げる点で、暗号・復号を実行する要素(乱数生成器16、55およびXOR処理部17、56)の暗号方式は、鍵を生成する要素(暗号器12、52)の暗号方式より処理速度が速いことが望ましい。
【0095】
なお、悪意のある攻撃者が送信装置10Aのふりをして、意図的に、かなり先のカウンタデータが付与された不正なUDPパケットを送信するかもしれないので、受信装置50Aは、MACチェックを行うようにして、これが正しい場合のみ、最大のカウンタデータを更新するようにしてもよい。一般に、正規のUDP通信であれば、極端なパケットロスがない限り、カウンタデータが極端に飛ぶことはない。従って、極端なカウンタデータの飛びがあれば、それはかなりパケットロスが発生していることになるので、受信装置50Aは飛んだカウンタデータをいつまでも受信できるものとして、受信装置50Aに記憶しておく必要はない。
【0096】
この仕組みを図9、および図10を用いて、詳細を説明する。図9は、MACチェックを行う際のUDPパケットPKのフォーマットの一例を示している。送信装置10Aは、UDPデータ領域UDFに、カウンタデータCTR、実際のUDPデータ(平文UDPデータPUD)、MACデータMDをセットしておく。XOR処理部17が、乱数RN1と平文UDPデータPUDのXOR演算を行い、暗号UDPデータEUDを生成する。送信装置10Aは、UDPデータ領域UDFに、カウンタデータCTR、暗号UDPデータEUD、MACデータMDをセットして、UDPパケットPKを受信装置50Aに送る。受信装置50Aでは、UDPパケットPKを受信し、XOR処理部56で、この乱数RN1と暗号UDPデータEUDとのXOR演算を行い、平文UDPデータPUDを取得する。
【0097】
図10は、図9のUDPパケットPKのフォーマットで通信している際の、MACチェック方法の一例を示すものである。送信装置10Aは、平文UDPデータPUD、つまり通信データを用意する。MAC計算器23は、平文UDPデータPUDからMACデータMD1を計算する。MAC計算手法には、MD5、SHA1、SHA2など、様々な手法があるが、送信装置10A・受信装置50Aで同じ計算手法を用いるものとする。
【0098】
図10では、カウンタデータCTRは通し番号で、カウンタデータCTRは1ずつカウントアップするものとする。送信装置10Aは、送信するUDPパケットPKに付与するカウンタデータCTR1を用意する。実際は、暗号器12が、現在のカウンタデータCTR1を、CTR記憶部15より読み出す。暗号器12、および乱数生成器16は、図2と同様の暗号を行い、平文UDPデータPUDから暗号UDPデータEUDを生成する。暗号化が終了したら、次回のパケット送信に備えて、カウンタデータを1アップする。実際は、暗号器12がカウンタアップ部20に指示して、カウンタデータCTRのアップを行わせ、このアップしたカウンタデータをCTR記憶部15に保存させる。
【0099】
送信装置10Aは、カウンタデータCTRと暗号UDPデータEUDとMACデータMD1を受信装置50Aに送信する。受信装置50Aは、これらのデータを受信する。受信装置50Aでは、現在までに取得したカウンタデータCTRの最大値CTRmaxをCTR記憶部61に記憶している。また、CTR記憶部61は、最大値未満でまだ受信していないカウンタデータCTRnyも記憶している。
【0100】
受信装置50Aは、受信したカウンタデータCTR1をカウンタチェック部62でチェックする。具体的には、次のような方法でチェックする。まず、CTR記憶部61から、2つのカウンタデータCTRmax、CTRnyを読み出す。受信したカウンタデータCTR1が、カウンタデータCTRmaxより大きいか、またはカウンタデータCTRnyに該当するか否かをチェックする。受信したカウンタデータCTR1が、カウンタデータCTRmaxより小さく、かつ、カウンタデータCTRnyに該当しない場合は、このUDPパケットPKを、カウンタチェック部62が破棄する。これによりリトライ攻撃が防御できるようになる。
【0101】
一方、受信したカウンタデータCTR1が、カウンタデータCTRmaxより大きい、または、カウンタデータCTRnyに該当する場合は、UDPパケットPKは破棄されない。暗号器52および乱数生成器55は、図2と同様の復号を行い、暗号UDPデータEUDから平文UDPデータPUDを取得する。
【0102】
MAC計算器63は、平文UDPデータPUDからMACデータMD2を計算する。MACデータ比較器65は、この計算で求めたMACデータMD2と、受信したUDPパケットに付与されていたMACデータMD1とを比較する。一致しない場合は、何もしないか、またはMACデータ比較器65が、このUDPパケットを破棄する。一致した場合は、MACデータ比較器65は、カウンタアップ部66に指示して、カウンタデータのアップを行わせ、このアップしたカウンタデータCTRをCTR記憶部61に保存させる。なお、受信したカウンタデータCTRが現在の最大値より大きい場合は、このカウンタデータCTRを新たな最大値として記憶する。またその際、受信したカウンタデータCTRが現在の最大値より2以上飛んでいた場合には、この飛んだカウンタデータCTRはまだ未受信のカウンタデータCTRとして記憶する。受信したカウンタデータCTRが未受信のカウンタデータCTRであった場合には、その未受信で記憶しているカウンタデータCTRを消去する。
【実施例2】
【0103】
図11に沿って実施例2における、通信システムの動作を説明する。実施例2の通信システムは、図1に示す実施例1の通信システムと同一である。後述する動作方法が異なる。
【0104】
図11の動作方法は、図2の動作方法と比較して、2つの相違点がある。1つ目の相違点は、乱数生成器が、一定のパケット毎にシードを変更する点である。例えば、カウンタデータが所定値を超えた場合に、若しくは受信側へ送信したパケットの全ての通信データ数が所定値を超えた場合に、シードを変更する。
【0105】
2つ目の相違点は、送信装置が、所定パケットから、いずれかのパケットまでの送信した、全ての通信データ数を、受信装置が把握できるようにする。例えば、パケットPKn+xやパケットPKn+x+1などに、パケットPKnからの通信データ数の総和(つまり、パケットPKnを起点として、パケットPKn+xやパケットPKn+x+1までの全パケットのデータサイズの総和)をUDPパケットのUDPデータ領域に記載する。なお、xは、x=1、2、・・・である。
【0106】
また、実施例2におけるストリーミング暗号は、通信データに依存しない乱数を用いたものである。乱数生成器が、通信データとは独立に存在するストリーミング暗号で、例えば、Arcfourなどである。CBCモードなど、通信データに依存するストリーミング暗号(ブロック暗号の操作モードを利用したストリーミング暗号)は該当しない。
【0107】
受信装置50Bは、この通信データ数を取得することで、各UDPパケット(UDPデータ部)が送信される前に、送信装置10Bがどれくらいのデータサイズの通信データを送信したかを知ることができる。これにより、各UDPパケットの復号処理を行う前に、乱数生成器に、この通信データ数分の乱数を発生させれば、たとえ、いくつかのUDPパケットがロストしても、同期をとることができる。
【0108】
図12に沿って、実施例2における送信装置の動作について説明する。はじめに、S111で、カウンタデータCTRの初期値を設定する。カウンタデータCTRは第三者に知られても問題ないので、初期値は0でもその他の値でも良い。実際の実装では、送信装置10Bと受信装置50Bの間で所定のIV(イニシャルベクタ)値を交換しておき、これをカウンタデータCTRと混合するのが、セキュリティレベルが向上し、望ましい。
【0109】
S112で、カウンタデータCTRが一定の値Nを超えたか否かを調べる。具体的には、CTR Mod N=0の方程式が成り立つか否かを判断する。CTR Mod N≠0であれば(S112のNo)、すなわち、NをカウンタデータCTRで割った剰余が0でない場合、S116に進む。例えば、Nが5の場合、カウンタデータCTRが、1、2、3、4、6、7、8・・・の場合に、S116に進む。一方、CTR Mod N=0であれば(S112のYes)、すなわち、NをカウンタデータCTRで割った剰余が0である場合、S113で、通信データ数TNを0に設定する。
【0110】
S114で、カウンタデータCTRを暗号器12で暗号し、暗号カウンタデータE(CTR)を求める。例えば、AESの暗号化関数であるAES_Encryptに、カウンタデータCTRを代入する。
【0111】
なお、カウンタデータCTRが一定の値Nを超える場合に限らず(つまり、複数のカウンタデータを超えた場合に限らず)、一定のカウンタデータのみを超えた場合に、本発明を適用することも可能です。または、ある決められたステップ数を越えるたびに実行してもよい。例えば、ステップ数を10とすれば、カウンタデータが10、20、30、・・・というように、10刻みのタイミングとすることができる。
【0112】
S115で、暗号カウンタデータE(CTR)を乱数生成器16のシードSDとして入力する。例えば、Arcfourの初期化関数であるArcfour_Initに、この暗号カウンタデータE(CTR)を代入する。
【0113】
S116で、パケット分の平文データと、乱数生成器16が発生した1パケット分のデータサイズの乱数とをXOR演算して、1パケット分の暗号文データを生成する。例えば、Arcfourの暗号化関数であるArcfour_Encryptに、平文データを代入する。
【0114】
S117で、カウンタデータCTRと通信データ数TN(n)をUDPパケットPKに付加し、このUDPパケットを受信装置50Bに送信する。
【0115】
S118で、通信データ数TN(n)を更新する。前の通信データ数TN(n)に、このUDPパケットPKのデータサイズを加算し、通信データ数TN(n+1)を求め、通信データ数TN(n+1)を所定のメモリ(図示せず)に記憶する。
【0116】
S119で、送信データの準備ができていない場合は(S119のNo)、送信データの準備ができるまで待つ。なお、これ以上の送信データがなければ、ここで終了しても良い。一方、送信データの準備ができた場合は(S119のYes)、S120で、カウンタデータCTRを更新する。これ以降、S112からS120を繰り返す。
【0117】
ついで、図13に沿って、実施例2における受信装置の動作を説明する。受信装置50Bでは、図示しないメモリが、次の通信データ数RDを記憶している。次の通信データ数とは、送信装置が所定のパケットから任意のパケットまでを順次送信し、かつパケットロスやパケットの到着順の入れ違いがない場合に、受信装置が受信すべく、所定のパケットから任意のパケットまでの通信データ数の総和をいう。次の通信データ数RDは、初期値は0である。はじめに、S211では、図12の要領で生成されたUDPパケットPKを受信する。
【0118】
S212で、UDPパケットPKに付加されたカウンタデータCTRと通信データ数TD(n)を読み取る。
【0119】
S213で、カウンタデータCTRが一定の値Nを超えたか否かを調べる。具体的には、CTR Mod N=0の方程式が成り立つか否かを判断する。この処理は、図12のS112と同様である。
【0120】
CTR Mod N≠0であれば(S213のNo)、S217に進む。CTR Mod N=0であれば(S213のYes)、S214で、次の通信データ数RDを0として所定のメモリ(図示せず)に記憶する。なお、図示していないが、ここで、読み取った通信データ数TD(n)が0以外の値であれば、エラーとしてこのUDPパケットPKを破棄する。
【0121】
S215で、カウンタデータCTRを暗号器52で暗号し、暗号カウンタデータE(CTR)を求める。例えば、AESの暗号化関数であるAES_Encryptに、カウンタデータCTRを代入する。
【0122】
S216で、暗号カウンタデータE(CTR)を乱数生成器55のシードSDとして入力する。例えば、Arcfourの初期化関数であるArcfour_Initに、この暗号カウンタデータE(CTR)を代入する。
【0123】
次にS217で、読み取った通信データ数TD(n)と次の通信データ数RD(n)を比較する。読み取った通信データ数TD(n)が、次の通信データ数RD(n)より小さければ(S217のYes)、パケットの到着順が逆になったため、受信したUDPパケットPKが、処理済みのパケットよりカウンタデータの値が若い未処理のパケットがあるということなので、S214に進む。なお、処理済みのパケットよりカウンタデータの値が若い未処理のパケットがなければ(S217のNo)、読み取った通信データ数TD(n)<次の通信データ数RD(n)となるのは不正なので、このUDPパケットPKを破棄する。
【0124】
S218で、通信データ数TD(n)と次の通信データ数RD(n)が等しければ(S218のYes)、S220に進む。通信データ数TD(n)と次の通信データ数RD(n)が等しくない場合(S218のNo)、パケットロス、若しくはパケット到着順が入れ替わっているので、S219で、乱数列を飛ばす処理を行う。具体的には、通信データ数TD(n)から次の通信データ数RD(n)を差し引いた通信データ数と同一の乱数列分、乱数を発生させる。この乱数列は直ちに利用せず、後で、これに対応したUDPパケットPKが受信した場合に備えて、この乱数列を所定のメモリ(図示せず)に記憶しておく。これにより、次に再び乱数を発生させなくて済み、S217でS214に戻る処理を行わなくて済むようになる。このように、通信データ数TD(n)に応じて、パケットに対応した乱数列を設定する。この設定処理は、図示しないCPUが実行する。
【0125】
S220で、1パケット分の暗号文データと、乱数生成器52が発生した1パケット分のデータサイズの乱数とをXOR演算して、1パケット分の平文データを生成する。例えば、Arcfourの暗号化関数であるArcfour_Encryptに、暗号文データを代入する。
【0126】
S221で、次の通信データ数RD(n)を更新し、所定のメモリ(図示せず)に記憶する。具体的には、通信データ数RD(n)に1パケット分のデータサイズを加算した値を、次の通信データ数RD(n+1)として、その値を所定メモリに記憶する。送信装置10BからまたUDPパケットが送信されてきたら、S211〜S221を繰り返す。
【0127】
このように、受信装置50Bは、パケットPKn+x+1の前に送信された通信データ数を知ることで、パケットPKn+xがロストしたか、または順番が前後しているかを知ることができる。そして、パケットPKn+x+1を復号化するために、パケットPKn+x+1の前に送信された通信データ数から、パケットPKn+x−1の前に送信された通信データ数を差し引いた通信データ数を計算して、この差の分、乱数生成器55に乱数を生成させる。なお、1パケットのデータ部のデータサイズが固定されている場合には、送信装置10Bは送信した通信データ数をUDPのデータ部に記載する必要はない。受信装置50BはUDPパケットからカウンタデータを読み取ることで、送信装置10Bが送信した通信データ数を知ることができる。
【0128】
こうすれば、パケットPKn+x+1に用いられる乱数は、送信装置10Bが暗号に利用した乱数RNn+x+1と同じものとなり、同期が取れるので、正しく復号化できる。
【0129】
しかも、ストリーミング暗号による暗号・復号処理とは異なり、悪意のある攻撃者が、送信装置10Bのふりをして、かなり先のカウンタデータが付与されたUDPパケットを受信装置50Bに送ったとしても、図2に比べて、対応に多少時間を要するだけでサービス不能状態に陥ることがない。かなり先のカウンタデータが付与されたUDPパケットが送られたとしても、受信装置50BはN、N+1、N+2、・・・を基準に乱数列を生成するだけなので、短い時間で対応できる。なお、パケットの暗号・復号処理のほとんどを、Arcfourなど処理の速いストリーミング暗号で行えるので、通信データ数を付加することによる処理時間のロスはあるものの、図2よりさらに高速に暗号・復号処理を行うことが可能となる。
【0130】
なお、ここでは、送信装置10Bがシードを設定後に送信した通信データ数を、受信装置50Bが把握できるようにするために、送信装置10BがUDPパケットに通信データ数の情報を付加する、つまり通信データ数をUDPパケットに記載するとして説明したが、送信装置10Bと受信装置50Bで送受信するUDPパケットのデータ部のデータサイズを固定にするなど、1回のUDPパケットで送信する前記通信データ数を事前に取り決めておけば、通信データ数をUDPパケットに記載する必要はなく、さらに高速なUDP通信が実現できる。
【0131】
このように、実施例2を用いれば、リアルタイム性を要求される音声・画像通信のUDP通信で、さらに高速な暗号・復号処理を行うことが可能となり、暗号通信と高速通信とを両立できるようになる。
【0132】
このように、パケットロスやパケットの到着順に入れ替わりがなければ、毎回、シードSDを入力することも、乱数を余計に発生させることもなくなるので、高速な復号処理が行えるようになる。
【0133】
また、UDP通信で、高速な暗号通信を行うことが可能となるだけでなく、AESカウンタモードなど、処理速度の遅い暗号処理を減らせるので、より高速な暗号・復号処理が可能となる。
【実施例3】
【0134】
図14は、実施例3における監視システムを示す構成図である。図14において、通信システムの一例である、監視システム1を示す。監視システム1は、PC(パーソナルコンピュータ)50Cと、ネットワークカメラ10Cを有している。PC50Cとネットワークカメラ10Cは、ネットワークケーブル205で接続されている。PC50Cは、受信装置の一例であり、映像を受信する。モニタ203は、受信した映像を表示する。PC50Cは、ネットワーク制御部59と鍵設定部53を、外部から接続自在に構成されている。ネットワーク制御部59は、ネットワークケーブルが接続自在であり、ネットワーク通信を制御する。鍵設定部53は、USB(Universal Serial Bus)インタフェースなど、外部メモリと鍵データの受け渡しを行い、鍵の設定を行う。
【0135】
ネットワークカメラ10Cは、送信装置の一例であり、監視を行う。ネットワークカメラ10Cは、カメラ部101を有しており、ネットワーク制御部22と鍵設定部13を、外部から接続自在に構成されている。カメラ部101は、映像データを撮影し、映像データの生成を行う。ネットワーク制御部22は、ネットワークケーブルが接続自在であり、ネットワーク通信を制御する。鍵設定部13は、鍵設定部53と同様、USBインタフェースなど、外部メモリと鍵データの受け渡しを行い、鍵の設定を行う。ネットワークケーブル205は、例えばイーサネット(登録商標)ケーブルやシリアルケーブルなど、各種のケーブルが適用可能である。なお、無線通信の場合は、ケーブルは不要である。
【0136】
図15は、図14の監視システムの機能ブロック図である。図1と共通する要素は、同一の符号を付している。映像通信を開始する前に、事前設定を行う。暗号器12と暗号器52は、カウンタモードを実行するブロック暗号器であり、両者で同じ鍵KY1を設定する。
【0137】
はじめに、設定者が、USBメモリ内に鍵KY1を用意する。設定者は、このUSBメモリを、USBインタフェース機能を持つ鍵設定部70に挿入する。鍵設定部70は、USBメモリから鍵KY1を読み込み、これを暗号器12にセットする。
【0138】
また設定者は、このUSBメモリを、USBインタフェース機能を持つ鍵設定部71にも挿入する。鍵設定部71は、USBメモリから鍵KY1を読み込み、これを暗号器52にセットする。ここでは、設定者はUSBメモリを鍵設定部70に先に挿入したが、鍵設定部71に先に挿入しても構わない。また、USBメモリを利用して鍵の設定を行っているが、図1と同様に、公開鍵暗号方式を用いて、設定者を介さずに自動に設定させることも可能である。
【0139】
次に、カメラ部101が、映像撮影を行い、映像データ生成部72が、映像データIDを生成し、この映像データIDをXOR処理部17に送る。これと同時にカメラ部101は暗号器12に、暗号処理開始を通知する。なお、この暗号処理開始の通知は、XOR処理部17が行っても良い。
【0140】
暗号器12は、CTR記憶部15から現在のカウンタデータCTRを読み出し、このカウンタデータCTRを暗号化して、暗号カウンタデータE(CTR)を生成する。そして、この暗号カウンタデータE(CTR)を、乱数生成器16のシードSDとして設定する。なお、カウンタデータの初期値はどんな値であっても良い。
【0141】
次に暗号器12は、乱数生成器16に乱数の生成を要求する。この要求は、カメラ部101、またはXOR処理部17が行ってよい。乱数生成器16は、映像データIDのデータ長と同じ、あるいは大きい乱数を発生する。そして、乱数RNをXOR処理部17に送る。
【0142】
XOR処理部17は、乱数RNを受けて、映像データIDと乱数のXOR演算を行い、暗号映像データEIDを生成し、この暗号通信データEIDを、データ合成部19に送る。ここでは、一度に映像データIDと乱数のXOR演算を行っているが、逐次行っても良い。
【0143】
データ合成部19は、CTR記憶部15から、現在のカウンタデータCTRを読み出し、このカウンタデータCTRを暗号映像データEIDに付加する。カウンタデータCTR付きの暗号映像データEIDを生成し、これをUDPデータ送受信部21に送る。
【0144】
また、データ合成部19は、カウンタアップ部20に、カウンタデータCTRの更新を要求する。カウンタアップ部20は、カウンタデータCTRをCTR記憶部15から読み出し、この値を更新する。最も簡単な更新方法は、現在のカウンタデータに1を加えたデータを次のカウンタデータにする方法であるが、現在のカウンタデータのハッシュ値を次のカウンタデータにするなど、この更新はどのようなものであっても良い。但し、同じカウンタデータが出現しない方法を採用するのが望ましい。
【0145】
UDPデータ送受信部21は、カウンタデータCTR付きの暗号映像データEIDにUDPヘッダを付加して、ネットワーク制御部22を介して、カウンタデータCTR付きの暗号映像データEIDを、PC50Cに送信する。
【0146】
PC50Cでは、UDPデータ送受信部60が、ネットワーク制御部59を介して、カウンタデータCTR付きの暗号映像データEIDを含むUDPパケットを受信する。
【0147】
データ分解部51は、カウンタデータCTR付きの暗号映像データEIDを、UDPデータ送受信部60から受け取る。このカウンタデータCTR付きの暗号映像データEIDから、カウンタデータCTRを抜き出し、このカウンタデータCTRを暗号器52に送る。また、カウンタデータCTR付きの暗号映像データEIDから、暗号映像データEIDを抜き出し、この暗号映像データEIDをXOR処理部56に送る。
【0148】
暗号器52は、カウンタデータCTRを暗号化して暗号カウンタデータE(CTR)を生成する。そして、この暗号カウンタデータE(CTR)を、乱数生成器55のシードSDとして設定する。
【0149】
また、暗号器52は、乱数生成器55に乱数RNの生成を要求する。この要求は、データ分解部51、またはXOR処理部56が行うものとすることもできる。乱数生成器55は、暗号映像データEIDのデータ長と同じ、あるいは大きい乱数RNを発生する。そして、乱数RNをXOR処理部56に送る。
【0150】
XOR処理部56は、乱数RNを受けて、暗号映像データEIDと乱数RNのXOR演算を行い、映像データIDを取得する。そして、この映像データIDを、映像データ生成部73に送る。映像データ生成部73は、ネットワークカメラ10Cが送信した映像データIDをモニタ203に表示させる。
【0151】
このように、本実施例の監視システムは、実施例1と同様に、同期ずれを抑制することが出来るので、リアルタイム通信が要求される映像通信で、UDP通信が適用された場合であっても、セキュリティを確保しながら、映像通信を円滑に行うことが出来る。
【実施例4】
【0152】
図16は、実施例4におけるUDP通信に利用できるように、ストリーミング暗号の利用方法を改良した手段を説明するブロック図である。本実施例では、通信データ数を用いて同期ずれを抑制する点で、実施例2と同様であるが、シード生成を行う暗号器12、52を備えていない。
【0153】
図16の暗号化・復号化手段の特徴は、パケットPKn−1やパケットPKnなどに、送信装置10Dがそれ以前に送信した通信データ数の情報を記載するところである。この通信データ数の情報は、送信装置10Dが、UDPパケットのデータ部に記載し、これを受信装置50Dが読み取るようになっている。
【0154】
受信装置50Dは、この通信データ数を取得することで、各UDPパケット(UDPデータ部)が送信される前に、送信装置10Dがどれくらいのデータサイズの通信データを送信したかを知ることができる。これにより、各UDPパケットの復号化の前に、この通信データ数分の乱数を発生させれば、たとえ、いくつかのUDPパケットがロストしても、同期をとることができるようになる。
【0155】
図16では、受信装置50Dは、パケットPKnの前に送信された通信データ数を知ることで、パケットPKn−1がロストしたか、または順番が前後しているかを知ることができる。そして、パケットPKnを復号化するために、パケットPKnの前に送信された通信データ数から、パケットPKn−2の前に送信された通信データ数を差し引いた、通信データ数を計算して、この差分、乱数生成器55に乱数を生成させる。なお、パケットPKn−1は後で到着するかもしれないので、この際に発生させた乱数は、受信装置50Dに記憶しておき、パケットPKn−1が到着したら利用する。
【0156】
こうすれば、パケットPKnに用いられる乱数は、送信装置10Dが暗号に利用した乱数RNnと同じになり、同期が取れるので、正しく復号化できる。
【実施例5】
【0157】
図17は、UDP通信に利用できるように、ストリーミング暗号の利用方法を図2からさらに改良した手段を説明するブロック図である。本実施例は、実施例4の構成に、第2乱数生成器162、552を付加したものである。なお、第1乱数生成器161、551、実施例4の乱数生成器16、55と同様である。
【0158】
図17の暗号化・復号化手段の特徴は、シードSD1を、送信装置10E、受信装置50Eで交換するのではなく、それぞれ第2乱数生成器162、および第2乱数生成器552によって生成するものとしたところである。従って、シードSD2は事前に交換されて設定されていなければならない。また、パケットPKn+xやパケットPKn+x+1に記載されている通信データ数は、図16とは異なり、1番目のパケットからの通信データ数ではなく、パケットPKnからの通信データ数、つまりパケットPKnを起点として、パケットPKn+xやパケットPKn+x+1を受け取る前までに、送信装置10Eが送信した通信データのデータサイズとなっている。これにより、通信データ数を小さくできるので、パケットロスがあった場合に、転送速度を上げることができるようになっている。
【0159】
なお、第2乱数生成器162、および第2乱数生成器552は、「N,2N,3N,・・・」というようにカウンタデータがNステップするたびに、シード(乱数)を発生させるものとする。従って、受信装置50EはカウンタデータをUDPパケットから読み出せるものとする。受信装置50EがUDPパケットからカウンタデータを読み出せるようにするためには、送信装置10EがカウンタデータをUDPパケットに付与するか、若しくはUDPの各ヘッダからカウンタデータを読み出すものとすれば良い。
【0160】
このような工夫を施せば、図16で説明したような、かなり先のカウンタデータが付与された不正なUDPパケット、あるいはかなり先の通信データ数が付与されたUDPパケットを送信されても、Nの値を大きくしておけば、乱数発生時間を低下させることができる。具体的には、受信装置50Eは、カウンタデータをNで割った商の数の乱数を、第2乱数生成器552に発生させ、この最後の乱数のシードSD1を第1乱数生成器551に設定し、カウンタデータをNで割った余りの数の乱数を、第1乱数生成器551に発生させることになるので、乱数発生時間を短縮できる。
【0161】
ここでは、乱数発生器を2段にしているが、3段以上で構成し、さらに効率の良い乱数発生方法を得ることも可能である。
【0162】
但し、図16で説明したような不正なUDPパケットを送信されると、第2乱数生成器162が発生した乱数の中に、利用しなかった乱数が出てくる。この乱数は取っておかないと、送信装置10Eが正規のUDPパケットを送信してきた場合に復号化できなくなる。しかしどれくらいのデータサイズ、覚えておけば良いかを決められないので問題となる。
【0163】
そこで、第2乱数生成器552で、シードSD1を発生させる場合に、第2乱数生成器552の内部情報を受信装置50Eに記憶しておけば良い。そしてMACを利用して、UDPパケットが正しいか否かを判定し、正しくないと判定された場合は、受信装置50Eに記憶しておいた第2乱数生成器552の内部情報を、第2乱数生成器552に戻せば良い。
【産業上の利用可能性】
【0164】
本発明に係る復号化装置、暗号化装置、復号化方法、暗号化方法、および通信システムは、パケットのロスや到着順の入れ替わりがあった場合であっても、送信側と受信側の間の同期ずれを抑制することの出来るので、セキュリティと円滑な通信を要求される通信方式に有用である。
【符号の説明】
【0165】
1 監視システム
10A、10B、10D、10E 送信装置
10C ネットワークカメラ
11 通信データ生成部
12 暗号器
13 鍵交換部
15 CTR記憶部
16 乱数生成器
17 XOR処理部
19 データ合成部
20 カウンタアップ部
21 UDPデータ送受信部
22 ネットワーク制御部
23 MAC計算器
50A、50B、50D、50E 受信装置
50C PC
51 データ分解部
52 暗号器
53 鍵交換部
55 乱数生成器
56 XOR処理部
57 通信データ解釈部
59 ネットワーク制御部
60 UDPデータ送受信部
61 CTR記憶部
62 カウンタチェック部
63 MAC計算器
65 MACデータ比較器
66 カウンタアップ部
70、71 鍵生成部
72、73 映像データ生成部
101 カメラ部
161 第1乱数生成器
162 第2乱数生成器
203 モニタ
205 ネットワークケーブル
551 第1乱数生成器
552 第2乱数生成器
CD 通信データ
CP 暗号文
CTR カウンタデータ
ECD 暗号通信データ
E(CTR) 暗号カウンタデータ
EID 暗号映像データ
EUD 暗号UDPデータ
HD1 MACヘッダ
HD2 IPヘッダ
HD3 UDPヘッダ
ID 映像データ
KY1 鍵
MD MACデータ
OD 元データ
PK UDPパケット
PT 平文
PUD 平文UDPデータ
RN 乱数
SD シード
UDF UDPデータ領域

【特許請求の範囲】
【請求項1】
パケットに含まれる暗号文データを復号化する復号化装置であって、
暗号処理を実行する暗号化装置から送信されるパケットを受信する受信手段と、
前記暗号処理に用いられる鍵を生成する鍵生成手段と、
前記鍵生成手段により生成される鍵に基づいて、前記受信手段により受信されたパケットに含まれる暗号文データを復号化する復号化手段とを有し、
前記受信手段により受信されたパケットには、前記鍵の生成に用いられるパケット情報が含まれており、前記鍵生成手段は、前記パケット情報を用いて鍵を生成することを特徴とする復号化装置。
【請求項2】
前記復号化装置は、さらに、前記鍵生成手段により生成される鍵をシードとして、乱数を生成する乱数生成手段を有し、
前記復号化手段は、前記乱数生成手段により生成された乱数と、前記パケットに含まれる暗号文データとを、XOR演算することを特徴とする請求項1記載の復号化装置。
【請求項3】
前記鍵生成手段は、少なくとも1以上のパケットおきにシードを生成することを特徴とする請求項2記載の復号化装置。
【請求項4】
前記暗号化装置から、第1パケット、・・・、第Mパケット、・・・、第Nパケット(1≦M<N、Nは2以上の整数)を当該復号化装置に順次、送信され、
前記復号化装置は、さらに、前記第1パケットから前記第M−1パケットまでの通信データ数の総和に応じて、前記乱数生成手段が生成した乱数から乱数列を設定する乱数列設定手段を有し、
前記復号化手段は、前記乱数列設定手段が設定した乱数列と、前記第Nパケットに含まれる暗号文データとを、XOR演算することを特徴とする請求項2記載の復号化装置。
【請求項5】
前記第Mパケットには、前記第1パケットから前記第M−1パケットまでの通信データ数の総和を示す情報が含まれており、前記乱数列設定手段は、前記第Mパケットが示す情報を用いて乱数列を設定することを特徴とする請求項4記載の復号化装置。
【請求項6】
前記鍵生成手段は、逆関数を有する前記暗号方式に基づいてパケット情報を暗号化することにより、前記鍵を生成することを特徴とする請求項1記載の復号化装置。
【請求項7】
前記鍵生成手段は、前記パケット情報をブロック毎に暗号化することにより、前記鍵を生成することを特徴とする請求項6記載の復号化装置。
【請求項8】
前記パケット情報は、前記パケットを識別自在なカウンタデータであることを特徴とする請求項1記載の復号化装置。
【請求項9】
前記カウンタデータは、前記パケットの通し番号であることを特徴とする請求項1記載の復号化装置。
【請求項10】
前記パケットは、コネクションレス型のプロトコルに基づくことを特徴とする請求項1記載の復号化装置。
【請求項11】
前記コネクションレス型のプロトコルケットは、UDP(User Datagram Protocol)を含むことを特徴とする請求項10記載の復号化装置。
【請求項12】
平文データを暗号化し、暗号文データを復号化装置に送信する暗号化装置であって、
前記パケットに対応するパケット情報を用いて、鍵を生成する鍵生成手段と、
前記鍵生成手段により生成される鍵に基づいて平文データを暗号化し、暗号文データを生成する暗号化手段と、
前記暗号文データと前記パケット情報とを含むパケットを、前記復号化装置に送信する送信手段とを有することを特徴とする暗号化装置。
【請求項13】
前記暗号化装置は、さらに、前記鍵生成手段により生成される鍵をシードとして、乱数を生成する乱数生成手段を有し、
前記暗号化手段は、前記乱数生成手段により生成された乱数と、前記パケットに含まれる暗号文データとを、XOR演算することを特徴とする請求項12記載の暗号化装置。
【請求項14】
前記鍵生成手段は、少なくとも1以上のパケットおきにシードを生成することを特徴とする請求項13記載の暗号化装置。
【請求項15】
前記送信手段は、第1パケット、・・・、第Mパケット、・・・、第Nパケット(1≦M<N、Nは2以上の整数)を順次、前記復号化装置に送信し、
前記第Mパケットには、前記第1パケットから前記第M−1パケットまでの通信データ数の総和を示す情報が含まれていることを特徴とする請求項13記載の暗号化装置。
る。
【請求項16】
前記鍵生成手段は、逆関数を有する暗号方式に基づいてパケット情報を暗号化することにより、前記鍵を生成することを特徴とする請求項11記載の暗号化装置。
【請求項17】
前記鍵生成手段は、前記パケット情報をブロック毎に暗号化することにより、前記鍵を生成することを特徴とする請求項16記載の暗号化装置。
【請求項18】
前記パケット情報は、前記パケットを識別自在なカウンタデータであることを特徴とする請求項12記載の暗号化装置。
【請求項19】
前記カウンタデータは、前記パケットの通し番号であることを特徴とする請求項18記載の暗号化装置。
【請求項20】
前記パケットは、コネクションレス型のプロトコルに基づくことを特徴とする請求項12記載の暗号化装置。
【請求項21】
前記コネクションレス型のプロトコルケットは、UDP(User Datagram Protocol)を含むことを特徴とする請求項20記載の暗号化装置。
【請求項22】
パケットに含まれる暗号文データを復号化する復号化方法であって、
暗号処理を実行する暗号化装置から送信されるパケットを受信する受信ステップと、
前記暗号処理に用いられる鍵を生成する鍵生成ステップと、
前記鍵生成ステップで生成される鍵に基づいて、前記受信ステップで受信されたパケットに含まれる暗号文データを復号化する復号化ステップとを有し、
前記受信ステップで受信されたパケットには、前記鍵の生成に用いられるパケット情報が含まれており、前記鍵生成ステップで、前記パケット情報を用いて鍵を生成することを特徴とする復号化方法。
【請求項23】
平文データを暗号化し、暗号文データを復号化装置に送信する暗号化方法であって、
前記パケットに対応するパケット情報を用いて、鍵を生成する鍵生成ステップと、
前記鍵生成ステップで生成される鍵に基づいて平文データを暗号化し、暗号文データを生成する暗号化ステップと、
前記暗号文データと前記パケット情報とを含むパケットを、前記復号化装置に送信する送信ステップとを有することを特徴とする暗号化方法。
【請求項24】
通信システムであって、
前記通信システムは、
平文データを暗号化し、パケットに含まれる暗号文データを通信回線に送信する暗号化装置と、
前記暗号化装置から通信回線を介してパケットを受信し、前記パケットに含まれる暗号文データを復号化する復号化装置とを備え、
前記暗号化装置は、
前記パケットに対応するパケット情報を用いて、鍵を生成する第1の鍵生成手段と、
前記第1の鍵生成手段により生成される鍵に基づいて平文データを暗号化し、暗号文データを生成する暗号化手段と、
前記暗号文データと前記パケット情報とを含むパケットを、前記復号化装置に送信する送信手段とを有し、
前記復号化装置は、
前記暗号化装置から送信されるパケットを受信する受信手段と、
前記受信手段により受信されたパケットに含まれるパケット情報を用いて、前記鍵を生成する第2の鍵生成手段と、
前記第2の鍵生成手段により生成される鍵に基づいて、前記受信手段により受信されたパケットに含まれる暗号文データを復号化する復号化手段とを有することを特徴とする通信システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2011−120051(P2011−120051A)
【公開日】平成23年6月16日(2011.6.16)
【国際特許分類】
【出願番号】特願2009−276294(P2009−276294)
【出願日】平成21年12月4日(2009.12.4)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】