IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧

特許7596239通信装置、通信方法、通信システムおよびプログラム
<>
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図1
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図2
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図3
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図4
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図5
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図6
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図7
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図8
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図9
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図10
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図11
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図12
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図13
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図14
  • 特許-通信装置、通信方法、通信システムおよびプログラム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-29
(45)【発行日】2024-12-09
(54)【発明の名称】通信装置、通信方法、通信システムおよびプログラム
(51)【国際特許分類】
   H04L 9/36 20060101AFI20241202BHJP
   H04L 9/08 20060101ALI20241202BHJP
【FI】
H04L9/36
H04L9/08 C
【請求項の数】 11
(21)【出願番号】P 2021150317
(22)【出願日】2021-09-15
(65)【公開番号】P2023042903
(43)【公開日】2023-03-28
【審査請求日】2023-03-10
【前置審査】
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】田中 康之
(72)【発明者】
【氏名】谷澤 佳道
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2014-103514(JP,A)
【文献】特開2000-261486(JP,A)
【文献】特表2020-501413(JP,A)
【文献】米国特許第06266704(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/40
(57)【特許請求の範囲】
【請求項1】
複数の外部通信装置との間で暗号鍵を共有する鍵共有部と、
前記暗号鍵の残量に基づいて送信データを送信する経路を決定する決定部と、
前記経路に含まれる1以上の前記外部通信装置ごとに、前記外部通信装置を送信先として設定するヘッダを前記外部通信装置との間で共有する前記暗号鍵で暗号化する暗号化部と、
前記送信データと、暗号化された1以上の前記ヘッダと、を含むパケットを生成するパケット生成部と、
生成された前記パケットを前記経路に従い送信する送信部と、
前記外部通信装置が前記送信データを受信する受信装置である場合に前記ヘッダを暗号化するための第1暗号鍵と、前記外部通信装置が前記送信データを他の前記外部通信装置に中継する中継装置である場合に前記ヘッダを暗号化するための第2暗号鍵と、が異なる長さとなるように、前記鍵共有部により共有された暗号鍵を管理する鍵管理部と、
を備える通信装置。
【請求項2】
前記決定部は、複数の前記外部通信装置のうち、規定数以上の前記外部通信装置を経由する前記経路を決定する、
請求項1に記載の通信装置。
【請求項3】
前記決定部は、予め定められた期間内に同じ経路が使用されないように前記経路を決定する、
請求項1に記載の通信装置。
【請求項4】
前記決定部は、前記パケットを送信してから前記送信データを受信する受信装置である前記外部通信装置に前記パケットが到達するまでの時間が規定時間以内となるように前記経路を決定する、
請求項1に記載の通信装置。
【請求項5】
前記決定部は、前記暗号鍵の残量に基づいて前記送信データを送信可能な1以上の前記外部通信装置を特定し、特定した前記外部通信装置のうち1以上の前記外部通信装置を経由する前記経路を決定する、
請求項1に記載の通信装置。
【請求項6】
前記鍵共有部は、量子鍵配送を用いて、複数の外部通信装置との間で前記暗号鍵を共有する、
請求項1に記載の通信装置。
【請求項7】
前記暗号化部は、ワンタイム暗号により前記暗号鍵を用いて前記ヘッダを暗号化する、
請求項1に記載の通信装置。
【請求項8】
前記外部通信装置の少なくとも一部は移動して利用される移動端末であり、
前記送信部は、前記移動端末と接続可能なネットワークを介して前記パケットを送信する、
請求項1に記載の通信装置。
【請求項9】
通信装置で実行される通信方法であって、
複数の外部通信装置との間で暗号鍵を共有する鍵共有ステップと、
前記暗号鍵の残量に基づいて送信データを送信する経路を決定する決定ステップと、
前記経路に含まれる1以上の前記外部通信装置ごとに、前記外部通信装置を送信先として設定するヘッダを前記外部通信装置との間で共有する前記暗号鍵で暗号化する暗号化ステップと、
前記送信データと、暗号化された1以上の前記ヘッダと、を含むパケットを生成するパケット生成ステップと、
生成された前記パケットを前記経路に従い送信する送信ステップと、
前記外部通信装置が前記送信データを受信する受信装置である場合に前記ヘッダを暗号化するための第1暗号鍵と、前記外部通信装置が前記送信データを他の前記外部通信装置に中継する中継装置である場合に前記ヘッダを暗号化するための第2暗号鍵と、が異なる長さとなるように、前記鍵共有ステップにより共有された暗号鍵を管理する鍵管理ステップと、
を含む通信方法。
【請求項10】
1以上の送信装置と、1以上の中継装置と、1以上の受信装置と、を備える通信システムであって、
前記送信装置は、
前記中継装置および前記受信装置を含む外部通信装置との間で暗号鍵を共有する鍵共有部と、
前記暗号鍵の残量に基づいて送信データを前記受信装置に送信する経路を決定する決定部と、
前記経路に含まれる1以上の前記外部通信装置ごとに、前記外部通信装置を送信先として設定するヘッダを前記外部通信装置との間で共有する前記暗号鍵で暗号化する暗号化部と、
前記送信データと、暗号化された1以上の前記ヘッダと、を含むパケットを生成するパケット生成部と、
生成された前記パケットを前記経路に従い送信する送信部と、
前記外部通信装置が前記送信データを受信する受信装置である場合に前記ヘッダを暗号化するための第1暗号鍵と、前記外部通信装置が前記送信データを他の前記外部通信装置に中継する中継装置である場合に前記ヘッダを暗号化するための第2暗号鍵と、が異なる長さとなるように、前記鍵共有部により共有された暗号鍵を管理する鍵管理部と、を備える、
通信システム。
【請求項11】
コンピュータに
複数の外部通信装置との間で暗号鍵を共有する鍵共有ステップと、
前記暗号鍵の残量に基づいて送信データを送信する経路を決定する決定ステップと、
前記経路に含まれる1以上の前記外部通信装置ごとに、前記外部通信装置を送信先として設定するヘッダを前記外部通信装置との間で共有する前記暗号鍵で暗号化する暗号化ステップと、
前記送信データと、暗号化された1以上の前記ヘッダと、を含むパケットを生成するパケット生成ステップと、
生成された前記パケットを前記経路に従い送信する送信ステップと、
前記外部通信装置が前記送信データを受信する受信装置である場合に前記ヘッダを暗号化するための第1暗号鍵と、前記外部通信装置が前記送信データを他の前記外部通信装置に中継する中継装置である場合に前記ヘッダを暗号化するための第2暗号鍵と、が異なる長さとなるように、前記鍵共有ステップにより共有された暗号鍵を管理する鍵管理ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、通信装置、通信方法および通信システムに関する。
【背景技術】
【0002】
インターネットなどの公開ネットワークを用いた通信では、パケットを秘匿するために暗号化が行われる場合がある。例えば、送信ノードは、受信ノードとの間で予め暗号鍵を共有し、その暗号鍵を用いてワンタイム暗号により送信パケットを暗号化する。受信ノードは、対応する暗号鍵で受信したパケットを復号する。
【0003】
パケットは、1以上の中継ノードを介して転送される場合がある。例えば、送信ノードと受信ノードの間に複数の中継ノードが存在する構成では、パケットの中継経路上の隣接する複数のノードは予め暗号鍵を共有する。送信ノードまたは1つ前の中継ノードは、ワンタイム暗号により送信パケットを暗号化する。次の中継ノードまたは受信ノードは、対応する暗号化で受信したパケットを復号する。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2014-078875号公報
【非特許文献】
【0005】
【文献】Michael G. Reed, Paul F. Syverson, and David M. Goldschlag,“Anonymous Connections and Onion Routing”,Proceedings. 1997 IEEE Symposium on Security and Privacy,1997.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来技術では、情報の秘匿が不十分となる場合があった。例えば、パケットのペイロードは暗号化されるが、パケットのヘッダは暗号化されない構成では、ヘッダに記載された情報を十分に保護できない場合があった。
【課題を解決するための手段】
【0007】
実施形態の通信装置は、鍵共有部と、決定部と、暗号化部と、パケット生成部と、送信部と、を備える。鍵共有部は、複数の外部通信装置との間で暗号鍵を共有する。決定部は、暗号鍵の残量に基づいて送信データを送信する経路を決定する。暗号化部は、経路に含まれる1以上の外部通信装置ごとに、外部通信装置を送信先として設定するヘッダを外部通信装置との間で共有する暗号鍵で暗号化する。パケット生成部は、送信データと、暗号化された1以上のヘッダと、を含むパケットを生成する。送信部は、生成されたパケットを経路に従い送信する。
【図面の簡単な説明】
【0008】
図1】本実施形態の通信装置を含む通信システムのブロック図。
図2】送信ノードの機能ブロック図。
図3】鍵管理部による暗号鍵の管理方法の例を示す図。
図4】鍵管理部による暗号鍵の管理方法の例を示す図。
図5】中継ヘッダの一例を示す図。
図6】パケットの暗号化する領域と、暗号鍵との関係の一例を示す図。
図7】中継ノードの機能ブロック図。
図8】パケットのヘッダを更新した結果の例を示す図。
図9】中継ノードから受信ノードに送信されるパケットの例を示す図。
図10】受信ノードの機能ブロック図。
図11】本実施形態における送信処理の一例を示すフローチャート。
図12】本実施形態における中継処理の一例を示すフローチャート。
図13】本実施形態における受信処理の一例を示すフローチャート。
図14】変形例1の通信システムのブロック図。
図15】通信装置のハードウェア構成図。
【発明を実施するための形態】
【0009】
以下に添付図面を参照して、この発明にかかる通信装置の好適な実施形態を詳細に説明する。
【0010】
上記のように、従来技術では、例えば、送信元(送信ノード)および送信先(受信ノード)の情報を記載するパケットのヘッダが暗号化されない場合がある。このような場合、中継経路上の攻撃者および中継ノードは、ヘッダを参照することにより、送信元および送信先の情報を知ることができる。すなわち、どのような通信相手と通信しているかを秘匿できない場合がある。
【0011】
本実施形態にかかる通信装置は、通信相手を特定できないようにヘッダを暗号化したパケットを生成(構築)し、生成したパケットを送信する。これにより、情報の秘匿性を向上させることが可能となる。
【0012】
以下では、パケットの送信元および送信先となる通信装置を、それぞれ送信ノード(送信装置の一例)および受信ノード(受信装置の一例)という場合がある。また、パケットを中継する通信装置を中継ノード(中継装置の一例)という場合がある。
【0013】
本実施形態では、送信ノードは、受信ノード、および、パケットを中継しうる複数の中継ノードとの間で、予め暗号鍵を共有する。そして、送信ノードは、受信ノードへパケットを送信する際、そのパケットの中継経路を決定し、決定した中継経路を示す中継経路情報をパケットのヘッダに設定する。中継経路情報は、送信ノードが中継ノードおよび受信ノードと共有している暗号鍵で暗号化される。暗号化された中継経路情報は、パケットの中継ノードが次のパケットの中継先(次の中継ノード)しか知り得ないように、ヘッダに設定される。
【0014】
送信ノードは、例えば、各中継ノードと共有している暗号鍵の残量、および、これまでに送信したパケットで用いた中継経路情報などを考慮して中継経路を決定する。また、パケットを中継する中継ノードの個数の最小値を示す規定数以上の中継ノードを経由するように中継経路が決定されてもよい。
【0015】
図1は、本実施形態の通信装置を含む通信システムの構成例を示すブロック図である。図1に示すように、通信システムは、送信ノード100aと、受信ノード100bと、複数の中継ノード200a~200dと、がネットワーク400を介して接続される構成を有する。
【0016】
ネットワーク400は、有線ネットワーク、無線ネットワーク、および、有線ネットワークと無線ネットワークとが混在したネットワークのいずれであってもよい。有線ネットワークの場合、ネットワーク400の接続メディアとしては、典型的にはイーサネット(登録商標)ケーブルおよび光ファイバなどが用いられる。無線ネットワークの場合、典型的には携帯電話網接続および無線LAN(ローカルエリアネットワーク)などが用いられる。
【0017】
また、ネットワーク400は、インターネットのような広域ネットワークかもしれないし、広域の閉域ネットワークかもしれない。なお、図1では、ネットワークスイッチおよびルータなどのネットワーク機器は記載を省略している。
【0018】
また図1では1つの送信ノード100a、1つの受信ノード100bが記載されているが、通信システムは、複数の送信ノード100aおよび複数の受信ノード100bを備えてもよい。また中継ノード200a~200dは同様の構成を備えるため、区別する必要がない場合は単に中継ノード200という場合がある。中継ノード200の個数は4個に限られない。
【0019】
送信ノード100aおよび受信ノード100bは、パケット通信を行う。本実施形態では、送信ノード100aから受信ノード100bへパケットを送信する例を説明する。送信ノード100aは、受信ノード100bとの間で暗号鍵を共有するとともに、複数の中継ノード200との間でも暗号鍵を共有している。
【0020】
図2は、送信ノード100aの機能構成例を示すブロック図である。図2に示すように、送信ノード100aは、記憶部121と、鍵共有部101と、鍵管理部102と、アプリケーション103aと、パケット生成部104と、決定部105と、暗号化部106と、送信部107と、を含む。
【0021】
記憶部121は、自装置(送信ノード100a)内で用いられる各種情報を記憶する。例えば記憶部121は、鍵共有部101により共有され、鍵管理部102により管理される暗号鍵を記憶する。記憶部121は、フラッシュメモリ、メモリカード、RAM(Random Access Memory)、HDD(Hard Disk Drive)、および、光ディスクなどの一般的に利用されているあらゆる記憶媒体により構成することができる。
【0022】
鍵共有部101は、他のノード(外部通信装置の一例:中継ノード200、受信ノード100b)と通信し、暗号鍵を共有する。例えば鍵共有部101は、BB84およびE91などの量子鍵配送を用いて暗号鍵を共有する。暗号鍵の共有方法は量子鍵配送に限られず、送信ノード100aが他のノードそれぞれと個別にビット列を共有できればその手段は問わない。鍵共有部101は、共有した暗号鍵を鍵管理部102により記憶部121に記憶させる。
【0023】
鍵管理部102は、共有された暗号鍵を、共有先のノード(受信ノード100b、中継ノード200)ごとに管理する。例えば鍵管理部102は、通信の相手ノードとなる他の通信装置(中継ノード200、受信ノード100b)ごとに、共有した暗号鍵を対応づけて記憶部121に記憶することにより、暗号鍵を管理する。
【0024】
図3および図4は、鍵管理部102による暗号鍵の管理方法の例を示す図である。暗号鍵は、図3に示すようにノードごとに1つのビット列(鍵値)として管理されてもよいし、図4に示すように予め定められた長さに分割された暗号鍵(鍵値)ごとに鍵識別子が付与された状態で管理されてもよいし、その他の管理方法により管理されてもよい。なお図3および図4では、相手ノードがノードの名称で表されているが、相手ノードを識別できる情報であればその他の形式(IPアドレスなど)で表されてもよい。
【0025】
図3の管理方法の場合、鍵管理部102は、アプリケーション103aなどから要求された長さの暗号鍵を提供する際に、当該暗号鍵に適切な鍵識別子を付与する。鍵識別子の付与方法は受信ノード100bと共有されており、受信ノード100bは、送信ノード100aにより付与された鍵識別子を用いて対応する暗号鍵を識別できるものとする。鍵管理部102は、暗号鍵の提供のほかに、指定された相手ノードに対して送信ノード100aが共有している暗号鍵の長さまたは個数を出力してもよい。
【0026】
図4の管理方法の場合、鍵管理部102は、すべて同じ鍵長の暗号鍵を管理してもよいし、一部または全部が異なる鍵長となるように暗号鍵を管理してもよい。例えば、鍵管理部102は、相手ノードと共有したビット列から予め決められた長さで鍵値を切り出し、その鍵値に対して鍵識別子を付与するかもしれない。鍵管理部102は、相手ノードが中継ノード200である場合は、中継ノード200が参照するヘッダ(中継ヘッダ)を保護するのに十分な長さの比較的短い長さで鍵値を切り出すかもしれない。鍵管理部102は、相手ノードが受信ノード100bである場合は、中継ヘッダを保護するのに十分な長さの比較的短い鍵値だけでなく、ペイロードを保護するのに必要な長さの鍵値も切り出すかもしれない。
【0027】
このように、鍵管理部102は、相手ノードが受信ノード100bである場合にヘッダを暗号化するための暗号鍵(第1暗号鍵)と、相手ノードが中継ノード200である場合にヘッダを暗号化するための暗号鍵(第2暗号鍵)と、が異なる長さとなるように管理してもよい。
【0028】
鍵共有部101および鍵管理部102は、送信ノード100aとは別の装置として実現されてもよい。鍵管理部102と鍵共有部101とは、統合した1つの装置として実現されてもよいし、それぞれが別の装置として実現されてもよい。鍵共有部101および鍵管理部102が送信ノード100aとは別の装置として実現された場合、これらの装置はイーサネット(登録商標)およびシリアルバスなどのインターフェースを介して相互に連携する。
【0029】
図2に戻り、アプリケーション103aは、例えば受信ノード100bとの間でデータを送受信する機能を含むアプリケーションである。例えばアプリケーション103aは、受信ノード100bに送信する送信データ(以下、アプリケーションデータという)を生成する。アプリケーション103aは、生成したアプリケーションデータをパケット生成部104に入力する。
【0030】
パケット生成部104は、送信するパケットを生成する。例えばパケット生成部104は、アプリケーション103aから入力されたアプリケーションデータをパケットのペイロードに設定する。またパケット生成部104は、決定部105から当該アプリケーションデータ用の中継ヘッダを取得し(詳細は後述)、ネットワーク400を介してパケットを次の中継ノード200へ届けるための制御情報をヘッダに設定する。制御情報は、例えばMACヘッダおよびIPヘッダなどの、リンク層およびネットワーク層のプロトコルヘッダを含む。パケット生成部104は、決定部105から中継ヘッダが得られるまでパケットの生成処理を中断してもよいし、予め定められた時間内に中継ヘッダが得られない場合はパケットの生成処理を取りやめてアプリケーションデータを破棄してもよい。
【0031】
決定部105は、送信ノード100aから受信ノード100bまでのパケットの中継経路を決定する。また、決定部105は、決定した中継経路に対応する中継ヘッダを生成する。図5は、中継ヘッダの一例を示す図である。中継経路が、送信ノード100a、中継ノード200a、中継ノード200b、中継ノード200c、受信ノード100bの順の場合、決定部105は、図5に示すように、4つの中継経路情報501~504を含む中継ヘッダを生成する。
【0032】
各中継経路情報は、パケットの送信元、パケットの送信先、および、中継経路情報が付加される情報の暗号化に用いられる暗号鍵の鍵識別子を含む。例えば中継経路情報501は、パケットの送信元が送信ノード100aであり、送信先が中継ノード200aであり、両者が共有する暗号鍵のうち鍵識別子が100である暗号鍵により中継経路情報501以降のデータの少なくとも一部が暗号化されることを示す。
【0033】
決定部105は、中継ノード200それぞれと送信ノード100aとの間で共有する暗号鍵の残量(鍵残量)を考慮して中継経路を決定する。例えば決定部105は、まず鍵残量を考慮して中継経路に含める中継ノード200の候補を特定(選択)し、特定した候補から、中継経路に含める中継ノード200を決定する。
【0034】
例えば決定部105は、鍵残量が閾値より大きい中継ノード200を中継経路の候補として特定し、鍵残量が閾値以下となる中継ノード200を中継経路の候補として特定しない。決定部105は、鍵残量を考慮して特定した中継ノード200の中から、中継経路に含める中継ノード200および中継の順序を決定することにより、中継経路を決定する。決定部105は、予め決められたパターンに従って中継経路を決定してもよいし、ランダムに中継経路を決定してもよい。例えば決定部105は、以下のように予め定めた複数のパターンから順にパターンを選択することにより中継経路を決定してもよい。
・パターン1:中継ノード200a→中継ノード200b→中継ノード200c→中継ノード200d
・パターン2:中継ノード200b→中継ノード200c→中継ノード200d→中継ノード200a
・パターン3:中継ノード200c→中継ノード200d→中継ノード200a→中継ノード200b
・パターン4:中継ノード200d→中継ノード200a→中継ノード200b→中継ノード200c
【0035】
決定部105は、鍵残量が閾値より大きい中継ノード200を、同一のアプリケーションデータの中継経路上に複数回含めてもよい。例えば中継ノード200bと送信ノード100aとの間で共有する暗号鍵の残量が閾値より大きいとき、決定部105は、送信ノード100a、中継ノード200a、中継ノード200b、中継ノード200c、中継ノード200b、受信ノード100bという中継経路を決定してもよい。
【0036】
上記のように、決定部105は、規定数以上の中継ノード200を経由するように中継経路を決定してもよい。例えば、鍵残量の条件などを満たす中継ノードが規定数未満の場合、パケットの送信が保留とされてもよいし、パケットが破棄されてもよい。例えば、規定数が3に設定されているにもかかわらず、送信ノードとの間で十分な暗号鍵を共有している中継ノードが2つしか存在しないときには、十分な暗号鍵を共有する中継ノードの個数が3以上となるまでパケットの送信が保留とされてもよいし、パケットが破棄されてもよい。
【0037】
決定部105は、図5で説明したように、決定した中継経路に対応する中継ヘッダを生成し、生成した中継ヘッダをパケット生成部104に出力する。決定部105は、例えば、パケット生成部104から中継経路の決定を依頼されたときに、中継経路を決定し、中継ヘッダを生成してパケット生成部104に出力する。
【0038】
パケット生成部104は、決定部105から中継ヘッダを受け取ると、パケットを生成する。パケット生成部104により生成されたパケットは、暗号化部106により暗号化される。
【0039】
暗号化部106は、パケットの暗号化を行う。例えば暗号化部106は、鍵管理部102を介して、中継経路に含まれる各ノードと共有している暗号鍵を取得し、取得した暗号鍵を用いて中継ヘッダおよびペイロードを暗号化する。
【0040】
図6は、パケットに含まれる各領域のうち暗号化する領域と、暗号化に使用する暗号鍵との関係の一例を示す図である。図6は、図5に示す中継ヘッダを用いるパケットの暗号化の例である。
【0041】
例えばペイロード(アプリケーションデータ)601は、受信ノード100bが使用するデータであるため、暗号化部106は、受信ノード100bとの間で共有する暗号鍵の1つ(鍵識別子が100の暗号鍵)により暗号化する。鍵識別子が100であることは、中継経路情報504から得ることができる。なおペイロードは、すべてが暗号化されなくてもよい。すなわち、ペイロードの一部のみが暗号化されてもよい。
【0042】
中継経路情報504は、中継ノード200cが参照するデータであるため、暗号化部106は、中継ノード200cとの間で共有する暗号鍵の1つ(鍵識別子が300の暗号鍵)により暗号化する。鍵識別子が300であることは、中継経路情報503から得ることができる。
【0043】
中継経路情報503は、中継ノード200bが参照するデータであるため、暗号化部106は、中継ノード200bとの間で共有する暗号鍵の1つ(鍵識別子が200の暗号鍵)により暗号化する。鍵識別子が200であることは、中継経路情報502から得ることができる。
【0044】
中継経路情報502は、中継ノード200aが参照するデータであるため、暗号化部106は、中継ノード200aとの間で共有する暗号鍵の1つ(鍵識別子が100の暗号鍵)により暗号化する。鍵識別子が100であることは、中継経路情報501から得ることができる。
【0045】
中継経路情報501および制御情報602は、送信先である中継ノード200aに対して秘匿する必要がないため、暗号化部106による暗号化は行われず、平文として送信される。制御情報602は、上記のように、例えばMACヘッダおよびIPヘッダなどのプロトコルヘッダを含む。
【0046】
暗号化部106は、暗号鍵の量(鍵残量)が変化するような暗号化方式により暗号化を行う。このような暗号化方式としては、例えば、ワンタイム暗号(ワンタイムパッド)がある。ワンタイム暗号が適用される場合、鍵管理部102は、暗号化に使用した暗号鍵は記憶部121から削除する。このため、鍵残量が減少する。また、暗号鍵の共有処理により、鍵残量は増加する。ワンタイム暗号は暗号鍵の使用回数が1回に制限される暗号方式であるが、その他の暗号鍵の使用回数が制限される暗号方式が用いられてもよい。
【0047】
このようにして暗号化されたパケットは送信部107に渡される。送信部107は、パケットをネットワーク400に送出する。例えば送信部107は、パケット生成部104により生成され、暗号化部106により暗号化されたパケットをネットワーク400に送出する。パケットは、最初の中継ノード200aへ届けられる。
【0048】
図7は、中継ノード200の機能構成例を示すブロック図である。図7に示すように、中継ノード200は、記憶部121と、鍵共有部101と、鍵管理部102と、送信部107と、受信部201と、復号部202と、ヘッダ処理部203と、を含む。
【0049】
記憶部121、鍵共有部101、鍵管理部102、および、送信部107は、送信ノード100aと同様であるため、同一の符号を付し説明を省略する。例えば記憶部121、鍵共有部101、および、鍵管理部102は、暗号鍵の共有に用いられるが、共有の相手ノードが異なる以外は、中継ノード200と送信ノード100aとで機能が共通する。
【0050】
受信部201は、他のノード(送信ノード100a、または、他の中継ノード200)から送信された、暗号化されたパケットを受信する。受信したパケットは、復号部202へ渡される。
【0051】
復号部202は、受信したパケットの復号を行う。例えば復号部202は、パケットに含まれる中継ヘッダのうち、先頭の平文の部分から鍵識別子を取得する。復号部202は、取得した鍵識別子に対応する暗号鍵を、鍵管理部102を介して記憶部121から取得する。復号部202は、取得した暗号鍵により、中継ヘッダの暗号化された最初の領域を復号する。
【0052】
例えば図6に示すパケットを中継ノード200aが受信した場合、復号部202は、平文である先頭の領域(中継経路情報501に相当する領域)から鍵識別子100を得る。復号部202は、鍵識別子100に対応する暗号鍵を取得する。復号部202は、取得した暗号鍵を用いて、パケットの2番目に位置する暗号化された領域(中継経路情報502に相当する領域)を、取得した暗号鍵で復号する。この結果、受信したパケットが次に中継ノード200aから中継ノード200bへ中継されることがわかる。
【0053】
復号すべき領域は、平文のヘッダ内で指示されてもよいし、復号に利用する暗号鍵の鍵長から推測されてもよい。復号部202は、受信したパケットの暗号化された領域のうち、鍵識別子100に対応する暗号鍵と同じ長さのデータを復号し、復号されたデータから中継ヘッダ(中継経路情報502)の内容を読み取ってもよい。
【0054】
復号部202は、復号したパケットをヘッダ処理部203へ渡す。ヘッダ処理部203は、不要になった平文のヘッダを削除する。またヘッダ処理部203は、このパケットを中継ノード200aから中継ノード200bへ届けるための制御情報により、パケットの先頭のヘッダを更新する。
【0055】
図8は、このようにして図6のパケットのヘッダを更新した結果の例を示す図である。図6と比較すると、不要となったヘッダに相当する中継経路情報501が削除されている。また、中継経路情報502は、平文に復号された中継経路情報502-2に更新されている。さらに、中継ノード200aから中継ノード200bへパケットを届けるための制御情報として、制御情報602-2が更新されている。
【0056】
ヘッダ処理部203は、処理したパケットを送信部107へ渡す。送信部107は、ヘッダが処理されたパケットを、ネットワーク400へ送出する。パケットは、次の中継ノード200bへ届けられる。
【0057】
なお、中継ノード200aは、図6に示す形式のパケットを他の中継ノード200からも受信しうるため、図6のパケットの処理中に送信ノード100aが当該パケットの生成元(送信元)であるかどうか判定できない。
【0058】
中継経路に含まれる各中継ノード200は、このような処理を繰り返し実行する。この結果、図6のパケットは、最終的に図9に示す形となり、中継ノード200cから受信ノード100bに届けられる。図9は、中継ノード200cから受信ノード100bに送信されるパケットの例を示す図である。中継ノード200cから受信ノード100bへパケットを届けるための制御情報として、制御情報602-3が更新されている。
【0059】
なお、ペイロード601に相当する領域は暗号化されているため、中継ノード200cは、この領域に中継ヘッダが含まれるのか否かを判定することはできない。すなわち、中継ノード200cは、受信ノード100bが当該パケットの最終宛先であることを知ることはできない。
【0060】
図10は、受信ノード100bの機能構成例を示すブロック図である。図10に示すように、受信ノード100bは、記憶部121と、鍵共有部101と、鍵管理部102と、受信部201と、復号部202と、アプリケーション103bと、を含む。
【0061】
記憶部121、鍵共有部101、鍵管理部102、受信部201、および、復号部202は、中継ノード200と同様であるため、同一の符号を付し説明を省略する。
【0062】
アプリケーション103bは、例えば送信ノード100aとの間でデータを送受信する機能を含むアプリケーションである。例えばアプリケーション103bは、復号部202により復号されたペイロードの中のアプリケーションデータを処理する。
【0063】
上記各ノード(送信ノード100a、受信ノード100b、中継ノード200)内の各部は、例えば、1または複数のプロセッサにより実現される。例えば上記各部は、CPU(Central Processing Unit)などのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のIC(Integrated Circuit)などのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち1つを実現してもよいし、各部のうち2以上を実現してもよい。
【0064】
送信ノード100a、受信ノード100b、中継ノード200のうち2つまたは3つが、1つのノード(通信装置)として実現されてもよい。言い換えると、1つのノードが、上記の送信ノード100a、受信ノード100b、および、中継ノード200のうち2つまたは3つの機能を備えていてもよい。
【0065】
次に、本実施形態にかかる送信ノード100aによる送信処理について説明する。図11は、本実施形態における送信処理の一例を示すフローチャートである。
【0066】
送信ノード100aの鍵共有部101は、他のノード(中継ノード200、受信ノード100b)との間で暗号鍵を共有する(ステップS101)。なお、この共有処理は、ステップS102以降の処理と独立に実行されてもよい。また、このような共有処理は、各中継ノード200、および、受信ノード100bでも実行される。
【0067】
アプリケーション103aは、例えば受信ノード100bにデータを送信する必要が生じた場合、送信するアプリケーションデータを生成する(ステップS102)。アプリケーションデータは、パケット生成部104に渡される。パケット生成部104は、アプリケーションデータのパケットを生成するときに、パケットの中継経路の決定を決定部105に依頼する。
【0068】
決定部105は、例えばパケット生成部104から中継経路の決定を依頼されると、アプリケーションデータを送信するための中継経路を決定する(ステップS103)。決定部105は、決定した中継経路に対応する中継ヘッダを生成し、パケット生成部104に渡す。
【0069】
パケット生成部104は、中継ヘッダに従い、暗号化部106に対して暗号化を依頼する。暗号化部106は、受信ノード100bとの間で共有する暗号鍵を用いて、ペイロード(アプリケーションデータ)を暗号化する(ステップS104)。また暗号化部106は、中継経路に含まれる各中継ノード200との間で共有する暗号鍵を用いて、対応する各中継経路情報を暗号化する(ステップS105)。
【0070】
パケット生成部104は、パケットのヘッダに制御情報を設定する(ステップS106)。送信部107は、生成されたパケットを、ネットワーク400に送信し(ステップS107)、送信処理を終了する。
【0071】
次に、本実施形態にかかる中継ノード200による中継処理について説明する。図12は、本実施形態における中継処理の一例を示すフローチャートである。
【0072】
中継ノード200の受信部201は、他のノード(送信ノード100a、他の中継ノード200など)からパケットを受信する(ステップS201)。復号部202は、受信したパケットの平文の領域を参照し、復号に用いる暗号鍵の鍵識別子を取得する(ステップS202)。復号部202は、鍵識別子で識別される暗号鍵を用いて、受信したパケットを復号する(ステップS203)。
【0073】
ヘッダ処理部203は、復号された情報を参照し、パケットの送信先となるノードを特定する(ステップS204)。例えば図8の例では、中継ノード200aのヘッダ処理部203は、復号された中継経路情報502-2を参照することにより、パケットの送信先が中継ノード200bであることを特定する。
【0074】
ヘッダ処理部203は、特定した送信先にパケットを届けるための制御情報によりヘッダを更新する(ステップS205)。送信部107は、生成されたパケットを、ネットワーク400に送信し(ステップS206)、中継処理を終了する。
【0075】
次に、本実施形態にかかる受信ノード100bによる受信処理について説明する。図13は、本実施形態における受信処理の一例を示すフローチャートである。
【0076】
受信ノード100bの受信部201は、他のノード(中継ノード200など)からパケットを受信する(ステップS301)。
【0077】
ステップS302、ステップS303は、図12のステップS202、ステップS203と同様である。
【0078】
復号部202は、復号したパケット(アプリケーションデータ)をアプリケーション103bに出力する(ステップS304)。この後、アプリケーション103bは、例えば出力されたアプリケーションデータを用いた処理を実行する。
【0079】
なお、この例では、受信ノード100bがアプリケーションデータの送信先であり、アプリケーション103bは、復号部202から出力されたデータをアプリケーションデータとして用いても正しく動作することが前提となっている。一方、例えば受信ノード100bが中継ノード200としての機能も備える構成では、復号されたデータが、さらに他のノード(中継ノード200、または、最終宛先となる他の受信ノード100bなど)に中継されるデータとなる場合がある。
【0080】
このような場合は、例えば中継ノード200としての機能の1つであるヘッダ処理部203が、図12のステップS204と同様にパケットの送信先となるノードを特定する処理を実行する。この処理で送信先となるノードを特定できない場合、ヘッダ処理部203は、復号されたデータがアプリケーションデータであると判定し、復号されたデータをアプリケーション103bに渡してもよい。
【0081】
以上のように、本実施形態では、通信相手を特定できないようにヘッダを暗号化したパケットを生成し、生成したパケットを送信する。これにより、中継経路上の攻撃者および中継ノードに対して、送信元および送信先の情報を秘匿できる。
【0082】
なお、例えば非特許文献1に記載されるオニオンルーティング技術では、公開鍵による暗号化および対応する秘密鍵による復号が行われる。一方、本実施形態では、ワンタイム暗号のように、鍵残量が変化する暗号鍵が用いられる。すなわち、他のノードとの間の共有処理により鍵残量が増加するとともに、使用回数に達すると暗号鍵が削除され、共有する暗号鍵の鍵残量が変化するような暗号化方式が使用される。そして本実施形態では、このような暗号鍵の鍵残量に応じて中継経路が決定される。従って、鍵残量が変化しうる暗号鍵の共有状況に応じて適切に中継経路を決定し、送信元および送信先などの情報を秘匿することが可能となる。
【0083】
(変形例1)
パケットの送受信を行うネットワークと、暗号鍵の共有を行うネットワークとは、異なっていてもよい。図14は、このように構成される変形例1の通信システムの構成例を示すブロック図である。
【0084】
ネットワーク400aは、暗号鍵の共有に用いられるネットワークである。ネットワーク400bは、パケットの送受信に用いられるネットワークである。本変形例では、各ノードの鍵共有部101はネットワーク400aに接続される。また、各ノードの送信部107および受信部201はネットワーク400bに接続される。
【0085】
(変形例2)
送信ノード100aおよび受信ノード100bは、暗号鍵を共有した時点と、パケットを送受信する時点とで、ネットワーク上の場所が異なっていてもよい。例えば、送信ノード100a、受信ノード100b、または、送信ノード100aおよび受信ノード100bの両方が、携帯電話網または衛星回線を利用した移動端末であってもよい。また、中継ノード200も移動端末であってもよい。送信部107および受信部201は、移動端末と接続可能なネットワーク400を介してパケットの送受信を行う。
【0086】
(変形例3)
決定部105は、予め定められた期間内に同じ経路が使用されないように中継経路してもよい。例えば、決定部105は、決定した中継経路を記憶部121に記憶する。そして、決定部105は、新たに中継経路を決定するときに、記憶部121に記憶された中継経路を参照し、予め定められた期間内に同一の中継経路が使用されないように制御する。例えば決定部105は、連続して同一の中継経路が使用されないように制御する。記憶部121に記憶する中継経路の個数に上限が設定されてもよい。例えば決定部105は、上限を超える場合に、より古い中継経路を記憶部121から削除するように構成されてもよい。
【0087】
(変形例4)
決定部105は、パケットを送信してから受信ノード100bにパケットが到達するまでの時間が規定時間以内となるように中継経路を決定してもよい。例えば送信ノード100aは、自装置(送信ノード100a)と他のノードとの間、および、他のノード間の通信遅延の時間を示す計測情報を記憶部121に記憶する。決定部105は、この計測情報を参照し、送信ノード100aから送信されたパケットが受信ノード100bで受信されるまでの時間が規定時間内に収まるように中継経路を決定する。複数のパケットを繰り返し送信するような場合は、決定部105は、受信ノード100bでのパケット到着間隔が予め定められた範囲内に収まるように中継経路を決定してもよい。またこの場合、決定部105は、パケットが受信されるまでの時間が規定時間内に収まり、かつ、パケット到着間隔が予め定められた範囲内に収まるように中継経路を決定してもよい。
【0088】
(変形例5)
パケット生成部104は、ペイロードに設定するアプリケーションデータに対しダミーデータを追加してもよい。追加されるダミーデータの長さは、アプリケーションデータの長さによって決定されるかもしれない。例えば、十分にアプリケーションデータが長い場合は、ダミーデータの長さはゼロとし、パケット生成部104は、ダミーデータを追加しない。一方、アプリケーションデータが短い場合は、パケット生成部104は、長いダミーデータをアプリケーションデータに追加する。ダミーデータの追加により、中継経路上の最後の中継ノード200に対し、最終宛先が受信ノード100bであることを秘匿することが可能となる。
【0089】
図15は、上記実施形態および各変形例の各ノード(送信ノード、受信ノード、中継ノード)のハードウェア構成の例を示す図である。ノードは、制御装置301、主記憶装置302、補助記憶装置303、表示装置304、入力装置305および通信IF(Interface)306を備える。
【0090】
制御装置301、主記憶装置302、補助記憶装置303、表示装置304、入力装置305および通信IF306は、バス310を介して接続されている。
【0091】
制御装置301は、補助記憶装置303から主記憶装置302に読み出されたプログラムを実行する。主記憶装置302は、ROM(Read Only Memory)およびRAM等のメモリである。補助記憶装置303は、HDDおよびメモリカード等である。
【0092】
表示装置304は、ノードの状態等を表示する。入力装置305はユーザーからの入力を受け付ける。通信IF306は、ネットワーク400に接続するためのインターフェースである。なお、ノードは、表示装置304および入力装置305を備えていなくてもよい。ノードが表示装置304および入力装置305を備えていない場合は、例えば通信IF306を介して接続された外部端末の表示機能および入力機能を利用してもよい。
【0093】
本実施形態にかかる通信装置(ノード)で実行されるプログラムは、ROM等に予め組み込まれて提供される。
【0094】
本実施形態にかかる通信装置で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD-R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【0095】
さらに、本実施形態にかかる通信装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかる通信装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【0096】
本実施形態にかかる通信装置で実行されるプログラムは、コンピュータを上述した通信装置の各部として機能させうる。このコンピュータは、制御装置301がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置302上に読み出して実行することができる。
【0097】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0098】
100a 送信ノード
100b 受信ノード
101 鍵共有部
102 鍵管理部
103a、103b アプリケーション
104 パケット生成部
105 決定部
106 暗号化部
107 送信部
121 記憶部
200a~200d 中継ノード
201 受信部
202 復号部
203 ヘッダ処理部
400 ネットワーク
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15