JP2008124987A - 暗号通信装置及び暗号通信システム及び暗号通信方法及びプログラム - Google Patents

暗号通信装置及び暗号通信システム及び暗号通信方法及びプログラム Download PDF

Info

Publication number
JP2008124987A
JP2008124987A JP2006309149A JP2006309149A JP2008124987A JP 2008124987 A JP2008124987 A JP 2008124987A JP 2006309149 A JP2006309149 A JP 2006309149A JP 2006309149 A JP2006309149 A JP 2006309149A JP 2008124987 A JP2008124987 A JP 2008124987A
Authority
JP
Japan
Prior art keywords
transmission
random number
encryption
communication device
unit
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.)
Pending
Application number
JP2006309149A
Other languages
English (en)
Inventor
Akiyoshi Yamaguchi
晃由 山口
Tsuneo Sato
恒夫 佐藤
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2006309149A priority Critical patent/JP2008124987A/ja
Publication of JP2008124987A publication Critical patent/JP2008124987A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】再送攻撃を防ぎ、安全な暗号通信を実現する。
【解決手段】受信乱数記憶部221が記憶した受信乱数に基づいて送信検証生成部232が送信検証情報を生成し、検証乱数生成部231が送信乱数を生成し、結合部234が送信データと結合し、暗号化部237が暗号化し、送信部120が通信相手に対して送信する。受信部110が通信相手から受信したデータを、復号部212が復号し、分割部213が分割し、受信検証情報と受信乱数と受信データとを取得する。検証部215が受信検証情報を検証し、検証成功なら通信を続行し、検証失敗なら通信を終了する。
【選択図】図4

Description

