(57)【特許請求の範囲】
【請求項１】
送信側の通信装置と、受信又は転送側の通信装置と、前記送信側の通信装置と前記受信又は転送側の通信装置との間を接続するネットワークとを備え、完全性を保証するための通信システムであって、
前記送信側の通信装置は、
一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを格納する手段と、
分割された送信するデータイメージに対して順に前記鍵チェーンを順に用いて、データ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成する手段と、
生成されたパケットを前記ネットワークに送信する手段と
を備え、
前記受信又は転送側の通信装置は、
前記ネットワークからのパケットを受信する手段と、
パケットの正当性を確認するための鍵を格納する手段と、
前記格納した鍵に基づき受信したパケットに含まれる鍵が連続したハッシュ値となっていることを計算し、次の認証子を含むパケット全体に対する鍵付きハッシュ値を算出し、一つ先のパケットに含まれる計算済みの鍵付きハッシュ値と同じであるかを比較することによって認証子を検証する手段と
を備え、
前記認証子を生成する手段は、送信するパケットを次のパケットに含まれる鍵と、次のパケット全体に対する鍵付きハッシュ値で構成し、さらに次のパケットに含まれる鍵で暗号化し、
前記認証子を検証する手段は、受信するパケットを次のパケットに含まれる鍵の正当性を確認した後、パケットを復号して次のパケットの鍵付きハッシュ値を取得する
ことを特徴とする通信システム。
【請求項２】
前記認証子を生成する手段は、各パケットに含まれる鍵を先のパケットに含まれる鍵を用いて暗号化し、
前記認証子を検証する手段は、パケットに含まれる暗号化された鍵を先に取得した鍵で復号することにより鍵を取得する
ことを特徴とする請求項１に記載の通信システム。
【請求項３】
前記認証子を生成する手段は、２以上の鍵チェーンを備え、それぞれの鍵チェーンを用いて２以上の認証子を算出し、
前記認証子を検証する手段は、２以上の認証子のうちどれか１つの認証子を検証する
ことを特徴とする請求項１又は請求項２に記載の通信システム。
【請求項４】
前記認証子を生成する手段は、２以上の鍵チェーンを備え、それぞれの鍵チェーンを用いて２以上の認証子を算出し、
前記認証子を検証する手段は、データ部分に引き続く最初の認証子を検証し、検証した認証子及びそれに関する鍵をパケットから削除したのち次の通信装置へ転送する
ことを特徴とする請求項１又は請求項２に記載の通信システム。
【請求項５】
前記各パケットに含まれる認証子の長さは各鍵チェーン毎に異なる長さであることを特徴とする請求項３又は請求項４に記載の通信システム。
【請求項６】
前記ネットワークは、無線通信路であることを特徴とする請求項１から請求項５のいずれかに記載の通信システム。
【請求項７】
一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを格納する手段と、
分割された送信するデータイメージに対して順に前記鍵チェーンを順に用いてデータ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成する手段と、
生成されたパケットをネットワークに送信する手段と
を備え、
前記認証子を生成する手段は、送信するパケットを次のパケットに含まれる鍵と、次のパケット全体に対する鍵付きハッシュ値で構成し、さらに次のパケットに含まれる鍵で暗号化する
ことを特徴とする通信装置。
【請求項８】
前記認証子を生成する手段は、各パケットに含まれる鍵を先のパケットに含まれる鍵を用いて暗号化することを特徴とする請求項７に記載の通信装置。
【請求項９】
前記認証子を生成する手段は、２以上の鍵チェーンを備え、それぞれの鍵チェーンを用いて２以上の認証子を算出することを特徴とする請求項７又は請求項８に記載の通信装置。
【請求項１０】
各パケットに含まれる認証子の長さは各鍵チェーン毎に異なる長さであることを特徴とする請求項９に記載の通信装置。
【請求項１１】
送信装置では、
一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを格納しておき、
分割された送信するデータイメージに対して順に前記鍵チェーンを順に用いてデータ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成し、生成されたパケットをネットワークに送信し、
受信装置では、
パケットの正当性を確認するための鍵を格納しておき、
前記ネットワークからのパケットを受信し、
前記格納した鍵に基づき受信したパケットに含まれる鍵が連続したハッシュ値となっていることを計算し、次の認証子を含むパケット全体に対する鍵付きハッシュ値を算出し、一つ先のパケットに含まれる計算済みの鍵付きハッシュ値と同じであるかを比較することによって認証子を検証するものであって、
前記送信装置の前記認証子の生成は、送信するパケットを次のパケットに含まれる鍵と、次のパケット全体に対する鍵付きハッシュ値で構成し、さらに次のパケットに含まれる鍵で暗号化し、
前記受信装置の前記認証子の検証は、受信するパケットを次のパケットに含まれる鍵の正当性を確認した後、パケットを復号して次のパケットの鍵付きハッシュ値を取得する
ことを特徴とするデータ通信方法。
【請求項１２】
前記送信装置の前記認証子の生成は、各パケットに含まれる鍵を先のパケットに含まれる鍵を用いて暗号化し、
前記受信装置の前記認証子の検証は、パケットに含まれる暗号化された鍵を先に取得した鍵で復号することにより鍵を取得する
ことを特徴とする請求項１１に記載のデータ通信方法。
【請求項１３】
前記送信装置の前記認証子の生成は、２以上の鍵チェーンを備え、それぞれの鍵チェーンを用いて２以上の認証子を算出し、
前記受信装置の前記認証子の検証は、２以上の認証子のうちどれか１つの認証子を検証する
ことを特徴とする請求項１１又は請求項１２に記載のデータ通信方法。
【請求項１４】
前記送信装置の前記認証子の生成は、２以上の鍵チェーンを備え、それぞれの鍵チェーンを用いて２以上の認証子を算出し、
前記受信装置の前記認証子の検証は、データ部分に引き続く最初の認証子を検証し、検証した認証子及びそれに関する鍵をパケットから削除したのち次の通信装置へ転送する
ことを特徴とする請求項１１又は請求項１２に記載のデータ通信方法。
【請求項１５】
各パケットに含まれる認証子の長さは各鍵チェーン毎に異なる長さであることを特徴とする請求項１３又は請求項１４に記載のデータ通信方法。
【請求項１６】
前記ネットワークは、無線通信路であることを特徴とする請求項１１から請求項１５のいずれかに記載のデータ通信方法。
【請求項１７】
一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを、記憶手段に格納する処理と、
分割された送信するデータイメージに対して順に前記記憶手段に格納されている鍵チェーンを順に用いてデータ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成する処理と、
生成されたパケットをネットワークに送信する処理と
を通信装置の情報処理装置に実行させるプログラムであって、
前記認証子を生成する処理は、送信するパケットを次のパケットに含まれる鍵と、次のパケット全体に対する鍵付きハッシュ値で構成し、さらに次のパケットに含まれる鍵で暗号化することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介した主にプログラムイメージ更新のためのプログラムイメージの完全性を検証するための通信システム、送信側及び受信又は転送側の通信装置、データ通信方法、データ通信プログラムに関する。
【背景技術】
【０００２】
近年、ＩＥＥＥ８０２．１５．４やＺｉｇＢｅｅに代表される無線通信プロトコルを用いたワイヤレスセンサーネットワーク（Ｗｉｒｅｌｅｓｓ Ｓｅｎｓｏｒ Ｎｅｔｗｏｒｋ，以後ＷＳＮ）分野の急速な進展を受けて、一旦展開されたセンサーノードのプログラムイメージをネットワークを介して更新する手法の重要性が増してきている。このようなネットワークを介したプログラムイメージの更新においては、ネットワーク経路上でプログラムイメージが改ざんされる可能性があるため、オリジナルから変更されていないことを保証するための完全性の検証が重要な課題となる。【０００３】
プログラムイメージの更新は、ベースステーションと呼ばれるプログラムイメージをセンサーノードに対し配布する装置にプログラムイメージがセットされることから始まり、そこでネットワーク上で展開するのに適したサイズに分割される。適切なサイズに分割したのち、センサーノードにそれぞれ展開される。センサーノードはたとえばツリー構造などマルチホップで構成される場合はプログラムイメージを受信したセンサーノードが次のホップのセンサーノードに転送することで届けられる。【０００４】
このとき、もし途中のセンサーノードがプログラムイメージを改ざんすると、改ざんされたプログラムイメージを受信したそれ以降のセンサーノードが正しい動作をすることは期待できず、このようにプログラムイメージの完全性の検証が重要な課題となっている。【０００５】
この種の検出手法としては、たとえば非特許文献１に示されるように、公開鍵暗号方式に基づく方法が示されている。この手法では、ベースステーションはプログラムイメージを分割する段階で次のように処理することで実現される。【０００６】
まず、分割したプログラムイメージのそれぞれをパケットと表現すると、最後のパケットのハッシュ値を算出し一つ前のパケットに付与する。同様にそのパケットのハッシュ値を算出しさらにその一つ前のパケットに付与する。以後、同様に先頭のパケットに至るまで同様に繰り返す（ハッシュチェーン）。最後に先頭のパケットをベースステーションが保持する秘密鍵で署名する。このようにして、受信者は先頭のパケットを公開鍵で検証することでそのパケットの確からしさを確かめ、以後のパケットの正当性についてはハッシュチェーンを検証することで確かめられる（非特許文献１参照）。【０００７】
しかし、ＷＳＮはＰＣに比較して処理速度が十分ではないＣＰＵ（中央処理演算装置）や制限されたメモリを備える装置で構成される。例えばそれらは８ビットのマイコンで１２８Ｋバイトのフラッシュメモリや４ＫバイトのＳＲＡＭ、ＥＥＰＲＯＭなどを備える。それらの装置上で公開鍵暗号方式を用いた場合、計算時間を要するという問題と鍵を格納するために多くのメモリを消費とするという問題がある。【０００８】
一方、非特許文献２に示されるように、ＷＳＮを構成する装置のリソース制限を想定して共通鍵暗号方式を用いた方式が示されている。この手法では、ベースステーションはプログラムイメージを分割する段階で次のように処理することで実現される。【０００９】
まず、一方向鍵チェーンを生成する。この鍵チェーンは最初に決めた鍵をベースに鍵のハッシュ値を算出しそれが次の鍵となる。これを繰り返し行っていくことで鍵のチェーンが生成できる。この鍵チェーンを最後に生成された鍵から利用していき、分割されたパケットのハッシュ値を算出する時に用いられる。各パケットにこの算出されたハッシュ値と算出に用いた鍵を付与し、センサーノードへ展開される。【００１０】
このパケットを受信したセンサーノードは付与された鍵を用いてハッシュ値を算出し、パケットの確からしさを検証する。それと共に、鍵自体のハッシュ値を算出し、ハッシュ値が前の鍵と同一かどうかを検証することで鍵自体の確からしさも検証することができる。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Prabal K. Dutta and Jonathan W. Hui and David C. Chu and David E. Culler, "Securing the Deluge network programming system", In Proceedings of the Fifth International Conference on Information Processing in Sensor Networks (IPSN}, 2006, pages 326-333, ACM
【非特許文献２】Hailun Tan, Sanjay Jha, Diethelm Ostry, John Zic, and Vijay Sivaraman, "Secure multi-hop network programming with multiple one-way hash chains", In WiSec '08: ACM Conference on Wireless Network Security, 2008, ACM
【発明の概要】
【発明が解決しようとする課題】
【００１２】
リソースが制限された装置で効率的な検証方式を実現するためには、非特許文献２に示すように計算量ができるだけ少ない方式をベースとしながらも安全性を保証する必要がある。しかし、非特許文献２に示す方式では、センサーノードが特定のパケットを受信する前に、別のセンサーノードが受信した同じパケットから鍵を先に取得し、その取得した正当な鍵を使って改ざんしたパケットに対してハッシュ値を付与した場合、改ざんされたパケットを受信したセンサーノードは正当な鍵が使われていることからその改ざんされたパケットを正しいものとして受け入れてしまうという課題がある。【００１３】
第１の問題点は、パケットを受信すると、正当な鍵を使って改ざんしたパケットを直ちに生成できてしまうことである。その理由は、パケットデータ、ハッシュ値を算出する鍵、算出されたハッシュ値の３つが同一のパケットに含まれているためである。【００１４】
そこで、本発明の目的は、より演算処理が要求される公開鍵暗号方式を使用することなく、共有鍵暗号方式を用いてプログラムイメージの確からしさを検証する通信システム、送信側及び受信又は転送側の通信装置、データ通信方法、データ通信プログラムを提供することである。【００１５】
本発明の他の目的は、受信するパケットを逐次検証できる仕組みを取り入れることで、もし改ざんされたパケットが挿入された場合でもすぐに検出する通信システム、送信側及び受信又は転送側の通信装置、データ通信方法、データ通信プログラムを提供することである。
【課題を解決するための手段】
【００１６】
本発明は、送信側の通信装置と、受信又は転送側の通信装置と、前記送信側の通信装置と前記受信又は転送側の通信装置との間を接続するネットワークとを備え、完全性を保証するための通信システムであって、前記送信側の通信装置は、一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを格納する手段と、分割された送信するデータイメージに対して順に前記鍵チェーンを順に用いて、データ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成する手段と、生成されたパケットを前記ネットワークに送信する手段とを備え、前記受信又は転送側の通信装置は、前記ネットワークからのパケットを受信する手段と、パケットの正当性を確認するための鍵を格納する手段と、前記格納した鍵に基づき受信したパケットに含まれる鍵が連続したハッシュ値となっていることを計算し、次の認証子を含むパケット全体に対する鍵付きハッシュ値を算出し、一つ先のパケットに含まれる計算済みの鍵付きハッシュ値と同じであるかを比較することによって認証子を検証する手段とを備えることを特徴とする通信システムである。【００１７】
また、本発明は、一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを格納する手段と、分割された送信するデータイメージに対して順に前記鍵チェーンを順に用いてデータ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成する手段と、
生成されたパケットをネットワークに送信する手段とを備えたことを特徴とする通信装置である。【００１８】
また、本発明は、ネットワークからのパケットを受信する手段と、パケットの正当性を確認するための鍵を格納する手段と、前記格納した鍵に基づき前記受信したパケットに含まれる鍵が連続したハッシュ値となっていることを計算し、次の認証子を含むパケット全体に対する鍵付きハッシュ値を算出し、一つ先のパケットに含まれる計算済みの鍵付きハッシュ値と同じであるかを比較することによって認証子を検証する手段とを備えたことを特徴とする通信装置である。【００１９】
また、本発明は、送信側では、一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを格納しておき、分割された送信するデータイメージに対して順に前記鍵チェーンを順に用いてデータ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成し、生成されたパケットをネットワークに送信し、受信側では、パケットの正当性を確認するための鍵を格納しておき、前記ネットワークからのパケットを受信し、前記格納した鍵に基づき受信したパケットに含まれる鍵が連続したハッシュ値となっていることを計算し、次の認証子を含むパケット全体に対する鍵付きハッシュ値を算出し、一つ先のパケットに含まれる計算済みの鍵付きハッシュ値と同じであるかを比較することによって認証子を検証することを特徴とするデータ通信方法である。【００２０】
また、本発明は、一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを格納する処理と、分割された送信するデータイメージに対して順に前記鍵チェーンを順に用いてデータ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成する処理と、生成されたパケットをネットワークに送信する処理とを通信装置に実行させることを特徴とするプログラムである。【００２１】
また、本発明は、ネットワークからのパケットを受信する処理と、パケットの正当性を確認するための鍵を格納する処理と、前記格納した鍵に基づき前記受信したパケットに含まれる鍵が連続したハッシュ値となっていることを計算し、次の認証子を含むパケット全体に対する鍵付きハッシュ値を算出し、一つ先のパケットに含まれる計算済みの鍵付きハッシュ値と同じであるかを比較することによって認証子を検証する処理とを通信装置に実行させることを特徴とするプログラムである。
【発明の効果】
【００２２】
本発明によれば、鍵チェーンに加え次のパケットのハッシュ値を先のパケットに含めて送ることで、パケットの偽装を困難にしている。このため、共通鍵暗号方式に基づく方式を用いた場合であってもデータイメージの完全性の検証を行うことができる。これにより、リソースが制限された装置でも、効率的な検証を行うことができる。また、次のパケットのハッシュ値を先のパケットに含めて送ることで、連続するパケット間の関連性を高めているので、パケットの偽装が行われた場合であっても、その偽装を素早く確実に検出することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施形態の通信システムの構成を示すブロック図である。
【図２】本発明の第１の実施形態の送信側の通信装置の構成を示すブロック図である。
【図３】本発明の第１の実施形態の鍵チェーン格納部が保持する鍵チェーンの詳細を示したブロック図である。
【図４】本発明の第１の実施形態の受信又は転送側の通信装置の構成を示すブロック図である。
【図５】本発明の第１の実施形態の送信側と受信又は転送側の通信装置の間でやり取りされるパケットの詳細を示したブロック図である。
【図６】本発明の第１の実施形態の受信又は転送側の通信装置の動作を示すフローチャートである。
【図７】本発明の第２の実施形態の送信側の通信装置の構成を示すブロック図である。
【図８】本発明の第２の実施形態の受信又は転送側の通信装置の構成を示すブロック図である。
【図９】本発明の第３の実施形態の通信システムの構成を示すブロック図である。
【図１０】本発明の第３の実施形態の送信側の通信装置の構成を示すブロック図である。
【図１１】本発明の第３の実施形態の受信又は転送側の通信装置の構成を示すブロック図である。
【図１２】本発明の第３の実施形態の送信側の通信装置と受信又は転送側の通信装置２の間でやり取りされるパケットを示したブロック図である。
【発明を実施するための形態】
【００２４】
次に、本発明の実施の形態について図面を参照して詳細に説明する。尚、ここで示す実施の形態はあくまでも一例であって、必ずしもこの実施の形態に限定されるものではない。
【００２５】
＜第１の実施の形態＞
図１は、本発明を実施するための第１の形態である通信システムの構成を示す図である。
【００２６】
図１を参照すると、本発明の第１の実施形態である通信システムは、通信装置１〜７と、それらをＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ Ｎｅｔｗｏｒｋ）回線またはＷＡＮ（Ｗｉｄｅ Ａｒｅａ Ｎｅｔｗｏｒｋ）回線などを結ぶネットワーク１０とから構成されている。尚、ネットワーク１０は、有線であってもよいし、無線であってもかまわない。
【００２７】
通信装置１〜７は、有線もしくは無線を用いて通信を行う装置であり、一般的にはノートＰＣ、携帯端末のような端末装置である。特に、通信装置２〜７はセンサーデバイスのような限定された処理能力、メモリおよび通信能力で構成される小型デバイスであってもよい。
【００２８】
通信装置２〜７は、受信したパケットを次の通信装置へ転送する構成であってもよい。例えば、通信装置２は通信装置１からパケットを受信すると、通信装置４及び通信装置５へ同じパケットを転送する。同様に、通信装置３は通信装置６及び通信装置７へ転送する。なお、図示せぬ通信装置へ転送することも容易に想定できる。
【００２９】
図２に、本発明の第１の実施形態における送信側の通信装置１の構成を示す。通信装置１は、鍵チェーン格納部１１、データイメージ入力部１２、送信パケット生成部１３、トラストアンカ生成部１４、ネットワーク通信部１５、ハッシュ計算部１６、暗号計算部１７を含む。
【００３０】
鍵チェーン格納部１１は、一連の鍵を格納しており、各鍵はそれぞれ一つ前の鍵のハッシュ値である。例えば、図３に一連の（ｎ＋１）個の鍵Ｋの関係を示す。マスターとなる鍵Ｋ（０）に対し、鍵Ｋ（１）はＫ（０）のハッシュ値である。同様に、鍵Ｋ（２）はＫ（１）のハッシュ値である。以降同様にＫ（ｎ）はＫ（ｎ−１）のハッシュ値である。
【００３１】
データイメージ入力部１２は、通信装置１が通信装置２〜７に対して送信するデータイメージの通信装置１における入力部である。このデータイメージは例えばアプリケーションやプログラムイメージであり、通信装置２〜７上で動作するプログラムコードである。
【００３２】
送信パケット生成部１３は、データイメージをネットワーク１０を介して送信するために適したサイズに分割する機能を備える。さらに、分割したデータイメージに対し、後ろのデータから順番に鍵チェーン格納部１１に格納されている鍵チェーンを用いて鍵付きハッシュ値を算出することにより、送信データ、鍵付きハッシュ値、およびハッシュ値の算出に用いた鍵から構成される送信パケットを生成する機能を備える。
【００３３】
トラストアンカ生成部１４は、送信パケット生成部１３で生成した一連のパケットに対して、先頭部分にトラストアンカとなるトラストアンカパケットを生成する機能を備える。具体的には、送信パケット生成部１３で生成した一連のパケットの先頭で用いた鍵及び先頭のパケットのハッシュ値をその鍵で暗号化する機能を備える。
【００３４】
ネットワーク通信部１５は、他の通信装置と有線もしくは無線を使って通信する機能であり、本実施形態ではこれはＩＥＥＥ  ８０２．１５．４の送受信機である。
【００３５】
ハッシュ計算部１６は、セキュアハッシュアルゴリズムに基づく鍵付きハッシュ値を計算する機能である。送信パケット生成部１３からのデータ入力値、及び鍵を入力とし鍵付きハッシュ値を計算する。具体的には、ハッシュ計算部１６は、ＳＨＡ−１やＭＤ５、ＨＭＡＣなどである。
【００３６】
暗号計算部１７は、共通鍵暗号方式に基づく暗号処理を実施する機能である。トラストアンカ生成部１４からのデータ入力値、及び鍵を入力とし暗号化を実施する。具体的には、暗号計算部１７は、ＤＥＳや３ＤＥＳ、ＲＣ５などである。
【００３７】
図４に、本発明における受信又は転送側の通信装置２の構成を示す。通信装置２は、鍵格納部２１、データイメージ再構成部２２、ハッシュチェーン検証部２３、鍵チェーン検証部２４、トラストアンカ検証部２５、ネットワーク通信部２６、ハッシュ計算部２７、暗号計算部２８を含む。尚、通信装置２の構成はその他の通信装置３〜７にも同様に適用される。
【００３８】
鍵格納部２１は、受信したパケットの正当性を検証するための使用する鍵を格納する。受信したパケットの正当性が確認されると、新しい鍵で更新される。
【００３９】
データイメージ再構成部２２は、受信したパケットの正当性が確認されたものを集め、データイメージとして再構成する機能である。ここで再構成されたデータイメージが、アプリケーションやプログラムイメージとして通信装置２にインストールされる。
【００４０】
ハッシュチェーン検証部２３は、受信したパケットのハッシュ値を検証する機能である。受信したパケットの正当性が確認できると、そのパケットに含まれる次のパケットのハッシュ値を保持しておく。保持したハッシュ値は次に受信したパケットのハッシュ値の検証に用いられる。
【００４１】
鍵チェーン検証部２４は、受信したパケットに含まれる鍵の正当性を検証する機能である。鍵チェーン検証部２４は、受信したパケットに含まれる鍵が、鍵格納部２１に格納されている現状の鍵に対するハッシュ値となっていることを確認する。
【００４２】
トラストアンカ検証部２５は、トラストアンカとなる一番最初に送信されているトラストアンカパケットを検証する機能である。具体的には、トラストアンカパケットを格納しておき、次のパケットにて鍵を取得するとその鍵を用いて、トラストアンカパケットを復号し、復号された鍵が復号に用いた鍵と同じであることを確認することでトラストアンカパケットの正当性を確認する。また、トラストアンカパケットに含まれる次のパケットのハッシュ値はハッシュチェーン検証部２３で用いられる。
【００４３】
ネットワーク通信部２６は、通信装置１でのネットワーク通信部１５と同様に、他の通信装置と有線もしくは無線を使って通信する機能であり、本実施形態ではこれはＩＥＥＥ  ８０２．１５．４の送受信機である。
【００４４】
ハッシュ計算部２７は、通信装置１でのハッシュ計算部１６と同様に、セキュアハッシュアルゴリズムに基づく鍵付きハッシュ値を計算する機能である。ハッシュチェーン検証部２３からのデータ入力値、及び鍵を入力とし鍵付きハッシュ値を計算する。具体的には、ハッシュ計算部２７は、ＳＨＡ−１やＭＤ５、ＨＭＡＣなどである。
【００４５】
暗号計算部２８は、通信装置１での暗号計算部１７と同様に、共通鍵暗号方式に基づく暗号処理を実施する機能である。トラストアンカ生成部１４からのデータ入力値、及び鍵を入力とし暗号化を実施する。具体的には、暗号計算部１７は、ＤＥＳや３ＤＥＳ、ＲＣ５などである。
【００４６】
次に、本発明を実施するための第１の実施形態の動作について詳細に説明する。
【００４７】
図５に、通信装置１でのデータイメージのパケット化の流れと、図６に、通信装置２でのパケット受信時の流れについて説明する。
【００４８】
図５において、鍵Ｋ（０）〜Ｋ（Ｌ）は（Ｌ＋１）個の鍵チェーンを示しており、それぞれ鍵Ｋ（１）は鍵Ｋ（０）のハッシュ値、鍵Ｋ（２）は鍵Ｋ（１）のハッシュ値，，，鍵Ｋ（Ｌ）は鍵Ｋ（Ｌ−１）のハッシュ値という関係になっている。（Ｌ）個に分割されたデータ部分はそれぞれ順番にＤ（１）〜Ｄ（Ｌ）で示される。（Ｌ）個に分割されたデータイメージには（Ｌ＋１）個の鍵チェーンを使用する。分割されたデータ部分と次のパケットのハッシュ値を鍵チェーンの鍵で算出される鍵付きハッシュ値が前のパケットに含まれる。たとえば、データ部分Ｄ（１）が含まれるパケットの場合、鍵付きハッシュ値Ｈ（１）は、データ部分Ｄ（１）とデータ部分Ｄ（２）に対する鍵付きハッシュ値Ｈ（２）を鍵Ｋ（Ｌ−１）で鍵付きハッシュ値として算出した値になる。また、鍵チェーンの最後の鍵Ｋ（Ｌ）だけは各通信装置２〜７にて事前に共有されている。なお、鍵の事前配布方法についてはここでは範囲外とする。
【００４９】
まず、通信装置１の送信パケット生成部１３は、データイメージ入力部１２から入力されたデータイメージを通信装置２〜７に対して送信するパケット毎に分割する。本実施形態の例ではデータイメージＤは送信する順番にデータ部分Ｄ（１）〜Ｄ（Ｌ）のＬ個に分割する。
【００５０】
送信パケット生成部１３は、データイメージの後ろから処理し、鍵付きハッシュ値Ｈ（Ｌ)をハッシュ計算部１６を用いてデータ部分Ｄ（Ｌ）と鍵チェーン格納部１１に格納されている鍵Ｋ（０）から算出する。算出された鍵付きハッシュ値Ｈ（Ｌ）は前のパケットの鍵Ｋ（１）、データ部分Ｄ（Ｌ−１）と共に送信されるパケットとして構成される。引き続き、鍵付きハッシュ値Ｈ（Ｌ−１）をデータ部分Ｄ（Ｌ−１）、先に算出した鍵付きハッシュ値Ｈ（Ｌ)及び鍵Ｋ（１）から算出する。以降、同様に処理する。
【００５１】
送信パケット生成部１３にて、データイメージの最初のデータ部分Ｄ（１)に対する鍵付きハッシュ値の算出まで終了すると、次はトラストアンカ生成部１４にて、トラストアンカパケットを生成する。
【００５２】
トラストアンカ生成部１４は、鍵チェーン格納部１１に格納されている鍵Ｋ（Ｌ−１）を用いて、鍵自身Ｋ（Ｌ−１）と先頭のデータＤ（１）に対する鍵付きハッシュ値Ｈ（１）を、暗号計算部１７を用いて暗号処理を行う。
【００５３】
このようにして生成された各パケットはネットワーク通信部１５を介してネットワーク１０に接続された通信装置２〜７に対して順番に送信される。
【００５４】
最初に送信されるパケットは、暗号処理されたトラストアンカパケットＥｎｃＫ（Ｌ−１）となり、次に鍵Ｋ（Ｌ−１）、データ部分Ｄ（１）及び鍵付きハッシュ値Ｈ（２）が一つのパケットとして送信される。以降、同様に送信される。最後は、鍵Ｋ（０）及びデータ部分Ｄ（Ｌ）が一つのパケットとして送信される。
【００５５】
次に、図６を参照して通信装置２での通信装置１から送信されたパケットを受信し、検証する流れについて説明する。
【００５６】
通信装置２は、ネットワーク通信部２６にてネットワークに接続された通信装置１からのパケットを受信すると（ステップＡ１）、このパケットがトラストアンカパケットかどうかを判定する（ステップＡ２）。トラストアンカパケットであった場合、トラストアンカ検証部２５にてキャッシュされる（ステップＡ３）。
【００５７】
ステップＡ２にてトラストアンカパケットではなかった場合、鍵チェーン検証部２４は、パケットから鍵を取り出し（ステップＡ４)、鍵格納部２１に格納されている鍵と比較し鍵チェーンとなっているかどうかを検証する（ステップＡ５）。より具体的には、鍵チェーン検証部２４は取り出した鍵のハッシュ値を算出し、算出したハッシュ値が鍵格納部２１に格納されている値と同じであることを検証する。もし、この値が同一ではない場合、正しい鍵を持っていない通信装置からの不正なパケットであると判定する（ステップＡ１５）。
【００５８】
たとえば、事前に鍵Ｋ（Ｌ）が通信装置２の鍵格納部２１に格納されており、鍵Ｋ（Ｌ−１）を含むパケットを受信したとすると、鍵チェーン検証部２４はパケットから鍵Ｋ（Ｌ−１）を取り出す。次に、鍵Ｋ（Ｌ−１）のハッシュ値を算出し、鍵格納部２１に格納されている鍵Ｋ（Ｌ）と同じ値となることを確かめる。もし、鍵Ｋ（Ｌ−１）が異なる鍵Ｋであった場合、算出したハッシュ値は鍵Ｋ（Ｌ）とはならず、鍵の不正が検出可能となる。
【００５９】
次に、鍵の検証が成功裏に完了すると、そのパケットが２番目のパケット、すなわちトラストアンカパケットの次のパケットである場合、トラストアンカ検証部２５にて格納されているトラストアンカパケットの検証を実施する（ステップＡ７からステップＡ９）。より具体的には、２番目のパケットから取り出した鍵チェーン検証済みの鍵Ｋ（Ｌ−１）を用いて、暗号計算部２８はトラストアンカパケットの復号処理を行う（ステップＡ７）。トラストアンカ検証部２５は、復号して取得した鍵が復号に使用した鍵と同じであることを確認し（ステップＡ８）、もし異なる場合、トラストアンカパケットが不正パケットであると判定する（ステップＡ１５）。同じである場合、トラストアンカパケットは正しいと判定し、トラストアンカパケットに含まれる次のパケットのハッシュ値Ｈ（１）をハッシュチェーン検証部２３は保持する（ステップＡ９）。
【００６０】
トラストアンカパケットの検証が成功裏に完了すると、２番目のパケットの検証に戻る。ハッシュ計算部２７は、２番目のパケットの鍵付きハッシュ値を２番目のパケットに含まれる鍵Ｋ（Ｌ−１）を使用してデータ部分Ｄ（１）、次のパケットのハッシュ値Ｈ（２）に対して算出する（ステップＡ１０）。ハッシュチェーン検証部２３は、ハッシュ計算部２７の結果に基づき、先に保持していたハッシュ値Ｈ（１）がここで算出した鍵付きハッシュ値と同じであるかを確かめる（ステップＡ１１）。もし異なる場合、２番目のパケットが不正パケットであると判定する（ステップＡ１５）。同じである場合、２番目のパケットは正しいと判定し、鍵Ｋ（Ｌ−１）で鍵格納部２１に格納されている鍵を更新し（ステップＡ１２）、さらに次のパケットの検証用ハッシュ値Ｈ（２）をハッシュチェーン検証部２３は保持する（ステップＡ１３）。
【００６１】
このようにして、正しいと判定されたパケットに含まれるデータ部分Ｄ（１）はデータイメージ再構成部２２へと渡される。
【００６２】
以降のパケットを受信した場合、２番目のパケットを受信した時のトラストアンカパケットの検証処理（ステップＡ７からステップＡ９）が行われない以外は同様の処理となる（ステップＡ４からステップＡ６、ステップＡ１０からステップＡ１３）。
【００６３】
さらに、最後のパケットを受信した場合も、鍵チェーンの検証（ステップＡ４、ステップＡ５）から鍵付きハッシュ値の算出（ステップＡ１０）、及び検証（ステップＡ１１）、鍵の更新（ステップＡ１２）までは同様に実施される。また、最後のパケットであるため、次のパケットのハッシュ値は含まれない。このように、すべてのデータ部分がデータイメージ再構成部２２へ渡され、通信装置２は、データイメージを取得することが可能となる。
【００６４】
なお、ネットワーク１０は、有線であってもよいが、本実施形態では、無線通信、特にＩＥＥＥ８０２．１５．４やＺｉｇＢｅｅに代表される無線通信プロトコルの使用が適している。
【００６５】
また、通信装置３〜７も通信装置２と同様の動作を行うことで、データイメージが改ざんされていないかどうかを検証することができる点は通信装置２と同じである。
【００６６】
次に、本発明の第１の実施形態の効果について説明する。本実施の形態の第１の効果は、共通鍵暗号方式に基づく方式を用いた場合であってもデータイメージの完全性の検証を行うことができることである。これは、鍵チェーンに加え次のパケットのハッシュ値を先のパケットに含めて送ることで、パケットの偽装をしにくくしているためである。
【００６７】
本実施形態の第２の効果は、パケットの偽装が行われた場合であってもすぐにその偽装を検出することができることである。これは、次のパケットのハッシュ値を先のパケットに含めて送ることで、連続するパケット間の関連性を高めているためである。
【００６８】
＜第２の実施形態＞
次に、本発明の第２の実施形態について図７及び図８を用いて説明する。
【００６９】
図７に示すように、本実施形態における送信側の通信装置１０１は、鍵チェーン格納部１１１、データイメージ入力部１１２、送信パケット生成部１１３、トラストアンカ生成部１１４、ネットワーク通信部１１５、ハッシュ計算部１１６、暗号計算部１１７、送信鍵暗号部１１８を含む。
【００７０】
また、図８に示すように、本実施形態における受信又は転送側の通信装置１０２は、鍵格納部１２１、データイメージ再構成部１２２、ハッシュチェーン検証部１２３、鍵チェーン検証部１２４、トラストアンカ検証部１２５、ネットワーク通信部１２６、ハッシュ計算部１２７、暗号計算部１２８、鍵復号部１２９を含む。
【００７１】
本実施形態は、第１の実施形態とほぼ同じであるが、各パケットに含まれる鍵Ｋが暗号化されている点が異なる。
【００７２】
図７を参照すると、通信装置１０１は、送信鍵暗号部１１８を備える点で異なる以外、第１の実施形態と同じ構成となる。
【００７３】
送信鍵暗号部１１８は、各パケットに含まれる鍵Ｋを暗号化する機能を備える。より具体的には、各パケットに含まれる鍵は一つ前のパケットに含まれる鍵で暗号化する機能を備える。
【００７４】
図８を参照すると、通信装置１０２は、鍵復号部１２９を備える点で異なる以外、第１の実施形態と同じ構成となる。
【００７５】
鍵復号部１２９は、各パケットに含まれる鍵Ｋを復号する機能を備える。より具体的には、各パケットに含まれる暗号化されている鍵を、鍵格納部１２１に格納されている前のパケットに含まれる鍵で復号する機能を備える。
【００７６】
第１の実施形態との動作の違いを説明すると、図６に示す第１の実施形態での動作に対して、受信したパケットから鍵を取り出すステップ（ステップＡ４）において、鍵を取り出すために通信装置１０２の鍵復号部１２９は暗号化されている鍵を復号することで取り出す点が異なる部分となる。それ以外の動作は第１の実施形態と同様の動作となる。
【００７７】
次に、第２の実施形態の効果について説明する。本実施形態の効果は、第１の実施形態よりもさらにパケットの偽装をしにくくすることができることである。これは、パケットに含まれる鍵を先のパケットの鍵を使って暗号化するため、パケットを偽装するために必要となる鍵を取得するためにはより長い期間のパケットのやり取りを傍受する必要があるからである。さらに、ネットワーク上ではやり取りされない事前に共有される最初の鍵を取得するためには、例えば物理的に攻撃することで鍵を取得するなど別の手段を要する必要があるからである。
【００７８】
＜第３の実施形態＞
次に、本発明の第３の発明を実施するための形態について図９〜図１２を用いて説明する。
【００７９】
この実施形態は、第１の実施形態とほぼ同じであるが、第１の実施形態では通信装置２〜７が全て同じ共通鍵が事前に共有されていたのに対し、本実施形態ではグループ毎に異なる共有鍵が事前に共有されている点が異なる。
【００８０】
図９を参照すると、通信装置２０１〜２０７のうち、通信装置２０１が送信側の通信装置、通信装置２０２〜２０７が受信側（転送も含む）の通信装置である。通信装置２０１〜２０７は、ネットワーク２１０を介して接続されている。通信装置２０２と通信装置２０３は同じグループＧ１に属している。同様に、通信装置２０４〜２０７は同じグループＧ２に属している。ここでは、マルチホップネットワーク構成となっており、通信装置２０１からの同一ホップ数では同じグループに属している構成となる。なお、これらはホップ数毎のグループに限らず、別のグループ構成であってもかまわない。
【００８１】
図１０に示すように、本実施形態における送信側の通信装置２０１は、複数の鍵チェーン格納部２１１ａ〜２１１ｂ、データイメージ入力部２１２、送信パケット生成部２１３、トラストアンカ生成部２１４、ネットワーク通信部２１５、ハッシュ計算部２１６、暗号計算部２１７を含む。
【００８２】
また、図１１に示すように、本実施形態における受信又は転送側の通信装置２０２は、鍵格納部２２１、データイメージ再構成部２２２、ハッシュチェーン検証部２２３、鍵チェーン検証部２２４、トラストアンカ検証部２２５、ネットワーク通信部２２６、ハッシュ計算部２２７を含む。
【００８３】
本実施形態の通信装置２０１は、図２に示す第１の実施形態での構成に対して、鍵チェーン格納部２１１ａ〜２１１ｂを複数保持する点が異なる。この複数の鍵チェーン格納部２１１ａ〜２１１ｂは、図９に示すグループに対応するだけの数の鍵チェーンを維持している。例えば、図９に示すグループＧ１とグループＧ２の２つのグループがあったとすると、本実施形態の通信装置２０１はグループＧ１用の鍵チェーンとグループＧ２用の鍵チェーンの２つの鍵チェーンを持つ構成になる。
【００８４】
通信装置２０２と通信装置２０３はグループＧ１用の共有鍵が事前に設定されており、通信装置２０４〜２０７はグループＧ２用の共有鍵が事前に設定されている点が、第１の実施形態と異なる構成である。
【００８５】
図１２を参照すると、通信装置２０１がデータイメージから生成するパケット構成を示しており、トラストアンカパケット、各パケットに含まれる鍵、次のパケットに対する鍵付きハッシュ値のそれぞれが通信装置が所属するグループの数に等しい分だけ含まれる点が、第１の実施形態と異なる。
【００８６】
第１の実施形態との動作の違いを説明すると、本実施形態の通信装置２０１は、パケットを生成するときに第１の実施形態では一つの鍵チェーンを使用して、鍵付きハッシュ値の算出、パケットへの付与を行っていたのに対し、本実施形態では維持する鍵チェーンの数だけそれぞれの鍵を用いて鍵付きハッシュ値の算出を行う。さらに、算出した鍵付きハッシュ値と算出に用いた鍵のペアをパケットに含めるが、このとき、このペアも鍵チェーンの数だけパケットに含める点が異なる。
【００８７】
図１２を用いてより具体的に説明する。ここで、説明を簡単にするため最初に送信されるトラストアンカパケットから順に説明するが、実際は第１の実施形態と同様に最後に送信されるパケットから再帰的に生成される。
【００８８】
通信装置１はトラストアンカパケットとしてグループ毎にトラストアンカパケットＴを算出する。算出の計算自体は第１の実施形態と同様である。グループがｎ個存在していたとすると、ｎ個のトラストアンカパケットＴ（１）〜Ｔ（ｎ）（符号Ｂ１、Ｂ２で示す）がそれぞれ生成される。通信装置１は、各トラストアンカパケットをまとめて最初のパケットとして送信する（符号Ｂ１１で示す）。
【００８９】
次に、通信装置１は、グループ毎に同様に鍵付きハッシュ値を算出し、グループ毎の鍵付きハッシュ値及び算出に用いた鍵のペアをそれぞれパケットに含める（符号Ｂ３〜Ｂ７で示す）。なお、このときデータ部分Ｄは全グループで共通なので一つのみでかまわない。すなわち、２番目のパケットとして、データ部分Ｄ（１）（符号Ｂ３で示す）と、グループＧ１向けの算出に用いた鍵Ｋ（１＿１）（符号Ｂ４で示す）と鍵付きハッシュ値Ｈ（１＿１）（符号Ｂ５で示す）から、グループＧｎ向けの算出に用いた鍵Ｋ（ｎ＿１）（符号Ｂ６で示す）と鍵付きハッシュ値Ｈ（ｎ＿１）（符号Ｂ７で示す）とをまとめてパケットとして送信する（符号Ｂ１２で示す）。
【００９０】
以降、同様にパケット生成及び送信を行う。最後のパケットについては第１の実施形態と同様の処理に基づきグループ毎の鍵Ｋ（１＿Ｌ）からＫ（ｎ＿Ｌ）（符号Ｂ９、Ｂ１０で示す）を最後のデータ部分Ｄ（Ｌ）（符号Ｂ８で示す）とともにパケットとして送信する（符号Ｂ１３で示す）。
【００９１】
次に、本実施形態のグループＧ１に属する通信装置２でのパケット受信時の動作について第１の実施形態と異なる部分を中心に説明する。
【００９２】
この実施形態の通信装置２は、通信装置１からのパケットを受信すると通信装置２０２自身が属するグループに関係する箇所のみを使用し、他のグループに関係する箇所に対しては何もしない以外は第１の実施形態と同様の動作となる。
【００９３】
より具体的に説明すると、通信装置２０２は図１２に示すトラストアンカパケット（符号Ｂ１１で示す）を受信すると、グループＧ１に関係する箇所であるＴ（１）（符号Ｂ１で示す）のみを自身宛のデータと認識し、Ｔ（１）をグループＧ１のトラストアンカパケットとして第１の実施形態と同様の処理を行う。
【００９４】
さらに、通信装置２０２は図１２に示すパケット（符号Ｂ１２で示す）を受信すると、グループＧ１に関係する箇所であるデータ部分Ｄ（１）と鍵Ｋ（１＿１）そして鍵付きハッシュ値Ｈ（１＿１）（符号Ｂ３からＢ５で示す）を自身宛のデータと認識し、第１の実施形態と同様の処理を行う。
【００９５】
以降、同様に処理することにより、グループ毎に異なる鍵チェーンを用いることが可能となる。
【００９６】
なお、通信装置２０２は通信装置２０１から受信したパケットを次のホップに属する通信装置へ転送する動作を行う。図９を例にとると、通信装置２０４及び通信装置２０５へパケットが転送される。このとき、通信装置２は、パケットをそのまま転送するような動作であってもよいし、自身に関係する部分を削除したのちパケットを転送するような動作であってもかまわない。
【００９７】
より具体的には、図１２の符号Ｂ１２で示すパケットを例にとると、グループＧ１に関係する箇所である鍵Ｋ（１＿１）（符号Ｂ４で示す）及び鍵付きハッシュ値Ｈ（１＿１）（符号Ｂ５で示す）を削除し、それ以外を転送するような構成となる。このとき、データ部分Ｄ（１）は全グループ共通となるため削除しない。
【００９８】
次に、第３の実施形態の効果について説明する。この実施形態の効果は、もし鍵が漏れてしまった場合に第１の実施形態よりもその影響範囲を小さくすることができることである。これは、鍵を共通で使用する通信装置の範囲を限定するため、あるグループ用の鍵が漏れた場合であっても他のグループ用の鍵には影響しないからである。
【００９９】
さらに、通信装置がパケットを転送するときの通信オーバーヘッドを削減できることである。これは、通信装置が自身のグループに関する箇所を削除してから次の通信装置へ転送するよう構成されているからである。
【０１００】
本実施形態では通信装置で用いる鍵付きハッシュ値のサイズはグループによらず同一の構成としていたが、このハッシュ値のサイズはグループ毎に異なる値であってもよい。この場合、オリジナルのハッシュ関数が算出する出力２０バイトのうち一部（例えば最後の数バイト）を用いる。サイズの例としては、グループＧ１用には６バイトのハッシュ値を用いて、グループＧ２用には７バイトのハッシュ値を用いる。
【０１０１】
ハッシュ値のサイズをグループ毎に異なる値にする構成と、上述の通信装置が自身のグループに関する箇所を削除してから次の通信装置へ転送するよう構成が組み合わせて利用されている場合、さらにパケットの偽装をしにくくすることができることである。これは、前の通信装置から転送された不要な箇所が削除されたパケットを受け取って初めて通信装置は自身に関係する箇所が判明するため、攻撃者がもし正当な鍵を用いた場合であっても途中に含まれる鍵及び鍵付きハッシュ値の区切りを見分けるのが困難にできるからである。
【０１０２】
第３の実施形態は、第１の実施形態もしくは第２の実施形態のどちらとも組み合わせて利用することが可能である。
【０１０３】
以上の如く、本発明の第１の態様は、送信側の通信装置と、受信又は転送側の通信装置と、前記送信側の通信装置と前記受信又は転送側の通信装置との間を接続するネットワークとを備え、完全性を保証するための通信システムであって、前記送信側の通信装置は、一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを格納する手段と、分割された送信するデータイメージに対して順に前記鍵チェーンを順に用いて、データ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成する手段と、生成されたパケットを前記ネットワークに送信する手段とを備え、前記受信又は転送側の通信装置は、前記ネットワークからのパケットを受信する手段と、パケットの正当性を確認するための鍵を格納する手段と、前記格納した鍵に基づき受信したパケットに含まれる鍵が連続したハッシュ値となっていることを計算し、次の認証子を含むパケット全体に対する鍵付きハッシュ値を算出し、一つ先のパケットに含まれる計算済みの鍵付きハッシュ値と同じであるかを比較することによって認証子を検証する手段とを備えることを特徴とする通信システムである。
【０１０４】
また、本発明の第２の態様は、上記態様において、前記認証子を生成する手段は、送信するパケットを次のパケットに含まれる鍵と、次のパケット全体に対する鍵付きハッシュ値で構成し、さらに次のパケットに含まれる鍵で暗号化し、前記認証子を検証する手段は、受信するパケットを次のパケットに含まれる鍵の正当性を確認した後、パケットを復号して次のパケットの鍵付きハッシュ値を取得することを特徴とする。
【０１０５】
また、本発明の第３の態様は、上記態様において、前記認証子を生成する手段は、各パケットに含まれる鍵を先のパケットに含まれる鍵を用いて暗号化し、前記認証子を検証する手段は、パケットに含まれる暗号化された鍵を先に取得した鍵で復号することにより鍵を取得することを特徴とする。
【０１０６】
また、本発明の第４の態様は、上記態様において、前記認証子を生成する手段は、２以上の鍵チェーンを備え、それぞれの鍵チェーンを用いて２以上の認証子を算出し、前記認証子を検証する手段は、２以上の認証子のうちどれか１つの認証子を検証することを特徴とする。
【０１０７】
また、本発明の第５の態様は、上記態様において、前記認証子を生成する手段は、２以上の鍵チェーンを備え、それぞれの鍵チェーンを用いて２以上の認証子を算出し、前記認証子を検証する手段は、データ部分に引き続く最初の認証子を検証し、検証した認証子及びそれに関する鍵をパケットから削除したのち次の通信装置へ転送することを特徴とする。
【０１０８】
また、本発明の第６の態様は、上記態様において、前記各パケットに含まれる認証子の長さは各鍵チェーン毎に異なる長さであることを特徴とする。
【０１０９】
また、本発明の第７の態様は、上記態様において、前記ネットワークは、無線通信路であることを特徴とする。
【０１１０】
本発明の第８の態様は、一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを格納する手段と、分割された送信するデータイメージに対して順に前記鍵チェーンを順に用いてデータ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成する手段と、生成されたパケットをネットワークに送信する手段とを備えたことを特徴とする通信装置である。
【０１１１】
また、本発明の第９の態様は、上記態様において、前記認証子を生成する手段は、送信するパケットを次のパケットに含まれる鍵と、次のパケット全体に対する鍵付きハッシュ値で構成し、さらに次のパケットに含まれる鍵で暗号化することを特徴とする。
【０１１２】
また、本発明の第１０の態様は、上記態様において、前記認証子を生成する手段は、各パケットに含まれる鍵を先のパケットに含まれる鍵を用いて暗号化することを特徴とする。
【０１１３】
また、本発明の第１１の態様は、上記態様において、前記認証子を生成する手段は、２以上の鍵チェーンを備え、それぞれの鍵チェーンを用いて２以上の認証子を算出することを特徴とする。
【０１１４】
また、本発明の第１２の態様は、上記態様において、各パケットに含まれる認証子の長さは各鍵チェーン毎に異なる長さであることを特徴とする。
【０１１５】
また、本発明の第１３の態様は、ネットワークからのパケットを受信する手段と、パケットの正当性を確認するための鍵を格納する手段と、前記格納した鍵に基づき前記受信したパケットに含まれる鍵が連続したハッシュ値となっていることを計算し、次の認証子を含むパケット全体に対する鍵付きハッシュ値を算出し、一つ先のパケットに含まれる計算済みの鍵付きハッシュ値と同じであるかを比較することによって認証子を検証する手段とを備えたことを特徴とする通信装置である。
【０１１６】
また、本発明の第１４の態様は、上記態様において、前記認証子を検証する手段は、受信するパケットを次のパケットに含まれる鍵の正当性を確認した後、パケットを復号して次のパケットの鍵付きハッシュ値を取得することを特徴とする。
【０１１７】
また、本発明の第１５の態様は、上記態様において、前記認証子を検証する手段は、パケットに含まれる暗号化された鍵を先に取得した鍵で復号することにより鍵を取得することを特徴とする。
【０１１８】
また、本発明の第１６の態様は、上記態様において、前記認証子を検証する手段は、２以上の認証子のうちどれか１つの認証子を検証することを特徴とする。
【０１１９】
また、本発明の第１７の態様は、上記態様において、前記認証子を検証する手段は、データ部分に引き続く最初の認証子を検証し，検証した認証子及びそれに関する鍵をパケットから削除したのち次の通信装置へ転送することを特徴とする。
【０１２０】
また、本発明の第１８の態様は、送信側では、一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを格納しておき、分割された送信するデータイメージに対して順に前記鍵チェーンを順に用いてデータ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成し、生成されたパケットをネットワークに送信し、受信側では、パケットの正当性を確認するための鍵を格納しておき、前記ネットワークからのパケットを受信し、前記格納した鍵に基づき受信したパケットに含まれる鍵が連続したハッシュ値となっていることを計算し、次の認証子を含むパケット全体に対する鍵付きハッシュ値を算出し、一つ先のパケットに含まれる計算済みの鍵付きハッシュ値と同じであるかを比較することによって認証子を検証することを特徴とするデータ通信方法である。
【０１２１】
また、本発明の第１９の態様は、上記態様において、前記認証子の生成は、送信するパケットを次のパケットに含まれる鍵と、次のパケット全体に対する鍵付きハッシュ値で構成し、さらに次のパケットに含まれる鍵で暗号化し、前記認証子の検証は、受信するパケットを次のパケットに含まれる鍵の正当性を確認した後、パケットを復号して次のパケットの鍵付きハッシュ値を取得することを特徴とする。
【０１２２】
また、本発明の第２０の態様は、上記態様において、前記認証子の生成は、各パケットに含まれる鍵を先のパケットに含まれる鍵を用いて暗号化し、前記認証子を検証する手段は、パケットに含まれる暗号化された鍵を先に取得した鍵で復号することにより鍵を取得することを特徴とする。
【０１２３】
また、本発明の第２１の態様は、上記態様において、前記認証子の生成は、２以上の鍵チェーンを備え、それぞれの鍵チェーンを用いて２以上の認証子を算出し、前記認証子の検証は、２以上の認証子のうちどれか１つの認証子を検証することを特徴とする。
【０１２４】
また、本発明の第２２の態様は、上記態様において、前記認証子の生成は、２以上の鍵チェーンを備え、それぞれの鍵チェーンを用いて２以上の認証子を算出し、前記認証子の検証は、データ部分に引き続く最初の認証子を検証し、検証した認証子及びそれに関する鍵をパケットから削除したのち次の通信装置へ転送することを特徴とする。
【０１２５】
また、本発明の第２３の態様は、上記態様において、各パケットに含まれる認証子の長さは各鍵チェーン毎に異なる長さであることを特徴とする。
【０１２６】
また、本発明の第２４の態様は、上記態様において、前記ネットワークは、無線通信路であることを特徴とする。
【０１２７】
また、本発明の第２５の態様は、一連の鍵がそれぞれの鍵に対するハッシュ値の繰り返しで構成される鍵チェーンを格納する処理と、分割された送信するデータイメージに対して順に前記鍵チェーンを順に用いてデータ部分と鍵とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与し、以後、一つ前のパケットでのデータ部分と鍵と先に算出した鍵付きハッシュ値とから鍵付きハッシュ値を算出して一つ前に送信されるパケットに対して付与することを繰り返すことによって各パケットに対する認証子を生成する処理と、生成されたパケットをネットワークに送信する処理とを通信装置に実行させることを特徴とするプログラムである。
【０１２８】
また、本発明の第２６の態様は、上記態様において、ネットワークからのパケットを受信する処理と、パケットの正当性を確認するための鍵を格納する処理と、前記格納した鍵に基づき前記受信したパケットに含まれる鍵が連続したハッシュ値となっていることを計算し、次の認証子を含むパケット全体に対する鍵付きハッシュ値を算出し、一つ先のパケットに含まれる計算済みの鍵付きハッシュ値と同じであるかを比較することによって認証子を検証する処理とを通信装置に実行させることを特徴とするプログラムである。
【０１２９】
また、本発明の第２７の態様は、上記データ通信方法の機能を実現するためのデータ通信プログラムである。
【０１３０】
以上、実施の形態及び態様をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び態様に限定されるものではなく、その技術的思想の範囲内において様々に変形し実施することが出来る。
【０１３１】
本出願は、２００８年８月２９日に出願された日本出願特願２００８−２２１８７２号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１３２】
本発明によるプログラムイメージ更新のための完全性保証方式は、無線通信を用いたネットワークにおける安全なプログラムイメージの配布に有用である。特にＩＥＥＥ８０２．１５．４やＺｉｇＢｅｅに代表される無線通信プロトコルを用いたワイヤレスセンサーネットワーク分野でのＰＣに比べて能力が制限された装置において有効である。
【符号の説明】
【０１３３】
１〜７，２０１〜２０７  通信装置
１０，２１０  ネットワーク
１１，１１１，２１１  鍵チェーン格納部
１２，１１２，２１２  データイメージ入力部
１３，１１３，２１３  送信パケット生成部
１４，１１４，２１４  トラストアンカ生成部
１５，１１５，２１５，２６，１２６，２２６  ネットワーク通信部
１６，１１６，２１６，２７，１２７，２２７  ハッシュ計算部
１７，１１７，２１７，２８，１２８，２２８  暗号計算部
１１８  送信鍵暗号部
２１，１２１，２２１  鍵格納部
２２，１２２，２２２  データイメージ再構成部
２３，１２３，２２３  ハッシュチェーン検証部
２４，１２４，２２４  鍵チェーン検証部
２５，１２５，２２５  トラストアンカ検証部
１２９  鍵復号部
【図１】
0005556659.tif 000002
【図２】
0005556659.tif 000003
【図３】
0005556659.tif 000004
【図４】
0005556659.tif 000005
【図５】
0005556659.tif 000006
【図６】
0005556659.tif 000007
【図７】
0005556659.tif 000008
【図８】
0005556659.tif 000009
【図９】
0005556659.tif 000010
【図１０】
0005556659.tif 000011
【図１１】
0005556659.tif 000012
【図１２】
0005556659.tif 000013