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

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

Info

Publication number
JP5526747B2
JP5526747B2 JP2009276294A JP2009276294A JP5526747B2 JP 5526747 B2 JP5526747 B2 JP 5526747B2 JP 2009276294 A JP2009276294 A JP 2009276294A JP 2009276294 A JP2009276294 A JP 2009276294A JP 5526747 B2 JP5526747 B2 JP 5526747B2
Authority
JP
Japan
Prior art keywords
packet
data
random number
encryption
encrypted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009276294A
Other languages
English (en)
Other versions
JP2011120051A (ja
JP2011120051A5 (ja
Inventor
正克 松尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2009276294A priority Critical patent/JP5526747B2/ja
Priority to PCT/JP2010/004712 priority patent/WO2011067876A1/en
Priority to US13/502,081 priority patent/US8731196B2/en
Publication of JP2011120051A publication Critical patent/JP2011120051A/ja
Publication of JP2011120051A5 publication Critical patent/JP2011120051A5/ja
Application granted granted Critical
Publication of JP5526747B2 publication Critical patent/JP5526747B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner

Description

本発明は、パケットロスやパケットの到着順が逆になることが起こりえる通信方式であっても、送信側と受信側の間の同期ずれを抑制することの出来る、復号化装置、暗号化装置、復号化方法、暗号化方法、および通信システムに関するものである。
近年、各種通信において、インターネットを利用するケースが増大している。インターネットが普及した当初は、非リアルタイム通信であるE−mailやWebが主流であった。しかし、インターネット技術の進歩に伴い、最近では、TVや、電話や、監視カメラといった音声・画像系のリアルタイム通信が、インターネットでも多く利用されるようになった。
インターネットは、QoS(Quality of Service)を考慮していないので、リアルタイム通信には適していない。従って、インターネット経由の通信でリアルタイム性を向上するには、通信速度を向上することが望ましい。このような状況下、セキュリティ確保をしつつ、通信速度を向上させるために、ストリーミング暗号などの暗号方式が開示されている(例えば、特許文献1参照)。
一方、利用ユーザ数や転送データ容量の急激な増大(例えば画像通信におけるハイビジョン化など)もあり、インターネットの通信速度向上は、必ずしもリアルタイム性向上にはつながっていない。このような背景から、リアルタイム通信では、通信速度の遅いTCP(Transmission Control Protocol)通信ではなく、より速いUDP(User Datagram Protocol)通信が採用されることが多い。
しかし、UDP通信ではパケットロスやパケット到着順が逆になる場合があるので、共通鍵暗号化方式に特別の工夫を施さなくてはならない。例えば、SSL暗号通信(TCP通信)の共通鍵暗号化方式で最もよく利用されているストリーミング暗号のArcfour暗号やブッロク暗号のAES CBCモードでは、パケットロスやパケット到着順が逆になるようなことが起こると、同期ずれが起こり、それ以降、受信側で正しく復号できなくなる不都合がある。
特開2007−33649号公報
解決しようとする問題点は、パケットロスやパケット到着順が逆になることが起こり得る通信方式であっても、同期ずれなく暗号・復号処理を行うことの出来る暗号方式を提供することにある。
本発明の復号化装置は、パケットに含まれる暗号文データを復号化する復号化装置であって、暗号処理を実行する暗号化装置から送信されるパケットを受信する受信手段と、暗号処理に用いられる鍵と同じ鍵を生成する鍵生成手段と、鍵生成手段により生成される鍵に基づいて、受信手段により受信されたパケットに含まれる暗号文データを復号化する復号化手段とを有し、受信手段により受信されたパケットには、鍵の生成に用いられかつパケットを識別するためのパケット情報が含まれており、鍵生成手段は、パケット情報を用いて鍵を生成する構成を備えている。
本発明の暗号化装置は、平文データを暗号化し、暗号文データを復号化装置に送信する暗号化装置であって、パケットに対応しかつパケットを識別するためのパケット情報を用いて、鍵を生成する鍵生成手段と、鍵生成手段により生成される鍵に基づいて平文データを暗号化し、暗号文データを生成する暗号化手段と、暗号文データとパケット情報とを含むパケットを、復号化装置に送信する送信手段とを有する構成を備えている。
本発明の復号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて受信するので、鍵の生成に必要な情報を、暗号文データの復号化に使用することが出来る。これにより、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
本発明の暗号化装置は、暗号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて復号化装置に送信するので、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、復号化装置は、暗号文データの復号化に際して、当該復号化処理の鍵生成に必要な情報を受信することが出来る。
実施例1における通信システムの機能ブロック図 実施例1における通信システムの動作を示すタイミングチャート 実施例1における送信装置の動作の説明図 実施例1における送信装置の動作を示すフローチャート 実施例1におけるカウンタデータの実装する方法の説明図 実施例1におけるカウンタデータ算出方法のフローチャート 実施例1における受信装置の動作を示すフローチャート 実施例1における処理速度の測定結果を示す図 実施例1における、MACチェックの説明図 実施例1におけるMACチェックの説明図 実施例2における通信システムの動作を示すタイミングチャート 実施例2における送信装置の動作を示すフローチャート 実施例2における受信装置の動作を示すフローチャート 実施例3における監視システムの全体図 実施例3における監視システムの機能ブロック図 実施例4における通信システムの動作を示すタイミングチャート 実施例5における通信システムの動作を示すタイミングチャート
本発明の復号化装置は、パケットに含まれる暗号文データを復号化する復号化装置であって、暗号処理を実行する暗号化装置から送信されるパケットを受信する受信手段と、暗号処理に用いられる鍵と同じ鍵を生成する鍵生成手段と、鍵生成手段により生成される鍵に基づいて、受信手段により受信されたパケットに含まれる暗号文データを復号化する復号化手段とを有し、受信手段により受信されたパケットには、鍵の生成に用いられかつパケットを識別するためのパケット情報が含まれており、鍵生成手段は、パケット情報を用いて鍵を生成する構成を備えている。これにより、復号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて受信するので、鍵の生成に必要な情報を、暗号文データの復号化に使用することが出来る。これにより、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
さらに、復号化装置は、さらに、鍵生成手段により生成される鍵をシードとして、乱数を生成する乱数生成手段を有し、復号化手段は、乱数生成手段により生成された乱数と、パケットに含まれる暗号文データとを、XOR演算する構成を備えている。これにより、暗号処理に処理速度の速い乱数生成処理を利用するので、復号化処理の高速化を図ることが出来る。
さらに、鍵生成手段は、少なくとも1以上のパケットおきにシードを生成する構成を備えている。これにより、パケットあたりのシード生成の処理回数が少なくなるので、復号化処理をさらに高速化させることが出来る。
さらに、暗号化装置から、第1パケット、・・・、第Mパケット、・・・、第Nパケット(1≦M<N、Nは2以上の整数)を当該復号化装置に順次、送信され、復号化装置は、さらに、受信手段により受信された第Mパケットが示す通信データ数の総和に応じて、乱数生成手段が生成した乱数から乱数列を設定する乱数列設定手段を有し、復号化手段は、乱数列設定手段が設定した乱数列と、第Nパケットに含まれる暗号文データとを、XOR演算する構成を備えている。これにより、通信データ数の総和によって、第Nパケットの復号化に必要な乱数列を設定することが出来る。これにより、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、復号化装置は、必要な分だけ乱数を生成して、同期ずれの抑制を向上させることが出来る。
さらに、第Mパケットには、第1パケットから第M−1パケットまでの通信データ数の総和を示す情報が含まれており、乱数列設定手段は、第Mパケットが示す情報を用いて乱数列を設定する構成を備えている。
さらに、鍵生成手段は、逆関数を有する暗号方式に基づいてパケット情報を暗号化することにより、鍵を生成する構成を備えている。これにより、パケット情報から鍵が一意的に定まるので、暗号文データに最適な鍵を用いて復号することが出来る。
さらに、鍵生成手段は、パケット情報をブロック毎に暗号化することにより、鍵を生成する構成を備えている。
さらに、パケット情報は、パケットを識別自在なカウンタデータである構成を備えている。これにより、パケットのカウンタデータを利用するので、簡易な構成を実現することが出来る。
さらに、カウンタデータは、パケットの通し番号である構成を備えている。これにより、同じカウンタデータが出現しないので、セキュリティレベルを向上させることが出来る。
さらに、パケットは、コネクションレス型のプロトコルに基づく構成を備えている。これにより、コネクションレス型のため、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合があり得るが、このような場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
さらに、コネクションレス型のプロトコルケットは、UDP(User Datagram Protocol)を含む構成を備えている。これにより、UDPでは、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合があり得るが、このような場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
本発明の復号化装置は、平文データを暗号化し、暗号文データを復号化装置に送信する暗号化装置であって、パケットに対応しかつパケットを識別するためのパケット情報を用いて、鍵を生成する鍵生成手段と、鍵生成手段により生成される鍵に基づいて平文データを暗号化し、暗号文データを生成する暗号化手段と、暗号文データとパケット情報とを含むパケットを、復号化装置に送信する送信手段とを有する構成を備えている。これにより、暗号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて復号化装置に送信するので、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、復号化装置は、暗号文データの復号化に際して、当該復号化処理の鍵生成に必要な情報を受信することが出来る。
さらに、暗号化装置は、さらに、鍵生成手段により生成される鍵をシードとして、乱数を生成する乱数生成手段を有し、暗号化手段は、乱数生成手段により生成された乱数と、パケットに含まれる暗号文データとを、XOR演算する構成を備えている。これにより、暗号処理に処理速度の速い乱数生成処理を利用するので、暗号化処理の高速化を図ることが出来る。
さらに、鍵生成手段は、少なくとも1以上のパケットおきにシードを生成する構成を備えている。これにより、パケットあたりのシード生成の処理回数が少なくなるので、暗号化処理をさらに高速化させることが出来る。
さらに、送信手段は、第1パケット、・・・、第Mパケット、・・・、第Nパケット(1≦M<N、Nは2以上の整数)を順次、復号化装置に送信し、第Mパケットには、第1パケットから第M−1パケットまでの通信データ数の総和を示す情報が含まれている構成を備えている。これにより、暗号化装置は、第Nパケットの復号化に必要な情報を、復号化装置に通知することが出来る。
さらに、鍵生成手段は、逆関数を有する暗号方式に基づいてパケット情報を暗号化することにより、鍵を生成する構成を備えている。これにより、パケット情報から鍵が一意的に定まるので、暗号文データに最適な鍵を用いて復号することが出来る。
さらに、鍵生成手段は、パケット情報をブロック毎に暗号化することにより、鍵を生成する構成を備えている。
さらに、パケット情報は、パケットを識別自在なカウンタデータである構成を備えている。これにより、パケットのカウンタデータを利用するので、簡易な構成を実現することが出来る。
さらに、カウンタデータは、パケットの通し番号である構成を備えている。これにより、同じカウンタデータが出現しないので、セキュリティレベルを向上させることが出来る。
さらに、パケットは、コネクションレス型のプロトコルに基づく構成を備えている。これにより、コネクションレス型のため、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合があり得るが、このような場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
さらに、コネクションレス型のプロトコルケットは、UDP(User Datagram Protocol)を含む構成を備えている。これにより、UDPでは、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合があり得るが、このような場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
本発明の復号化方法は、パケットに含まれる暗号文データを復号化する復号化方法であって、暗号処理を実行する暗号化装置から送信されるパケットを受信する受信ステップと、暗号処理に用いられる鍵と同じ鍵を生成する鍵生成ステップと、鍵生成ステップで生成される鍵に基づいて、受信ステップで受信されたパケットに含まれる暗号文データを復号化する復号化ステップとを有し、受信ステップで受信されたパケットには、鍵の生成に用いられかつパケットを識別するためのパケット情報が含まれており、鍵生成ステップで、パケット情報を用いて鍵を生成する構成を備えている。これにより、復号化方法は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて受信するので、鍵の生成に必要な情報を、暗号文データの復号化に使用することが出来る。これにより、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
本発明の暗号化方法は、平文データを暗号化し、暗号文データを復号化装置に送信する暗号化方法であって、パケットに対応しかつパケットを識別するためのパケット情報を用いて、鍵を生成する鍵生成ステップと、鍵生成ステップで生成される鍵に基づいて平文データを暗号化し、暗号文データを生成する暗号化ステップと、暗号文データとパケット情報とを含むパケットを、復号化装置に送信する送信ステップとを有する構成を備えている。これにより、暗号化方法は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて復号化装置に送信するので、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、復号化装置は、暗号文データの復号化に際して、当該復号化処理の鍵生成に必要な情報を受信することが出来る。
本発明の通信方法は、平文データを暗号化し、パケットに含まれる暗号文データを通信回線に送信する暗号化装置と、暗号化装置から通信回線を介してパケットを受信し、パケットに含まれる暗号文データを復号化する復号化装置とを備え、暗号化装置は、パケットに対応するパケット情報を用いて、鍵を生成する第1の鍵生成手段と、第1の鍵生成手段により生成される鍵と同じ鍵に基づいて平文データを暗号化し、暗号文データを生成する暗号化手段と、暗号文データとパケット情報とを含むパケットを、復号化装置に送信する送信手段とを有し、復号化装置は、暗号化装置から送信されるパケットを受信する受信手段と、受信手段により受信されたパケットに含まれかつパケットを識別するためのパケット情報を用いて、鍵を生成する第2の鍵生成手段と、第2の鍵生成手段により生成される鍵に基づいて、受信手段により受信されたパケットに含まれる暗号文データを復号化する復号化手段とを有することを特徴とする構成を備えている。これにより、暗号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて復号化装置に送信するので、復号化装置は、暗号文データの復号化に際して、当該復号化処理の鍵生成に必要な情報を受信することが出来る。復号化装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて受信するので、鍵の生成に必要な情報を、暗号文データの復号化に使用することが出来る。これにより、パケットが送信される途中で、パケットがロストしたり、パケットの順番が入れ替わったりした場合であっても、暗号化装置と復号化装置の間の同期ずれを抑制することが出来る。
通信システムは、図1に示すように、送信装置10Aおよび受信装置50Aを有している。送信装置10Aおよび受信装置50Aは、それぞれ暗号化装置および復号化装置の一例である。送信装置10Aおよび受信装置50Aは、インターネットなどの通信経路で接続自在である。なお、通信経路は、有線、無線いずれでも良い。また、本実施例では、通信プロトコルとして、UDP(User Datagram Protocol)などのコネクションレス型のプロトコルを使用している。なお、TCP(Transmission Control Transmission)などのコネクション型のプロトコルを使用することも可能である。
送信装置10Aは、通信データ生成部11、暗号器12、鍵交換部13、CTR記憶部15、乱数生成器16、XOR処理部17、データ合成部19、カウンタアップ部20、UDPデータ送受信部21、およびネットワーク制御部22を有している。送信装置10Aは、図示しないCPUやASICなどの集積回路を有しており、図1に示す機能ブロックは、例えばCPUによって実現される。
受信装置50Aは、データ分解部51、暗号器52、鍵交換部53、乱数生成器55、乱数生成器55、XOR処理部56、通信データ解釈部57、UDPデータ送受信部60、およびネットワーク制御部59を有している。受信装置50Aは、送信装置10Aと同様に、図示しないCPUやASICなどの集積回路を有しており、図1に示す機能ブロックは、例えばCPUによって実現される。
乱数生成器16は、共通鍵を用いて乱数を生成し、XOR処理部17は、平文データをビット毎に暗号化する。すなわち、乱数生成器16およびXOR処理部17は、ストリーミング暗号を実行する機能ブロックを構成する。乱数生成器55は、乱数生成器16と同様に、共通鍵を用いて乱数を生成し、XOR処理部56は、暗号文データをビット毎に復号化する。すなわち、乱数生成器55およびXOR処理部56は、ストリーミング暗号を実行する機能ブロックを構成する。
ストリーミング暗号は、共通鍵暗号方式の一種で、平文をビット単位、若しくはバイト単位で逐次、暗号化する暗号方式である。ストリーミング暗号は、共通鍵暗号化方式の一種なので、暗号側(乱数生成器16およびXOR処理部17)と復号側(乱数生成器55およびXOR処理部56)は、等価な計算手段である。ここでは同一の計算手段を用いている。ストリーミング暗号としては、例えばArcfourがあるが、これに限られるものではない。例えば、CBC(Cipher Block Chaining)モードなどのように、ブロック暗号をストリーミング暗号として利用する方法でも良い。なお、Arcfourのような専用のストリーミング暗号は、ブロック暗号の代表格であるAES(Advanced Encryption Standard)暗号よりも、ソフト処理では処理速度が速いことから、高速なUDP通信に適している。先に説明したように、リアルタイム性を要求される音声・画像通信では、音飛びや映像飛びを防ぐために、Arcfourのような専用のストリーミング暗号が望ましい。本実施例では、ストリーミング暗号として、Arcfourを利用している。
暗号器12は、カウンタモードが適用可能なブロック暗号器である。本実施例では、AES暗号を利用している。ブロック暗号は、共通鍵暗号方式の一種で、平文をブロック単位で処理する暗号方式である。ブロック単位は、固定長であっても、可変長であってもよい。ブロック暗号としては、例えば、AESや3DES(Data Encryption Standard)がある。このように、ブロック暗号は共通鍵暗号化方式の一種なので、暗号器12と暗号器52と同様、等価な計算手段である。ここでは同一の計算手段を用いている。従って、暗号器12、52に入力される、共通鍵の鍵KY1は、同じ値である。また、ブロック暗号は、逆関数を有する暗号方式の一種であって、逆関数を有する暗号方式とは、異なる平文を同じ暗号文に変換しない方式をいう。
カウンタモードは、カウンタデータを暗号化し、その数値を乱数として使用する処理である。また、カウンタデータは、パケットを識別自在な番号である。ここでは、カウンタデータは、パケットの通し番号である。通し番号の場合、同じカウンタデータが出現しないので、セキュリティレベルを向上させることが出来る。
カウンタデータは、パケット情報の一例である。パケット情報とは、送信装置が、第1パケットPK1、・・・、第N−1パケットPKn−1、第NパケットPKn(N、nは2以上)を、受信装置に送信する場合に、パケットPK1、・・・、PKn−1、PKnのそれぞれに対応する情報であって、パケットPK1、・・・、PKn−1、PKnのそれぞれを識別自在な情報である。従って、パケット情報は、カウンタデータに限る必要はない。例えば、UDPパケット内にカウンタデータとして利用可能なものがあれば、それをカウンタデータとして代用しても構わない。例えば、音声データの通信を行っている際に、音声データのデータフォーマットに通し番号があれば、これをカウンタデータとして扱っても良い。
以下、送信装置10Aの動作を説明する。はじめに、送信装置10Aが、鍵KY1を鍵交換部13で生成し、これを暗号器12にセットする。暗号器12は、この鍵KY1を公開鍵暗号化方式の公開鍵として用いて暗号化を行い、この暗号化された鍵をUDPデータ送受信部21に送る。UDPデータ送受信部21は、ネットワーク制御部22を介して、この暗号化された鍵KY1を受信装置50Aに送信する。受信装置50Aでは、UDPデータ送受信部60が、ネットワーク制御部59を介して、暗号化された鍵KY1を受信する。
鍵交換部53は、この暗号化された鍵を、UDPデータ送受信部60から受け取る。鍵交換部53は、公開鍵と対となる公開鍵暗号化方式の秘密鍵を用いて、この暗号化された鍵KY1を復号化する。鍵交換部53は、送信装置10Aが生成した鍵KY1を取得し、この鍵KY1を暗号器52にセットする。ここでは、単純な公開鍵暗号化方式を用いて鍵の受け渡しを行っているが、実際は、SSL(Secure Sockets Layer)通信のように、暗号化においては、攻撃を受けないために、いくつもの注意事項がある。しかし、本発明の説明を簡単にするために、この鍵の交換は、このような簡単な説明に留める。また、UDPパケットで鍵の交換を行っているが、これはSSL通信のようにTCP通信で行っても良い。あるいは、手作業で共通鍵をセットしても良い。共通鍵の交換方法は、この他どのような手段を用いても良い。
鍵KY1をセットすると、通信データ生成部11は、平文データの一例である通信データCDを生成し、XOR処理部17に送る。これと同時に、通信データ生成部11は、暗号器12に、暗号処理開始を通知する。なお、この暗号処理開始の通知は、XOR処理部17が行っても良い。
暗号器12は、カウンタデータCTRを記憶しているCTR記憶部15から、現在のカウンタデータCTRを読み出す。暗号器12は、このカウンタデータCTRを暗号化して、暗号カウンタデータE(CTR)を生成する。暗号器12は、この暗号カウンタデータE(CTR)を、乱数生成器16のシードSDとして、つまりストリーミング暗号の共通鍵として設定する。これにより、乱数生成器16は、暗号学的に安全な乱数(つまり予測不可能な乱数)を発生させることができる。なお、カウンタデータCTRの初期値は、どんな値であっても良い。
次に、暗号器12は、乱数生成器16に乱数の生成を要求する。この要求は、通信データ生成部11、またはXOR処理部17が行ってもよい。乱数生成器16は、通信データCDのデータ長と同じ、あるいは大きい乱数RNを生成し、乱数RNをXOR処理部17に送る。
XOR処理部17は、乱数RN1を受けて、通信データCDと乱数RNのXOR(排他的論理和)を計算(つまり、通信データCDを暗号化)し、暗号通信データECDを生成する。以下の説明では、排他的論理輪を単に「XOR演算」と称す。XOR処理部17は、暗号通信データECDを、データ合成部19に送る。ここでは、通信データCDと乱数RNのXOR演算を一度に計算しているが、逐次行っても良い。
データ合成部19は、CTR記憶部15から読み出したカウンタデータCTRを暗号通信データECDに付加して、カウンタデータCTR付きの暗号通信データECDを生成する。そして、データ合成部19は、これをUDPデータ送受信部21に送る。
また、データ合成部19は、カウンタアップ部20に、カウンタデータCTRの更新を要求する。カウンタアップ部20は、CTR記憶部15からカウンタデータCTRを読み出し、この値を更新する。最も簡単な更新方法は、現在のカウンタデータCTRに1を加えたデータを次のカウンタデータCTRにする方法である。現在のカウンタデータのハッシュ値を次のカウンタデータCTRにするなど、この更新はどのようなものであっても良い。
UDPデータ送受信部21は、カウンタデータCTR付きの暗号通信データECDにUDPヘッダを付加して、ネットワーク制御部22を介して、カウンタデータCTR付きの暗号通信データECDを、つまりUDPパケットを受信装置50Aに送信する。
ついで、受信装置50Aの動作を説明する。UDPデータ送受信部60は、送信装置10Aが送信したUDPパケットを、ネットワーク制御部59を介して受信する。UDPデータ送受信部60は、UDPパケットのUDPヘッダを削除し、カウンタデータCTR付きの暗号通信データECDを、データ分解部51に送信する。
データ分解部51は、カウンタデータCTR付きの暗号通信データECDから、カウンタデータCTRを読み取り、カウンタデータCTRを暗号器12に送る。またデータ分解部51は、カウンタデータCTR付きの暗号通信データECDから暗号通信データECDを読み取り、XOR処理部56に送る。
一方、暗号器52は、読み取ったカウンタデータCTRを暗号化して、暗号カウンタデータE(CTR)を生成する。そして暗号器52は、この暗号カウンタデータE(CTR)を、乱数生成器55のシードSDとして、つまりストリーミング暗号の共通鍵として設定する。このように、乱数生成器16、55に入力するシードSDを、異なる乱数生成器で生成させるのではなく、カウンタデータを利用した同一の暗号方式で生成させている。
暗号器52は、乱数生成器55に乱数の生成を要求する。この要求は、データ分解部51、またはXOR処理部56が行ってもよい。乱数生成器55は、暗号通信データECDのデータ長と同じ、あるいは大きい乱数RNを発生する。そして乱数生成器55は、乱数RN1をXOR処理部56に送る。
XOR処理部56は、乱数RNを受けて、暗号通信データECDと乱数RNのXOR演算を行う。ある値Xに対して、同じ値YでXOR演算を2回行うと元の値Xに戻る。つまり、暗号・復号で、同じ乱数を2回用いて、XOR演算を行えば、正しく復号できる。従って、XOR処理部56は、暗号通信データECDを通信データCDに復号化する。XOR処理部56は、通信データCDを、通信データ解釈部57に送り、通信データ解釈部57は、送信装置10Aが送信した通信データCDの内容の解釈を行う。
UDPパケットPKに付加されたカウンタデータCTRは、暗号化されていないので、第三者はカウンタデータを知り得る。しかし、暗号カウンタデータE(CTR)は、暗号化されたカウンタデータCTRなので、第三者には復号化できない。このことは、この方法で発生させたシードSDもまた第三者には予想されないということと等価である。つまり、ブロック暗号の共通鍵さえ秘密にできれば、カウンタデータCTRは公開されていても、暗号化カウンタデータE(CTR)、つまりシードSDを第三者に知られることはない。
なお、カウンタデータCTRは、ブロック暗号で暗号化するので、暗号化カウンタデータE(CTR)のデータサイズは、ブロック暗号のブロック長になる。乱数生成器に必要なシードが、このブロック長サイズより小さければ、暗号化されたカウンタデータの一部分を利用するか、若しくはこの暗号化されたカウンタデータに何らかの計算処理を施し、シードのデータサイズに縮小すれば良い。もし逆に、乱数生成器に必要なシードが、このブロック長より大きければ、この暗号化されたカウンタデータに何らかの計算処理を施し、シードのデータサイズに拡張すれば良い。このような方法は種々あり、どのような方法を使っても良い。
図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を設定している。
UDP通信は、TCP通信とは異なり、コネクションレス通信なので、通信経路上でパケットロスしたり、パケットの到着順が逆になったり、することが起こり得る。例えば、通信経路上のルータの処理が混雑した場合などで、UDPパケットのロストが発生しやすい。
まず、送信装置10Aが、パケットPK1を受信装置50Aに送信する。パケットPK1には、カウンタデータCTR1が含まれている。受信装置50Aは、受信したパケットPK1からカウンタデータCTR1を読み出し、暗号器52がこれを暗号化して、暗号カウンタデータE(CTR1)を取得する。乱数生成器55は、暗号カウンタデータE(CTR1)をシードSD1として乱数RN1を生成し、XOR処理部56は、生成された乱数RN1を用いて、パケットPK1に含まれる暗号通信データを復号化する。
この処理を繰り返し、送信装置10Aは、パケット毎に、シードSDを設定して、パケットPK1、PK2、PK3、・・・を順次、受信装置50Aに送信していく。こうして、送信装置10Aが、乱数RNn−1を発生させ、暗号カウンタデータE(CTRn−1)を付与したパケットPKn−1を、受信装置50Aに送信した場合に、パケットPKn−1が、通信経路上のどこかでロストしたとする。この場合、受信装置50Aは、ロストしたパケットPKn−1を受信しない。
この状態で、送信装置10Aが、乱数RNnを発生させ、暗号カウンタデータE(CTRn)を付与したパケットPKnを、受信装置50Aに送信する。パケットPKnはロストすることなく、受信装置50Aに受信されたとする。シードはパケット毎に設定されているので、パケットPKnには、暗号通信データと、その暗号通信データを復号するための情報としてカウンタデーCTRnとが含まれている。
暗号器52は、受信したパケットPKnから、カウンタデータCTRnを暗号化して暗号カウンタデータE(CTRn)を生成し、乱数生成器55のシードSDnとして入力する。乱数生成器55は、パケットPKnのデータ部のデータサイズ分の乱数RNnを発生する。受信装置50Aは、パケットPKn−1を受信していないが、パケットPKnに含まれる暗号通信データを、パケットPKnからカウンタデータCTRnが読み出せるので、カウンタデータCTRnを暗号化することで、暗号文データを復号化することが出来る。これにより、パケットPKnの暗号と復号では問題なく同期が取れる。これは、通常のストリーミング暗号とは異なり、パケット毎に、カウンタデータを元にシードを生成し、これを元に乱数を生成しているからである。
このように、送信装置は、鍵の生成に用いられたパケット情報と、この鍵を用いて暗号化した平文データを、同一のパケットでまとめて復号化装置に送信するので、受信装置は、暗号文データの復号化に際して、復号化処理の鍵生成に必要な情報を受信することが出来る。これにより、パケットが送信される途中で、パケットロスしたり、パケットの順番が入れ替わったりした場合であっても、送信側と受信側の間の同期ずれを抑制することが出来る。特に、パケットロスや到着順が入れ替わることが起き得る、UDP通信において、良好に、暗号化、および復号化処理を行える。また、ストリーミング暗号による暗号・復号とは異なり、かなり先のカウンタデータを付与された不正なパケットを送信されても、サービス不能状態に陥ることを抑制することが出来る。
一般に、ブロック暗号は、ストリーミング暗号に比較して処理速度が遅いが、本実施例では、ブロック暗号をストリーミング暗号のシード生成に利用しているので、平文を直接ブロック暗号で暗号化する場合に比べて、パケットあたりのブロック暗号の処理回数を少なくすることが出来る。これにより、トータルの処理速度が速くすることが出来る。
ここで、本実施例(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パケットのデータサイズが増加すれば、この処理速度はさらに向上する。
このように、リアルタイム性を要求される音声・画像通信のUDP通信において、高速な暗号・復号処理を行うことが可能となり、暗号通信と高速通信とを両立できるようになる。なお、暗号器12、52の暗号・復号処理には、ブロック暗号ではなく、ストリーミング暗号を利用することが可能である。ストリーミング暗号として、Arcfourのような、ソフト処理ではブロック暗号より、処理速度が速いストリーミング暗号を用いれば、高速な暗号・復号処理が可能となる。
図3では、送信装置10Aの主要要素の詳細を説明している。主要要素は、図3上方に示す破線枠内の、暗号器12、乱数生成器16、およびXOR処理部17である。図3下方は、この主要要素の詳細を示している。ここでは、カウンタデータCTR1の処理のみを示している。
暗号器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データ領域の一部、またはすべてを暗号化する。これ以降の説明も同じである。
送信装置10Aの動作を、図4のフローチャートに沿って再度説明する。S101では、カウンタデータCTRの初期値を設定する。カウンタデータCTRは第三者に知られても問題ないので、暗号化しない。カウンタデータCTRの初期値は0でもその他の値でも良い。実際の実装では、送信装置10A、および受信装置50Aの間で、所定のIV(イニシャルベクタ)値を交換しておき、これをカウンタデータと混合するのが、セキュリティレベルが向上し、望ましい。
S102では、カウンタデータCTRを暗号器12で暗号し、暗号カウンタデータE(CTR)を求める。例えば、暗号器12がAES暗号を実行する場合は、AESの暗号化関数であるAES_Encryptに、カウンタデータCTRを代入する。
S103では、暗号カウンタデータE(CTR)を乱数生成器16のシードとして入力する。例えば、乱数生成器16が、ストリーミング暗号としてArcfourを実行する場合は、Arcfourの初期化関数であるArcfour_Initに、この暗号カウンタデータE(CTR)を代入する。
S104では、1パケット分の平文データと、乱数生成器16が発生した1パケット分のデータサイズの乱数とをXOR演算して、1パケット分の暗号文データを生成する。例えば、乱数生成器、つまりストリーミング暗号がArcfourであれば、Arcfourの暗号化関数であるArcfour_Encryptに、平文データを代入する。
S105では、カウンタデータCTRをUDPパケットPKに付加し、暗号文データをUDPパケットとして受信装置50Aに送信する。
S106では、送信データの準備ができていない場合は(S106のNo)、送信データの準備ができるまで待つ。なお、これ以上の送信データがなければ、ここで終了しても良い。
送信データの準備ができた場合は(S106のYes)、S107で、カウンタデータCTRを更新する。以下、S102〜S107を繰り返す。ここでは、カウンタデータCTRを1ずつアップさせているが、次に利用するカウンタデータCTRが、以前利用したカウンタデータCTRと同じものにならないように工夫を行えば、その方法はどのようなものであっても良い。カウンタデータCTRのハッシュ値を、新たなカウンタデータCTRとすることも可能である。
UDPパケットPKは、図5に示すように、ヘッダ領域と、UDPデータ領域UDFを有している。ヘッダ領域は、MACヘッダHD1、IPヘッダHD2、およびUDPヘッダHD3を含む。UDPデータ領域UDFは、カウンタデータCTR、および暗号UDPデータEUDを含む。UDPデータ領域UDFには、実データの他、改ざんチェックやデータ誤り検知のために、MACやCRCが付加されていても良い。
カウンタデータCTRのデータ長を固定にしておけば、受信装置50Aは、暗号UDPデータEUDがどこからスタートするかは簡単に分かる。またカウンタデータCTRにデータ長を付与すれば、カウンタデータCTRが可変長であっても、受信装置50Aはこのデータ長を読み取ることで、カウンタデータCTRのサイズを求めることが可能なので、同じく、暗号UDPデータEUDがどこからスタートするかが簡単に分かる。
カウンタデータCTRは、図5に示すように、UDPデータ領域UDFの先頭にセットされている。カウンタデータCTRは、UDPパケットPKに関連付けられていれば、カウンタデータCTRを付加する箇所は、UDPデータ領域UDFである必要はなく、UDPパケットPKのどこにセットしても良い。
また、UDPパケットに付与されているいずれかのヘッダ(例えば音声データであれば、この音声パケットのヘッダなど)より、カウンタデータCTRが導くことが出来れば、カウンタデータCTRをUDPパケットPKに付加する必要はない。例えば、カウンタデータCTRを、既存のEthernet(登録商標)ヘッダ、IPヘッダ、UDPヘッダの中から導くことの出来る値にすることも可能である。
また、カウンタデータCTRを導く元データをUDPパケットPKに付加しても良い。例えば、図6に示すように、S301で、元データODをハッシュ計算ルーチンで処理する、つまり元データODのハッシュ値を計算することで、カウンタデータCTRを生成する。
受信装置50Aの動作を、図7のフローチャートに沿って再度説明する。はじめに、S201で、図4の要領で生成されたUDPパケットPKを受信する。
S202で、データ分解部51が、UDPパケットPKに付加されたカウンタデータCTRを読み取る。送信装置10Aおよび受信装置50A間で、所定のIV(イニシャルベクタ)値を交換しておき、これをカウンタデータと混合することになっていれば、ここで、カウンタデータCTRとIVの混合を行い、新たなカウンタデータCTRを計算する
S203で、暗号器52が、カウンタデータCTRを暗号化し、暗号カウンタデータE(CTR)を求める。例えば、送信側の暗号器12がAES暗号であれば、AESの暗号化関数であるAES_Encryptに、カウンタデータCTRを、暗号器52に代入する。
S204で、暗号器52は、暗号カウンタデータE(CTR)をシードSDとして、乱数生成器55に入力する。例えば、送信側の乱数生成器16が実行するストリーミング暗号がArcfourであれば、Arcfourの初期化関数であるArcfour_initに、暗号カウンタデータE(CTR)を、乱数生成器55に代入する。
乱数発生器55は、暗号カウンタデータE(CTR)を用いて乱数を発生し、S205で、1パケット分の暗号文データと、発生した1パケット分のデータサイズの乱数をXOR演算して、1パケット分の平文データを生成する。例えば、乱数生成器55が実行するストリーミング暗号がArcfourであれば、Arcfourの暗号化関数であるArcfour_Encryptに、暗号文データを代入する。送信装置10AからまたUDPパケットが送信されてきたら、S201〜S206を繰り返す。
ついで、本実施例の効果を、図8に沿って説明する。図8は、UDPの1パケットのデータサイズが256バイトの場合における、ブロック暗号のCTRモード、実施例1、ストリーミング暗号でのそれぞれの処理速度を示している。
図8左方は、CTRモードの処理速度:約15Mbpsを示している。CTRモードとは、256バイトすべてを128ビットのAESカウンタモードで暗号処理する場合である。128ビットのAESの1ブロックのデータサイズは16バイトなので、256バイトのブロック数は、256バイト / 16バイト = 16ブロックである。従って、16回のAES暗号(+256バイト分の排他的論理和の計算)が必要となる。UDPの1パケットに対して1回しかカウンタデータをAES暗号せず、この暗号化されたカウンタデータを256バイトすべての排他的論理和の計算に用いるとすることも可能であるが、これでは、同じ平文が同じ暗号文となるため、著しくセキュリティレベルを下げてしまう。
図8右方は、ストリーミング暗号の処理速度:31Mbpsである。ここでは、ストリーミング暗号として、Arcfourを使用している。
図8中央は、本実施例の処理速度:約27Mbpsを示している。ここでは、暗号器12、52にAESカウンタモードを適用し、乱数生成器16、55およびXOR処理部17、56にArcfour暗号を適用した場合である。
本実施例では、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に接近している。
このように、本実施例では、ブロック暗号で暗号化したカウンタデータを、通信データの暗号・復号処理に直接用いるのではなく、暗号化したカウンタデータを、通信データを暗号化する共通鍵暗号の共通鍵として用いている。なお、図1のストリーミング暗号を実行する要素(乱数生成器16、55およびXOR処理部17、56)は、Arcfourのようなストリーミング暗号に限られるものではなく、AESや3DESのようなブロック暗号であっても良い。なお、全体の処理速度を上げる点で、暗号・復号を実行する要素(乱数生成器16、55およびXOR処理部17、56)の暗号方式は、鍵を生成する要素(暗号器12、52)の暗号方式より処理速度が速いことが望ましい。
なお、悪意のある攻撃者が送信装置10Aのふりをして、意図的に、かなり先のカウンタデータが付与された不正なUDPパケットを送信するかもしれないので、受信装置50Aは、MACチェックを行うようにして、これが正しい場合のみ、最大のカウンタデータを更新するようにしてもよい。一般に、正規のUDP通信であれば、極端なパケットロスがない限り、カウンタデータが極端に飛ぶことはない。従って、極端なカウンタデータの飛びがあれば、それはかなりパケットロスが発生していることになるので、受信装置50Aは飛んだカウンタデータをいつまでも受信できるものとして、受信装置50Aに記憶しておく必要はない。
この仕組みを図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を取得する。
図10は、図9のUDPパケットPKのフォーマットで通信している際の、MACチェック方法の一例を示すものである。送信装置10Aは、平文UDPデータPUD、つまり通信データを用意する。MAC計算器23は、平文UDPデータPUDからMACデータMD1を計算する。MAC計算手法には、MD5、SHA1、SHA2など、様々な手法があるが、送信装置10A・受信装置50Aで同じ計算手法を用いるものとする。
図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に保存させる。
送信装置10Aは、カウンタデータCTRと暗号UDPデータEUDとMACデータMD1を受信装置50Aに送信する。受信装置50Aは、これらのデータを受信する。受信装置50Aでは、現在までに取得したカウンタデータCTRの最大値CTRmaxをCTR記憶部61に記憶している。また、CTR記憶部61は、最大値未満でまだ受信していないカウンタデータCTRnyも記憶している。
受信装置50Aは、受信したカウンタデータCTR1をカウンタチェック部62でチェックする。具体的には、次のような方法でチェックする。まず、CTR記憶部61から、2つのカウンタデータCTRmax、CTRnyを読み出す。受信したカウンタデータCTR1が、カウンタデータCTRmaxより大きいか、またはカウンタデータCTRnyに該当するか否かをチェックする。受信したカウンタデータCTR1が、カウンタデータCTRmaxより小さく、かつ、カウンタデータCTRnyに該当しない場合は、このUDPパケットPKを、カウンタチェック部62が破棄する。これによりリトライ攻撃が防御できるようになる。
一方、受信したカウンタデータCTR1が、カウンタデータCTRmaxより大きい、または、カウンタデータCTRnyに該当する場合は、UDPパケットPKは破棄されない。暗号器52および乱数生成器55は、図2と同様の復号を行い、暗号UDPデータEUDから平文UDPデータPUDを取得する。
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を消去する。
図11に沿って実施例2における、通信システムの動作を説明する。実施例2の通信システムは、図1に示す実施例1の通信システムと同一である。後述する動作方法が異なる。
図11の動作方法は、図2の動作方法と比較して、2つの相違点がある。1つ目の相違点は、乱数生成器が、一定のパケット毎にシードを変更する点である。例えば、カウンタデータが所定値を超えた場合に、若しくは受信側へ送信したパケットの全ての通信データ数が所定値を超えた場合に、シードを変更する。
2つ目の相違点は、送信装置が、所定パケットから、いずれかのパケットまでの送信した、全ての通信データ数を、受信装置が把握できるようにする。例えば、パケットPKn+xやパケットPKn+x+1などに、パケットPKnからの通信データ数の総和(つまり、パケットPKnを起点として、パケットPKn+xやパケットPKn+x+1までの全パケットのデータサイズの総和)をUDPパケットのUDPデータ領域に記載する。なお、xは、x=1、2、・・・である。
また、実施例2におけるストリーミング暗号は、通信データに依存しない乱数を用いたものである。乱数生成器が、通信データとは独立に存在するストリーミング暗号で、例えば、Arcfourなどである。CBCモードなど、通信データに依存するストリーミング暗号(ブロック暗号の操作モードを利用したストリーミング暗号)は該当しない。
受信装置50Bは、この通信データ数を取得することで、各UDPパケット(UDPデータ部)が送信される前に、送信装置10Bがどれくらいのデータサイズの通信データを送信したかを知ることができる。これにより、各UDPパケットの復号処理を行う前に、乱数生成器に、この通信データ数分の乱数を発生させれば、たとえ、いくつかのUDPパケットがロストしても、同期をとることができる。
図12に沿って、実施例2における送信装置の動作について説明する。はじめに、S111で、カウンタデータCTRの初期値を設定する。カウンタデータCTRは第三者に知られても問題ないので、初期値は0でもその他の値でも良い。実際の実装では、送信装置10Bと受信装置50Bの間で所定のIV(イニシャルベクタ)値を交換しておき、これをカウンタデータCTRと混合するのが、セキュリティレベルが向上し、望ましい。
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に設定する。
S114で、カウンタデータCTRを暗号器12で暗号し、暗号カウンタデータE(CTR)を求める。例えば、AESの暗号化関数であるAES_Encryptに、カウンタデータCTRを代入する。
なお、カウンタデータCTRが一定の値Nを超える場合に限らず(つまり、複数のカウンタデータを超えた場合に限らず)、一定のカウンタデータのみを超えた場合に、本発明を適用することも可能です。または、ある決められたステップ数を越えるたびに実行してもよい。例えば、ステップ数を10とすれば、カウンタデータが10、20、30、・・・というように、10刻みのタイミングとすることができる。
S115で、暗号カウンタデータE(CTR)を乱数生成器16のシードSDとして入力する。例えば、Arcfourの初期化関数であるArcfour_Initに、この暗号カウンタデータE(CTR)を代入する。
S116で、パケット分の平文データと、乱数生成器16が発生した1パケット分のデータサイズの乱数とをXOR演算して、1パケット分の暗号文データを生成する。例えば、Arcfourの暗号化関数であるArcfour_Encryptに、平文データを代入する。
S117で、カウンタデータCTRと通信データ数TN(n)をUDPパケットPKに付加し、このUDPパケットを受信装置50Bに送信する。
S118で、通信データ数TN(n)を更新する。前の通信データ数TN(n)に、このUDPパケットPKのデータサイズを加算し、通信データ数TN(n+1)を求め、通信データ数TN(n+1)を所定のメモリ(図示せず)に記憶する。
S119で、送信データの準備ができていない場合は(S119のNo)、送信データの準備ができるまで待つ。なお、これ以上の送信データがなければ、ここで終了しても良い。一方、送信データの準備ができた場合は(S119のYes)、S120で、カウンタデータCTRを更新する。これ以降、S112からS120を繰り返す。
ついで、図13に沿って、実施例2における受信装置の動作を説明する。受信装置50Bでは、図示しないメモリが、次の通信データ数RDを記憶している。次の通信データ数とは、送信装置が所定のパケットから任意のパケットまでを順次送信し、かつパケットロスやパケットの到着順の入れ違いがない場合に、受信装置が受信すべく、所定のパケットから任意のパケットまでの通信データ数の総和をいう。次の通信データ数RDは、初期値は0である。はじめに、S211では、図12の要領で生成されたUDPパケットPKを受信する。
S212で、UDPパケットPKに付加されたカウンタデータCTRと通信データ数TD(n)を読み取る。
S213で、カウンタデータCTRが一定の値Nを超えたか否かを調べる。具体的には、CTR Mod N=0の方程式が成り立つか否かを判断する。この処理は、図12のS112と同様である。
CTR Mod N≠0であれば(S213のNo)、S217に進む。CTR Mod N=0であれば(S213のYes)、S214で、次の通信データ数RDを0として所定のメモリ(図示せず)に記憶する。なお、図示していないが、ここで、読み取った通信データ数TD(n)が0以外の値であれば、エラーとしてこのUDPパケットPKを破棄する。
S215で、カウンタデータCTRを暗号器52で暗号し、暗号カウンタデータE(CTR)を求める。例えば、AESの暗号化関数であるAES_Encryptに、カウンタデータCTRを代入する。
S216で、暗号カウンタデータE(CTR)を乱数生成器55のシードSDとして入力する。例えば、Arcfourの初期化関数であるArcfour_Initに、この暗号カウンタデータE(CTR)を代入する。
次にS217で、読み取った通信データ数TD(n)と次の通信データ数RD(n)を比較する。読み取った通信データ数TD(n)が、次の通信データ数RD(n)より小さければ(S217のYes)、パケットの到着順が逆になったため、受信したUDPパケットPKが、処理済みのパケットよりカウンタデータの値が若い未処理のパケットがあるということなので、S214に進む。なお、処理済みのパケットよりカウンタデータの値が若い未処理のパケットがなければ(S217のNo)、読み取った通信データ数TD(n)<次の通信データ数RD(n)となるのは不正なので、このUDPパケットPKを破棄する。
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が実行する。
S220で、1パケット分の暗号文データと、乱数生成器52が発生した1パケット分のデータサイズの乱数とをXOR演算して、1パケット分の平文データを生成する。例えば、Arcfourの暗号化関数であるArcfour_Encryptに、暗号文データを代入する。
S221で、次の通信データ数RD(n)を更新し、所定のメモリ(図示せず)に記憶する。具体的には、通信データ数RD(n)に1パケット分のデータサイズを加算した値を、次の通信データ数RD(n+1)として、その値を所定メモリに記憶する。送信装置10BからまたUDPパケットが送信されてきたら、S211〜S221を繰り返す。
このように、受信装置50Bは、パケットPKn+x+1の前に送信された通信データ数を知ることで、パケットPKn+xがロストしたか、または順番が前後しているかを知ることができる。そして、パケットPKn+x+1を復号化するために、パケットPKn+x+1の前に送信された通信データ数から、パケットPKn+x−1の前に送信された通信データ数を差し引いた通信データ数を計算して、この差の分、乱数生成器55に乱数を生成させる。なお、1パケットのデータ部のデータサイズが固定されている場合には、送信装置10Bは送信した通信データ数をUDPのデータ部に記載する必要はない。受信装置50BはUDPパケットからカウンタデータを読み取ることで、送信装置10Bが送信した通信データ数を知ることができる。
こうすれば、パケットPKn+x+1に用いられる乱数は、送信装置10Bが暗号に利用した乱数RNn+x+1と同じものとなり、同期が取れるので、正しく復号化できる。
しかも、ストリーミング暗号による暗号・復号処理とは異なり、悪意のある攻撃者が、送信装置10Bのふりをして、かなり先のカウンタデータが付与されたUDPパケットを受信装置50Bに送ったとしても、図2に比べて、対応に多少時間を要するだけでサービス不能状態に陥ることがない。かなり先のカウンタデータが付与されたUDPパケットが送られたとしても、受信装置50BはN、N+1、N+2、・・・を基準に乱数列を生成するだけなので、短い時間で対応できる。なお、パケットの暗号・復号処理のほとんどを、Arcfourなど処理の速いストリーミング暗号で行えるので、通信データ数を付加することによる処理時間のロスはあるものの、図2よりさらに高速に暗号・復号処理を行うことが可能となる。
なお、ここでは、送信装置10Bがシードを設定後に送信した通信データ数を、受信装置50Bが把握できるようにするために、送信装置10BがUDPパケットに通信データ数の情報を付加する、つまり通信データ数をUDPパケットに記載するとして説明したが、送信装置10Bと受信装置50Bで送受信するUDPパケットのデータ部のデータサイズを固定にするなど、1回のUDPパケットで送信する前記通信データ数を事前に取り決めておけば、通信データ数をUDPパケットに記載する必要はなく、さらに高速なUDP通信が実現できる。
このように、実施例2を用いれば、リアルタイム性を要求される音声・画像通信のUDP通信で、さらに高速な暗号・復号処理を行うことが可能となり、暗号通信と高速通信とを両立できるようになる。
このように、パケットロスやパケットの到着順に入れ替わりがなければ、毎回、シードSDを入力することも、乱数を余計に発生させることもなくなるので、高速な復号処理が行えるようになる。
また、UDP通信で、高速な暗号通信を行うことが可能となるだけでなく、AESカウンタモードなど、処理速度の遅い暗号処理を減らせるので、より高速な暗号・復号処理が可能となる。
図14は、実施例3における監視システムを示す構成図である。図14において、通信システムの一例である、監視システム1を示す。監視システム1は、PC(パーソナルコンピュータ)50Cと、ネットワークカメラ10Cを有している。PC50Cとネットワークカメラ10Cは、ネットワークケーブル205で接続されている。PC50Cは、受信装置の一例であり、映像を受信する。モニタ203は、受信した映像を表示する。PC50Cは、ネットワーク制御部59と鍵設定部53を、外部から接続自在に構成されている。ネットワーク制御部59は、ネットワークケーブルが接続自在であり、ネットワーク通信を制御する。鍵設定部53は、USB(Universal Serial Bus)インタフェースなど、外部メモリと鍵データの受け渡しを行い、鍵の設定を行う。
ネットワークカメラ10Cは、送信装置の一例であり、監視を行う。ネットワークカメラ10Cは、カメラ部101を有しており、ネットワーク制御部22と鍵設定部13を、外部から接続自在に構成されている。カメラ部101は、映像データを撮影し、映像データの生成を行う。ネットワーク制御部22は、ネットワークケーブルが接続自在であり、ネットワーク通信を制御する。鍵設定部13は、鍵設定部53と同様、USBインタフェースなど、外部メモリと鍵データの受け渡しを行い、鍵の設定を行う。ネットワークケーブル205は、例えばイーサネット(登録商標)ケーブルやシリアルケーブルなど、各種のケーブルが適用可能である。なお、無線通信の場合は、ケーブルは不要である。
図15は、図14の監視システムの機能ブロック図である。図1と共通する要素は、同一の符号を付している。映像通信を開始する前に、事前設定を行う。暗号器12と暗号器52は、カウンタモードを実行するブロック暗号器であり、両者で同じ鍵KY1を設定する。
はじめに、設定者が、USBメモリ内に鍵KY1を用意する。設定者は、このUSBメモリを、USBインタフェース機能を持つ鍵設定部70に挿入する。鍵設定部70は、USBメモリから鍵KY1を読み込み、これを暗号器12にセットする。
また設定者は、このUSBメモリを、USBインタフェース機能を持つ鍵設定部71にも挿入する。鍵設定部71は、USBメモリから鍵KY1を読み込み、これを暗号器52にセットする。ここでは、設定者はUSBメモリを鍵設定部70に先に挿入したが、鍵設定部71に先に挿入しても構わない。また、USBメモリを利用して鍵の設定を行っているが、図1と同様に、公開鍵暗号方式を用いて、設定者を介さずに自動に設定させることも可能である。
次に、カメラ部101が、映像撮影を行い、映像データ生成部72が、映像データIDを生成し、この映像データIDをXOR処理部17に送る。これと同時にカメラ部101は暗号器12に、暗号処理開始を通知する。なお、この暗号処理開始の通知は、XOR処理部17が行っても良い。
暗号器12は、CTR記憶部15から現在のカウンタデータCTRを読み出し、このカウンタデータCTRを暗号化して、暗号カウンタデータE(CTR)を生成する。そして、この暗号カウンタデータE(CTR)を、乱数生成器16のシードSDとして設定する。なお、カウンタデータの初期値はどんな値であっても良い。
次に暗号器12は、乱数生成器16に乱数の生成を要求する。この要求は、カメラ部101、またはXOR処理部17が行ってよい。乱数生成器16は、映像データIDのデータ長と同じ、あるいは大きい乱数を発生する。そして、乱数RNをXOR処理部17に送る。
XOR処理部17は、乱数RNを受けて、映像データIDと乱数のXOR演算を行い、暗号映像データEIDを生成し、この暗号通信データEIDを、データ合成部19に送る。ここでは、一度に映像データIDと乱数のXOR演算を行っているが、逐次行っても良い。
データ合成部19は、CTR記憶部15から、現在のカウンタデータCTRを読み出し、このカウンタデータCTRを暗号映像データEIDに付加する。カウンタデータCTR付きの暗号映像データEIDを生成し、これをUDPデータ送受信部21に送る。
また、データ合成部19は、カウンタアップ部20に、カウンタデータCTRの更新を要求する。カウンタアップ部20は、カウンタデータCTRをCTR記憶部15から読み出し、この値を更新する。最も簡単な更新方法は、現在のカウンタデータに1を加えたデータを次のカウンタデータにする方法であるが、現在のカウンタデータのハッシュ値を次のカウンタデータにするなど、この更新はどのようなものであっても良い。但し、同じカウンタデータが出現しない方法を採用するのが望ましい。
UDPデータ送受信部21は、カウンタデータCTR付きの暗号映像データEIDにUDPヘッダを付加して、ネットワーク制御部22を介して、カウンタデータCTR付きの暗号映像データEIDを、PC50Cに送信する。
PC50Cでは、UDPデータ送受信部60が、ネットワーク制御部59を介して、カウンタデータCTR付きの暗号映像データEIDを含むUDPパケットを受信する。
データ分解部51は、カウンタデータCTR付きの暗号映像データEIDを、UDPデータ送受信部60から受け取る。このカウンタデータCTR付きの暗号映像データEIDから、カウンタデータCTRを抜き出し、このカウンタデータCTRを暗号器52に送る。また、カウンタデータCTR付きの暗号映像データEIDから、暗号映像データEIDを抜き出し、この暗号映像データEIDをXOR処理部56に送る。
暗号器52は、カウンタデータCTRを暗号化して暗号カウンタデータE(CTR)を生成する。そして、この暗号カウンタデータE(CTR)を、乱数生成器55のシードSDとして設定する。
また、暗号器52は、乱数生成器55に乱数RNの生成を要求する。この要求は、データ分解部51、またはXOR処理部56が行うものとすることもできる。乱数生成器55は、暗号映像データEIDのデータ長と同じ、あるいは大きい乱数RNを発生する。そして、乱数RNをXOR処理部56に送る。
XOR処理部56は、乱数RNを受けて、暗号映像データEIDと乱数RNのXOR演算を行い、映像データIDを取得する。そして、この映像データIDを、映像データ生成部73に送る。映像データ生成部73は、ネットワークカメラ10Cが送信した映像データIDをモニタ203に表示させる。
このように、本実施例の監視システムは、実施例1と同様に、同期ずれを抑制することが出来るので、リアルタイム通信が要求される映像通信で、UDP通信が適用された場合であっても、セキュリティを確保しながら、映像通信を円滑に行うことが出来る。
図16は、実施例4におけるUDP通信に利用できるように、ストリーミング暗号の利用方法を改良した手段を説明するブロック図である。本実施例では、通信データ数を用いて同期ずれを抑制する点で、実施例2と同様であるが、シード生成を行う暗号器12、52を備えていない。
図16の暗号化・復号化手段の特徴は、パケットPKn−1やパケットPKnなどに、送信装置10Dがそれ以前に送信した通信データ数の情報を記載するところである。この通信データ数の情報は、送信装置10Dが、UDPパケットのデータ部に記載し、これを受信装置50Dが読み取るようになっている。
受信装置50Dは、この通信データ数を取得することで、各UDPパケット(UDPデータ部)が送信される前に、送信装置10Dがどれくらいのデータサイズの通信データを送信したかを知ることができる。これにより、各UDPパケットの復号化の前に、この通信データ数分の乱数を発生させれば、たとえ、いくつかのUDPパケットがロストしても、同期をとることができるようになる。
図16では、受信装置50Dは、パケットPKnの前に送信された通信データ数を知ることで、パケットPKn−1がロストしたか、または順番が前後しているかを知ることができる。そして、パケットPKnを復号化するために、パケットPKnの前に送信された通信データ数から、パケットPKn−2の前に送信された通信データ数を差し引いた、通信データ数を計算して、この差分、乱数生成器55に乱数を生成させる。なお、パケットPKn−1は後で到着するかもしれないので、この際に発生させた乱数は、受信装置50Dに記憶しておき、パケットPKn−1が到着したら利用する。
こうすれば、パケットPKnに用いられる乱数は、送信装置10Dが暗号に利用した乱数RNnと同じになり、同期が取れるので、正しく復号化できる。
図17は、UDP通信に利用できるように、ストリーミング暗号の利用方法を図2からさらに改良した手段を説明するブロック図である。本実施例は、実施例4の構成に、第2乱数生成器162、552を付加したものである。なお、第1乱数生成器161、551、実施例4の乱数生成器16、55と同様である。
図17の暗号化・復号化手段の特徴は、シードSD1を、送信装置10E、受信装置50Eで交換するのではなく、それぞれ第2乱数生成器162、および第2乱数生成器552によって生成するものとしたところである。従って、シードSD2は事前に交換されて設定されていなければならない。また、パケットPKn+xやパケットPKn+x+1に記載されている通信データ数は、図16とは異なり、1番目のパケットからの通信データ数ではなく、パケットPKnからの通信データ数、つまりパケットPKnを起点として、パケットPKn+xやパケットPKn+x+1を受け取る前までに、送信装置10Eが送信した通信データのデータサイズとなっている。これにより、通信データ数を小さくできるので、パケットロスがあった場合に、転送速度を上げることができるようになっている。
なお、第2乱数生成器162、および第2乱数生成器552は、「N,2N,3N,・・・」というようにカウンタデータがNステップするたびに、シード(乱数)を発生させるものとする。従って、受信装置50EはカウンタデータをUDPパケットから読み出せるものとする。受信装置50EがUDPパケットからカウンタデータを読み出せるようにするためには、送信装置10EがカウンタデータをUDPパケットに付与するか、若しくはUDPの各ヘッダからカウンタデータを読み出すものとすれば良い。
このような工夫を施せば、図16で説明したような、かなり先のカウンタデータが付与された不正なUDPパケット、あるいはかなり先の通信データ数が付与されたUDPパケットを送信されても、Nの値を大きくしておけば、乱数発生時間を低下させることができる。具体的には、受信装置50Eは、カウンタデータをNで割った商の数の乱数を、第2乱数生成器552に発生させ、この最後の乱数のシードSD1を第1乱数生成器551に設定し、カウンタデータをNで割った余りの数の乱数を、第1乱数生成器551に発生させることになるので、乱数発生時間を短縮できる。
ここでは、乱数発生器を2段にしているが、3段以上で構成し、さらに効率の良い乱数発生方法を得ることも可能である。
但し、図16で説明したような不正なUDPパケットを送信されると、第2乱数生成器162が発生した乱数の中に、利用しなかった乱数が出てくる。この乱数は取っておかないと、送信装置10Eが正規のUDPパケットを送信してきた場合に復号化できなくなる。しかしどれくらいのデータサイズ、覚えておけば良いかを決められないので問題となる。
そこで、第2乱数生成器552で、シードSD1を発生させる場合に、第2乱数生成器552の内部情報を受信装置50Eに記憶しておけば良い。そしてMACを利用して、UDPパケットが正しいか否かを判定し、正しくないと判定された場合は、受信装置50Eに記憶しておいた第2乱数生成器552の内部情報を、第2乱数生成器552に戻せば良い。
本発明に係る復号化装置、暗号化装置、復号化方法、暗号化方法、および通信システムは、パケットのロスや到着順の入れ替わりがあった場合であっても、送信側と受信側の間の同期ずれを抑制することの出来るので、セキュリティと円滑な通信を要求される通信方式に有用である。
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データ領域

Claims (24)

  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. 前記カウンタデータは、前記パケットの通し番号であることを特徴とする請求項8記載の復号化装置。
  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. 前記鍵生成手段は、逆関数を有する暗号方式に基づいてパケット情報を暗号化することにより、前記暗号化されたパケット情報を生成することを特徴とする請求項12記載の暗号化装置。
  17. 前記鍵生成手段は、前記パケット情報をブロック毎に暗号化することにより、前記暗号化されたパケット情報を生成することを特徴とする請求項16記載の暗号化装置。
  18. 前記パケット情報は、前記パケットを識別自在なカウンタデータであることを特徴とする請求項12記載の暗号化装置。
  19. 前記カウンタデータは、前記パケットの通し番号であることを特徴とする請求項18記載の暗号化装置。
  20. 前記パケットは、コネクションレス型のプロトコルに基づくことを特徴とする請求項12記載の暗号化装置。
  21. 前記コネクションレス型のプロトコルケットは、UDP(User Datagram Protocol)を含むことを特徴とする請求項20記載の暗号化装置。
  22. パケットに含まれる暗号文データを復号化する復号化方法であって、
    暗号処理を実行する暗号化装置から送信されるパケットを受信する受信ステップと、
    前記パケットに対応しかつ前記パケットを識別するためのパケット情報を、共通鍵を用いて暗号化し、暗号化されたパケット情報を生成する鍵生成ステップと、
    前記鍵生成ステップで生成される暗号化されたパケット情報をシードとして、乱数を生成する乱数生成ステップと、
    前記乱数生成ステップで生成される乱数に基づいて、前記受信ステップで受信されたパケットに含まれる暗号文データを復号化する復号化ステップとを有することを特徴とする復号化方法。
  23. 平文データを暗号化し、暗号文データを復号化装置に送信する暗号化方法であって、
    パケットに対応しかつ前記パケットを識別するためのパケット情報を、共通鍵を用いて暗号化し暗号化されたパケット情報を生成する鍵生成ステップと、
    前記鍵生成ステップで生成される暗号化されたパケット情報をシードとして、乱数を生成する乱数生成ステップと、
    前記乱数生成ステップで生成される乱数に基づいて平文データを暗号化し、暗号文データを生成する暗号化ステップと、
    前記暗号文データと前記パケット情報とを含むパケットを、前記復号化装置に送信する送信ステップとを有することを特徴とする暗号化方法。
  24. 通信システムであって、
    前記通信システムは、
    平文データを暗号化し、パケットに含まれる暗号文データを通信回線に送信する暗号化装置と、
    前記暗号化装置から通信回線を介してパケットを受信し、前記パケットに含まれる暗号文データを復号化する復号化装置とを備え、
    前記暗号化装置は、
    前記パケットに対応しかつ前記パケットを識別するためのパケット情報を、共通鍵を用いて暗号化し暗号化されたパケット情報を生成する第1の鍵生成手段と、
    前記第1の鍵生成手段により生成される暗号化されたパケット情報をシードとして、乱数を生成する第1の乱数生成ステップと、
    前記第1の乱数生成手段により生成される乱数に基づいて平文データを暗号化し、暗号文データを生成する暗号化手段と、
    前記暗号文データと前記パケット情報とを含むパケットを、前記復号化装置に送信する送信手段とを有し、
    前記復号化装置は、
    前記暗号化装置から送信されるパケットを受信する受信手段と、
    前記パケット情報を、前記共通鍵を用いて暗号化し、前記暗号化されたパケット情報を生成する第2の鍵生成手段と、
    前記第2の鍵生成手段により生成される暗号化されたパケット情報をシードとして、乱数を生成する第2の乱数生成手段と、
    前記第2の乱数生成手段により生成される乱数に基づいて、前記受信手段により受信されたパケットに含まれる暗号文データを復号化する復号化手段とを有することを特徴とする通信システム。
JP2009276294A 2009-12-04 2009-12-04 復号化装置、暗号化装置、復号化方法、暗号化方法、および通信システム Active JP5526747B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009276294A JP5526747B2 (ja) 2009-12-04 2009-12-04 復号化装置、暗号化装置、復号化方法、暗号化方法、および通信システム
PCT/JP2010/004712 WO2011067876A1 (en) 2009-12-04 2010-07-23 Decrypting apparatus, encrypting apparatus, decrypting method, encrypting method, and communication system
US13/502,081 US8731196B2 (en) 2009-12-04 2010-07-23 Decrypting apparatus, encrypting apparatus, decrypting method, encrypting method, and communication system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009276294A JP5526747B2 (ja) 2009-12-04 2009-12-04 復号化装置、暗号化装置、復号化方法、暗号化方法、および通信システム

Publications (3)

Publication Number Publication Date
JP2011120051A JP2011120051A (ja) 2011-06-16
JP2011120051A5 JP2011120051A5 (ja) 2013-01-10
JP5526747B2 true JP5526747B2 (ja) 2014-06-18

Family

ID=42828458

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009276294A Active JP5526747B2 (ja) 2009-12-04 2009-12-04 復号化装置、暗号化装置、復号化方法、暗号化方法、および通信システム

Country Status (3)

Country Link
US (1) US8731196B2 (ja)
JP (1) JP5526747B2 (ja)
WO (1) WO2011067876A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011118367B4 (de) * 2011-08-24 2017-02-09 Deutsche Telekom Ag Verfahren zur Authentisierung eines Telekommunikationsendgeräts umfassend ein Identitätsmodul an einer Servereinrichtung eines Telekommunikationsnetzes, Verwendung eines Identitätsmoduls, Identitätsmodul und Computerprogramm
US9449183B2 (en) * 2012-01-28 2016-09-20 Jianqing Wu Secure file drawer and safe
US10419907B2 (en) 2012-02-22 2019-09-17 Qualcomm Incorporated Proximity application discovery and provisioning
US9544075B2 (en) 2012-02-22 2017-01-10 Qualcomm Incorporated Platform for wireless identity transmitter and system using short range wireless broadcast
US10360593B2 (en) 2012-04-24 2019-07-23 Qualcomm Incorporated Retail proximity marketing
JP2013251609A (ja) * 2012-05-30 2013-12-12 Sony Corp 情報処理装置、icチップ及び情報処理方法
US8990556B1 (en) 2014-08-13 2015-03-24 Gimbal, Inc. Sharing beacons
US9107152B1 (en) 2015-03-11 2015-08-11 Gimbal, Inc. Beacon protocol advertising bi-directional communication availability window
CN107710216B (zh) * 2015-07-03 2021-12-07 阿费罗有限公司 用于在物联网(IoT)系统中建立安全通信信道的设备和方法
US9729310B2 (en) * 2015-10-08 2017-08-08 The Boeing Company Scrambled counter mode for differential power analysis resistant encryption
KR102303689B1 (ko) * 2016-05-27 2021-09-17 어페로, 인크. 사물 인터넷(IoT) 디바이스와 보안 통신 채널을 설정하기 위한 시스템 및 방법
JP6925907B2 (ja) 2017-08-09 2021-08-25 オムロンヘルスケア株式会社 データ送信装置、データ受信装置、方法及びプログラム
US10902144B2 (en) * 2017-08-25 2021-01-26 Electronics And Telecommunications Research Institute Method and apparatus for securing data
CN110582082B (zh) * 2018-06-08 2022-06-10 阿里巴巴集团控股有限公司 一种待配网设备接入网络热点设备的方法和装置
FR3093363B1 (fr) * 2019-02-28 2021-12-03 Psa Automobiles Sa Procédé et dispositif de cryptographie symétrique pour calculateur de véhicule
US10681547B1 (en) * 2019-05-22 2020-06-09 Frank Yang Access verification network device and method
US11588798B1 (en) * 2020-03-12 2023-02-21 Government Of The United States, As Represented By The National Security Agency Protocol free encrypting device
US11451526B2 (en) * 2020-04-10 2022-09-20 Crestron Electronics Inc. Encrypted 1-bit audio distribution system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08335040A (ja) 1995-06-02 1996-12-17 Fujitsu Ltd 暗号化処理方式
JPH10301492A (ja) * 1997-04-23 1998-11-13 Sony Corp 暗号化装置および方法、復号装置および方法、並びに情報処理装置および方法
US6052466A (en) * 1997-08-28 2000-04-18 Telefonaktiebolaget L M Ericsson (Publ) Encryption of data packets using a sequence of private keys generated from a public key exchange
AU2001263028A1 (en) * 2000-05-09 2001-11-20 Northeastern University Stream-cipher method and apparatus
US20020025045A1 (en) * 2000-07-26 2002-02-28 Raike William Michael Encryption processing for streaming media
AU2001284870A1 (en) * 2000-08-23 2002-03-04 Motorola, Inc. Method and apparatus for generating an unique encryption key stream for each data block in a frame
US7684565B2 (en) * 2001-01-16 2010-03-23 General Instrument Corporation System for securely communicating information packets
JP4254758B2 (ja) 2005-07-25 2009-04-15 ソニー株式会社 ストリーム暗号化装置、ストリーム暗号化方法、ストリーム復号化装置、ストリーム復号化方法
JP2008060817A (ja) * 2006-08-30 2008-03-13 Ttt Kk 通信システム、ウェブサーバ装置、クライアント装置、通信を行うための通信プログラム及びプログラムを記録した記録媒体
JP5101965B2 (ja) * 2007-09-25 2012-12-19 京セラ株式会社 受信装置
JP2009188751A (ja) * 2008-02-06 2009-08-20 Fujitsu Ltd 無線通信システムにおける暗号化及び復号化方法並びに送信装置及び受信装置
US20100303229A1 (en) * 2009-05-27 2010-12-02 Unruh Gregory Modified counter mode encryption

Also Published As

Publication number Publication date
US20120201383A1 (en) 2012-08-09
WO2011067876A1 (en) 2011-06-09
JP2011120051A (ja) 2011-06-16
US8731196B2 (en) 2014-05-20

Similar Documents

Publication Publication Date Title
JP5526747B2 (ja) 復号化装置、暗号化装置、復号化方法、暗号化方法、および通信システム
JP7008725B2 (ja) カウンタベースの暗号システムにおける改良型認証付き暗号化のための方法及びシステム
US7200232B2 (en) Method and apparatus for symmetric-key decryption
CN112398651B (zh) 一种量子保密通信方法、装置、电子设备以及存储介质
JP2007522764A (ja) データを暗号的に処理する方法及び装置
JP2011120051A5 (ja)
JP2005525047A (ja) セキュアな無線ローカルエリアネットワーク又は無線メトロポリタンエリアネットワーク、及び関連する方法
JP2007140566A (ja) 効率的なパケット暗号化方法
CN106850191B (zh) 分布式存储系统通信协议的加密、解密方法及装置
WO2007059558A1 (en) Wireless protocol for privacy and authentication
US7039190B1 (en) Wireless LAN WEP initialization vector partitioning scheme
KR100991222B1 (ko) 암호화 및 복호를 위한 장치, 방법 및 기록 매체
JP2010028747A (ja) 秘匿処理を行う送信装置及び受信装置
US8122247B2 (en) Processing method for message integrity with tolerance for non-sequential arrival of message data
Caneill et al. Attacks against the WiFi protocols WEP and WPA
JP4664692B2 (ja) 暗号化方法、復号方法、暗号化装置、復号装置、暗号装置、およびプログラム
WO2003049363A1 (en) System and method for symmetrical cryptography
Došek et al. Secure high level communication protocol for CAN bus
KR20200028782A (ko) 실시간 데이터 전송을 위한 패턴 암호 블록 모드에 기초한 암호화 방법 및 장치
JP5423308B2 (ja) 通信端末装置、通信処理方法及びプログラム
Birrane, III et al. RFC 9173: Default Security Contexts for Bundle Protocol Security (BPSec)
CN101237461A (zh) 流加密及解密方法及装置
KR100864092B1 (ko) 블록암호의 블록 체이닝 모드를 사용한 패킷 암호화 방법,이를 이용한 패킷 암/복호화 서비스 제공 방법
Ahmad et al. Attack Robustness and Security Enhancement with Improved Wired Equivalent Protocol
JP2017060083A (ja) 通信装置および暗号通信方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121120

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121120

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20121217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131217

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20140107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140318

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140331

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250