この発明は、暗号通信をする暗号通信装置、複数の暗号通信装置が互いに暗号通信をする暗号通信システム、暗号通信装置が暗号通信する暗号通信方法、コンピュータを暗号通信装置として機能させるプログラムに関する。
不特定多数が接続するネットワークで通信する情報を盗聴などから守るために、暗号通信が用いられている。暗号には大きく分けて、公開鍵暗号と共通鍵暗号とがあり、前者は暗号鍵の配布、後者はデータの秘匿などに用いられる。また暗号は、データの秘匿だけでなく相手を認証するのにも用いられる。
組み込み機器間の認証においては、公開鍵暗号の処理負荷が重いことから共通鍵暗号を用いることが多い。
認証および認証後の暗号通信における脅威のひとつに再送攻撃がある。再送攻撃とは、正規に認証する装置同士の通信を傍受し、傍受したデータを使って、正規の装置になりすまして装置にアクセスする攻撃である。再送攻撃の防止には、暗号通信に用いる鍵や、送信データの一部に乱数を用いる方法がある。
特開平6−315026号公報 特開平7−325785号公報 特開2003−173139号公報 特開平11−340969号公報 特開2005−176231号公報 「NETWORK SECURITY −PRIVATE Communication in a PUBLIC World−」257〜270ページ、Charlie Kaufman他、2002年、Prentice Hall PTR、New Jersey。
この発明は、例えば、再送攻撃などのなりすまし攻撃を防止し、安全な暗号通信を実現するとともに、その実現のために必要な通信量を低減し、通信コストを抑えることを目的とする。
この発明にかかる暗号通信装置は、
情報を処理する処理装置と、他の暗号通信装置と通信する通信装置と、データ入力部と、検証乱数生成部と、結合部と、暗号化部と、送信部と、受信部と、復号部と、分割部と、検証部と、データ出力部とを有し、
上記データ入力部は、上記処理装置を用いて、他の暗号通信装置に対して送信すべきデータを入力して送信データとし、
上記検証乱数生成部は、上記処理装置を用いて、乱数を生成して送信乱数とし、
上記結合部は、上記処理装置を用いて、上記検証乱数生成部が生成した送信乱数と上記データ入力部が入力した送信データとを含むデータを生成して送信平文とし、
上記暗号化部は、上記処理装置を用いて、上記結合部が生成した送信平文を暗号化して送信暗号文とし、
上記送信部は、上記通信装置を用いて、上記暗号化部が暗号化した送信暗号文を上記他の暗号通信装置に対して送信し、
上記受信部は、上記通信装置を用いて、上記送信部が送信した送信暗号文に対する応答として上記他の暗号通信装置が送信したデータを受信して受信暗号文とし、
上記復号部は、上記処理装置を用いて、上記受信部が受信した受信暗号文を復号して受信平文とし、
上記分割部は、上記処理装置を用いて、上記復号部が復号した受信平文に含まれる送信検証情報を取得して受信検証情報とし、上記復号部が復号した受信平文に含まれる送信データを取得して受信データとし、
上記検証部は、上記処理装置を用いて、上記分割部が取得した受信検証情報と上記検証乱数生成部が生成した送信乱数とに基づいて、検証成功か検証失敗かを判断し、
上記データ出力部は、上記検証部が検証成功と判断した場合に、上記処理装置を用いて、上記分割部が取得した受信データを出力することを特徴とする。
この発明にかかる暗号通信装置によれば、送信データとともに送信乱数を送信し、受信データとともに受信検証情報を受信して、検証部が検証を行うので、通信開始時だけでなく、常に通信相手が正規の通信相手であるか否かを検証することができ、攻撃者による攻撃を防ぐことができるという効果を奏する。
実施の形態1.
実施の形態1について、図1〜図12を用いて説明する。
図1は、この実施の形態における暗号通信システム800の全体構成の一例を示すシステム構成図である。
暗号通信システム800は、複数の暗号通信装置100(通信端末)を有する。
暗号通信装置100は、ネットワーク801を介して互いに通信する。
暗号通信装置100間の関係は、対等な関係であってもよいし、サーバとクライアントの関係であってもよい。例えば、ある暗号通信装置100が、他の暗号通信装置100を制御するデータを送信し、そのデータを受信した他の暗号通信装置100が、受信したデータに基づいて所定の制御を受ける。あるいは、ある暗号通信装置100が、他の暗号通信装置100からの要求にしたがい、暗号通信装置100が持つ秘密情報を、他の暗号通信装置100に対して送信する。
ネットワーク801は、インターネットなどのオープンなネットワークである。したがって、暗号通信装置100間の通信は、悪意の攻撃者999が傍受可能である。
そのため、暗号通信装置100間の通信は、原則として暗号化され、攻撃者999に解読できないようにした暗号通信により行う。
攻撃者999は、暗号通信装置100間の暗号通信を解読するため、様々な攻撃を仕掛けてくる可能性がある。
例えば、攻撃者999がどちら一方の暗号通信装置100になりすまして他方の暗号通信装置100と通信することにより、暗号解読の手がかりを得ようとする場合がある。
攻撃者999は、暗号通信装置100間の通信を記録しておき、正規に暗号通信装置100同士が通信したときのデータを暗号通信装置100に対して送信することにより、暗号通信装置100になりすます。これを再送攻撃という。
この実施の形態における暗号通信システム800は、再送攻撃を見破り、安全な暗号通信を実現するものである。
図2は、この実施の形態における暗号通信装置100の外観の一例を示す図である。
暗号通信装置100は、システムユニット910、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置901、キーボード902(Key・Board:K/B)、マウス903、FDD904(Flexible・Disk・Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット910は、コンピュータであり、ファクシミリ機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク942(LAN)、ゲートウェイ941を介してインターネット940(ネットワーク801)に接続されている。
図3は、この実施の形態における暗号通信装置100のハードウェア資源の一例を示す図である。
暗号通信装置100は、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信装置915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、スキャナ装置907、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信装置915、キーボード902、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。
また、通信装置915、表示装置901、プリンタ装置906などは、出力部、出力装置の一例である。
通信装置915は、ファクシミリ機932、電話器931、LAN942等に接続されている。通信装置915は、LAN942に限らず、インターネット940、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。インターネット940或いはISDN等のWANに接続されている場合、ゲートウェイ941は不用となる。
通信装置915は、例えば、モデムやネットワークカードなどのデバイス(ネットワーク接続部)であり、ネットワーク801にデータを送信し、ネットワーク801からデータを受信する。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
上記プログラム群923には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disc)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
図4は、この実施の形態における暗号通信装置100の機能ブロックの構成の一例を示すブロック構成図である。
暗号通信装置100は、受信部110、送信部120、データ処理部130、暗号処理部200を有する。
受信部110は、通信装置915を用いて、他の暗号通信装置100などが送信したデータを受信する。
受信部110は、CPU911などの処理装置を用いて、受信したデータを出力する。
送信部120は、CPU911などの処理装置を用いて、他の暗号通信装置100などに対して送信するデータを入力する。
送信部120は、通信装置915を用いて、入力したデータを他の暗号通信装置100などに対して送信する。
データ処理部130は、CPU911などの処理装置を用いて、受信部110が受信したデータを処理する。
また、データ処理部130は、CPU911などの処理装置を用いて、他の暗号通信装置100に対して送信すべきデータを生成する。
暗号処理部200は、CPU911などの処理装置を用いて、暗号通信処理をする。
暗号通信処理とは、例えば、受信部110が受信したデータが暗号化されたデータである場合、これを復号する処理である。また、受信部110が受信したデータが、正規の通信相手である他の暗号通信装置100からのものであるかを検証し、再送攻撃などを見破る処理も含む。更に、データ処理部130が生成したデータを暗号化する処理や、送信するデータが、再送攻撃によるものではなく、他の暗号通信装置100にとっての正規の通信相手である暗号通信装置100自身が送信したものであることを保証できるよう、データを加工する処理も含む。
暗号処理部200がこのような暗号通信処理を行うので、データ処理部130は、他の暗号通信装置100に対して送信すべき(生の)データを暗号処理部200に渡すだけで、安全な暗号通信による送信ができる。また、データ処理部130は、暗号通信を意識せず、他の暗号通信装置100から送信されてきたデータを、暗号処理部200から受け取ることができる。
暗号処理部200は、復号鍵記憶部211、復号部212、分割部213、受信検証生成部214、検証部215、データ出力部216、受信乱数記憶部221、送信乱数記憶部222、検証乱数生成部231、送信検証生成部232、データ入力部233、開始乱数生成部235、暗号鍵記憶部236、暗号化部237を有する。
復号鍵記憶部211は、記憶装置を用いて、復号鍵を記憶する。記憶装置は、フラッシュメモリや磁気ディスク装置920などの不揮発デバイスである。記憶装置は、復号鍵が外部に漏れないようにするため、耐タンパ性のある記憶装置であることが好ましい。
復号鍵記憶部211が記憶する復号鍵は、正規の通信相手である他の暗号通信装置100との間で事前に合意したものであり、正規の通信相手である他の暗号通信装置100が送信するデータを暗号化する暗号鍵と対になるものである。例えば、共通鍵暗号方式の場合、復号鍵記憶部211が記憶する復号鍵は、正規の通信相手である他の暗号通信装置100が送信するデータを暗号化する暗号鍵と同一である。しかし、他の暗号方式の場合には、両者が同一であるとは限らない。復号鍵記憶部211が記憶する復号鍵は、正規の通信相手である他の暗号通信装置100が暗号化したデータを正しく復号できるものであればよい。
復号部212は、CPU911などの処理装置を用いて、受信部110が出力した受信暗号文を入力する。受信部110が出力するデータは、通信相手が暗号化して送信してきたデータである場合と、通信相手が暗号化せずに送信してきたデータである場合とがある。「受信暗号文」とは、受信部110が出力したデータのうち、暗号化されたデータのことである。
復号部212は、CPU911などの処理装置を用いて、復号鍵記憶部211が記憶した復号鍵を入力する。
復号部212は、CPU911などの処理装置を用いて、入力した受信暗号文を、入力した復号鍵で復号する。
復号部212は、CPU911などの処理装置を用いて、受信平文を出力する。「受信平文」とは、復号部212が受信暗号文を復号した結果得られたデータのことである。復号鍵記憶部211が記憶した復号鍵が、通信相手がデータを暗号化した暗号鍵と正しく対応するものであれば、受信平文は、通信相手が暗号化した元のデータと一致する。
分割部213は、CPU911などの処理装置を用いて、復号部212が出力した受信平文を入力する。
分割部213は、CPU911などの処理装置を用いて、入力した受信平文に含まれる情報を取得する。
受信平文には、送信検証情報、送信乱数、送信データなどの情報が含まれている。
「送信検証情報」とは、そのデータを送信した送信元が、正規の通信相手である他の暗号通信装置100であることを、暗号通信装置100が検証するために使用するデータである。
「送信乱数」とは、暗号通信装置100が他の暗号通信装置100に対して送信するデータが、他の暗号通信装置100にとっての正規の通信相手である暗号通信装置100自身が送信したものであることを、他の暗号通信装置100が検証できるように、送信するデータにつける送信検証情報を生成する材料となるデータである。
「送信データ」とは、他の暗号通信装置100のデータ処理部130が、暗号通信装置100のデータ処理部130に対して送信しようとしているデータである。
分割部213は、CPU911などの処理装置を用いて、受信平文に含まれる送信検証情報と送信乱数と送信データとを取得する。
分割部213は、CPU911などの処理装置を用いて、受信検証情報と受信乱数と受信データとを出力する。
「受信検証情報」とは、分割部213が取得した送信検証情報のことであり、単に呼び方が変わっただけで同一のデータである。
「受信乱数」とは、同様に、分割部213が取得した送信乱数のことである。
「受信データ」も同様に、分割部213が取得した送信データのことである。
図5は、この実施の形態における受信平文510のデータ構造の一例を示す図である。
この例において、受信平文510は、送信検証情報511、送信乱数512、送信データ513を結合したデータである。データの「結合」とは、mビットのデータAとnビットのデータBとからm+nビットのデータCを生成することである。データCは、データAのすべてのビットとデータBのすべてのビットとを含む。データAとデータBとの結合は、通常「A|B」と表記し、データAを構成するビット列の後ろにデータBを構成するビット列をつなげたビット列によって構成される。
この例において、受信平文510は、送信検証情報511を先頭とし、その後に送信乱数512を結合し、更にその後に送信データ513を結合したものである。
分割部213は、CPU911などの処理装置を用いて、復号部212が出力した受信平文510を入力する。
分割部213は、CPU911などの処理装置を用いて、入力した受信平文510を分割し、受信検証情報521、受信乱数522、受信データ523を取得する。
例えば、送信検証情報511のビット長がn、送信乱数512のビット長がn、送信データのビット長がnであれば、受信平文510は(n+n+n)ビットのデータである。ここで、nおよびnは、あらかじめ定めた定数である。nは、あらかじめ定めた定数でもよいし、データの内容によって変化してもよい。
分割部213は、CPU911などの処理装置を用いて、入力した受信平文510の先頭nビットを取得して、受信検証情報521とする。分割部213は、CPU911などの処理装置を用いて、残り(n+n)ビットのデータから先頭nビットを取得して、受信乱数522とする。分割部213は、CPU911などの処理装置を用いて、残りnビットのデータを取得して、受信データ523とする。
図6は、この実施の形態における受信平文510のデータ構造の別の例を示す図である。
ここに示すように、受信平文510は、送信検証情報511を先頭とし、その後に送信データ513を結合し、更にその後に送信乱数512を結合したものであってもよい。
また、受信平文510は、送信乱数512を先頭とし、その後に送信検証情報511を結合し、更にその後に送信データ513を結合したものであってもよい。
あるいは、受信平文510は、送信乱数512を先頭とし、その後に送信データ513を結合し、更にその後ろに送信検証情報511を結合したものであってもよい。
送信データ513を先頭としてもよいが、送信検証情報511あるいは送信乱数512を先頭とするほうが好ましい。送信検証情報511や送信乱数512は、送信のたびに異なるのに対して、送信データ513は同じデータが何回も送信される場合があるからである。
CBC(Cipher Block Chaining)モードやCFB(Cipher Feedback)モードのブロック暗号方式では、二番目以降のブロックの暗号文が、その前のブロックの暗号文に依存するので、同じデータを暗号化しても異なる暗号文が生成される。これに対して、一番先頭のブロックは、同じデータを同じ暗号鍵で暗号化すると、同じ暗号文が生成されるので、攻撃者999がその部分を再送攻撃に利用できる可能性がある。
送信データ513を先頭以外の位置に結合すれば、一番先頭のブロックは常に異なるデータとなるので、一番先頭のブロックの暗号文も常に異なる。したがって、攻撃者999がその部分を再送攻撃に利用することはできない。
同様の理由により、ブロック暗号方式を用いる場合には、二番目以降のブロックの暗号文がその前のブロックの暗号文に依存しないECB(Electronic Code Book)モードではなく、上述したCBCモードやCFBモードを用いるほうが好ましい。
図4に戻り、暗号通信装置100の機能ブロックの説明を続ける。
受信検証生成部214は、CPU911などの処理装置を用いて、後述する送信乱数記憶部222が記憶した送信乱数を入力する。
受信検証生成部214は、CPU911などの処理装置を用いて、入力した送信乱数に基づくデータを生成する。
受信検証生成部214は、CPU911などの処理装置を用いて、検証情報を出力する。「検証情報」とは、送信乱数に基づいて受信検証生成部214が生成したデータのことである。
「送信乱数に基づくデータ」とは、例えば、送信乱数そのものであってもよいし、送信乱数のハッシュ値であってもよい。あるいは、送信乱数に所定の演算を施したデータであってもよい。「送信乱数に基づくデータ」は、送信乱数に依存し、送信乱数により一意に決定するデータであって、送信乱数を知らなければ同じデータを生成することができないものであればよい。
なお、検証情報として送信乱数そのものを用いる場合は、受信検証生成部214がなくてもよい。
検証部215は、CPU911などの処理装置を用いて、分割部213が出力した受信検証情報を入力する。
検証部215は、CPU911などの処理装置を用いて、受信検証生成部214が出力した検証情報を入力する。検証情報として送信乱数そのものを用いる場合には、検証部215は、CPU911などの処理装置を用いて、送信乱数記憶部222が記憶した送信乱数を検証情報として入力する。
検証部215は、CPU911などの処理装置を用いて、入力した受信検証情報と、入力した検証情報とに基づいて、検証成功か検証失敗かを判断する。
具体的には、検証部215は、CPU911などの処理装置を用いて、入力した受信検証情報と、入力した検証情報とを比較する。
比較の結果、受信検証情報と検証情報とが一致する場合、検証部215は、CPU911などの処理装置を用いて、検証成功と判断する。
受信検証情報と検証情報とが一致しない場合には、検証部215は、CPU911などの処理装置を用いて、検証失敗と判断する。
検証部215は、CPU911などの処理装置を用いて、検証結果を出力する。「検証結果」とは、検証部215が検証成功と判断したか、検証失敗と判断したかを示すデータである。
データ出力部216は、CPU911などの処理装置を用いて、分割部213が出力した受信データを入力する。
データ出力部216は、CPU911などの処理装置を用いて、検証部215が出力した検証結果を入力する。
入力した検証結果に基づいて、検証部215が検証成功と判断したとわかった場合、データ出力部216は、CPU911などの処理装置を用いて、入力した受信データを、データ処理部130に対して出力する。
検証部215が検証失敗したと判断した場合、データ出力部216は、入力した受信データではなく、通信が異常終了したことを示すデータを、データ処理部130に対して出力する。
これにより、データ処理部130は、他の暗号通信装置100が送信したデータを受け取ることができないので、その時点で他の暗号通信装置100との間の暗号通信が終了する。
受信乱数記憶部221は、CPU911などの処理装置を用いて、分割部213が出力した受信乱数を入力する。
受信乱数記憶部221は、RAM914などの記憶装置を用いて、入力した受信乱数を記憶する。
なお、通信が終了した場合には、受信乱数を記憶する必要がない。したがって、受信乱数記憶部221は、CPU911などの処理装置を用いて、検証部215が出力した検証結果を入力し、検証部215が検証成功と判断したとわかった場合には、受信乱数記憶部221は、CPU911などの処理装置を用いて、入力した受信乱数を記憶し、検証失敗と判断したとわかった場合には、受信乱数記憶部221は、CPU911などの処理装置を用いて、記憶した受信乱数を消去することとしてもよい。
検証乱数生成部231は、CPU911などの処理装置を用いて、乱数を生成する。
検証乱数生成部231は、CPU911などの処理装置を用いて、送信乱数を出力する。「送信乱数」は、検証乱数生成部231が生成した乱数である。
送信乱数記憶部222は、CPU911などの処理装置を用いて、検証乱数生成部231が生成した送信乱数を入力する。
送信乱数記憶部222は、RAM914などの記憶装置を用いて、入力した送信乱数を記憶する。
なお、通信が終了した場合には、送信乱数を記憶している必要がない。したがって、送信乱数記憶部222は、CPU911などの処理装置を用いて、検証部215が出力した検証結果を入力し、検証部215が検証失敗と判断したとわかった場合には、送信乱数記憶部222は、CPU911などの処理装置を用いて、記憶した送信乱数を消去することとしてもよい。
送信検証生成部232は、CPU911などの処理装置を用いて、受信乱数記憶部221が記憶した受信乱数を入力する。
送信検証生成部232は、CPU911などの処理装置を用いて、入力した受信乱数に基づくデータを生成する。
送信検証生成部232は、CPU911などの処理装置を用いて、送信検証情報を出力する。「送信検証情報」は、受信乱数に基づいて送信検証生成部232が生成したデータである。
「受信乱数に基づくデータ」とは、例えば、受信乱数そのものであってもよいし、受信乱数のハッシュ値であってもよい。受信乱数に基づくデータ(送信検証情報)は、通常、受信検証生成部214が生成する送信乱数に基づくデータ(検証情報)と同じ方式(演算・計算式)で生成するので、受信乱数と送信乱数とが同じ場合には、同じデータが生成される。
ここで、暗号通信装置100の送信検証生成部232は、通信相手である他の暗号通信装置100の受信検証生成部214が検証情報を生成するのと同じ方式で送信検証情報を生成する必要がある。また、暗号通信装置100の受信検証生成部214は、通信相手である他の暗号通信装置100の送信検証生成部232が送信検証情報を生成するのと同じ方式で検証情報を生成する必要がある。この条件を満たす限りにおいては、1つの暗号通信装置100のなかで、受信検証生成部214が検証情報を生成する方式と、送信検証生成部232が送信検証情報を生成する方式とが異なっていてもよい。
なお、送信検証情報として受信乱数そのものを用いる場合は、送信検証生成部232がなくてもよい。
データ入力部233は、CPU911などの処理装置を用いて、通信相手である他の暗号通信装置100に対して送信すべきデータを、データ処理部130から入力する。
データ入力部233は、CPU911などの処理装置を用いて、送信データを出力する。「送信データ」は、データ入力部233がデータ処理部130から入力した、通信相手である他の暗号通信装置100に対して送信すべきデータである。
なお、送信データが、通信相手である他の暗号通信装置100から受信しデータ出力部216が出力した受信データに対する応答である場合、送信データを「応答データ」と呼ぶ。応答データは、送信データの一種である。
ここで、「応答」とは広い意味に用いる。すなわち、暗号通信装置100がサーバ装置として機能している場合に、通信相手である他の暗号通信装置100からの要求を示す受信データを受信して、それに対する応答として送信する送信データが「応答データ」であるのはもちろんであるが、それに限らない。
通信相手である他の暗号通信装置100がサーバ装置として機能している場合に、他の暗号通信装置100から、暗号通信装置100からの要求に対する応答である受信データを受信し終わり、サーバ装置である他の暗号通信装置100が、暗号通信装置100からの次の要求を待っている状態のときに、暗号通信装置100から他の暗号通信装置100に対して送信する次の要求を示す送信データも「応答データ」に含む。
すなわち、通信のシーケンスにおいて、通信相手から受信データを受信した後、その通信相手に対して送信する送信データは、応答データである。
結合部234は、CPU911などの処理装置を用いて、送信検証生成部232が出力した送信検証情報を入力する。
結合部234は、CPU911などの処理装置を用いて、検証乱数生成部231が出力した送信乱数を入力する。
結合部234は、CPU911などの処理装置を用いて、データ入力部233が出力した送信データを入力する。
結合部234は、CPU911などの処理装置を用いて、入力した送信検証情報と、入力した送信乱数と、入力した送信データとを含むデータを生成する。
結合部234は、CPU911などの処理装置を用いて、送信平文を出力する。「送信平文」とは、結合部234が生成した、送信検証情報と送信乱数と送信データとを含むデータのことである。
図7は、この実施の形態における結合部234が生成する送信平文540のデータ構造の一例を示す図である。
この例において、結合部234は、CPU911などの処理装置を用いて、送信検証情報541と送信乱数542と送信データ543とを入力し、CPU911などの処理装置を用いて、送信検証情報541を先頭として、その後に送信乱数542を結合し、更にその後に送信データ543を結合して、送信平文540を生成する。
なお、結合の順序は、これに限るものではなく、図6を用いて説明した受信平文510と同様に、異なる順序であってもよい。
暗号通信装置100の結合部234が生成する送信平文540における結合の順序は、通信相手である他の暗号通信装置100の分割部213が分割する受信平文510における結合の順序と同じ必要がある。また、暗号通信装置100の分割部213が分割する受信平文510における結合の順序は、通信相手である他の暗号通信装置100の結合部234が生成する送信平文540における結合の順序と同じ必要がある。この条件を満たす限りにおいては、1つの暗号通信装置100のなかで、分割部213が分割する受信平文510における結合の順序と、結合部234が結合する送信平文540における結合の順序とが異なっていてもよいし、送受信のたびに結合の順序を変えてもよい。
ただし、受信平文510の先頭が送信乱数512である場合、その送信乱数512に基づく送信検証情報511を含む送信平文540の先頭は、送信検証情報511以外のデータであることが好ましい。通信を傍受した攻撃者999が、送信乱数512と送信検証情報511との対応関係に関わる情報を得ることを防ぐためである。
また、結合以外の方法で送信平文540を生成する場合は、暗号通信装置100の結合部234が生成した送信平文540から、通信相手である他の暗号通信装置100の分割部213が、送信検証情報541、送信乱数542、送信データ543を取得できるよう、対応する方法で送信平文540を生成する。
図4に戻り、暗号通信装置100の機能ブロックの説明を続ける。
開始乱数生成部235は、CPU911などの処理装置を用いて、乱数を生成する。
開始乱数生成部235は、CPU911などの処理装置を用いて、開始乱数を出力する。「開始乱数」とは、開始乱数生成部235が生成した乱数のことである。
受信乱数記憶部221が受信乱数を記憶している場合には、送信検証生成部232が送信検証情報を生成するが、受信乱数記憶部221が受信乱数を記憶していない場合には、送信検証生成部232は送信検証情報を生成しない。
その場合、結合部234は、CPU911などの処理装置を用いて、開始乱数生成部235が生成した開始乱数を入力し、入力した開始乱数を送信検証情報として含む送信データを生成する。
受信乱数記憶部221が受信乱数を記憶していない場合とは、例えば、通信相手から受信したデータのなかに送信乱数が含まれていない場合などである。これには、送信データが、後述する通信開始要求である場合などがある。
暗号鍵記憶部236は、記憶装置を用いて、暗号鍵を記憶する。記憶装置は、フラッシュメモリや磁気ディスク装置920などの不揮発性デバイスである。記憶装置は、暗号鍵が外部に漏れないようにするため、耐タンパ性のある記憶装置であることが好ましい。
暗号鍵記憶部236が記憶する復号鍵は、正規の通信相手である他の暗号通信装置100との間で事前に合意したものであり、正規の通信相手である他の暗号通信装置100が受信したデータを復号する復号鍵と対になるものである。例えば、共通鍵暗号方式の場合、暗号鍵記憶部236が記憶する暗号鍵は、正規の通信相手である他の暗号通信装置100が受信したデータを復号する復号鍵と同一である。しかし、他の暗号方式の場合には、両者が同一であるとは限らない。暗号鍵記憶部236が記憶する暗号鍵は、正規の通信相手である他の暗号通信装置100が、受信したデータを正しく復号できるものであればよい。
なお、復号鍵記憶部211が記憶する復号鍵と、暗号鍵記憶部236が記憶する暗号鍵とが同一である場合には、復号鍵記憶部211が暗号鍵記憶部236を兼ねる構成として、独立した暗号鍵記憶部236を設けなくてもよい。
暗号化部237は、CPU911などの処理装置を用いて、結合部234が出力した送信平文を入力する。
暗号化部237は、CPU911などの処理装置を用いて、暗号鍵記憶部236が記憶した暗号鍵を入力する。
暗号化部237は、CPU911などの処理装置を用いて、入力した送信平文を、入力した暗号鍵で暗号化する。
暗号化部237は、CPU911などの処理装置を用いて、送信暗号文を出力する。「送信暗号文」とは、暗号化部237が送信平文を暗号化して得たデータのことである。
暗号化部237が出力した送信暗号文は、送信部120が入力し、他の暗号通信装置100に対して送信する。
次に、暗号通信装置100同士が暗号通信をする通信の流れについて、説明する。
図8は、この実施の形態における暗号通信装置100aと暗号通信装置100bとが暗号通信をする通信の流れの一例を示すシーケンス図である。
この実施の形態の暗号通信は、一方の暗号通信装置100が通信の開始を要求することから始まる。この例では、通信の開始を要求する側を暗号通信装置100aとし、通信の開始を要求された側を暗号通信装置100bとして説明する。
最初に、暗号通信装置100aが通信開始要求601を送信し、暗号通信装置100bが受信する。
通信開始要求601は、暗号通信装置100aが暗号通信装置100bに対して通信の開始を要求することを示すデータである。
通信開始要求601は、例えば、暗号通信装置100a自身を示す識別符号や、開始しようとしている通信の種別を示すデータなどを含んでもよいし、あらかじめ定めた定型データであってもよい。
また、通信開始要求601は、暗号化してもよいし、暗号化しなくてもよい。
次に、暗号通信装置100bが通信開始応答602を送信し、暗号通信装置100aが受信する。
通信開始応答602は、データ処理部130が生成した送信データを含む送信平文を、暗号化部237が暗号化した送信暗号文である。
通信開始応答602に含まれる送信データは、通信開始要求601による暗号通信装置100aの要求に対する応答である。データ処理部130は、例えば、通信を開始できることを示す「了解」、通信を開始できないことを示す「拒否」などの情報を送信データとして生成する。以下、通信開始応答602に含まれる送信データを「開始応答データ」と呼ぶ。
開始応答データには、上述した「了解」「拒否」以外の任意の情報を含めてもよい。
通信開始応答602には、開始応答データのほか、送信検証情報と送信乱数とが含まれる。送信乱数は、検証乱数生成部231が生成する。また、通信開始要求601には受信乱数が含まれていないので、送信検証情報は、開始乱数生成部235が生成した開始乱数である。
通信開始応答602により通信の開始が了解されると、暗号通信装置100aと暗号通信装置100bとの間の暗号通信が開始する。
暗号通信装置100aが通信暗号文603を送信し、暗号通信装置100bが受信する。
通信暗号文603は、データ処理部130が生成した応答データを含む送信平文を、暗号化部237が暗号化した送信暗号文である。
通信暗号文603に含まれる応答データは、暗号通信装置100aのデータ処理部130が実際に暗号通信装置100bのデータ処理部130に対して送りたい情報を含むデータである。
通信暗号文603には、応答データのほか、送信検証情報と送信乱数とが含まれる。送信乱数は、検証乱数生成部231が生成する。また、送信検証情報は、受信乱数記憶部221が記憶した受信乱数に基づいて送信検証生成部232が生成する。
暗号通信装置100bは、通信暗号文603を検証し、検証成功と判断した場合には通信を続けるが、検証失敗と判断した場合には通信を終了する。これにより、暗号通信装置100aになりすました攻撃者999に、暗号解読の役に立つ情報を与えない。
次に、暗号通信装置100bが通信暗号文604を送信し、暗号通信装置100aが受信する。
通信暗号文604は、データ処理部130が生成した応答データ、検証乱数生成部231が生成した送信乱数、送信検証生成部232が生成した送信検証情報を含む送信平文を、暗号化部237が暗号化した送信暗号文である。
通信暗号文604に含まれる応答データは、暗号通信装置100bのデータ処理部130が実際に暗号通信装置100aのデータ処理部130に対して送りたい情報を含むデータである。
暗号通信装置100aは、通信暗号文604を検証し、検証成功と判断した場合には通信を続けるが、検証失敗と判断した場合には通信を終了する。これにより、暗号通信装置100bになりすました攻撃者999に、暗号解読の役に立つ情報を与えない。
以下、同様に、暗号通信装置100aが通信暗号文605を送信し、暗号通信装置100bが受信する。検証に成功すれば通信を続行する。暗号通信装置100bが通信暗号文606を送信し、暗号通信装置100aが受信する。検証に成功すれば通信を続行する。これを通信が終了するまで繰り返す。
なお、正常に通信を終了する場合のシーケンスについては、ここでは説明を省略する。
次に、動作の詳細について説明する。
図9は、この実施の形態における暗号通信装置100が通信開始を要求する開始要求処理の流れの一例を示すフローチャート図である。
開始要求生成工程S01において、データ処理部130は、CPU911などの処理装置を用いて、通信開始要求を生成する。
データ処理部130は、生成した通信開始要求を出力する。
送信乱数消去工程S02において、送信乱数記憶部222は、CPU911などの処理装置を用いて、記憶した送信乱数を消去する。
この例では、送信乱数記憶部222が送信乱数を記憶していないことにより、暗号通信中でないことを示す。暗号通信中であるか否かを判別できるのであれば、他の構成による処理をしてもよい。例えば、送信乱数とは別に、暗号通信中であるか否かを示すデータを記憶する通信状態記憶部を設け、送信乱数消去工程S02の代わりに、通信状態記憶部が、暗号通信中でないことを記憶してもよい。また、別の方法で暗号通信中であるか否かを判断することとし、暗号通信中であるか否かを示すデータを記憶しなくてもよい。
開始要求送信工程S03において、送信部120は、CPU911などの処理装置を用いて、開始要求生成工程S01でデータ処理部130が出力した通信開始要求を入力する。
なお、通信開始要求を暗号化して送信する場合には、データ処理部130が出力した通信開始要求を暗号化部237が暗号化し、暗号化した通信開始要求を送信部120が入力する。
送信部120は、通信装置915を用いて、入力した通信開始要求を、他の暗号通信装置100(暗号通信装置100b)に対して送信する。
図10は、この実施の形態における暗号通信装置100が通信開始要求を受信した場合に実行する開始応答処理の流れの一例を示すフローチャート図である。
開始要求受信工程S11において、受信部110は、通信装置915を用いて、他の暗号通信装置100(暗号通信装置100a)が送信した通信開始要求を受信する。
受信部110は、CPU911などの処理装置を用いて、受信した通信開始要求を出力する。
開始応答工程S12において、データ処理部130は、CPU911などの処理装置を用いて、S11で受信部110が出力した通信開始要求を入力する。
なお、通信開始要求が暗号化されている場合には、受信部110が出力した通信開始要求を復号部212が復号し、復号した通信開始要求をデータ処理部130が入力する。
データ処理部130は、CPU911などの処理装置を用いて、通信を開始できるか否かを判断し、開始応答データを生成する。
データ処理部130は、CPU911などの処理装置を用いて、生成した開始応答データを出力する。
データ入力部233は、CPU911などの処理装置を用いて、データ処理部130が出力した開始応答データを入力する。
データ入力部233は、CPU911などの処理装置を用いて、入力した開始応答データを、送信データとして出力する。
開始乱数生成工程S13において、開始乱数生成部235は、CPU911などの処理装置を用いて、開始乱数を生成する。
開始乱数生成部235は、CPU911などの処理装置を用いて、生成した開始乱数を出力する。
送信乱数生成工程S14において、検証乱数生成部231は、CPU911などの処理装置を用いて、送信乱数を生成する。
検証乱数生成部231は、CPU911などの処理装置を用いて、生成した送信乱数を出力する。
送信乱数記憶部222は、CPU911などの処理装置を用いて、検証乱数生成部231が出力した送信乱数を入力する。
送信乱数記憶部222は、RAM914などの記憶装置を用いて、入力した送信乱数を記憶する。
結合工程S15において、結合部234は、CPU911などの処理装置を用いて、開始応答工程S12でデータ入力部233が出力した送信データを入力する。
結合部234は、CPU911などの処理装置を用いて、開始乱数生成工程S13で開始乱数生成部235が出力した開始乱数を入力し、送信検証情報とする。
結合部234は、CPU911などの処理装置を用いて、送信乱数生成工程S14で検証乱数生成部231が出力した送信乱数を入力する。
結合部234は、CPU911などの処理装置を用いて、入力した送信データと、入力した送信検証情報と、入力した送信乱数とを含む送信平文を生成する。
結合部234は、CPU911などの処理装置を用いて、生成した送信平文を出力する。
暗号化工程S16において、暗号化部237は、CPU911などの処理装置を用いて、結合工程S15で結合部234が出力した送信平文を入力する。
暗号化部237は、CPU911などの処理装置を用いて、暗号鍵記憶部236が記憶した暗号鍵を入力する。
暗号化部237は、CPU911などの処理装置を用いて、入力した送信平文を、入力した暗号鍵で暗号化して、送信暗号文とする。
暗号化部237は、CPU911などの処理装置を用いて、暗号化した送信暗号文を出力する。
開始応答送信工程S17において、送信部120は、CPU911などの処理装置を用いて、暗号化工程S16で暗号化部237が出力した送信暗号文を入力する。
送信部120は、通信装置915を用いて、入力した送信暗号文(通信開始応答602)を、他の暗号通信装置100(暗号通信装置100a)に対して送信する。
図11は、この実施の形態における暗号通信装置100が通信開始応答または通信暗号文を受信した場合に実行する暗号文受信処理の流れの一例を示すフローチャート図である。
受信工程S21において、受信部110は、通信装置915を用いて、通信開始応答または通信暗号文を受信し、受信暗号文とする。
受信部110は、CPU911などの処理装置を用いて、受信した受信暗号文を出力する。
復号工程S22において、復号部212は、CPU911などの処理装置を用いて、受信工程S21で受信部110が出力した受信暗号文を入力する。
復号部212は、CPU911などの処理装置を用いて、復号鍵記憶部211が記憶した復号鍵を入力する。
復号部212は、CPU911などの処理装置を用いて、入力した受信暗号文を、入力した復号鍵で復号して、受信平文とする。
復号部212は、CPU911などの処理装置を用いて、復号した受信平文を出力する。
分割工程S23において、分割部213は、CPU911などの処理装置を用いて、復号工程S22で復号部212が出力した受信平文を入力する。
分割部213は、CPU911などの処理装置を用いて、入力した受信平文から、受信検証情報と、受信乱数と、受信データとを取得する。
分割部213は、CPU911などの処理装置を用いて、取得した受信検証情報と、受信乱数と、受信データとを出力する。
通信状態判断工程S24において、受信検証生成部214は、CPU911などの処理装置を用いて、送信乱数記憶部222が記憶した送信乱数を入力する。
受信検証生成部214は、CPU911などの処理装置を用いて、入力した送信乱数に基づいて、検証情報を生成する。
受信検証生成部214は、CPU911などの処理装置を用いて、生成した検証情報を出力する。
なお、S02で送信乱数記憶部222が送信乱数を消去した場合など、送信乱数記憶部222が送信乱数を記憶していない場合には、受信検証生成部214は、検証情報を生成しない。
検証部215は、CPU911などの処理装置を用いて、受信検証生成部214が生成した検証情報を入力する。
検証部215は、検証情報を入力した場合、暗号通信中であると判断する。
送信乱数記憶部222が送信乱数を記憶していない場合、受信検証生成部214が検証情報を生成しないので、検証部215は、検証情報を入力できない。
検証部215は、検証情報を入力できない場合、暗号通信中でないと判断する。
暗号通信中であると判断した場合には、S25へ進む。
暗号通信中でないと判断した場合には、S26へ進む。
受信部110が受信した受信暗号文が通信開始応答である場合、通信開始応答はその前に暗号通信装置100が送信した通信開始要求に対する応答であるから、暗号通信装置100は、図9で説明した開始要求処理を実行している。したがって、送信乱数消去工程S02で送信乱数記憶部222が記憶した送信乱数を消去しているので、検証部215は暗号通信中でないと判断する。
受信部110が受信した受信暗号文が通信暗号文である場合、通信暗号文はその前に暗号通信装置100が送信した通信開始応答または通信暗号文に対する応答であるから、暗号通信装置100は、図10で説明した開始応答処理または後述する暗号文送信処理を実行している。したがって、送信乱数生成工程S14または後述するS33で送信乱数記憶部222が送信乱数を記憶しているので、検証部215は暗号通信中であると判断する。
この例では、検証部215は、送信乱数記憶部222が送信乱数を記憶しているか否かに基づいて、暗号通信中であるか否かを判断するが、別の情報に基づいて判断してもよい。例えば、通信開始応答と通信暗号文とを異なるフォーマットとし、受信したデータの違いにより、暗号通信中であるか否かを判断してもよい。
検証工程S25において、検証部215は、CPU911などの処理装置を用いて、分割工程S23で分割部213が出力した受信検証情報を入力する。
検証部215は、CPU911などの処理装置を用いて、通信状態判断工程S24で入力した検証情報と、入力した受信検証情報とを比較する。
検証部215は、CPU911などの処理装置を用いて、検証情報と受信検証情報とが一致する場合に、検証成功と判断する。一致しない場合には、検証失敗と判断する。
検証成功と判断した場合、S26へ進む。
検証失敗と判断した場合、通信を終了する。
受信検証情報は、暗号化・復号が正しく行われた場合、他の暗号通信装置100の送信検証生成部232が生成した送信検証情報と同一のデータである。他の暗号通信装置100の送信検証生成部232は、受信した受信乱数に基づいて送信検証情報を生成する。暗号通信装置100が受信した受信乱数は、暗号化・復号が正しく行われた場合、暗号通信装置100が送信し、送信乱数記憶部222が記憶した送信乱数と同一のデータである。検証情報は、送信乱数記憶部222が記憶した送信乱数に基づいて生成するので、検証情報と受信検証情報とが一致する場合、2回の暗号化・復号がどちらも正しく行われたことを示し、通信相手が正規の通信相手である他の暗号通信装置100であることがわかる。
これに対し、通信相手が、暗号通信装置100になりすました攻撃者999である場合、攻撃者999は暗号鍵・復号鍵を知らないので、正しく暗号化・復号することができない。したがって、検証情報と受信検証情報とが一致せず、なりすましを見破ることができる。
また、通信のたびに異なる乱数を生成して送信乱数とするので、攻撃者999が再送攻撃をした場合であっても、検証情報と受信検証情報とは一致しない。したがって、再送攻撃を見破ることができる。
データ出力工程S26において、データ出力部216は、CPU911などの処理装置を用いて、分割工程S23で分割部213が出力した受信データを入力する。
データ出力部216は、CPU911などの処理装置を用いて、入力した受信データを出力する。
受信乱数記憶工程S27において、受信乱数記憶部221は、CPU911などの処理装置を用いて、分割工程S23で分割部213が出力した受信乱数を入力する。
受信乱数記憶部221は、RAM914などの記憶装置を用いて、入力した受信乱数を記憶する。
以上の処理により、受信部110が受信したデータが通信開始応答である場合には、検証をせず、常にデータ出力部216が受信データを出力する。
また、受信部110が受信したデータが通信暗号文である場合には、検証部215が検証をし、検証成功と判断した場合にはデータ出力部216が受信データを出力し、検証失敗と判断した場合には通信を終了する。
通信を終了する場合の処理については詳しく述べないが、例えば、暗号通信装置100が応答を送信せず、タイムアウトすることによって通信を終了してもよい。
あるいは、正常時の通信終了処理と同様の手順によって、通信を終了してもよい。
あるいは、わざと正しくない検証情報を含む通信暗号文を送信して、通信相手に検証を失敗させ、通信を終了してもよい。
データ出力工程S26でデータ出力部216が受信データを出力した場合、データ処理部130が受信データを入力し、所定のデータ処理をする。
データ処理部130がデータ処理により、他の暗号通信装置100に対して送信すべき応答データを生成した場合には、暗号文送信処理を実行する。
図12は、この実施の形態における暗号通信装置100が送信暗号文を送信する場合に実行する暗号文送信処理の流れの一例を示すフローチャート図である。
データ処理工程S31において、データ処理部130は、CPU911などの処理装置を用いて、応答データを生成する。
データ処理部130は、CPU911などの処理装置を用いて、生成した応答データを出力する。
データ入力部233は、CPU911などの処理装置を用いて、データ処理部130が出力した応答データを入力する。
データ入力部233は、CPU911などの処理装置を用いて、入力した応答データを、送信データとして出力する。
検証情報生成工程S32において、送信検証生成部232は、CPU911などの処理装置を用いて、データ出力工程S26で受信乱数記憶部221が記憶した受信乱数を入力する。
送信検証生成部232は、CPU911などの処理装置を用いて、入力した受信乱数に基づいて送信検証情報を生成する。
送信検証生成部232は、CPU911などの処理装置を用いて、生成した送信検証情報を出力する。
送信乱数生成工程S33において、検証乱数生成部231は、CPU911などの処理装置を用いて、送信乱数を生成する。
検証乱数生成部231は、CPU911などの処理装置を用いて、生成した送信乱数を出力する。
結合工程S34において、結合部234は、CPU911などの処理装置を用いて、データ処理工程S31でデータ入力部233が出力した送信データを入力する。
結合部234は、CPU911などの処理装置を用いて、検証情報生成工程S32で送信検証生成部232が出力した送信検証情報を入力する。
結合部234は、CPU911などの処理装置を用いて、送信乱数生成工程S33で検証乱数生成部231が出力した送信乱数を入力する。
結合部234は、CPU911などの処理装置を用いて、入力した送信データと、入力した送信検証情報と、入力した送信乱数とを含む送信平文を生成する。
結合部234は、CPU911などの処理装置を用いて、生成した送信平文を出力する。
暗号化工程S35において、暗号化部237は、CPU911などの処理装置を用いて、結合工程S34で結合部234が出力した送信平文を入力する。
暗号化部237は、CPU911などの処理装置を用いて、暗号鍵記憶部236が記憶した暗号鍵を入力する。
暗号化部237は、CPU911などの処理装置を用いて、入力した送信平文を、入力した暗号鍵で暗号化して、送信暗号文とする。
暗号化部237は、CPU911などの処理装置を用いて、暗号化した送信暗号文を出力する。
送信工程S36において、送信部120は、CPU911などの処理装置を用いて、暗号化工程S35で暗号化部237が出力した送信暗号文を入力する。
送信部120は、CPU911などの処理装置を用いて、入力した送信暗号文を他の暗号通信装置100に対して送信する。
検証情報生成工程S32で送信検証生成部232が生成した送信検証情報は、S35で暗号化部237が暗号化し、送信工程S36で送信部120が他の暗号通信装置100に対して送信する。他の暗号通信装置100では、これを検証工程S25で検証部215が検証し、他の暗号通信装置100にとっての正規の通信相手である暗号通信装置100から送られてきたものであることを確認する。
図8に戻り、暗号通信装置100a及び暗号通信装置100bが、通信相手を検証して正規の通信相手であることを確認するタイミングについて説明する。
暗号通信装置100bは、通信開始応答602に送信乱数を含めて送信し、その応答である通信暗号文603に含まれる受信検証情報に基づいて通信相手を検証するので、通信暗号文603を受信した時点で、通信相手が正規の通信相手である暗号通信装置100aであることを確認する。
また、暗号通信装置100aは、通信暗号文603に送信乱数を含めて送信し、その応答である通信暗号文604に含まれる受信検証情報に基づいて通信相手を検証するので通信暗号文604を受信した時点で、通信相手が正規の通信相手である暗号通信装置100bであることを確認する。
このように、通信開始前に通信相手を認証するのではなく、通信を開始した後に通信相手を検証するので、通信を開始するまでに交換する通信の量を削減することができる。これにより、暗号通信装置100の処理能力が低い場合や、ネットワーク801の通信容量が少ない場合であっても、迅速な応答を得ることができる。
また、通信開始時の検証に成功したとしても、途中から攻撃者999が割り込んできて、通信相手になりすます可能性もある。
この実施の形態の暗号通信システム800は、一度検証に成功してもそれで終わりとせず、以後の通信暗号文を受信するたびに検証をするので、途中から攻撃者999が割り込んできた場合であっても、なりすましを見破ることができる。
なお、通信開始応答に含まれる開始乱数は特に利用するものではないので、送信検証情報として通信開始応答に含めなくてもよい。しかし、開始乱数を送信検証情報として通信開始応答に含めるほうが好ましい。なぜなら、通信開始応答と通信暗号文のフォーマットを共通のものとすることができるので、受信時の条件分岐を減らすことができ、暗号通信に必要なCPU911などの処理装置の処理量が削減できるからである。また、開始乱数を通信開始応答のもととなる送信平文の先頭に配置すれば、開始応答データが定型データである場合であっても、CBCモードやCFBモードのブロック暗号方式で暗号化した通信開始応答を毎回異なるデータとすることができるので、再送攻撃に対する耐性が高くなる。
また、開始乱数生成部235は、乱数を生成して開始乱数とするのではなく、CPU911などの処理装置を用いて、現在時刻に基づく情報(タイムスタンプ)を生成して開始乱数としてもよい。そうすれば、受信側の暗号通信装置100が開始乱数から時刻を復元し、古ければ再送攻撃であると判断することができる。
なお、開始乱数を送信検証情報として送信するのではなく、通信開始要求から受信乱数を取得し、取得した受信乱数に基づく送信検証情報を生成し、送信する構成も考えられるが、好ましくない。
通信開始要求は、通信シーケンスの一番最初であるから、攻撃者999が他の暗号通信装置100になりすまして送信してくる可能性がもっとも高いものである。したがって、通信開始要求に対する応答に送信検証情報を含めると、攻撃者999に暗号解読の手がかりを与えてしまう可能性があるからである。
この実施の形態における暗号通信装置100は、
情報を処理するCPU911などの処理装置と、他の暗号通信装置100と通信する通信装置915と、データ入力部233と、検証乱数生成部231と、結合部234と、暗号化部237と、送信部120と、受信部110と、復号部212と、分割部213と、検証部215と、データ出力部216とを有することを特徴とする。
データ入力部233は、CPU911などの処理装置を用いて、他の暗号通信装置100に対して送信すべきデータを入力して送信データとすることを特徴とする。
検証乱数生成部231は、CPU911などの処理装置を用いて、乱数を生成して送信乱数とすることを特徴とする。
結合部234は、CPU911などの処理装置を用いて、検証乱数生成部231が生成した送信乱数とデータ入力部233が入力した送信データとを含むデータを生成して送信平文とすることを特徴とする。
暗号化部237は、CPU911などの処理装置を用いて、結合部234が生成した送信平文を暗号化して送信暗号文とすることを特徴とする。
送信部120は、通信装置915を用いて、暗号化部237が暗号化した送信暗号文を他の暗号通信装置100に対して送信することを特徴とする。
受信部110は、通信装置915を用いて、送信部120が送信した送信暗号文に対する応答として他の暗号通信装置100が送信したデータを受信して受信暗号文とすることを特徴とする。
復号部212は、CPU911などの処理装置を用いて、受信部110が受信した受信暗号文を復号して受信平文とすることを特徴とする。
分割部213は、CPU911などの処理装置を用いて、復号部212が復号した受信平文に含まれる送信検証情報を取得して受信検証情報とし、復号部212が復号した受信平文に含まれる送信データを取得して受信データとすることを特徴とする。
検証部215は、CPU911などの処理装置を用いて、分割部213が取得した受信検証情報と検証乱数生成部231が生成した送信乱数とに基づいて、検証成功か検証失敗かを判断することを特徴とする。
データ出力部216は、検証部215が検証成功と判断した場合に、CPU911などの処理装置を用いて、分割部213が取得した受信データを出力することを特徴とする。
この実施の形態における暗号通信装置100によれば、送信データとともに送信乱数を送信し、受信データとともに受信検証情報を受信して、検証部215が検証を行うので、通信開始時だけでなく、常に通信相手が正規の通信相手であるか否かを検証することができ、攻撃者999による攻撃を防ぐことができるという効果を奏する。
この実施の形態における暗号通信装置100は、
他の暗号通信装置100との間で暗号通信をする場合に、他の暗号通信装置100を認証せずに通信を開始し、
通信を開始した後、検証部215が検証失敗と判断した場合に、通信を終了することを特徴とする。
この実施の形態における暗号通信装置100によれば、通信相手を認証しないで、通信を開始するので、CPU911などの処理装置の処理能力が低い場合や、ネットワーク801の通信容量が小さい場合であっても、迅速な応答が可能となる。また、通信開始後に検証を行い、検証に失敗した場合には通信を終了するので、攻撃者999による攻撃を防ぐことができるという効果を奏する。
この実施の形態における暗号通信装置100は、
他の暗号通信装置100との間で暗号通信をする場合に、他の暗号通信装置100を認証せずに通信を開始し、
通信を開始した後、他の暗号通信装置100に対して送信するすべてのデータに送信検証情報と送信乱数とを含めて送信し、
通信を開始した後、他の暗号通信装置100から受信したすべてのデータについて、検証部215が検証成功か検証失敗かを判断することを特徴とする。
この実施の形態における暗号通信装置100によれば、通信開始後に送信するすべてのデータに送信検証情報を含めるので、通信相手である他の暗号通信装置100が、正規の通信相手である暗号通信装置100から送信されたデータであるか否かを検証することができ、また、通信開始後に受信するすべてのデータについて検証をするので、正規の通信相手である他の暗号通信装置100が送信したデータであるか否かを検証できる。これにより、通信の途中から攻撃者999が割り込んできた場合であっても、攻撃者999の攻撃を防ぐことができるという効果を奏する。
この実施の形態における暗号通信装置100は、以下の点を特徴とする。
検証部215は、CPU911などの処理装置を用いて、分割部213が取得した受信検証情報と検証乱数生成部231が生成した送信乱数とを比較して、一致する場合に検証成功と判断し、一致しない場合に検証失敗と判断することを特徴とする。
この実施の形態における暗号通信装置100によれば、検証部215が受信検証情報と送信乱数とを比較して一致するか否かに基づいて、検証成功か検証失敗かを判断するので、通信相手に対して送信した送信乱数を、通信相手が正しく復号し、通信相手が正しく暗号化して送信してきたか否かを判別でき、通信相手が、正規の通信相手である他の暗号通信装置100であるか否かを検証することができるという効果を奏する。
この実施の形態における暗号通信装置100は、更に、受信検証生成部214を有することを特徴とする。
受信検証生成部214は、CPU911などの処理装置を用いて、検証乱数生成部が生成した送信乱数に基づくデータを生成して検証情報とすることを特徴とする。
上記検証部は、上記処理装置を用いて、上記分割部が取得した受信検証情報と上記受信検証生成部が生成した検証情報とを比較して、一致する場合に検証成功と判断し、一致しない場合に検証失敗と判断することを特徴とする。
この実施の形態における暗号通信装置100によれば、検証部215が、受信検証情報と、送信乱数に基づいて生成した検証情報とを比較して一致するか否かに基づいて、検証成功か検証失敗かを判断するので、通信相手に対して送信する送信乱数の暗号化と、通信相手から受信する受信検証情報の暗号化とは、暗号鍵が同一であっても異なるデータとなる。したがって、攻撃者999が正しい検証情報を生成できなければその暗号化を取得できず、攻撃者999による攻撃を防ぐことができるという効果を奏する。
この実施の形態における暗号通信装置100は、以下の点を特徴とする。
分割部213は、更に、CPU911などの処理装置を用いて、復号部212が復号した受信平文に含まれる送信乱数を取得して受信乱数とすることを特徴とする。
データ入力部233は、CPU911などの処理装置を用いて、受信部110が受信した受信暗号文に対する応答として他の暗号通信装置100に対して送信すべきデータを入力して応答データとすることを特徴とする。
結合部234は、分割部213が取得した受信乱数を送信検証情報とし、データ入力部233が入力した応答データを送信データとして、CPU911などの処理装置を用いて、送信検証情報と検証乱数生成部231が生成した送信乱数と上記送信データとを含むデータを生成して送信平文とすることを特徴とする。
この実施の形態における暗号通信装置100によれば、他の暗号通信装置100から受信したデータを復号して受信乱数を取得し、取得した受信乱数を送信検証情報として含むデータを暗号化して他の暗号通信装置100に対して送信するので、暗号通信装置100が受信したデータを正しく復号し、正しく暗号化して送信したか否かを、他の暗号通信装置100が検証できるという効果を奏する。
この実施の形態における暗号通信装置100は、更に、送信検証生成部232を有することを特徴とする。
分割部213は、CPU911などの処理装置を用いて、復号部212が復号した受信平文に含まれる送信乱数を取得して受信乱数とすることを特徴とする。
データ入力部233は、CPU911などの処理装置を用いて、受信部110が受信した受信暗号文に対する応答として他の暗号通信装置100に対して送信すべきデータを入力して応答データとすることを特徴とする。
送信検証生成部232は、CPU911などの処理装置を用いて、分割部213が取得した受信乱数に基づくデータを生成して送信検証情報とすることを特徴とする。
結合部234は、データ入力部233が入力した応答データを送信データとして、CPU911などの処理装置を用いて、送信検証生成部232が生成した送信検証情報と検証乱数生成部231が生成した送信乱数と上記送信データとを含むデータを生成して送信平文とすることを特徴とする。
この実施の形態における暗号通信装置100によれば、他の暗号通信装置100から受信したデータを復号して受信乱数を取得し、取得した受信乱数に基づいて生成した送信検証情報を含む送信平文を暗号化して他の暗号通信装置100に対して送信するので、暗号通信装置100が受信したデータを正しく復号し、正しく暗号化して送信したか否かを、送信と受信の暗号鍵が同一の場合であっても、他の暗号通信装置100が正しく検証できるという効果を奏する。
この実施の形態における暗号通信装置100は、更に、開始乱数生成部235を有することを特徴とする。
受信部110は、通信装置915を用いて、他の暗号通信装置100から通信の開始を要求するデータを受信して通信開始要求とすることを特徴とする。
データ出力部216は、CPU911などの処理装置を用いて、受信部110が受信した通信開始要求を出力することを特徴とする。
データ入力部233は、CPU911などの処理装置を用いて、受信部110が受信した通信開始要求に対する応答として他の暗号通信装置100に対して送信すべきデータを入力して開始応答データとすることを特徴とする。
開始乱数生成部235は、CPU911などの処理装置を用いて、乱数を生成して開始乱数とすることを特徴とする。
結合部234は、開始乱数生成部235が生成した開始乱数を送信検証情報とし、上記データ入力部が入力した開始応答データを送信データとして、CPU911などの処理装置を用いて、上記送信検証情報と検証乱数生成部231が生成した送信乱数と上記送信データとを含むデータを生成して送信平文とすることを特徴とする。
この実施の形態における暗号通信装置100によれば、通信開始要求を受信した場合には、受信乱数に基づく送信検証情報を生成するのではなく、開始乱数を生成して送信検証情報とするので、他の暗号通信装置100になりすました攻撃者999に、暗号解読の手がかりを与えないという効果を奏する。
この実施の形態における暗号通信装置100は、以下の点を特徴とする。
データ入力部233は、CPU911などの処理装置を用いて、他の暗号通信装置100に対して通信の開始を要求するデータを入力して通信開始要求とすることを特徴とする。
送信部120は、通信装置915を用いて、データ入力部233が入力した通信開始要求を他の暗号通信装置100に対して送信することを特徴とする。
受信部110は、通信装置915を用いて、送信部120が送信した通信開始要求に対する応答として他の暗号通信装置100が送信したデータを受信して開始暗号文とすることを特徴とする。
復号部212は、CPU911などの処理装置を用いて、受信部110が受信した開始暗号文を復号して開始平文とすることを特徴とする。
分割部213は、CPU911などの処理装置を用いて、復号部212が復号した開始平文に含まれる送信乱数を取得して受信乱数とし、復号部212が復号した開始平文に含まれる送信データを取得して受信開始データとすることを特徴とする。
データ出力部216は、CPU911などの処理装置を用いて、分割部213が取得した受信開始データを出力することを特徴とする。
この実施の形態における暗号通信装置100によれば、通信開始要求には送信乱数を含めずに送信し、通信開始要求に対する応答には受信検証情報が含まれていないので検証せずにデータ出力部216が受信開始データを出力するので、攻撃者999が暗号通信装置100になりすまして他の暗号通信装置100に対して通信開始要求を送信したとしても、攻撃者999に暗号解読の手がかりを与えないという効果を奏する。
なお、通信開始要求に対する応答には送信乱数が含まれており、暗号通信装置100は、送信検証情報を生成して、他の暗号通信装置100に対して送信する。この時点で、暗号通信装置100は通信相手が正規の通信相手である他の暗号通信装置100であるか否かを検証していないので、攻撃者999が他の暗号通信装置100になりすましている可能性がある。
しかし、攻撃者999が通信開始要求を送信する側の暗号通信装置100になりすます場合には、何度も通信開始要求の送信を繰り返すことにより多数の応答を収集できるのに対して、攻撃者999が通信開始要求を受信する側の暗号通信装置100になりすます場合には、暗号通信装置100が通信開始要求を送信した場合にのみ、攻撃者999が情報を収集できるので、攻撃者999が収集できる暗号解読の手がかりは極めて少なく、その手がかりに基づいて攻撃者999が暗号を解読することはほぼ不可能である。
この実施の形態における暗号通信装置100は、以下の点を特徴とする。
結合部234は、CPU911などの処理装置を用いて、送信検証情報と送信乱数と送信データとを結合して送信平文を生成することを特徴とする。
この実施の形態における暗号通信装置100によれば、結合部234が送信検証情報と送信乱数と送信データとを結合して送信平文を生成するので、送信平文の生成に必要な処理量が極めて少なく、CPU911などの処理装置の処理能力が低くても迅速な通信が可能であるという効果を奏する。
この実施の形態における暗号通信装置100は、以下の点を特徴とする。
結合部234は、CPU911などの処理装置を用いて、送信検証情報を一番前に結合することを特徴とする。
この実施の形態における暗号通信装置100によれば、結合部234が送信平文の一番前に送信検証情報を結合するので、ブロック暗号方式で暗号化した場合であっても先頭のブロックの暗号化が常に異なるデータとなり、攻撃者999による再送攻撃を防ぐことができるという効果を奏する。
この実施の形態における暗号通信装置100は、以下の点を特徴とする。
結合部234は、CPU911などの処理装置を用いて、送信乱数を一番前に結合することを特徴とする。
この実施の形態における暗号通信装置100によれば、結合部234が送信平文の一番前に送信乱数を結合するので、ブロック暗号方式で暗号化した場合であっても先頭のブロックの暗号化が常に異なるデータとなり、攻撃者999による再送攻撃を防ぐことができるという効果を奏する。
この実施の形態における暗号通信システム800は、
暗号通信装置100を複数有し、複数の暗号通信装置100が互いに暗号通信することを特徴とする。
この実施の形態における暗号通信システム800によれば、暗号通信装置100が互いに相手を検証しながら暗号通信をするので、攻撃者999が暗号通信装置100になりすまして再送攻撃などの攻撃をしてきた場合であっても、攻撃者999に暗号解読の手がかりを与えないという効果を奏する。
この実施の形態における暗号通信方法は、
情報を処理するCPU911などの処理装置と、他の暗号通信装置100と通信する通信装置915とを有する暗号通信装置100が、他の暗号通信装置100と暗号通信をする暗号通信方法において、
CPU911などの処理装置が、他の暗号通信装置100に対して送信すべきデータを取得して送信データとし(データ処理工程S31)、
CPU911などの処理装置が、乱数を生成して送信乱数とし(送信乱数生成工程S33)、
CPU911などの処理装置が、生成した送信乱数と取得した送信データとを含むデータを生成して送信平文とし(結合工程S34)、
CPU911などの処理装置が、生成した送信平文を暗号化して送信暗号文とし(暗号化工程S35)、
通信装置915が、暗号化した送信暗号文を送信し(送信工程S36)、
通信装置915が、送信した送信暗号文に対する応答として上記他の暗号通信装置が送信したデータを受信して受信暗号文とし(受信工程S21)、
CPU911などの処理装置が、受信した受信暗号文を復号して受信平文とし(復号工程S22)、
CPU911などの処理装置が、復号した受信平文に含まれる送信検証情報を取得して受信検証情報とし、復号した受信平文に含まれる送信データを取得して受信データとし(分割工程S23)、
CPU911などの処理装置が、取得した受信検証情報と生成した送信乱数とに基づいて、検証成功か検証失敗かを判断し(検証工程S25)、
検証成功と判断した場合に、CPU911などの処理装置が、取得した受信データを出力する(データ出力工程S26)ことを特徴とする。
この実施の形態における暗号通信方法によれば、送信データとともに送信乱数を送信し、受信データとともに受信検証情報を受信して、検証を行うので、通信開始時だけでなく、常に通信相手が正規の通信相手であるか否かを検証することができ、攻撃者999による攻撃を防ぐことができるという効果を奏する。
この実施の形態における暗号通信方法は、
第一の暗号通信装置100aと第二の暗号通信装置100bとが暗号通信をする暗号通信方法において、
第一の暗号通信装置100aが、第二の暗号通信装置100bに対して通信の開始を要求する通信開始要求を送信し(開始要求送信工程S03)、
第二の暗号通信装置100bが、第一の暗号通信装置100aが送信した通信開始要求を受信し(開始要求受信工程S11)、
第二の暗号通信装置100bが、乱数を生成して第一の送信乱数とし(送信乱数生成工程S14)、
第二の暗号通信装置100bが、受信した通信開始要求に対する応答として第一の暗号通信装置に対して送信すべきデータを取得して開始応答データとし(開始応答工程S12)、
第二の暗号通信装置100bが、取得した開始応答データを第一の送信データとして、生成した第一の送信乱数と上記第一の送信データとを含むデータを生成して第一の送信平文とし(結合工程S15)、
第二の暗号通信装置100bが、生成した第一の送信平文を暗号化して第一の送信暗号文とし(暗号化工程S16)、
第二の暗号通信装置100bが、暗号化した第一の送信暗号文を上記第一の暗号通信装置に対して送信し(開始応答送信工程S17)、
第一の暗号通信装置100aが、第二の暗号通信装置100bが送信した第一の送信暗号文を受信して第一の受信暗号文とし(受信工程S21)、
第一の暗号通信装置100aが、受信した第一の受信暗号文を復号して第一の受信平文とし(復号工程S22)、
第一の暗号通信装置100aが、復号した第一の受信平文に含まれる第一の送信乱数を取得して第一の受信乱数とし(分割工程S23)、
第一の暗号通信装置100aが、復号した第一の受信平文に含まれる第一の送信データを取得して受信開始データとし(分割工程S23)、
第一の暗号通信装置100aが、取得した第一の受信乱数に基づくデータを生成して第二の送信検証情報とし(検証情報生成工程S32)、
第一の暗号通信装置100aが、乱数を生成して第二の送信乱数とし(送信乱数生成工程S33)、
第一の暗号通信装置100aが、取得した受信開始データに対する応答として第二の暗号通信装置100bに対して送信すべきデータを取得して第二の送信データとし(データ処理工程S31)、
第一の暗号通信装置100aが、生成した第二の送信検証情報と生成した第二の送信乱数と取得した第二の送信データとを含むデータを生成して第二の送信平文とし(結合工程S34)、
第一の暗号通信装置100aが、生成した第二の送信平文を暗号化して第二の送信暗号文とし(暗号化工程S35)、
第一の暗号通信装置100aが、暗号化した第二の送信暗号文を第二の暗号通信装置100bに対して送信し(送信工程S36)、
第二の暗号通信装置100bが、第一の暗号通信装置100aが送信した第二の送信暗号文を受信して第二の受信暗号文とし(受信工程S21)、
第二の暗号通信装置100bが、受信した第二の受信暗号文を復号して第二の受信平文とし(復号工程S22)、
第二の暗号通信装置100bが、復号した第二の受信平文に含まれる第二の送信検証情報を取得して第二の受信検証情報とし(分割工程S23)、
第二の暗号通信装置100bが、生成した第一の送信乱数と取得した第二の受信検証情報とに基づいて、第一の検証成功か第一の検証失敗かを判断し(検証工程S25)、
第一の検証失敗と判断した場合、第二の暗号通信装置100bが、第一の暗号通信装置100aとの間の暗号通信を終了し、
第一の検証成功と判断した場合、
第二の暗号通信装置100bが、復号した第二の受信平文に含まれる第二の送信乱数を取得して第二の受信乱数とし(分割工程S23)、
第二の暗号通信装置100bが、復号した第二の受信平文に含まれる第二の送信データを取得して第二の受信データとし(分割工程S23)、
第二の暗号通信装置100bが、取得した第二の受信乱数に基づくデータを生成して第三の送信検証情報とし(検証情報生成工程S32)、
第二の暗号通信装置100bが、乱数を生成して第三の送信乱数とし(送信乱数生成工程S33)、
第二の暗号通信装置100bが、取得した第二の受信データに対する応答として上記第一の暗号通信装置に対して送信すべきデータを取得して第三の送信データとし(データ処理工程S31)、
第二の暗号通信装置100bが、生成した第三の送信検証情報と生成した第三の送信乱数と生成した第三の送信データとを含むデータを生成して第三の送信平文とし(結合工程S34)、
第二の暗号通信装置100bが、生成した第三の送信平文を暗号化して第三の送信暗号文とし(暗号化工程S35)、
第二の暗号通信装置100bが、暗号化した第三の送信暗号文を第一の暗号通信装置100aに対して送信し(送信工程S36)、
第一の暗号通信装置100aが、第二の暗号通信装置100bが送信した第三の送信暗号文を受信して第三の受信暗号文とし(受信工程S21)、
第一の暗号通信装置100aが、受信した第三の受信暗号文を復号して第三の受信平文とし(復号工程S22)、
第一の暗号通信装置100aが、復号した第三の受信平文に含まれる第三の送信検証情報を取得して第三の受信検証情報とし(分割工程S23)、
第一の暗号通信装置100aが、生成した第二の送信乱数と取得した第三の受信検証情報とに基づいて、第二の検証成功か第二の検証失敗かを判断し(検証工程S25)、
第二の検証失敗と判断した場合、第一の暗号通信装置100aが、第二の暗号通信装置100bとの間の暗号通信を終了することを特徴とする。
この実施の形態における暗号通信方法によれば、第一の暗号通信装置100aと第二の暗号通信装置100bとが、通信開始要求及びそれに対する応答により、通信相手を認証せずに暗号通信を開始し、通信を開始した後、送信乱数及び受信検証情報により、通信相手を検証し、検証に失敗した場合に暗号通信を終了するので、第一の暗号通信装置100aと第二の暗号通信装置100bの間でやりとりされるデータの量を抑えることができる。このため、第一の暗号通信装置100a・第二の暗号通信装置100bの処理能力が低い場合や、ネットワーク801の通信容量が少ない場合であっても、迅速な通信ができるという効果を奏する。
また、通信開始後に通信相手を検証するので、攻撃者999によるなりすましや再送攻撃を見破ることができ、攻撃者999に暗号解読の手がかりを与えない。したがって、通信開始前に認証する方式に劣らない安全性を確保することができるという効果を奏する。
この実施の形態における暗号通信方法は、更に、第二の検証成功と判断した場合、
第一の暗号通信装置100aが、復号した第三の受信平文に含まれる第三の送信乱数を取得して第三の受信乱数とし(分割工程S23)、
第一の暗号通信装置100aが、復号した第三の受信平文に含まれる第三の送信データを取得して第三の受信データとし(分割工程S23)、
第一の暗号通信装置が、取得した第三の受信乱数に基づくデータを生成して第二の送信検証情報とし(検証情報生成工程S32)、
第一の暗号通信装置100aが、乱数を生成して第二の送信乱数とし(送信乱数生成工程S33)、
第一の暗号通信装置100aが、取得した第三の受信データに対する応答として第二の暗号通信装置100bに対して送信すべきデータを取得して第二の送信データとし(データ処理工程S31)、
第一の暗号通信装置100aが、生成した第二の送信検証情報と生成した第二の送信乱数と取得した第二の送信データとを含むデータを生成して第二の送信平文とし(結合工程S34)、
第一の暗号通信装置100aが、生成した第二の送信平文を暗号化して第二の送信暗号文とし(暗号化工程S35)、
第一の暗号通信装置100aが、暗号化した第二の送信暗号文を上記第二の暗号通信装置に対して送信する(送信工程S36)ことを特徴とする。
この実施の形態における暗号通信方法によれば、通信開始後の検証に成功した場合であってもそれで終わりとせず、その後の通信においても検証情報がついたデータを送信し、検証を繰り返すので、攻撃者999が途中から割り込んできた場合であっても、なりすましや再送攻撃を見破ることができ、攻撃者999に暗号解読の手がかりを与えない。したがって、通信開始前に認証する方式よりも優れた安全性を確保することができるという効果を奏する。
この実施の形態における暗号通信装置100は、コンピュータをこの実施の形態における暗号通信装置100として機能させるプログラムを、コンピュータが実行することにより実現することができる。
この実施の形態におけるプログラムは、情報を処理するCPU911などの処理装置と、他の暗号通信装置100と通信する通信装置915とを有するコンピュータを、暗号通信装置100として機能させることを特徴とする。
この実施の形態におけるプログラムによれば、送信データとともに送信乱数を送信し、受信データとともに受信検証情報を受信して、検証を行うので、通信開始時だけでなく、常に通信相手が正規の通信相手であるか否かを検証することができ、攻撃者999による攻撃を防ぐことができる暗号通信装置100を、コンピュータを用いて実現することができるという効果を奏する。
以上説明した暗号通信装置100は、
接続手段(通信装置915・ネットワーク801)により接続されている2つ以上の暗号通信装置であり、暗号通信装置間で対応する秘密情報(暗号鍵・秘密鍵)を持ち、認証と暗号通信をする暗号通信装置であって、以下の全ての機能を有する暗号通信装置である。
(1)発呼側(暗号通信装置100a)が通信開始を知らせる第1の送信データ(通信開始要求)を平文または暗号文で送信する。
(2)着呼側(暗号通信装置100b)が発呼側の通信開始信号(通信開始要求)を受け、第1の乱数(送信乱数)を生成し、前記第1の乱数と第1の応答(開始応答データ)とを連結(結合)し、着呼側の持つ秘密情報(暗号鍵)で暗号化して第1の暗号文(通信開始応答)を生成し、前記第1の暗号文を発呼側に送信する。
(3)発呼側は前記第1の暗号文を発呼側が持つ秘密情報(復号鍵)で復号し、前記第1の乱数(受信乱数)を取得し、乱数に対応する検証情報(送信検証情報)を生成し、新たに第2の乱数(送信乱数)と第2の送信データ(応答データ)を生成し、前記検証情報と第2の乱数と第2の送信データを連結して発呼側の秘密情報(暗号鍵)で暗号化して第2の暗号文(送信暗号文)を生成し、前記第2の暗号文を着呼側に送信する。
(4)着呼側は前記第1の乱数から検証情報を生成し、前記第2の暗号文(受信暗号文)を着呼側が持つ秘密情報(復号鍵)で復号し、第2の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第1の乱数から生成した検証情報とを比較し、一致すれば発呼側装置を認証する。
(5)着呼側は前記第2の乱数(受信乱数)から検証情報(送信検証情報)を生成し、新たに第3の乱数(送信乱数)と第2の送信データに対する第2の応答(応答データ)を生成し、前記検証情報と第3の乱数と第2の応答を連結して着呼側の秘密情報で暗号化して第3の暗号文(送信暗号文)を生成し、前記第3の暗号文を発呼側に送信する。
(6)発呼側は前記第2の乱数から検証情報を生成し、前記第3の暗号文(受信暗号文)を発呼側が持つ秘密情報で復号し、第3の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第2の乱数から生成した検証情報とを比較し、一致すれば着呼側装置を認証する。
(7)発呼側は前記第3の乱数から検証情報(送信検証情報)を生成し、新たに第4の乱数(送信乱数)と第3の送信データ(応答データ)を生成し、前記検証情報と第4の乱数と第3の送信データを連結して発呼側の秘密情報で暗号化して第4の暗号文(送信暗号文)を生成し、前記第4の暗号文を着呼側に送信する。
以上説明した暗号通信装置100は、相互に認証しあった後も、同様の認証と暗号通信を続ける暗号通信装置である。
以上説明した暗号通信装置100は、以下のいずれかの方法でデータを連結(結合)し、暗号化する暗号通信装置である。
(1)「検証情報」、「乱数」、「送信データまたは応答」の順
(2)「乱数」、「検証情報」、「送信データまたは応答」の順
(3)「検証情報」、「送信データまたは応答」、「乱数」の順
(4)「乱数」、「送信データまたは応答」、「検証情報」の順
以上説明した暗号通信装置100が行う暗号通信方法は、
接続手段(通信装置915・ネットワーク801)により接続されている2つ以上の装置(暗号通信装置100)において、暗号通信装置間で対応する秘密情報(暗号鍵・復号鍵)を持ち、認証と暗号通信をする暗号通信方法であって、以下の全ての機能を有する暗号通信方法である。
(1)発呼側(暗号通信装置100a)が通信開始を知らせる第1の送信データ(通信開始要求)を平文または暗号文で送信する。
(2)着呼側(暗号通信装置100b)が発呼側の通信開始信号(通信開始要求)を受け、第一の乱数(送信乱数)を生成し、前記第1の乱数と第1の応答(開始応答データ)とを連結(結合)し、着呼側の持つ秘密情報(暗号鍵)で暗号化して第1の暗号文(通信開始応答)を生成し、前記第1の暗号文を発呼側に送信する。
(3)発呼側は前記第1の暗号文を発呼側が持つ秘密情報(復号鍵)で復号し、前記第1の乱数(受信乱数)を取得し、乱数に対応する検証情報(送信検証情報)を生成し、新たに第2の乱数(送信乱数)と第2の送信データ(応答データ)を生成し、前記検証情報と第2の乱数と第2の送信データを連結して発呼側の秘密情報(暗号鍵)で暗号化して第2の暗号文(送信暗号文)を生成し、前記第2の暗号文を着呼側に送信する。
(4)着呼側は前記第1の乱数から検証情報を生成し、前記第2の暗号文(受信暗号文)を着呼側が持つ秘密情報(復号鍵)で復号し、第2の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第1の乱数から生成した検証情報とを比較し、一致すれば発呼側装置を認証する。
(5)着呼側は前記第2の乱数から検証情報(送信検証情報)を生成し、新たに第3の乱数(送信乱数)と第2の送信データに対する第2の応答(応答データ)を生成し、前記検証情報と第3の乱数と第2の応答を連結して着呼側の秘密情報で暗号化して第3の暗号文(送信暗号文)を生成し、前記第3の暗号文を発呼側に送信する。
(6)発呼側は前記第2の乱数から検証情報を生成し、前記第3の暗号文(受信暗号文)を発呼側が持つ秘密情報で復号し、第3の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第2の乱数から生成した検証情報とを比較し、一致すれば着呼側装置を認証する。
(7)発呼側は前記第3の乱数から検証情報(送信検証情報)を生成し、新たに第4の乱数(送信乱数)と第3の送信データ(応答データ)を生成し、前記検証情報と第4の乱数と第3の送信データを連結して発呼側の秘密情報で暗号化して第4の暗号文(送信通信文)を生成し、前記第4の暗号文を着呼側に送信する。
以上説明した暗号通信方法は、相互に認証しあった後も、同様の認証と暗号通信を続ける暗号通信方法である。
以上説明した暗号通信方法は、以下のいずれかの方法でデータを連結(結合)し、暗号化する暗号通信方法である。
(1)「検証情報」、「乱数」、「送信データまたは応答」の順
(2)「乱数」、「検証情報」、「送信データまたは応答」の順
(3)「検証情報」、「送信データまたは応答」、「乱数」の順
(4)「乱数」、「送信データまたは応答」、「検証情報」の順
以上説明した暗号通信装置100としてコンピュータを機能させる暗号通信プログラムは、
接続手段(通信装置915・ネットワーク801)により接続されている2つ以上の装置(暗号通信装置100)において、暗号通信装置間で対応する秘密情報(暗号鍵・復号鍵)を持ち、認証と暗号通信をする暗号通信プログラムであって、以下の全ての機能を有する通信プログラムである。
(1)発呼側(暗号通信装置100a)が通信開始を知らせる第1の送信データ(通信開始要求)を平文または暗号文で送信する。
(2)着呼側(暗号通信装置100b)が発呼側の通信開始信号(通信開始要求)を受け、第一の乱数(送信乱数)を生成し、前記第1の乱数と第1の応答(開始応答データ)とを連結(結合)し、着呼側の持つ秘密情報(暗号鍵)で暗号化して第1の暗号文(通信開始応答)を生成し、前記第1の暗号文を発呼側に送信する。
(3)発呼側は前記第1の暗号文を発呼側が持つ秘密情報(復号鍵)で復号し、前記第1の乱数(受信乱数)を取得し、乱数に対応する検証情報(送信検証情報)を生成し、新たに第2の乱数(送信乱数)と第2の送信データ(応答データ)を生成し、前記検証情報と第2の乱数と第2の送信データを連結して発呼側の秘密情報(暗号鍵)で暗号化して第2の暗号文(送信暗号文)を生成し、前記第2の暗号文を着呼側に送信する。
(4)着呼側は前記第1の乱数から検証情報を生成し、前記第2の暗号文(受信暗号文)を着呼側が持つ秘密情報(復号鍵)で復号し、第2の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第1の乱数から生成した検証情報とを比較し、一致すれば発呼側装置を認証する。
(5)着呼側は前記第2の乱数から検証情報(送信検証情報)を生成し、新たに第3の乱数(送信乱数)と第2の送信データに対する第2の応答(応答データ)を生成し、前記検証情報と第3の乱数と第2の応答を連結して着呼側の秘密情報で暗号化して第3の暗号文(送信暗号文)を生成し、前記第3の暗号文を発呼側に送信する。
(6)発呼側は前記第2の乱数から検証情報を生成し、前記第3の暗号文(受信暗号文)を発呼側が持つ秘密情報で復号し、第3の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第2の乱数から生成した検証情報とを比較し、一致すれば着呼側装置を認証する。
(7)発呼側は前記第3の乱数から検証情報(送信検証情報)を生成し、新たに第4の乱数(送信乱数)と第3の送信データ(応答データ)を生成し、前記検証情報と第4の乱数と第3の送信データを連結して発呼側の秘密情報で暗号化して第4の暗号文(送信暗号文)を生成し、前記第4の暗号文を着呼側に送信する。
以上説明した暗号通信プログラムは、相互に認証しあった後も、同様の認証と暗号通信を続ける暗号通信プログラムである。
以上説明した暗号通信プログラムは、以下のいずれかの方法でデータを連結(結合)し、暗号化する暗号通信プログラムである。
(1)「検証情報」、「乱数」、「送信データまたは応答」の順
(2)「乱数」、「検証情報」、「送信データまたは応答」の順
(3)「検証情報」、「送信データまたは応答」、「乱数」の順
(4)「乱数」、「送信データまたは応答」、「検証情報」の順
以上説明した暗号通信プログラムは、フレキシブルディスクなどの記憶媒体に格納され、コンピュータが読み出して実行するものであってもよい。
以上説明した暗号通信装置100によれば、攻撃者999が、図8の暗号通信装置100aになりすまし、暗号通信装置100b(通信端末)に対して、再送攻撃により不正にアクセスしようとする場合、通信開始応答602において暗号通信装置100bは毎回異なる送信乱数を暗号化して送るため、攻撃者999は送信検証情報を作るために暗号通信装置100bが送信するデータを復号しなければならない。適当な数値を返しても、暗号通信装置100bが通信暗号文603を検証し、不正を検知できる。
攻撃者999が暗号通信装置100bにアクセスし、暗号文と対応する平文もしくは暗号文の復号結果が正しいと判断できる情報を入手しようとしても、暗号通信装置100bが不正を検知して通信を終了するので、攻撃者999は通信暗号文604を入手できない。したがって、攻撃者999は、通信開始応答602で受け取る暗号文しか入手できず、対応する平文もしくは暗号文の復号結果が正しいと判断できる情報を入手できない。
攻撃者999が暗号通信装置100bになりすまし、暗号通信装置100aに対して再送攻撃をかける場合、攻撃者999は、暗号通信装置100bが通信開始応答602で送信した正規のデータを事前に収集しておき、通信開始応答602として暗号通信装置100aに送ってくる。しかし、暗号通信装置100aが通信暗号文603で送る送信乱数は毎回異なるため、暗号通信装置100aが通信暗号文604を検証することにより、再送攻撃を検出できる。
攻撃者999が暗号通信装置100bになりすまして暗号通信装置100aにアクセスし、暗号文と対応する平文もしくは暗号文の復号結果が正しいと判断できる情報を入手しようとして、攻撃者999が、通信開始応答602において、ランダムなデータを暗号通信装置100aに送ってくる場合もある。
暗号通信装置100aが通信開始応答602を復号して得た開始応答データが正しくない場合、データ処理部130は、処理を続けることができない。この場合に通信を終了することとすれば、暗号通信装置100aは、通信暗号文603を送信しないので、、攻撃者が暗号文と対応する平文もしくは暗号文の復号結果が正しいと判断できる情報を入手できない。
以上説明した暗号通信装置100によれば、受信平文510の先頭に受信乱数がくる場合には、その受信乱数に基づく送信検証情報を含む送信平文540の先頭を送信検証情報以外のデータとするので、送信検証情報として受信乱数をそのまま利用する場合であっても、検証に用いる乱数の暗号文が一致することがなく、暗号文のコピー&ペーストによるなりすましを防止できる。
以上説明した暗号通信装置100によれば、着呼側装置(暗号通信装置100b)が先に発呼側装置(暗号通信装置100a)を認証するので、攻撃者999が着呼側装置に何度もアクセスし、乱数とその暗号化結果を大量に取得することで、暗号解析により暗号鍵を推定することができない。
実施の形態2.
実施の形態2について、図13〜図18を用いて説明する。
この実施の形態における暗号通信システム800の全体構成、暗号通信装置100の外観、ハードウェア資源の構成は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
図13は、この実施の形態における暗号通信装置100の機能ブロックの構成の一例を示すブロック構成図である。
なお、実施の形態1で説明した機能ブロックと共通するブロックについては、同一の符号を付し、ここでは説明を省略する。
暗号通信装置100は、受信部110、送信部120、データ処理部130、暗号処理部200を有する。
暗号処理部200は、復号鍵記憶部211、復号部212、分割部213、受信検証生成部214、検証部215、データ出力部216、復号鍵生成部217、受信乱数記憶部221、送信乱数記憶部222、検証乱数生成部231、送信検証生成部232、データ入力部233、結合部234、開始乱数生成部235、暗号鍵記憶部236、暗号化部237、鍵乱数生成部238、暗号鍵生成部239を有する。
受信部110は、通信装置915を用いて、他の暗号通信装置100が送信したデータを受信する。
図14は、この実施の形態におけ受信部110が受信するデータ550の構成の一例を示す図である。
受信部110が受信するデータ550が通信開始応答や通信暗号文などの送信暗号文552を含む場合、データ550は、送信暗号文552のほか、暗号鍵乱数551を含む。
データ550は、例えば、暗号鍵乱数551のあとに送信暗号文552を結合したデータである。
「暗号鍵乱数」は、データ550を送信してきた他の暗号通信装置100が、送信暗号文552を生成するのに使用した暗号一時鍵を生成するための乱数である。
なお、通信開始要求の場合には、暗号鍵乱数551と結合せず、通信開始要求553がそのままデータ550となる。しかし、通信開始要求を暗号化する場合には、暗号鍵乱数551と結合したデータであってもよい。
図13に戻り、暗号通信装置100の機能ブロックの説明を続ける。
受信部110は、CPU911などの処理装置を用いて、受信したデータに含まれる暗号鍵乱数と送信暗号文とを取得する。
受信部110は、CPU911などの処理装置を用いて、復号鍵乱数と受信暗号文とを出力する。「復号鍵乱数」とは、受信したデータから受信部110が取得した暗号鍵乱数のことである。「受信暗号文」とは、受信したデータから受信部110が取得した送信暗号文のことである。
復号鍵生成部217は、CPU911などの処理装置を用いて、受信部110が出力した復号鍵乱数を入力する。
復号鍵生成部217は、CPU911などの処理装置を用いて、復号鍵記憶部211が記憶した復号鍵を入力する。
復号鍵生成部217は、CPU911などの処理装置を用いて、入力した復号鍵と、入力した復号鍵乱数とに基づいて、復号一時鍵を生成する。
復号鍵生成部217は、CPU911などの処理装置を用いて、生成した復号一時鍵を出力する。
復号鍵生成部217が生成する復号一時鍵は、受信部110が復号鍵乱数とともに受信した受信暗号文を復号するために用いる復号鍵である。したがって、復号一時鍵は、正規の通信相手である他の暗号通信装置100が、送信暗号文を生成するために使用した暗号一時鍵と対になるものである。
例えば、共通鍵暗号方式の場合、復号鍵生成部217が生成する復号一時鍵は、他の暗号通信装置100がデータを暗号化した暗号一時鍵と同一である。あらかじめ、他の暗号通信装置100の暗号鍵記憶部236が記憶した暗号鍵と同一の復号鍵を、暗号通信装置100の復号鍵記憶部211が記憶しておき、他の暗号通信装置100が暗号鍵と暗号鍵乱数とから暗号一時鍵を生成したのと同じ方式(演算・計算式)で、復号鍵生成部217が復号鍵と復号鍵乱数とから復号一時鍵を生成すれば、復号一時鍵は暗号一時鍵と同一となる。
復号一時鍵の生成方式としては、例えば、復号鍵と復号鍵乱数とを結合し、ハッシュ関数や鍵生成関数、暗号化関数などに入力して、復号一時鍵を生成する方式がある。これらの関数は、全射関数または全単射関数である。また、攻撃者999に復号一時鍵を知られた場合に備え、攻撃者999が復号一時鍵と復号鍵乱数とから復号鍵を推定することが困難な関数である必要がある。そうすれば、攻撃者999は、暗号通信装置100間の通信のうち、その復号一時鍵で復号できる部分しか盗聴できず、被害を最小限に留めることができるからである。例えば、絶対に知られたくない秘密情報を送信する場合、秘密情報を2回に分けて送信し、2回の送信内容を両方あわせなければ秘密情報を得ることができないようにしておけば、攻撃者999が復号一時鍵を知り、1回の通信を盗聴したとしても、秘密を守ることができる。
共通鍵暗号方式ではなく、他の暗号方式を利用する場合には、暗号一時鍵と復号一時鍵が異なる場合もある。その場合、復号鍵生成部217が生成する復号一時鍵は、正規の通信相手である他の暗号通信装置100が暗号鍵乱数に基づいて生成した暗号一時鍵と対になる復号一時鍵であって、他の暗号通信装置100が暗号一時鍵で暗号化したデータを正しく復号できるものである必要がある。したがって、他の暗号通信装置100が暗号鍵と暗号鍵乱数から暗号一時鍵を生成する方式と、暗号通信装置100が復号鍵と復号鍵乱数から復号一時鍵を生成する方式とは、対になる一時鍵を生成するよう構成された方式であって、対をなすものであり、同一の方式とは限らない。
復号部212は、CPU911などの処理装置を用いて、受信部110が出力した受信暗号文を入力する。
復号部212は、CPU911などの処理装置を用いて、復号鍵生成部217が出力した復号一時鍵を入力する。
復号部212は、CPU911などの処理装置を用いて、入力した受信暗号文を、入力した復号一時鍵で復号し、受信平文とする。
復号部212は、CPU911などの処理装置を用いて、復号した受信平文を出力する。
鍵乱数生成部238は、CPU911などの処理装置を用いて、乱数を生成する。
鍵乱数生成部238が生成した乱数を、暗号鍵乱数とする。
鍵乱数生成部238は、CPU911などの処理装置を用いて、生成した暗号鍵乱数を出力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、鍵乱数生成部238が出力した暗号鍵乱数を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、暗号鍵記憶部236が記憶した暗号鍵を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、入力した暗号鍵と、入力した暗号鍵乱数とに基づいて、暗号一時鍵を生成する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、生成した暗号一時鍵を出力する。
暗号鍵生成部239が生成する暗号一時鍵は、暗号化部237が送信平文を暗号化するのに用い、送信部120が送信暗号文とともに、通信相手である他の暗号通信装置100に対して送信する。他の暗号通信装置100は、これを受信し、復号一時鍵を生成して、受信暗号文を復号する。
したがって、暗号鍵生成部239が暗号一時鍵を生成する方式は、通信相手である他の暗号通信装置100が復号一時鍵を生成する方式と対になる方式である必要がある。また、復号鍵生成部217が復号一時鍵を生成する方式は、通信相手である他の暗号通信装置100が暗号一時鍵を生成する方式と対になる方式である必要がある。この条件を満たす限りにおいては、1つの暗号通信装置100のなかで、復号鍵生成部217が復号一時鍵を生成する方式と、暗号鍵生成部239が暗号一時鍵を生成する方式とは、同一の方式である必要はなく、対になる方式である必要もない。
暗号化部237は、CPU911などの処理装置を用いて、結合部234が出力した送信平文を入力する。
暗号化部237は、CPU911などの処理装置を用いて、暗号鍵生成部239が出力した暗号一時鍵を入力する。
暗号化部237は、CPU911などの処理装置を用いて、入力した送信平文を、入力した暗号一時鍵で暗号化して、送信暗号文とする。
暗号化部237は、CPU911などの処理装置を用いて、暗号化した送信暗号文を出力する。
送信部120は、CPU911などの処理装置を用いて、暗号鍵生成部239が出力した暗号一時鍵を入力する。
送信部120は、CPU911などの処理装置を用いて、暗号化部237が出力した送信暗号文を入力する。
送信部120は、CPU911などの処理装置を用いて、入力した暗号一時鍵と、入力した送信暗号文とを含むデータを生成する。
送信部120は、通信装置915を用いて、生成したデータを他の暗号通信装置100に対して送信する。
送信部120が生成するデータは、例えば、図14に示すように、暗号鍵乱数551と送信暗号文552とを結合したデータである。
送信部120が生成するデータは、これを受信した他の暗号通信装置100が、復号一時鍵(暗号一時鍵)と、受信暗号文(送信暗号文)とを取得できる構造であればよく、両者を結合したものでなくてもよい。
次に、動作について説明する。
図15は、この実施の形態における暗号通信装置100が通信開始要求を受信した場合に実行する開始応答処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した開始応答処理の工程と共通する工程については、同一の符号を付し、ここでは説明を省略する。
鍵乱数生成工程S41において、鍵乱数生成部238は、CPU911などの処理装置を用いて、乱数を生成する。
鍵乱数生成部238は、CPU911などの処理装置を用いて、生成した乱数を、暗号鍵乱数として出力する。
暗号一時鍵生成工程S42において、暗号鍵生成部239は、CPU911などの処理装置を用いて、鍵乱数生成工程S41で鍵乱数生成部238が出力した暗号鍵乱数を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、暗号鍵記憶部236が記憶した暗号鍵を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、入力した暗号鍵と、入力した暗号鍵乱数とに基づいて、暗号一時鍵を生成する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、生成した暗号一時鍵を出力する。
暗号化工程S16において、暗号化部237は、CPU911などの処理装置を用いて、結合工程S15で結合部234が出力した送信平文を入力する。
暗号化部237は、CPU911などの処理装置を用いて、暗号一時鍵生成工程S42で暗号鍵生成部239が出力した暗号一時鍵を入力する。
暗号化部237は、CPU911などの処理装置を用いて、入力した送信平文を、入力した暗号一時鍵で暗号化して、送信暗号文とする。
暗号化部237は、CPU911などの処理装置を用いて、暗号化した送信暗号文を出力する。
開始応答送信工程S17において、送信部120は、CPU911などの処理装置を用いて、鍵乱数生成工程S41で鍵乱数生成部238が出力した暗号鍵乱数を入力する。
送信部120は、CPU911などの処理装置を用いて、暗号化工程S16で暗号化部237が出力した送信暗号文を入力する。
送信部120は、通信装置915を用いて、入力した暗号鍵乱数と、入力した送信暗号文(通信開始応答)とを含むデータを、通信相手である他の暗号通信装置100に対して送信する。
図16は、この実施の形態における暗号通信装置100が通信開始応答または通信暗号文を受信した場合に実行する暗号文受信処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付し、ここでは説明を省略する。
受信工程S21において、受信部110は、通信装置915を用いて、通信相手である他の暗号通信装置100が送信したデータを受信する。
受信部110は、CPU911などの処理装置を用いて、受信したデータから、復号鍵乱数と、受信暗号文(通信開始応答または通信暗号文)とを取得する。
受信部110は、CPU911などの処理装置を用いて、取得した復号鍵乱数と受信暗号部とを出力する。
復号一時鍵生成工程S45において、復号鍵生成部217は、CPU911などの処理装置を用いて、受信工程S21で受信部110が出力した復号鍵乱数を入力する。
復号鍵生成部217は、CPU911などの処理装置を用いて、復号鍵記憶部211が記憶した復号鍵を入力する。
復号鍵生成部217は、CPU911などの処理装置を用いて、入力した復号鍵と、入力した復号鍵乱数とに基づいて、復号一時鍵を生成する。
復号鍵生成部217は、CPU911などの処理装置を用いて、生成した復号一時鍵を出力する。
復号工程S22において、復号部212は、CPU911などの処理装置を用いて、受信工程S21で受信部110が出力した受信暗号文を入力する。
復号部212は、CPU911などの処理装置を用いて、復号一時鍵生成工程S45で復号鍵生成部217が出力した復号一時鍵を入力する。
復号部212は、CPU911などの処理装置を用いて、入力した受信暗号文を、入力した復号一時鍵で復号する。
図17は、この実施の形態における暗号通信装置100が送信暗号文を送信する場合に実行する暗号文送信処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した暗号文送信処理の工程と共通する工程については、同一の符号を付し、ここでは説明を省略する。
鍵乱数生成工程S48において、鍵乱数生成部238は、CPU911などの処理装置を用いて、乱数を生成し、暗号鍵乱数とする。
鍵乱数生成部238は、CPU911などの処理装置を用いて、生成した暗号鍵乱数を出力する。
暗号一時鍵生成工程S49において、暗号鍵生成部239は、CPU911などの処理装置を用いて、鍵乱数生成工程S48で鍵乱数生成部238が出力した暗号鍵乱数を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、暗号鍵記憶部236が記憶した暗号鍵を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、入力した暗号鍵と、入力した暗号鍵乱数とに基づいて、暗号一時鍵を生成する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、生成した暗号一時鍵を出力する。
暗号化工程S35において、暗号化部237は、CPU911などの処理装置を用いて、結合工程S34で結合部234が出力した送信平文を入力する。
暗号化部237は、CPU911などの処理装置を用いて、暗号一時鍵生成工程S49で暗号鍵生成部239が出力した暗号一時鍵を入力する。
暗号化部237は、CPU911などの処理装置を用いて、入力した送信平文を、入力した暗号一時鍵で暗号化して、送信暗号文とする。
暗号化部237は、CPU911などの処理装置を用いて、暗号化した送信暗号文を出力する。
送信工程S36において、送信部120は、CPU911などの処理装置を用いて、鍵乱数生成工程S48で鍵乱数生成部238が出力した暗号鍵乱数を入力する。
送信部120は、CPU911などの処理装置を用いて、暗号化工程S35で暗号化部237が出力した送信暗号文を入力する。
送信部120は、通信装置915を用いて、入力した暗号鍵乱数と、入力した送信暗号文とを含むデータを、通信相手である他の暗号通信装置100に対して送信する。
図18は、この実施の形態における暗号通信装置100aと暗号通信装置100bとが暗号通信をする通信の流れの一例を示すシーケンス図である。
この例では、通信の開始を要求する側を暗号通信装置100aとし、通信の開始を要求された側を暗号通信装置100bとして説明する。
最初に、暗号通信装置100aが通信開始要求601を送信し、暗号通信装置100bが受信する。
次に、暗号通信装置100bが暗号鍵乱数と通信開始応答とを含むデータ612を送信し、暗号通信装置100aが受信する。
通信開始応答は、暗号一時鍵で暗号化する。暗号一時鍵は、暗号鍵乱数に基づいて暗号通信装置100bが生成する。暗号鍵乱数は、暗号通信装置100bが生成し、通信開始応答と一緒に送信する。また、通信開始応答は、送信乱数を含む。送信乱数は、暗号通信装置100bが生成する。
暗号通信装置100aは、復号一時鍵で通信開始応答を復号する。復号一時鍵は、受信した暗号鍵乱数(=復号鍵乱数)に基づいて暗号通信装置100aが生成する。
通信開始応答により通信の開始が了解されると、暗号通信装置100aと暗号通信装置100bとの間の暗号通信が開始する。
暗号通信装置100aが暗号鍵乱数と通信暗号文とを含むデータ613を送信し、暗号通信装置100bが受信する。
通信暗号文は、暗号一時鍵で暗号化する。暗号一時鍵は、暗号鍵乱数に基づいて暗号通信装置100aが生成する。暗号鍵乱数は、暗号通信装置100aが生成し、通信暗号文と一緒に送信する。また、通信暗号文は、送信乱数と送信検証情報とを含む。送信乱数は、暗号通信装置100aが生成する。送信検証情報は、受信した通信開始応答に含まれる送信乱数(=受信乱数)に基づいて暗号通信装置100aが生成する。
暗号通信装置100bは、復号一時鍵で通信暗号文を復号する。復号一時鍵は、受信した暗号鍵乱数(=復号鍵乱数)に基づいて、暗号通信装置100bが生成する。
暗号通信装置100bは、受信した通信暗号文に含まれる送信検証情報(=受信検証情報)を検証し、検証成功と判断した場合には通信を続けるが、検証失敗と判断した場合には通信を終了する。
検証成功の場合、暗号通信装置100bが暗号鍵乱数と通信暗号文とを含むデータ614を送信し、暗号通信装置100aが受信する。
通信暗号文は、暗号一時鍵で暗号化する。暗号一時鍵は、暗号鍵乱数に基づいて暗号通信装置100bが生成する。暗号鍵乱数は、暗号通信装置100bが生成し、通信暗号文と一緒に送信する。また、通信暗号文は、送信乱数と送信検証情報とを含む。送信乱数は、暗号通信装置100bが生成する。送信検証情報は、受信した通信開始応答に含まれる送信乱数(=受信乱数)に基づいて暗号通信装置100bが生成する。
暗号通信装置100aは、復号一時鍵で通信暗号文を復号する。復号一時鍵は、受信した暗号鍵乱数(=復号鍵乱数)に基づいて、暗号通信装置100aが生成する。
暗号通信装置100aは、受信した通信暗号文に含まれる送信検証情報(=受信検証情報)を検証し、検証成功と判断した場合には通信を続けるが、検証失敗と判断した場合には通信を終了する。
以下、同様に、暗号通信装置100aが暗号鍵乱数と通信暗号文とを含むデータ615を送信し、暗号通信装置100bが受信する。検証に成功すれば通信を続行する。暗号通信装置100bが暗号鍵乱数と通信暗号文とを含むデータ616を送信し、暗号通信装置100aが受信する。検証に成功すれば通信を続行する。これを通信が終了するまで繰り返す。
同じ暗号鍵で暗号化した暗号文を何度も送信すると、攻撃者999がそれを収集し、暗号解読の手がかりとする場合がある。
この実施の形態における暗号通信システム800は、通信ごとに変える暗号一時鍵を使って暗号化しているので、攻撃者999が暗号文を収集しても、暗号を解読する手がかりを得ることができない。
また、暗号文には暗号一時鍵・復号一時鍵が含まれず、暗号鍵乱数を送信し、暗号通信装置100aと暗号通信装置100bとが共有する秘密情報である暗号鍵・復号鍵と、暗号鍵乱数とを組み合わせることにより、暗号一時鍵・復号一時鍵を生成し、暗号化・復号をする。
したがって、攻撃者999がどれか一つの通信暗号文についての暗号一時鍵・復号一時鍵を知って通信暗号文を復号したとしても、他の通信暗号文についての暗号一時鍵・復号一時鍵についての情報を得ることはできない。暗号鍵乱数と暗号一時鍵・復号一時鍵から暗号鍵・復号鍵を推定することが困難な関数により、暗号一時鍵・復号一時鍵を生成するので、攻撃者999は、その通信暗号文とともに送信された暗号鍵乱数と、暗号一時鍵・復号一時鍵との対応関係を知ったとしても、暗号通信装置100aと暗号通信装置100bとが共有する秘密情報である暗号鍵・復号鍵を知ることはできない。これにより、攻撃者999は、他の通信暗号文とともに送信された暗号鍵乱数から、暗号一時鍵・復号一時鍵を生成することができず、被害を最小限に留めることができる。
この実施の形態における暗号通信装置100は、更に、復号鍵生成部217を有することを特徴とする。
受信部110は、通信装置915を用いて、受信暗号文とともに他の暗号通信装置100が送信した暗号鍵乱数を受信して復号鍵乱数とすることを特徴とする。
復号鍵生成部217は、CPU911などの処理装置を用いて、受信部110が受信した復号鍵乱数に基づいて、復号一時鍵を生成することを特徴とする。
復号部212は、CPU911などの処理装置を用いて、受信部110が受信した受信暗号文を復号鍵生成部217が生成した復号一時鍵で復号して受信平文とすることを特徴とする。
この実施の形態における暗号通信装置100によれば、受信暗号文とともに受信した復号鍵乱数に基づいて復号一時鍵を生成し、生成した復号一時鍵で受信暗号文を復号するので、通信ごとに復号一時鍵が異なり、攻撃者999に暗号解読の手がかりを与えないという効果を奏する。また、攻撃者999が万一、ある通信暗号文を復号できる復号一時鍵を知ったとしても、他の通信暗号文を復号できず、被害を最小限に留めることができるという効果を奏する。
この実施の形態における暗号通信装置100は、更に、鍵乱数生成部238と、暗号鍵生成部239とを有することを特徴とする。
鍵乱数生成部238は、CPU911などの処理装置を用いて、乱数を生成して暗号鍵乱数とすることを特徴とする。
暗号鍵生成部239は、CPU911などの処理装置を用いて、鍵乱数生成部238が生成した暗号鍵乱数に基づいて、暗号一時鍵を生成することを特徴とする。
暗号化部暗号化部237は、CPU911などの処理装置を用いて、結合部234が生成した送信平文を暗号鍵生成部239が生成した暗号一時鍵で暗号化して送信暗号文とすることを特徴とする。
送信部120は、通信装置915を用いて、鍵乱数生成部238が生成した暗号鍵乱数を暗号化部237が暗号化した送信暗号文とともに上記他の暗号通信装置に対して送信することを特徴とする。
この実施の形態における暗号通信装置100によれば、生成した暗号鍵乱数に基づいて暗号一時鍵を生成し、生成した暗号一時鍵で送信平文を暗号化し、暗号鍵乱数を送信暗号文とともに送信するので、通信ごとに暗号一時鍵が異なり、攻撃者999に暗号解読の手がかりを与えないという効果を奏する。また、攻撃者999が万一、ある通信暗号文を復号できる復号一時鍵を知ったとしても、他の通信暗号文を復号できず、被害を最小限に留めることができるという効果を奏する。
以上説明した暗号通信装置100は、
接続手段(通信装置915・ネットワーク801)により接続されている2つ以上の暗号通信装置であり、暗号通信装置間で対応する秘密情報(暗号鍵・復号鍵)を持ち、認証と暗号通信をする暗号通信装置であって、以下の全ての機能を有する暗号通信装置である。
(1)発呼側(暗号通信装置100a)が通信開始を知らせる第1の送信データ(通信開始要求)を平文または暗号文で送信する。
(2)着呼側(暗号通信装置100b)が発呼側の通信開始信号(通信開始要求)を受け、第1の鍵生成乱数(暗号鍵乱数)を生成し、前記第1の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)から第1の一時鍵(暗号一時鍵)を生成する。第一の乱数(送信乱数)を生成し、前記第1の乱数と第1の応答(開始応答データ)とを連結(結合)し、前記第1の一時鍵で暗号化して第1の暗号文(通信開始応答)を生成し、第1の鍵生成乱数と第1の暗号文を発呼側に送信する。
(3)発呼側は着呼側から送られた前記第1の鍵生成乱数(復号鍵乱数)と発呼側の持つ秘密情報(復号鍵)から第1の一時鍵(復号一時鍵)を生成し、前記第1の暗号文(受信暗号文)を前記第1の一時鍵で復号し、前記第1の乱数(受信乱数)を取得し、乱数に対応する検証情報(送信検証情報)を生成する。第2の鍵生成乱数(暗号鍵乱数)を生成し、前記第2の鍵生成乱数と発呼側の持つ秘密情報(暗号鍵)から第2の一時鍵(暗号一時鍵)を生成する。第2の乱数(送信乱数)と第2の送信データ(応答データ)を生成し、前記検証情報と第2の乱数と第2の送信データを連結して前記第2の一時鍵で暗号化して第2の暗号文(送信暗号文)を生成し、前記第2の鍵生成乱数と第2の暗号文を着呼側に送信する。
(4)着呼側は前記第1の乱数から検証情報を生成する。発呼側から送られた前記第2の鍵生成乱数(受信鍵乱数)と着呼側の持つ秘密情報(復号鍵)から第2の一時鍵(復号一時鍵)を生成し、前記第2の暗号文(受信暗号文)を前記第2の一時鍵で復号し、第2の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第1の乱数から生成した検証情報とを比較し、一致すれば発呼側装置を認証する。
(5)着呼側は第3の鍵生成乱数(暗号鍵乱数)を生成し、前記第3の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)とから第3の一時鍵(暗号一時鍵)を生成する。前記第2の暗号文の復号結果から取り出した前記第2の乱数(受信乱数)から検証情報(送信検証情報)を生成し、新たに第3の乱数と第2の送信データに対する第2の応答(応答データ)を生成し、前記検証情報と第3の乱数と第2の応答を連結して前記第3の一時鍵で暗号化して第3の暗号文(送信暗号文)を生成し、前記第3の鍵生成乱数と第3の暗号文を発呼側に送信する。
(6)発呼側は前記第2の乱数から検証情報を生成する。着呼側から送られた前記第3の鍵生成乱数(復号鍵乱数)と発呼側の持つ秘密情報(復号鍵)から第3の一時鍵(復号一時鍵)を生成し、前記第3の暗号文(受信暗号文)を前記で第3の一時鍵で復号し、第3の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第2の乱数から生成した検証情報とを比較し、一致すれば着呼側装置を認証する。
(7)発呼側は第4の鍵生成乱数(暗号鍵乱数)を生成し、前記第4の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)とから第4の一時鍵(暗号一時鍵)を生成する。前記第3の乱数(受信乱数)から検証情報(送信検証情報)を生成し、新たに第4の乱数(送信乱数)と第3の送信データ(応答データ)を生成し、前記検証情報と第4の乱数と第3の送信データを連結して前記第4の一時鍵で暗号化して第4の暗号文(送信暗号文)を生成し、前記第4の鍵生成乱数と第4の暗号文を着呼側に送信する。
以上説明した暗号通信装置100は、相互に認証しあった後も、同様の認証と暗号通信を続ける暗号通信装置である。
以上説明した暗号通信装置100が行う暗号通信方法は、
接続手段(通信装置915・ネットワーク801)により接続されている2つ以上の暗号通信装置100において、暗号通信装置間で対応する秘密情報(暗号鍵・復号鍵)を持ち、認証と暗号通信をする暗号通信方法であって、以下の全ての機能を有する暗号通信方法である。
(1)発呼側(暗号通信装置100a)が通信開始を知らせる第1の送信データ(通信開始要求)を平文または暗号文で送信する。
(2)着呼側(暗号通信装置100b)が発呼側の通信開始信号(通信開始要求)を受け、第1の鍵生成乱数(暗号鍵乱数)を生成し、前記第1の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)から第1の一時鍵(暗号秘密鍵)を生成する。第1の乱数(送信乱数)を生成し、前記第1の乱数と第1の応答(開始応答データ)とを連結(結合)し、前記第1の一時鍵で暗号化して第1の暗号文(送信暗号文)を生成し、第1の鍵生成乱数と第1の暗号文を発呼側に送信する。
(3)発呼側は着呼側から送られた前記第1の鍵生成乱数(復号鍵乱数)と発呼側の持つ秘密情報(復号鍵)から第1の一時鍵(復号一時鍵)を生成し、前記第1の暗号文(受信暗号文)を前記第1の一時鍵で復号し、前記第1の乱数(受信乱数)を取得し、乱数に対応する検証情報(送信検証情報)を生成する。第2の鍵生成乱数(暗号鍵乱数)を生成し、前記第2の鍵生成乱数と発呼側の持つ秘密情報(暗号鍵)から第2の一時鍵(暗号一時鍵)を生成する。第2の乱数(送信乱数)と第2の送信データ(応答データ)を生成し、前記検証情報と第2の乱数と第2の送信データを連結して前記第2の一時鍵で暗号化して第2の暗号文(送信暗号文)を生成し、前記第2の鍵生成乱数と第2の暗号文を着呼側に送信する。
(4)着呼側は前記第1の乱数から検証情報を生成する。発呼側から送られた前記第2の鍵生成乱数(復号鍵乱数)と着呼側の持つ秘密情報(復号鍵)から第2の一時鍵(復号一時鍵)を生成し、前記第2の暗号文(受信暗号文)を前記第2の一時鍵で復号し、第2の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第1の乱数から生成した検証情報とを比較し、一致すれば発呼側装置を認証する。
(5)着呼側は第3の鍵生成乱数(暗号鍵乱数)を生成し、前記第3の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)とから第3の一時鍵(暗号一時鍵)を生成する。前記第2の暗号文の復号結果から取り出した前記第2の乱数(受信乱数)から検証情報(送信検証情報)を生成し、新たに第3の乱数(送信乱数)と第2の送信データに対する第2の応答(応答データ)を生成し、前記検証情報と第3の乱数と第2の応答を連結して前記第3の一時鍵で暗号化して第3の暗号文(送信暗号文)を生成し、前記第3の鍵生成乱数と第3の暗号文を発呼側に送信する。
(6)発呼側は前記第2の乱数から検証情報を生成する。着呼側から送られた前記第3の鍵生成乱数(復号鍵乱数)と発呼側の持つ秘密情報(復号鍵)から第3の一時鍵(復号一時鍵)を生成し、前記第3の暗号文(受信暗号文)を前記で第3の一時鍵で復号し、第3の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第2の乱数から生成した検証情報とを比較し、一致すれば着呼側装置を認証する。
(7)発呼側は第4の鍵生成乱数(暗号鍵乱数)を生成し、前記第4の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)とから第4の一時鍵(暗号一時鍵)を生成する。前記第3の乱数(受信乱数)から検証情報(送信検証情報)を生成し、新たに第4の乱数(送信乱数)と第3の送信データ(応答データ)を生成し、前記検証情報と第4の乱数と第3の送信データを連結して前記第4の一時鍵で暗号化して第4の暗号文(送信暗号文)を生成し、前記第4の鍵生成乱数と第4の暗号文を着呼側に送信する。
以上説明した暗号通信方法は、相互に認証しあった後も、同様の認証と暗号通信を続ける暗号通信方法である。
以上説明した暗号通信装置100としてコンピュータを機能させる暗号通信プログラムは、
接続手段(通信装置915・ネットワーク801)により接続されている2つ以上の暗号通信装置100において、暗号通信装置間で対応する秘密情報(暗号鍵・復号鍵)を持ち、認証と暗号通信をする通信プログラムであって、以下の全ての機能を有する通信プログラムである。
(1)発呼側(暗号通信装置100a)が通信開始を知らせる第1の送信データ(通信開始要求)を平文または暗号文で送信する。
(2)着呼側(暗号通信装置100b)が発呼側の通信開始信号(通信開始要求)を受け、第1の鍵生成乱数(暗号鍵乱数)を生成し、前記第1の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)から第1の一時鍵(暗号一時鍵)を生成する。第一の乱数(送信乱数)を生成し、前記第1の乱数と第1の応答(開始応答データ)とを連結(結合)し、前記第1の一時鍵で暗号化して第1の暗号文(送信暗号文)を生成し、第1の鍵生成乱数と第1の暗号文を発呼側に送信する。
(3)発呼側は着呼側から送られた前記前記第1の鍵生成乱数(復号鍵乱数)と発呼側の持つ秘密情報(復号鍵)から第1の一時鍵(復号一時鍵)を生成し、前記第1の暗号文(受信暗号文)を前記第1の一時鍵で復号し、前記第1の乱数(受信乱数)を取得し、乱数に対応する検証情報(送信検証情報)を生成する。第2の鍵生成乱数(暗号鍵乱数)を生成し、前記第2の鍵生成乱数と発呼側の持つ秘密情報(暗号鍵)から第2の一時鍵(暗号一時鍵)を生成する。第2の乱数(送信乱数)と第2の送信データ(応答データ)を生成し、前記検証情報と第2の乱数と第2の送信データを連結して前記第2の一時鍵で暗号化して第2の暗号文(送信暗号文)を生成し、前記第2の鍵生成乱数と第2の暗号文を着呼側に送信する。
(4)着呼側は前記第1の乱数から検証情報を生成する。発呼側から送られた前記第2の鍵生成乱数(復号鍵乱数)と着呼側の持つ秘密情報(復号鍵)から第2の一時鍵(復号一時鍵)を生成し、前記第2の暗号文(受信暗号文)を前記第2の一時鍵で復号し、第2の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第1の乱数から生成した検証情報とを比較し、一致すれば発呼側装置を認証する。
(5)着呼側は第3の鍵生成乱数(暗号鍵乱数)を生成し、前記第3の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)とから第3の一時鍵(暗号一時鍵)を生成する。前記第2の暗号文の復号結果から取り出した前記第2の乱数(受信乱数)から検証情報(送信検証情報)を生成し、新たに第3の乱数(送信乱数)と第2の送信データに対する第2の応答(応答データ)を生成し、前記検証情報と第3の乱数と第2の応答を連結して前記第3の一時鍵で暗号化して第3の暗号文(送信暗号文)を生成し、前記第3の鍵生成乱数と第3の暗号文を発呼側に送信する。
(6)発呼側は前記第2の乱数から検証情報を生成する。着呼側から送られた前記第3の鍵生成乱数(復号鍵乱数)と発呼側の持つ秘密情報(復号鍵)から第3の一時鍵(復号一時鍵)を生成し、前記第3の暗号文(受信暗号文)を前記で第3の一時鍵で復号し、第3の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第2の乱数から生成した検証情報とを比較し、一致すれば着呼側装置を認証する。
(7)発呼側は第4の鍵生成乱数(暗号鍵乱数)を生成し、前記第4の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)とから第4の一時鍵(暗号一時鍵)を生成する。前記第3の乱数(受信乱数)から検証情報(送信検証情報)を生成し、新たに第4の乱数(送信乱数)と第3の送信データ(応答データ)を生成し、前記検証情報と第4の乱数と第3の送信データを連結して前記第4の一時鍵で暗号化して第4の暗号文(送信暗号文)を生成し、前記第4の鍵生成乱数と第4の暗号文を着呼側に送信する。
以上説明した暗号通信プログラムは、相互に認証しあった後も、同様の認証と暗号通信を続ける暗号通信プログラムである。
以上説明した暗号通信プログラムは、フレキシブルディスクなどの記憶媒体に格納され、コンピュータが読み出して実行するものであってもよい。
以上説明した暗号通信装置100は、データの暗号化に使われる暗号鍵・復号鍵を固定値ではなく、通信データごとに変更するので、安全性が高くなる。
暗号鍵・復号鍵と、暗号鍵乱数・復号鍵乱数とに基づいて、暗号一時鍵・復号一時鍵を生成する方式は、暗号鍵乱数・復号鍵乱数と暗号一時鍵・復号一時鍵とに基づいて、暗号鍵・復号鍵を推定することが困難な方式を用いる。
暗号鍵Kと、暗号鍵乱数KRとに基づいて暗号一時鍵TKを生成する関数をfとし、TK=f(K,KR)と表記する。ある暗号鍵乱数KRについて、暗号一時鍵TK=f(K,KR)と、暗号一時鍵TK=f(K,KR)とが同一(すなわち、TK=TK)となる暗号鍵Kと暗号鍵Kとが存在する関数fを用いて暗号一時鍵を生成することが、更に好ましい。
そうすれば、攻撃者999が、暗号一時鍵TKを知った場合、暗号鍵を推定することが困難なだけでなく、万一、暗号鍵を推定できたとしても、暗号鍵がKなのかKなのかを決定することができず、更に安全性が高くなるからである。
実施の形態3.
実施の形態3について、図19〜図25を用いて説明する。
この実施の形態における暗号通信システム800の全体構成、暗号通信装置100の外観、ハードウェア資源の構成は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
図19は、この実施の形態における暗号通信装置100の機能ブロックの構成の一例を示すブロック構成図である。
なお、実施の形態2で説明した機能ブロックと共通するブロックについては、同一の符号を付し、ここでは説明を省略する。
受信部110は、通信装置915を用いて、通信相手である他の暗号通信装置100が送信したデータを受信する。
図20は、この実施の形態における受信部110が受信するするデータ560の構成の一例を示す図である。
受信部110が受信するデータ560が通信開始要求563を含む場合、データ560は、通信開始要求563のほか、暗号鍵乱数561を含む。
データ560は、例えば、暗号鍵乱数561のあとに通信開始要求563を結合したデータである。
なお、通信開始要求ではなく、通信開始応答や通信暗号文などの送信暗号文の場合には、暗号鍵乱数と結合せず、送信暗号文562がそのままデータ560となる。
図19に戻り、暗号通信装置100の機能ブロックの説明を続ける。
受信部110は、CPU911などの処理装置を用いて、受信したデータに含まれる暗号鍵乱数と通信開始要求とを取得する。
受信部110は、CPU911などの処理装置を用いて、取得した暗号鍵乱数と通信開始要求とを出力する。
受信部110は、受信したデータが送信暗号文である場合には、CPU911などの処理装置を用いて、受信した送信暗号文を受信暗号文として出力する。
受信乱数記憶部221は、CPU911などの処理装置を用いて、受信部110が出力した暗号鍵乱数を入力する。
受信乱数記憶部221は、RAM914などの記憶装置を用いて、入力した暗号鍵乱数を受信乱数として記憶する。
すなわち、受信乱数記憶部221は、受信部110が通信開始要求を受信した場合には、通信開始要求とともに受信した暗号鍵乱数を受信乱数として記憶し、それ以外の場合には、実施の形態1〜実施の形態2と同様、分割部213が出力した受信乱数を記憶する。
復号鍵生成部217は、CPU911などの処理装置を用いて、復号鍵記憶部211が記憶した復号鍵を入力する。
復号鍵生成部217は、CPU911などの処理装置を用いて、送信乱数記憶部222が記憶した送信乱数を入力する。
復号鍵生成部217は、CPU911などの処理装置を用いて、入力した復号鍵と、入力した送信乱数とに基づいて、復号一時鍵を生成する。
復号鍵生成部217は、CPU911などの処理装置を用いて、生成した復号一時鍵を出力する。
すなわち、復号鍵生成部217は、復号鍵乱数ではなく、送信乱数記憶部222が記憶した送信乱数を使用して、復号一時鍵を生成する。
なお、復号鍵生成部217は、送信乱数記憶部222が記憶した送信乱数ではなく、受信検証生成部214が出力した検証情報を使用して、復号一時鍵を生成してもよい。あるいは、送信乱数記憶部222が記憶した送信乱数と、受信検証生成部214が出力した検証情報とを両方使用して、復号一時鍵を生成してもよい。
暗号鍵生成部239は、CPU911などの処理装置を用いて、暗号鍵記憶部236が記憶した暗号鍵を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、受信乱数記憶部221が記憶した受信乱数を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、入力した暗号鍵と、入力した受信乱数とに基づいて、暗号一時鍵を生成する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、生成した暗号一時鍵を出力する。
すなわち、暗号鍵生成部239は、暗号鍵乱数ではなく、受信乱数記憶部221が記憶した受信乱数を使用して、暗号一時鍵を生成する。
なお、暗号鍵生成部239は、受信乱数記憶部221が記憶した受信乱数ではなく、送信検証生成部232が出力した送信検証情報を使用して、暗号一時鍵を生成してもよい。あるいは、受信乱数記憶部221が記憶した受信乱数と送信検証生成部232が出力した送信検証情報とを両方使用して、暗号一時鍵を生成してもよい。
鍵乱数生成部238は、データ入力部233が通信開始要求を入力した場合に、CPU911などの処理装置を用いて、暗号鍵乱数を生成する。
鍵乱数生成部238は、CPU911などの処理装置を用いて、生成した暗号鍵乱数を出力する。
すなわち、鍵乱数生成部238は、通信開始要求を送信する場合にのみ、暗号鍵乱数を生成し、それ以外の場合は暗号鍵乱数を生成しない。
送信乱数記憶部222は、データ入力部233が通信開始要求を入力した場合、CPU911などの処理装置を用いて、鍵乱数生成部238が生成した暗号鍵乱数を入力する。
送信乱数記憶部222は、RAM914などの記憶装置を用いて、入力した暗号鍵乱数を、送信乱数として記憶する。
すなわち、送信乱数記憶部222は、通信開始要求を送信する場合には、鍵乱数生成部238が生成した暗号鍵乱数を送信乱数として記憶し、それ以外の場合には、実施の形態1〜実施の形態2と同様、検証乱数生成部231が生成した送信乱数を記憶する。
送信部120は、データ入力部233が通信開始要求を入力した場合、CPU911などの処理装置を用いて、通信開始要求を入力する。
送信部120は、CPU911などの処理装置を用いて、鍵乱数生成部238が出力した暗号鍵乱数を入力する。
送信部120は、通信装置915を用いて、入力した通信開始要求と、入力した暗号鍵乱数とを含むデータを、通信相手である他の暗号通信装置100に対して送信する。
それ以外の場合、送信部120は、暗号化部237が出力した送信暗号文を入力し、送信する。
次に、動作について説明する。
図21は、この実施の形態における暗号通信装置100が通信開始を要求する開始要求処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した開始要求処理の工程と共通する工程については、同一の符号を付し、ここでは説明を省略する。
鍵乱数生成工程S51において、鍵乱数生成部238は、CPU911などの処理装置を用いて、乱数を生成し、暗号鍵乱数とする。
鍵乱数生成部238は、CPU911などの処理装置を用いて、生成した暗号鍵乱数を出力する。
送信乱数記憶部222は、CPU911などの処理装置を用いて、鍵乱数生成部238が出力した暗号鍵乱数を入力する。
送信乱数記憶部222は、RAM914などの記憶装置を用いて、入力した暗号鍵乱数を、送信乱数として記憶する。
開始要求送信工程S03において、送信部120は、CPU911などの処理装置を用いて、開始要求生成工程S01でデータ入力部233が出力した(または暗号化部237が暗号化した)通信開始要求を入力する。
送信部120は、CPU911などの処理装置を用いて、鍵乱数生成工程S51で鍵乱数生成部238が出力した暗号鍵乱数を入力する。
送信部120は、通信装置915を用いて、入力した暗号鍵乱数と、入力した通信開始要求とを含むデータを、通信相手である他の暗号通信装置100に対して送信する。
図22は、この実施の形態における暗号通信装置100が通信開始要求を受信した場合に実行する開始応答処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した開始応答処理の工程と共通する工程については、同一の符号を付し、ここでは説明を省略する。
開始要求受信工程S11において、受信部110は、通信装置915を用いて、通信相手である他の暗号通信装置100が送信した暗号鍵乱数と通信開始要求とを含むデータを受信する。
受信部110は、CPU911などの処理装置を用いて、受信したデータに含まれる暗号鍵乱数と通信開始要求とを取得する。
受信部110は、CPU911などの処理装置を用いて、取得した暗号鍵乱数を復号鍵乱数として出力する。
受信部110は、CPU911などの処理装置を用いて、取得した通信開始要求を出力する。
受信乱数記憶部221は、CPU911などの処理装置を用いて、受信部110が出力した復号鍵乱数を入力する。
受信乱数記憶部221は、RAM914などの記憶装置を用いて、入力した復号鍵乱数を、受信乱数として記憶する。
暗号一時鍵生成工程S54において、暗号鍵生成部239は、CPU911などの処理装置を用いて、暗号鍵記憶部236が記憶した暗号鍵を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、受信乱数記憶部221が記憶した受信乱数を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、入力した暗号鍵と、入力した受信乱数とに基づいて、暗号一時鍵を生成する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、生成した暗号一時鍵を出力する。
暗号化工程S16において、暗号化部237は、CPU911などの処理装置を用いて、結合工程S15で結合部234が出力した送信平文を入力する。
暗号化部237は、CPU911などの処理装置を用いて、暗号一時鍵生成工程S42で暗号鍵生成部239が出力した暗号一時鍵を入力する。
暗号化部237は、CPU911などの処理装置を用いて、入力した送信平文を、入力した暗号一時鍵で暗号化して、送信暗号文とする。
暗号化部237は、CPU911などの処理装置を用いて、暗号化した送信暗号文を出力する。
図23は、この実施の形態における暗号通信装置100が通信開始応答または通信暗号文を受信した場合に実行する暗号文受信処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付し、ここでは説明を省略する。
復号一時鍵生成工程S57において、復号鍵生成部217は、CPU911などの処理装置を用いて、復号鍵記憶部211が記憶した復号鍵を入力する。
復号鍵生成部217は、CPU911などの処理装置を用いて、送信乱数記憶部222が記憶した送信乱数を入力する。
復号鍵生成部217は、CPU911などの処理装置を用いて、入力した復号鍵と、入力した送信乱数とに基づいて、復号一時鍵を生成する。
復号鍵生成部217は、CPU911などの処理装置を用いて、生成した復号一時鍵を出力する。
復号工程S22において、復号部212は、CPU911などの処理装置を用いて、受信工程S21で受信部110が出力した受信暗号文を入力する。
復号部212は、CPU911などの処理装置を用いて、復号一時鍵生成工程S57で復号鍵生成部217が出力した復号一時鍵を入力する。
復号部212は、CPU911などの処理装置を用いて、入力した受信暗号文を、入力した復号一時鍵で復号する。
受信部110が受信した受信暗号文が通信開始応答である場合、送信乱数記憶部222が記憶した送信乱数は、鍵乱数生成部238が生成した暗号鍵乱数である。したがって、復号鍵生成部217は、暗号鍵記憶部236が記憶した暗号鍵と鍵乱数生成部238が生成した暗号鍵乱数とに基づいて復号一時鍵を生成する。
一方、通信相手である他の暗号通信装置100は、暗号鍵記憶部236が記憶した暗号鍵と受信乱数記憶部221が記憶した受信乱数とに基づいて、暗号一時鍵を生成し、生成した暗号一時鍵で暗号化した送信暗号文を送信する。送信暗号文が通信開始応答である場合、受信乱数記憶部221が記憶した受信乱数は、通信開始要求とともに受信した復号鍵乱数であり、元を質せば、暗号通信装置100の鍵乱数生成部238が生成した暗号鍵乱数である。
したがって、暗号通信装置100は、通信相手である他の暗号通信装置100が暗号化した通信開始応答を正しく復号できる。
図24は、この実施の形態における暗号通信装置100が送信暗号文を送信する場合に実行する暗号文送信処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した暗号文送信処理の工程と共通する工程については、同一の符号を付し、ここでは説明を省略する。
暗号一時鍵生成工程S61において、暗号鍵生成部239は、CPU911などの処理装置を用いて、暗号鍵記憶部236が記憶した暗号鍵を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、受信乱数記憶部221が記憶した受信乱数を入力する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、入力した暗号鍵と、入力した受信乱数とに基づいて、暗号一時鍵を生成する。
暗号鍵生成部239は、CPU911などの処理装置を用いて、生成した暗号一時鍵を出力する。
暗号化工程S35において、暗号化部237は、CPU911などの処理装置を用いて、結合工程S34で結合部234が出力した送信平文を入力する。
暗号化部237は、CPU911などの処理装置を用いて、暗号一時鍵生成工程S61で暗号鍵生成部239が出力した暗号一時鍵を入力する。
暗号化部237は、CPU911などの処理装置を用いて、入力した送信平文を、入力した暗号一時鍵で暗号化して、送信暗号文とする。
暗号化部237は、CPU911などの処理装置を用いて、暗号化した送信暗号文を出力する。
暗号通信装置100が送信する送信暗号文が通信開始応答でない場合、受信乱数記憶部221が記憶した受信乱数は、受信部110が受信した受信暗号文に含まれる受信乱数であり、元を質せば、通信相手である他の暗号通信装置100の検証乱数生成部231が生成した送信乱数である。したがって、暗号鍵生成部239は、暗号鍵記憶部236が記憶した暗号鍵と他の暗号通信装置100の検証乱数生成部231が生成した送信乱数とに基づいて暗号一時鍵を生成する。
一方、他の暗号通信装置100の復号鍵生成部217は、復号鍵記憶部211が記憶した復号鍵と送信乱数記憶部222が記憶した送信乱数とに基づいて復号一時鍵を生成する。送信乱数記憶部222が記憶した送信乱数は、検証乱数生成部231が生成した送信乱数である。
したがって、暗号通信装置100が暗号化した通信暗号文は、通信相手である他の暗号通信装置100が正しく復号できる。
図25は、この実施の形態における暗号通信装置100aと暗号通信装置100bとが暗号通信をする通信の流れの一例を示すシーケンス図である。
この例では、通信の開始を要求する側を暗号通信装置100aとし、通信の開始を要求された側を暗号通信装置100bとして説明する。
最初に、暗号通信装置100aが暗号鍵乱数と通信開始要求とを含むデータ611を送信し、暗号通信装置100bが受信する。
次に、暗号通信装置100bが通信開始応答602を送信し、暗号通信装置100aが受信する。
通信開始応答602は、暗号一時鍵で暗号化する。暗号一時鍵は、受信した暗号鍵乱数に基づいて暗号通信装置100bが生成する。また、通信開始応答は、送信乱数を含む。
暗号通信装置100aは、復号一時鍵で通信開始応答602を復号する。復号一時鍵は、送信した暗号鍵乱数に基づいて暗号通信装置100aが生成する。
通信開始応答により通信の開始が了解されると、暗号通信装置100aと暗号通信装置100bとの間の暗号通信が開始する。
暗号通信装置100aが通信暗号文603を送信し、暗号通信装置100bが受信する。
通信暗号文603は、暗号一時鍵で暗号化する。暗号一時鍵は、受信乱数に基づいて暗号通信装置100aが生成する。受信乱数は、暗号通信装置100aが受信した通信開始応答に含まれる送信乱数である。また、通信暗号文603は、送信乱数と送信検証情報とを含む。送信乱数は、暗号通信装置100aが生成する。送信検証情報は、受信乱数に基づいて暗号通信装置100aが生成する。
暗号通信装置100bは、復号一時鍵で通信暗号文603を復号する。復号一時鍵は、暗号通信装置100bが送信した通信開始応答に含めた送信乱数に基づいて、暗号通信装置100bが生成する。
暗号通信装置100bは、受信した通信暗号文603に含まれる送信検証情報(=受信検証情報)を検証し、検証成功と判断した場合には通信を続けるが、検証失敗と判断した場合には通信を終了する。
検証成功の場合、暗号通信装置100bが通信暗号文604を送信し、暗号通信装置100aが受信する。
通信暗号文604は、暗号一時鍵で暗号化する。暗号一時鍵は、受信乱数に基づいて暗号通信装置100bが生成する。受信乱数は、暗号通信装置100bが受信した通信暗号文603に含まれる送信乱数である。また、通信暗号文604は、送信乱数と送信検証情報とを含む。送信乱数は、暗号通信装置100bが生成する。送信検証情報は、受信乱数に基づいて暗号通信装置100bが生成する。
暗号通信装置100aは、復号一時鍵で通信暗号文604を復号する。復号一時鍵は、暗号通信装置100aが送信した通信暗号文603に含めた送信乱数に基づいて、暗号通信装置100aが生成する。
暗号通信装置100aは、受信した通信暗号文604に含まれる送信検証情報(=受信検証情報)を検証し、検証成功と判断した場合には通信を続けるが、検証失敗と判断した場合には通信を終了する。
以下、同様に、暗号通信装置100aが通信暗号文605を送信し、暗号通信装置100bが受信する。検証に成功すれば通信を続行する。暗号通信装置100bが通信暗号文606を送信し、暗号通信装置100aが受信する。検証に成功すれば通信を続行する。これを通信が終了するまで繰り返す。
このように、検証のために送信する送信乱数を、暗号一時鍵・復号一時鍵を生成するためにも使用することにより、暗号鍵乱数を送信する必要がない。そのため、送信されるデータのデータ量が少なくて済むので、通信コストを低減することができる。
また、攻撃者999が、万一、通信暗号文を復号できる復号一時鍵を知り、通信暗号文を復号したとしても、攻撃者999が知ることができる送信乱数は、次の通信暗号文を暗号化・復号する暗号一時鍵・復号一時鍵を生成するためのものであり、その通信暗号文を暗号化・復号する暗号一時鍵・復号一時鍵を生成するためのものではない。したがって、攻撃者999は、送信乱数と復号一時鍵との対応関係すら知ることができないので、暗号鍵・復号鍵を推定できない。
なお、通信コストの点を無視すれば、送信乱数とは別に暗号鍵乱数を生成して、送信平文に含め、暗号一時鍵で暗号化して送信することとしてもよい。
また、通信開始要求は送信乱数を含まないので、通信開始要求を送信するときは、暗号鍵乱数を一緒に送信する。これにより、通信開始応答602も、毎回異なる暗号一時鍵で暗号化することができる。
この実施の形態における暗号通信装置100は、更に、復号鍵生成部217を有することを特徴とする。
復号鍵生成部217は、CPU911などの処理装置を用いて、検証乱数生成部231が生成した送信乱数に基づいて、復号一時鍵を生成することを特徴とする。
復号部212は、CPU911などの処理装置を用いて、受信部110が受信した受信暗号文を復号鍵生成部217が生成した復号一時鍵で復号して受信平文とすることを特徴とする。
この実施の形態における暗号通信装置100によれば、通信相手を検証するために他の暗号通信装置100に対して送信した送信乱数を、復号一時鍵の生成に使用するので、鍵生成用の乱数を別途送受信することなく、通信ごとに復号一時鍵を変えることができるという効果を奏する。
この実施の形態における暗号通信装置100は、更に、暗号鍵生成部239を有することを特徴とする。
暗号鍵生成部239は、CPU911などの処理装置を用いて、分割部213が取得した受信乱数に基づいて、暗号一時鍵を生成することを特徴とする。
暗号化部237は、CPU911などの処理装置を用いて、結合部234が生成した送信平文を暗号鍵生成部239が生成した暗号一時鍵で暗号化して送信暗号文とすることを特徴とする。
この実施の形態における暗号通信装置100によれば、他の暗号通信装置100が通信相手を検証するために送信し、暗号通信装置100が受信した受信乱数を使用して暗号一時鍵を生成するので、鍵生成用の乱数を別途送受信することなく、通信ごとに暗号一時鍵を変えることができるという効果を奏する。
この実施の形態における暗号通信装置100は、更に、暗号鍵生成部239を有することを特徴とする。
受信部110は、通信装置915を用いて、通信開始要求とともに他の暗号通信装置100が送信した暗号鍵乱数を受信することを特徴とする。
暗号鍵生成部239は、CPU911などの処理装置を用いて、受信部110が受信した暗号鍵乱数に基づいて、暗号一時鍵を生成することを特徴とする。
暗号化部237は、CPU911などの処理装置を用いて、結合部234が生成した送信平文を暗号鍵生成部239が生成した暗号一時鍵で暗号化して送信暗号文とすることを特徴とする。
この実施の形態における暗号通信装置100によれば、通信開始要求とともに暗号鍵乱数を受信し、受信した暗号鍵乱数に基づいて暗号一時鍵を生成するので、通信開始応答も、毎回異なる暗号一時鍵で暗号化することができ、攻撃者999に暗号解読の手がかりを与えないという効果を奏する。
この実施の形態における暗号通信装置100は、更に、鍵乱数生成部238と、復号鍵生成部217とを有することを特徴とする。
鍵乱数生成部238は、CPU911などの処理装置を用いて、乱数を生成して暗号鍵乱数とすることを特徴とする。
送信部120は、通信装置915を用いて、鍵乱数生成部238が生成した暗号鍵乱数を通信開始要求とともに他の暗号通信装置100に対して送信することを特徴とする。
復号鍵生成部217は、CPU911などの処理装置を用いて、鍵乱数生成部238が生成した暗号鍵乱数に基づいて、復号一時鍵を生成することを特徴とする。
復号部212は、CPU911などの処理装置を用いて、受信部110が受信した受信暗号文を復号鍵生成部217が生成した復号一時鍵で復号して受信平文とすることを特徴とする。
この実施の形態における暗号通信装置100によれば、生成した暗号鍵乱数を通信開始要求とともに送信し、送信した暗号鍵乱数に基づいて復号一時鍵を生成するので、他の暗号通信装置100が受信した暗号鍵乱数に基づいて生成した暗号一時鍵で暗号化した暗号文を正しく復号でき、復号一時鍵が毎回異なるので、攻撃者999に暗号解読の手がかりを与えないという効果を奏する。
以上説明した暗号通信装置100は、
接続手段(通信装置915・ネットワーク801)により接続されている2つ以上の暗号通信装置であり、暗号通信装置間で対応する秘密情報(暗号鍵・復号鍵)を持ち、認証と暗号通信をする暗号通信装置であって、以下の全ての機能を有する暗号通信装置である。
(1)発呼側(暗号通信装置100a)が通信開始を知らせる第1の送信データ(通信開始要求)と第1の鍵生成乱数(暗号鍵乱数)を平文または暗号文で送信する。
(2)着呼側(暗号通信装置100b)が発呼側の通信開始信号(通信開始要求)を受け、前記第1の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)から第1の一時鍵(暗号一時鍵)を生成する。第1の乱数(送信乱数)を生成し、前記第1の乱数と第1の応答(開始応答データ)とを連結(結合)し、前記第1の一時鍵で暗号化して第1の暗号文(送信暗号文)を生成し、第1の暗号文を発呼側に送信する。
(3)発呼側は前記第1の鍵生成乱数と発呼側の持つ秘密情報(復号鍵)から第1の一時鍵(復号一時鍵)を生成し、前記第1の暗号文(受信暗号文)を前記第1の一時鍵で復号し、前記第1の乱数(受信乱数)を取得し、乱数に対応する検証情報(送信検証情報)を生成する。前記第1の乱数と前記第1の乱数に対応する検証情報との一方または両方と発呼側の持つ秘密情報(暗号鍵)から第2の一時鍵(暗号一時鍵)を生成する。第2の乱数(送信乱数)と第2の送信データ(応答データ)を生成し、前記検証情報と第2の乱数と第2の送信データを連結して前記第2の一時鍵で暗号化して第2の暗号文(送信暗号文)を生成し、前記第2の暗号文を着呼側に送信する。
(4)着呼側は前記第1の乱数から検証情報を生成する。前記第1の乱数と前記第1の乱数に対応する検証情報との一方または両方と着呼側の持つ秘密情報から第2の一時鍵(復号一時鍵)を生成し、前記第2の暗号文(受信暗号文)を前記第2の一時鍵で復号し、第2の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第1の乱数から生成した検証情報とを比較し、一致すれば発呼側装置を認証する。
(5)着呼側は前記第2の暗号文の復号結果から取り出した前記第2の乱数(受信乱数)と前記第2の乱数に対応する検証情報との一方または両方と着呼側の持つ秘密情報とから第3の一時鍵(暗号一時鍵)を生成する。前記第2の暗号文の復号結果から取り出した前記第2の乱数から検証情報(送信検証情報)を生成し、新たに第3の乱数(送信乱数)と第2の送信データに対する第2の応答(応答データ)を生成し、前記検証情報と第3の乱数と第2の応答を連結して前記第3の一時鍵で暗号化して第3の暗号文(送信暗号文)を生成し、第3の暗号文を発呼側に送信する。
(6)発呼側は前記第2の乱数から検証情報を生成する。前記第2の乱数と前記第2の乱数に対応する検証情報との一方または両方と発呼側の持つ秘密情報から第3の一時鍵(復号一時鍵)を生成し、前記第3の暗号文(受信暗号文)を前記第3の一時鍵で復号し、第3の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第2の乱数から生成した検証情報とを比較し、一致すれば着呼側装置を認証する。
(7)発呼側は前記第3の暗号文の復号結果から取り出した前記第3の乱数と前記第3の乱数に対応する検証情報との一方または両方と着呼側の持つ秘密情報とから第4の一時鍵(暗号一時鍵)を生成する。前記第3の暗号文の復号結果から取り出した前記第3の乱数から検証情報(送信検証情報)を生成し、新たに第4の乱数(送信乱数)と第3の送信データ(応答データ)を生成し、前記検証情報と第4の乱数と第3の送信データを連結して前記第4の一時鍵で暗号化して第4の暗号文(送信暗号文)を生成し、前記第4の暗号文を着呼側に送信する。
以上説明した暗号通信装置100は、相互に認証しあった後も、同様の認証と暗号通信を続けることを特徴とする暗号通信装置である。
以上説明した暗号通信装置100が行う暗号通信方法は、
接続手段(通信装置915・ネットワーク801)により接続されている2つ以上の暗号通信装置100において、暗号通信装置間で対応する秘密情報(暗号鍵・復号鍵)を持ち、認証と暗号通信をする暗号通信方法であって、以下の全ての機能を有する暗号通信方法である。
(1)発呼側(暗号通信装置100a)が通信開始を知らせる第1の送信データ(通信開始要求)と第1の鍵生成乱数(暗号鍵乱数)を平文または暗号文で送信する。
(2)着呼側(暗号通信装置100b)が発呼側の通信開始信号(通信開始要求)を受け、前記第1の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)から第1の一時鍵(暗号一時鍵)を生成する。第1の乱数(送信乱数)を生成し、前記第1の乱数と第1の応答(開始応答データ)とを連結(結合)し、前記第1の一時鍵で暗号化して第1の暗号文(送信暗号文)を生成し、第1の暗号文を発呼側に送信する。
(3)発呼側は前記第1の鍵生成乱数と発呼側の持つ秘密情報(復号鍵)から第1の一時鍵(復号一時鍵)を生成し、前記第1の暗号文(受信暗号文)を前記第1の一時鍵で復号し、前記第1の乱数(受信乱数)を取得し、乱数に対応する検証情報(送信検証情報)を生成する。前記第1の乱数と前記第1の乱数に対応する検証情報との一方または両方と発呼側の持つ秘密情報(暗号鍵)から第2の一時鍵(暗号一時鍵)を生成する。第2の乱数(送信乱数)と第2の送信データ(応答データ)を生成し、前記検証情報と第2の乱数と第2の送信データを連結して前記第2の一時鍵で暗号化して第2の暗号文(送信暗号文)を生成し、前記第2の暗号文を着呼側に送信する。
(4)着呼側は前記第1の乱数から検証情報を生成する。前記第1の乱数と前記第1の乱数に対応する検証情報との一方または両方と着呼側の持つ秘密情報(復号鍵)から第2の一時鍵(復号一時鍵)を生成し、前記第2の暗号文(受信暗号文)を前記第2の一時鍵で復号し、第2の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第1の乱数から生成した検証情報とを比較し、一致すれば発呼側装置を認証する。
(5)着呼側は前記第2の暗号文の復号結果から取り出した前記第2の乱数(受信乱数)と前記第2の乱数に対応する検証情報(送信検証情報)との一方または両方と着呼側の持つ秘密情報とから第3の一時鍵(暗号一時鍵)を生成する。前記第2の暗号文の復号結果から取り出した前記第2の乱数から検証情報(送信検証情報)を生成し、新たに第3の乱数(送信乱数)と第2の送信データに対する第2の応答(応答データ)を生成し、前記検証情報と第3の乱数と第2の応答を連結して前記第3の一時鍵で暗号化して第3の暗号文(送信暗号文)を生成し、第3の暗号文を発呼側に送信する。
(6)発呼側は前記第2の乱数から検証情報を生成する。前記第2の乱数と前記第2の乱数に対応する検証情報との一方または両方と発呼側の持つ秘密情報から第3の一時鍵(復号一時鍵)を生成し、前記第3の暗号文(受信暗号文)を前記第3の一時鍵で復号し、第3の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第2の乱数から生成した検証情報とを比較し、一致すれば着呼側装置を認証する。
(7)発呼側は前記第3の暗号文の復号結果から取り出した前記第3の乱数(受信乱数)と前記第3の乱数に対応する検証情報(送信検証情報)との一方または両方と着呼側の持つ秘密情報とから第4の一時鍵(暗号一時鍵)を生成する。前記第3の暗号文の復号結果から取り出した前記第3の乱数から検証情報(送信検証情報)を生成し、新たに第4の乱数(送信乱数)と第3の送信データ(応答データ)を生成し、前記検証情報と第4の乱数と第3の送信データを連結して前記第4の一時鍵で暗号化して第4の暗号文(送信暗号文)を生成し、前記第4の暗号文を着呼側に送信する。
以上説明した暗号通信方法は、相互に認証しあった後も、同様の認証と暗号通信を続けることを特徴とする暗号通信方法である。
以上説明した暗号通信装置100としてコンピュータを機能させる暗号通信プログラムは、
接続手段(通信装置915・ネットワーク801)により接続されている2つ以上の暗号通信装置100において、暗号通信装置間で対応する秘密情報(暗号鍵・復号鍵)を持ち、認証と暗号通信をする暗号通信プログラムであって、以下の全ての機能を有する暗号通信プログラムである。
(1)発呼側(暗号通信装置100a)が通信開始を知らせる第1の送信データ(通信開始要求)と第1の鍵生成乱数(暗号鍵乱数)を平文または暗号文で送信する。
(2)着呼側(暗号通信装置100b)が発呼側の通信開始信号(通信開始要求)を受け、前記第1の鍵生成乱数と着呼側の持つ秘密情報(暗号鍵)から第1の一時鍵(暗号一時鍵)を生成する。第1の乱数(送信乱数)を生成し、前記第1の乱数と第1の応答(開始応答データ)とを連結(結合)し、前記第1の一時鍵で暗号化して第1の暗号文(送信暗号文)を生成し、第1の暗号文を発呼側に送信する。
(3)発呼側は前記第1の鍵生成乱数と発呼側の持つ秘密情報(復号鍵)から第1の一時鍵(復号一時鍵)を生成し、前記第1の暗号文を前記第1の一時鍵で復号し、前記第1の乱数(受信乱数)を取得し、乱数に対応する検証情報(送信検証情報)を生成する。前記第1の乱数と前記第1の乱数に対応する検証情報との一方または両方と発呼側の持つ秘密情報(暗号鍵)から第2の一時鍵(暗号一時鍵)を生成する。第2の乱数(送信乱数)と第2の送信データ(応答データ)を生成し、前記検証情報と第2の乱数と第2の送信データを連結して前記第2の一時鍵で暗号化して第2の暗号文(送信暗号文)を生成し、前記第2の暗号文を着呼側に送信する。
(4)着呼側は前記第1の乱数から検証情報を生成する。前記第1の乱数と前記第1の乱数に対応する検証情報との一方または両方と着呼側の持つ秘密情報(復号鍵)から第2の一時鍵(復号一時鍵)を生成し、前記第2の暗号文を前記第2の一時鍵で復号し、第2の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第1の乱数から生成した検証情報とを比較し、一致すれば発呼側装置を認証する。
(5)着呼側は前記第2の暗号文の復号結果から取り出した前記第2の乱数と前記第2の乱数に対応する検証情報(送信検証情報)との一方または両方と着呼側の持つ秘密情報(暗号鍵)とから第3の一時鍵(暗号一時鍵)を生成する。前記第2の暗号文の復号結果から取り出した前記第2の乱数から検証情報(送信検証情報)を生成し、新たに第3の乱数(送信乱数)と第2の送信データに対する第2の応答(応答データ)を生成し、前記検証情報と第3の乱数と第2の応答を連結して前記第3の一時鍵で暗号化して第3の暗号文(送信暗号文)を生成し、第3の暗号文を発呼側に送信する。
(6)発呼側は前記第2の乱数から検証情報を生成する。前記第2の乱数と前記第2の乱数に対応する検証情報との一方または両方と発呼側の持つ秘密情報(復号鍵)から第3の一時鍵(復号一時鍵)を生成し、前記第3の暗号文を前記第3の一時鍵で復号し、第3の暗号文の復号結果(受信平文)から取り出した検証情報(受信検証情報)と、前記第2の乱数から生成した検証情報とを比較し、一致すれば着呼側装置を認証する。
(7)発呼側は前記第3の暗号文の復号結果から取り出した前記第3の乱数(受信乱数)と前記第3の乱数に対応する検証情報(送信検証情報)との一方または両方と着呼側の持つ秘密情報(暗号鍵)とから第4の一時鍵(暗号一時鍵)を生成する。前記第3の暗号文の復号結果から取り出した前記第3の乱数から検証情報(送信検証情報)を生成し、新たに第4の乱数(送信乱数)と第3の送信データ(応答データ)を生成し、前記検証情報と第4の乱数と第3の送信データを連結して前記第4の一時鍵で暗号化して第4の暗号文(送信暗号文)を生成し、前記第4の暗号文を着呼側に送信する。
以上説明した暗号通信プログラムは、相互に認証しあった後も、同様の認証と暗号通信を続けることを特徴とする暗号通信プログラムである、
以上説明した暗号通信プログラムは、フレキシブルディスクなどの記憶媒体に格納され、コンピュータが読み出して実行するものであってもよい。
以上説明した暗号通信装置100によれば、一時鍵を生成するために鍵生成用の乱数をつける必要がないので、通信するデータサイズが増加せず、通信コストを削減し、応答速度を速くすることができる。
実施の形態1における暗号通信システム800の全体構成の一例を示すシステム構成図。 実施の形態1における暗号通信装置100の外観の一例を示す図。 実施の形態1における暗号通信装置100のハードウェア資源の一例を示す図。 実施の形態1における暗号通信装置100の機能ブロックの構成の一例を示すブロック構成図。 実施の形態1における受信平文510のデータ構造の一例を示す図。 実施の形態1における受信平文510のデータ構造の別の例を示す図。 実施の形態1における結合部234が生成する送信平文540のデータ構造の一例を示す図。 実施の形態1における暗号通信装置100aと暗号通信装置100bとが暗号通信をする通信の流れの一例を示すシーケンス図。 実施の形態1における暗号通信装置100が通信開始を要求する開始要求処理の流れの一例を示すフローチャート図。 実施の形態1における暗号通信装置100が通信開始要求を受信した場合に実行する開始応答処理の流れの一例を示すフローチャート図。 実施の形態1における暗号通信装置100が通信開始応答または通信暗号文を受信した場合に実行する暗号文受信処理の流れの一例を示すフローチャート図。 実施の形態1における暗号通信装置100が送信暗号文を送信する場合に実行する暗号文送信処理の流れの一例を示すフローチャート図。 実施の形態2における暗号通信装置100の機能ブロックの構成の一例を示すブロック構成図。 実施の形態2におけ受信部110が受信するデータ550の構成の一例を示す図。 実施の形態2における暗号通信装置100が通信開始要求を受信した場合に実行する開始応答処理の流れの一例を示すフローチャート図。 実施の形態2における暗号通信装置100が通信開始応答または通信暗号文を受信した場合に実行する暗号文受信処理の流れの一例を示すフローチャート図。 実施の形態2における暗号通信装置100が送信暗号文を送信する場合に実行する暗号文送信処理の流れの一例を示すフローチャート図。 実施の形態2における暗号通信装置100aと暗号通信装置100bとが暗号通信をする通信の流れの一例を示すシーケンス図。 実施の形態3における暗号通信装置100の機能ブロックの構成の一例を示すブロック構成図。 実施の形態3における受信部110が受信するするデータ560の構成の一例を示す図。 実施の形態3における暗号通信装置100が通信開始を要求する開始要求処理の流れの一例を示すフローチャート図。 実施の形態3における暗号通信装置100が通信開始要求を受信した場合に実行する開始応答処理の流れの一例を示すフローチャート図。 実施の形態3における暗号通信装置100が通信開始応答または通信暗号文を受信した場合に実行する暗号文受信処理の流れの一例を示すフローチャート図。 実施の形態3における暗号通信装置100が送信暗号文を送信する場合に実行する暗号文送信処理の流れの一例を示すフローチャート図。 実施の形態3における暗号通信装置100aと暗号通信装置100bとが暗号通信をする通信の流れの一例を示すシーケンス図。
符号の説明
100 暗号通信装置、110 受信部、120 送信部、130 データ処理部、200 暗号処理部、211 復号鍵記憶部、212 復号部、213 分割部、214 受信検証生成部、215 検証部、216 データ出力部、217 復号鍵生成部、221 受信乱数記憶部、222 送信乱数記憶部、231 検証乱数生成部、232 送信検証生成部、233 データ入力部、234 結合部、235 開始乱数生成部、236 暗号鍵記憶部、237 暗号化部、238 鍵乱数生成部、239 暗号鍵生成部、510 受信平文、511,541 送信検証情報、512,542 送信乱数、513,543 送信データ、521 受信検証情報、522 受信乱数、523 受信データ、540 送信平文、550,560 データ、551,561 暗号鍵乱数、552,562 送信暗号文、553,563,601 通信開始要求、602 通信開始応答、603〜606 通信暗号文、800 暗号通信システム、801 ネットワーク、901 表示装置、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ装置、907 スキャナ装置、910 システムユニット、911 CPU、912 バス、913 ROM、914 RAM、915 通信装置、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群、931 電話器、932 ファクシミリ機、940 インターネット、941 ゲートウェイ、942 LAN、999 攻撃者。

