(57)【要約】  ノーマルモード及びコーディネータモードを有するネットワークノード１１０が提供される。当該ネットワークノードは、カウンタ１３０と、インクリメントユニット１３２とを含み、インクリメントユニットは、カウンタを、定期的な時間間隔でインクリメントする。ネットワークノードは、カウンタ同期化メッセージを受信しなければ、コーディネータモードに切り替える。
2018529292.tif 000002
【特許請求の範囲】
【請求項１】
ノーマルモード及びコーディネータモードを有するネットワークノードであって、
ネットワークノードのグループ内で電子メッセージを送信及び受信する通信ユニットと、
カウンタ及びインクリメントユニットと、
カウンタマネジャと、
を含み、
前記インクリメントユニットは、前記カウンタを、定期的な時間間隔でインクリメントし、
前記カウンタマネジャは、
ノーマルモードでは、
カウンタ同期化メッセージを受信すると、前記カウンタを、受信した前記カウンタ同期化メッセージ内の受信カウンタ値に合わせ、同期化タイムアウト期間を開始し、
前記同期化タイムアウト期間中にカウンタ同期化メッセージを受信することなく、前記同期化タイムアウト期間が満了すると、前記ネットワークノードをコーディネータモードに切り替え、
コーディネータモードでは、
前記グループ内の前記ネットワークノードに、前記カウンタの現在値を含むカウンタ同期化メッセージを周期的に送信する、
ネットワークノード。
【請求項２】
暗号鍵を記憶する鍵ストレージを含み、
ノーマルモードでは、
前記通信ユニットは、前記暗号鍵を用いて受信メッセージの認証を確認できなかった後、前記受信メッセージを拒絶し、また、前記受信メッセージから得られる受信カウンタ値が、前記ネットワークノードの前記カウンタに記録されているカウンタ値から遅延閾値未満で異なることを確認できなかった後、拒絶し、
前記通信ユニットは、前記ネットワークノードの前記カウンタに記憶されているカウンタ値をメッセージ内に含め、前記メッセージを送信する前に、前記メッセージを、前記暗号鍵を用いて認証する、請求項１に記載のネットワークノード。
【請求項３】
初期化モードを有し、
前記ネットワークノードは、前記ネットワークノードの始動後、初期化モードにあり、
初期化モードでは、
前記通信ユニットは、前記暗号鍵を用いて受信カウンタ同期化メッセージの認証を確認した後、前記受信カウンタ同期化メッセージを受理し、
前記カウンタマネジャは、
前記同期化タイムアウト期間を開始し、
前記同期化タイムアウト期間中にカウンタ同期化メッセージを受信することなく、前記同期化タイムアウト期間が満了すると、コーディネータモードに切り替え、
前記同期化タイムアウト期間中にカウンタ同期化メッセージを受信すると、前記カウンタを、前記カウンタ同期化メッセージ内のカウンタ値に合わせ、同期化タイムアウト期間を開始し、ノーマルモードに切り替える、請求項１又は２に記載のネットワークノード。
【請求項４】
初期化モードを有し、
初期化モードでは、
前記カウンタマネジャは、前記グループ内の前記ネットワークノードに、カウンタ同期化リクエストメッセージを送信し、
コーディネータモードでは、
前記カウンタマネジャは、カウンタ同期化リクエストメッセージを受信すると、前記グループ内の前記ネットワークノードに、前記カウンタの現在値を含むカウンタ同期化リクエストメッセージを送信する、請求項１乃至３の何れか一項に記載のネットワークノード。
【請求項５】
初期化モードでは、前記カウンタマネジャは、
リクエスト遅延タイムアウト期間を開始し、
カウンタ同期化リクエストメッセージを受信することなく、また、カウンタ同期化メッセージを受信することなく、前記リクエスト遅延タイムアウト期間が満了すると、前記カウンタ同期化リクエストメッセージを送信し、
カウンタ同期化メッセージ及びカウンタ同期化リクエストメッセージの何れか１つを受信すると、前記リクエスト遅延タイムアウト期間を終了させる、請求項４に記載のネットワークノード。
【請求項６】
前記カウンタは、前記ネットワークノードの始動後にランダム化される、請求項１乃至５の何れか一項に記載のネットワークノード。
【請求項７】
コーディネータモードでは、前記カウンタマネジャは、
カウンタ同期化メッセージを受信すると、前記カウンタに記憶されているカウンタ値を含む放棄メッセージを送信し、
別のネットワークノードから放棄メッセージを受信すると、前記カウンタに記憶されている前記カウンタ値を、受信した前記放棄メッセージから得られる受信カウンタ値と比較し、
前記受信カウンタ値が前記カウンタに記憶されている前記カウンタ値よりも大きい場合、前記カウンタに記憶されている前記カウンタ値及び前記受信カウンタ値を含む放棄済みメッセージを送信し、前記カウンタを、前記受信カウンタ値に合わせ、ノーマルモードに切り替え、
ノーマルモードでは、前記カウンタマネジャは、放棄済みメッセージを受信すると、前記カウンタを、前記放棄済みメッセージ内の他のネットワークノードから受信した前記カウンタ値に合わせる、請求項１乃至６の何れか一項に記載のネットワークノード。
【請求項８】
コーディネータモードでは、前記カウンタマネジャは、
前記受信カウンタ値が前記カウンタに記録されている前記カウンタ値未満である場合、メンバーリクエストメッセージを送信し、メンバーリクエスト期間内に、送信に応じてメンバーシップメッセージが受信されない場合、前記カウンタに記憶されている前記カウンタ値及び前記受信カウンタ値を含む放棄済みメッセージを送信し、前記カウンタを、前記受信カウンタ値に合わせ、ノーマルモードに切り替え、
ノーマルモードでは、前記カウンタマネジャは、メンバーリクエストメッセージを受信すると、メンバーシップメッセージを用いて応える、請求項７に記載のネットワークノード。
【請求項９】
メッセージ内のステートレスコマンドを受信する、請求項１乃至８の何れか一項に記載のネットワークノード。
【請求項１０】
ノーマルモード及びコーディネータモードを有するネットワーク方法であって、
ネットワークノードのグループ内で電子メッセージを送信及び受信するステップと、
カウンタを、定期的な時間間隔でインクリメントするステップと、
ノーマルモードでは、
カウンタ同期化メッセージを受信すると、前記カウンタを、受信した前記カウンタ同期化メッセージ内の受信カウンタ値に合わせ、同期化タイムアウト期間を開始するステップと、
前記同期化タイムアウト期間中にカウンタ同期化メッセージを受信することなく、前記同期化タイムアウト期間が満了すると、前記方法をコーディネータモードに切り替えるステップと、
コーディネータモードでは、
前記グループ内の前記ネットワークノードに、前記カウンタの現在値を含むカウンタ同期化メッセージを周期的に送信するステップと、
を含む、方法。
【請求項１１】
コンピュータ上で実行されると、請求項１０に記載の方法を行うコンピュータプログラム命令を含む、コンピュータプログラム。
【請求項１２】
請求項１１に記載のコンピュータプログラムを含む、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークノード、ネットワーク方法、コンピュータプログラム及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
攻撃者がメッセージを傍受及び送信することにより活動を開始する可能性のあるオープンネットワークでは、メッセージが信頼できる送信者から来ることを知っていることが重要である。例えば照明ネットワークといった制御ネットワークでは、これにより、悪意のある制御が阻止される。オープンネットワークは、例えばイーサネット（登録商標）又はＷｉ−Ｆｉネットワークである。
【０００３】
多くのノードが互いに通信する必要のある制御ネットワークでは、例えばマルチキャスト又はブロードキャストであるグループ通信が最も効率的である。
【０００４】
通信を保護するために、しばしば、グループ内のノード間で暗号鍵が共有される。暗号鍵は、ノード間で渡されるメッセージを認証するために使用される。しかし、メッセージは依然として傍受される可能性があり、攻撃者は、システムを制御するためにメッセージをリプレイすることができる。メッセージが暗号化されていても、暗号化されたメッセージを特定のコマンドにマッチさせることは簡単である。
【０００５】
パケットに変化値を追加することによって、同一コマンドが異なるパケットになるが、パケットの復号化後に、受信者によって変化値が単純に無視されると、リプレイされたパケットは依然としてシステムによって有効であると受理される。
【０００６】
この問題の可能な解決策は、各ネットワークノードにおいて同期されたクロックを有することである。２つのノード間の通信は、認証前のメッセージ内にタイムスタンプを含む。タイムスタンプは、受信したメッセージが新しいことを確認し、少なくともある時点までは、メッセージのリプレイを阻止する。
【０００７】
不都合なことに、多くのネットワーク、特に制御ネットワークでは、大抵の場合、ネットワーク内に信頼のおける時間ソースもネットワークノードのグループ内のノード全体で時間を同期させるやり方もない。更に、このような時間ソースは、いわゆる単一障害点（ＳＰＯＦ）であり、望ましくない。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
改良されたネットワークノードがあることが有利である。
【課題を解決するための手段】
【０００９】
ノーマルモード及びコーディネータモードを有するネットワークノードが提示される。当該ネットワークノードは、
ネットワークノードのグループ内で電子メッセージを送信及び受信する通信ユニットと、
カウンタ及びインクリメントユニットと、
カウンタマネジャと、
を含み、
インクリメントユニットは、カウンタを、定期的な時間間隔でインクリメントし、
カウンタマネジャは、
ノーマルモードでは、
カウンタ同期化メッセージを受信すると、カウンタを、受信したカウンタ同期化メッセージ内の受信カウンタ値に合わせ、同期化タイムアウト期間を開始し、
同期化タイムアウト期間中にカウンタ同期化メッセージを受信することなく、同期化タイムアウト期間が満了すると、ネットワークノードをコーディネータモードに切り替え、
コーディネータモードでは、
グループ内のネットワークノードに、カウンタの現在値を含むカウンタ同期化メッセージを周期的に送信する。
【００１０】
カウンタ同期化メッセージを周期的に送信することによって、カウンタは、上記ネットワークノードが通信しうる他のカウンタと同期されたままとなる。特に、これはネットワーク遅延及び不正確なカウンタといった状況に対処する。
【００１１】
ネットワークノードは、当該ネットワークノードがタイムアウト期間後にカウンタ同期化メッセージを受信しなければ、コーディネータモードに切り替わる。このようにすると、ネットワークノードのグループ内にコーディネータがなくても、コーディネータが出現することになる。これは、グループ内のノードが同期されたままでいることを確実にする。更に、これは、単一のコーディネータノードによって引き起こされる単一障害点の問題に対処する。コーディネータノードが故障しても、非コーディネータノードのうちの１つが、コーディネータの役割を再開する。
【００１２】
一実施形態では、コーディネータモードにおいて、カウンタマネジャは、カウンタ同期化メッセージを受信すると、カウンタに記憶されているカウンタ値を含む放棄メッセージを送信する。コーディネータモードにあるノードが２つ出現しても、これらのノードは、どちらがノーマルモードに戻るべきであるかを調停で決めることができる。
【００１３】
ネットワークノードは、電子デバイスである。例えばネットワークノードは、センサ、照明スイッチ又はランプである。ネットワークノードは、ＨＶＡＣデバイスであってもよい。
【００１４】
本発明による方法は、コンピュータ実施方法としてコンピュータ上で実現されても、専用ハードウェア又はこれらの組み合わせで実現されてもよい。本発明による方法の実行可能なコードは、コンピュータプログラムプロダクトに記憶される。コンピュータプログラムプロダクトの例としては、メモリデバイス、光学ストレージデバイス、集積回路、サーバ、オンラインソフトウェア等が挙げられる。好適には、コンピュータプログラムプロダクトは、コンピュータ上で実行された場合に、本発明による方法を行うためにコンピュータ可読媒体に記憶される非一時的プログラムコード手段を含む。
【００１５】
好適な実施形態では、コンピュータプログラムは、当該コンピュータプログラムがコンピュータ上で実行された場合に、本発明による方法のすべてのステップを行うコンピュータプログラムコード手段を含む。好適には、コンピュータプログラムは、コンピュータ可読媒体上に具体化される。例えば上記方法は、プロトコルスタックの一部として実現される。
【図面の簡単な説明】
【００１６】
本発明の更なる詳細、態様及び実施形態を、ほんの一例として、図面を参照して説明する。図面中の要素は、単純さ及び明確さのために示され、必ずしも縮尺通りに描かれていない。図面中、既に説明された要素に対応する要素は同じ参照符号を有する。
【００１７】
【図１ａ】図１ａは、ネットワークノードの一実施形態の一例を概略的に示す。
【図１ｂ】図１ｂは、ネットワークノードのグループの一実施形態の一例を概略的に示す。
【図２】図２は、電子メッセージの一実施形態の一例を概略的に示す。
【図３】図３は、メッセージが送信される一例を説明するシーケンス線図を概略的に示す。
【図４】図４は、コーディネータモードに切り替えられる一例を説明するシーケンス線図を概略的に示す。
【図５】図５は、ネットワークノードのグループが始動される一例を説明するシーケンス線図を概略的に示す。
【図６】図６は、ネットワークノードのグループにネットワークノードが追加される一例を説明するシーケンス線図を概略的に示す。
【図７】図７は、ネットワークノードの２つのグループがマージされる一例を説明するシーケンス線図を概略的に示す。
【図８】図８は、ネットワークノードの２つのグループがマージされる一例を説明するシーケンス線図を概略的に示す。
【図９】図９は、メッセージがリプレイされる一例を説明するシーケンス線図を概略的に示す。
【図１０ａ】図１０ａは、一実施形態によるコンピュータプログラムを含む書き込み可能部を有するコンピュータ可読媒体を概略的に示す。
【図１０ｂ】図１０ｂは、一実施形態によるプロセッサシステムの表現を概略的に示す。
【００１８】
図１ａ、図１ｂ及び図２における参照符号のリスト
１００  ネットワークノードのグループ
１１０、１１２、１１４  ネットワークノード
１２０  通信ユニット
１３０  カウンタ
１３２  インクリメントユニット
１４０  カウンタマネジャ
１４２  モード
１４４  タイマ
１５０  鍵ストレージ
１５２  暗号鍵
１５４  暗号ユニット
２０１、２０１'  認証済みメッセージ
２０２  カウンタ同期化メッセージ
２０３  カウンタ同期化リクエストメッセージ
２０４  放棄メッセージ
２０５  放棄済みメッセージ
２０６  メンバーリクエストメッセージ
２０７  メンバーシップメッセージ
２１２  カウンタ値
２１３  他のネットワークノードから受信されるカウンタ値
２２０  認証済みデータ
２２２  カウンタ同期化指標
２２３  カウンタ同期化リクエスト指標
２２４  放棄指標
２２５  放棄済み指標
２２６  メンバーリクエスト指標
２２７  メンバーシップ指標
２３０、２３０'  暗号化されたデータ
２３１  データ
２４０  認証トークン
【発明を実施するための形態】
【００１９】
本発明は、多くの様々な形態の実施形態が可能であるが、図面に例が示され、本開示は、本発明の原理を例示するものであって、本発明を図示及び説明される特定の実施形態に限定することを意図していないと見なされるとの理解と共に、１つ以上の特定の実施形態が本明細書において詳細に説明されるだろう。
【００２０】
以下、理解し易くするために、実施形態の要素が動作することで説明される。しかしながら、各要素が、当該要素によって行われるものとして説明される機能を実行するように構成されていることは明らかである。
【００２１】
更に、本発明は、実施形態に限定されない。また、本発明は、上記される又は相互に異なる従属請求項に記載される各新規の特徴又は特徴の組み合わせにある。
【００２２】
図１ａは、ネットワークノード１１０の一実施形態の一例を概略的に示す。ネットワークノード１１０は電子デバイスである。ネットワークノード１１０は、ネットワークノードのグループ１００内で電子メッセージを送受信する通信ユニット１２０を含む。図１ｂに、ネットワークノードのグループ１００の一例が示される。図１ｂは、３つのネットワークノード、即ち、ネットワークノード１１０、１１２及び１１４からなるグループ１００を示す。
【００２３】
通信ユニット１２０は、ワイヤレス通信向け構成される。例えば通信ユニット１２０は、ワイヤレス通信用のアンテナを含む。例えば通信ユニット１２０は、Ｗｉ−Ｆｉ通信や、例えば所定のワイヤレスプロトコルを使用することによって他のワイヤレス技術向けに構成される。通信ユニット１２０は更に、又は、代わりに、例えばイーサネット（登録商標）通信である有線通信用に構成されてもよい。
【００２４】
グループ１００内の他のデバイスは、一実施形態によるネットワークノードである。具体的には、グループ１００内の他のノードは、ネットワークノード１００と同じデザインである。説明を簡単にするために、ネットワークノード１１０のみについて詳細に説明する。
【００２５】
グループ１００内のネットワークノードは、グループ内で通信する通信ユニットを含む。一実施形態では、グループ１００内のネットワークノードは、グループ１００内のブロードキャスト及び／又はマルチキャスト通信用に構成される。例えば一実施形態では、通信ユニット１２０は、メッセージをブロードキャストすることによって、当該メッセージを送信する。したがって、当該メッセージは、グループ１００内のすべての他のネットワークノードによって受信される。
【００２６】
ネットワークノード１１０は、カウンタ１３０とインクリメントユニット１３２とを含む。一実施形態では、インクリメントユニットは、定期的な時間間隔でカウンタをインクリメントする。例えばカウンタ１３０は、電子メモリ（例えばレジスタ等）として実現される。例えばカウンタ１３０は、３２ビットレジスタである。インクリメントユニット１３２は、定期的な間隔でカウンタをインクリメントする時間を決める水晶又はＲＣオシレータを含む。定期的な間隔は、例えば１秒、又は、より短くても（例えば１／１０秒）、より長くてもよい（例えば２秒）等である。カウンタ１３０及びインクリメントユニット１３２は、クロックを含む。興味深いことに、カウンタ１３０の状態は、パワーダウン及びパワーアップサイクル後は維持される必要がない。実際に、一実施形態では、カウンタ１３０は、ネットワークノードの始動後、ランダム化される。例えばネットワークノード１１０は、ネットワークノード１１０がパワーアップ（例えばスイッチオン）された後、カウンタ１３０をランダム化する（疑似）乱数発生器（個別に図示せず）を含む。
【００２７】
デバイスのリアルタイム精度があまり良くなくてもよい。実験によって、デバイスが１〜２％の精度内であるならば、本明細書において説明されるメカニズムは正しく動作することが示されている。より低い精度でも、カウンタ同期化メッセージが送信される頻度、及び、正しいカウンタ値の受理ウィンドウ（例えば遅延閾値）によって正常に動作する。
【００２８】
通常動作では、グループ１００内のネットワークノード（例えばネットワークノード１１０、１１２及び１１４）のカウンタは同期される。例えば時間的に同じ絶対的瞬間においてグループ１００内の各カウンタから取られた値は、第１の閾値未満しかない。様々な理由から、例えば複数のネットワークノードのうちの１つ以上のネットワークノードの始動後に、グループ１００内のカウンタが同期されないことがまれにある。この問題に対処する実施形態が説明される。
【００２９】
通信ユニット１２０は、カウンタ１３０の値を取得し、それを、メッセージを送信する前に当該メッセージに含める。同様に、通信ユニット１２０は、メッセージを受信すると、受信メッセージから受信カウンタ値を取得し、当該受信カウンタ値が、ネットワークノードのカウンタに記憶されているカウンタ値から遅延閾値未満で異なることを確認する。これは、受信メッセージが新しいこと、即ち、送信ネットワークノードから最近送信されたことを示す。遅延閾値は、例えば第１の閾値と通信における遅延（例えばネットワーク遅延）との合計と見なされる。更に、有効メッセージが拒絶される可能性を低減するために、幾らかの安全マージンが含められる。例えば遅延閾値は、ローカルワイヤレスネットワークにおいて１秒とされる。遅延閾値は、より長くても（例えば５秒）、より短くても（例えば０．５秒）よい。より高品質のインクリメントメカニズムを有するより高速なネットワークでは、遅延閾値は下げられる。
【００３０】
遅延閾値によって提供される許容誤差は、ネットワークレイテンシだけでなく、クロックの不正確さも相殺する。受信カウンタ値とカウンタ１３０内のカウンタ値との間に負のオフセットが可能であっても、受信メッセージは、受信ノードのカウンタより進んでいるカウンタ値を含む場合がある。遅延閾値は、カウンタ１３０からの「許容可能なオフセット」とも呼ばれる。
【００３１】
例えばカウンタ１３０が、現在、例えば９０８００５の値を記憶し、１／１００秒毎に増加されると仮定する。遅延閾値は２００（ここでは、カウンタと同じ単位であり、即ち、２秒を表す）であると仮定する。一実施形態では、受信メッセージ内のカウンタ値は、９０７８０５と９０８２０５との間の間隔内であるならば受理される。
【００３２】
一実施形態では、カウンタ１３０は固定数のビットで実現される。この場合、カウンタ１３０の潜在的なロールオーバーに正しく対処するように注意される。例えば上記例を続けて参照するに、カウンタは、符号なし３２ビット値として実現されると仮定する。カウンタが値２＾３２−１００を記憶する場合、２＾３２−３００と２＾３２−１との間及び０と１００との間である受信値が受理される。
【００３３】
しかし、カウンタ値のみをメッセージに含めることは、ほとんどのアプリケーションに十分なセキュリティを提供しない。これに対処するために、メッセージが本物であることが証明される。例えば一実施形態では、ネットワークノード１１０は、暗号鍵１５２を記憶する鍵ストレージ１５０を含む。通信ユニット１２０は、メッセージを送信する前に、暗号鍵を用いて当該メッセージが本物であることを証明する。例えば通信ユニット１２０は、暗号鍵１５２を用いて本物であることを証明するデータ用の認証トークンを計算する。一実施形態では、鍵は、公開／秘密鍵ペアの秘密鍵（例えば非対称暗号鍵）である。後者の場合、通信ユニット１２０は、電子署名を計算し、それを認証トークンとしてメッセージに加える。別のネットワークノードの通信ユニットは、ここでは署名である認証トークンを、署名を生成するために使用された秘密鍵に対応する公開鍵を使用して確認する。
【００３４】
一実施形態では、鍵１５２は、いわゆる対称鍵である。対称鍵を使用する認証トークンの例には、ＡＥＳ−１２８、ＤＥＳ等といった例えばＡＥＳである様々なブロック暗号を使用する、例えばＣＢＣ−ＭＡＣ、ＣＭＡＣであるメッセージ認証コード（ＭＡＣ）が含まれる。グループ１００内のネットワークノードはすべて、暗号鍵１５２へのアクセスを有し、当該暗号鍵１５２によって、例えばいわゆるグループ鍵である認証トークンを確認する。グループ鍵の知識が、グループのメンバーシップを証明する。以下、対称グループ鍵を前提とするが、これは必須ではないことに留意されたい。グループ鍵は、グループのすべてのノード内で、例えばノード内で鍵を予めプログラミングすることによって又はポイントツーポイントハンドシェイク認証を使用して（例えばＴＬＳプロトコルを使用して）鍵を提供することによってセットされる。
【００３５】
認証トークンの確認の成功は、認証トークンが、メッセージ及び鍵１５２の両方にアクセスを有する誰かによって作成されたことを証明する。例えば通信ユニットは、暗号鍵を用いて受信メッセージの認証を確認できない場合、受信メッセージを拒絶する。更に、通信ユニットは、受信メッセージから得られる受信カウンタ値が、ネットワークノードのカウンタに記憶されているカウンタ値から遅延閾値未満で異なることが確認できない場合、受信メッセージを拒絶する。正しい認証と、カウンタ１３０に記憶されているカウンタ値に十分に近い受信カウンタ値との組み合わせは、攻撃者がメッセージをリプレイするのに有利な状況を著しく低減する。したがって、通信ユニット１２０は、例えばユニット１２０を介してグループ１００内で送受信されるメッセージを保護するために、カウンタ１３０及び鍵１５２（対称又は非対称に関係なく）を使用する。
【００３６】
本物であることを証明すること（認証）に加えて、通信ユニット１２０は更に、暗号グループ鍵１５２を用いてデータを暗号化する。暗号化されたデータは、鍵１５２を使用して任意のノードによって復号化される。セキュリティを向上させるために、認証及び暗号化は、鍵多様化ステップを含む。例えば鍵１５２は、例えばバイト００に連結された鍵１５２の暗号学的ハッシュを計算することによって、認証鍵を得るために第１の識別子を用いて多様化され、また、例えばバイト０１に連結された鍵１５２の暗号学的ハッシュを計算することによって、暗号化鍵を得るために第２の識別子を用いて多様化される。一実施形態では、鍵ストレージ１５０は、別箇の認証及び暗号化鍵を含み、したがって、追加の多様化は不要である。簡単にするために、以下、鍵１５２のみを参照するが、鍵多様化が別箇の鍵を得るために暗号化及び／又は認証に含まれうることに留意されたい。
【００３７】
ネットワークノード１１０は、認証トークン、暗号化、復号化等を計算する暗号ユニット１５４を含む。暗号ユニット１５４は、図１ａに示されるように、通信ユニット１２０の一部であってよいが、これは必須ではない。暗号ユニット１５４は、ハードウェアでの実現によく適しているが、これも必須ではない。
【００３８】
グループ内１００のネットワークノードは、制御ネットワークを形成する。例えばノード１１０、１１２及び１１４等は、他のデバイスを制御する。例えばこれらは、照明ネットワーク内のランプ等を制御する。グループ１００内のネットワークノードは、センサネットワークを形成してもよい。例えばノード１１０、１１２及び１１４等は、１つ以上のセンサを含む。
【００３９】
一実施形態では、ネットワークノード１１０は、メッセージによって受信されるコマンドを受理する。メッセージが本物であるとして受理されると、ネットワークノード１１０は、コマンドを実行する。コマンドの実行は、応答メッセージを送信することを含む。
【００４０】
図２は、認証済みメッセージ２０１の一実施形態を示す。メッセージ２０１は、カウンタ１３０から得られたカウンタ値２１２と、認証されただけのデータ２２０と、暗号化され認証されたデータ２３０とを含む。カウンタ値２１２も認証されている。例えば最初にデータ２３０が鍵１５２で暗号化され、次に、例えば認証トークン２４０を計算することによって、カウンタ値２１２、データ２２０及び暗号化されたデータ２３０が認証される。認証トークン２４０は、ＭＡＣ又は署名である。機密性が不要であるならば、データ２３０は省略されてもよい。
【００４１】
図２は、明示的な認証トークンの計算のない認証済みメッセージ２０１'の代替実施形態を示す。データ２３１は、カウンタ値２１２と共に暗号化され、暗号化されたデータ２３０'が生成される。この実施形態では、認証及び暗号化の両方を行うために、暗号化ステップだけが行われる。例えば暗号化は、カウンタ値を初期化ベクトル（ＩＶ）として使用するカウンタモード又はｃｂｃモード等を使用するブロック暗号である。図３乃至図１０では、暗号化によって認証を提供するこのフォーマットを前提とする。更に、データ２３１は、コマンド、ステータスデータ、センサ測定値等であってよい。
【００４２】
具体的には、認証及び暗号化モードは、いわゆるＣＣＭモード（例えばRecommendation for Block Cipher Modes of Operation: The CCM Mode for Authentication and Confidentiality（ＮＩＳＴ  ＳＰ８００−３８ｃ）を参照）であってよい。基本となっているブロック暗号は、例えばＡＥＳ、ＤＥＳ、ＲＣ５、ブローフィッシュ等であってよい。
【００４３】
メッセージ２０１及び２０１'といった認証済みメッセージは、ネットワークノードに当該メッセージが認証されたメッセージあることを示す認証済みメッセージ指標（図２には図示せず）を含んでよい。
【００４４】
ネットワークノード１１０は、幾つかの様々なモードで構成される。これらのモードには、ノーマルモード及びコーディネータモードが含まれ、更には初期化モードも含まれる。
【００４５】
通常動作では、コーディネータモードで動作するネットワークノードは１つだけであるべきである。すべての他のネットワークノードは、ノーマルモードで動作する。一実施形態では、ネットワークノードは、ネットワークノードのパワーアップ中又はリセット後にのみ初期化モードで動作する。コーディネータモードで動作するネットワークノードが複数ある場合、ネットワークノードは、以下に示される通りにこの問題に対処する。一実施形態では、ネットワークノード１１０は、モードを初期化に設定し、場合によっては、カウンタをランダム化するリセットメカニズムを含む。
【００４６】
ノーマルモードでは、ネットワークノード１１０は、認証済みメッセージを送信及び／又は受信する。カウンタ１３０及び鍵１５２を使用して、受信メッセージ内の受信カウンタ値が新しくない場合、例えばカウンタ１３０の遅延閾値内ではない場合、又は、認証が正しくない場合は、当該受信メッセージは拒絶される。送信用のメッセージも、カウンタ１３０及び鍵１５２を使用して同様に保護される。メッセージは、認証済みカウンタ値に加えて、認証され且つ任意選択的に暗号化されたペイロードを含む。ペイロードは、アプリケーションに依存し、また、例えばコマンド、ステータスメッセージ、センサ測定値等を含む。
【００４７】
更に、ノーマルモードにあるときは、カウンタマネジャ１４０は、カウンタ同期化メッセージを受信すると、カウンタを、受信したカウンタ同期化メッセージ内の受信カウンタ値に合わせる。このようにすると、カウンタ１３０は、コーディネータノードのカウンタと同期され続ける。カウンタマネジャは、コーディネータモードにあるときは、カウンタ同期化メッセージをグループ内のネットワークノードに周期的に送信する。当該カウンタ同期化メッセージは、カウンタの現在値を含む。周期的な送信は、定期的な送信であってよく、例えばカウンタ同期化メッセージは、例えば１秒、５秒又は１分等の固定の時間間隔が経過する度に送信される。しかし、周期的な送信は、定期的である必要はない。例えばカウンタマネジャは、ネットワーク負荷に応じて、例えばネットワーク負荷がネットワーク負荷閾値を下回る場合、又は、ネットワークノード１１０の負荷に応じて、例えばネットワークノード負荷がネットワークノード負荷閾値を下回る場合、カウンタ同期化メッセージを送信する。負荷又はトラフィックに応じて送信するが、固定の時間間隔毎に１回よりも高い頻度では送信しないような組み合わせも可能である。
【００４８】
図３は、認証済みメッセージが送受信される一実施形態の可能なシーケンス線図を示す。例えばノーマルモードにあるネットワークノードである２つのノーマルノード、デバイスＢ及びＣが示される。デバイスＢは、デバイスＣに、カウンタ値を含み、例えばメッセージ２０１'のように暗号化によって認証されているリクエストを送信する。例えばリクエストは、センサ値を要求するか、又は、何らかのコマンド等であってよい。デバイスＣは、メッセージを復号化し、カウンタ値をそれ自身のカウンタを用いて確認する。略語「ａｌｔ」を用いて、後者の確認に関して２つの代替案が示されている。受信カウンタ値が有効でない場合、メッセージは無視される。そうでなければ、メッセージは受理され、リクエストは処理され、デバイスＡと同じやり方で応答が送信される。
【００４９】
すべてのシーケンス線図において、時間は上から下に流れる。即ち、時間的に先のメッセージは上部に示され、時間的に後のメッセージは下部に示される。シーケンス線図は、本発明を説明するために示されるが、多くのオプションの要素を含む。例えば図３では、デバイスＢは、リクエストを送信する必要がなく、デバイスＣもリクエストに応える必要がなく、認証は、例えばメッセージ２０１等のように、異なる方法で確認されてもよい。
【００５０】
一実施形態では、コーディネータモードで動作するネットワークノードも、メッセージ２０１又は２０１'といった認証済みメッセージを送受信することによって、通常のネットワークトラフィックに参加することができる。しかし、これは必須ではなく、コーディネータモードにあるネットワークノードは、コーディネータタスク専用であってもよい。スウォームといった低リソースの使い捨てネットワークノードには、これがむしろ好ましい。
【００５１】
ネットワークノード１１０は、カウンタマネジャ１４０を含む。カウンタマネジャ１４０は、グループ１００内の他のノードのカウンタとのカウンタ１３０の同期化を向上させる。一実施形態では、カウンタマネジャ１４０は、現在のモード１４２の表現を記憶する。モード１４２は、他の場所に記憶されてもよい。ネットワークノード１１０、特にカウンタマネジャ１４０の挙動は、モードによって異なる。
【００５２】
コーディネータモードでは、カウンタマネジャ１４０は、グループ１００内のネットワークノードに、カウンタ同期化メッセージを周期的に送信する。当該カウンタ同期化メッセージは、カウンタ１３０の現在値を含む。図２は、カウンタ同期化メッセージ２０２の一実施形態を示す。カウンタ同期化メッセージ２０２は、この場合は、ネットワークノード１１０のカウンタ１３０から得られるカウンタ値２１２を含む。カウンタ同期化メッセージ２０２は、当該メッセージがカウンタ同期化メッセージであることを示す、例えばビット列であるカウンタ同期化指標を含む。カウンタ同期化指標といった指標メッセージは、いわゆるマジックナンバーである。明示的な認証トークンが使用される場合、カウンタ同期化メッセージ２０２は、カウンタ値２１２及びカウンタ同期化指標２２２について計算された例えばＭＡＣである認証トークン２４０を含む。そうではなくてメッセージ２３０'の構造が使用されてもよい。
【００５３】
例えばＲＣオシレータ又は水晶等を用いて、カウンタ同期化メッセージの周期的送信の時間が決められる。例えばカウンタ同期化メッセージは、毎分、又は、より頻繁に、例えば１０秒毎に、若しくは、頻度を落として、例えば２分、１０分置き等に送信される。カウンタ同期化メッセージの送信頻度は、カウンタ１３０の信頼性といった要素に依存する。カウンタ１３０があまり正確に作動しない場合、より頻繁にカウンタ同期化メッセージが送信される。カウンタマネジャ１４０は、インクリメントユニット１３２を使用して、クロック同期化メッセージの周期的送信の時間を決めてもよい。
【００５４】
ノーマルモードでは、カウンタマネジャは、カウンタ同期化メッセージを受信すると、カウンタ１３０を、受信したカウンタ同期化メッセージ内の受信カウンタ値に合わせる。これは、グループ１００内のカウンタが同期されたままとなる効果を有する。ネットワーク遅延によって、ノーマルノードのカウンタは、コーディネータノードのカウンタよりもわずかに遅れる。しかし、これは、問題ではなく、遅延閾値によって説明される。カウンタ１３０は更に、例えばわずかに速いクロックによって、受信カウンタよりも進んでいてもよい。なお、ノーマルモードにあるネットワークノード１１０は、認証及びカウンタ値確認に合格しなければ、カウンタ同期化メッセージを含むメッセージを受理しない。受理された、例えば拒絶されていないカウンタ同期化メッセージから受信されるカウンタ値は、カウンタ１３０内のカウンタ値から遅延閾値未満で異なる。
【００５５】
認証確認が、遅延閾値に比べて高速である場合、カウンタ１３０は、受信カウンタ値で上書きすることによって調整される。より詳細な実施形態では、認証確認の補正は、例えばカウンタ１３０を受信したカウンタに認証遅延を足したもので上書きすることによって行われる。例えばカウンタ値ｙを受信すると、カウンタ１３０のコピーｘ１が作成され、確認が成功すると、カウンタ１３０は、ｙ＋（ｘ２−ｘ１）に調整され、式中、ｘ２は、認証確認後のカウンタ１３０の値である。
【００５６】
ノーマルモードにおいて、正しいカウンタ同期化メッセージを受信すると、カウンタマネジャ１４０は、同期化タイムアウト期間を開始する。例えばカウンタ同期化メッセージが、例えば毎分送信される場合、同期化タイムアウト期間は、例えばその２倍、例えば２分に設定される。一実施形態では、ランダム遅延がタイムアウト期間に加えられ、これにより、ネットワーク衝突が回避される。
【００５７】
同期化タイムアウト期間中にカウンタ同期化メッセージを受信することなく、同期化タイムアウト期間が満了する（依然としてノーマルモードにある）と、カウンタマネジャは、ネットワークノードをコーディネータモードに切り替え、例えばモード１４２はコーディネータモードの表現で上書きされる。
【００５８】
図４は、コーディネータモードに切り替えられる一実施形態の可能なシーケンス線図を示す。ノーマルモードにある２つのネットワークノード、即ち、ノーマルノード：デバイスＢ及びＣと、コーディネータモードにある１つのネットワークノード：デバイスＡとが示される。デバイスＡは、カウンタ同期化メッセージ（CounterValueSync）を、デバイスＢ及びＣに送信する。これらのデバイスは、受信カウンタ値を含むメッセージが本物であることを確認し、それらのカウンタを同期化する。次に、これらのデバイスは、同期化タイムアウト期間を開始する（startCounterValueUpdateTimeout）。これらの動きは、明確にするために、デバイスＢに対してのみ示される。この例では、コーディネータノードＡは、例えばメンテナンスのため又は故障によりパワーダウンするか、又は、ネットワーク接続が切れる。その結果、グループ内には更なるカウンタ同期化メッセージが送信されない。デバイスＢ及びＣによって設定されたタイムアウトはランダム成分も含む。図４では、デバイスＢのタイムアウトは、偶然に、先に満了する。その結果、デバイスＢは、コーディネータモードに切り替わり、カウンタ同期化メッセージを送信し始める。好適には、デバイスＢは、タイムアウト直後にカウンタ同期化メッセージを送信する。なお、デバイスＣは、デバイスＢのカウンタ同期化メッセージを受理する。これは、デバイスＣは、前のコーディネータＡと同じグループ鍵１５２を使用して認証を行うからである。更に、Ｂ及びＣのカウンタは依然として同期化されている。したがって、デバイスＣは、デバイスＢから受信されるカウンタ値は、それ自身のカウンタ値からほとんど変わらないことを見つける。したがって、コーディネータＡがオフラインになった後、ネットワークの最小限の中断だけで、別のノードがコーディネータの役割をシームレスに引き継ぐ。
【００５９】
一実施形態では、ノーマルモードにあるネットワークノードは、例えば新しいカウンタ値を含み、正しい鍵で本物であることが証明されている認証済みメッセージだけを受理するが、一実施形態では、ネットワークノードは、他の何らかのメッセージを受理してもよい。例えばネットワークノードは、例えばデバイスをリセットする又はデバイスをオン若しくはオフにするための例えばネットワーク制御メッセージである特殊メッセージにのみ使用されるメンテナンス暗号鍵で構成されていてもよい。メンテナンス鍵で認証され、場合により暗号化されたメッセージは、正しいカウンタ値を有する必要がない。これらのメッセージは更に、別のやり方で（例えばシーケンス番号を含むことによって）認証されてもよい。シーケンス番号もリプレイを阻止するが、各デバイスが互いにシーケンス番号を維持することが必要となるので、より大きいオープンネットワークには適していない。或いは、メンテナンス目的は、好適には、グループ認証を必要としないピアツーピア通信を使用する。例えばハンドシェイクセキュリティプロトコルが使用される。
【００６０】
また、他のモードでは、好適な通信モードは、グループ鍵で本物であることが証明され、正しい（即ち、ネットワークノードのカウンタ１３０の遅延閾値内の）カウンタ値を有する認証済みメッセージを使用する。しかし、これらの他のモードでは、幾つか例外がある。
【００６１】
一実施形態では、ネットワークノード１１０は、初期化モードを有する。モード１４２は、初期化モードの表現を含む。ネットワークノード１１０は、ネットワークノード１１０の始動後又は例えばノード１１０のリセット後等に、初期化モードに入る。
【００６２】
初期化モードでは、通信ユニット１２０は、受信したカウンタ同期化メッセージを、暗号鍵で当該受信メッセージが本物であることを確認した後に、受理する。通信ユニットは、ノーマルモードでは、受信したカウンタ同期化メッセージが正しいカウンタ値を有することも要求するが、初期化モードでは、これは必要ではない。
【００６３】
初期化モードでは、カウンタマネジャ１４０は、同期化タイムアウト期間を開始する。したがって、同期化タイムアウト期間は、ノード１１０が初期化モードに入っても開始される。上記されたように、同期化タイムアウト期間は、ノード１１０が、ノーマル又は初期化モードにおいてカウンタ同期化メッセージを受信しても開始される。
【００６４】
更に、初期化モードでは、同期化タイムアウト期間中にカウンタ同期化メッセージを受信することなく、同期化タイムアウト期間が満了すると、モードは、コーディネータモードに切り替わる。
【００６５】
同期化タイムアウト期間内に、初期化モードにおいてカウンタ同期化メッセージを受信すると、カウンタマネジャ１４０は、カウンタを、カウンタ同期化メッセージ内のカウンタ値に合わせ、同期化タイムアウト期間を開始し、ノーマルモードに切り替える。この実施形態では、初期化モードにあるネットワークノードは、正しいカウンタ値を必要とすることなく、当該ネットワークノードのグループ鍵を使用する既存ネットワークのカウンタ値に参加する。
【００６６】
一実施形態では、初期化モードにあるネットワークノード１１０は、ネットワーク内のカウンタ値を制御するメッセージ、具体的にはカウンタ同期化メッセージ（及び任意選択的に放棄済みメッセージ（以下参照））以外は、他の認証済みメッセージを受理しない。したがって、この期間中にコマンドをリプレイする機会はない。ネットワークノード１１０によって送信されるメッセージは、初期化されていないネットワークのカウンタ値が正しくない可能性が非常に高いので、ネットワーク内の他のノードによって受理されない。
【００６７】
これは、ネットワークノードが、有用な通信を行える前に、カウンタ同期化メッセージが受信されるまで待たなければならないことを意味する。この問題は、カウンタ同期化リクエストメッセージを送信することによって対処される。
【００６８】
一実施形態では、初期化モードにおいて、カウンタマネジャ１４０は、カウンタ同期化リクエストメッセージをグループ内のネットワークノードに送信する。コーディネータモードでは、カウンタマネジャは、カウンタ同期化リクエストメッセージを受信すると、カウンタ同期化メッセージをグループ内のネットワークノードに送信する。当該カウンタ同期化メッセージは、カウンタの現在値を含む。リクエスト遅延タイムアウト期間は、同期化タイムアウト期間よりも短い。
【００６９】
これは、カウンタ値のアップデートを受信し、有用な通信（例えば認証済みメッセージの送受信）に参加し始めることができるまでネットワークノードが待たなければならない時間を短縮する。カウンタ同期化リクエストメッセージはオプションである。
【００７０】
図２は、一例として、カウンタ同期化リクエストメッセージ２０３の一実施形態を示す。カウンタ同期化リクエストメッセージ２０３は、カウンタ同期化リクエスト指標２２３と、メッセージについて計算された認証トークンとを含む。このメッセージはカウンタ値を必要としない。ノーマルノードは、カウンタ同期化リクエストメッセージ２０３を、カウンタ値がないことにより、受理しないが、コーディネータモードにあるノードは受理する。
【００７１】
一実施形態では、カウンタマネジャ１４０は、カウンタ同期化リクエストメッセージ内にノンス（図２は図示せず）を含める。例えばノンスは乱数である。カウンタ同期化メッセージはノンスの暗号化を含む。これにより、カウンタ同期化メッセージのリプレイが回避される。認証トークン２４０は、カウンタ同期化リクエスト指標２２３及びノンスの両方について計算される。
【００７２】
ノンスは、特にネットワークノードが初期化モードに入ったときにカウンタがランダム化される場合に、初期化モードにあるネットワークノードのカウンタ値であってよい。なお、この場合でも、ノーマルノードは、カウンタ値が正しくないことから、メッセージを受理しない。いずれの場合でも、ノーマルモードにあるノードは、カウンタ同期化リクエストメッセージを無視する。
【００７３】
カウンタ同期化リクエストメッセージ内にノンスがなければ、カウンタ同期化メッセージのリプレイは、初期化モードにあるデバイス（のみ）に影響を及ぼす。攻撃者は、これを利用するためには、デバイスを初期化モードにするやり方を持っていなければならず、また、正しいインクリメント時間同期化メッセージを繰り返し続けなければならず、そうでなければ、デバイスはタイムアウトし、コーディネータとなり、リアルコーディネータによって放棄するように告げられ、放棄する（したがって、既存のグループに参加する）。この偶発事象の可能性はごくわずかであるので、ノンスはオプションである。
【００７４】
一実施形態では、初期化モードにおいて、カウンタマネジャ１４０は、カウンタ同期化リクエストメッセージを送信する前に、リクエスト遅延タイムアウト期間を開始する。カウンタ同期化リクエストメッセージは、リクエスト遅延タイムアウト期間の終わりに送信される。このタイムアウト期間もランダム遅延を含む。リクエスト遅延タイムアウト中に、カウンタ同期化リクエストメッセージ又はカウンタ同期化メッセージが受信されると、タイムアウト期間は終了する。
【００７５】
図５は、ネットワークノードのグループの始動の一実施形態の可能なシーケンス線図を示す。３つのネットワークノード：デバイスＡ、Ｂ及びＣが示される。既存のコーディネータノード、即ち、コーディネータモードにあるネットワークノードはない。最初に、各デバイスは開始（例えばパワーアップ）されるか又はリセット等される（startUp）。次に、各デバイスは、例えばタイマ１４４を使用して、リクエスト遅延タイムアウト期間を開始し（startRequestDelay）、更に、同期化タイムアウト期間も開始する（startCounterValueUpdateTimeOut）。同期化タイムアウト期間は、リクエスト遅延タイムアウト期間よりも先に開始されてもよいが、これらの期間は、リクエスト遅延タイムアウト期間が最初に満了するように構成される。
【００７６】
図５では、偶然に、デバイスＢについて、リクエスト遅延タイムアウト期間が最初に満了する（startDelayExpires）。その結果、デバイスＢが、カウンタ同期化リクエストメッセージ（requestCounterValue）を送信する。この場合、メッセージは、グループ内にブロードキャストされる。デバイスＡ及びＣは、カウンタ同期化リクエストメッセージを受信する。デバイスＡ及びＣは、初期化モードにあるので、カウンタ同期化リクエストメッセージを受理し、遅延タイムアウト期間を終了させる。これにより、多くのカウンタ値リクエストがネットワーク上に送信されることが回避される。特に、大きいネットワーク上では、これは、始動時に、大量のネットワーク活動を生成する。この場合、いずれのデバイスもまだコーディネータモードに切り替わっていないので、カウンタ同期化リクエストメッセージに応えるデバイスはない。この時点まで、すべてのデバイスは初期化モードにある。
【００７７】
ある時点において、１つのデバイスの同期化タイムアウト期間が満了する（CounterValueUpdateTimeoutExpired）。図５の例では、これはデバイスＡである。その結果、デバイスＡは、コーディネータモードに切り替わり、カウンタ同期化メッセージ（CounterValueSync）を送信し始める。デバイスＢ及びＣは、カウンタ値を確認することができないので、カウンタ同期化メッセージを受理し、それらのカウンタを調整する（syncCounter）。デバイスＢ及びＣはノーマルモードに切り替わる。これにより、すべてのカウンタが同期されたネットワークがもたらされ、カウンタが同期された状態が継続することを確実にするコーディネータがいる。
【００７８】
図６は、ネットワークノードの既存グループ（例えば図５において初期化されたグループ）に新しいネットワークノードが追加される一実施形態の可能なシーケンス線図を示す。デバイスＡ、Ｂ及びＣが示され、そのうち、デバイスＡはコーディネータモードにあり、デバイスＢ及びＣはノーマルモードにある。新しいデバイスＤがネットワークに追加される。デバイスＤは、グループ鍵を共有するが、起動したばかりである。デバイスＤは初期化モードにある。デバイスＤが起動したばかりなので、カウンタは同期化されていない。
【００７９】
デバイスＤは、リクエスト遅延タイムアウト期間及び同期化タイムアウト期間を開始する。リクエスト遅延タイムアウト期間が最初に満了し、デバイスＤは、当該時間内に、カウンタ同期化メッセージを受信しなかったものとする。その結果、Ｄは、カウンタ同期化リクエストメッセージ（requestCounterValue）を送信する。このメッセージは、グループ内でブロードキャストされる。ノーマルモードにあるデバイスＢ及びＣは、このメッセージを無視するが、コーディネータモードにあるデバイスＡは、これに応えて、カウンタ同期化メッセージを送信する。すべてのデバイスＤ、Ｂ及びＣが、カウンタ同期化メッセージを受信し、それらのカウンタを同期させる。デバイスＢ及びＣは、本物であることと、正しいカウンタ値がカウンタ同期化メッセージ内に含まれていることを確認し、デバイスＤは、本物であることだけを確認する。
【００８０】
ネットワークの品質が不良であること又は物理的なネットワークにおける変化等によって、ネットワークノードのグループによって形成されているネットワークが、アイランドと呼ばれる２つ以上のグループに分割する可能性がある。１つのアイランド内のネットワークノードは、もう１つのアイランドからのネットワークメッセージを受信することができない。その結果、各アイランドは、コーディネータを任命する。その後、これらの２つのグループは偶然に互いを再び認識する場合がある。例えばアドホックネットワークにおいて、２つのアイランドを繋げるノードが追加される。アイランドは再びマージすることが望ましい。
【００８１】
コーディネータモードにあるネットワークノードと同じアイランド内のノーマルモードにあるネットワークノードは、コーディネータノードのメンバーと呼ばれる。
【００８２】
一実施形態において、コーディネータモードでは、カウンタマネジャは、カウンタ同期化メッセージを受信すると、放棄（resign）メッセージを送信する。放棄メッセージは、カウンタに記憶されているカウンタ値を含む。コーディネータノードは、通常は、カウンタ同期化メッセージを受信せず、それらを送信するだけである。したがって、コーディネータモードにおいてカウンタ同期化メッセージ（「障害を起こす（offending）」カウンタ同期化メッセージ）が受信される場合、何かが異常である。放棄メッセージは、他のコーディネータノードにノーマルモードに戻るように命令するために送信される。放棄メッセージは、受信したカウンタ同期化メッセージのカウンタで暗号にされていなければならない。
【００８３】
カウンタマネジャは、別のネットワークノードから、コーディネータモードにおいて放棄メッセージを受信すると、自身のカウンタ値を放棄メッセージから受信カウンタ値と比較する。より高いカウンタ値を選択することにより、衝突は解決される。カウンタが増加するにつれ、これは、リプレイの回避に役立つ。より高いカウンタを有するコーディネータノードが、「よりふさわしい」カウンタを持っていると言える。放棄メッセージは、受信したノードカウンタに従って正しくコード化されなければならない。
【００８４】
受信カウンタ値がカウンタに記憶されているカウンタ値よりも大きい（したがって、放棄メッセージを送信した他のコーディネータノードがよりふさわしいカウンタを有する）場合、カウンタマネジャは、放棄済みメッセージを送信する。放棄済みメッセージは、カウンタに記憶されていたカウンタ値と受信カウンタ値とを含む。カウンタマネジャは、カウンタ１３０を、受信カウンタ値に合わせ、ノーマルモードに切り替える。必要に応じて、動作の順序は変えられてもよい。
【００８５】
ノーマルモードでは、カウンタマネジャは、放棄済みメッセージを受信すると、カウンタを、放棄済みメッセージ内の別のネットワークノードから受信したカウンタ値に合わせる。放棄済みメッセージは、受信ノードの記憶されたカウンタに従って正しく認証されなければならない。
【００８６】
図２は、一例として、放棄メッセージ２０４及び放棄済みメッセージ２０５の一実施形態を示す。
【００８７】
放棄メッセージ２０４は、障害を起こすカウンタ同期化メッセージ内の他のコーディネータノードから受信したカウンタ値２１３を含み、したがって、放棄メッセージは、他のネットワークのテストに合格し、受理される。他のコーディネータノードは、放棄メッセージを受信すると、放棄メッセージ内のカウンタ値がそれ自身のカウンタの遅延閾値内であることを確認し、また、本物であることを確認する。放棄メッセージ２０４は更に、他のコーディネータがカウンタ値の比較を行うことができるように、カウンタ１３０のカウンタ値を含み、また、当該メッセージを放棄メッセージと認識するための放棄指標２２４と、少なくとも要素２１３、２１２及び２２４について計算された認証トークンとを含む。放棄メッセージは、異なるカウンタ値を有する違うアイランド内のノードと、ノーマル又は初期化モードにあるノードとには無視される。
【００８８】
放棄済みメッセージ２０５は、当該メッセージがネットワークノード１１０と同じアイランド内のノードによって受理されるように、自身のカウンタ１３０のカウンタ値２１２を含む。更に、放棄済みメッセージ２０５は、障害を起こすカウンタ同期化メッセージ内の他のコーディネータノードから受信したカウンタ値２１３を含む（なお、カウンタ値２１３は、メッセージ２０４のカウンタ値２１３とは異なる値である）。カウンタ値２１３は、ノーマルノードがそれらのカウンタ値をカウンタ値２１３に合わせるように、放棄済みメッセージ２０５内に含まれる。放棄済みメッセージ２０５は更に、当該メッセージを放棄済みメッセージと認識するための放棄済み指標２２５を含む。カウンタ同期化メッセージについては、ノーマルノードは、そのカウンタを、カウンタ同期化メッセージを認証するために用いたカウンタ値と同じカウンタ値に合わせるが、放棄済みメッセージについては、ノーマルノードは、調整とは異なるカウンタ値を認証に使用する。放棄済みメッセージによって、コーディネータは、そのアイランド内のノーマルノードに、それらのカウンタを他のアイランドのカウンタ値に変更するように命令する。この放棄済みメッセージがなければ、時間コーディネータのみが他のアイランドに参加し、すべてのそのメンバーは、次に放棄するように告げられることになる新しいコーディネータを選択することになる。したがって、最終的には、アイランドは１メンバー毎に動かす。放棄済み方法は、メンバグループ全体を１回で別のアイランドに動かす。放棄済みメッセージを使用する実施形態では、これは最適化される。
【００８９】
認証に必要なカウンタ値は、受信ノードが認識可能なメッセージ内に、例えば「CounterValueForAuthentication」といったプレフィックス等を追加することによって、又は、カウンタ値を特別な場所（例えばメッセージの始まり又は暗号化された部分であるペイロード）に置くことによって示される。認証用ではないが比較又は同期化用のカウンタ値も同様に認識可能である。
【００９０】
幾つかのノードが他のノードとの接続が不良である場合がある。このようなノードは、時に、ネットワーク状態が変化するにつれ、他のノードに可視又は不可視になる。これは、ワイヤレスネットワークにおいて特に問題である。品質不良のネットワークノードは、接続を失うと、１つのネットワークノードからなるアイランドとなり、その中で、当該ノードはコーディネータになる。接続が再確立されると、品質不良のネットワークノードは、他のアイランドのコーディネータ（例えば残りのネットワークノード）との調停を開始する。品質不良のネットワークノードが、よりふさわしいカウンタを有する場合、調停に勝ってしまい、ネットワーク全体のコーディネータとなり、すべてのネットワークノードにそれらのカウンタを変更するように強要する。しかし、しばらくして接続が再び失われる場合があり、その後、上記シナリオ全体が再開され、品質不良のノードがそれ自身のアイランド内のコーディネータとなり、以下同様に進む。単一の品質不良のネットワークが、コーディネータ及びカウンタの頻繁な変更をもたらさないことが望ましい。
【００９１】
これは、任意のメンバーを有する場合に、コーディネータが、よりふさわしいカウンタの確認をすることにより回避される。任意のメンバーを有さない場合、当該コーディネータは、コーディネータだけからなるアイランドであり、この場合、コーディネータは、よりふさわしいカウンタを持っていても、他のコーディネータに従う。
【００９２】
一実施形態では、コーディネータモードでは、カウンタマネジャは、
受信カウンタ値が、カウンタに記憶されているカウンタ値未満である（したがって、カウンタマネジャがよりふさわしいカウンタを持ち、通常は、放棄済みメッセージに追従しない）場合、メンバーリクエストメッセージを送信する。メンバーリクエスト期間内に、これに応えてメンバーシップメッセージが受信されなければ、カウンタに記憶されているカウンタ値と、受信カウンタ値とを含む放棄済みメッセージを送信し、カウンタを受信カウンタ値に合わせ、ノーマルモードに切り替える。
【００９３】
ノーマルモードでは、カウンタマネジャは、メンバーリクエストメッセージを受信すると、メンバーシップメッセージを用いて答える。
【００９４】
図２は、一例として、メンバーリクエストメッセージ２０６の一実施形態を示す。メンバーリクエストメッセージ２０６は、カウンタ値２１２と、メンバーリクエスト指標２２６と、少なくとも値２１２及び指標２２６について計算された認証トークンとを含む。
【００９５】
図２は、一例として、メンバーシップメッセージ２０７の一実施形態を示す。メンバーシップメッセージ２０７は、カウンタ値２１２と、メンバーシップ指標２２７と、少なくとも値２１２及び指標２２７について計算された認証トークンとを含む。
【００９６】
図７は、ネットワークノードの２つのグループがマージされる実施形態の可能なシーケンス線図を示す。２つのアイランドに分割された４つのネットワークノードが示される。アイランド１には、コーディネータノードＡ及びネットワークノードＢがある。アイランド２には、コーディネータＥ及びノーマルノードＣがある。
【００９７】
コーディネータＡは、カウンタ同期化メッセージ（CounterValueSync(a)）を送信し、コーディネータＥは、カウンタ同期化メッセージ（CounterValueSync(b)）を送信する。次に、何らかのイベントによって、アイランド１とアイランド２との間のネットワークトラフィックが他に到達し、したがって、２つのアイランドは、それらの間でメッセージを送受信できるようになる。これらのメッセージは、２つのアイランドは異なるカウンタに基づいているので、受理されない可能性がある。コーディネータＡは、カウンタ値ａで開始する。コーディネータＥは、カウンタ値ｂで開始する（カウンタ値「ａ」は値「ｂ」とは異なる）。時間が進むにつれて、カウンタ値は、「ａ」又は「ｂ」＋何らかの文字（ｘ、ｙ、ｚ、ｖ、ｗ等）として示され、カウンタがその間に進んだことが示される。
【００９８】
コーディネータＥは、カウンタ同期化メッセージ（CounterValueSync(a+z)）を受信すると、放棄メッセージで応答する。なお、デバイスＡからのカウンタ同期化メッセージは、カウンタ値が正しくないので、コーディネータＥによって本物であることが証明できない。しかしながら、コーディネータＥは受信したカウンタ同期化メッセージに基づいて放棄しないので、これは問題ではない。しかしながら、コーディネータＥは、放棄メッセージ（resign(b+y)）で応答する。放棄メッセージは、コーディネータＥがそれ自身のカウンタ値ではなく、コーディネータＡから受信したカウンタ値を用いて認証されているので、受理される。
【００９９】
コーディネータＡが放棄メッセージを受信後、誰がよりふさわしいカウンタを有するかに応じて、２つの事が生じる。
【０１００】
コーディネータＡのカウンタが、コーディネータＥから受信したカウンタ値未満である場合（a+z+x<=b+y）、コーディネータＡが、認証のために自身のカウンタ値を有する放棄済みメッセージを送信する。コーディネータＡのメンバーは、このメッセージを受理し、アイランド２内のノードは、カウンタ値が正しくないので、これを無視する。ノーマルノードＢは、そのカウンタ値を、放棄済みメッセージ内のカウンタ値に合わせる（changeCounterValue(b+y)）。コーディネータＡは、ノーマルモードに切り替える。ある時点で、コーディネータＥは、今度はすべてのネットワークノードによって受理されるカウンタ同期化メッセージを送信する。即ち、２つのアイランドは結び付き、１つのコーディネータしかない。
【０１０１】
コーディネータＡのカウンタが、コーディネータＥから受信したカウンタ値よりも高い場合（a+z+x>b+y）、コーディネータＡは、よりふさわしいカウンタを有する。コーディネータＡは、自身がそのアイランド内の単一のノードであるかどうかを確認する。コーディネータＡは、メンバーリクエストメッセージを送信することによって処理を進める。アイランド２内のネットワークノードは、メッセージを本物であると証明できないため、当該メッセージを無視する。しかし、ネットワークノードＢは、メンバーシップメッセージ（memberReport）を送信することによって応える。コーディネータＡは、メンバーリクエストメッセージを受信すると、自身がメンバーを有することを確認する。コーディネータＡは更に、よりふさわしいカウンタを有するので、コーディネータＥの放棄メッセージを無視することができる。
【０１０２】
しばらくして、コーディネータＥは、カウンタ同期化メッセージを送信する。このメッセージは、コーディネータＡに、それ自身の放棄メッセージを送信するように指示する。今度は、コーディネータＥは、よりふさわしいカウンタを有さず、上記されたように、放棄の処理を進める。
【０１０３】
図８は、ネットワークノードの２つのグループがマージされる一実施形態の可能なシーケンス線図を示す。この場合、アイランド２は、１つのメンバー：コーディネータＥしか有さない。シーケンスの上部において、コーディネータＥは、放棄メッセージを受信する。シーケンスは次に、図７と同様に進むが、この場合、メンバーシップメッセージは受信されない。したがって、コーディネータＥは、よりふさわしいカウンタを有していても放棄する。
【０１０４】
放棄を開始するのに１つのメンバーシップメッセージを必要とするのではなく、一実施形態は更に、他の何らかの最小数のメンバーシップメッセージを必要としてもよい。その最小数よりも少ないメンバーシップメッセージが受信されると、コーディネータは、よりふさわしいカウンタを有していても、放棄メッセージに応えて放棄する。例えば、メンバーシップメッセージの最小数は、１ではなく２である、又は、より大きい数等であってよい。なお、図８では、a+y+wによって示されるカウンタ値は、a+y+xからしばらく時間が経過したことを示す。
【０１０５】
実施形態では、リクエスト遅延タイムアウト期間及び同期化タイムアウト期間は、タイマ、クロック、インタラプト等を使用して実現される。認証済みメッセージ、カウンタ同期化メッセージ、カウンタ同期化リクエストメッセージ、放棄メッセージ、放棄済みメッセージ、メンバーリクエストメッセージ及びメンバーシップメッセージはすべてブロードキャスト又はマルチキャストされる。
【０１０６】
図９は、メッセージがリプレイされる一例を説明するシーケンス線図を概略的に示す。図９に、２つのネットワークノードＡ及びＢが示され、ネットワークノードＡはコーディネータモードにあり、ネットワークノードＢはノーマルモードにある。例えば攻撃者である悪意のあるノードが、デバイスＡとデバイスＢとの間で交換されたメッセージを記録し、それらをリプレイすることによって、何らかの利益を獲得しようと試みる。
【０１０７】
先ず、コーディネータＡは、カウンタ同期化メッセージを送信し、これは、悪意のあるノードによって記録される。しばらくした後、（「ｎ」個の更なるカウンタ同期化メッセージが送信される）、悪意のあるノードは、記録したカウンタ同期化メッセージをリプレイする。ネットワークノードＢは、リプレイされたメッセージが新しくない、即ち、受信カウンタ値がデバイスＢのカウンタに十分に近くないので、当該メッセージを無視する。コーディネータＡは、放棄メッセージを送信することによって応える。
【０１０８】
悪意のあるノードは、放棄メッセージと、更に、通常の認証済みメッセージとを記録する。しばらくしてある時点において、悪意のあるノードは、これらのメッセージをリプレイする。放棄メッセージは、デバイスＡのカウンタは進んでいる、即ち、デバイスＡはよりふさわしいカウンタを有しているので無視される。また、ネットワークノードＢも、認証失敗により、当該メッセージを無視する。
【０１０９】
悪意のあるノードがリプレイする機会がある短い間隔がある。メッセージが受信された直後に当該メッセージをすぐにリプレイすることによって、悪意のあるノードは、カウンタ値の差が遅延閾値未満である場合に、認証失敗を回避しうる。このようなリプレイの使用は、制御ネットワークでは、メッセージにいわゆるステートレスコマンドのみを使用することによって更に減少される。ステートレスコマンドは、受信ノードがコマンドを解釈するためにステートを維持することを必要としない。例えば値を変更するコマンドは、インクリメント又はデクリメントではなく、パラメータの新しい値を含む。インクリメント又はデクリメントは、受信ノードがパラメータの現在値を使用してパラメータの新しい値を計算することが必要となる。しかし、パラメータの相対値ではなく絶対値を含むステートレスバージョンでは、新しい値を計算するためにパラメータの現在値を必要としない。インクリメント値が十分に速くリプレイされると、パラメータの二重インクリメントになる。一実施形態では、認証済みメッセージは、パラメータの絶対値を含み、受信ノードは、パラメータをその絶対値に変更する。例えばコマンドが調光器に送信される照明ネットワークについて考える。ステートレスコマンドは、調光器によって調光パラメータに設定されるべき特定の値を含む。ステートフルバージョンは、調光器にある程度の量だけ調光を増加又は減少することを要求する。
【０１１０】
通常、デバイス１１０と他のノード１１２及び１１４とは、それぞれ、デバイスに記憶される適切なソフトウェアを実行するマイクロプロセッサ（図示せず）を含む。例えば当該ソフトウェアは、ダウンロードされ、及び／又は、対応するメモリ（例えばＲＡＭといった揮発性メモリ又はフラッシュといった不揮発性メモリ（図示せず））に記憶されてよい。
【０１１１】
或いは、デバイス１１０は、全体的又は部分的に、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であるプログラマブル論理回路で実現される。デバイス１１０は、全体的又は部分的に、いわゆる特定用途向け集積回路（ＡＳＩＣ）、即ち、デバイスの特定使用のためにカスタマイズされた集積回路（ＩＣ）で実現されてもよい。例えば回路は、Ｖｅｒｉｌｏｇ、ＶＨＤＬ等といったハードウェア記述言語を使用してＣＭＯＳで実現される。
【０１１２】
一実施形態では、ネットワークノード１１０は、通信回路、カウンタ回路、インクリメント回路、カウンタマネジャ回路及び鍵ストレージ回路を含む。これらの回路は、本明細書において説明された対応ユニットを実現する。これらの回路は、プロセッサ回路及びストレージ回路であってよく、プロセッサ回路は、ストレージ回路内に電子的に表現される命令を実行する。これらの回路は、ＦＰＧＡ、ＡＳＩＣ等であってもよい。
【０１１３】
ネットワーク方法の一実施形態において、当該ネットワーク方法は、ノーマルモードとコーディネータモードとを含む。上記方法は、
−ネットワークノードのグループ内で電子メッセージを送受信するステップと、
−定期的な時間間隔でカウンタをインクリメントするステップと、
−ノーマルモードにおいて、
−カウンタ同期化メッセージを受信すると、カウンタを、受信したカウンタ同期化メッセージ内の受信カウンタ値に合わせ、同期化タイムアウト期間を開始するステップと、
−同期化タイムアウト期間中にカウンタ同期化メッセージを受信することなく、同期化タイムアウト期間が満了すると、上記方法を、コーディネータモードに切り替えるステップと、
−コーディネータモードにおいて、
−グループ内のネットワークノードに、カウンタの現在値を含むカウンタ同期化メッセージを周期的に送信するステップと、
を含む。
【０１１４】
当業者には明らかであるように、上記方法を実行する多くの様々なやり方が可能である。例えばステップの順番が変更されても、幾つかのステップが並列で実行されてもよい。更に、ステップ間に、他の方法ステップが挿入されてもよい。挿入されたステップは、本明細書において説明された方法の微調整を表すか、上記方法と無関係であってもよい。また、所与のステップは、次のステップが開始される前に完全に終了していなくてもよい。
【０１１５】
本発明による方法は、上記ネットワーク方法をプロセッサシステムに行わせる命令を含むソフトウェアを使用して実行される。ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー（登録商標）、メモリ、光学ディスク等といった適切な記憶媒体に記憶されてよい。ソフトウェアは、信号として、電線に沿って、ワイヤレスに、又は、例えばインターネットであるデータネットワークを使用して送信されてよい。ソフトウェアは、ダウンロード及び／又はサーバ上での遠隔使用のために利用可能にされてよい。本発明による方法は、当該方法を行うように、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であるプログラマブル論理回路を設定するビットストリームを使用して実行されてもよい。
【０１１６】
当然ながら、本発明は更に、本発明を実現するように適応されたコンピュータプログラム、特に担体上又は内のコンピュータプログラムにまで及ぶ。プログラムは、ソースコード、オブジェクトコード、コード中間ソース及び部分的にコンパイルされた形式のオブジェクトコードのフォーマット、又は、本発明による方法の実現における使用に適した任意の他のフォーマットであってよい。コンピュータプログラムプロダクトに関する一実施形態は、上記された方法のうちの少なくとも１つの方法の処理ステップのそれぞれに対応する実行可能な命令を含む。これらの命令は、サブルーチンに分割され、及び／又は、静的若しくは動的にリンクされた１つ以上のファイルに記憶されてよい。コンピュータプログラムプロダクトに関する別の実施形態は、上記されたシステム及び／又はプロダクトのうちの少なくとも１つの手段のそれぞれに対応する実行可能な命令を含む。
【０１１７】
図１０ａは、コンピュータプログラム１０２０を含む書き込み可能部１０１０を有するコンピュータ可読媒体１０００を示す。コンピュータプログラム１０２０は、一実施形態による方法をプロセッサシステムに行わせる命令を含む。コンピュータプログラム１０２０は、コンピュータ可読媒体１０００上に物理的なマークとして、又は、コンピュータ可読媒体１０００の磁気化によって具現化される。しかし、任意の他の適切な実施形態も想到可能である。更に、当然ながら、コンピュータ可読媒体１０００は、ここでは光学ディスクとして示されているが、コンピュータ可読媒体１０００は、ハードディスク、固体メモリ、フラッシュメモリ等といった任意の適切なコンピュータ可読媒体であってよく、また、記録不可であっても記録可能であってもよい。コンピュータプログラム１０２０は、上記ネットワーク方法をプロセッサシステムに行わせる命令を含む。
【０１１８】
図１０ｂは、一実施形態によるプロセッサシステム１１４０の概略図を示す。プロセッサシステムは、１つ以上の集積回路１１１０を含む。図１０ｂに、１つ以上の集積回路１１１０のアーキテクチャが概略的に示される。回路１１１０は、一実施形態による方法を実行する及び／又はそのモジュール若しくはユニットを実現するためにコンピュータプログラムコンポーネントを実行する処理ユニット１１２０（例えばＣＰＵ）を含む。回路１１１０は、プログラミングコード、データ等を記憶するメモリ１１２２を含む。メモリ１１２２の一部は、読取専用であってよい。回路１１１０は、例えばアンテナ、コネクタ又は両方等である通信要素１１２６を含んでよい。回路１１１０は、上記方法において規定される処理の一部又は前部を行う専用集積回路１１２４を含んでよい。プロセッサ１１２０、メモリ１１２２、専用ＩＣ１１２４及び通信要素１１２６は、例えばバスである相互接続部１１３０を介して互いに接続される。プロセッサシステム１１１０は、アンテナ及び／又はコネクタをそれぞれ使用して接触及び／又は非接触通信向けに構成されてもよい。
【０１１９】
なお、上記実施形態は、発明を例示するものであって限定するものではなく、当業者であれば、多くの代替実施形態をデザインすることができるであろう。
【０１２０】
請求項において、括弧内の任意の参照符号は、請求項を限定するものと解釈されるべきではない。動詞「含む」及びその活用形の使用は、請求項に記載される要素又はステップ以外の要素又はステップの存在を排除しない。要素に先行する「ａ」又は「ａｎ」との冠詞は、当該要素の複数の存在を排除しない。本発明は、幾つかの異なる要素を含むハードウェアによって、また、適切にプログラミングされたコンピュータによって実現される。幾つかの手段を列挙するデバイスの請求項において、これらの手段のうちの幾つかは、同一のハードウェアによって具体化されてもよい。特定の手段が相互に異なる従属請求項に記載されているというだけで、これらの手段の組み合わせを有利に使用することができないということを示すものではない。
【０１２１】
請求項において、括弧内の参照は、実施形態の図面又は実施形態の式における参照符号を指している。これにより、請求項の理解度が増加されるが、これらの参照は、請求項を限定するものとして解釈されるべきではない。
【図１ａ】
2018529292.tif 000003
【図１ｂ】
2018529292.tif 000004
【図２】
2018529292.tif 000005
【図３】
2018529292.tif 000006
【図４】
2018529292.tif 000007
【図５】
2018529292.tif 000008
【図６】
2018529292.tif 000009
【図７】
2018529292.tif 000010
【図８】
2018529292.tif 000011
【図９】
2018529292.tif 000012
【図１０ａ】
2018529292.tif 000013
【図１０ｂ】
2018529292.tif 000014
【国際調査報告】
2018529292.tif 000015
2018529292.tif 000016