(57)【特許請求の範囲】
【請求項１】
複数のノードのうちの任意のノード間で暗号通信を行う際に用いる共通鍵を共有する共通鍵生成システムであって、
前記任意のノードのうちの一方のノードは、
該ノードに対する物理的な変化の時間間隔情報から数字列要素を生成する数字列要素生成部と、
前記数字列要素に基づいて基本数字列を生成するとともに、該基本数字列を類似数字列に置換する数字列生成部と、
前記基本数字列及び前記類似数字列のそれぞれを暗号化し、暗号値と対応づけて記憶する暗号値リストを作成する暗号化部と、
受信する暗号値を上記暗号値リストから検索する一致信号判定部とを具備し、
前記任意のノードのうちの他方のノードは、
前記ノードに対する物理的な変化の時間間隔情報から数字列要素を生成する数字列要素生成部と、
前記数字列要素に基づいて基本数字列を生成する数字列生成部と、
前記基本数字列を前記一方のノードと同じ暗号化規則で暗号化する暗号化部と、
生成した暗号値を前記一方のノードに送信する送信部とを具備し、
前記他方のノードの送信部から送信された暗号値を上記一致信号判定部で検索し、
検索した結果に基づいて共通鍵を生成することを特徴とする共通鍵生成システム。
【請求項２】
複数のノードのうちの任意のノード間で暗号通信を行う際に用いる共通鍵を共有する共通鍵生成システムであって、
前記任意のノードのうちの一方のノードは、
該ノードに対して時系列に複数回与えられた物理的な変化の各時間間隔値を検出し、検出した各時間間隔値から、あらかじめ設定された所定の数字列要素生成規則に従い複数の数字列要素を生成する数字列要素生成部と、
該数字列要素生成部で生成した複数の数字列要素を並べて基本数字列を生成するとともに、該基本数字列を構成する前記各数字列要素毎に、その数字列要素の最下位桁の値に対し、所定値ｘ（ｘ＝１，２，・・・ｎ ）をプラスマイナスして複数の類似数字列を生成する数字列生成部と、
前記生成した基本数字列及び類似数字列のそれぞれを暗号化し、暗号値と対応づけて記憶する暗号値リストを作成する暗号化部と、
前記任意のノードのうちの他方のノードから暗号値を受信し、受信した暗号値と、暗号値リスト中の暗号値とを比較し、一致する暗号値が暗号値リスト中にあるか否かを検索する暗号値検索部と、
前記暗号値検索部で一致する暗号値があると判断した場合、一致信号を前記他方のノードに送信する送信部とを備え、
前記任意のノードのうちの他方のノードは、
該ノードに対して時系列に複数回与えられた物理的な変化の各時間間隔値を検出し、検出した各時間間隔値から、あらかじめ設定された所定の数字列要素生成規則に従い複数の数字列要素を生成する数字列要素生成部と、
該数字列要素生成部で生成した複数の数字列要素を並べて基本数字列を生成する数字列生成部と、
前記生成した基本数字列を前記一方のノードと同じ暗号化規則で暗号化する暗号化部と、
生成した暗号値を前記一方のノードに送信する送信部とを備え、
前記一方のノードにおいては前記暗号値検索部で一致すると判断した場合、また、前記他方のノードにおいては前記一方のノードから一致信号を受信した場合に、それぞれ自身が生成した基本数字列を共通鍵と決定することを特徴とする共通鍵生成システム。
【請求項３】
前記数字列要素生成規則は、各時間間隔値のそれぞれについて、最上位桁からあらかじめ設定された有効桁までの数値を数字列要素とするものであることを特徴とする請求項２記載の共通鍵生成システム。
【請求項４】
複数のノードのうちの任意のノード間で暗号通信を行う際に用いる共通鍵を共有する共通鍵生成システムであって、
前記任意のノードのうちの一方のノードは、
該ノードに対して時系列に複数回与えられた物理的な変化の各時間間隔値を検出し、検出した複数の時間間隔値において、全ての隣接する２つの時間間隔値の比を取り、その各時間比のそれぞれを、あらかじめ決められた数字符号規則に従って変換して数字列要素として生成する数字列要素生成部と、
該数字列要素生成部で生成した複数の数字列要素を並べて基本数字列を生成するとともに、該基本数字列を構成する前記各数字列要素毎に、その数字列要素を、前記数字符号規則における隣接する符号に置換して複数の類似数字列を生成する数字列生成部と、
前記生成した基本数字列及び類似数字列のそれぞれを暗号化し、暗号値と対応づけて記憶する暗号値リストを作成する暗号化部と、
前記任意のノードのうちの他方のノードから暗号値を受信し、受信した暗号値と、暗号値リスト中の暗号値とを比較し、一致する暗号値が暗号値リスト中にあるか否かを検索する暗号値検索部と、
前記暗号値検索部で一致する暗号値があると判断した場合、一致信号を前記他方のノードに送信する送信部とを備え、
前記任意のノードのうちの他方のノードは、
該ノードに対して時系列に複数回与えられた物理的な変化の各時間間隔値を検出し、検出した複数の時間間隔値において、全ての隣接する２つの時間間隔値の比を取り、その各時間比のそれぞれを、あらかじめ決められた数字符号規則に従って変換して数字列要素として生成する数字列要素生成部と、
該数字列要素生成部で生成した複数の数字列要素を並べて基本数字列を生成する数字列生成部と、
前記生成した基本数字列を前記一方のノードと同じ暗号化規則で暗号化する暗号化部と、
生成した暗号値を前記一方のノードに送信する送信部とを備え、
前記一方のノードにおいては前記暗号値検索部で一致すると判断した場合、また、前記他方のノードにおいては前記一方のノードから一致信号を受信した場合に、それぞれ自身が生成した基本数字列を共通鍵と決定することを特徴とする共通鍵生成システム。
【請求項５】
前記任意のノードのそれぞれに、ノードの物理的な衝突を検出する検出手段を設け、前記各ノード同士をあらかじめ設定されたパターンに従って複数回衝突させ、その衝突の時間間隔を、前記複数の時間間隔値として取得することを特徴とする請求項２乃至請求項４の何れかに記載の共通鍵生成システム。
【請求項６】
前記物理的な変化を、光、音、風力、温度及び湿度の何れかの変化としたことを特徴とする請求項１乃至請求項４の何れかに記載の共通鍵生成システム。
【請求項７】
それぞれマイクロコンピュータを有する複数のノードのうちの任意のノード間で暗号通信を行う際に用いる共通鍵を前記任意のノードそれぞれで生成し共有する共通鍵生成方法であって、
前記任意のノードそれぞれに対して物理的な変化を与え、その変化の時間間隔情報から前記任意のノードそれぞれが、数字列要素を生成する数字列要素生成工程を行い、
前記任意のノードのうちの一方のノードは、
自身が生成した数字列要素に基づいて基本数字列を生成するとともに、該基本数字列を類似数字列に置換する数字列生成工程と、
前記生成した基本数字列及び前記類似数字列のそれぞれを暗号化し、暗号値と対応づけて記憶する暗号値リストを作成する暗号化工程と、
前記任意のノードのうちの他方のノードから暗号値を受信部で受信し、受信した暗号値と、暗号値リスト中の暗号値とを比較し、一致する暗号値が暗号値リスト中にあるか否かを検索する暗号値検索工程と、
前記暗号値検索工程で一致する暗号値があると判断した場合、一致信号を前記他方のノードに送信部から送信するとともに、その一致する暗号値に対応する数字列を共通鍵とする共通鍵決定工程とを有し、各工程をマイクロコンピュータで実施し、
前記他方のノードは、
自身が生成した数字列要素に基づき基本数字列を生成する数字列生成工程と、
前記生成した基本数字列を前記一方のノードと同じ暗号化規則で暗号化する暗号化工程と、
生成した暗号値を前記一方のノードに送信する送信工程と、
前記一方のノードから一致信号を受信した場合、自身が生成した基本数字列を共通鍵と決定する共通鍵決定工程とを有し、各工程をマイクロコンピュータで実施する
ことを特徴とする共通鍵生成方法。
【請求項８】
それぞれマイクロコンピュータを有する複数のノードのうちの任意のノード間で暗号通信を行う際に用いる共通鍵を前記任意のノードそれぞれで生成し共有する共通鍵生成方法であって、
前記任意のノードのそれぞれに物理的な変化を時系列に複数回与え、その変化が生じる各時間間隔値を前記任意のノードそれぞれで検出し、前記任意のノードのそれぞれが、自身が検出した各時間間隔値のそれぞれから、あらかじめ設定された所定の数字列要素生成規則に従い複数の数字列要素を生成する数字列要素生成工程を行い、
前記任意のノードのうちの一方のノードは、
自身が生成した複数の数字列要素を並べて基本数字列を生成するとともに、該基本数字列を構成する前記各数字列要素毎に、その数字列要素の最下位桁の値に対し、所定値ｘ（ｘ＝１，２，・・・ｎ ）をプラスマイナスして複数の類似数字列を生成する数字列生成工程と、
前記生成した基本数字列及び類似数字列のそれぞれを暗号化し、暗号値と対応づけて記憶する暗号値リストを作成する暗号化工程と、
前記任意のノードのうちの他方のノードから暗号値を受信部で受信し、受信した暗号値と、暗号値リスト中の暗号値とを比較し、一致する暗号値が暗号値リスト中にあるか否かを検索する暗号値検索工程と、
前記暗号値検索工程で一致する暗号値があると判断した場合、一致信号を前記他方のノードに送信部から送信するとともに、その一致する暗号値に対応する数字列を共通鍵とする共通鍵決定工程とを有し、各工程をマイクロコンピュータで実施し、
前記他方のノードは、
自身が生成した複数の数字列要素を並べて基本数字列を生成する数字列生成工程と、
前記生成した基本数字列を前記一方のノードと同じ暗号化規則で暗号化する暗号化工程と、
生成した暗号値を前記一方のノードに送信する送信工程と、
前記一方のノードから一致信号を受信した場合、自身が生成した基本数字列を共通鍵と決定する共通鍵決定工程とを有し、各工程をマイクロコンピュータで実施する
ことを特徴とする共通鍵生成方法。
【請求項９】
前記数字列要素生成規則は、各時間間隔値のそれぞれについて、最上位桁からあらかじめ設定された有効桁までの数値を数字列要素とするものであることを特徴とする請求項８記載の共通鍵生成方法。
【請求項１０】
それぞれマイクロコンピュータを有する複数のノードのうちの任意のノード間で暗号通信を行う際に用いる共通鍵を前記任意のノードそれぞれで生成し共有する共通鍵生成方法であって、
前記任意のノードのそれぞれに物理的な変化を時系列に複数回与え、その変化が生じる各時間間隔値を前記任意のノードそれぞれで検出し、前記任意のノードのそれぞれは、自身が検出した複数の時間間隔値において、全ての隣接する２つの時間間隔値の比を取り、その各時間比のそれぞれを、あらかじめ決められた数字符号規則に従って変換して数字列要素として生成する工程に代えた数字列要素生成工程を行い、
前記任意のノードのうちの一方のノードは、
自身が生成した複数の数字列要素を並べて基本数字列を生成するとともに、該基本数字列を構成する前記各数字列要素毎に、その数字列要素を、前記数字符号規則における隣接する符号に置換して複数の類似数字列を生成する数字列生成工程と、
前記生成した基本数字列及び類似数字列のそれぞれを暗号化し、暗号値と対応づけて記憶する暗号値リストを作成する暗号化工程と、
前記任意のノードのうちの他方のノードから暗号値を受信部で受信し、受信した暗号値と、暗号値リスト中の暗号値とを比較し、一致する暗号値が暗号値リスト中にあるか否かを検索する暗号値検索工程と、
前記暗号値検索工程で一致する暗号値があると判断した場合、一致信号を前記他方のノードに送信部から送信するとともに、その一致する暗号値に対応する数字列を共通鍵とする共通鍵決定工程とを有し、各工程をマイクロコンピュータで実施し、
前記他方のノードは、
自身が生成した複数の数字列要素を並べて基本数字列を生成する数字列生成工程と、
前記生成した基本数字列を前記一方のノードと同じ暗号化規則で暗号化する暗号化工程と、
生成した暗号値を前記一方のノードに送信する送信工程と、
前記一方のノードから一致信号を受信した場合、自身が生成した基本数字列を共通鍵と決定する共通鍵決定工程とを有し、各工程をマイクロコンピュータで実施し
ことを特徴とする共通鍵生成方法。
【請求項１１】
前記任意のノードのそれぞれに、ノードの物理的な衝突を検出する検出手段を設け、前記各ノード同士をあらかじめ設定されたパターンに従って複数回衝突させ、その衝突の時間間隔を、前記複数の時間間隔値として取得することを特徴とする請求項８乃至請求項１０の何れかに記載の共通鍵生成方法。
【請求項１２】
前記物理的な変化を、光、音、風力、温度及び湿度の何れかの変化としたことを特徴とする請求項７乃至請求項１０の何れかに記載の共通鍵生成方法。
【請求項１３】
請求項７乃至請求項１２の何れかの共通鍵生成方法を用いて共通鍵の生成を行うノードであって、前記一方のノードで行われる前記各工程それぞれを行う各処理部を備えていることを特徴とするノード。
【請求項１４】
請求項７乃至請求項１２の何れかの共通鍵生成方法を用いて共通鍵の生成を行うノードであって、前記他方のノードで行われる前記各工程のそれぞれを行う各処理部を備えていることを特徴とするノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通鍵暗号方式に基づいて無線通信を行う無線通信機能を備えたノード（機器）同士で、第三者に盗聴されずに互いに共通の共通鍵を生成し共有するための技術に関する。
【背景技術】
【０００２】
従来、共通鍵を生成する方法として、暗号化通信を行いたい２つのノードそれぞれに同じ物理的変化を与え、その物理的変化に基づき各ノードそれぞれで共通の共有情報を生成し、その共有情報に基づいて共通鍵を生成する方法がある。例えば、２つのノードのそれぞれに押しボタンを設け、各ノードそれぞれの押しボタンを、ユーザが同じ操作パターンで押下することにより、各ノードそれぞれで共通の共有情報（押下回数及びタイミング（押下の時間間隔））を取得し、その共通の共有情報を元に、各ノードそれぞれが共通鍵を生成する方法があった（例えば、特許文献１参照）。この方法によれば、ノード間で暗号化通信を行う場合に、互いに事前に共通鍵を保持していなくとも、それぞれのノードで共通鍵を生成することができ、その共通鍵を用いて暗号化通信を行うことが可能となる。
【特許文献１】特許第３７０７６６０号公報（実施の形態８）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記特許文献１では、ユーザが、それぞれのノードにおいて、所定のタイミングで正しく押しボタンの操作ができたとしても、その操作を検出する各ノードのセンサーにおいて、サンプリング処理で誤差が発生した場合、各ノードで検出した情報が違ってしまう場合がある。この場合、同じ共通鍵を生成できない不都合が生じる。このようなことが生じる頻度は低いものの、必ずしも同じ共通鍵を生成できるとは限らないという不都合があった。
【０００４】
具体的には、各ノードに備えた押しボタンのオン、オフのそれぞれの時間長を、各ノードそれぞれの時計で計測し、その時間長に基づいて共通鍵を生成するようにしているが、この計測用の時計にノード間で多少のずれがあると、時計で計測される時間長が異なってしまう。この場合、同じ共通鍵を生成できない可能性が生じる。
【０００５】
より詳細には、例えば、特許文献１における図３１において、例えば通信装置（ノード）Ａではタイミングパターンが４９となり、通信装置（ノード）Ｂではタイミングパターンが５０となった場合、通信装置Ａで生成される共通鍵と、通信装置Ｂで生成される共通鍵が不一致となる。
【０００６】
本発明はこのような点に鑑みなされたもので、物理的変化の計測誤差を許容でき、各ノードそれぞれで安定的に共通鍵を生成し共有することが可能な共通鍵生成システム、共通鍵生成方法及びそれを用いるノードを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る共通鍵生成システムは、複数のノードのうちの任意のノード間で暗号通信を行う際に用いる共通鍵を共有する共通鍵生成システムであって、任意のノードのうちの一方のノードは、ノードに対する物理的な変化の時間間隔情報から数字列要素を生成する数字列要素生成部と、数字列要素に基づいて基本数字列を生成するとともに、基本数字列を類似数字列に置換する数字列生成部と、基本数字列及び類似数字列のそれぞれを暗号化し、暗号値と対応づけて記憶する暗号値リストを作成する暗号化部と、受信する暗号値を上記暗号値リストから検索する一致信号判定部とを具備し、任意のノードのうちの他方のノードは、ノードに対する物理的な変化の時間間隔情報から数字列要素を生成する数字列要素生成部と、数字列要素に基づいて基本数字列を生成する数字列生成部と、基本数字列を一方のノードと同じ暗号化規則で暗号化する暗号化部と、生成した暗号値を一方のノードに送信する送信部とを具備し、他方のノードの送信部から送信された暗号値を上記一致信号判定部で検索し、検索した結果に基づいて共通鍵を生成するものである。
【発明の効果】
【０００８】
本発明によれば、２つのノードのそれぞれにおける物理的変化の計測誤差を許容でき、各ノードそれぞれで安定的に共通鍵を生成し共有することが可能となる。
【発明を実施するための最良の形態】
【０００９】
本発明の共通鍵生成方法は、複数のノードのうちの任意のノード間で暗号通信を行う際に用いる共有鍵の生成方法であって、任意の少なくとも２つのノードそれぞれに物理的な変化を時系列に複数回与え、その変化が生じる各時間間隔値を２つのノードそれぞれで検出し、その検出した情報を２つのノードで共有可能な情報（後述の数字列に相当）とし、その共有情報に基づいて各ノードそれぞれが共通鍵を生成するものである。各ノードそれぞれに物理的な変化を時系列に複数回与える手段として、以下に説明する実施の形態では、各ノードそれぞれに設けたスイッチ同士を衝突させるようにした例で説明を行うが、これに限られたものではない。
【００１０】
実施の形態１．
図１は、本実施の形態１における共通鍵生成方法を用いたノードの概略構成を示す図である。
ノード１及びノード２は、それぞれ外部に露出したスイッチ（ＳＷ）１０，３０を備えており、ノード１のスイッチ１０とノード２のスイッチ３０を互いに複数回衝突させ、その衝突によりスイッチがオンする時間間隔に基づき、各ノード１，２それぞれで共有情報を生成し、その共有情報を元に後述の処理を行って共通鍵を生成する。なお、この例では、外部に露出したスイッチ１０，３０を用いているが、ノードの筐体内に衝突検出手段を設置しておき、筐体同士を衝突させることによって、衝突の時間間隔を検出するようにしてもよい。
【００１１】
ここで、本実施の形態１は、同じ物理的変化を検出する環境下（ここでは、互いのノードのスイッチを衝突させてスイッチのオンオフのタイミングを同期させる環境下）であってもなお、その物理的変化を検出したセンサー情報（この例では、スイッチオンの時間間隔）をサンプリング処理する際の誤差により、互いのノードがそれぞれ検出したセンサー情報が異なり、そのセンサー情報に基づき生成する共有情報（後述の基本数字列に相当）の一部が異なる場合に、その誤差が予め設定した後述の類似範囲内であれば、一方のノードが生成した数字列に基づいて、両ノード間で使用する共通鍵を生成できることに特徴を有するものである。
【００１２】
以下、ノード１を親ノードとし、ノード２を子ノードとして説明する。
図２は、本実施の形態１における共通鍵生成システムの親ノード１の機能ブロック図である。
親ノード１は、マイクロコンピュータを有し、無線通信可能な機器で構成され、具体的には例えば、電子レンジ、エアコン、防犯センサー、テレビ、リモコン等の装置に組み込まれて使用される小型機器を想定している。そして、親ノード１は、スイッチ１０と、数字列要素生成部１１と、数字列生成部１２と、暗号化部１３と、暗号値検索部１４と、数字列記録部１５と、受信部１６と、送信部１７と、時計１８とを備えている。
【００１３】
数字列要素生成部１１は、衝突によりスイッチ１０がオンする時間間隔を時計１８の基本クロックのもとに観測する。そして、観測した各時間間隔値のそれぞれから、あらかじめ設定された所定の数字列要素生成規則に従い数字列要素を生成し、数字列生成部１２に出力する。
【００１４】
数字列生成部１２は、数字列要素生成部１１から入力された複数の数字列要素を並べた基本数字列を生成する。そして、その生成した基本数字列と、基本数字列の各桁それぞれの値を、所定の置換規則に従い異なる値に置換して生成した複数の類似数字列とからなる、一群の数字列の集合を生成し、これを暗号化部１３に出力する。
【００１５】
暗号化部１３は、数字列生成部１２から入力された一群の数字列のそれぞれを所定の暗号規則に従い暗号化し、暗号値とを対応づけて記憶した暗号値リストを生成し、暗号値検索部１４に出力する。
【００１６】
受信部１６は、子ノード２から送信されてくる信号を受信する処理部であって、子ノード２から後述の暗号値を受信した場合、その暗号値を暗号値検索部１４に出力する。
【００１７】
暗号値検索部１４は、暗号化部１３から入力された暗号値リストと、受信部１６から入力された、子ノード２からの暗号値とを比較し、子ノード２からの暗号値と一致する暗号値が暗号値リストの中にあるか否かを検索し、一致する暗号値がある場合、その一致する暗号値に対応する暗号値リスト上の数字列を、親ノード１及び子ノード２で共有可能な数字列として数字列記録部１５に記録すると共に、比較結果が一致したことを示す一致信号を送信部１７を経由して子ノード２に通知する。
【００１８】
図３は、本実施の形態１における共通鍵生成システムの子ノード２の機能ブロック図である。
子ノード２も、親ノード１と同様にマイクロコンピュータを有し、通信機能する機器で構成され、具体的には例えば、電子レンジ、エアコン、防犯センサー、テレビ、リモコン等の機器に組み込まれる小型機器を想定している。そして、子ノード２は、スイッチ３０と、数字列要素生成部３１と、数字列生成部３２と、暗号化部３３と、送信部３４と、受信部３５と、一致信号判定部３６と、数字列記録部３７と、時計３８とを備えている。
【００１９】
数字列要素生成部３１は、親ノード１と同じく、衝突によりスイッチ１０がオンする時間間隔を時計１８の基本クロックのもとに観測し、各時間間隔値のそれぞれから、あらかじめ設定された所定の数字列要素生成規則に従い数字列要素を生成し、数字列生成部３２に出力する。
【００２０】
数字列生成部３２は、数字列要素生成部３１から入力された複数の数字列要素を並べた基本数字列を生成し、これを暗号化部３３に出力する。
【００２１】
暗号化部３３は、数字列生成部３２で生成した基本数字列を親ノード１と同じ所定の暗号規則に従って暗号化し、送信部３４を介して親ノード１に送信する。
【００２２】
受信部３５は、親ノード１から送信されてくる信号を受信する処理部であって、受信した信号を一致信号判定部３６に出力する。
【００２３】
一致信号判定部３６は、受信部３５で受信した親ノード１からの信号の中から、一致信号の有無を判定し、もし一致信号を受信したとなれば、数字列生成部３２で生成した基本数字列を共有可能な数字列として、数字列記録部３７に記録する。ここで、親ノード１からの一致信号とは、上述したように、子ノード２から親ノード１に送信した暗号値が親ノード１が保持する暗号値リスト中のいずれかと一致したことを示すものであり、一致した暗号値に対応する数字列が共有鍵となりえることを示すものである。
【００２４】
図４は、本実施の形態１における処理フローであって、図２に示す親ノード１のスイッチ１０と図３に示す子ノード２のスイッチ３０とを衝突させることにより親ノード１と子ノード２とが共通鍵を生成する際の処理フローを示したものである。
【００２５】
図５は、本実施の形態１において、親ノード１と子ノード２を衝突させてスイッチ１０，３０がオンする時間間隔を模式的に図示したものである。この図では６回衝突させており、ｐ１〜ｐ５の５つのセンサ情報（時間間隔値）が得られている。ここで注意すべきことは、親ノード１及び子ノード２のそれぞれの数字列要素生成部１１，３１が観測する時間間隔値は親ノード１及び子ノード２のそれぞれの時計１８，３８の精度誤差に応じて差が生じる可能性があることである。親ノード１及び子ノード２の時計１８，３１の誤差が少なければその差はごく限られたものになるが、周辺の電子部品の誤差も勘案すると、親ノード１及び子ノード２の時間間隔値が完全に一致することを期待することは難しい。そして、ここでは、時計誤差を原因として３回目に測定された時間間隔の値が親ノード１と子ノード２とで異なっている様子を示している。
【００２６】
以下、図４に示す処理フローの動作をｓ１から順番に図５を併用しながら説明する。
まず、親ノード１は、衝突開始を通知するパケットＡを子ノード２に送信する（ｓ１）。
【００２７】
図６は、パケットのデータ形式と、親ノードと子ノード間で送信される各パケットＡ〜Ｃとを示す図である。
図６に示すように、パケットは、「送信元アドレス」と、「送信先アドレス」と、「データ部」とから構成されている。ステップｓ１で親ノード１から子ノード２に送信されるパケットＡは、「送信元アドレス」に親ノードアドレスが設定され、「送信先アドレス」には何も設定されず（つまり、ブロードキャスト型通信）、「データ部」には衝突開始を意味する、あらかじめ決められた形式の衝突開始通知信号が設定されている。
【００２８】
そして、子ノード２は、このパケットＡ（衝突開始）を受信部３５で受信すると（ｓ２１）、受信したパケットＡのデータ部を解析し、あらかじめ決められた形式の衝突開始通知信号が含まれていれば、「送信元アドレス」で指定されたノード（ここでは親ノード１）が衝突開始を通知していると認識する。そして、衝突準備ができている旨を通知するパケットＢを親ノード１に送信し、衝突準備完了状態となる（ｓ２１ａ）。パケットＢは、図６に示すように、「送信元アドレス」に子ノードアドレスが設定され、「送信先アドレス」に親ノードアドレスが設定され、「データ部」には、衝突準備完了を意味する、あらかじめ決められた形式の衝突準備完了信号が設定されている。なお、子ノード２は、衝突準備完了状態となると、その旨を、子ノード２に設けた報知手段（図示せず）によりユーザに通知するようにしてもよい。
【００２９】
親ノード１は、パケットＡを送信後、例えば規定時間内に子ノード２からパケットＢ（衝突準備完了通知）を受信部１６で受信（ｓ１ａ）した場合、衝突準備完了状態となる。そして、衝突準備完了状態となると、その旨を、親ノードに設けた報知手段（図示せず）によりユーザに通知するようにしてもよい。
【００３０】
そして、ユーザは、親ノード１のスイッチ１０と子ノード２のスイッチ３０を互いに複数回衝突させる。衝突させる度に、親ノード１の数字列要素生成部１１はスイッチ１０のオンオフ変化の時間をそれぞれ観測する。ここでは、衝突時にスイッチがオンする時間の間隔を観測しており、親ノード１では、図５に示すように、０．５３秒、０．２０秒、０．１９秒、０．６４秒、０．４７秒の時間間隔値が得られ（ｓ２）、子ノード２では０．５３秒、０．２０秒、０．２０秒、０．６４秒、０．４７秒の時間間隔値が得られる（ｓ２２）。そして、上述したように、３回目の時間間隔値が親ノード１と子ノード２とで異なっている。
【００３１】
親ノード１の数字列要素生成部１１は、得られた時間間隔値から所定の規則（以下、数字列要素生成規則と称する）に従い、数字列要素を生成する（ｓ３）。ここでは数字列要素生成規則の一例として、最上位桁からあらかじめ決定した有効桁（ここでは小数点以下１位）までの数値を取り出しそれを各数字列要素と定義する。なお、０は省くものとする。よって、ここで得られる各数字列要素は、‘５，２，１，６，４’となる。この数字列要素生成規則はあらかじめ親ノード１と子ノード２で共有されているものとし、子ノード２でも数字列要素生成部３１で同様の処理が行なわれ、各数字列要素として‘５，２，２，６，４’が生成される（ｓ２３）。
【００３２】
親ノード１及び子ノード２が衝突の観測を終えるために、親ノード１は、衝突終了を通知するパケットＣを子ノード２に送信し（ｓ４）、子ノード２はこれを受信する（ｓ２４）。
【００３３】
親ノード１は、衝突終了を通知するパケットＣを送信後、数字列要素生成部１１で生成した各数字列要素を、生成した時間順に並べて作成した基本数字列ｂ０（ここでは図５に示すように数字列ｂ０として‘５２１６４’が得られる。）と、生成した基本数字列ｂ０のうち各数字列要素を、所定の置換規則（以下、数字列要素置換規則と称する。）に従い異なる数字列要素に置換した、複数の類似数字列からなる一群の数字列を生成する（ｓ５）。
【００３４】
数字列要素置換規則は、生成した基本数字列のうち各数字列要素の最下位桁を、あらかじめ設定した所定値ｘ（ｘ＝１，２，・・・ ｎ）だけ増減させた値に置換する規則とする。なお、この例では、各数字列要素の全てが１桁の値であるため、最下位桁はその値そのものとなるが、数字列要素が例えば２桁の値の場合には、１の位の値が最下位桁となる。
【００３５】
ここでは、ｎ＝１とすると、各数字列要素をプラスマイナス１だけ入れ替えるので、以下の複数の類似数字列が生成される。
【００３６】
ｂ１＝‘５２１６３’
ｂ２＝‘５２１６５’
ｂ３＝‘５２１５４’
ｂ４＝‘５２１７４’
ｂ５＝‘５２０６４’
ｂ６＝‘５２２６４’
ｂ７＝‘５１１６４’
ｂ８＝‘５３１６４’
ｂ９＝‘４２１６４’
ｂ１０＝‘６２１６４’
【００３７】
ここで、これら複数の類似数字列（ｂ１〜ｂ１０）と、元々の基本数字列ｂ０を含む数字列の集合を、便宜上、一群の数字列（ｂ０〜ｂ１０）と称する。
【００３８】
一方、子ノード２は、親ノード１から衝突終了を受信後（ｓ２４）、数字列生成部３２において数字列要素生成部３１で生成した各数字列要素を並べた基本数字列ｄを生成する。ここでは、図５で示すように基本数字列ｄとして‘５２２６４’が得られる（ｓ２５）。
【００３９】
親ノード１は、数字列生成部１２で生成した一群の数字列（ｂ０〜ｂ１０）を暗号化部１３でそれぞれ暗号化し、暗号値リスト６０を生成する（ｓ６）。暗号化部１３で生成した暗号値リスト６０の様子を図７に示す。
【００４０】
図７は、本実施の形態１における親ノード１が生成した暗号値リスト６０である。
暗号値リスト６０は、各数字列ｂ０〜ｂ１０毎に、暗号値ｃ０〜ｃ１０が対応づけて記録された構成となっている。
【００４１】
一方、子ノード２でも親ノード１と同じ暗号規則を使用して暗号化部３３で基本数字列ｄを暗号化し（ｓ２６）、暗号値ｆを生成する。そして、暗号値ｆを送信部３４から親ノード１に送信する（ｓ２７）。なお、暗号規則の一例としては、一方向性関数であるハッシュ関数演算などがある。
【００４２】
親ノード１は子ノード２から暗号値ｆを受信する（ｓ７）。ここで、親ノード１と子ノード２との間でやり取りされるデータは暗号値であるため、子ノード２が生成した数字列ｄが第三者に漏洩することはない。
【００４３】
親ノード１の暗号値検索部１４は、子ノード２から受信した暗号値ｆと、暗号値リスト６０の中の暗号値ｃ０〜ｃ１０とを比較し、一致する暗号値があるか否かを検索する（ｓ８）。そして、暗号値リスト６０の中に、暗号値ｆと一致する暗号値がある場合（ｓ９）、その暗号値に対応する数字列を、暗号値リスト６０から選択し共有可能な数字列とするべく、数字列記録部１５に格納する。
【００４４】
この例では、図７において子ノード２の基本数字列ｄに対応する暗号値ｆは、暗号値リスト６０の暗号値ｃ６と一致する。というのは、親ノード１と子ノード２とは、同じ暗号規則を使用しているため、子ノード２の基本数字列と暗号値リスト６０の数字列とが同じであれば、暗号値も一致するからである。よって、この例では、暗号値リスト６０の暗号値ｃ６が一致し、その暗号値ｃ６に対応する数字列ｂ６＝‘５２２６４’が共有可能な数字列として選択されることになる。そして、親ノード１は、一致信号を送信部１７より子ノード２に送信する。
【００４５】
親ノード１は、暗号値ｃ６に対応する数字列（類似数字列）ｂ６を共通鍵とし（ｓ１０）、以後、親ノード１と子ノード２は共通鍵に基づき暗号通信を行う（ｓ１１）。
【００４６】
一方、子ノード２は、親ノード１から一致信号を受信した場合（ｓ２８）、数字列生成部３２で生成した基本数字列ｄと同一の数字列（これは親ノード１における類似数字列ｂ６に相当する。）が親ノード１で共有されたと判断し、基本数字列ｄを共通鍵とするべく、数字列記録部３７に格納する（ｓ２９）。以後、親ノード１と子ノード２は共通鍵に基づき暗号通信を行う（ｓ３０）。
【００４７】
なお、ステップｓ９で一致するものが検索できなかった場合は、親ノード１は共通鍵の生成に失敗したとみなし、処理を終えると共に、子ノード２に不一致信号を送信する。子ノード２は、不一致信号を受信すると（ｓ３１）、基本数字列ｄが共有可能な数字列としての認定を親ノード１から得ることができなかったとみなし、生成した基本数字列ｄを破棄し（ｓ３２）、処理を終える。
【００４８】
また、上記説明の中でも記述したが、数字列要素生成規則、暗号規則は親ノード１と子ノード２が事前に共有していることを前提としている。処理フロー開始前にあらかじめ別手段で設定しておいても良いし、上記処理フローｓ１の中で親ノード１が子ノード２に各規則に関する情報を伝えるようにしても良い。
【００４９】
以上のように、実施の形態１では、複数の時間間隔値から生成した各数字列要素に基づいて基本数字列を生成するとともに、各数字列要素それぞれ値の最下位桁の値に対し、所定値をプラスマイナスした類似数字列を生成し、生成されたこれらの類似数字列を、時間間隔値から生成した元々の基本数字列の類似範囲とみなすようにしたので、親ノード１が時間間隔値から生成した基本数字列そのものと子ノード２が生成した基本数字列とが必ずしも一致しなくても、類似範囲内の複数の類似数字列に、子ノードが生成した基本数字列が一致すれば、その一致した基本数字列を共通鍵とすることができる。従って、親ノード１及び子ノード２の時間間隔値のサンプリング処理で発生する誤差により親ノード１及び子ノード２のそれぞれが生成する基本数字列の一部が違っていても、共通鍵を生成することができる。
【００５０】
また、子ノード２が生成した基本数字列の親ノード１への受け渡しは、基本数字列を暗号化した暗号値を以て行っているので、数字列候補が、第三者に漏洩することはない。
【００５１】
また、本実施の形態１では、親ノード１及び子ノード２の両方を、同じ物理現象の変化を検出する環境下に配置し、所定の変化を検出した複数の時間間隔値に基づいて共通鍵を生成するようにしたので、親ノード１及び子ノード２にそれぞれ別々に物理現象の変化を与える場合に比べて、共通鍵を生成するための元データ（時間計測値）の一致精度を高めることができ、引いては、共通鍵の生成精度を高めることが可能となる。
【００５２】
なお、類似範囲は親ノード１の方で任意に設定できるものとし、所定値ｘの範囲を決めるｎの値を大きくして、類似範囲を更に拡大するようにしても良い。すなわち、例えばｎを３とした場合には、プラスマイナス１して生成した数字列に加え、プラスマイナス２及びプラスマイナス３して生成した数字列も類似数字列となるため、類似範囲を広げることができる。
【００５３】
実施の形態２．
実施の形態１では、基本数字列を生成するための元データを時間間隔値（時間長）としていたが、実施の形態２では、時間比とし、更に、実施の形態１とは異なる数字列要素生成規則及び数字列要素置換規則を採用したものである。
【００５４】
本実施の形態２における親ノード１及び子ノード２の構成は実施の形態１と同様である。また、処理フローは図４に示すものと比較し、ｓ３（ｓ２３）およびｓ５（ｓ２５）が異なるがそれ以外は同様である。また、親ノード１及び子ノード２を衝突させた時の様子は、実施の形態１と同様に図５に示す通りとする。
【００５５】
以下、実施の形態２が実施の形態１と異なる処理ステップである、ｓ３（ｓ２３）およびｓ５（ｓ２５）について述べる。
ステップｓ３では、実施の形態１と同様に、数字列要素生成部１１で複数の時間間隔値を取り出し、全ての隣接する２つの時間間隔値の比（時間比）を取る。ここで、一番目の時間間隔値ｐ1、二番目の時間間隔値ｐ2、以下、ｎ番目の時間間隔値ｐnとすると、各隣接する時間間隔値の比（時間比）をｔ1，ｔ2，…，ｔnとする。
【００５６】
ｔ1＝ｐ2／ｐ1
ｔ2＝ｐ3／ｐ2
…
ｔn＝ｐn+1／ｐn
ここでの例では、
ｔ1＝０．２０／０．５３＝０．３
ｔ2＝０．１９／０．２０＝０．９
ｔ3＝０．６４／０．１９＝３．３
ｔ4＝０．４７／０．６４＝０．７
となる。
【００５７】
次に、予め時間比ｔnの大きさに応じて異なる２進数を与える数字列要素生成規則を、数字列要素生成部１１に定義しておき、その数字列要素生成規則を適用して数字列要素を得る。
【００５８】
図８は、本実施の形態２で使用する数字列要素生成規則の一例を示す図、図９は、図８を適用して得られる各数字列要素を示す図である。
実施の形態２の数字列要素生成規則は、時間比を所定の範囲に区分し、各範囲毎にそれぞれ数字列要素を割り当てたものである。この数字列要素生成規則の特徴は、隣接数字列要素間で各桁ごとに比較した場合、１箇所のみ異なるような符号方式であるグレイ符号変換方式を用いている点である。
【００５９】
以上のこのグレイ符号変換方式からなる数字列要素生成規則を、上述した、時間比ｔ1，ｔ2，ｔ3，ｔ4に適用して得られる各数字列要素（２進数）ｎ1，ｎ2，ｎ3，ｎ4はそれぞれ、
００，０１，１０，０１
となる（図９参照）。
【００６０】
そして、子ノード２の数字列要素生成部３１でも、ステップｓ２３とステップｓ３と同様の処理が行なわれ、得られる各数字列要素（２進数）は、
００，１１，１０，０１
となる。
【００６１】
次に、数字列要素置換規則を説明する。これは数字列要素生成部１１で生成した複数の数字列要素のうち各数字列要素の一つをグレイ符号における隣接する符号である数字列要素に置換する規則である。この様子を図１１に示すが、数字列要素は、隣接する数字列要素にのみ置換するものであり、
【００６２】
数字列要素が００であれば、数字列要素０１に、
数字列要素が０１であれば、数字列要素００ないしは１１に、
数字列要素が１１であれば、数字列要素０１ないしは１０に、
数字列要素が１０であれば、数字列要素１１に、
置換するのである。
【００６３】
この上で、数字列要素生成部１１で生成された各数字列要素を時間順に並べた基本数字列ｂｂ０（ここでは基本数字列ｂｂ０として‘０００１１００１’が得られる。）と、基本数字列ｂｂ０を構成する各数字列要素それぞれを、上述した数字列要素置換規則に従い異なる数字列要素に置換した、複数の類似数字列からなる一群の数字列を生成する（ｓ５）。
各数字列要素（２進数）は００，０１，１０，０１，であるので、以下の複数の類似数字列が生成される。
【００６４】
ｂｂ１＝‘０００１１０００’
ｂｂ２＝‘０００１１０１１’
ｂｂ３＝‘０００１１１０１’
ｂｂ４＝‘００００１００１’
ｂｂ５＝‘００１１１００１’
ｂｂ６＝‘０１０１１００１’
【００６５】
ここで、これら複数の類似数字列（ｂｂ１〜ｂｂ６）と、元々の基本数字列ｂｂ０を含む数字列の集合を、一群の数字列（ｂｂ０〜ｂｂ６）とする。
【００６６】
一方、子ノード２では、数字列要素生成部３１で生成した各数字列要素を並べた基本数字列ｄｄを生成する（ｓ２５）。ここでは、基本数字列ｄｄとして、
ｄｄ＝００１１１００１
を得る。
【００６７】
以下の処理は実施の形態１と同様であるが、理解を助けるためにステップｓ８での暗号値検索の処理を説明する。
親ノード１の暗号値検索部１４では子ノード２から受信した暗号値ｆｆと、暗号値リスト１２０の中の暗号値ｃｃ０〜ｃｃ６とを比較し一致するかを検索する。ここでの例では、図１０において子ノード２の基本数字列ｄｄに対応する暗号値ｆｆは暗号値リスト１２０の暗号値ｃｃ５に一致するはずである。というのは、親ノード１と子ノード２とは、同じ暗号規則を使用しているため、子ノード２の基本数字列ｄｄと暗号値リスト６０の数字列が同じであれば、暗号値も一致するからである。よって、ここでは、共に数字列が‘００１１１００１’である、子ノード２の暗号値ｆｆと暗号値リスト１２０の暗号値ｃｃ５とが一致する。
【００６８】
なお、ここでは数字列要素は２ビット長であるが、より長いビット列が好適の場合もある。なんとなれば、本実施の形態２では数字列要素を共有可能な数字列としており、この数字列を共通鍵としているので、鍵生成のための元情報は長いほうが共通鍵暗号におけるセキュリティ強度が高いと言えるからである。本実施の形態２では、鍵長を長くする方法としては、衝突回数を増やすことであるが、それ以外に、各数字列要素を長くすることによっても実現可能である。
【００６９】
より長いビット長からなる数字列要素生成規則の一例を図１２に示す。この例では、各数字列要素が３ビットから構成されている。なお、実施の形態２でも、実施の形態１と同様に、数字列要素生成規則、暗号規則は親ノード１と子ノード２は事前に共有していることを前提としている。
【００７０】
このように、実施の形態２によれば、複数の時間比から各数字列要素を生成し、各各数字列要素毎に、その数字列要素を、グレイ符号における隣接する符号に置換して複数の類似数字列を生成し、生成されたこれらの類似数字列を、時間間隔値から生成した元々の基本数字列の類似範囲とみなすようにしたので、親ノード１が時間間隔値から生成した基本数字列そのものと子ノード２が生成した基本数字列とが必ずしも一致しなくても、類似範囲内の複数の類似数字列に、子ノードが生成した基本数字列が一致すれば、その一致した基本数字列を共通鍵とすることができる。従って、親ノード１及び子ノード２の時間間隔値のサンプリング処理で発生する誤差により親ノード１及び子ノード２のそれぞれが生成する基本数字列の一部が違っていても、共通鍵を生成することができる。
【００７１】
なお、上記各実施の形態では、数字列そのものを共通鍵としているが、数字列を、親ノード１及び子ノード２に共通の暗号規則で暗号した値を共通鍵としても良い。
【００７２】
本発明は、親ノード１（子ノード２）における数字列要素生成部１１（３１）で用いた数字列要素生成規則と、親ノード１における数字列生成部１２で用いる数字列要素置換規則を技術的特徴としており、実施の形態１、実施の形態２ではそれぞれ異なる規則を定義したが、これに限るものではない。
【００７３】
また、暗号規則として、一方向性関数であるハッシュ関数演算を例示したが、これに限るものではなく、伝送する数字列が第三者に漏洩しない方法であればよい。
【００７４】
近年、安価な振動センサーが市販されており、携帯電話やセンサーノードに装着されている事例が見られる。この場合、スイッチの代わりに振動センサーをノードに装着し、互いのノードをぶつけるようにして、本発明と同じ効果も得られる。こうすることにより、簡易に携帯電話とセンサーノード間で共通鍵を生成し、携帯電話とセンサーノードの間で安全に近距離無線通信を実現することもできる。
【００７５】
上記各実施の形態では、物理的な変化を、衝突によるスイッチの押下として説明したが、これに限られたものではなく、光、音、風力、温度及び湿度の何れかとしてもよい。例えば、温度のとした場合には、温度を検出するセンサを各ノードそれぞれに設け、各ノードの設置環境の温度を例えば強制的に変化させ、予め設定した複数の所定温度のそれぞれに到達する時間間隔を取得するようにしてもよい。
【００７６】
また、上記各実施の形態では、親ノード１と子ノード２は別々の機能を有しているが、一つのノードで両方の機能を有していても良い。
【図面の簡単な説明】
【００７７】
【図１】実施の形態１における共通鍵生成方法を用いたノードの概略構成を示す図である。
【図２】実施の形態１における親ノード１の機能ブロック図である。
【図３】実施の形態１における子ノード２の機能ブロック図である。
【図４】実施の形態１における処理フローである。
【図５】実施の形態１において、親ノード１と子ノード２を衝突させてスイッチ１０，３０がオンする時間間隔を模式的に示した図である。
【図６】パケットの説明図である。
【図７】実施の形態１における親ノード１が生成した暗号値リスト６０を示す図である。
【図８】実施の形態２で使用する数字列要素生成規則の一例を示す図である。
【図９】図８を適用して得られる数字列要素の一例を示す図である。
【図１０】実施の形態２における親ノード１が生成した暗号値リスト１２０を示す図である。
【図１１】実施の形態２のグレイ符号に基づく置換規則の説明図である。
【図１２】３ビット長からなる数字列要素生成規則の一例を示す図である。
【符号の説明】
【００７８】
１  親ノード
２  子ノード
１０  スイッチ
１１  数字列要素生成部
１２  数字列生成部
１３  暗号化部
１４  暗号値検索部
１５  数字列記録部
１６  受信部
１７  送信部
１８  時計
３０  スイッチ
３１  数字列要素生成部
３２  数字列生成部
３３  暗号化部
３４  送信部
３５  受信部
３６  一致信号判定部
３７  数字列記録部
３８  時計
６０  暗号値リスト
１２０  暗号値リスト
【図１】
0004535119.tif 000002
【図２】
0004535119.tif 000003
【図３】
0004535119.tif 000004
【図４】
0004535119.tif 000005
【図５】
0004535119.tif 000006
【図６】
0004535119.tif 000007
【図７】
0004535119.tif 000008
【図８】
0004535119.tif 000009
【図９】
0004535119.tif 000010
【図１０】
0004535119.tif 000011
【図１１】
0004535119.tif 000012
【図１２】
0004535119.tif 000013