(57)【特許請求の範囲】
【請求項１】
クライアントノードとグループノードとの間のセッション鍵を確立するための前記クライアントノードにおいて動作可能な方法であって、前記方法は、
現在エポックに関連するエポック識別値を取得するステップであって、前記エポック識別値を取得するステップが、前記エポック識別値を前記グループノードとネゴシエートするステップを含む、取得するステップと、
共有秘密鍵と、前記エポック識別値と、前記グループノードに関連するグループノード識別情報とを使用して制限付き鍵を計算するステップであって、前記共有秘密鍵が前記クライアントノードと中心ノードとに知られるが、前記グループノードに知られない、計算するステップと、
セッション鍵確立プロトコルにおいて前記制限付き鍵をマスター鍵として使用して前記セッション鍵を導出するために前記グループノードとの前記セッション鍵確立プロトコルを実行するステップと
を含む、方法。
【請求項２】
クライアントノード実時間の最大時間しきい値差内の前記クライアントノードと前記グループノードと前記中心ノードとの間で時間を同期させるステップ
をさらに含み、前記現在エポックに関連する前記エポック識別値を取得するステップは、
前記グループノードからグループノード実時間と前記グループノード識別情報とを受信するステップと、
前記グループノード実時間をクライアントノード実時間と比較するステップと、
前記グループノード実時間が前記クライアントノード実時間の前記最大時間しきい値差内にあると判断するステップと、
前記ノード実時間から前記エポック識別値を計算するステップと
を含む、
請求項1に記載の方法。
【請求項３】
前記現在エポックに関連する前記エポック識別値を取得するステップは、
前記グループノードからグループノードエポック値と前記グループノード識別情報とを受信するステップと、
前記グループノードエポック値をクライアントノードエポック値と比較するステップであって、前記クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、比較するステップと、
前記エポック識別値を前記グループノードエポック値と前記クライアントノードエポック値とのうちの大きいほうとして計算するステップと、
前記計算されたエポック識別値を前記グループノードに送信するステップと
を含む、請求項1に記載の方法。
【請求項４】
前記現在エポックに関連する前記エポック識別値を取得するステップは、
前記グループノードにクライアントノードエポック値を送信するステップであって、前記クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、送信するステップと、
前記グループノードから前記エポック識別値と前記グループノード識別情報とを受信するステップと、
前記受信されたエポック識別値が、送信された前記クライアントノードエポック値に等しいかまたはそれよりも大きいことを検証するステップと
を含む、請求項1に記載の方法。
【請求項５】
鍵検証プロトコルを使用して前記セッション鍵を検証するステップをさらに含む、請求項1に記載の方法。
【請求項６】
前記グループノードと前記中心ノードとの間の通信リンクが、前記現在エポック中に間欠的にのみ利用可能である、請求項1に記載の方法。
【請求項７】
前記制限付き鍵がエポック固有である、請求項1に記載の方法。
【請求項８】
前記制限付き鍵がグループノード固有である、請求項7に記載の方法。
【請求項９】
前記制限付き鍵が前記中心ノードによって前記グループノードに与えられる、請求項1に記載の方法。
【請求項１０】
前記中心ノードが、障害を受けていないグループノードのリストを維持し、障害を受けたグループノードが前記リストから削除される、請求項1に記載の方法。
【請求項１１】
複数のセッション鍵を導出するために前記制限付き鍵が前記現在エポック中に複数回使用される、請求項1に記載の方法。
【請求項１２】
前記現在エポックは、持続時間が固定でなく、新しいエポックの開始時に満了する、請求項1に記載の方法。
【請求項１３】
前記エポック識別値が、前記中心ノードによって生成される連続整数であり、前記中心ノードによって前記新しいエポックの前記開始時に増分される、請求項12に記載の方法。
【請求項１４】
前記中心ノードが、前記グループノードにコミットメッセージを送信することによって前記現在エポックの開始を示す、請求項1に記載の方法。
【請求項１５】
前記エポック識別値が実時間から導出される、請求項1に記載の方法。
【請求項１６】
前記共有秘密鍵と、前記エポック識別値と、前記グループノード識別情報とを使用して前記制限付き鍵を計算するステップが、暗号ベースのメッセージ認証コード(CMAC)関数、ハッシュベースのメッセージ認証コード(HMAC)関数、または暗号ブロック連鎖メッセージ認証コード(CBC-MAC)関数のうちの1つを使用して実行される、請求項1に記載の方法。
【請求項１７】
前記現在エポック中に前記グループノードとの作成されたセッションごとの前記制限付き鍵の導出を回避するためにキャッシュ中にタプルを挿入するステップ
をさらに含む、請求項1に記載の方法。
【請求項１８】
前記タプルが前記グループノード識別情報と前記制限付き鍵とを含む、請求項17に記載の方法。
【請求項１９】
前記現在エポックが満了したとき、前記キャッシュがフラッシュされる、請求項17に記載の方法。
【請求項２０】
クライアントノードであって、
グループノードと通信するように適応された通信インターフェースと、
前記通信インターフェースに通信可能に結合された処理回路であって、前記処理回路は、
現在エポックに関連するエポック識別値を取得することであって、前記エポック識別値を取得することが、前記エポック識別値を前記グループノードとネゴシエートすることを含む、取得することと、
共有秘密鍵と、前記エポック識別値と、前記グループノードに関連するグループノード識別情報とを使用して制限付き鍵を計算することであって、前記共有秘密鍵が前記クライアントノードと中心ノードとに知られるが、前記グループノードに知られない、計算することと、
セッション鍵確立プロトコルにおいて前記制限付き鍵をマスター鍵として使用してセッション鍵を導出するために前記グループノードとの前記セッション鍵確立プロトコルを実行することと
を行うように適応された、処理回路と
を含む、クライアントノード。
【請求項２１】
クライアントノード実時間の最大時間しきい値差内の前記処理回路が、前記クライアントノードと前記グループノードと前記中心ノードとの間で時間を同期させるようにさらに適応され、前記現在エポックに関連する前記エポック識別値を前記取得することは、
前記グループノードからグループノード実時間と前記グループノード識別情報とを受信することと、
前記グループノード実時間をクライアントノード実時間と比較することと、
前記グループノード実時間が前記クライアントノード実時間の前記最大時間しきい値差内にあると判断することと、
前記ノード実時間から前記エポック識別値を計算することと
を前記処理回路に行わせる、請求項20に記載のクライアントノード。
【請求項２２】
前記現在エポックに関連する前記エポック識別値を前記取得することは、
前記グループノードからグループノードエポック値と前記グループノード識別情報とを受信することと、
前記グループノードエポック値をクライアントノードエポック値と比較することであって、前記クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、比較することと、
前記エポック識別値を前記グループノードエポック値と前記クライアントノードエポック値とのうちの大きいほうとして計算することと、
前記計算されたエポック識別値を前記グループノードに送信することと
を前記処理回路に行わせる、請求項20に記載のクライアントノード。
【請求項２３】
前記現在エポックに関連する前記エポック識別値を前記取得することは、
前記グループノードにクライアントノードエポック値を送信することであって、前記クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、送信することと、
前記グループノードから前記エポック識別値と前記グループノード識別情報とを受信することと、
前記受信されたエポック識別値が、送信された前記クライアントノードエポック値に等しいかまたはそれよりも大きいことを検証することと
を前記処理回路に行わせる、請求項20に記載のクライアントノード。
【請求項２４】
クライアントノードであって、
現在エポックに関連するエポック識別値を取得するための手段であって、前記エポック識別値を取得することが、前記エポック識別値をグループノードとネゴシエートすることを含む、取得するための手段と、
共有秘密鍵と、前記エポック識別値と、前記グループノードに関連するグループノード識別情報とを使用して制限付き鍵を計算するための手段であって、前記共有秘密鍵が前記クライアントノードと中心ノードとに知られるが、前記グループノードに知られない、計算するための手段と、
セッション鍵確立プロトコルにおいて前記制限付き鍵をマスター鍵として使用してセッション鍵を導出するために前記グループノードとの前記セッション鍵確立プロトコルを実行するための手段と
を含む、クライアントノード。
【請求項２５】
クライアントノード実時間の最大時間しきい値差内の前記クライアントノードと前記グループノードと前記中心ノードとの間で時間を同期させるための手段
をさらに含み、前記現在エポックに関連する前記エポック識別値を取得するための手段は、
前記グループノードからグループノード実時間と前記グループノード識別情報とを受信するための手段と、
前記グループノード実時間をクライアントノード実時間と比較するための手段と、
前記グループノード実時間が前記クライアントノード実時間の前記最大時間しきい値差内にあると判断するための手段と、
前記ノード実時間から前記エポック識別値を計算するための手段と
を含む、
請求項24に記載のクライアントノード。
【請求項２６】
前記現在エポックに関連する前記エポック識別値を取得するための手段は、
前記グループノードからグループノードエポック値と前記グループノード識別情報とを受信するための手段と、
前記グループノードエポック値をクライアントノードエポック値と比較するための手段であって、前記クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、比較するための手段と、
前記エポック識別値を前記グループノードエポック値と前記クライアントノードエポック値とのうちの大きいほうとして計算するための手段と、
前記計算されたエポック識別値を前記グループノードに送信するための手段と
を含む、請求項24に記載のクライアントノード。
【請求項２７】
前記現在エポックに関連する前記エポック識別値を取得するための手段は、
前記グループノードにクライアントノードエポック値を送信するための手段であって、前記クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、送信するための手段と、
前記グループノードから前記エポック識別値と前記グループノード識別情報とを受信するための手段と、
前記受信されたエポック識別値が、送信された前記クライアントノードエポック値に等しいかまたはそれよりも大きいことを検証するための手段と
を含む、請求項24に記載のクライアントノード。
【請求項２８】
クライアントノードとグループノードとの間のセッション鍵を確立するための前記クライアントノードにおいて動作可能な1つまたは複数の命令を有するプロセッサ可読記憶媒体であって、前記命令は、少なくとも1つのプロセッサによって実行されたとき、
現在エポックに関連するエポック識別値を取得することであって、前記エポック識別値を取得することが、前記エポック識別値を前記グループノードとネゴシエートすることを含む、取得することと、
共有秘密鍵と、前記エポック識別値と、前記グループノードに関連するグループノード識別情報とを使用して制限付き鍵を計算することであって、前記共有秘密鍵が前記クライアントノードと中心ノードとに知られるが、前記グループノードに知られない、計算することと、
セッション鍵確立プロトコルにおいて前記制限付き鍵をマスター鍵として使用して前記セッション鍵を導出するために前記グループノードとの前記セッション鍵確立プロトコルを実行することと
を前記プロセッサに行わせる、非一時的プロセッサ可読記憶媒体。
【請求項２９】
クライアントノード実時間の最大時間しきい値差内の前記プロセッサによって実行されたとき、
前記クライアントノードと前記グループノードと前記中心ノードとの間で時間を同期させること
を前記プロセッサにさらに行わせる追加の命令を有し、前記現在エポックに関連する前記エポック識別値を取得することは、
前記グループノードからグループノード実時間と前記グループノード識別情報とを受信することと、
前記グループノード実時間をクライアントノード実時間と比較することと、
前記グループノード実時間が前記クライアントノード実時間の前記最大時間しきい値差内にあると判断することと、
前記ノード実時間から前記エポック識別値を計算することと
を含む、
請求項28に記載の非一時的プロセッサ可読記憶媒体。
【請求項３０】
前記現在エポックに関連する前記エポック識別値を取得することは、
前記グループノードからグループノードエポック値と前記グループノード識別情報とを受信することと、
前記グループノードエポック値をクライアントノードエポック値と比較することであって、前記クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、比較することと、
前記エポック識別値を前記グループノードエポック値と前記クライアントノードエポック値とのうちの大きいほうとして計算することと、
前記計算されたエポック識別値を前記グループノードに送信することと
を含む、請求項28に記載の非一時的プロセッサ可読記憶媒体。
【請求項３１】
前記現在エポックに関連する前記エポック識別値を取得することは、
前記グループノードにクライアントノードエポック値を送信することであって、前記クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、送信することと、
前記グループノードから前記エポック識別値と前記グループノード識別情報とを受信することと、
前記受信されたエポック識別値が、送信された前記クライアントノードエポック値に等しいかまたはそれよりも大きいことを検証することと
を含む、請求項28に記載の非一時的プロセッサ可読記憶媒体。
【請求項３２】
グループノードとクライアントノードとの間のセッション鍵を確立するための前記グループノードにおいて動作可能な方法であって、前記方法は、
中心ノードからエポックに関連するプロキシトークンの第1のセットを受信するステップであって、プロキシトークンの前記第1のセットが、前記クライアントノードに関連するプロキシトークンを含み、前記プロキシトークンがクライアントノード識別情報と制限付き鍵とを含む、受信するステップと、
プロキシトークンの前記第1のセットをプロキシトークンの予備セットとして記憶するステップと、
前記エポックの開始時にプロキシトークンのアクティブセットをプロキシトークンの前記予備セットと交換するステップであって、プロキシトークンの前記予備セットがプロキシトークンの次のアクティブセットになる、交換するステップと、
セッション鍵確立プロトコルにおいて前記制限付き鍵をマスター鍵として使用して前記セッション鍵を導出するために前記クライアントノードとの前記セッション鍵確立プロトコルを実行するステップと
を含む、方法。
【請求項３３】
前記エポックに関連するエポック識別値を取得するステップと、
前記エポック識別値に基づいて前記制限付き鍵を取り出すステップと
をさらに含む、請求項32に記載の方法。
【請求項３４】
前記エポックに関連する前記エポック識別値を取得するステップは、
クライアントノード実時間を受信するステップと、
前記クライアントノード実時間をグループノード実時間と比較するステップと、
前記グループノード実時間が前記クライアントノード実時間の最大時間しきい値差内にあると判断するステップと、
ノード実時間に基づいて前記エポック識別値を計算するステップと
を含む、請求項33に記載の方法。
【請求項３５】
前記エポック識別値に基づいて前記制限付き鍵を取り出すステップは、
プロキシトークンの前記予備セットが前記エポック識別値に対応するのかプロキシトークンの前記アクティブセットが前記エポック識別値に対応するのかを判断するステップと、
プロキシトークンの前記予備セットが前記エポック識別値に関連する場合、プロキシトークンの前記予備セットから前記制限付き鍵を取得するステップと、
プロキシトークンの前記アクティブセットが前記エポック識別値に関連する場合、プロキシトークンの前記アクティブセットから前記制限付き鍵を取得するステップと
をさらに含む、請求項33に記載の方法。
【請求項３６】
クライアントノード実時間の最大時間しきい値差内の前記中心ノードと前記グループノードと前記クライアントノードとの間で時間を同期させるステップと、
現在時間に関連するエポック識別値を取得するステップと、
前記エポック識別値と前記クライアントノード識別情報とに基づいてプロキシトークンの前記第1のセットから前記クライアントノードの前記制限付き鍵を選択するステップとをさらに含む、請求項32に記載の方法。
【請求項３７】
前記エポックに関連するエポック識別値と、プロキシトークンの前記第1のセットとを含む、少なくとも1つのメッセージを前記中心ノードから受信するステップと、
前記エポックの前記開始時を示すコミットメッセージを前記中心ノードから受信するステップと
をさらに含む、請求項32に記載の方法。
【請求項３８】
前記グループノードと前記中心ノードとの間の通信リンクが、前記エポック中に間欠的にのみ利用可能である、請求項32に記載の方法。
【請求項３９】
中心ノードと通信するように適応された第1の通信インターフェースと、
クライアントノードと通信するように適応された第2の通信インターフェースと、
前記第1の通信インターフェースと前記第2の通信インターフェースとに通信可能に結合された処理回路であって、前記処理回路は、
前記中心ノードからエポックに関連するプロキシトークンの第1のセットを受信することであって、プロキシトークンの前記第1のセットが、前記クライアントノードに関連するプロキシトークンを含み、前記プロキシトークンがクライアントノード識別情報と制限付き鍵とを含む、受信することと、
プロキシトークンの前記第1のセットをプロキシトークンの予備セットとして記憶することと、
前記エポックの開始時にプロキシトークンのアクティブセットをプロキシトークンの前記予備セットと交換することであって、プロキシトークンの前記予備セットがプロキシトークンの次のアクティブセットになる、交換することと、
セッション鍵確立プロトコルにおいて前記制限付き鍵をマスター鍵として使用してセッション鍵を導出するために前記クライアントノードとの前記セッション鍵確立プロトコルを実行することと
を行うように適応された、処理回路と
を含む、グループノード。
【請求項４０】
中心ノードからエポックに関連するプロキシトークンの第1のセットを受信するための手段であって、プロキシトークンの前記第1のセットが、クライアントノードに関連するプロキシトークンを含み、前記プロキシトークンがクライアントノード識別情報と制限付き鍵とを含む、受信するための手段と、
プロキシトークンの前記第1のセットをプロキシトークンの予備セットとして記憶するための手段と、
前記エポックの開始時にプロキシトークンのアクティブセットをプロキシトークンの前記予備セットと交換するための手段であって、プロキシトークンの前記予備セットがプロキシトークンの次のアクティブセットになる、交換するための手段と、
セッション鍵確立プロトコルにおいて前記制限付き鍵をマスター鍵として使用してセッション鍵を導出するために前記クライアントノードとの前記セッション鍵確立プロトコルを実行するための手段と
を含む、グループノード。
【請求項４１】
グループノードとクライアントノードとの間のセッション鍵を確立するための前記グループノードにおいて動作可能な1つまたは複数の命令を有するプロセッサ可読記憶媒体であって、前記命令は、少なくとも1つのプロセッサによって実行されたとき、
中心ノードからエポックに関連するプロキシトークンの第1のセットを受信することであって、プロキシトークンの前記第1のセットが、前記クライアントノードに関連するプロキシトークンを含み、前記プロキシトークンがクライアントノード識別情報と制限付き鍵とを含む、受信することと、
プロキシトークンの前記第1のセットをプロキシトークンの予備セットとして記憶することと、
前記エポックの開始時にプロキシトークンのアクティブセットをプロキシトークンの前記予備セットと交換することであって、プロキシトークンの前記予備セットがプロキシトークンの次のアクティブセットになる、交換することと、
セッション鍵確立プロトコルにおいて前記制限付き鍵をマスター鍵として使用して前記セッション鍵を導出するために前記クライアントノードとの前記セッション鍵確立プロトコルを実行することと
を前記プロセッサに行わせる、プロセッサ可読記憶媒体。
【請求項４２】
第1のグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードにおいて動作可能な方法であって、前記方法は、
第2のグループノードが障害を受けたと判断するステップであって、前記第1のグループノードが第1のグループノード識別子を有する、判断するステップと、
障害を受けていないグループノードのリストから前記障害を受けた第2のグループノードを削除するステップであって、障害を受けていないグループノードの前記リストが、前記中心ノードに記憶され、前記第1のグループノードを含む、削除するステップと、
障害を受けていないグループノードの前記リスト上の各障害を受けていないグループノードに、次のエポックに関連する複数のプロキシトークンを送信するステップであって、前記複数のプロキシトークンが、前記第1のグループノードに関連し前記第1のグループノードに送信される第1のプロキシトークンを含み、前記第1のプロキシトークンがクライアントノード識別情報と制限付き鍵とを含み、前記次のエポックが次のエポック識別値に関連し、前記制限付き鍵が、前記次のエポック識別値、前記第1のグループノード識別子、および前記クライアントノードと前記中心ノードとの間で前に確立された共有鍵から計算されるが、前記グループノードに知られない、送信するステップと
を含む、方法。
【請求項４３】
前記第1のプロキシトークンが、前記次のエポックの開始より前に送信される、請求項42に記載の方法。
【請求項４４】
前記第1のグループノードにコミットメッセージを送信するステップであって、前記コミットメッセージが前記次のエポックの前記開始を示す、送信するステップ
をさらに含む、請求項43に記載の方法。
【請求項４５】
第1のグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードであって、前記中心ノードは、
前記第1のグループノードと通信するように適応された通信インターフェースと、
前記通信インターフェースに結合された処理回路であって、
第2のグループノードが障害を受けたと判断することであって、前記第1のグループノードが第1のグループノード識別子を有する、判断することと、
障害を受けていないグループノードのリストから前記障害を受けた第2のグループノードを削除することであって、障害を受けていないグループノードの前記リストが、前記中心ノードに記憶され、前記第1のグループノードを含む、削除することと、
障害を受けていないグループノードの前記リスト上の各障害を受けていないグループノードに、次のエポックに関連する複数のプロキシトークンを送信することであって、前記複数のプロキシトークンが、前記第1のグループノードに関連し前記第1のグループノードに送信される第1のプロキシトークンを含み、前記第1のプロキシトークンがクライアントノード識別情報と制限付き鍵とを含み、前記次のエポックが次のエポック識別値に関連し、前記制限付き鍵が、前記次のエポック識別値、前記第1のグループノード識別子、および前記クライアントノードと前記中心ノードとの間で前に確立された共有鍵から計算されるが、前記グループノードに知られない、送信することと
を行うように適応された処理回路と
を含む、中心ノード。
【請求項４６】
第1のグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードであって、前記中心ノードは、
第2のグループノードが障害を受けたと判断するための手段であって、前記第1のグループノードが第1のグループノード識別子を有する、判断するための手段と、
障害を受けていないグループノードのリストから前記障害を受けた第2のグループノードを削除するための手段であって、障害を受けていないグループノードの前記リストが、前記中心ノードに記憶され、前記第1のグループノードを含む、削除するための手段と、
障害を受けていないグループノードの前記リスト上の各障害を受けていないグループノードに、次のエポックに関連する複数のプロキシトークンを送信するための手段であって、前記複数のプロキシトークンが、前記第1のグループノードに関連し前記第1のグループノードに送信される第1のプロキシトークンを含み、前記第1のプロキシトークンがクライアントノード識別情報と制限付き鍵とを含み、前記次のエポックが次のエポック識別値に関連し、前記制限付き鍵が、前記次のエポック識別値、前記第1のグループノード識別子、および前記クライアントノードと前記中心ノードとの間で前に確立された共有鍵から計算されるが、前記グループノードに知られない、送信するための手段と
を含む、中心ノード。
【請求項４７】
第1のグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードにおいて動作可能な1つまたは複数の命令を有するプロセッサ可読記憶媒体であって、前記命令は、少なくとも1つのプロセッサによって実行されたとき、
第2のグループノードが障害を受けたと判断することであって、前記第1のグループノードが第1のグループノード識別子を有する、判断することと、
障害を受けていないグループノードのリストから前記障害を受けた第2のグループノードを削除することであって、障害を受けていないグループノードの前記リストが、前記中心ノードに記憶され、前記第1のグループノードを含む、削除することと、
障害を受けていないグループノードの前記リスト上の各障害を受けていないグループノードに、次のエポックに関連する複数のプロキシトークンを送信することであって、前記複数のプロキシトークンが、前記第1のグループノードに関連し前記第1のグループノードに送信される第1のプロキシトークンを含み、前記第1のプロキシトークンがクライアントノード識別情報と制限付き鍵とを含み、前記次のエポックが次のエポック識別値に関連し、前記制限付き鍵が、前記次のエポック識別値、前記第1のグループノード識別子、および前記クライアントノードと前記中心ノードとの間で前に確立された共有鍵から計算されるが、前記グループノードに知られない、送信することと
を前記プロセッサに行わせる、プロセッサ可読記憶媒体。
【請求項４８】
前記エポック識別値を取得するステップは、前記グループノードの最大エポック値に関連するエポック識別値を受信するステップを含む、請求項1に記載の方法。
【請求項４９】
前記エポックに関連するプロキシトークンの前記第1のセットは、前記エポックの開始の前に受信される、請求項32に記載の方法。
【請求項５０】
前記セッション鍵は中心ノードとの通信を行わずに確立される、請求項32に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本特許出願は、その開示全体が参照により本明細書に明確に組み込まれる、2010年6月11日に出願された「Method and Apparatus for Virtual Pairing with a Group of Semi-Connected Devices」と題する米国仮特許出願第61/354,135号の優先権を主張する。
【０００２】
1つの特徴は、通信システムに関し、より詳細には、グループノードと中心ノードとの間のセッションごとの通信を必要とせずにクライアントノードとグループノードとの間のセッション鍵を確立するための改善された方法に関する。
【背景技術】
【０００３】
短距離クライアントノードなどの短距離デバイスは、暗号化および認証のために使用され得る共有鍵を確立するためにペアリングプロセスを使用する。このプロセスは、通常、多くの中央処理ユニット(CPU)サイクル、したがって、かなりの量の電気エネルギーを消費する、公開鍵暗号化演算を伴う。多くのそのようなデバイスはバッテリー電源式であり、したがって、頻繁なペアリングにより、バッテリーが再充電を必要とするまでの時間が短縮され得る。頻繁なペアリング動作を回避するために、デバイスの「仮想ペアリング」を可能にする方式が使用され得る。
【０００４】
仮想ペアリングでは、クライアントノードが、グループノードのうちの1つを介して中心ノードとペアリングする。十分な計算能力、ストレージ、および物理的セキュリティをもつ1つの中心ノードと、中心ノードと通信しているいくつかの「グループノード」とがあると仮定する。グループノードは、携帯用(たとえば、セルフォンバッテリーエネルギーでバッテリー供給される)および/または半携帯用(たとえば、カート上のデスクトップコンピュータ)であり、物理的にセキュアでないことがある。クライアントノードは、小さいバッテリー、たとえば、小さいボタン電池によって電力供給される極めて小型のデバイスであり得る。クライアントノードは、少なくとも1つのグループノードと直接通信することができるが、場合によってはすべてのグループノードと直接通信することができるとは限らず、中心ノードと直接通信することができない。
【０００５】
一例では、上記で説明した構造は病院において使用され得、そこでは、中心ノードが情報技術(IT)インフラストラクチャの一部であり、セキュアなロケーションに配置され得る。グループノードは、ナースステーションのカウンタ上にあるか、あるいは看護師または検査室技術者が携帯するポータブルバッテリー電源式デバイスであり得る。クライアントノードは患者タグであり得る。
【０００６】
要するに、仮想ペアリングは、クライアントノードが、中心ノードと共有されるマスター鍵を確立するが、グループノードのうちの1つを介して中心ノードと間接的に通信するプロセスである。次いで、必要に応じて、クライアントノードは、任意のグループノードとのセッション鍵を確立することができる。セッション鍵を確立するためのこのプロトコルは、グループノードが中心ノードと通信することを伴う。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
セッション鍵を確立するプロトコル中に、グループノードは中心ノードと通信する。しかしながら、そのような通信は、間欠的にのみ利用可能であるか、または極めて限られた帯域幅を有し得る、使用上の問題が予期され得る。したがって、グループノードと中心ノードとの間のセッションごとの通信を必要とせずにクライアントノードとグループノードとの間のセッション鍵確立を可能にすることができる装置および方法が必要である。さらに、紛失し、盗まれ、障害を受け、廃棄され、および/または故障したグループノードが、単純で実質的に受動的な方法でシステムから隔離され得るシステムが必要である。たとえば、ノードは、メッセージに従うことを信頼される必要がなく、実質的に受動的なシステムでは、技術者が鍵を破壊、削除および/または交換するために物理的にノードに行く必要がない。
【課題を解決するための手段】
【０００８】
1つの特徴では、クライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードにおいて動作可能な方法であって、本方法は、現在エポックに関連するエポック識別値を取得するステップであって、エポック識別値を取得するステップが、ノード実時間に基づいてエポック識別値を計算するステップ、またはエポック識別値をグループノードとネゴシエートするステップのうちの1つを含む、取得するステップと、共有秘密鍵と、エポック識別値と、グループノードに関連するグループノード識別情報とを使用して制限付き鍵を計算するステップであって、共有秘密鍵がクライアントノードと中心ノードとに知られる、計算するステップと、セッション鍵確立プロトコルにおいて制限付き鍵をマスター鍵として使用してセッション鍵を導出するためにグループノードとのセッション鍵確立プロトコルを実行するステップとを含む、方法が開示される。
【０００９】
一実施形態では、本方法は、クライアントノードと、グループノードと、中心ノードとの間で時間を大まかに同期させるステップをさらに含み得、現在エポックに関連するエポック識別値を取得するステップは、グループノードからグループノード実時間とグループノード識別情報とを受信するステップと、グループノード実時間をクライアントノード実時間と比較するステップと、グループノード実時間がクライアントノード実時間の最大時間しきい値差内にあると判断するステップと、ノード実時間からエポック識別値を計算するステップとを含む。別の実施形態では、現在エポックに関連するエポック識別値を取得するステップは、グループノードからグループノードエポック値とグループノード識別情報とを受信するステップと、グループノードエポック値をクライアントノードエポック値と比較するステップであって、クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、比較するステップと、エポック識別値をグループノードエポック値とクライアントノードエポック値とのうちの大きいほうとして計算するステップと、計算されたエポック識別値をグループノードに送信するステップとを含む。
【００１０】
別の実施形態では、現在エポックに関連するエポック識別値を取得するステップは、グループノードにクライアントノードエポック値を送信するステップであって、クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、送信するステップと、グループノードからエポック識別値とグループノード識別情報とを受信するステップと、受信されたエポック識別値が、送信されたクライアントノードエポック値に等しいかまたはそれよりも大きいことを検証するステップとを含む。一実施形態では、本方法は、鍵検証プロトコルを使用してセッション鍵を検証するステップをさらに含む。別の実施形態では、グループノードと中心ノードとの間の通信リンクが、現在エポック中に間欠的にのみ利用可能である。一実施形態では、制限付き鍵は、エポック固有であり、グループノード固有である。別の実施形態では、制限付き鍵は中心ノードによってグループノードに与えられる。さらに別の実施形態では、中心ノードは、障害を受けていないグループノードのリストを維持し、障害を受けたグループノードがリストから削除される。さらに別の実施形態では、複数のセッション鍵を導出するために、制限付き鍵は現在エポック中に複数回使用される。
【００１１】
さらに別の実施形態では、現在エポックは、持続時間が固定でなく、新しいエポックの開始時に満了する。さらに別の実施形態では、エポック識別値は、中心ノードによって生成される連続整数であり、中心ノードによって新しいエポックの開始時に増分される。さらに別の実施形態では、中心ノードは、グループノードにコミットメッセージを送信することによって現在エポックの開始を示す。さらに別の実施形態では、エポックは実時間から導出される。さらに別の実施形態では、共有秘密鍵と、エポック識別値と、グループノード識別情報とを使用して制限付き鍵を計算するステップは、暗号ベースのメッセージ認証コード(CMAC: cipher-based message authentication code)関数、ハッシュベースのメッセージ認証コード(HMAC: hash-based message authentication code)関数、または暗号ブロック連鎖メッセージ認証コード(CBC-MAC: cipher block chaining message authentication code)関数のうちの1つを使用して実行される。さらに別の実施形態では、本方法は、現在エポック中にグループノードとの作成されたセッションごとの制限付き鍵の導出を回避するためにキャッシュ中にタプルを挿入するステップをさらに含む。さらに別の実施形態では、タプルはグループノード識別情報と制限付き鍵とを含む。さらに別の実施形態では、現在エポックが満了したとき、キャッシュがフラッシュされる。
【００１２】
別の特徴では、グループノードと通信するように適応された通信インターフェースと、通信インターフェースに通信可能に結合された処理回路であって、現在エポックに関連するエポック識別値を取得することであって、エポック識別値を取得することが、ノード実時間に基づいてエポック識別値を計算すること、またはエポック識別値をグループノードとネゴシエートすることのうちの1つを含む、取得することと、共有秘密鍵と、エポック識別値と、グループノードに関連するグループノード識別情報とを使用して制限付き鍵を計算することであって、共有秘密鍵がクライアントノードと中心ノードとに知られる、計算することと、セッション鍵確立プロトコルにおいて制限付き鍵をマスター鍵として使用してセッション鍵を導出するためにグループノードとのセッション鍵確立プロトコルを実行することとを行うように適応された処理回路とを含む、クライアントノードが開示される。一実施形態では、処理回路は、クライアントノードとグループノードと中心ノードとの間で時間を大まかに同期させるようにさらに適応され、現在エポックに関連するエポック識別値を前記取得することは、グループノードからグループノード実時間とグループノード識別情報とを受信することと、グループノード実時間をクライアントノード実時間と比較することと、グループノード実時間がクライアントノード実時間の最大時間しきい値差内にあると判断することと、ノード実時間からエポック識別値を計算することとを処理回路に行わせる。
【００１３】
別の実施形態では、現在エポックに関連するエポック識別値を前記取得することは、グループノードからグループノードエポック値とグループノード識別情報とを受信することと、グループノードエポック値をクライアントノードエポック値と比較することであって、クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、比較することと、エポック識別値をグループノードエポック値とクライアントノードエポック値とのうちの大きいほうとして計算することと、計算されたエポック識別値をグループノードに送信することとを処理回路に行わせる。さらに別の実施形態では、現在エポックに関連するエポック識別値を前記取得することは、グループノードにクライアントノードエポック値を送信することであって、クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、送信することと、グループノードからエポック識別値とグループノード識別情報とを受信することと、受信されたエポック識別値が、送信されたクライアントノードエポック値に等しいかまたはそれよりも大きいことを検証することとを処理回路に行わせる。
【００１４】
別の特徴では、現在エポックに関連するエポック識別値を取得するための手段であって、エポック識別値を取得するための手段が、ノード実時間に基づいてエポック識別値を計算すること、またはエポック識別値をグループノードとネゴシエートすることのうちの1つを含む、取得するための手段と、共有秘密鍵と、エポック識別値と、グループノードに関連するグループノード識別情報とを使用して制限付き鍵を計算するための手段であって、共有秘密鍵がクライアントノードと中心ノードとに知られる、計算するための手段と、セッション鍵確立プロトコルにおいて制限付き鍵をマスター鍵として使用してセッション鍵を導出するためにグループノードとのセッション鍵確立プロトコルを実行するための手段とを含む、クライアントノードが開示される。一実施形態では、クライアントノードは、クライアントノードとグループノードと中心ノードとの間で時間を大まかに同期させるための手段をさらに含み、現在エポックに関連するエポック識別値を取得するための手段は、グループノードからグループノード実時間とグループノード識別情報とを受信するための手段と、グループノード実時間をクライアントノード実時間と比較するための手段と、グループノード実時間がクライアントノード実時間の最大時間しきい値差内にあると判断するための手段と、ノード実時間からエポック識別値を計算するための手段とを含む。
【００１５】
別の実施形態では、現在エポックに関連するエポック識別値を取得するための手段は、グループノードからグループノードエポック値とグループノード識別情報とを受信するための手段と、グループノードエポック値をクライアントノードエポック値と比較するための手段であって、クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、比較するための手段と、エポック識別値をグループノードエポック値とクライアントノードエポック値とのうちの大きいほうとして計算するための手段と、計算されたエポック識別値をグループノードに送信するための手段とを含む。
【００１６】
別の実施形態では、現在エポックに関連するエポック識別値を取得するための手段は、グループノードにクライアントノードエポック値を送信するための手段であって、クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、送信するための手段と、グループノードからエポック識別値とグループノード識別情報とを受信するための手段と、受信されたエポック識別値が、送信されたクライアントノードエポック値に等しいかまたはそれよりも大きいことを検証するための手段とを含む。
【００１７】
別の特徴では、クライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードにおいて動作可能な1つまたは複数の命令を有するプロセッサ可読媒体であって、命令は、少なくとも1つのプロセッサによって実行されたとき、現在エポックに関連するエポック識別値を取得することであって、エポック識別値を取得することが、ノード実時間に基づいてエポック識別値を計算すること、またはエポック識別値をグループノードとネゴシエートすることのうちの1つを含む、取得することと、共有秘密鍵と、エポック識別値と、グループノードに関連するグループノード識別情報とを使用して制限付き鍵を計算することであって、共有秘密鍵がクライアントノードと中心ノードとに知られる、計算することと、セッション鍵確立プロトコルにおいて制限付き鍵をマスター鍵として使用してセッション鍵を導出するためにグループノードとのセッション鍵確立プロトコルを実行することとをプロセッサに行わせる、プロセッサ可読媒体が提供される。一実施形態では、プロセッサによって実行されたとき、クライアントノードとグループノードと中心ノードとの間で時間を大まかに同期させることをプロセッサにさらに行わせる追加の命令があり、現在エポックに関連するエポック識別値を取得することは、グループノードからグループノード実時間とグループノード識別情報とを受信することと、グループノード実時間をクライアントノード実時間と比較することと、グループノード実時間がクライアントノード実時間の最大時間しきい値差内にあると判断することと、ノード実時間からエポック識別値を計算することとを含む。
【００１８】
別の実施形態では、現在エポックに関連するエポック識別値を取得することは、グループノードからグループノードエポック値とグループノード識別情報とを受信することと、グループノードエポック値をクライアントノードエポック値と比較することであって、クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、比較することと、エポック識別値をグループノードエポック値とクライアントノードエポック値とのうちの大きいほうとして計算することと、計算されたエポック識別値をグループノードに送信することとを含む。さらに別の実施形態では、現在エポックに関連するエポック識別値を取得することは、グループノードにクライアントノードエポック値を送信することであって、クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、送信することと、グループノードからエポック識別値とグループノード識別情報とを受信することと、受信されたエポック識別値が、送信されたクライアントノードエポック値に等しいかまたはそれよりも大きいことを検証することとを含む。
【００１９】
別の特徴では、グループノードとクライアントノードとの間のセッション鍵を確立するためのグループノードにおいて動作可能な方法であって、本方法は、中心ノードからエポックに関連するプロキシトークンの第1のセットを受信するステップであって、プロキシトークンの第1のセットが、クライアントノードに関連するプロキシトークンを含み、プロキシトークンがクライアントノード識別情報と制限付き鍵とを有する、受信するステップと、プロキシトークンの第1のセットをプロキシトークンの予備セットとして記憶するステップと、エポックの開始時にプロキシトークンのアクティブセットをプロキシトークンの予備セットと交換するステップであって、プロキシトークンの予備セットがプロキシトークンの次のアクティブセットになる、交換するステップと、セッション鍵確立プロトコルにおいて制限付き鍵をマスター鍵として使用してセッション鍵を導出するためにクライアントノードとのセッション鍵確立プロトコルを実行するステップとを含む、方法が提供される。
【００２０】
一実施形態では、本方法は、エポックに関連するエポック識別値を取得するステップと、エポック識別値に基づいて制限付き鍵を取り出すステップとをさらに含む。一実施形態では、エポックに関連するエポック識別値を取得するステップは、クライアントノード実時間を受信するステップと、クライアントノード実時間をグループノード実時間と比較するステップと、グループノード実時間がクライアントノード実時間の最大時間しきい値差内にあると判断するステップと、ノード実時間に基づいてエポック識別値を計算するステップとを含む。別の実施形態では、エポック識別値に基づいて制限付き鍵を取り出すステップは、プロキシトークンの予備セットがエポック識別値に対応するのかプロキシトークンのアクティブセットがエポック識別値に対応するのかを判断するステップと、プロキシトークンの予備セットがエポック識別値に関連する場合、プロキシトークンの予備セットから制限付き鍵を取得するステップと、プロキシトークンの予備セットがエポック識別値に関連する場合、プロキシトークンのセットから制限付き鍵を取得するステップとをさらに含む。
【００２１】
別の実施形態では、本方法は、中心ノードとグループノードとクライアントノードとの間で時間を大まかに同期させるステップと、現在時間に関連するエポック識別値を取得するステップと、エポック識別値とクライアントノード識別情報とに基づいてプロキシトークンの第1のセットからクライアントノードの制限付き鍵を選択するステップとをさらに含む。別の実施形態では、本方法は、エポックに関連するエポック識別値と、プロキシトークンの第1のセットとを含む、少なくとも1つのメッセージを中心ノードから受信するステップと、エポックの開始を示すコミットメッセージを中心ノードから受信するステップとをさらに含む。別の実施形態では、グループノードと中心ノードとの間の通信リンクが、エポック中に間欠的にのみ利用可能である。
【００２２】
別の特徴では、中心ノードと通信するように適応された第1の通信インターフェースと、クライアントノードと通信するように適応された第2の通信インターフェースと、第1の通信インターフェースと第2の通信インターフェースとに通信可能に結合された処理回路であって、処理回路は、中心ノードからエポックに関連するプロキシトークンの第1のセットを受信することであって、プロキシトークンの第1のセットが、クライアントノードに関連するプロキシトークンを含み、プロキシトークンがクライアントノード識別情報と制限付き鍵とを有する、受信することと、プロキシトークンの第1のセットをプロキシトークンの予備セットとして記憶することと、エポックの開始時にプロキシトークンのアクティブセットをプロキシトークンの予備セットと交換することであって、プロキシトークンの予備セットがプロキシトークンの次のアクティブセットになる、交換することと、セッション鍵確立プロトコルにおいて制限付き鍵をマスター鍵として使用してセッション鍵を導出するためにクライアントノードとのセッション鍵確立プロトコルを実行することとを行うように適応された、処理回路とを含む、グループノードが提供される。
【００２３】
別の特徴では、中心ノードからエポックに関連するプロキシトークンの第1のセットを受信するための手段であって、プロキシトークンの第1のセットが、クライアントノードに関連するプロキシトークンを含み、プロキシトークンがクライアントノード識別情報と制限付き鍵とを有する、受信するための手段と、プロキシトークンの第1のセットをプロキシトークンの予備セットとして記憶するための手段と、エポックの開始時にプロキシトークンのアクティブセットをプロキシトークンの予備セットと交換するための手段であって、プロキシトークンの予備セットがプロキシトークンの次のアクティブセットになる、交換するための手段と、セッション鍵確立プロトコルにおいて制限付き鍵をマスター鍵として使用してセッション鍵を導出するためにクライアントノードとのセッション鍵確立プロトコルを実行するための手段とを含む、グループノードが開示される。
【００２４】
別の特徴では、グループノードとクライアントノードとの間のセッション鍵を確立するためのグループノードにおいて動作可能な1つまたは複数の命令を有するプロセッサ可読媒体であって、命令は、少なくとも1つのプロセッサによって実行されたとき、中心ノードからエポックに関連するプロキシトークンの第1のセットを受信することであって、プロキシトークンの第1のセットが、クライアントノードに関連するプロキシトークンを含み、プロキシトークンがクライアントノード識別情報と制限付き鍵とを有する、受信することと、プロキシトークンの第1のセットをプロキシトークンの予備セットとして記憶することと、エポックの開始時にプロキシトークンのアクティブセットをプロキシトークンの予備セットと交換することであって、プロキシトークンの予備セットがプロキシトークンの次のアクティブセットになる、交換することと、セッション鍵確立プロトコルにおいて制限付き鍵をマスター鍵として使用してセッション鍵を導出するためにクライアントノードとのセッション鍵確立プロトコルを実行することとをプロセッサに行わせる、プロセッサ可読媒体が開示される。
【００２５】
別の特徴では、第1のグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードにおいて動作可能な方法であって、本方法は、第2のグループノードが障害を受けたと判断するステップであって、第1のグループノードが第1のグループノード識別子を有する、判断するステップと、障害を受けていないグループノードのリストから障害を受けた第2のグループノードを削除するステップであって、障害を受けていないグループノードのリストが、中心ノードに記憶され、第1のグループノードを含む、削除するステップと、障害を受けていないグループノードのリスト上の各障害を受けていないグループノードに、次のエポックに関連する複数のプロキシトークンを送信するステップであって、複数のプロキシトークンが、第1のグループノードに関連し第1のグループノードに送信される第1のプロキシトークンを含み、第1のプロキシトークンがクライアントノード識別情報と制限付き鍵とを含み、次のエポックが次のエポック識別値に関連し、制限付き鍵が、次のエポック識別値、第1のグループノード識別子、およびクライアントノードと中心ノードとの間で前に確立された共有鍵から計算される、送信するステップとを含む、方法が開示される。
【００２６】
一実施形態では、第1のプロキシトークンは、次のエポックの開始より前に送信される。別の実施形態では、本方法は、第1のグループノードにコミットメッセージを送信するステップであって、コミットメッセージが次のエポックの開始を示す、送信するステップをさらに含む。
【００２７】
別の特徴では、第1のグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードであって、中心ノードは、第1のグループノードと通信するように適応された通信インターフェースと、通信インターフェースに結合された処理回路であって、第2のグループノードが障害を受けたと判断することであって、第1のグループノードが第1のグループノード識別子を有する、判断することと、障害を受けていないグループノードのリストから障害を受けた第2のグループノードを削除することであって、障害を受けていないグループノードのリストが、中心ノードに記憶され、第1のグループノードを含む、削除することと、障害を受けていないグループノードのリスト上の各障害を受けていないグループノードに、次のエポックに関連する複数のプロキシトークンを送信することであって、複数のプロキシトークンが、第1のグループノードに関連し第1のグループノードに送信される第1のプロキシトークンを含み、第1のプロキシトークンがクライアントノード識別情報と制限付き鍵とを含み、次のエポックが次のエポック識別値に関連し、制限付き鍵が、次のエポック識別値、第1のグループノード識別子、およびクライアントノードと中心ノードとの間で前に確立された共有鍵から計算される、送信することとを行うように適応された処理回路とを含む、中心ノードが開示される。
【００２８】
別の特徴では、第1のグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードであって、中心ノードは、第2のグループノードが障害を受けたと判断するための手段であって、第1のグループノードが第1のグループノード識別子を有する、判断するための手段と、障害を受けていないグループノードのリストから障害を受けた第2のグループノードを削除するための手段であって、障害を受けていないグループノードのリストが、中心ノードに記憶され、第1のグループノードを含む、削除するための手段と、障害を受けていないグループノードのリスト上の各障害を受けていないグループノードに、次のエポックに関連する複数のプロキシトークンを送信するための手段であって、複数のプロキシトークンが、第1のグループノードに関連し第1のグループノードに送信される第1のプロキシトークンを含み、第1のプロキシトークンがクライアントノード識別情報と制限付き鍵とを含み、次のエポックが次のエポック識別値に関連し、制限付き鍵が、次のエポック識別値、第1のグループノード識別子、およびクライアントノードと中心ノードとの間で前に確立された共有鍵から計算される、送信するための手段とを含む、中心ノードが開示される。
【００２９】
別の特徴では、第1のグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードにおいて動作可能な1つまたは複数の命令を有するプロセッサ可読媒体であって、命令は、少なくとも1つのプロセッサによって実行されたとき、第2のグループノードが障害を受けたと判断することであって、第1のグループノードが第1のグループノード識別子を有する、判断することと、障害を受けていないグループノードのリストから障害を受けた第2のグループノードを削除することであって、障害を受けていないグループノードのリストが、中心ノードに記憶され、第1のグループノードを含む、削除することと、障害を受けていないグループノードのリスト上の各障害を受けていないグループノードに、次のエポックに関連する複数のプロキシトークンを送信することであって、複数のプロキシトークンが、第1のグループノードに関連し第1のグループノードに送信される第1のプロキシトークンを含み、第1のプロキシトークンがクライアントノード識別情報と制限付き鍵とを含み、次のエポックが次のエポック識別値に関連し、制限付き鍵が、次のエポック識別値、第1のグループノード識別子、およびクライアントノードと中心ノードとの間で前に確立された共有鍵から計算される、送信することとをプロセッサに行わせる、プロセッサ可読媒体が開示される。
【図面の簡単な説明】
【００３０】
【図１】ワイヤレスネットワーク通信システムを示す図である。
【図２】グループノードと中心ノードとの間のセッションごとの通信を必要とせずにクライアントノードとグループノードとの間のセッション鍵が確立される通信システムの動作の例を示す流れ図である。
【図３】グループノードと中心ノードとの間のセッションごとの通信を必要とせずにクライアントノードとグループノードとの間のセッション鍵が確立される通信システムの動作の例を示す流れ図である。
【図４】グループノードと中心ノードとの間のセッションごとの通信を必要とせずにクライアントノードとグループノードとの間のセッション鍵が確立される通信システムの動作の一例を示す流れ図である。
【図５】一例によるクライアントノードの機能ブロック図である。
【図６】クライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードにおいて動作可能な例示的な方法を示すフローチャートである。
【図７Ａ】エポックを定義するために実時間を使用してクライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードの動作の一例を示す図である。
【図７Ｂ】エポックを定義するために実時間を使用してクライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードの動作の一例を示す図である。
【図８Ａ】クライアントノードがセッションを開始する、エポックを定義するために実時間を使用せずにクライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードの動作の一例を示す図である。
【図８Ｂ】クライアントノードがセッションを開始する、エポックを定義するために実時間を使用せずにクライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードの動作の一例を示す図である。
【図９Ａ】エポックを定義するために実時間が使用されず、グループノードがセッションを開始する、クライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードの動作の一例を示す図である。
【図９Ｂ】エポックを定義するために実時間が使用されず、グループノードがセッションを開始する、クライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードの動作の一例を示す図である。
【図１０】一例によるグループノードの機能ブロック図である。
【図１１】グループノードとクライアントノードとの間のセッション鍵を確立するためのグループノードにおいて動作可能な例示的な方法を示すフローチャートである。
【図１２】エポックを定義するために実時間を使用する、中心ノードに対するグループノードの動作の一例を示す図である。
【図１３Ａ】エポックを定義するために実時間を使用してグループノードとクライアントノードとの間の通信セッションを確立するためのグループノードの動作の一例を示す図である。
【図１３Ｂ】エポックを定義するために実時間を使用してグループノードとクライアントノードとの間の通信セッションを確立するためのグループノードの動作の一例を示す図である。
【図１４】エポックを定義するために実時間を使用しない、中心ノードに対するグループノードの動作の一例を示す図である。
【図１５Ａ】エポックを定義するために実時間を使用せずにグループノードとクライアントノードとの間の通信セッションを確立するためのグループノードの動作の一例を示す図である。
【図１５Ｂ】エポックを定義するために実時間を使用せずにグループノードとクライアントノードとの間の通信セッションを確立するためのグループノードの動作の一例を示す図である。
【図１６】一例による中心ノードの機能ブロック図である。
【図１７】第1のグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードにおいて動作可能な例示的な方法を示すフローチャートである。
【図１８】エポックを定義するために実時間を使用してグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードの動作の一例を示す図である。
【図１９】エポック識別情報が実時間に関係しない、グループノードとクライアントノードとの間の通信セッションを確立するための中心ノードの動作の一例を示す図である。
【発明を実施するための形態】
【００３１】
以下の説明では、実施形態の完全な理解を提供するために具体的な詳細を与える。ただし、実施形態はこれらの具体的な詳細なしに実施され得ることを当業者は理解されよう。たとえば、実施形態を不要な詳細で不明瞭にしないように、動作をブロック図で示すことがあり、またはまったく示さないことがある。他の場合には、実施形態を不明瞭にしないように、よく知られている動作、構造および技法を詳細に示さないことがある。
【００３２】
本明細書で使用する中心ノードは、サーバ、認証サーバと呼ばれることもあり、サーバ、認証サーバ、および/またはサービスをクライアントノードに提供するための他の好適なデバイスの機能の一部または全部を含み得る。クライアントノードは、ユーザ機器(UE)、ワイヤレスもしくはワイヤード通信デバイス、ノード、モバイル端末、移動局と呼ばれることもあり、ユーザ機器(UE)、ワイヤレスもしくはワイヤード通信デバイス、ノード、モバイル端末、移動局および/またはネットワークを介して通信するための他の好適なデバイスの一部または全部を含み得る。クライアントノードは、グループノードのセット中の1つまたは複数のグループノードを介して中心ノードと通信していることがある。半接続状態グループノードは、信頼できないか、遅いかまたは間欠的な通信を中心ノードと有するグループノードであり得る。
【００３３】
概観
1つの特徴は、グループノードと中心ノードとの間のセッションごとの通信を必要とせずにクライアントノードとグループノードとの間のセッション鍵を確立するためのシステム、装置および方法を提供する。
【００３４】
クライアントノードは、少なくとも1つの良好なグループノードと先に通信していることがあり、グループノードはそのとき、中心ノードと通信しており、仮想ペアリングプロトコルを正常に実行した。その結果、クライアントノードおよび中心ノードは共有秘密鍵KMを有し得る。
【００３５】
一例では、すべてのノードおよび端末が、大まかに、すなわち、数秒以内に同期された実時間をそれによって取得し得る機構が提供され得る。本システムでは、時間はエポックに分割され得、エポックの長さは固定であり、たとえば、1分から数日程度であり得る。各エポックの間、グループノードは、中心ノードと少なくとも1回通信し得る。中心ノードは、各グループノードにタプルのリストを送り得る。各タプルエントリは、各クライアントノードを識別するクライアントノード識別子「Cnode_ID」と、各クライアントノード識別子Cnode_IDに関連する制限付き鍵KRとを含み得る。クライアントノード識別子Cnode_IDを、それの関連する制限付き鍵KRとともに、「プロキシトークン」と呼ぶことがある。したがって、エポックの開始中に、中心ノードは、各グループノードに、異なるクライアントノードに関連する一連のプロキシトークンを送信し得る。
【００３６】
制限付き鍵KRは、エポック値「Epoch_ID」と、グループ識別値「Gnode_ID」とに依存し得る。たとえば、KRは以下の式によって計算され得る。
KR = CMAC(KM, Gnode_ID || Epoch_ID)
ただし、Gnode_IDはグループノード識別情報であり得、Epoch_IDは次のエポックに関連する値であり得、KMは、クライアントノードと中心ノードとの間で共有される共有秘密鍵であり得、CMACは、暗号ベースのメッセージ認証コード(CMAC)アルゴリズムであり得る。
【００３７】
クライアントノードは、エポック識別情報Epoch_IDを取得し得、次いで、グループノード識別情報Gnode_IDと共有秘密鍵KMとを知っているので制限付き鍵KRを計算し得る。クライアントノードは、次いで、計算において制限付き鍵KRをマスター鍵として使用して短期セッション鍵を生成するために、各当事者によって与えられるランダム性を使用する2ラウンドセッション鍵確立プロトコルを使用し得る。セッション鍵確立プロトコルは鍵検証をも行い得る。
【００３８】
グループノードが、廃棄されたか、紛失したか、盗まれたか、故障したか、または障害を受けた場合、中心ノードは、そのグループノードを、障害を受けていないグループノードのそれのリストから削除し得、現在エポックが満了した後に、中心ノードは、現在エポック値を反映する有効なプロキシトークンをもはや転送し得ない。したがって、影響を受けたグループノードは、有効なプロキシトークンを有しないことになり、したがって、クライアントノードとのセッションを確立することができない。
【００３９】
制限付き鍵KRはエポック中に何回も使用され得る。同じエポック期間中にセッションごとにKRを導出するのを回避するために、クライアントノードは、タプル、たとえば、グループノード識別情報と、エポック識別情報と、制限付き鍵とをもつキャッシュ(たとえば、メモリ、メモリ回路など)を維持し得る。その結果、クライアントノードのバッテリー電力が節約され得る。
【００４０】
一例では、クライアントノードは、セキュアで大まかに同期された実時間へのアクセスを有し得る。1つのエポック中に、エポック識別情報Epoch_IDは同じ値を有し得る。Epoch_IDをグローバルに記憶する(たとえば、グループノード識別情報Gnode_IDと制限付き鍵KRとをキャッシュエントリ中に配置する)ことと、エポックが変化したときにキャッシュをフラッシュすることとによってメモリが節約され得る。
【００４１】
例示的なネットワーク動作環境
図1に、ワイヤレスネットワーク通信システム100を示す。この例では、クライアントノード102と、グループノード104a〜104cのセットと、中心ノード106とが示されており、クライアントノード102は、グループノード104a〜104cのうちの1つまたは複数を介して中心ノード106と間接的に通信し得る。中心ノード106は固定局またはサーバであり得る。グループノード104a〜104cは、携帯用バッテリー電源式デバイスおよび/または固定電子デバイスのいずれかであり得る。クライアントノード102は、たとえば、限られたメモリ量と限られたバッテリーエネルギーとを含んでいる、小型で安価な低電力ワイヤレスデバイスであり得る。クライアントノード102は、たとえば、Bluetooth(登録商標)、Bluetooth(登録商標) Low Energy、WiFi、ZigBee(登録商標)、近距離通信、および/または他のワイヤレス通信方法を通してグループノード104a〜104cと通信し得る。
【００４２】
図1に示すように、クライアントノード102は、グループノードA104aなどのグループノードと通信し得る。クライアントノード102は、データの暗号化および認証のために使用され得る共有鍵、たとえばセッション鍵を確立するためにワイヤレスリンク上で仮想ペアリングプロトコルを実行し得る。クライアントノード102がグループノード104a〜104cのうちの1つ、たとえば、グループノードA104aとの共有鍵を確立すると、クライアントノード102は中心ノード106と間接的に通信し得る。3つのグループノードが示されているが、これは例にすぎず、より多いまたはより少ないグループノードが通信システム100において利用され得る。
【００４３】
例示的な通信システム
図2は、グループノード104と中心ノード106との間のセッションごとの通信を必要とせずにクライアントノード102とグループノード104との間のセッション鍵が確立される通信システム100の動作の一例を示す流れ図である。最初に、中心ノード106とクライアントノード102とが、200において、グループノード104を中間物として使用して共有秘密鍵KMを確立し得る。たとえば、クライアントノード102が通信システム100に入ったとき、クライアントノード102と中心ノード106との間で共有秘密鍵KMが確立され得る。共有秘密鍵KMは、中間物として働くグループノード104が共有秘密鍵の値を知ることがないように、たとえば、楕円曲線ディフィーヘルマンプロトコルを使用して確立され得る。共有秘密鍵が確立されると、中心ノード106は共有秘密鍵KM202aを記憶し得、クライアントノード102は同じ鍵KM202bを記憶し得る。中心ノード106は、システム100中の各クライアントノードと一意の共有秘密鍵を確立する。好ましい実施形態では、共有秘密鍵KMがグループノード104に知られない。共有秘密鍵KMは、通信システム100中の各クライアントノードが中心ノード106との異なる秘密鍵を共有するように、クライアントノード固有であり得る。クライアントノード102はクライアントノード識別子Cnode_IDに関連付けられ得る。
【００４４】
通信システム100内の時間は、エポックA201およびエポックB203など、エポックに分割され得、エポックB203は時間的にエポックA201の後に生じる。各エポックの長さは固定であり、たとえば、数分から数日程度であり得る。ただし、これらは例にすぎない。全体的なシステムの要件に従って異なる長さのエポックが選択され得る。
【００４５】
各エポックの間、グループノード104は、中心ノード106と少なくとも1回通信し得る。たとえば、エポックAの開始時に(またはいくつかの実施形態ではエポックAの開始より前に)、グループノード104は、204において、各クライアントノード102のために中心ノード106から少なくとも1つのプロキシトークンを受信し得る。受信されたプロキシトークンは、特定のエポック、たとえばエポックAに関連する。したがって、通信システム中の各クライアントノードのために、中心ノード106は、エポックに関連するプロキシトークンをグループノード104に送り得、プロキシトークンはクライアント識別子Cnode_IDと制限付き鍵KRとを含む。グループノード104は、次いで、206において、受信された1つまたは複数のプロキシトークンを記憶し、各々を特定のエポックに関連付け得る。したがって、通信システム中の各グループノードおよびクライアントノードペアは一意の制限付き鍵KMペアを有し得る。エポックの途中に新しいクライアントノードが通信システムに入った場合、中心ノード106は、新しいクライアントノードのプロキシトークンを一部または全部のグループノード104a〜104cに送信し得る。
【００４６】
クライアントノード102およびグループノード104がセッション鍵を確立するために、クライアントノード102およびグループノード104は、最初に、208において、両方のノードによって使用されるべき許容可能なエポック識別値Epoch_IDを確立しなければならない。クライアントノード102およびグループノード104が同じEpoch_ID値を確立すると、グループノード104は、210において、エポック識別値Epoch_IDと、グループノード104が前に記憶したクライアント識別子Cnode_IDとに特に関連する制限付き鍵KRを取得する/取り出すことができる。したがって、エポックA201に対応するEpoch_ID値について、グループノード104は、Cnode_IDとエポックA201とに関連する制限付き鍵KRを取り出し得る。同様に、クライアントノード102は、エポック識別値Epoch_IDに基づいて制限付き鍵KRを取得しなければならない。たとえば、クライアントノード102は次式に基づいてKRを計算/算出し得る。
KR = CMAC(KM, Gnode_ID || Epoch_ID)
ただし、Gnode_IDはグループノード104の識別情報であり、Epoch_IDは確立されたエポック値であり、KMは、クライアントノード102と中心ノード106との間で共有される共有秘密鍵であり、CMACは暗号ベースのメッセージ認証コード(CMAC)アルゴリズムである(212)。ただし、制限付き鍵KRを生成することは、上記の式に示す特定の入力および引数に限定されない。たとえば、限定はしないが、ハッシュベースのメッセージ認証コード(HMAC)、暗号ブロック連鎖メッセージ認証コード(CBC-MAC)、ハッシング、または暗号化を含む、入力と引数とを組み合わせ、および/または好適な暗号特性を有する他の演算も使用され得る。KMはクライアントノード識別子Cnode_IDに固有であり得、したがって、制限付き鍵KRは、クライアントノードと、グループノード識別情報Gnode_IDと、エポック識別情報Epoch_IDとに固有であり得る。
【００４７】
次に、214において、クライアントノード102とグループノード104の両方によって与えられるランダム値(たとえばナンス)とともに制限付き鍵KRをマスター鍵として使用することによってセッション鍵を生成するために、2ラウンドセッション鍵確立プロトコルが使用され得る。言い換えれば、制限付き鍵KRを使用して、これらの2つのノード間の通信のために使用されるセッション鍵を導出する。鍵KRはクライアントノード102とグループノード104との間で直接送信されないが、鍵KRは両方のノードに知られるので、KRを使用してこれらの2つのノード間のセッション鍵を確立することができることに留意されたい。このようにして、216において、セキュアな通信セッションを行うためにクライアントノード102とグループノード104との間でセッション鍵が確立され得る。
【００４８】
エポックA201の満了の前に、中心ノード106は、次のエポック、すなわちエポックB203のためにプロキシトークンの交換セット218aを送信し得る。プロキシトークンの交換セットは、同様に、所与のエポック(エポックB)について所与のクライアントノードの制限付き鍵KRを識別するタプルを含んでいることになる。エポックBの開始の前にプロキシトークンを送信することによって、グループノード104は、エポックがエポックAからエポックBに遷移する時間中に中心ノード106との通信が紛失した場合に、トークンのセットにアクセスできる。代替実施形態では、エポックBに関連するプロキシトークンの交換セットは、218bにおいて、エポックBの開始時に送信され得る。さらに他の実施形態では、プロキシトークンの各セットが異なるエポックに関連し得る、プロキシトークンの複数のセットが、すべて同時にグループノード104に与えられ得る。
【００４９】
中心ノード106は、グループノード104とクライアントノード102とがセッション鍵確立を開始する前にグループノード104にプロキシトークンを送信し、グループノード104はエポックの終了まで前記鍵を保持するので、グループノード104とクライアントノード102との間のセッション鍵を確立することは、グループノード104と中心ノード106との間の通信がエポックの残り全体にわたって行われる必要なしに行われ得る。たとえば、グループノード104がステップ204においてエポックAのプロキシトークンを取得すると、グループノード104は、クライアントノード102とのセッション鍵を確立するためにエポックAの残りの間にもはや中心ノード106との通信リンクを必要としない(たとえば、通信が間欠的であり得る)。したがって、この期間中のグループノード104と中心ノード106との間の通信は間欠的および/または利用不可能であり得る。中心ノードとの間欠的通信リンクを有するグループノードは「半接続状態」グループノードと見なされ得る。
【００５０】
グループノードが、廃棄されたか、紛失したか、盗まれたか、故障したか、または障害を受けた場合、中心ノード106は、そのグループノードを、障害を受けていないグループノードのそれのリストから削除し得、現在エポックが満了した後に、影響を受けたグループノードは、有効なプロキシトークンを有しないことになり、したがって、クライアントノードとのセキュアな通信セッションを確立することができない。
【００５１】
グループノード104とクライアントノード102との間で様々なセッション鍵を生成するために、エポック中に制限付き鍵KRが何回も使用され得る。同じエポック中にグループノード104とのセッションごとに制限付き鍵KRを不必要に導出するのを回避するために、クライアントノード102は、たとえば、グループノード識別情報Gnode_IDと、エポック識別値と、関連する制限付き鍵とを含むタプルをもつキャッシュ(たとえば、メモリ、メモリ回路など)を維持し得る。その結果、クライアントノード102のバッテリー電力が節約され得る。
【００５２】
一実施形態では、キャッシュ中に新しい値またはエントリが挿入されるべきとき、キャッシュから廃棄されるべきエントリが選択され得る。キャッシュが単純なアレイである場合、アレイ中のターゲットロケーションにあるエントリを廃棄するという1つの選択肢しかない。しかしながら、セットアソシアティブキャッシュの場合、廃棄されるべきエントリはセット(たとえば、サブアレイ)からランダムに選択され得る。いくつかのデータ構造は最長時間未使用(least recently used)交換ポリシーを助長し得る。
【００５３】
例示的な通信システム-実時間から導出可能なエポック識別情報
図3は、グループノード104と中心ノード106との間のセッションごとの通信を必要とせずにクライアントノード102とグループノード104との間のセッション鍵が確立される通信システム100の動作の一例を示す流れ図である。中心ノード106およびクライアントノード102はそれぞれ、グループノード104に知られ得ない共有秘密鍵KM302a、302bへのアクセスを有し得る。共有秘密鍵KMは、通信システム100中の各クライアントノードが中心ノード106との異なる秘密鍵を共有するように、クライアントノード固有であり得る。クライアントノード102はクライアントノード識別子Cnode_IDに関連付けられ得る。
【００５４】
この例では、すべてのノードが、たとえば、互いの数秒以内に、大まかに同期された実時間304をそれによって取得することができる機構が提供され得る。たとえば、クライアントノード102が通信システム100に初めて入ったとき、グループノード104は、実時間情報を中心ノード106からクライアント102に送信し得る。その上、クライアントノード102の実時間は周期的に更新または調整され得る。たとえば、あらゆるエポック、またはエポックの何らかの倍数の開始時に、グループノードは、実時間情報を中心ノード106からクライアントノード102に送信し得る。したがって、グループノード104において保持される時間はGnode_timeとして識別され得、クライアントノード102において保持される時間はCnode_timeとして識別され得る。
【００５５】
通信システム100内の時間は、エポックA301およびエポックB303など、エポックに分割され得、エポックB303は時間的にエポックA301の後に生じる。各エポックの長さは固定であり、たとえば、数分から数日程度であり得る。ただし、これらは例にすぎない。全体的なシステムの要件に従って異なる長さのエポックが選択され得る。
【００５６】
各エポックの間、グループノード104は、中心ノード106と少なくとも1回通信し得る。たとえば、エポックA301の開始時に(またはいくつかの実施形態ではエポックA301の開始より前に)、グループノード104は、306において、各クライアントノード102のために中心ノード106から少なくとも1つのプロキシトークンを受信し得る。受信されたプロキシトークンは、特定のエポック、たとえばエポックA301に関連する。したがって、通信システム中の各クライアントノードのために、中心ノード106は、エポックに関連するプロキシトークンをグループノード104に送り得、プロキシトークンはクライアント識別子Cnode_IDと制限付き鍵KRとを含む。グループノード104は、次いで、308において、受信された1つまたは複数のプロキシトークンを記憶し、各々を特定のエポックに関連付け得る。エポックの途中に新しいクライアントノードが通信システムに入った場合、中心ノード106は、新しいクライアントノードのプロキシトークンをすべてのグループノード104a〜104cに送信し得る。
【００５７】
クライアントノード102とグループノード104との間のセッション鍵を確立することは、開始者(クライアントノード102またはグループノード104のいずれか)がセッション鍵確立プロトコルを開始したときに開始し得る。たとえば、グループノード104は、310において、グループノード104の識別情報Gnode_IDと、グループノード104の現在の実時間Gnode_timeとを含むメッセージをクライアントノード102に送信し得る。クライアントノード102は、次いで312において、グループノード104の実時間Gnode_timeが、クライアントノード102自体の実時間Cnode_timeに対して所定の時間差(たとえば、時間ウィンドウ、時間しきい値、最大時間しきい値差など)内に、たとえば数秒以内にあるかどうかを判断し得る。これらの2つの値の間の時間差が所定の時間差よりも小さい場合、クライアントノード102は、実時間、たとえば、ノード実時間に基づいてエポック識別値Epoch_IDを計算し得る。一実施形態では、314において、Epoch_IDを計算するためにクライアントノード102によって使用されるノード実時間は、グループノード104の実時間Gnode_timeであり得る。別の実施形態では、クライアントノード102は、Epoch_IDを計算するためにそれ自体の実時間Cnode_timeを使用し得る。使用される特定のノード実時間は、クライアントノード102とグループノード104の両方が同じEpoch_ID値を計算するようにその両方によって使用されなければならない。時間差が所定の時間差よりも大きい場合、グループノード104は障害を受けたと見なされ得、セッション鍵の確立は終了し得る。
【００５８】
クライアントノード102がGnode_timeに基づいてエポック識別値Epoch_IDを計算すると、クライアントノード102は、たとえば、次式を使用して制限付き鍵KRを導出し得る。
KR = CMAC(KM, Gnode_ID || Epoch_ID)
ただし、Gnode_IDはグループノード104の識別情報であり、Epoch_IDは確立されたエポック値であり、KMは、クライアントノード102と中心ノード106との間で共有される共有秘密鍵であり、CMACは暗号ベースのメッセージ認証コード(CMAC)アルゴリズムである(316)。上記で説明したように、他の入力、引数、および/またはコーディング方式が使用され得る。
【００５９】
グループノード104は、クライアントノード102によって使用される同じノード実時間に基づいてエポック識別値Epoch_IDを単独で判断し得る。たとえば、318において、クライアントノード102がEpoch_IDを計算するためにGnode_timeを使用した場合、グループノード104もそれの実時間Gnode_timeを使用することになる。Cnode_timeとGnode_timeとの間の差が所定の時間ウィンドウよりも小さかった場合(ステップ312)、クライアントノード102とグループノード104の両方がEpoch_IDを計算するために同じノード実時間を使用したので、グループノード104によって計算されるEpoch_IDは、クライアントノード102において計算されるEpoch_IDと同じでなければならない。次に、グループノードは、320において、エポック識別値Epoch_IDとクライアント識別子Cnode_IDとに特に関連する制限付き鍵KRを取得し/取り出し得る。したがって、エポックA301に対応するEpoch_ID値について、グループノード104は、Cnode_IDとエポックA301とに関連する制限付き鍵KRを取り出し得る。
【００６０】
次に、322において、クライアントノード102とグループノード104の両方によって与えられるランダム値(たとえばナンス)とともに制限付き鍵KRをマスター鍵として使用することによってセッション鍵を生成するために、2ラウンドセッション鍵確立プロトコルが使用され得る。言い換えれば、制限付き鍵KRを使用して、これらの2つのノード間の通信のために使用されるセッション鍵を導出する。鍵KRはクライアントノード102とグループノード104との間で直接送信されないが、鍵KRは両方のノードに知られるので、KRを使用してこれらの2つのノード間のセッション鍵を確立することができることに留意されたい。このようにして、324において、セキュアな通信セッションを行うためにクライアントノード102とグループノード104との間でセッション鍵が確立され得る。
【００６１】
一実施形態では、エポックAの満了の前に、326aにおいて、エポックB303に関連するプロキシトークンの交換セットが中心ノード106からグループノード104に送信され得る。プロキシトークンの交換セットは、同様に、所与のエポック(エポックB)について所与のクライアントノードの制限付き鍵KRを識別するタプルを含むことになる。エポックBの開始の前に通信システム中のグループノードにプロキシトークンを送信することによって、システム中のグループノードのすべてではないにしても大部分が、エポックBの開始までにプロキシトークンの新しいセットを記憶しているという保証がより大きくなる。その上、エポックが遷移する時間中に中心ノード106との通信が紛失した場合、グループノード104はトークンの新しいセットにアクセスでき得る。
【００６２】
たとえば、中心ノード106が新しいエポックの間にプロキシトークンを送信するように通常通りスケジュールされる直前に始まる通信停止が、グループノード104と中心ノード106との間で発生し得る。グループノードと中心ノードとの間の通信停止により、グループノードは新しいプロキシトークンを得ることを妨げられ得、したがって、クライアントとグループとの通信セッションは停止が終わるまで確立され得ない。これを克服するために、中心ノード106は、新しいまたは予期されるエポックの開始よりかなりに前に新しいエポックのプロキシトークンを送り得る。たとえば、エポックが1時間であり、通信停止がせいぜい5分間だけ持続することが予想される場合、中心ノードは、各エポック遷移より15分前にプロキシトークンを送り得る。その結果、グループノード104へのトークン配信がより良く保証され得る。別の実施形態では、エポックAの満了時に、326bにおいて、プロキシトークンの交換セットがグループノードに送信され得る。
【００６３】
グループノード104が現在エポックのためのそれのプロキシトークンを受信した後は、グループノード104とクライアントノード102との間のセッション鍵を確立することは、現在エポック中にグループノード104と中心ノード106との間で通信が行われる必要なしに行われ得る。したがって、グループノード104がプロキシトークンを取得した後は、グループノード104と中心ノード106との間の通信は、エポック全体にわたって間欠的および/または利用不可能であり得る。
【００６４】
グループノードが、廃棄されたか、紛失したか、盗まれたか、故障したか、または障害を受けた場合、中心ノード106は、そのグループノードを、障害を受けていないグループノードのそれのリストから削除し得、現在エポックが満了した後に、影響を受けたグループノードは、有効なプロキシトークンを有しないことになり、したがって、クライアントノードとのセキュアな通信セッションを確立することができない。したがって、中心ノードは、グループノードへのプロキシトークンの送信を終了することによって、グループノードがクライアントノード102との通信を確立するための許可を取り消し得る。取消しは次のエポックの開始時に有効になる。
【００６５】
グループノード104とクライアントノード102との間で様々なセッション鍵を生成するために、エポック中に制限付き鍵KRが何回も使用され得る。同じエポック中にグループノード104とのセッションごとに制限付き鍵KRを不必要に導出するのを回避するために、クライアントノード102は、たとえば、グループノード識別情報Gnode_IDと、エポック識別値と、関連する制限付き鍵とを含むタプルをもつキャッシュを維持し得る。その結果、クライアントノード102のバッテリー電力が節約され得る。
【００６６】
大まかなクロック同期のみが使用され得るので、グループノード104は、満了するエポック、すなわちエポックAに関連する制限付き鍵KR_Aを使用し、クライアントノード102は、次のエポック、すなわちエポックBのための制限付き鍵KR_Bへのアクセスをすでに有し得るという可能性があり得る。しかしながら、Gnode_timeとCnode_timeとの間の差が所定の量よりも小さいと仮定すると、上記で説明したように、クライアントノード102は、エポック識別値を計算するためにGnode_timeを使用し得る。これにより、クライアントノード102がエポックBへのエポック遷移の通知を受信している場合でも、両方が、同じEpoch_ID値および関連する制限付き鍵を計算することが保証される。たとえば、クライアントノード102は、「8000」のEpoch_ID値につながるGnode_timeを受信し、使用し得る。クロック同期が大まかであることにより、クライアントノード自体の実時間クロックは「8001」のエポック値を登録し得るが、クライアントノードは、エポック値「8000」に関連する制限付き鍵KR_8000を依然として計算し得る。
【００６７】
上記で説明したように、クライアントノード102は、310において、メッセージ中に含まれるグループノード104の実時間Gnode_timeを受信し、312において、グループノードの実時間がクライアントノード102の実時間Cnode_timeに近いかどうかを判断するために検査し、グループノードの実時間がクライアントノード102の実時間Cnode_timeに近い場合、グループノードの実時間Gnode_timeからエポック識別値Epoch_IDを計算し得る。たとえば、グループノード104が、Epoch_IDに対応する制限付き鍵を有しない場合、(障害を受け得る)グループノード104は、古い1つの実時間を送り、対応する古い制限付き鍵を使用することを試みるか、またはグループノード104は、それの現在エポック識別情報を送り、現在の制限付き鍵KRを推測することを試み得る。グループノード104が古い/時間遅れの実時間を送った場合、クライアントノードは、その実時間がクライアントノードの実時間Cnode_timeに十分近くないことを発見し、通信セッションを確立せよというグループノード104の要求を拒否し得る。その上、324において、セッション鍵確立プロトコルにおける鍵検証ステップは不合格になり得、クライアントノード102は、通信セッションを確立せよという要求を拒否し得る。
【００６８】
例示的な通信システム-ネゴシエーションによって導出可能なエポック識別情報
図4は、グループノード104と中心ノード106との間のセッションごとの通信を必要とせずにクライアントノード102とグループノード104との間のセッション鍵が確立される通信システム100の動作の一例を示す流れ図である。中心ノード106およびクライアントノード102はそれぞれ、グループノード104に知られない共有秘密鍵KM402a、402bへのアクセスを有し得る。共有秘密鍵KMは、通信システム100中の各クライアントノードが中心ノード106との異なる秘密鍵を共有するように、クライアントノード固有であり得る。クライアントノード102はクライアントノード識別子Cnode_IDに関連付けられ得る。
【００６９】
通信システム100内の時間は、エポックA401およびエポックB403など、エポックに分割され得、エポックB403は時間的にエポックA401の後に生じる。ただし、この例では、クライアントノード102は信頼できる時間クロックを有しないことがあり、エポックは、持続時間が必ずしも固定であるとは限らず、むしろ中心ノード106が新しいエポックを開始することを選択したときはいつでも生じる。
【００７０】
各エポックの間、グループノード104は、中心ノード106と少なくとも1回通信し得る。たとえば、エポックA401の開始時に(またはいくつかの実施形態ではエポックA401の開始より前に)、中心ノード106は、404において、エポックカウンタを増分し、各クライアントノード102のためにグループノード104に少なくとも1つのプロキシトークンを送信し得る。中心ノード106は、すべてのグループノードに届くか、あるいはいくつかのグループノードに届き得ないと中心ノード106が判断するまで、プロキシトークンをすべてのグループノードに送信し続け得る。しかしながら、中心ノード106は、少なくとも、中心ノード106とグループノードとの間で予想される最も長い通信停止の長さだけ試み得る。
【００７１】
送信されたプロキシトークンは、特定のエポック、たとえばエポックA401に関連する。したがって、通信システム中の各クライアントノードのために、中心ノード106は、エポックに関連するプロキシトークンをグループノード104に送り得、プロキシトークンはクライアント識別子Cnode_IDと制限付き鍵KRとを含む。グループノード104は、次いで406において、受信されエポックAに関連する1つまたは複数のプロキシトークンを予備にプロキシトークンの予備セットとして記憶し得る。中心ノード106は、次いで408において、グループノード104にコミットメッセージを送信し得る。コミットメッセージは、エポックAが開始し、グループノード104が、410において、予備に保持された新しいプロキシトークンを使用すべきであることをグループノード104に指示する。一実施形態では、プロキシトークンが、予備セットに保持されたプロキシトークンに切り替わると、グループノード104は、前のエポックに関連する古い/時間遅れのプロキシトークンを廃棄し得る。他の実施形態では、通信を確立しようとしている別のクライアントノードがエポック遷移の通知を受信しておらず、したがって、より古い制限付き鍵を使用する場合、古い/時間遅れのプロキシトークンは保持され得る。
【００７２】
クライアントノード102およびグループノード104は、次いで412において、エポック識別値情報を交換する一方または両方のノードによって現在エポックを識別する、共通のエポック識別値Epoch_IDをネゴシエートし得る。エポック識別値Epoch_IDは、グループノード104に知られる最大(すなわち、直近の)エポック識別値Epoch_IDGNと、クライアントノード102に知られる最大エポック識別値Epoch_IDCNとのうちの大きい値に等しくなるようにネゴシエートされなければならない。Epoch_IDCNの値は、すべてのグループノードとのすべての前の成功したセッション鍵確立動作に基づき得る。
【００７３】
一例では、Epoch_ID値のネゴシエーションは、グループノード104が、グループノードエポック値Epoch_IDGNとグループノード識別子Gnode_IDとを含むメッセージをクライアントノード102に送信することによって開始し得る。クライアントノード102は、次いで、受信したEpoch_IDGN値をクライアントノード102自体のクライアントノードエポック値Epoch_IDCNと比較し、これらの2つのうちの大きいほうをEpoch_IDとして選択し得る。クライアントノード102は、次いで、Epoch_IDをグループノード104に送信する。いくつかの実施形態では、クライアントノード102とグループノード104との間でセッション鍵が確立されると、クライアントノード102は、それのキャッシュをフラッシュし、Epoch_IDがEpoch_IDCNよりも大きい場合、キャッシュ値を、エポック識別値Epoch_IDとグループノード識別子Gnode_IDと制限付き鍵KRとからなるタプルと交換し得る。
【００７４】
別の例では、クライアントノード102は、最初にグループノード104にEpoch_IDCNを送信し得る。グループノード104は、次いで、Epoch_IDCNをグループノード104自体のエポック値Epoch_IDGNと比較し、これらの2つのうちの大きいほうを選択し得る。値Epoch_IDGN_Selectを有するグループノード104によって選択されたエポック値は、次いで、クライアントノード102に返信され得る。クライアントノード102は、次いで、Epoch_IDGN_Selectが、クライアントノード102がグループノード104に前に送ったエポック値Epoch_IDCNよりも大きいかまたはそれに等しいかどうかを判断し得る。Epoch_IDGN_SelectがEpoch_IDCNよりも大きいかまたはそれに等しい場合、クライアントノード102はEpoch_IDをEpoch_IDGN_Selectに等しく設定する。そうではなく、Epoch_IDGN_SelectがEpoch_IDGN_Selectよりも小さい場合、クライアントノード102は、グループノード104が障害を受けたと判断し、セッション鍵確立を中止し得る。いくつかの実施形態では、クライアントノード102とグループノード104との間でセッション鍵が確立されると、クライアントノード102は、それのキャッシュをフラッシュし、Epoch_IDがEpoch_IDCNよりも大きい場合、キャッシュ値を、エポック識別値Epoch_IDとグループノード識別子Gnode_IDと制限付き鍵KRとからなるタプルと交換し得る。
【００７５】
Epoch_IDがどのようにネゴシエートされるかにかかわらず、目的は、クライアントノード102とグループノード104とにおいて同じエポック識別値Epoch_IDを確立することである。クライアントノード102およびグループノード104がEpoch_IDを確立すると、グループノード104は、414において、Epoch_IDと、グループノード104が記憶しているクライアント識別子Cnode_IDとに特に関連する制限付き鍵KRを取得し/取り出し得る。グループノード104は、どのセットがEpoch_ID値を含むかに応じて、グループノード104が406において前に記憶したプロキシトークンの予備セット、またはグループノード104がすでに記憶しているプロキシトークンのアクティブセットのいずれかから制限付き鍵KRを取り出し得る。クライアントノード102は、たとえば、上記で説明したように、416において、式KR = CMAC (Gnode_ID || Epoch_ID, KM)を使用して制限付き鍵KRを導出し得る。
【００７６】
次に、418において、クライアントノード102とグループノード104との間で交換されるランダム値(たとえばナンス)とともに制限付き鍵KRをマスター鍵として使用することによってセッション鍵を生成するために、2ラウンドセッション鍵確立プロトコルが使用され得る。言い換えれば、制限付き鍵KRを使用して、これらの2つのノード間の通信のために使用されるセッション鍵を導出する。鍵KRはクライアントノード102とグループノード104との間で直接送信されないが、鍵KRは両方のノードに知られるので、KRを使用してこれらの2つのノード間のセッション鍵を確立することができることに留意されたい。このようにして、420において、セキュアな通信セッションを行うためにクライアントノード102とグループノード104との間でセッション鍵が確立され得る。
【００７７】
中心ノードがエポックA401を終了することを決定したとき、エポックB403が開始し得る。一実施形態では、422aにおいて、エポックBの開始時に交換プロキシトークンの別のセットがグループノード104に送信される。別の実施形態では、422aにおいて、エポックAの終了より前に交換プロキシトークンが送信され得る。
【００７８】
グループノード104が現在エポックに関連するプロキシトークンをすでに受信しているので、グループノード104とクライアントノード102との間のセッション鍵を確立することは、そのエポック中にグループノード104と中心ノード106との間の通信を必要とせずに行われ得る。したがって、グループノード104がそのエポックのためのプロキシトークンを受信した後は、グループノード104と中心ノード106との間の通信は、エポック全体にわたって間欠的および/または利用不可能であり得る。
【００７９】
グループノードが、廃棄されたか、紛失したか、盗まれたか、故障したか、または障害を受けた場合、中心ノード106は、そのグループノードを、障害を受けていないグループノードのそれのリストから削除し得、現在エポックが満了した後に、影響を受けたグループノードは、有効なプロキシトークンを有しないことになり、したがって、クライアントノードとのセキュアな通信セッションを確立することができない。したがって、中心ノード106は、グループノードへのプロキシトークンの送信を終了することによって、グループノードがクライアントノード102との通信を確立するための許可を取り消し得る。取消しは次のエポックの開始時に有効になる。
【００８０】
Epoch_IDがネゴシエーション412を介して確立される実施形態では、エポック識別値はクライアントノード102とグループノード104との間で直接送信され得る。これは、図3のステップ310においてGnode_timeがグループノード104からクライアントノード102に送信されることなど、実時間値が交換される本明細書の他の実施形態とは異なり得る。その上、中心ノードによって障害を受けたと判断された、障害を受けたグループノードは、クライアントノードがより大きい(時間的により最近の)エポック識別値を知った後、クライアントノードによって拒否され得る。クライアントノードは、別の障害を受けていないグループノードとの通信からより大きいエポック値を取得し得、通信は、中心ノードが、障害を受けたグループノードにプロキシトークンを送らなかったエポックの開始の後に行われる。
【００８１】
その上、いくつかの実施形態では、クライアントノード102およびグループノード104は、実質的に同時にステップ412および418の選択送信を実行し得る。たとえば、418において、エポック識別値Epoch_IDCN、Epoch_IDGN、および/またはEpoch_IDGN_Selectが、セッション鍵確立プロトコルの1つまたは複数のメッセージ上にピギーバックされ得る。
【００８２】
いくつかの実施形態では、412においてネゴシエートされるエポック識別値Epoch_IDが、予備に保持されているプロキシトークンに対応するとグループノード104が判断した場合、グループノード104は、グループノード104が中心ノード106からコミットメッセージ408を受信していない場合でも、予備に保持されたプロキシトークンから制限付き鍵KRを取り出し得る。これは、少なくともいくつかの障害を受けていないグループノードがコミットメッセージを受信した場合のみ行われ得、これは、中心ノード106がコミット段階を開始したが、当該のグループノード104がコミットメッセージ408をまだ受信していないことを暗示する。このアクションは、システム100において中心ノード106によってグループノード104a〜104cに送られるエポック遷移通知の非同期的性質により、セッション鍵確立が失敗することを防止する。
【００８３】
例示的なクライアントノード
図5に、一例によるクライアントノード102の機能ブロック図を示す。クライアントノード102は、たとえば、通信バス512を介して、互いにすべて通信可能に結合され得る、処理回路(たとえば、プロセッサ、処理モジュール、特定用途向け集積回路(ASIC)など)502、メモリ回路(たとえば、メモリ、メモリデバイス、メモリモジュールなど)504、キャッシュ506、および/または通信インターフェース508を含み得る。
【００８４】
処理回路502は、本明細書で説明し図において示すクライアントノードにおいて動作可能なステップのいずれかなど、プロセッサ可読プロセスステップの実行を含むデータ処理を実行し得る。たとえば、処理回路502は、図6に示す少なくともステップ602、604、および606を実行するように適応された専用プロセッサ(たとえば、ASIC)であり得る。メモリ回路504は、グループノードの識別情報Gnode_IDと、制限付き鍵KRと、Epoch_IDなど、関連するエポック識別情報とを含んでいるタプルを記憶し得るキャッシュ506を含み得る。キャッシュ506は、データが急速に取り出されることを可能にする仮想キャッシュまたは論理キャッシュであり得る。通信インターフェース508は、通信システム100においてクライアントノード102を1つまたは複数のグループノードに(たとえば、ワイヤレス接続510を介して)通信可能に結合するために、限定はしないが、Bluetooth(登録商標)、Bluetooth(登録商標) Low Energy、Wifi、および/またはZigBee(登録商標)プロトコルなど、任意の低電力通信プロトコルを利用し得る。
【００８５】
セッション鍵を確立するクライアントノードの例示的な動作
図6に、クライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードにおいて動作可能な例示的な方法を示すフローチャート600を示す。最初に、クライアントノードが、602において、現在エポックに関連するエポック識別値を取得し、エポック識別値を取得することは、ノード実時間に基づいてエポック識別値を計算すること、またはエポック識別値をグループノードとネゴシエートすることのうちの1つを含む。次に、クライアントノードは、604において、共有秘密鍵と、エポック識別値と、グループノードに関連するグループノード識別情報とを使用して制限付き鍵を計算し、共有秘密鍵はクライアントノードと中心ノードとに知られる。次いで、クライアントノードは、606において、セッション鍵確立プロトコルにおいて制限付き鍵をマスター鍵として使用してセッション鍵を導出するためにグループノードとのセッション鍵確立プロトコルを実行する。また、セッション鍵を検証するために、クライアントノード102とグループノード104とによって鍵検証プロセスが使用され得る。
【００８６】
一実施形態では、クライアントノードとグループノードと中心ノードとの間で時間が大まかに同期され得る。その上、現在エポックに関連するエポック識別値を取得するステップは、グループノードからグループノード実時間とグループノード識別情報とを受信するステップと、グループノード実時間をクライアントノード実時間と比較するステップと、グループノード実時間がクライアントノード実時間の最大時間しきい値差内にあると判断するステップと、ノード実時間からエポック識別値を計算するステップとを含み得る。
【００８７】
別の実施形態では、現在エポックに関連するエポック識別値を取得するステップは、グループノードからグループノードエポック値とグループノード識別情報とを受信するステップと、グループノードエポック値をクライアントノードエポック値と比較するステップであって、クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、比較するステップと、エポック識別値をグループノードエポック値とクライアントノードエポック値とのうちの大きいほうとして計算するステップと、計算されたエポック識別値をグループノードに送信するステップとを含み得る。
【００８８】
さらに別の実施形態では、現在エポックに関連するエポック識別値を取得するステップは、グループノードにクライアントノードエポック値を送信するステップであって、クライアントノードエポック値が、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しい、送信するステップと、グループノードからエポック識別値とグループノード識別情報とを受信するステップと、受信されたエポック識別値が、送信されたクライアントノードエポック値に等しいかまたはそれよりも大きいことを検証するステップとを含み得る。
【００８９】
エポックを定義するために実時間を使用するクライアントノードの例示的な動作
(図7Aと図7Bとを含む)図7に、エポックを定義するために実時間を使用してクライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードの動作の一例を示す。最初に、クライアントノードが、702において、グループノードからメッセージを受信し、メッセージはグループノードの実時間Gnode_timeとグループノード識別情報Gnode_IDとを含む。次に、クライアントノードは、704において、グループノードの実時間がクライアントノードの実時間Cnode_timeに近いかどうかを判断する。これは、グループノードの実時間をクライアントノードの実時間と比較することによって判断され得、グループノードの実時間がクライアントノードの実時間の所定の時間しきい値内にある場合、制限付き鍵KRが確立される。グループノードの実時間がしきい値内にない場合、706においてセッションを中止する。
【００９０】
グループノードの実時間が所定の幅のウィンドウ内に(すなわち、所定の時間しきい値内に)ある場合、クライアントノードは、708において、ノード実時間、たとえば、グループノードの実時間Gnode_timeからエポック識別値Epoch_IDを計算する。次に、710において、キャッシュ中にグループノードのエントリがあるかどうかと、キャッシュエポック識別値が、計算されたエポック識別値Epoch_IDに等しいかどうかとが判断される。キャッシュ中にグループノードのエントリがないか、またはキャッシュエポック識別値が、計算されたエポック識別値Epoch_IDに等しくない場合、クライアントノードは、712において、共有秘密KMとエポック識別値Epoch_IDとグループノード識別情報Gnode_IDとを使用して制限付き鍵KRを計算する。共有秘密鍵は、クライアントノードがシステムに初めて入ったときに仮想ペアリングプロトコルによって確立されていることがある。
【００９１】
次に、クライアントノードは、714において、セッション鍵を導出するためにグループノードとのセッション鍵確立プロトコルを実行し、セッション鍵確立プロトコルにおいて制限付き鍵KRがマスター鍵として使用される。また、セッション鍵を検証するために鍵検証プロトコルが実装され得る。代替的に、710において、キャッシュ中にグループノードのエントリがあり、キャッシュエポック識別値が、計算されたエポック識別値Epoch_IDに等しい場合、クライアントノードは、714において、制限付き鍵を計算せず、セッション鍵を導出するために直ちにグループノードとのセッション鍵確立プロトコルを実行し、セッション確立プロトコルにおいて制限付き鍵がマスター鍵として使用される。次に、716においてセッション鍵が正常に導出された場合、718において、キャッシュエポック識別値が、計算されたエポック識別値Epoch_IDに等しいかどうかが判断される。セッション鍵が正常に導出されるかまたは検証されなかった場合、720においてセッションを中止する。
【００９２】
キャッシュエポック識別値が、計算されたエポック識別値Epoch_IDに等しくない場合、722において、キャッシュをフラッシュし、キャッシュエポック識別情報を計算されたエポック識別値Epoch_IDに設定する。クライアントノードは、次いで724において、同じおよび/または現在エポック中にグループノードとの作成されたセッションごとの制限付き鍵の導出を回避するためにキャッシュ中にタプルを挿入する。
【００９３】
そうではなく、キャッシュエポック識別値が、計算されたエポック識別値に等しい場合、キャッシュをフラッシュせず、クライアントノードは、次いで724において、同じおよび/または現在エポック中にグループノードとの作成されたセッションごとの制限付き鍵の導出を回避するためにキャッシュ中にタプルを挿入する。
【００９４】
エポックを定義するために実時間を使用しないクライアントノードの例示的な動作、クライアントノード開始型
(図8Aと図8Bとを含む)図8に、クライアントノードがセッションを開始する、エポックを定義するために実時間を使用せずにクライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードの動作の一例を示す。最初に、クライアントノードが、802において、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しいクライアントノードエポック値Epoch_IDCNを、クライアントノードが通信することになる指定のグループノードに送る/送信する。クライアントノードは、次いで804において、グループノードからエポック値Epoch_IDGN_Selectを受信する。受信したエポック値Epoch_IDGN_Selectは、(エポック時間において直近の)グループノードに送信されたクライアントノードエポック値と、グループノードにおける最大エポック値Epoch_IDGNとのうちの大きいほうでなければならない。806において、受信したエポック識別情報Epoch_IDGN_Selectが、グループノードに送信されたクライアントノードエポック識別情報よりも小さい場合、クライアントノードは、808においてセッション確立を中止する。そうでない場合、810において、(本明細書では「有効エポック識別情報」とも呼ぶ)エポック識別値Epoch_IDは、送信されたクライアントノードエポック値と、受信されたエポック識別情報Epoch_IDGN_Selectとのうちの大きいほうに等しい。
【００９５】
次に、812において、エポック識別値Epoch_IDがキャッシュのエポック識別情報に等しいかどうかと、キャッシュ中にグループノードのエントリがあるかどうかとが判断される。エポック識別値Epoch_IDがキャッシュのエポック識別情報に等しいか、またはキャッシュ中にグループノードのエントリがある場合、クライアントノードは、816において、セッション鍵を導出するためにグループノードとのセッション鍵確立プロトコルを実行し、クライアントノードは制限付き鍵KRをマスター鍵として使用する。代替的に、エポック識別値Epoch_IDがキャッシュのエポック識別情報に等しくなく、キャッシュ中にグループノードのエントリがない場合、クライアントノードは、最初に、814において、エポック識別値Epoch_IDとグループノード識別情報Gnode_IDと共有秘密鍵KMとを使用して制限付き鍵KRを計算する。共有秘密鍵は、クライアントノードと中心ノードとの間の前の通信を介して確立されていることがある。次に、クライアントノードは、816において、セッション鍵を導出するためにグループノードとのセッション鍵確立プロトコルを実行し、クライアントノードは制限付き鍵KRをマスター鍵として使用し、鍵検証プロトコルを使用してセッション鍵を検証する。セッション鍵確立プロトコルが成功しなかった場合、822においてセッションを中止する。818において制限付き鍵が正常に導出された場合、820において、キャッシュエポック識別情報がエポック識別値Epoch_IDに等しいかどうかが判断される。
【００９６】
キャッシュエポック識別情報がエポック識別値Epoch_IDに等しくない場合、824において、キャッシュをフラッシュし、キャッシュエポック識別情報をエポック識別値Epoch_IDに設定する。クライアントノードは、次いで826において、同じエポック中にグループノードとの作成されたセッションごとの制限付き鍵の導出を回避するためにキャッシュ中にタプルを挿入する。
【００９７】
代替的に、キャッシュエポック識別情報がエポック識別値Epoch_IDに等しい場合、キャッシュをフラッシュせず、クライアントノードは、次いで826において、同じエポック中にグループノードとの作成されたセッションごとの制限付き鍵の導出を回避するためにキャッシュ中にタプルを挿入する。
【００９８】
エポックを定義するために実時間を使用しないクライアントノードの例示的な動作、グループノード開始型
(図9Aと図9Bとを含む)図9に、エポックを定義するために実時間が使用されず、グループノードがセッションを開始する、クライアントノードとグループノードとの間のセッション鍵を確立するためのクライアントノードの動作の一例を示す。最初に、クライアントノードが、902において、グループノードからグループノードエポック値Epoch_IDGNを受信し、Epoch_IDGNはグループノードにおける最大エポック値に関連する。次いで、エポック識別値Epoch_IDが計算され得る。エポック識別値Epoch_IDは、904において、受信したグループノードエポック値と、クライアントノードエポック値Epoch_IDCNとのうちの(エポック時間において直近の)より大きい値に等しくなる。クライアントノードエポック値は、任意のグループノードとの最新の正常に確立されたセッションにおいて使用される最新の既知のエポック識別値に等しくなり得る。
【００９９】
次いで906において、グループノードにエポック識別値Epoch_IDを送信する。次に、908において、キャッシュ中にグループノードのエントリがあるかどうかと、エポック識別値Epoch_IDがキャッシュのエポック識別情報に等しいかどうかとが判断され得る。キャッシュ中にグループノードのエントリがあり、エポック識別値Epoch_IDがキャッシュのエポック識別情報に等しい場合、クライアントノードは、912において、セッション鍵を確立するためにグループノードとのセッション鍵確立プロトコルを実行し、クライアントノードは制限付き鍵KRをマスター鍵として使用する。代替的に、エポック識別値Epoch_IDがキャッシュのエポック識別情報に等しくないか、またはキャッシュ中にグループノードのエントリがない場合、クライアントノードは、最初に、910において、エポック識別値Epoch_IDとグループノード識別情報Gnode_IDと共有秘密鍵KMとを使用して制限付き鍵KRを計算する。共有秘密鍵は、クライアントノードと中心ノードとの間の前の通信を介して確立されていることがある。次に、クライアントノードは、912において、セッション鍵を生成するためにグループノードとのセッション鍵確立プロトコルを実行し、クライアントノードは制限付き鍵KRをマスター鍵として使用する。
【０１００】
914においてセッション鍵が正常に導出された場合、916において、キャッシュエポック識別情報がエポック識別値Epoch_IDに等しいかどうかが判断される。セッション鍵確立プロトコルが失敗しおよび/またはセッション鍵が検証されなかった場合、918においてセッションを中止する。
【０１０１】
キャッシュエポック識別情報がエポック識別値Epoch_IDに等しくない場合、920において、キャッシュをフラッシュし、キャッシュエポック識別情報をエポック識別値Epoch_IDに設定する。クライアントノードは、次いで922において、同じエポック中にグループノードとの作成されたセッションごとの制限付き鍵の導出を回避するためにキャッシュ中にタプルを挿入する。
【０１０２】
代替的に、キャッシュエポック識別情報がエポック識別値Epoch_IDに等しい場合、キャッシュをフラッシュせず、クライアントノードは、次いで922において、同じエポック中にグループノードとの作成されたセッションごとの制限付き鍵の導出を回避するためにキャッシュ中にタプルを挿入する。
【０１０３】
例示的なグループノード
図10に、一例によるグループノード104の機能ブロック図を示す。グループノード104は、クライアントノード102と中心ノード106との間で間接通信を行い得る。グループノード104は、たとえば、通信バス1012を介して、互いにすべて通信可能に結合され得る、処理回路(たとえば、プロセッサ、処理モジュール、ASICなど)1002、メモリ回路(たとえば、メモリ、メモリデバイス、メモリモジュールなど)1004、キャッシュ1006、第1の通信インターフェース1008、および/または第2の通信インターフェース1010を含み得る。
【０１０４】
処理回路1002は、本明細書で説明しおよび/または図に示すグループノードにおいて動作可能なステップのいずれかなど、プロセッサ可読プロセスステップの実行を含むデータ処理を実行し得る。たとえば、処理回路1002は、図11に示す少なくともステップ1102〜1108を実行するように適応された専用プロセッサ(たとえば、ASIC)であり得る。メモリ回路1004は、プロキシトークン(アクティブまたは予備セット)、セッション鍵、クライアントノード識別子、制限付き鍵KR、および、Epoch_IDなどの関連するエポック識別情報、ならびに他のデータを記憶し得るキャッシュ1006を含み得る。第1の通信インターフェース1008は、グループノード104を中心ノード106に通信可能に結合するように適応される。第1の通信インターフェースはワイヤレス接続またはワイヤライン接続のいずれかであり得る。第2の通信インターフェース1010は、通信システム100においてグループノード104をクライアントノード102に(たとえば、ワイヤレス接続1014を介して)通信可能に結合するために、限定はしないが、Bluetooth(登録商標)、Bluetooth(登録商標) Low Energy、Wifi、および/またはZigBee(登録商標)プロトコルなど、任意の低電力通信プロトコルを利用し得る。
【０１０５】
セッション鍵を確立するグループノードの例示的な動作
図11に、グループノードとクライアントノードとの間のセッション鍵を確立するためのグループノードにおいて動作可能な例示的な方法を示すフローチャート1100を示す。最初に、グループノードが、1102において、中心ノードからエポックに関連するプロキシトークンの第1のセットを受信し、プロキシトークンの第1のセットが、クライアントノードに関連するプロキシトークンを含み、プロキシトークンがクライアントノード識別情報と制限付き鍵とを含む。次に、グループノードは、1104において、プロキシトークンの第1のセットをプロキシトークンの予備セットとして記憶する。次いで、グループノードは、1106において、エポックの開始時にプロキシトークンのアクティブセットをプロキシトークンの予備セットと交換し、プロキシトークンの予備セットがプロキシトークンの次のアクティブセットになる。次に、グループノードは、1108において、セッション鍵確立プロトコルにおいて制限付き鍵をマスター鍵として使用してセッション鍵を導出するためにクライアントノードとのセッション鍵確立プロトコルを実行する。
【０１０６】
一実施形態では、グループノードはまた、エポックに関連するエポック識別値を取得し、エポック識別値に基づいて制限付き鍵を取り出し得る。一例では、エポックに関連するエポック識別値を取得することは、クライアントノード実時間を受信することと、クライアントノード実時間をグループノード実時間と比較することと、グループノード実時間がクライアントノード実時間の最大時間しきい値差内にあると判断することと、ノード実時間に基づいてエポック識別値を計算することとを含み得る。
【０１０７】
一例では、エポック識別値に基づいて制限付き鍵を取り出すことは、プロキシトークンの予備セットがエポック識別値に対応するのかプロキシトークンのアクティブセットがエポック識別値に対応するのかを判断することと、プロキシトークンの予備セットがエポック識別値に関連する場合、プロキシトークンの予備セットから制限付き鍵を取得することと、プロキシトークンの予備セットがエポック識別値に関連する場合、プロキシトークンのセットから制限付き鍵を取得することとをさらに含み得る。
【０１０８】
エポックを定義するために実時間を使用するグループノードの例示的な動作
図12に、エポックを定義するために実時間を使用する、中心ノードに対するグループノードの動作の一例を示す。グループノードが、1202において、中心ノードからプロキシトークンのセットを(すなわち、通信システムにおいて中心ノードから各クライアントノードのためのプロキシトークンを)受信し、セット中の各プロキシトークンはクライアントノード識別情報と制限付き鍵とを有する。グループノードは、次いで1204において、プロキシトークンのセットをプロキシトークンの予備セットとして記憶する。グループノードは、次いで1206において、次のエポックの開始まで待つ。次に、グループノードは、1208において、プロキシトークンのアクティブセットを廃棄し、それらをプロキシトークンの予備セットと交換して、プロキシトークンの予備セットがプロキシトークンの次のアクティブセットになる。次いで1210において、セッション鍵を導出するためにクライアントノードとの標準セッション鍵確立プロトコルを実行し、グループノードは制限付き鍵をマスター鍵として使用する。
【０１０９】
(図13Aと図13Bとを含む)図13に、エポックを定義するために実時間を使用してグループノードとクライアントノードとの間の通信セッションを確立するためのグループノードの動作の一例を示す。1302においてグループノードによってまたは1304においてクライアントノードによってセッションが開始される。開始されると、グループノードは、1308において、クライアントノードからクライアントノードの実時間を受信する。グループノードがセッションを開始した場合、グループノードは、最初に、1306において、クライアントノードに要求を送る。
【０１１０】
次に、グループノードは、1310において、グループノードの実時間がクライアントノードの実時間に近いかどうかを判断する。これは、グループノードの実時間をクライアントノードの実時間と比較することによって判断され得、グループノードの実時間がクライアントノードの実時間の所定の最大時間しきい値内にある場合、制限付き鍵が確立される。グループノードの実時間がしきい値内にない場合、1312においてセッションを中止する。グループノードの実時間が所定の最大時間しきい値内にある場合、グループノードは、1314において、ノード実時間、たとえば、グループノードの実時間またはクライアントノードの実時間Cnode_timeのいずれかからエポック識別値を計算する。グループノードがどちらのノード実時間を使用しても、クライアントノードは、同じEpoch_IDを計算するために同じノード実時間を使用しなければならない。
【０１１１】
次に、1316において、プロキシトークンのどちらのセットが、計算されたエポック識別値に対応するのかが判断される。トークンの予備セットとトークンのアクティブセットとのいずれも計算されたエポックに対応しない場合、1318においてセッションを中止する。トークンの予備セットが、計算されたエポック識別値に対応する場合、1320において、予備セットからクライアントノードの制限付き鍵を取得する。トークンのアクティブセットが、計算されたエポック識別値に対応する場合、1322において、アクティブセットからクライアントノードの制限付き鍵を取得する。
【０１１２】
制限付き鍵KRが取得された後に、グループノードは、1324において、セッション鍵を導出するためにクライアントノードとのセッション鍵確立プロトコルを実行し、セッション鍵確立プロトコルにおいて制限付き鍵がマスター鍵として使用される。また、セッション鍵を検証するために鍵検証プロトコルが実行され得る。次に1326において、セッション鍵が正常に確立されたかどうかに関する判断が行われる。セッション鍵が正常に確立および/または検証されなかった場合、1328においてセッションを中止する。
【０１１３】
グループノードとクライアントノードとの間のセッション鍵を確立するためのグループノードの動作の別の例では、グループノードは、エポックに関連するエポック識別値を取得し得る。次に、グループノードは、エポック識別値に基づいて制限付き鍵を取り出し得る。一実施形態では、エポックに関連するエポック識別値を取得することは、クライアントノード実時間を受信することと、クライアントノード実時間をグループノード実時間と比較することと、グループノード実時間がクライアントノード実時間の最大時間しきい値差内にあると判断することと、グループノード実時間に基づいてエポック識別値を計算することとを含む。別の実施形態では、エポック識別値に基づいて制限付き鍵を取り出すことは、プロキシトークンの予備セットがエポック識別値に対応するのかプロキシトークンのアクティブセットがエポック識別値に対応するのかを判断することと、プロキシトークンの予備セットがエポック識別値に関連する場合、プロキシトークンの予備セットから制限付き鍵を取得することと、プロキシトークンの予備セットがエポック識別値に関連する場合、プロキシトークンのセットから制限付き鍵を取得することとをさらに含む。
【０１１４】
エポックを定義するために実時間を使用しないグループノードの例示的な動作
図14に、エポックを定義するために実時間を使用しない、中心ノードに対するグループノードの動作の一例を示す。グループノードが、1402において、中心ノードからプロキシトークンのセットを(すなわち、通信システムにおいて中心ノードから各クライアントノードのためのプロキシトークンを)受信し、各プロキシトークンはクライアントノード識別情報と制限付き鍵とを有する。グループノードは、次いで1404において、プロキシトークンのセットをプロキシトークンの予備セットとして記憶する。1406においてコミットメッセージを受信すると、グループノードは、1408において、プロキシトークンのアクティブセットを廃棄し、それらをプロキシトークンの予備セットと交換して、プロキシトークンの予備セットがプロキシトークンの次のアクティブセットになる。次いで1410において、セッション鍵を導出するためにクライアントノードとの標準セッション鍵確立プロトコルを実行し、グループノードは制限付き鍵をマスター鍵として使用する。
【０１１５】
(図15Aと図15Aとを含む)図15に、エポックを定義するために実時間を使用せずにグループノードとクライアントノードとの間の通信セッションを確立するためのグループノードの動作の一例を示す。1502においてグループノードによってまたは1504においてクライアントノードによってセッションが開始される。1502においてセッションがグループノードによって開始された場合、グループノードは、1506において、クライアントノードにローカルエポック識別情報(たとえば、Epoch_IDGN)を送り、1508において、クライアントノードからエポック識別情報(たとえば、Epoch_IDCN)を受信する。エポック識別値Epoch_IDは、1510において、ローカル(すなわちグループノードの)エポック識別情報と、受信したエポック識別情報とのうちの大きいほうとして計算される。
【０１１６】
1504においてセッションがクライアントノードによって開始された場合、グループノードは、1512において、クライアントノードからエポック識別情報(たとえば、Epoch_IDCN)を受信する。エポック識別値Epoch_IDは、1514において、ローカル(すなわちグループノードの)エポック識別情報と、受信したエポック識別情報とのうちの大きいほうとして計算される。次いで1516において、クライアントノードにエポック識別値Epoch_IDを送る。
【０１１７】
次に、1518において、プロキシトークンのどちらのセットが、計算されたエポック識別値Epoch_IDに対応するのかが判断される。トークンの予備セットとトークンのアクティブセットとのいずれも計算されたエポック識別値Epoch_IDに対応しない場合、1520においてセッションを中止する。トークンの予備セットが、計算されたエポック識別値Epoch_IDに対応する場合、1522において、予備セットからクライアントノードの制限付き鍵を取得する。トークンのアクティブセットが、計算されたエポック識別値Epoch_IDに対応する場合、1524において、アクティブセットからクライアントノードの制限付き鍵を取得する。
【０１１８】
制限付き鍵KRが取得された後に、グループノードは、1526において、セッション鍵を導出するためにクライアントノードとのセッション鍵確立プロトコルを実行し、セッション鍵確立プロトコルにおいて制限付き鍵がマスター鍵として使用される。また、セッション鍵を検証するために鍵検証プロトコルが実行され得る。次に1528において、セッション鍵が正常に確立されたかどうかに関する判断が行われる。セッション鍵が正常に確立および/または検証されなかった場合、1530においてセッションを中止する。
【０１１９】
次いで、クライアントノードとの標準鍵確立プロトコルを実行し、鍵確立プロトコルにおいて制限付き鍵がマスター鍵として使用される。セッション鍵検証が行われ得、クライアントノードとの通信セッションが確立され得る。
【０１２０】
一実施形態では、クライアントノードがセッション確立を開始した場合、グループノードがクライアントノードからエポック識別値を受信し得る。次に、受信したエポック識別情報が最新のコミットされたエポック識別情報よりも小さいかまたはそれに等しい場合、最新のコミットされたエポック識別情報がクライアントノードに送信され得、あるいは、受信したエポック識別情報が、コミットされていないエポック識別情報に等しく、コミットされていないエポック識別情報が、コミットされていないエポックを識別する場合、コミットされていないエポック識別情報がクライアントノードに送信され得る。次に、受信したエポック識別情報が、最新のコミットされたエポック識別情報よりも大きいかどうかと、受信したエポック識別情報が、コミットされていないエポック識別情報に等しくないかどうかとが判断され得る。受信したエポック識別情報が、最新のコミットされたエポック識別情報よりも大きく、受信したエポック識別情報が、コミットされていないエポック識別情報に等しくない場合、セッション確立が中止され得る。
【０１２１】
しかしながら、受信したエポック識別情報が、最新のコミットされたエポック識別情報よりも大きくなく、受信したエポック識別情報が、コミットされていないエポック識別情報に等しい場合、クライアントノードとの標準鍵確立プロトコルが実行され得る。一実施形態では、鍵確立プロトコルは鍵検証ステップを含んでいることがある。グループノードは、次いで、クライアントノードとの通信セッションを進め得る。
【０１２２】
例示的な中心ノード
図16に、一例による中心ノード106の機能ブロック図を示す。中心ノード106は、グループノード104a〜104cを介してクライアントノード102と間接的に通信し得る。中心ノード106は、たとえば、通信バス1608を介して、互いにすべて通信可能に結合され得る、処理回路(たとえば、プロセッサ、処理モジュール、ASICなど)1602、メモリ回路(たとえば、メモリ、メモリデバイス、メモリモジュールなど)1604、および/または通信インターフェース1606を含み得る。
【０１２３】
処理回路1602は、本明細書で説明し図において示す中心ノードにおいて動作可能なステップのいずれかなど、プロセッサ可読プロセスステップの実行を含むデータ処理を実行し得る。たとえば、処理回路1602は、図17に示す少なくともステップ1702〜1706を実行するように適応された専用プロセッサ(たとえば、ASIC)であり得る。メモリ回路1604は、限定はしないが、関連する共有秘密鍵KMとともに、障害を受けていないグループノードのリストと、クライアントノードのリストとを記憶することを含む、データを記憶するように適応される。通信インターフェース1606は、中心ノード106をグループノード104に通信可能に結合するように適応される。通信インターフェースはワイヤレス接続またはワイヤライン接続のいずれかであり得る。
【０１２４】
グループノードとクライアントノードとの間の通信セッションを確立するための中心ノードの例示的な動作
図17に、第1のグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードにおいて動作可能な例示的な方法を示すフローチャート1700を示す。最初に、中心ノードが、1702において、第2のグループノードが障害を受けたと判断し、第1のグループノードは第1のグループノード識別子を有する。次に、中心ノードは、1704において、障害を受けていないグループノードのリストから、障害を受けた第2のグループノードを削除し、障害を受けていないグループノードのリストは、中心ノードに記憶され、第1のグループノードを含む。次に、中心ノードは、障害を受けていないグループノードのリスト上の各障害を受けていないグループノードに、次のエポックに関連する複数のプロキシトークンを送信し得る。複数のプロキシトークンは、第1のグループノードに関連する第1のプロキシトークンを含み、第1のグループノードに送信され、第1のプロキシトークンはクライアントノード識別情報と制限付き鍵とを含む。次のエポックは次のエポック識別値に関連し、制限付き鍵は、次のエポック識別値、第1のグループノード識別子、およびクライアントノードと中心ノードとの間で前に確立された共有鍵から計算される(1706)。
【０１２５】
一実施形態では、プロキシトークンは、次のエポックの開始より前に送信され得る。別の実施形態では、中心ノードは、第1のグループノードにコミットメッセージを送信し得、コミットメッセージは次のエポックの開始を示す。
【０１２６】
エポックを定義するために実時間を使用する中心ノードの例示的な動作
図18に、エポックを定義するために実時間を使用してグループノードとクライアントノードとの間の通信セッションを確立するための中心ノードの動作の一例を示す。中心ノードが、1802において、次のエポックの開始の前の所定の時間まで待つ。中心ノードは、次いで1804において、次のエポックのためのエポック識別値を計算する。次に、中心ノードは、1806において、障害を受けていないグループノードとクライアントノードとの各組合せについて制限付き鍵KRを計算し、次のエポックのためのエポック識別値を使用してプロキシタプルを構築する。各障害を受けていないグループノードのために、中心ノードは、1808において、そのグループノードのプロキシタプルを送る。
【０１２７】
たとえば、中心ノードは、特定のグループノードとクライアントノードとの組合せのための制限付き鍵KRを以下の式によって計算し得る。
KR = CMAC(KM, Gnode_ID || Epoch_ID)
ただし、Gnode_IDはグループノード識別情報であり得、Epoch_IDは次のエポック値であり得、KMは、クライアントノードと中心ノードとの間で共有される共有秘密鍵であり得、CMACは、暗号ベースのメッセージ認証コード(CMAC)アルゴリズムであり得る。
【０１２８】
別の例では、中心ノードは、通信システムにおいてグループノードにエポックのプロキシトークンを送信し得、プロキシトークンはクライアントノード識別情報と制限付き鍵とを有し、制限付き鍵は、エポック識別値Epoch_ID、グループノード識別情報Gnode_ID、およびクライアントノードと中心ノードとの間で前に確立された共有秘密鍵KMから計算される。エポック識別値は実時間から計算され得る。次いで、グループノードが廃棄されたか、障害を受けたか、紛失したか、盗まれたか、または故障したかどうかが判断され得る。グループノードが障害を受けたと判断された場合、障害を受けたグループノードは、中心ノードに記憶された、障害を受けていないグループノードのリストから削除され得る。中心ノードは、次いで、障害を受けたグループノードへのプロキシトークンの送信を終了し、通信システムにおいて、障害を受けていないグループノードに、すなわち、障害を受けていないグループノードのリストの要素にエポックのプロキシトークンを送信し得、プロキシトークンはクライアントノード識別情報と制限付き鍵とを有し、制限付き鍵は、次のエポックの識別情報、グループノードの識別情報、およびクライアントノードと中心ノードとの間で前に確立された共有鍵から計算される。
【０１２９】
エポックを定義するために実時間を使用しない中心ノードの例示的な動作
図19に、エポック識別情報が実時間に関係しない、グループノードとクライアントノードとの間の通信セッションを確立するための中心ノードの動作の一例を示す。中心ノードが、1902において、次のエポックのための時間またはイベントを選定し、次いで、その時間またはイベントが起こるのを待つ。その時間またはイベントが起こると、1904において、エポック識別値カウンタを増分する。次に、中心ノードは、1906において、障害を受けていないグループノードとクライアントノードとの各組合せについて制限付き鍵KRを計算し、次のエポックのためのエポック識別情報を使用してプロキシタプルを構築する。各障害を受けていないグループノードのために、1908において、コミットメッセージを送り、コミットメッセージはエポックの開始を示す。
【０１３０】
たとえば、中心ノードは、特定のグループノードとクライアントノードとの組合せのための制限付き鍵KRを以下の式によって計算し得る。
KR = CMAC(KM, Gnode_ID || Epoch_ID)
ただし、Gnode_IDはグループノード識別情報であり得、Epoch_IDは次のエポックに関連する値であり得、KMは、クライアントノードと中心ノードとの間で共有される共有秘密鍵であり得、CMACは、暗号ベースのメッセージ認証コード(CMAC)アルゴリズムであり得る。
【０１３１】
エポック識別情報が実時間に関係しない、グループノードとクライアントノードとの間の通信セッションを確立するための中心ノードの動作の別の例では、中心ノードは、システムに入る新しいクライアントノードとの仮想ペアリングプロトコルを使用し得る。
【０１３２】
グループノードが、障害を受けたか、紛失したか、盗まれたか、故障したか、または管理上の理由で削除されるべきであるかどうかの判断が行われ得る。障害を受けたグループノードが見つかった場合、障害を受けたグループノードは、中心ノードに記憶された、障害を受けていないグループノードのリストから削除され得る。中心ノードは、次いで、障害を受けたグループノードへのプロキシトークンの送信を終了し、通信システムにおいて各障害を受けていないグループノードにエポックのプロキシトークンを送信し得、障害を受けていないノードは、障害を受けていないノードのリストから取られ、プロキシトークンはクライアントノード識別情報と制限付き鍵とを有し、制限付き鍵は、次のエポックの識別情報、グループノードの識別情報、およびクライアントノードと中心ノードとの間で前に確立された共有鍵から計算される。次いで、コミットメッセージがグループノードに送られ得、コミットメッセージはエポックの開始を示す。
【０１３３】
しかしながら、グループノードが障害を受けていない場合、新しいエポックが開始されるべきであるかどうかに関する判断が行われ得る。新しいエポックが開始されるべきである場合、各クライアントノードのための新しいプロキシトークンがグループノードに送られ得、新しいエポックが開始したことを示す新しいコミットメッセージ、ならびに古いプロキシトークンを廃棄せよという指示がグループノードに送られ得る。中心ノードが新しいエポックを開始しようとしているとき、中心ノードはエポック識別値カウンタを増分し得る。
【０１３４】
図1、図2、図3、図4、図5、図6、図7、図8、図9、図10、図11、図12、図13、図14、図15、図16、図17、図18、および/または図19に示す構成要素、ステップ、特徴および/または機能のうちの1つまたは複数は、単一の構成要素、ステップ、特徴または機能に再構成され、および/または組み合わされ、あるいは、いくつかの構成要素、ステップ、または機能で実施され得る。また、本発明から逸脱することなく、追加の要素、構成要素、ステップ、および/または機能が追加され得る。図1、図5、図10、および/または図16に示す装置、デバイス、および/または構成要素は、図2、図3、図4、図6、図7、図8、図9、図11、図12、図13、図14、図15、図17、図18、および/または図19で説明した方法、特徴、またはステップのうちの1つまたは複数を実行するように構成され得る。本明細書で説明したアルゴリズムはまた、ソフトウェアで効率的に実装され得、および/またはハードウェアに組み込まれ得る。
【０１３５】
また、実施形態は、フローチャート、流れ図、構造図、またはブロック図として示すプロセスとして説明され得ることに留意されたい。フローチャートは動作を逐次プロセスとして説明し得るが、動作の多くは並列または同時に実行され得る。さらに、動作の順序は並び替えられ得る。プロセスは、それの動作が完了したときに終了する。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するとき、それの終了は、呼出し関数またはメイン関数への関数の復帰に対応する。
【０１３６】
その上、記憶媒体は、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスおよび/または他の機械可読媒体および、プロセッサ可読媒体、および/または情報を記憶するためのコンピュータ可読媒体を含む、データを記憶するための1つまたは複数のデバイスを表し得る。「機械可読媒体」、「コンピュータ可読媒体」、および/または「プロセッサ可読媒体」という用語は、限定はしないが、ポータブルまたは固定ストレージデバイス、光ストレージデバイス、ならびに命令および/またはデータを記憶、含有または搬送することが可能な様々な他の媒体などの非一時的媒体を含み得る。したがって、本明細書で説明した様々な方法は、「機械可読媒体」、「コンピュータ可読媒体」、および/または「プロセッサ可読媒体」に記憶され、1つまたは複数のプロセッサ、機械および/またはデバイスによって実行され得る命令および/またはデータによって、完全にまたは部分的に実装され得る。
【０１３７】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実装されるとき、必要なタスクを実行するプログラムコードまたはコードセグメントは、記憶媒体または他のストレージなどの機械可読媒体に記憶され得る。プロセッサは必要なタスクを実行し得る。コードセグメントは、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは命令、データ構造、またはプログラムステートメントの任意の組合せを表し得る。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容をパスおよび/または受信することによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の好適な手段を介してパス、フォワーディング、または送信され得る。
【０１３８】
本明細書で開示する例に関して説明した様々な例示的な論理ブロック、モジュール、回路、要素、および/または構成要素は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理構成要素、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せで実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティング構成要素の組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、いくつかのマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
【０１３９】
本明細書で開示する例に関して説明した方法またはアルゴリズムは、ハードウェアで、プロセッサによって実行可能なソフトウェアモジュールで、または両方の組合せで、処理ユニット、プログラム命令、または他の指示の形態で直接実施され得、単一のデバイスに含まれるかまたは複数のデバイスにわたって分散され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。記憶媒体は、プロセッサがその記憶媒体から情報を読み取り、その記憶媒体に情報を書き込むことができるようにプロセッサに結合され得る。代替として、記憶媒体はプロセッサと一体であり得る。
【０１４０】
さらに、本明細書で開示する実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。
【０１４１】
本明細書で説明した本発明の様々な特徴は、本発明から逸脱することなく様々なシステムで実装され得る。上記の実施形態は例にすぎず、本発明を限定するものと解釈すべきではないことに留意されたい。実施形態の説明は、例示的なものであり、特許請求の範囲を限定するものではない。したがって、本教示は、他のタイプの装置、ならびに多くの代替形態、変更形態、および変形形態に容易に適用され得ることが当業者には明らかであろう。
【符号の説明】
【０１４２】
100  ワイヤレスネットワーク通信システム
100  通信システム
100  システム
102  クライアントノード
102  クライアント
104  グループノード
104a  グループノードA
104a〜104c  グループノード
106  中心ノード
201  エポックA
202a  共有秘密鍵
202b  鍵
203  エポックB
218a  交換セット
301  エポックA
302a  共有秘密鍵
302b  共有秘密鍵
303  エポックB
304  実時間
401  エポックA
402a  共有秘密鍵
402b  共有秘密鍵
403  エポックB
408  コミットメッセージ
412  ネゴシエーション
502  処理回路
504  メモリ回路
506  キャッシュ
508  通信インターフェース
510  ワイヤレス接続
512  通信バス
1002  処理回路
1004  メモリ回路
1004  メモリ
1006  キャッシュ
1008  第1の通信インターフェース
1010  第2の通信インターフェース
1012  通信バス
1014  ワイヤレス接続
1602  処理回路
1604  メモリ回路
1606  通信インターフェース
1608  通信バス
【図１】
0005878630.tif 000002
【図２】
0005878630.tif 000003
【図３】
0005878630.tif 000004
【図４】
0005878630.tif 000005
【図５】
0005878630.tif 000006
【図６】
0005878630.tif 000007
【図７Ａ】
0005878630.tif 000008
【図７Ｂ】
0005878630.tif 000009
【図８Ａ】
0005878630.tif 000010
【図８Ｂ】
0005878630.tif 000011
【図９Ａ】
0005878630.tif 000012
【図９Ｂ】
0005878630.tif 000013
【図１０】
0005878630.tif 000014
【図１１】
0005878630.tif 000015
【図１２】
0005878630.tif 000016
【図１３Ａ】
0005878630.tif 000017
【図１３Ｂ】
0005878630.tif 000018
【図１４】
0005878630.tif 000019
【図１５Ａ】
0005878630.tif 000020
【図１５Ｂ】
0005878630.tif 000021
【図１６】
0005878630.tif 000022
【図１７】
0005878630.tif 000023
【図１８】
0005878630.tif 000024
【図１９】
0005878630.tif 000025