Claims (23)

  1. 情報を処理する処理装置と、他の暗号通信装置と通信する通信装置と、データ入力部と、検証乱数生成部と、結合部と、暗号化部と、送信部と、受信部と、復号部と、分割部と、検証部と、データ出力部とを有し、
    上記データ入力部は、上記処理装置を用いて、他の暗号通信装置に対して送信すべきデータを入力して送信データとし、
    上記検証乱数生成部は、上記処理装置を用いて、乱数を生成して送信乱数とし、
    上記結合部は、上記処理装置を用いて、上記検証乱数生成部が生成した送信乱数と上記データ入力部が入力した送信データとを含むデータを生成して送信平文とし、
    上記暗号化部は、上記処理装置を用いて、上記結合部が生成した送信平文を暗号化して送信暗号文とし、
    上記送信部は、上記通信装置を用いて、上記暗号化部が暗号化した送信暗号文を上記他の暗号通信装置に対して送信し、
    上記受信部は、上記通信装置を用いて、上記送信部が送信した送信暗号文に対する応答として上記他の暗号通信装置が送信したデータを受信して受信暗号文とし、
    上記復号部は、上記処理装置を用いて、上記受信部が受信した受信暗号文を復号して受信平文とし、
    上記分割部は、上記処理装置を用いて、上記復号部が復号した受信平文に含まれる送信検証情報を取得して受信検証情報とし、上記復号部が復号した受信平文に含まれる送信データを取得して受信データとし、
    上記検証部は、上記処理装置を用いて、上記分割部が取得した受信検証情報と上記検証乱数生成部が生成した送信乱数とに基づいて、検証成功か検証失敗かを判断し、
    上記データ出力部は、上記検証部が検証成功と判断した場合に、上記処理装置を用いて、上記分割部が取得した受信データを出力する
    ことを特徴とする暗号通信装置。
  2. 上記暗号通信装置は、
    他の暗号通信装置との間で暗号通信をする場合に、上記他の暗号通信装置を認証せずに通信を開始し、
    通信を開始した後、上記検証部が検証失敗と判断した場合に、通信を終了する
    ことを特徴とする請求項1に記載の暗号通信装置。
  3. 上記暗号通信装置は、
    他の暗号通信装置との間で暗号通信をする場合に、上記他の暗号通信装置を認証せずに通信を開始し、
    通信を開始した後、上記他の暗号通信装置に対して送信するすべてのデータに送信検証情報と送信乱数とを含めて送信し、
    通信を開始した後、上記他の暗号通信装置から受信したすべてのデータについて、上記検証部が検証成功か検証失敗かを判断する
    ことを特徴とする請求項1に記載の暗号通信装置。
  4. 上記検証部は、上記処理装置を用いて、上記分割部が取得した受信検証情報と上記検証乱数生成部が生成した送信乱数とを比較して、一致する場合に検証成功と判断し、一致しない場合に検証失敗と判断する
    ことを特徴とする請求項1に記載の暗号通信装置。
  5. 上記暗号通信装置は、更に、受信検証生成部を有し、
    上記受信検証生成部は、上記処理装置を用いて、上記検証乱数生成部が生成した送信乱数に基づくデータを生成して検証情報とし、
    上記検証部は、上記処理装置を用いて、上記分割部が取得した受信検証情報と上記受信検証生成部が生成した検証情報とを比較して、一致する場合に検証成功と判断し、一致しない場合に検証失敗と判断する
    ことを特徴とする請求項1に記載の暗号通信装置。
  6. 上記分割部は、更に、上記処理装置を用いて、上記復号部が復号した受信平文に含まれる送信乱数を取得して受信乱数とし、
    上記データ入力部は、上記処理装置を用いて、上記受信部が受信した受信暗号文に対する応答として上記他の暗号通信装置に対して送信すべきデータを入力して応答データとし、
    上記結合部は、上記分割部が取得した受信乱数を送信検証情報とし、上記データ入力部が入力した応答データを送信データとして、上記処理装置を用いて、上記送信検証情報と上記検証乱数生成部が生成した送信乱数と上記送信データとを含むデータを生成して送信平文とする
    ことを特徴とする請求項1に記載の暗号通信装置。
  7. 上記暗号通信装置は、更に、送信検証生成部を有し、
    上記分割部は、上記処理装置を用いて、上記復号部が復号した受信平文に含まれる送信乱数を取得して受信乱数とし、
    上記データ入力部は、上記処理装置を用いて、上記受信部が受信した受信暗号文に対する応答として上記他の暗号通信装置に対して送信すべきデータを入力して応答データとし、
    上記送信検証生成部は、上記処理装置を用いて、上記分割部が取得した受信乱数に基づくデータを生成して送信検証情報とし、
    上記結合部は、上記データ入力部が入力した応答データを送信データとして、上記処理装置を用いて、上記送信検証生成部が生成した送信検証情報と上記検証乱数生成部が生成した送信乱数と上記送信データとを含むデータを生成して送信平文とする
    ことを特徴とする請求項1に記載の暗号通信装置。
  8. 上記暗号通信装置は、更に、開始乱数生成部を有し、
    上記受信部は、上記通信装置を用いて、他の暗号通信装置から通信の開始を要求するデータを受信して通信開始要求とし、
    上記データ出力部は、上記処理装置を用いて、上記受信部が受信した通信開始要求を出力し、
    上記データ入力部は、上記処理装置を用いて、上記受信部が受信した通信開始要求に対する応答として上記他の暗号通信装置に対して送信すべきデータを入力して開始応答データとし、
    上記開始乱数生成部は、上記処理装置を用いて、乱数を生成して開始乱数とし、
    上記結合部は、上記開始乱数生成部が生成した開始乱数を送信検証情報とし、上記データ入力部が入力した開始応答データを送信データとして、上記処理装置を用いて、上記送信検証情報と上記検証乱数生成部が生成した送信乱数と上記送信データとを含むデータを生成して送信平文とする
    ことを特徴とする請求項1に記載の暗号通信装置。
  9. 上記データ入力部は、上記処理装置を用いて、他の暗号通信装置に対して通信の開始を要求するデータを入力して通信開始要求とし、
    上記送信部は、上記通信装置を用いて、上記データ入力部が入力した通信開始要求を上記他の暗号通信装置に対して送信し、
    上記受信部は、上記通信装置を用いて、上記送信部が送信した通信開始要求に対する応答として上記他の暗号通信装置が送信したデータを受信して開始暗号文とし、
    上記復号部は、上記処理装置を用いて、上記受信部が受信した開始暗号文を復号して開始平文とし、
    上記分割部は、上記処理装置を用いて、上記復号部が復号した開始平文に含まれる送信乱数を取得して受信乱数とし、上記復号部が復号した開始平文に含まれる送信データを取得して受信開始データとし、
    上記データ出力部は、上記処理装置を用いて、上記分割部が取得した受信開始データを出力する
    ことを特徴とする請求項1に記載の暗号通信装置。
  10. 上記暗号通信装置は、更に、復号鍵生成部を有し、
    上記受信部は、上記通信装置を用いて、上記受信暗号文とともに上記他の暗号通信装置が送信した暗号鍵乱数を受信して復号鍵乱数とし、
    上記復号鍵生成部は、上記処理装置を用いて、上記受信部が受信した復号鍵乱数に基づいて、復号一時鍵を生成し、
    上記復号部は、上記処理装置を用いて、上記受信部が受信した受信暗号文を上記復号鍵生成部が生成した復号一時鍵で復号して受信平文とする
    ことを特徴とする請求項1に記載の暗号通信装置。
  11. 上記暗号通信装置は、更に、鍵乱数生成部と、暗号鍵生成部とを有し、
    上記鍵乱数生成部は、上記処理装置を用いて、乱数を生成して暗号鍵乱数とし、
    上記暗号鍵生成部は、上記処理装置を用いて、上記鍵乱数生成部が生成した暗号鍵乱数に基づいて、暗号一時鍵を生成し、
    上記暗号化部は、上記処理装置を用いて、上記結合部が生成した送信平文を上記暗号鍵生成部が生成した暗号一時鍵で暗号化して送信暗号文とし、
    上記送信部は、上記通信装置を用いて、上記鍵乱数生成部が生成した暗号鍵乱数を上記暗号化部が暗号化した送信暗号文とともに上記他の暗号通信装置に対して送信する
    ことを特徴とする請求項1に記載の暗号通信装置。
  12. 上記暗号通信装置は、更に、復号鍵生成部を有し、
    上記復号鍵生成部は、上記処理装置を用いて、上記検証乱数生成部が生成した送信乱数に基づいて、復号一時鍵を生成し、
    上記復号部は、上記処理装置を用いて、上記受信部が受信した受信暗号文を上記復号鍵生成部が生成した復号一時鍵で復号して受信平文とする
    ことを特徴とする請求項1に記載の暗号通信装置。
  13. 上記暗号通信装置は、更に、暗号鍵生成部を有し、
    上記暗号鍵生成部は、上記処理装置を用いて、上記分割部が取得した受信乱数に基づいて、暗号一時鍵を生成し、
    上記暗号化部は、上記処理装置を用いて、上記結合部が生成した送信平文を上記暗号鍵生成部が生成した暗号一時鍵で暗号化して送信暗号文とする
    ことを特徴とする請求項6または請求項7に記載の暗号通信装置。
  14. 上記暗号通信装置は、更に、暗号鍵生成部を有し、
    上記受信部は、上記通信装置を用いて、上記通信開始要求とともに上記他の暗号通信装置が送信した暗号鍵乱数を受信し、
    上記暗号鍵生成部は、上記処理装置を用いて、上記受信部が受信した暗号鍵乱数に基づいて、暗号一時鍵を生成し、
    上記暗号化部は、上記処理装置を用いて、上記結合部が生成した送信平文を上記暗号鍵生成部が生成した暗号一時鍵で暗号化して送信暗号文とする
    ことを特徴とする請求項8に記載の暗号通信装置。
  15. 上記暗号通信装置は、更に、鍵乱数生成部と、復号鍵生成部とを有し、
    上記鍵乱数生成部は、上記処理装置を用いて、乱数を生成して暗号鍵乱数とし、
    上記送信部は、上記通信装置を用いて、上記鍵乱数生成部が生成した暗号鍵乱数を上記通信開始要求とともに上記他の暗号通信装置に対して送信し、
    上記復号鍵生成部は、上記処理装置を用いて、上記鍵乱数生成部が生成した暗号鍵乱数に基づいて、復号一時鍵を生成し、
    上記復号部は、上記処理装置を用いて。上記受信部が受信した受信暗号文を上記復号鍵生成部が生成した復号一時鍵で復号して受信平文とする
    ことを特徴とする請求項9に記載の暗号通信装置。
  16. 上記結合部は、上記処理装置を用いて、上記送信検証情報と上記送信乱数と上記送信データとを結合して送信平文を生成することを特徴とする請求項6乃至請求項8のいずれかに記載の暗号通信装置。
  17. 上記結合部は、上記処理装置を用いて、上記送信検証情報を一番前に結合することを特徴とする請求項16に記載の暗号通信装置。
  18. 上記結合部は、上記処理装置を用いて、上記送信乱数を一番前に結合することを特徴とする請求項16に記載の暗号通信装置。
  19. 請求項1に記載の暗号通信装置を複数有し、上記複数の暗号通信装置が互いに暗号通信することを特徴とする暗号通信システム。
  20. 情報を処理する処理装置と、他の暗号通信装置と通信する通信装置とを有する暗号通信装置が、上記他の暗号通信装置と暗号通信をする暗号通信方法において、
    上記処理装置が、他の暗号通信装置に対して送信すべきデータを取得して送信データとし、
    上記処理装置が、乱数を生成して送信乱数とし、
    上記処理装置が、生成した送信乱数と取得した送信データとを含むデータを生成して送信平文とし、
    上記処理装置が、生成した送信平文を暗号化して送信暗号文とし、
    上記通信装置が、暗号化した送信暗号文を送信し、
    上記通信装置が、送信した送信暗号文に対する応答として上記他の暗号通信装置が送信したデータを受信して受信暗号文とし、
    上記処理装置が、受信した受信暗号文を復号して受信平文とし、
    上記処理装置が、復号した受信平文に含まれる送信検証情報を取得して受信検証情報とし、復号した受信平文に含まれる送信データを取得して受信データとし、
    上記処理装置が、取得した受信検証情報と生成した送信乱数とに基づいて、検証成功か検証失敗かを判断し、
    検証成功と判断した場合に、上記処理装置が、取得した受信データを出力する
    ことを特徴とする暗号通信方法。
  21. 第一の暗号通信装置と第二の暗号通信装置とが暗号通信をする暗号通信方法において、
    上記第一の暗号通信装置が、上記第二の暗号通信装置に対して通信の開始を要求する通信開始要求を送信し、
    上記第二の暗号通信装置が、上記第一の暗号通信装置が送信した通信開始要求を受信し、
    上記第二の暗号通信装置が、乱数を生成して第一の送信乱数とし、
    上記第二の暗号通信装置が、受信した通信開始要求に対する応答として上記第一の暗号通信装置に対して送信すべきデータを取得して開始応答データとし、
    上記第二の暗号通信装置が、取得した開始応答データを第一の送信データとして、生成した第一の送信乱数と上記第一の送信データとを含むデータを生成して第一の送信平文とし、
    上記第二の暗号通信装置が、生成した第一の送信平文を暗号化して第一の送信暗号文とし、
    上記第二の暗号通信装置が、暗号化した第一の送信暗号文を上記第一の暗号通信装置に対して送信し、
    上記第一の暗号通信装置が、上記第二の暗号通信装置が送信した第一の送信暗号文を受信して第一の受信暗号文とし、
    上記第一の暗号通信装置が、受信した第一の受信暗号文を復号して第一の受信平文とし、
    上記第一の暗号通信装置が、復号した第一の受信平文に含まれる第一の送信乱数を取得して第一の受信乱数とし、
    上記第一の暗号通信装置が、復号した第一の受信平文に含まれる第一の送信データを取得して受信開始データとし、
    上記第一の暗号通信装置が、取得した第一の受信乱数に基づくデータを生成して第二の送信検証情報とし、
    上記第一の暗号通信装置が、乱数を生成して第二の送信乱数とし、
    上記第一の暗号通信装置が、取得した受信開始データに対する応答として上記第二の暗号通信装置に対して送信すべきデータを取得して第二の送信データとし、
    上記第一の暗号通信装置が、生成した第二の送信検証情報と生成した第二の送信乱数と取得した第二の送信データとを含むデータを生成して第二の送信平文とし、
    上記第一の暗号通信装置が、生成した第二の送信平文を暗号化して第二の送信暗号文とし、
    上記第一の暗号通信装置が、暗号化した第二の送信暗号文を上記第二の暗号通信装置に対して送信し、
    上記第二の暗号通信装置が、上記第一の暗号通信装置が送信した第二の送信暗号文を受信して第二の受信暗号文とし、
    上記第二の暗号通信装置が、受信した第二の受信暗号文を復号して第二の受信平文とし、
    上記第二の暗号通信装置が、復号した第二の受信平文に含まれる第二の送信検証情報を取得して第二の受信検証情報とし、
    上記第二の暗号通信装置が、生成した第一の送信乱数と取得した第二の受信検証情報とに基づいて、第一の検証成功か第一の検証失敗かを判断し、
    第一の検証失敗と判断した場合、上記第二の暗号通信装置が、上記第一の暗号通信装置との間の暗号通信を終了し、
    第一の検証成功と判断した場合、
    上記第二の暗号通信装置が、復号した第二の受信平文に含まれる第二の送信乱数を取得して第二の受信乱数とし、
    上記第二の暗号通信装置が、復号した第二の受信平文に含まれる第二の送信データを取得して第二の受信データとし、
    上記第二の暗号通信装置が、取得した第二の受信乱数に基づくデータを生成して第三の送信検証情報とし、
    上記第二の暗号通信装置が、乱数を生成して第三の送信乱数とし、
    上記第二の暗号通信装置が、取得した第二の受信データに対する応答として上記第一の暗号通信装置に対して送信すべきデータを取得して第三の送信データとし、
    上記第二の暗号通信装置が、生成した第三の送信検証情報と生成した第三の送信乱数と生成した第三の送信データとを含むデータを生成して第三の送信平文とし、
    上記第二の暗号通信装置が、生成した第三の送信平文を暗号化して第三の送信暗号文とし、
    上記第二の暗号通信装置が、暗号化した第三の送信暗号文を上記第一の暗号通信装置に対して送信し、
    上記第一の暗号通信装置が、上記第二の暗号通信装置が送信した第三の送信暗号文を受信して第三の受信暗号文とし、
    上記第一の暗号通信装置が、受信した第三の受信暗号文を復号して第三の受信平文とし、
    上記第一の暗号通信装置が、復号した第三の受信平文に含まれる第三の送信検証情報を取得して第三の受信検証情報とし、
    上記第一の暗号通信装置が、生成した第二の送信乱数と取得した第三の受信検証情報とに基づいて、第二の検証成功か第二の検証失敗かを判断し、
    第二の検証失敗と判断した場合、上記第一の暗号通信装置が、上記第二の暗号通信装置との間の暗号通信を終了する
    ことを特徴とする暗号通信方法。
  22. 上記暗号通信方法は、更に、第二の検証成功と判断した場合、
    上記第一の暗号通信装置が、復号した第三の受信平文に含まれる第三の送信乱数を取得して第三の受信乱数とし、
    上記第一の暗号通信装置が、復号した第三の受信平文に含まれる第三の送信データを取得して第三の受信データとし、
    上記第一の暗号通信装置が、取得した第三の受信乱数に基づくデータを生成して第二の送信検証情報とし、
    上記第一の暗号通信装置が、乱数を生成して第二の送信乱数とし、
    上記第一の暗号通信装置が、取得した第三の受信データに対する応答として上記第二の暗号通信装置に対して送信すべきデータを取得して第二の送信データとし、
    上記第一の暗号通信装置が、生成した第二の送信検証情報と生成した第二の送信乱数と取得した第二の送信データとを含むデータを生成して第二の送信平文とし、
    上記第一の暗号通信装置が、生成した第二の送信平文を暗号化して第二の送信暗号文とし、
    上記第一の暗号通信装置が、暗号化した第二の送信暗号文を上記第二の暗号通信装置に対して送信する
    ことを特徴とする請求項21に記載の暗号通信方法。
  23. 情報を処理する処理装置と、他の暗号通信装置と通信する通信装置とを有するコンピュータを、請求項1に記載の暗号通信装置として機能させることを特徴とするプログラム。
JP2006309149A 2006-11-15 2006-11-15 暗号通信装置及び暗号通信システム及び暗号通信方法及びプログラム Pending JP2008124987A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006309149A JP2008124987A (ja) 2006-11-15 2006-11-15 暗号通信装置及び暗号通信システム及び暗号通信方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006309149A JP2008124987A (ja) 2006-11-15 2006-11-15 暗号通信装置及び暗号通信システム及び暗号通信方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2008124987A true JP2008124987A (ja) 2008-05-29

Family

ID=39509255

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006309149A Pending JP2008124987A (ja) 2006-11-15 2006-11-15 暗号通信装置及び暗号通信システム及び暗号通信方法及びプログラム

Country Status (1)

Country Link
JP (1) JP2008124987A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9143326B2 (en) 2012-03-29 2015-09-22 International Business Machines Corporation Method and system for encrypting data
JP2017129779A (ja) * 2016-01-21 2017-07-27 学校法人東京電機大学 暗号生成装置、データ伝送システム、暗号生成方法及びデータ伝送方法
CN110706007A (zh) * 2019-10-11 2020-01-17 工业和信息化部装备工业发展中心 一种数据防伪方法及产品凭证核验方法
CN114745207A (zh) * 2022-06-10 2022-07-12 国汽智控(北京)科技有限公司 数据传输方法、装置、设备、计算机可读存储介质及产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0193230A (ja) * 1987-10-02 1989-04-12 Nippon Telegr & Teleph Corp <Ntt> 可変の秘密情報の共有方式
JP2005012466A (ja) * 2003-06-18 2005-01-13 Denso Corp メッセージ認証方法及びメッセージ認証システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0193230A (ja) * 1987-10-02 1989-04-12 Nippon Telegr & Teleph Corp <Ntt> 可変の秘密情報の共有方式
JP2005012466A (ja) * 2003-06-18 2005-01-13 Denso Corp メッセージ認証方法及びメッセージ認証システム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9143326B2 (en) 2012-03-29 2015-09-22 International Business Machines Corporation Method and system for encrypting data
US9344274B2 (en) 2012-03-29 2016-05-17 International Business Machines Corporation Method and system for encrypting data
US9634827B2 (en) 2012-03-29 2017-04-25 International Business Machines Corporation Encrypting data
US10396977B2 (en) 2012-03-29 2019-08-27 International Business Machines Corporation Encrypting data
US11539505B2 (en) 2012-03-29 2022-12-27 Kyndryl, Inc. Encrypting data
JP2017129779A (ja) * 2016-01-21 2017-07-27 学校法人東京電機大学 暗号生成装置、データ伝送システム、暗号生成方法及びデータ伝送方法
CN110706007A (zh) * 2019-10-11 2020-01-17 工业和信息化部装备工业发展中心 一种数据防伪方法及产品凭证核验方法
CN110706007B (zh) * 2019-10-11 2023-04-07 工业和信息化部装备工业发展中心 一种数据防伪方法及产品凭证核验方法
CN114745207A (zh) * 2022-06-10 2022-07-12 国汽智控(北京)科技有限公司 数据传输方法、装置、设备、计算机可读存储介质及产品

Similar Documents

Publication Publication Date Title
US8719952B1 (en) Systems and methods using passwords for secure storage of private keys on mobile devices
JP4681010B2 (ja) 認証システム及び認証方法
AU2003203712B2 (en) Methods for remotely changing a communications password
US8209744B2 (en) Mobile device assisted secure computer network communication
US20120284506A1 (en) Methods and apparatus for preventing crimeware attacks
JP5845393B2 (ja) 暗号通信装置および暗号通信システム
US8601267B2 (en) Establishing a secured communication session
US20180091487A1 (en) Electronic device, server and communication system for securely transmitting information
US20120131331A1 (en) System And Method For End To End Encryption
WO2003094423A1 (en) System and method for storage and retrieval of a cryptographic secret from a plurality of network enabled clients
KR20110009222A (ko) 토큰과 검증자 사이의 인증을 위한 네크워크 헬퍼
CN110868291B (zh) 一种数据加密传输方法、装置、系统及存储介质
KR100860573B1 (ko) 사용자 인증 방법
JP6627043B2 (ja) Ssl通信システム、クライアント、サーバ、ssl通信方法、コンピュータプログラム
CN114244508A (zh) 数据加密方法、装置、设备及存储介质
US20220247729A1 (en) Message transmitting system with hardware security module
JP2008124987A (ja) 暗号通信装置及び暗号通信システム及び暗号通信方法及びプログラム
TW200803392A (en) Method, device, server arrangement, system and computer program products for securely storing data in a portable device
JP2021111925A (ja) 電子署名システム
JP2009031895A (ja) 認証システム、サーバ装置、端末装置及びプログラム
WO2012166669A2 (en) Methods and apparatus for preventing crimeware attacks
TWI828558B (zh) 訊息傳輸系統以及應用其中之使用者裝置與資訊安全硬體模組
CN109981678B (zh) 一种信息同步方法及装置
KR100744603B1 (ko) 생체 데이터를 이용한 패킷 레벨 사용자 인증 방법
JP5455771B2 (ja) 情報処理装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120223

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120403