(57)【特許請求の範囲】
【請求項１】
前方秘匿性を備えた共有秘密合意のための方法であって、
第１のノードにおけるコントローラにより、メモリ内に格納されている第１のノードシード値及び少なくとも１つのインデックス値に適用される暗号学的にセキュアな疑似乱数発生器（ＰＲＮＧ）を使用して、第１の複数のデータビットを生成することと、
前記第１のノードにおける前記コントローラ及びトランシーバにより、共有通信媒体を介して前記第１の複数のデータビットにおける各ビットを、前記共有通信媒体に接続された第２のノードからの第２の複数のデータビットの送信と同時に送信し、前記第２の複数のデータビットを、前記第１のノードにおける前記トランシーバにより受信することと、
前記第１のノードにおける前記コントローラにより、前記第１のノード及び前記第２のノードにより同時に送信される前記第２の複数のデータビットの論理的補数である前記第１の複数のデータビットの一部分を使用して、前記第２のノードによる共有秘密データを同定することと、
前記第１のノードにおける前記コントローラにより、前記共有秘密データに適用される暗号学的にセキュアな一方向性関数を使用して、共有シード値を生成し、前記共有シード値を前記メモリ内に格納することと、
前記第１のノードにおける前記コントローラにより、前記第１のノードシード値に適用される前記暗号学的にセキュアな一方向性関数を使用して、更新されたノードシード値を生成し、前記更新されたノードシード値を前記メモリ内に格納して、前記第１のノードシード値を置き換えることと、
を含む、
前方秘匿性を備えた共有秘密合意のための方法。
【請求項２】
前記第１のノードにおける前記コンローラにより、前記共有秘密データに適用される鍵生成関数を使用して、第１の共有秘密暗号化鍵を生成し、前記第１の共有秘密暗号化鍵を前記メモリ内に格納すること、
をさらに含む、
請求項１に記載の方法。
【請求項３】
前記第１のノードにおける前記コントローラにより、前記共有シード値に適用される前記鍵生成関数を使用して、第２の共有秘密暗号化鍵を生成し、前記第２の共有秘密暗号化鍵を前記メモリ内に格納して、前記第１の共有秘密暗号化鍵を置き換えることと、
前記第１のノードにおける前記コントローラにより、前記共有シード値に適用される前記暗号学的にセキュアな一方向性関数を使用して、更新された共有シード値を生成し、前記更新された共有シード値を前記メモリ内に格納して、前記共有シード値を置き換えることと、
をさらに含む、
請求項２に記載の方法。
【請求項４】
前記第１の複数のデータビットを送信することは、
前記第１のノードにおける前記トランシーバにより、前記第１の複数のデータビットにおける各ビットを、２つの送信から成る１つのシーケンスとして送信すること
をさらに含み、
第１の送信は、前記第１の複数のデータビットにおけるビットから成り、第２の送信は、前記第１の複数のデータビットにおけるビットの論理的補数から成る、
請求項１に記載の方法。
【請求項５】
前記暗号学的にセキュアな一方向性関数は、暗号学的ハッシュ関数である、
請求項１に記載の方法。
【請求項６】
前記鍵生成関数は、前記暗号学的にセキュアなＰＲＮＧである、
請求項２に記載の方法。
【請求項７】
前記第１のノードにおける前記トランシーバは、前記第１の複数のデータビットにおける各ビットを、ＣＡＮバスの共有通信媒体を介して送信する、
請求項１に記載の方法。
【請求項８】
前方秘匿性を備えた共有秘密合意のための方法であって、
第２のノードにおけるコントローラにより、前記第２のノードのメモリ内に格納されている第１の共有シード値及び少なくとも１つのインデックス値に適用される暗号学的にセキュアな疑似乱数発生器（ＰＲＮＧ）を使用して、第１の複数のデータビットを生成し、前記第１の共有シード値を、共有通信媒体に接続された前記第２のノードと第１のノードとの間で共有することと、
前記第２のノードにおける前記コントローラ及びトランシーバにより、前記共有通信媒体を介して前記第１の複数のデータビットにおける各ビットを、前記共有通信媒体に接続された第３のノードからの第２の複数のデータビットの送信と同時に送信し、前記第２の複数のデータビットを、前記第２のノードにおける前記トランシーバにより受信することと、
前記第２のノードにおける前記コントローラにより、前記第２のノード及び前記第３のノードにより同時に送信される前記第２の複数のデータビットの論理的補数である前記第１の複数のデータビットの一部分を使用して、前記第３のノードによる第１の共有秘密データを同定することと、
前記第２のノードにおける前記コントローラにより、前記第１の共有秘密データに適用される暗号学的にセキュアな一方向性関数を使用して、第２の共有シード値を生成し、前記第２の共有シード値を前記メモリ内に格納することと、
前記第２のノードにおける前記コントローラにより、前記第１の共有シード値に適用される前記暗号学的にセキュアな一方向性関数を使用して、更新された第１の共有シード値を生成し、前記更新された第１の共有シード値を前記メモリ内に格納して、前記第１の共有シード値を置き換えることと、
を含む、
前方秘匿性を備えた共有秘密合意のための方法。
【請求項９】
前記第１のノードにおけるコントローラにより、前記第１のノードのメモリ内に格納された前記第１の共有シード値及び前記少なくとも１つのインデックス値に適用される前記暗号学的にセキュアなＰＲＮＧを使用して、前記第１の複数のデータビットを生成することと、
前記第１のノードにおける前記コントローラにより、前記第１の複数のデータビットに基づき、さらに前記第１のノードにおける前記トランシーバを使用して前記第２のノード及び前記第３のノードの送信を受信することにより、前記第１の共有秘密データを同定して、前記第２の複数のデータビットの論理的補数である前記第１の複数のデータビットの一部分を同定すること、
前記第１のノードにおける前記コントローラにより、前記第１の共有秘密データに適用される前記暗号学的にセキュアな一方向性関数を使用して、前記第２の共有シード値を生成し、前記第２の共有シード値を前記メモリ内に格納することと、
前記第１のノードにおける前記コントローラにより、前記第１の共有シード値に適用される前記暗号学的にセキュアな一方向性関数を使用して、前記更新された第１の共有シード値を生成し、前記更新された第１の共有シード値を前記第１のノードの前記メモリ内に格納して、前記第１の共有シード値を置き換えることと、
をさらに含む、
請求項８に記載の方法。
【請求項１０】
前記第１のノードにおける前記コントローラにより、前記第１の共有秘密データに適用される鍵生成関数を使用して、前記第１のノードの前記メモリ内に第１の共有秘密暗号化鍵を生成することと、
前記第２のノードにおける前記コントローラにより、前記第１の共有秘密データに適用される前記鍵生成関数を使用して、前記第２のノードの前記メモリ内に前記第１の共有秘密暗号化鍵を生成することと、
をさらに含む、
請求項９に記載の方法。
【請求項１１】
前記第２のノードにおける前記コントローラにより、前記第２の共有シード値に適用される前記鍵生成関数を使用して、第２の共有秘密暗号化鍵を生成し、前記第２の共有秘密暗号化鍵を前記メモリ内に格納して、前記第１の共有秘密暗号化鍵を置き換えることと、
前記第２のノードにおける前記コントローラにより、前記第２の共有シード値に適用される前記暗号学的にセキュアな一方向性関数を使用して、更新された第２の共有シード値を生成し、前記更新された第２の共有シード値を前記第２のノードの前記メモリ内に格納して、前記第２の共有シード値を置き換えることと、
をさらに含む、
請求項１０に記載の方法。
【請求項１２】
前記第２のノードにおける前記コントローラにより、前記第２の共有シード値及び前記少なくとも１つのインデックス値に適用される前記暗号学的にセキュアなＰＲＮＧを使用して、第３の複数のデータビットを生成することと、
前記第２のノードにおける前記コントローラ及び前記トランシーバにより、前記共有通信媒体を介して前記第３の複数のデータビットにおける各ビットを、前記共有通信媒体に接続された第３のノードからの第４の複数のデータビットの送信と同時に送信し、前記第４の複数のデータビットを、前記第２のノードにおける前記トランシーバにより受信することと、
前記第２のノードにおける前記コントローラにより、前記第２のノード及び前記第３のノードにより同時に送信される前記第４の複数のデータビットの論理的補数である前記第３の複数のデータビットの一部分を使用して、前記第３のノードによる第２の共有秘密データを同定することと、
前記第２のノードにおける前記コントローラにより、前記第２の共有秘密データに適用される前記鍵生成関数を使用して、前記第２のノードの前記メモリ内に第２の共有秘密暗号化鍵を生成し、該第２の共有秘密暗号化鍵により、前記第２のノードの前記メモリ内の前記第１の共有秘密暗号化鍵を置き換えることと、
前記第２のノードにおける前記コントローラにより、前記第２の共有秘密データに適用される前記暗号学的にセキュアな一方向性関数を使用して、更新された第２の共有シード値を生成し、前記更新された第２の共有シード値を前記第２のノードの前記メモリ内に格納することと、
をさらに含む、
請求項１０に記載の方法。
【請求項１３】
前記第３のノードにおけるコントローラにより、前記第３のノードのメモリ内に格納されたノードシード値及び前記少なくとも１つのインデックス値に適用される前記暗号学的にセキュアなＰＲＮＧを使用して、前記第４の複数のデータビットを生成することと、
前記第３のノードにおける前記コントローラにより、前記第２のノード及び前記第３のノードにより同時に送信される前記第４の複数のデータビットの論理的補数である前記第３の複数のデータビットの一部分を使用して、前記第２の共有秘密データを同定することと、
前記第３のノードにおける前記コントローラにより、前記第２の共有秘密データに適用される前記鍵生成関数を使用して、前記第３のノードの前記メモリ内に前記第２の共有秘密暗号化鍵を生成し、前記第２の共有秘密暗号化鍵により、前記第３のノードの前記メモリ内の前記第１の共有秘密暗号化鍵を置き換えることと、
前記第３ノードにおける前記コントローラにより、前記ノードシード値に適用される前記暗号学的にセキュアな一方向性関数を使用して、更新されたノードシード値を生成し、前記更新されたノードシード値を前記第３のノードの前記メモリ内に格納して、前記ノードシード値を置き換えることと、
をさらに含む、
請求項１２に記載の方法。
【請求項１４】
前記第１のノードにおけるコントローラにより、前記第２の共有シード値及び前記少なくとも１つのインデックス値に適用される前記暗号学的にセキュアなＰＲＮＧを使用して、前記第３の複数のデータビットを生成することと、
前記第１のノードにおける前記コントローラにより、前記第３の複数のデータビットに基づき、さらに前記第１のノードにおける前記トランシーバを使用して前記第２のノード及び前記第３のノードの送信を受信することにより、前記第２の共有秘密データを同定して、前記第４の複数のデータビットの論理的補数である前記第３の複数のデータビットの一部分を同定することと、
前記第１のノードにおける前記コントローラにより、前記第２の共有秘密データに適用される前記鍵生成関数を使用して、前記第１のノードの前記メモリ内に前記第２の共有秘密暗号化鍵を生成し、前記第２の共有秘密暗号化鍵により、前記第１のノードの前記メモリ内の前記第１の共有秘密暗号化鍵を置き換えることと、
前記第１のノードにおける前記コントローラにより、前記第２の共有秘密データに適用される前記暗号学的にセキュアな一方向性関数を使用して、前記更新された第２の共有シード値を生成し、前記更新された第２の共有シード値を前記第１のノードの前記メモリ内に格納して、前記第２の共有シード値を置き換えることと、
をさらに含む、
請求項１２に記載の方法。
【請求項１５】
前記第３のノードにおけるコントローラにより、前記第３のノードのメモリ内に格納された前記第２の共有シード値及び前記少なくとも１つのインデックス値に適用される前記暗号学的にセキュアなＰＲＮＧを使用して、第３の複数のデータビットを生成することと、
前記第３のノードにおける前記コントローラ及びトランシーバにより、前記共有通信媒体を介して前記第３の複数のデータビットにおける各ビットを、前記共有通信媒体に接続された第４のノードからの第４の複数のデータビットの送信と同時に送信し、前記第４の複数のデータビットを、前記第３のノードにおける前記トランシーバにより受信することと、
前記第３のノードにおける前記コントローラにより、前記第３のノード及び前記第４のノードにより同時に送信される前記第４の複数のデータビットの論理的補数である前記第３の複数のデータビットの一部分を使用して、前記第４のノードによる第２の共有秘密データを同定することと、
前記第３のノードにおける前記コントローラにより、前記第２の共有秘密データに適用される前記暗号学的にセキュアな一方向性関数を使用して、前記第３のノードの前記メモリ内に第３の共有シード値を生成し、前記第３の共有シード値を前記第３のノードの前記メモリ内に格納することと、
前記第３のノードにおける前記コントローラにより、前記第２の共有秘密データに適用される前記鍵生成関数を使用して、前記第３のノードの前記メモリ内に第２の共有秘密暗号化鍵を生成し、前記第２の共有秘密暗号化鍵により、前記第３のノードの前記メモリ内の前記第１の共有秘密暗号化鍵を置き換えることと、
をさらに含む、
請求項１０に記載の方法。
【請求項１６】
前記第１のノード、前記第２のノード、前記第３のノード及び前記第４のノードを含むグループを前記第３のノードが離れたことに応答し、前記第２のノードにおける前記コントローラにより、前記更新された第１の共有シード値及び前記少なくとも１つのインデックス値に適用される前記暗号学的にセキュアなＰＲＮＧを使用して、第５の複数のデータビットを生成することと、
前記第１のノード、前記第２のノード、前記第３のノード及び前記第４のノードを含む前記グループを前記第３のノードが離れたことに応答し、前記第２のノードにおける前記コントローラ及び前記トランシーバにより、前記共有通信媒体を介して前記第５の複数のデータビットにおける各ビットを、前記共有通信媒体に接続された前記第４のノードからの第６の複数のデータビットの送信と同時に送信し、前記第６の複数のデータビットを、前記第２のノードにおける前記トランシーバにより受信することと、
前記第２のノードにおける前記コントローラにより、前記第２のノード及び前記第４のノードにより同時に送信される前記第６の複数のデータビットの論理的補数である前記第５の複数のデータビットの一部分を使用して、前記第４のノードによる第３の共有秘密データを同定することと、
前記第２のノードにおける前記コントローラにより、前記第３の共有秘密データに適用される前記暗号学的にセキュアな一方向性関数を使用して、更新された第２の共有シード値を生成し、前記更新された第２の共有シード値を前記第２のノードの前記メモリ内に格納することと、
前記第２のノードにおける前記コントローラにより、前記第３の共有秘密データに適用される前記鍵生成関数を使用して、前記第２のノードの前記メモリ内に第３の共有秘密暗号化鍵を生成し、前記第３のノードとではなく、前記第１のノードと前記第２のノードと前記第４のノードとの間で、前記共有通信媒体を介して暗号化通信を可能にすることと、
をさらに含む、
請求項１５に記載の方法。
【請求項１７】
前記第１のノード、前記第２のノード、前記第３のノード及び前記第４のノードを含む前記グループを前記第３のノードが離れたことに応答し、前記第１のノードにおける前記コントローラにより、前記更新された第１の共有シード値及び前記少なくとも１つのインデックス値に基づき、前記暗号学的にセキュアなＰＲＮＧを使用して、前記第５の複数のデータビットを生成することと、
前記第１のノードにおける前記コントローラにより、前記第５の複数のデータビットに基づき、さらに前記第１のノードにおける前記トランシーバを使用して前記第２のノード及び前記第４のノードの送信を受信することにより、前記第３の共有秘密データを同定して、前記第６の複数のデータビットの論理的補数である前記第５の複数のデータビットの一部分を同定することと、
前記第１のノードにおける前記コントローラにより、前記第３の共有秘密データに適用される前記暗号学的にセキュアな一方向性関数を使用して、前記更新された第２の共有シード値を生成し、前記更新された第２の共有シード値を前記第１のノードの前記メモリ内に格納することと、
前記第１のノードにおける前記コントローラにより、前記第３の共有秘密データに適用される前記鍵生成関数を使用して、前記第１のノードの前記メモリ内に前記第３の共有秘密暗号化鍵を生成し、前記第３のノードとではなく、前記第１のノードと前記第２のノードと前記第４のノードとの間で、前記共有通信媒体を介して暗号化通信を可能にすることと、
をさらに含む、
請求項１６に記載の方法。
【請求項１８】
前記暗号学的にセキュアな一方向性関数は、暗号学的ハッシュ関数である、
請求項８に記載の方法。
【請求項１９】
前記鍵生成関数は、前記暗号学的にセキュアなＰＲＮＧである、
請求項９に記載の方法。
【請求項２０】
前記第２のノードにおける前記トランシーバは、前記第１の複数のデータビットの各ビットを、ＣＡＮバスの共有通信媒体を介して送信する、
請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本願は、２０１７年８月２９日に提出された米国特許仮出願第６２／５５１，６０９号、発明の名称「Method and System for Share Key and Message Authentication Over an Insecure Shared Communication Medium」、の利益を主張するものであり、ここでこの文献を参照したことにより、その開示内容全体は、本明細書に明示的に取り込まれたものとする。
【０００２】
分野
本開示は、全般的には、ネットワーク通信の分野に関するものであり、より具体的には、共有通信媒体を使用した前方秘匿性を含むセキュアな通信のためのシステム及び方法に関する。
【背景技術】
【０００３】
背景
コントロールエリアネットワーク（ＣＡＮ）バス通信標準によって、幅広い用途において使用されるロバストな通信インタフェースが提供され、それらの用途には、以下に限定されるものではないが、自動車及び他の輸送用乗物、ビルディングオートメーション、産業システム、ロボット工学、並びに、共有通信媒体を使用した組み込み型ディジタルデバイス間の通信を必要とする他の分野が含まれる。多くのＣＡＮバスの実施形態は、標準化されたデータフレームフォーマットを用いてデータを送信及び受信するために、ＣＡＮハイ（ＣＡＮＨ）及びＣＡＮロー（ＣＡＮＬ）と呼ばれる２本の導電性ワイヤと、共有通信媒体としてＣＡＮＨワイヤ及びＣＡＮＬワイヤを使用する「ノード」と呼ばれる電子デバイスとを用いる。ＣＡＮバスは、一般的には、信号伝送のための物理的媒体として、シールドあり又はシールドなしのツイストペアケーブルから成るペアを利用する。
【０００４】
通常のオペレーション中、ノードは、１つ又は複数のノードがデータフレームの送信を要求するときに、バスアービトレーションプロセスを実施する。これによって保証されるのは、２つ以上のノードが同時に送信するときに発生する「コリジョン」を伴わない信頼性のある通信がもたらされるように、ある１つの時点でただ１つのノードだけが実際にＣＡＮハイライン及びＣＡＮローライン上にデータを送信する、ということである。ＣＡＮバス標準の場合、バス上にドミナントビット「０」を送信するときに、出力ピンＣＡＮＨ及びＣＡＮＬがそれぞれ異なる電圧レベルとなるように駆動され、ＣＡＮＨとＣＡＮＬとの差分がＣＡＮバスの出力である。同様に、リセッシブビット「１」の伝送が行われるのは、ＣＡＮＨ及びＣＡＮＬが駆動されず、同等の電圧レベルを有することになるときである。ＣＡＮバスは共有通信媒体であるので、ＣＡＮバスに接続されたすべてのノードは、バスを介して伝送されるデータのビット各々を読み取ることができる。ＣＡＮバスのこのような特性が問題となるのは、２つのノードが、バスに接続された他のノードにはわからないデータを内密に通信したいときである。
【０００５】
ＣＡＮバスの実装に対する最近の発展に含まれるコンフィギュレーションによれば、ＣＡＮバスに接続されている２つのノードが（意図的にコリジョンを発生させるために）同時にデータビットを送信し、２つの送信側ノードのいずれが実際に暗号化鍵の一部を成す情報を送信しているのかを第三者のノードが特定できないようにする手法により、暗号化鍵データを交換する。これらの鍵合意技術の一部において、２つのノードが同時に論理値１及び論理値０の信号を送信し、これに続いて元のビットの論理的補数が両方のノードから同時に送信され、これによって、ＣＡＮＨワイヤとＣＡＮＬワイヤとの間で合算された電圧差が発生し、取り付けられたノード各々によってこの電圧差を検出することができる。しかしながら、ＣＡＮバスに取り付けられたデバイスすべては、ＣＡＮバスを介したドミナントビット（論理値０）の送信を検出することはできるけれども、２つのノードはＣＡＮバスに接続されている他のノードに同時に送信することから、０／１ビット及びそれに続く論理的補数の送信シーケンス中のどの時点においても、２つのノードのいずれがドミナント０又は非ドミナント１を送信しているのかを特定することはできず、いずれのビットが送信されているのかは、２つの送信ノードだけにしかわからない。２つのノードは論理値０及び１のビット及びそれらの論理的補数をランダム化された手法により送信し（両方のノードが論理値００／１１のシーケンス又は論理値１１／００のシーケンスを送信するならば、これらの信号によって第三者は各ノードから送信されたデータを特定することができてしまうので、このような送信は無視される）、これによって、ＣＡＮバスに接続された他のノードが、各ビットを送信するノードの身元を検出できないようにしている。このオペレーションは、２つのノードが、そして間接的にはもっと大きなノードグループであっても、共有暗号化鍵のベースとなるデータを交換できるようにするための基礎を成している。ノードが暗号化鍵を交換してしまった後、それらの共有鍵を使用してデータ暗号化及び認証／照合のオペレーションが実施され、その際に他の点では当該分野に周知の技術が用いられ、これによって、ＣＡＮバスに接続された他のノードによっても検出できない手法では復号又は変更が不可能なデータを、バス上のノードの種々のサブセットが交換できるようになる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のプロセスによれば、非セキュアな共有通信媒体を使用するＣＡＮバスなどのシステムにおいて共有暗号化鍵を生成するために、秘密のデータをセキュアに交換できるようになるけれども、既存のプロセスは、前方秘匿性を実装して以前に使用された暗号化鍵の秘匿性を保護する新たな暗号化鍵を生成するための効果的なプロセスをもたらすものではない。当該分野において周知のように、前方秘匿性は、過去のセッションのときに暗号化されたデータを秘密鍵の将来の漏洩から保護する暗号化システムの１つの特性である。過去の秘密鍵の前方秘匿性をもたらす新たな暗号化鍵を生成するために、ランダムに生成されたデータから成る新たなセットを用いて、上述のプロセスを繰り返すことはできるけれども、上述の鍵合意プロセスを高い頻度で実施することによって、共有通信媒体を使用するシステム内で大量の時間及びネットワークキャパシティを浪費する可能性があり、これは非効率なプロセスである。従って、前方秘匿性と効率的なオペレーションの双方をもたらすように、非セキュアな共有通信媒体を使用するシステム内で共有暗号化鍵を生成する方法及びシステムを改善するのが有利であろう。
【課題を解決するための手段】
【０００７】
概要
１つの実施形態によれば、前方秘匿性を備えた共有秘密合意のための方法が開発された。この方法は、第１のノードにおけるコントローラにより、メモリ内に格納されている第１のノードシード値及び少なくとも１つのインデックス値に適用される暗号学的にセキュアな疑似乱数発生器（ＰＲＮＧ）を使用して、第１の複数のデータビットを生成することと、第１のノードにおけるコントローラ及びトランシーバにより、共有通信媒体を介して第１の複数のデータビットにおける各ビットを、共有通信媒体に接続された第２のノードからの第２の複数のデータビットの送信と同時に送信し、この第２の複数のデータビットを、第１のノードにおけるトランシーバにより受信することと、第１のノードにおけるコントローラにより、第１のノード及び第２のノードにより同時に送信される第２の複数のデータビットの論理的補数である第１の複数のデータビットの一部分を使用して、第２のノードによる共有秘密データを同定することと、第１のノードにおけるコントローラにより、共有秘密データに適用される暗号学的にセキュアな一方向性関数を使用して、共有シード値を生成し、この共有シード値をメモリ内に格納することと、第１のノードにおけるコントローラにより、第１のノードシード値に適用される暗号学的にセキュアな一方向性関数を使用して、更新されたノードシード値を生成し、この更新されたノードシード値をメモリ内に格納して、第１のノードシード値を置き換えることと、を含む。
【０００８】
さらなる実施形態において、この方法は、第１のノードにおけるコンローラにより、共有秘密データに適用される鍵生成関数を使用して、第１の共有秘密暗号化鍵を生成し、この第１の共有秘密暗号化鍵をメモリ内に格納することを含む。
【０００９】
さらなる実施形態において、この方法は、第１のノードにおけるコントローラにより、共有シード値に適用される鍵生成関数を使用して、第２の共有秘密暗号化鍵を生成し、この第２の共有秘密暗号化鍵をメモリ内に格納して、第１の共有秘密暗号化鍵を置き換えることと、第１のノードにおけるコントローラにより、共有シード値に適用される暗号学的にセキュアな一方向性関数を使用して、更新された共有シード値を生成し、この更新された共有シード値をメモリ内に格納して、共有シード値を置き換えることと、を含む。
【００１０】
さらなる実施形態において、この方法は、第１のノードにおけるトランシーバにより、第１の複数のデータビットにおける各ビットを、２つの送信から成る１つのシーケンスとして送信することを含み、第１の送信は、第１の複数のデータビットにおけるビットから成り、第２の送信は、第１の複数のデータビットにおけるビットの論理的補数から成る。
【００１１】
さらなる実施形態において、この方法の暗号学的にセキュアな一方向性関数は、暗号学的ハッシュ関数である。
【００１２】
さらなる実施形態において、この方法の鍵生成関数は、暗号学的にセキュアなＰＲＮＧである。
【００１３】
この方法のさらなる実施形態において、第１のノードにおけるトランシーバは、第１の複数のデータビットにおける各ビットを、ＣＡＮバスの共有通信媒体を介して送信する。
【００１４】
他の実施形態によれば、前方秘匿性を備えた共有秘密合意のための方法が開発された。この方法は、第２のノードにおけるコントローラにより、第２のノードのメモリ内に格納されている第１の共有シード値及び少なくとも１つのインデックス値に適用される暗号学的にセキュアな疑似乱数発生器（ＰＲＮＧ）を使用して、第１の複数のデータビットを生成し、第１の共有シード値を、共有通信媒体に接続された第２のノードと第１のノードとの間で共有することと、第２のノードにおけるコントローラ及びトランシーバにより、共有通信媒体を介して第１の複数のデータビットにおける各ビットを、共有通信媒体に接続された第３のノードからの第２の複数のデータビットの送信と同時に送信し、この第２の複数のデータビットを、第２のノードにおけるトランシーバにより受信することと、第２のノードにおけるコントローラにより、第２のノード及び第３のノードにより同時に送信される第２の複数のデータビットの論理的補数である第１の複数のデータビットの一部分を使用して、第３のノードによる第１の共有秘密データを同定することと、第２のノードにおけるコントローラにより、第１の共有秘密データに適用される暗号学的にセキュアな一方向性関数を使用して、第２の共有シード値を生成し、この第２の共有シード値をメモリ内に格納することと、第２のノードにおけるコントローラにより、第１の共有シード値に適用される暗号学的にセキュアな一方向性関数を使用して、更新された第１の共有シード値を生成し、この更新された第１の共有シード値をメモリ内に格納して、第１の共有シード値を置き換えることと、を含む。
【００１５】
さらなる実施形態において、この方法は、第１のノードにおけるコントローラにより、第１のノードのメモリ内に格納された第１の共有シード値及び少なくとも１つのインデックス値に適用される暗号学的にセキュアなＰＲＮＧを使用して、第１の複数のデータビットを生成することと、第１のノードにおけるコントローラにより、第１の複数のデータビットに基づき、さらに第１のノードにおけるトランシーバを使用して第２のノード及び第３のノードの送信を受信することにより、第１の共有秘密データを同定して、第２の複数のデータビットの論理的補数である第１の複数のデータビットの一部分を同定することと、第１のノードにおけるコントローラにより、第１の共有秘密データに適用される暗号学的にセキュアな一方向性関数を使用して、第２の共有シード値を生成し、この第２の共有シード値をメモリ内に格納することと、第１のノードにおけるコントローラにより、第１の共有シード値に適用される暗号学的にセキュアな一方向性関数を使用して、更新された第１の共有シード値を生成し、この更新された第１の共有シード値を第１のノードのメモリ内に格納して、第１の共有シード値を置き換えることと、を含む。
【００１６】
さらなる実施形態において、この方法は、第１のノードにおけるコントローラにより、第１の共有秘密データに適用される鍵生成関数を使用して、第１のノードのメモリ内に第１の共有秘密暗号化鍵を生成することと、第２のノードにおけるコントローラにより、第１の共有秘密データに適用される鍵生成関数を使用して、第２のノードのメモリ内に第１の共有秘密暗号化鍵を生成することと、を含む。
【００１７】
さらなる実施形態において、この方法は、第２のノードにおけるコントローラにより、第２の共有シード値に適用される鍵生成関数を使用して、第２の共有秘密暗号化鍵を生成し、この第２の共有秘密暗号化鍵をメモリ内に格納して、第１の共有秘密暗号化鍵を置き換えることと、第２のノードにおけるコントローラにより、第２の共有シード値に適用される暗号学的にセキュアな一方向性関数を使用して、更新された第２の共有シード値を生成し、この更新された第２の共有シード値を第２のノードのメモリ内に格納して、第２の共有シード値を置き換えることと、を含む。
【００１８】
さらなる実施形態において、この方法は、第２のノードにおけるコントローラにより、第２の共有シード値及び少なくとも１つのインデックス値に適用される暗号学的にセキュアなＰＲＮＧを使用して、第３の複数のデータビットを生成することと、第２のノードにおけるコントローラ及びトランシーバにより、共有通信媒体を介して第３の複数のデータビットにおける各ビットを、共有通信媒体に接続された第３のノードからの第４の複数のデータビットの送信と同時に送信し、この第４の複数のデータビットを、第２のノードにおけるトランシーバにより受信することと、第２のノードにおけるコントローラにより、第２のノード及び第３のノードにより同時に送信される第４の複数のデータビットの論理的補数である第３の複数のデータビットの一部分を使用して、第３のノードによる第２の共有秘密データを同定することと、第２のノードにおけるコントローラにより、第２の共有秘密データに適用される鍵生成関数を使用して、第２のノードのメモリ内に第２の共有秘密暗号化鍵を生成し、この第２の共有秘密暗号化鍵により、第２のノードのメモリ内の第１の共有秘密暗号化鍵を置き換えることと、第２のノードにおけるコントローラにより、第２の共有秘密データに適用される暗号学的にセキュアな一方向性関数を使用して、更新された第２の共有シード値を生成し、この更新された第２の共有シード値を第２のノードのメモリ内に格納することと、を含む。
【００１９】
さらなる実施形態において、この方法は、第３のノードにおけるコントローラにより、第３のノードのメモリ内に格納されたノードシード値及び少なくとも１つのインデックス値に適用される暗号学的にセキュアなＰＲＮＧを使用して、第４の複数のデータビットを生成することと、第３のノードにおけるコントローラにより、第２のノード及び第３のノードにより同時に送信される第４の複数のデータビットの論理的補数である第３の複数のデータビットの一部分を使用して、第２の共有秘密データを同定することと、第３のノードにおけるコントローラにより、第２の共有秘密データに適用される鍵生成関数を使用して、第３のノードのメモリ内に第２の共有秘密暗号化鍵を生成し、この第２の共有秘密暗号化鍵により、第３のノードのメモリ内の第１の共有秘密暗号化鍵を置き換えることと、第３ノードにおけるコントローラにより、ノードシード値に適用される暗号学的にセキュアな一方向性関数を使用して、更新されたノードシード値を生成し、この更新されたノードシード値を第３のノードのメモリ内に格納して、ノードシード値を置き換えることと、を含む。
【００２０】
さらなる実施形態において、この方法は、第１のノードにおけるコントローラにより、第２の共有シード値及び少なくとも１つのインデックス値に適用される暗号学的にセキュアなＰＲＮＧを使用して、第３の複数のデータビットを生成することと、第１のノードにおけるコントローラにより、第３の複数のデータビットに基づき、さらに第１のノードにおけるトランシーバを使用して第２のノード及び第３のノードの送信を受信することにより、第２の共有秘密データを同定して、第４の複数のデータビットの論理的補数である第３の複数のデータビットの一部分を同定することと、第１のノードにおけるコントローラにより、第２の共有秘密データに適用される鍵生成関数を使用して、第１のノードのメモリ内に第２の共有秘密暗号化鍵を生成し、この第２の共有秘密暗号化鍵により、第１のノードのメモリ内の第１の共有秘密暗号化鍵を置き換えることと、第１のノードにおけるコントローラにより、第２の共有秘密データに適用される暗号学的にセキュアな一方向性関数を使用して、更新された第２の共有シード値を生成し、この更新された第２の共有シード値を第１のノードのメモリ内に格納して、第２の共有シード値を置き換えることと、を含む。
【００２１】
さらなる実施形態において、この方法は、第３のノードにおけるコントローラにより、第３のノードのメモリ内に格納された第２の共有シード値及び少なくとも１つのインデックス値に適用される暗号学的にセキュアなＰＲＮＧを使用して、第３の複数のデータビットを生成することと、第３のノードにおけるコントローラ及びトランシーバにより、共有通信媒体を介して第３の複数のデータビットにおける各ビットを、共有通信媒体に接続された第４のノードからの第４の複数のデータビットの送信と同時に送信し、この第４の複数のデータビットを、第３のノードにおけるトランシーバにより受信することと、第３のノードにおけるコントローラにより、第３のノード及び第４のノードにより同時に送信される第４の複数のデータビットの論理的補数である第３の複数のデータビットの一部分を使用して、第４のノードによる第２の共有秘密データを同定することと、第３のノードにおけるコントローラにより、第２の共有秘密データに適用される暗号学的にセキュアな一方向性関数を使用して、第３のノードのメモリ内に第３の共有シード値を生成し、この第３の共有シード値を第３のノードのメモリ内に格納することと、第３のノードにおけるコントローラにより、第２の共有秘密データに適用される鍵生成関数を使用して、第３のノードのメモリ内に第２の共有秘密暗号化鍵を生成し、この第２の共有秘密暗号化鍵により、第３のノードのメモリ内の第１の共有秘密暗号化鍵を置き換えることと、を含む。
【００２２】
さらなる実施形態において、この方法は、第１のノード、第２のノード、第３のノード及び第４のノードを含むグループを第３のノードが離れたことに応答し、第２のノードにおけるコントローラにより、更新された第１の共有シード値及び少なくとも１つのインデックス値に適用される暗号学的にセキュアなＰＲＮＧを使用して、第５の複数のデータビットを生成することと、第１のノード、第２のノード、第３のノード及び第４のノードを含むグループを第３のノードが離れたことに応答し、第２のノードにおけるコントローラ及びトランシーバにより、共有通信媒体を介して第５の複数のデータビットにおける各ビットを、共有通信媒体に接続された第４のノードからの第６の複数のデータビットの送信と同時に送信し、この第６の複数のデータビットを、第２のノードにおけるトランシーバにより受信することと、第２のノードにおけるコントローラにより、第２のノード及び第４のノードにより同時に送信される第６の複数のデータビットの論理的補数である第５の複数のデータビットの一部分を使用して、第４のノードによる第３の共有秘密データを同定することと、第２のノードにおけるコントローラにより、第３の共有秘密データに適用される暗号学的にセキュアな一方向性関数を使用して、更新された第２の共有シード値を生成し、この更新された第２の共有シード値を第２のノードのメモリ内に格納することと、第２のノードにおけるコントローラにより、第３の共有秘密データに適用される鍵生成関数を使用して、第２のノードのメモリ内に第３の共有秘密暗号化鍵を生成し、第３のノードとではなく、第１のノードと第２のノードと第４のノードとの間で、共有通信媒体を介して暗号化通信を可能にすることと、を含む。
【００２３】
さらなる実施形態において、この方法は、第１のノード、第２のノード、第３のノード及び第４のノードを含むグループを第３のノードが離れたことに応答し、第１のノードにおけるコントローラにより、更新された第１の共有シード値及び少なくとも１つのインデックス値に基づき、暗号学的にセキュアなＰＲＮＧを使用して、第５の複数のデータビットを生成することと、第１のノードにおけるコントローラにより、第５の複数のデータビットに基づき、さらに第１のノードにおけるトランシーバを使用して第２のノード及び第４のノードの送信を受信することにより、第３の共有秘密データを同定して、第６の複数のデータビットの論理的補数である第５の複数のデータビットの一部分を同定することと、第１のノードにおけるコントローラにより、第３の共有秘密データに適用される暗号学的にセキュアな一方向性関数を使用して、更新された第２の共有シード値を生成し、この更新された第２の共有シード値を第１のノードのメモリ内に格納することと、第１のノードにおけるコントローラにより、第３の共有秘密データに適用される鍵生成関数を使用して、第１のノードのメモリ内に第３の共有秘密暗号化鍵を生成し、第３のノードとではなく、第１のノードと第２のノードと第４のノードとの間で、共有通信媒体を介して暗号化通信を可能にすることと、を含む。
【００２４】
さらなる実施形態において、この方法の暗号学的にセキュアな一方向性関数は、暗号学的ハッシュ関数である。
【００２５】
さらなる実施形態において、この方法の鍵生成関数は、暗号学的にセキュアなＰＲＮＧである。
【００２６】
この方法のさらなる実施形態において、第２のノードにおけるトランシーバは、第１の複数のデータビットにおける各ビットを、ＣＡＮバスの共有通信媒体を介して送信する。
【図面の簡単な説明】
【００２７】
【図１】非セキュアな共有通信媒体を使用する通信システムを示す概略図である。
【図２】図１のシステムにおける２つのノードのために、前方秘匿性を伴ってセキュアな共有秘密暗号化鍵を生成するための１つのラウンドの１つのプロセスを示すブロック図である。
【図３】図１のシステムにおける３つ以上のノードのために、前方秘匿性を伴ってセキュアな共有秘密暗号化鍵を生成するための１つのプロセスを示すブロック図である。
【図４】図１のシステムにおいて新たな共有秘密暗号化鍵を生成するインタラクティブな鍵再生成プロセスのための１つのプロセスを示すブロック図である。
【図５】図１のシステムにおいて秘密暗号化鍵を共有するノードのグループから１つのノードを取り除くプロセスを示すブロック図である。
【図６】図１のシステムにおいて新たな共有秘密暗号化鍵を生成する非インタラクティブな鍵再生成プロセスのための１つのプロセスを示すブロック図である。
【発明を実施するための形態】
【００２８】
詳細な説明
次に、本明細書において開示する実施形態の原理を理解し易くする目的で、図面及び以下に記載された明細書中の説明について言及する。この参照によっても、保護対象の範囲に対する限定を意図するものではない。本開示には、例示した実施形態に対するあらゆる代案や変更も含まれ、また、本開示が属する分野の当業者であれば通常想定するであろう開示された実施形態の原理のさらなる応用も含まれる。
【００２９】
本明細書においては、用語「ビット」とは、一般的に文中では「０」又は「１」として表現される２つの離散値のうちの１つを有することができるバイナリ値のことである。通信システムは、種々の電圧レベル、位相又は他の信号特性を有する信号を生成し、それらによってデータの伝送中、１つのバイナリビットの２つの値が表現される。当該分野においてよく知られているように、ディジタルデータは、数字、文字又は他のデータ形態を表現可能な一連の１つ又は複数のビットを含み、特に複数のビットから成るセットによって、暗号化鍵を形成することができる。本明細書においては、バイナリ値に適用される「論理的補数」又は「反転」という用語は置き換え可能であり、バイナリデータの各ビットの値を変化させるデータセット又は演算のことである（例えば、バイナリシーケンス「１０１」は「０１０」の論理的補数である）。あとで詳しく説明するように、セキュアな鍵合意のためのプロトコルは、互いに論理的補数である共有鍵のための対応するビットから成るセットを、それぞれ異なるノードに託す。選択されたノードのセットは、それらのノードすべてが同一の共有鍵を有するように反転演算を実施する。
【００３０】
本明細書においては、用語「鍵」又は「暗号化鍵」とは、データの暗号化及び復号を含む暗号化のオペレーションを実施するために、及び、送信されたデータの認証のために、通信ネットワーク内の２つ以上のノードが使用するビットシーケンスのことである。「共有鍵」とは、互いに通信する２つ以上のノードに既知である鍵のことであるが、共有鍵は、それ以外は攻撃者を含め第三者には既知でない。本明細書において説明する方法及びシステムによって、通信ネットワーク内の２つ以上のノードが共有鍵を生成及び更新して、前方秘匿性をもたらすことができ、これによって、攻撃者が以降の通信ラウンドのときの共有鍵を手に入れる事態が発生したときに、その攻撃者が以前の通信ラウンドのときの過去の共有鍵へのアクセスを得ることができないようにする。
【００３１】
本明細書においては、用語「共有通信媒体」とは、以下のような物理的なネットワークコネクション及びネットワーク通信プロトコルのことであり、即ち、これによれば、単一のノードからのどのような送信も共有通信媒体に接続された他のすべてのノードにより受信される、というようにして、複数のノードがデータを送信及び受信する。共有通信媒体の場合、２つ以上のノードがデータを同時に送信することができる。共有通信媒体は、「非セキュアな」又は「信頼できない」通信チャネルであるとみなされる。その理由は、攻撃者は、共有通信媒体を介して発生するありとあらゆる通信をモニタリングする能力を備えているものとされるからである。
【００３２】
共有通信媒体の２つの非限定的な例には、コントローラエリアネットワークバス（ＣＡＮバス）のネットワーク通信バス及びプロトコル並びにＩ２Ｃバスが含まれる。これらの実施形態の双方において、共有通信媒体に通信可能に接続されたすべてのノードは、特定のノードによる受け取りが意図されていない信号を含め、通信媒体を介して送信されるすべての信号を観察することができる。あとでさらに詳しく説明するように、各ノードはコンピューティングデバイスであって、このデバイスは、１つ又は複数の付加的なノードへの共有通信媒体を介した信号の送信及び受信の双方のために構成されたトランシーバを含む。
【００３３】
ＣＡＮバスシステムは信号のために差分電圧を使用し、これによれば、２つのノードは、論理値０（ハイレベル電圧）及び論理値１（ローレベル電圧）を同時に送信し、これらのノードのうち一方だけが、ＣＡＮＨ導体及びＣＡＮＬ導体上において電圧差の変化を生じさせる。大部分のＣＡＮの実施形態の場合、ＣＡＮＨ導体及びＣＡＮＬ導体の双方は、デフォルトで予め定められた電圧レベル（例えば、２．５Ｖ）となるように駆動され、ＣＡＮＨ及びＣＡＮＬ上の電圧間の差がゼロであるならば、又は、ゼロから予め定められた動作閾値内であるならば、送信は「リセッシブ」であると言われ、これは論理値１に対応し、ＣＡＮバスに接続されたノードは、ゼロ又はローレベルの電圧差に基づき論理値１を検出する。しかしながら、あるノードが論理値０を送信するならば、そのノードはＣＡＮＨ導体を、２．５Ｖを上回るより高い電圧レベルとなるように駆動し、ＣＡＮＬワイヤを２．５Ｖを下回るより低い電圧レベルとなるように駆動する。ＣＡＮＨ導体とＣＡＮＬ導体との間の電圧差は、ＣＡＮバスに接続された他のノードによって容易に検出され、これによって、論理値１の信号と論理値０の信号とが検出される。
【００３４】
本明細書においては、用語「暗号学的にセキュアな一方向性関数」又はもっと簡単には「一方向性関数」とは、コンピューティングデバイスにより実行される計算上の関数の１つのタイプのことであり、この関数によって、所定の入力値に対し出力値を生成する計算上効率的なプロセスがもたらされるが、この場合、入力値が十分に広い範囲の可能な入力からランダムに選択されたものとするならば、出力値が与えられたときに元の入力値を導出する逆の演算は計算上、実行不可能である。暗号学的にセキュアな一方向性関数によれば、多項式で束縛された攻撃者は、元の入力を同定するために、より広い範囲の可能な入力にわたり計算上不可能な個数の「総当たり」による一方向性関数の演算を実施しなければならない。本明細書において説明する一方向性関数は、ｙ＝ｇ（γ）の記法を使用し、ここで、ｙは一方向性関数ｇの出力であり、γは一方向性関数ｇの入力である。暗号学的にセキュアな一方向性関数は決定論的であるので、各々一方向性関数ｇを単一の入力γに適用する１つ又は複数のノードによって、首尾一貫した出力値ｙを再生成することができる。暗号学的にセキュアな一方向性関数ｇの例には、ＳＨＡ−２５６及びＳＨＡ−３の暗号学的ハッシュ関数などの暗号学的ハッシュ関数が含まれる。
【００３５】
本明細書においては、用語「暗号学的にセキュアな疑似乱数関数」又はもっと簡単には「疑似乱数関数」（ＰＲＮＧ）とは、コンピューティングデバイスにより実行される計算上の関数の１つのタイプのことであり、この関数は、暗号学的にセキュアなＰＲＮＧに２つの入力値ｋ及びｉｎｄが供給されたときに、多項式で束縛された攻撃者には乱数値とは区別がつかない出力を生成し、ここで、ｋはそれ自体、攻撃者には事前に既知でないランダムに又は一見ランダムに選択された値であり、ｉｎｄを、あとでさらに詳しく説明するランダムではないインデックス値を含む何らかの任意の値とすることができる。暗号学的にセキュアなＰＲＮＧ関数ｆは、数学的にはｙ＝ｆ（ｋ，ｉｎｄ）として記述される。ｋの値を、事前に生成された暗号化鍵値、ランダムに生成されたデータセット、又は、上述の記載で説明した暗号学的にセキュアな一方向性関数の出力とすることができる。暗号学的にセキュアなＰＲＮＧによって、以下のような複数の出力の生成が可能となる。即ち、それらの出力は、それぞれ異なるインデックス値ｉｎｄを用いることによって、単一のシード値ｋに対する真にランダムな出力値とは区別がつかず、この場合、たとえｉｎｄの値が攻撃者に既知であるとしても、攻撃者にｋの値が明らかになることはない。暗号学的にセキュアなＰＲＮＧは決定論的であるので、シード値ｋとインデックス値ｉｎｄとを用いることによって、同様のランダムな出力を再生成することができる。本明細書において説明する暗号学的にセキュアなＰＲＮＧは、暗号学的にセキュアな一方向性関数のタイプでもあるが、暗号学的にセキュアな一方向性関数がすべて、暗号学的にセキュアなＰＲＮＧというわけではない。疑似乱数関数の例は、鍵付ハッシュによるメッセージ認証コード（ＨＭＡＣ）関数であり、これには、ＨＭＡＣ−ＳＨＡ２５６、又は、先進暗号化システム（ＡＥＳ）のブロック暗号実装などのブロック暗号が含まれる。ＨＭＡＣ関数は、秘密鍵ｋを共有する関与者によるメッセージ認証の分野において一般的に知られているが（ここではインデックスｉｎｄはメッセージ）、本明細書において説明する実施形態の場合、ＨＭＡＣ関数は、そうではなくＰＲＮＧの実施形態であり、データの認証のためには使用されない。
【００３６】
本明細書においては、用語「鍵生成関数」Ｋとは、入力値が与えられたときに共有暗号化鍵を生成可能な関数のことである。鍵生成関数Ｋは、他のタイプの一方向性関数であって、この関数は、攻撃者に共有暗号化鍵の出力値が与えられても元の入力を明らかにはしない。本明細書において説明する一部の実施形態においては、暗号学的にセキュアなＰＲＮＧ関数ｆが鍵生成関数Ｋとしても用いられるけれども、他の鍵生成関数も同様に使用される。
【００３７】
図１には、複数のコンピューティングデバイスを含むシステム１００が示されており、これらのコンピューティングデバイスは「ノード」と称され、非セキュアな共有通信媒体を使用して互いに通信を行う。システム１００は、複数のノード１０４Ａ、１０４Ｂ、１０４Ｃ及び１０４Ｄまでを含み、これらのノードは共有通信媒体１０２に各々通信可能に接続されている。図１には、４つのノード１０４Ａ乃至１０４Ｄが例示目的において示されているけれども、システム１００の他の実施形態は、少なくとも２つのノード又は５つ以上のより多い個数のノードを含む。図１の例示的な実施形態の場合、システム１００はＣＡＮバスを使用し、共有通信媒体１０２によってＣＡＮＨ電気導体及びＣＡＮＬ電気導体が実装されているけれども、選択的な実施形態は、接続されたすべてのノードが共有通信媒体を介して送信される信号を観察できるようにする、共有通信媒体の他の実施形態を用いることができる。図１には攻撃者１５０も示されている。攻撃者１５０はシステム１００の一部ではないけれども、攻撃者１５０は、共有通信媒体１０２を介して発生するすべての通信を観察することができるものとする。これに加えて、一部の例においては、攻撃者１５０は、現時点の暗号化鍵及びその他のデータを、ノード１０４Ａ乃至１０４Ｄのうちの１つのメモリから抽出することができる。あとでさらに詳しく説明するように、システム１００は共有鍵合意を実装し、システムを更新して前方秘匿性をもたらし、それによって、たとえ攻撃者１５０が以降に生成された暗号化鍵をリカバリしたとしても、攻撃者１５０が過去の暗号化鍵を使用して暗号化された過去のメッセージを復号できないようにする。
【００３８】
図１には、システム１００のノード１０４Ａがより詳しく示されており、他のノード１０４Ｂ乃至１０４Ｄは、ノード１０４Ａと同様のコンフィギュレーションを含む。ノード１０４Ａはコントローラ１０８を含み、このコントローラ１０８は、ＣＡＮトランシーバ１１２及びメモリ１２０と作動的に接続されている。ＣＡＮトランシーバ１１２は、共有通信媒体１０２におけるＣＡＮＨ導体及びＣＡＮＬ導体に対する接続を含み、これによって、ノード１０４Ａは、他のノード１０４Ｂ乃至１０４Ｄに対してデータを送信及び受信することができる。
【００３９】
ノード１０４Ａにおいて、コントローラ１０８はディジタルロジックデバイスであり、このデバイスは、マイクロプロセッサ、マイクロコントローラ、フィールドプログラマブルゲートアレイ（ＦＰＡＧ）、特定用途向け集積回路（ＡＳＩＣ）及び同類のものなど、１つ又は複数の要素を含む。一部の実施形態によれば、コントローラ１０８は、ハードウェア乱数発生器を含み、あるいは外部のハードウェア乱数発生器又は乱数データを生成するためのエントロピーソースと作動的に接続されている。コントローラ１０８は格納されている命令データ１２４を実行し、この命令データ１２４は、本明細書において説明するオペレーションを実装するためにメモリ１２０に格納されている。特にコントローラ１０８は、共有通信媒体１０２を介してデータを受信及び送信するように、ＣＡＮトランシーバ１１２を制御する。コントローラ１０８は、システム１００内の他のノードとのセキュアデータ交換プロセスを実装して、本明細書において説明する前方秘匿性を伴って暗号化鍵を生成するようにも、ＣＡＮトランシーバ１１２を制御する。
【００４０】
ノード１０４Ａにおいて、メモリ１２０はディジタルデータストレージデバイスであって、これには、ランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリデバイスと、磁気ハードディスク又はソリッドステートデータストレージドライブなどの不揮発性メモリデバイスの双方が含まれる。メモリ１２０は、命令データ１２４、ノードシード値１３０、インデックス値１３２、１つ又は複数の共有シード値１３４、３つ以上のノード間のグループ鍵を共有する実施形態のためのラウンドカウンタ１３６、共有秘密暗号化鍵１４０、及び、疑似乱数データ１４４を格納する。ノードシード値１３０は、真の乱数発生器又は疑似乱数発生器を使用して各ノードにより個別に生成される値であり、ノードシード値１３０は、システム１００内の他のノードと共有されない。共有シード値１３４は、攻撃者１５０が共有シード１３４にアクセスできないようにする通信プロセスを用いて、システム１００内の少なくとも２つのノード間で共有される、１つ又は複数のシード値を含む。あとでさらに詳しく説明するように、オペレーション中、コントローラ１０８は、暗号学的にセキュアな一方向性関数ｇを適用して、ノードシード値１３０及び共有シード１３４の値を、１つのプロセスの一部として更新し、共有秘密暗号化鍵１４０に対する前方秘匿性を維持する。疑似乱数データ１４４は、ノードシード値１３０又は共有シード値１３４のいずれか及びインデックス値１３２に基づき、暗号学的にセキュアなＰＲＮＧを使用して生成される。図１の実施形態の場合、格納された命令データ１２４は、プログラミングされた命令を含み、コントローラ１０８は、この命令を実行して、暗号学的にセキュアな一方向性関数及び暗号学的にセキュアなＰＲＮＧを含め、本明細書において説明する関数を実装する。
【００４１】
ノード１０４Ａにおいて、ＣＡＮトランシーバ１１２は市販の送信機及び受信機であり、これによって、共有通信媒体１０２におけるＣＡＮＨラインとＣＡＮＬラインの双方への電気的な接続が提供される。ＣＡＮトランシーバ１１２は、ノード１０４Ａのオペレーション中、非ドミナントビット（論理値１）及びドミナントビット（論理値０）に対する信号を送出する。ＣＡＮトランシーバ１１２は、ＣＡＮＨライン及びＣＡＮＬラインを介して送信される信号の受信も行い、ＣＡＮトランシーバ１１２がアイドル状態のとき（送信していないとき）、又は、アクティブにデータを送信しているときの双方で、他のノードから送信された信号を検出することができる。一部の実施形態において、ＣＡＮトランシーバ１１２はコントローラ１０８と共に、システム・オン・チップ（ＳｏＣ）コンフィギュレーションにおける単一のソリッドステートデバイスに集積されている。ＣＡＮトランシーバ１１２は、ノード１０４Ａが共有通信媒体１０２を介してデータを送信及び受信できるようにする、より一般的なネットワークインタフェースデバイスの１つの実施形態である。他の実施形態によれば、ネットワークインタフェースデバイスは、Ｉ２Ｃバス用のトランシーバであり、又は、共有通信媒体を介した通信をもたらす他のトランシーバである。
【００４２】
図１の場合、攻撃者１５０は、共有通信媒体１０２におけるＣＡＮＨライン及びＣＡＮＬラインと接続されたさらに他のコンピューティングデバイスである。攻撃者１５０は、共有通信媒体１０２を介して行われるすべての送信をモニタリングすることができるものとされ、このことが、共有通信媒体１０２が本明細書においては「非セキュア」であると呼ばれる理由である。一部の例の場合、攻撃者１５０は、オンボード診断ＩＩ（ＯＢＤ−ＩＩ）コネクタ又は何らかの他の電気的接続といった外部のインタフェースポートを介して、ＣＡＮバスシステムと接続されている。他の例の場合、攻撃者１５０は、ある攻撃者により不正侵入されたシステム１００内の他のノードである。本明細書において説明する実施形態は前方秘匿性をもたらすものであり、これによって、たとえ攻撃者１５０がシステム１００におけるより新しい暗号化鍵に不正にアクセスできたとしても、過去の鍵及びノード１０４Ａ乃至１０４Ｄからの対応する暗号化された送信を攻撃者１５０から保護する。
【００４３】
図２には、共有通信媒体に接続されたノードペアのオペレーションのために、前方秘匿性を備えた秘密データ交換プロセスの１つのラウンドを実施するプロセス２００が示されている。プロセス２００を、２つのノード間で共有暗号化鍵を生成するために、ただ１つのノードペアによって実施することができ、又は、あとで図３においてさらに詳しく説明するように、３つ以上のノードから成るもっと大きなグループにおけるノードペアによって、もっと大きなノードグループ間で共有秘密データを交換し、共有秘密暗号化鍵を生成するためのプロセスの一部として、実施することができる。以下の説明において、１つの機能又はアクションを実施するプロセス２００の説明は、１つの通信システム内の他のコンポーネントと共働してその機能又はアクションを実施するために、格納されたプログラム命令を実行する１つ又は複数のコントローラのオペレーションのことを指している。プロセス２００を、例示目的において図１のシステム１００と関連させて説明する。
【００４４】
プロセス２００が始まると、図１のノード１０４Ａ及び１０４Ｂのような２つのノード各々は、シード値及び初期インデックス値を生成して、ｎ個の共有秘密データビットを交換するためのプロセスを開始する（ブロック２０４）。一例としてノード１０４Ａを用いると、コントローラ１０８は、ハードウェア又はソフトウェアの乱数発生器を使用してランダムなノードシード値１３０を生成し、乱数発生器を暗号学的にセキュアなＰＲＮＧとすることができ、又は、攻撃者１５０によっても予測できない値を生成する他の任意の乱数発生器とすることができる。ノード１０４Ａ乃至１０４Ｄ各々のメモリ１２０内のノードシード値１３０は、システム１００内の他のノードによっても決して直接的には共有されない。あとでさらに詳しく説明するように、これに続く通信ラウンドにおいて、１つのノードは、以前に生成された共有シード値１３４を、少なくとも２つのノードから成る１つのグループが共有秘密データを確立した後の初期値として使用するけれども、１つのグループ内の第１のノードペアにおける各ノードは、共有秘密データの第１のセットを確立するための第１のラウンドについて、固有のノードシード値１３０を使用する。コントローラ１０８は初期インデックス値１３２も生成し、この値をゼロ、他の予め定められた値、又は、ランダムに生成された他のインデックス値とすることができる。ｎ個のビットは、攻撃者１５０が実際的な手法により秘密鍵を推測できてしまうことなく、ノード１０４Ａ及び１０４Ｂが１つの共有秘密暗号化鍵を生成できるようにするために、十分な数値空間をもたらす共有秘密データの量に対応する。ｎの非限定的な例は、６４ビット、８０ビット又は１２８ビットである。
【００４５】
プロセス２００が次に進むと、各ノードは暗号学的にセキュアなＰＲＮＧを使用して、ノードシード値１３０及びインデックス値１３２に基づき、ｌ個の疑似乱数データ１４４のビットから成るセットを生成する（ブロック２０８）。上述のように、暗号学的にセキュアなＰＲＮＧ  ｆは、出力ｙ＝ｆ（ｋ，ｉｎｄ）を生成し、ここで、ｋは、１つのノードが最初に１つのグループに追加されたときであれば、ノードシード値１３０であり、又は、１つのノードが既に１つのグループ内にあり、そのグループに追加された他のノードと通信しているときであれば、複数の共有シード値１３４のうちの１つである。項ｉｎｄは、インデックス値１３２である。コントローラ１０８は、ＰＲＮＧによって１つ又は複数の演算を実施し、ｌビットの長さの疑似乱数データ１４４を有する出力ｙを生成する。一部の実施形態によれば、ＰＲＮＧの各演算は、ｌ＝２ｎ個のデータビットを有する疑似乱数出力ｙを生成する。その理由は、セキュアな手法によりｎ個のデータビットを首尾よく交換するためには、ノードは平均的に２ｎ個のユニークな相補ビットペアの送信を実施しなければならないからであり、ただし、このことはプロセス２００のオペレーションに対する必須要件ではない。上述のように疑似乱数データ１４４の生成によって、たとえ攻撃者が、疑似乱数データ１４４におけるすべてのｌ個のビットを観察できるものとし、かつ、インデックス値１３２を知っていたとしても、元のシード値１３０又は１３４に関するいかなる有用な情報も、攻撃者１５０にもたらされない。
【００４６】
プロセス２００が次に進むと、２つのノードは、疑似乱数データのｌ個のビットを同時に送信することで、非セキュアな共有通信媒体１０２を使用してセキュアなデータ交換を実施する（ブロック２１２）。さらに詳しくは、ノード１０４Ａ及び１０４Ｂ各々におけるコントローラ１０８は、疑似乱数データ１４４の１つのビットを送信し、このビットは、ＣＡＮトランシーバ１１２を使用し共有通信媒体１０２を介した予め定められたビット送信時間にわたり、同時に論理値０又は論理値１である。次いで各ノードは、このビット値の論理的補数を予め定められたビット送信時間にわたり送信する。従って、各ノードは疑似乱数データ１４４の各ビットを、ビット及びこのビットの論理的補数の２つの送信から成るシーケンスとして送信する。各ノードは２つの論理値のうちの一方を送信することができるので、複数のビットから成るセット各々について、４つの可能な同時送信シーケンスが存在する。即ち、１．ノード１０４Ａは０，１シーケンスを送信する一方、ノード１０４Ｂも０，１シーケンスを送信する。２．ノード１０４Ａは０，１シーケンスを送信する一方、ノード１０４Ｂは１，０シーケンスを送信する。３．ノード１０４Ａは１，０シーケンスを送信する一方、ノード１０４Ｂは０，１シーケンスを送信する。さらに４．ノード１０４Ａは１，０シーケンスを送信する一方、ノード１０４Ｂも１，０シーケンスを送信する。
【００４７】
上述のようにＣＡＮバスシステムの場合、共有通信媒体１０２において、論理値０の送信は、ＣＡＮＬラインとＣＡＮＨラインとの間にドミナント電圧を生成する一方、論理値１の送信は、ＣＡＮＬラインとＣＡＮＨラインとの間にリセッシブ電圧を生成する。このため、両方のノードが同一のビット（論理値０又は論理値１）を同時に送信したならば、攻撃者１５０は、ＣＡＮＨライン及びＣＡＮＬラインにおける電圧レベルを測定することによって、両方のノードが同一のビットを送信していることを特定することができる。従って、両方のノードが０，１／０，１シーケンス又は１，０／１，０シーケンスを送信する上述の状況１及び４の場合、２つのノード１０４Ａ及び１０４Ｂはこれらの送信ビットを破棄し、これらは共有秘密データの一部にはならない。しかしながら、状況２及び３において、２つのノード１０４Ａ及び１０４Ｂがビットの論理的補数のシーケンス０，１／１，０又は１，０／０，１を送信する場合であれば、攻撃者１５０は、論理値０又は論理値１を送信したノード１０４Ａ又は１０４Ｂの身元を特定することはできない。しかしながら、送信ノード１０４Ａ及び１０４Ｂ各々におけるコントローラ１０８は、このシーケンスを特定することができる。その理由は、コントローラ１０８は、ＣＡＮトランシーバ１１２により送信されるビットに関する先験的な情報を有しているからであり、ＣＡＮトランシーバ１１２は、ＣＡＮＨライン及びＣＡＮＬラインにおける全体の電圧レベルもセンシングし、これによって、コントローラ１０８は、同時送信シーケンス中に第２のノードにより送信されているビットを検出できるようになる。
【００４８】
プロセス２００中、２つのノード１０４Ａ及び１０４Ｂは、Ｇ個のデータビットをセキュアに交換するために、ブロック２１２の送信を実施し、その際にビットの総数は、平均的に送信の半分が上述のように破棄されることから、送信のランダムな特性ゆえに変化する。Ｇ＜ｎであるときに、２つのノードが疑似乱数データ１４４のＧ個のビットを首尾よく交換し、現在の疑似乱数データセットを使い果たしたならば、即ち、２つのノードが、ｎ個の秘密データビットをセキュアな手法によりまだ交換していなかったならば（例えば、ｎ＝８０ビットに対しＧ＝４８ビット）（ブロック２１６）、プロセス２００はデータ交換を続け、このとき各ノードはインデックス値１３２を変更し（ブロック２２０）、各ノードは、変更されたインデックス値１３２及び同一のシード値１３４を用いて、疑似乱数データ１４４から成る新たなセットを再生成し（ブロック２０８）、２つのノードは、新たに生成された疑似乱数データを用いて、同時送信プロセスを再び実施する（ブロック２１２）。１つの実施形態によれば、各ノードは、インデックス値１３２を１だけ又は他の予め定められた値だけインクリメントして、変更されたインデックスを生成し、これによって、暗号学的にセキュアなＰＲＮＧは新たな疑似乱数データ１４４を生成することができる。
【００４９】
プロセス２００は上述のように、２つのノード１０４Ａ及び１０４Ｂが、ｎ個の共有秘密データビットを交換してしまうまで、継続する（ブロック２１６）。上述のプロセスは、両方のノードが、互いに論理的補数である疑似ランダムに生成されたビットから成るセットを送信したときのみ（例えば、ノード１０４Ａが１つの０を送信する一方、ノード１０４Ｂが１つの１を送信したときのみ、また、その逆に送信したときのみ）、データビットを首尾よく交換するので、取り決めに従い第２のノード１０４Ｂは、第１のノード１０４Ａと首尾一貫した共有秘密データセットを生成するために、論理ビットの反転を実施する（例えば、ビット「０１１０」が「１００１」に反転され）、ただし、他の実施形態においては、第１のノード１０４Ａが論理ビットの反転を実施する。
【００５０】
プロセス２００の１つの実施形態によれば、ノード１０４Ａ及び１０４Ｂの双方は、暗号学的にセキュアな一方向性関数を使用して共有シード値１３４の新たな値を生成するためのベースとして、ｎ個の共有データビットを使用し、疑似乱数データ１４４を生成するためのベースとしてノードシード値１３０を使用したノードのうちのいずれか一方又は両方が、暗号学的にセキュアな一方向性関数をノードシード値１３０に適用して、更新されたノードシード値を生成する（ブロック２２４）。ノード１０４Ａも１０４Ｂもセキュアなデータ交換の以前のラウンドには関与していなかった場合に、２つのノード１０４Ａと１０４Ｂとの間で秘密データを交換する第１のラウンドにおいて、ノード１０４Ａ及び１０４Ｂの双方におけるコントローラ１０８は、暗号学的にセキュアな一方向性関数をｎ個の共有ビットに適用して、メモリ１２０内に共有シード値１３４と共に格納される新たなシード値ｓを生成する。即ち、ｎ個の共有データビットについてｓ＝ｇ（ｓｈａｒｅｄ  ｂｉｔｓ）。プロセス２００において、少なくとも一方のノードが、場合によっては両方のノードが、疑似乱数データ１４４の生成に対する元のベースとしてノードシード値１３０を使用し、コントローラ１０８は、暗号学的にセキュアな一方向性関数をノードシード値１３０に適用して、更新されたノードシード値１３０を生成し、このノードシード値１３０によってメモリ１２０内の元のノードシード値１３０が置き換えられる。即ち、Ｓｎｏｄｅ＝ｇ（Ｓｎｏｄｅ）。疑似乱数データ１４４の生成のために以前に生成された共有シード値１３４をノードが使用しない状況において、各ノードは、プロセス２００の付加的な反復のために更新されたノードシード値１３０を使用する。さらなる通信ラウンドにおいて、ノードは、疑似乱数データ１４４又は新たな共有秘密暗号化鍵１４０を生成するためのベースとして、共有シード値１３４を使用し、このシード値１３４を共有する各ノードにおけるコントローラ１０８は、疑似乱数データ１４４の他の交換が完了した後、暗号学的にセキュアな一方向性関数ｇを共有シード値１３４に適用して、共有シード値１３４を更新し、これによって、古い共有シード値１３４がメモリ１２０内に格納されない、ということが保証される。本明細書においては、ノードシード値１３０又は共有シード値１３４について「更新する」又は「更新された値」を生成するということに対する言及は、過去のノードシード値１３０又は共有シード値１３４を削除し、古い値をそれよりも新しい更新された値で置き換えるプロセスのことであり、この更新された値は、システム１００において使用される一方向性関数の特性ゆえに、過去の値を導出するために使用することはできない。過去のノードシード値１３０又は共有シード値１３４をノード１０４Ａ又はシステム１００内の他のノードのメモリ１２０から削除することによって、過去の暗号化メッセージを保護するための前方秘匿性がもたらされる。それというのも、攻撃者１５０は、メモリ１２０から削除されてしまっている過去の共有秘密暗号化鍵を生成するために使用された、削除済みのシード値セットをリカバリすることができないからである。
【００５１】
プロセス２００中、２つのノードだけが最終グループ内にあるならば、単一の共有シードだけしか存在しないが、３つ以上のノードを含む実施形態の場合には、あとでさらに詳しく説明するように、ｎ個のデータビットを交換するノードペアと、以前にグループ内にいた他の何らかのノードとの間において、各シードが共有される。ノードペア間の秘密データ交換の付加的なラウンド中に付加的なノードが追加されたならば、各ラウンドのための共有シード値１３４が、新たなラウンドカウンタ値１３６に関連づけられて個別に格納され、これによって、シード値を受信したノードにおいて一連のラウンドを介して生成される共有シード値１３４の記録が維持される。
【００５２】
プロセス２００中、このプロセス２００における２つのノードが、グループ内の最終ノードペアであるならば（ブロック２２８）、それらのノード各々が、ｎ個の共有秘密データビットに鍵生成関数を適用することによって、共有秘密暗号化鍵１４０も生成する（ブロック２３２）。上述の例の場合、ノード１０４Ａ及び１０４Ｂが、２つのノードのグループ内の最終のただ１つのノードペアであり、各ノードにおけるコントローラ１０８は、暗号学的にセキュアなＰＲＮＧなどの鍵生成関数をｎ個の共有秘密データビットに適用して、共有秘密暗号化鍵１４０を生成する。新たに生成された共有秘密暗号化鍵１４０によって、もし存在するならば、以前の暗号化通信セッションのときのメモリ１２０内の過去の共有秘密暗号化鍵１４０が置き換えられ、これによって、共有秘密暗号化鍵１４０を共有する２つ以上のノード間の過去の暗号化通信セッションのときの暗号化データに対する前方秘匿性がもたらされる。共有秘密シード値１３４の生成、ノードシード値１３０の更新、及び、もし生成されるならば共有秘密暗号化鍵１４０の生成を、ペアにおける２つのノードがｎ個の共有秘密データビットを交換した時点で、任意の順序で又は同時に生じさせることができる。これに加えて、ペアにおけるノード各々におけるコントローラ１０８は、もし生成されるならば共有秘密シード値１３４及び共有秘密暗号化鍵１４０の生成に応じて、メモリ１２０からｎ個の共有秘密データビットを削除する。
【００５３】
上述のように、１つの通信ラウンドに対する共有シード値１３４は、ｎ個の共有秘密ビットに適用される暗号学的にセキュアな一方向性関数を使用して生成され（ｓ＝ｇ（ｓｈａｒｅｄ  ｂｉｔｓ））、他方、共有秘密暗号化鍵１４０は、ｎ個の共有秘密ビットに適用される暗号学的にセキュアなＰＲＮＧを使用して生成される（ｋ＝ｆ（ｓｈａｒｅｄ  ｂｉｔｓ、０））。従って、共有シード値１３４及び共有秘密暗号化鍵１４０が双方共に、同様のｎ個の共有秘密データビットに基づき生成される一方、シード値と共有秘密暗号化鍵とは互いに異なっており、攻撃者１５０は、共有シード値１３４が与えられても共有秘密暗号化鍵１４０を再生成できないし、又は、その逆も不可能である。さらに、ノード各々におけるコントローラ１０８はｎ個の共有秘密データビットを削除し、疑似乱数データ１４４の生成のためにノードシード値１３０を使用するいずれのノードも、暗号学的にセキュアな一方向性関数を使用してノードシード値１３０を更新する。よって、秘密暗号化鍵１４０がプロセス２００の後続の反復中にメモリ１２０内でそれよりも新しい鍵によって置き換えられた時点で、各ノードのメモリ１２０には、秘密暗号化鍵１４０を計算するために攻撃者が使用できるいかなる情報も含まれず、これによって、システム１００に対する前方秘匿性がもたらされる。
【００５４】
プロセス２００の完了後、２つ以上のノードが共有秘密暗号化鍵１４０を使用し、他の点においては、当該分野に周知の１つ又は複数の対称鍵暗号化方式を用いて、暗号化通信セッションを実施する。例えば、共有秘密暗号化鍵１４０を様々なブロック暗号又はストリーム暗号による暗号化方式と共に使用することができ、これらの暗号化方式には、限定するわけではないがＡＥＳが含まれ、これによって、各ノードは、共有通信媒体１０２を介して送信するためにメッセージを暗号化することができ、かつ、共有通信媒体１０２から受信した他のノードからのメッセージを復号することができる一方、攻撃者１５０は暗号化されたデータを観察することしかできず、元のメッセージの平文の内容を事実上、リカバリすることはできない。共有秘密鍵１４０は、単一の暗号化通信セッションのために使用され、この場合、ノード１０４Ａ乃至１０４Ｂと、暗号化通信セッション中に共有秘密暗号化鍵１４０を使用する他の何らかのノードとの間で交換されるデータの量を、システム１００のセキュリティの制約と、暗号化鍵１４０を使用する暗号化方式の暗号化特性とに、依存させることができる。一部の実施形態の場合、システム１００内のノードは、予め定められた個数の暗号化送信又は予め定められた期間後、存在する暗号化通信セッションが満了すると、新たな共有暗号化鍵を生成する。暗号化通信セッション後、２つのノード１０４Ａ及び１０４Ｂが暗号化鍵を更新して前方秘匿性を維持し、これによって、あとでさらに詳しく説明するように、過去の共有鍵と暗号化データとが保護される。
【００５５】
図２のプロセス２００は、共有秘密データを生成する単一の通信ラウンドを実施するためのシステム１００内の２つのノードから成るペアと、１つの共有秘密暗号化鍵を生成するためにプロセス２００をやはり実施することができる２つのノードを含むグループのオペレーションを説明している。一部の例の場合、３つ以上のノードから成るグループが、前方秘匿性を伴って１つの共有秘密暗号化鍵を用いて通信する必要がある。これらの実施形態の場合、前方秘匿性をもたらしながら、３つ以上のノード間で共有秘密暗号化鍵を確立するために、複数の通信ラウンド（グループ内のＮ個のノードについてＮ−１回のラウンド）が発生する。図３には、１つの共有通信媒体に接続された３つ以上のノードから成るグループによる、前方秘匿性を備えたセキュアな共有秘密暗号化鍵合意手順のためのプロセス３００が示されている。以下の説明において、１つの機能又はアクションを実施するプロセス３００の説明は、１つの通信システム内の他のコンポーネントと共働してその機能又はアクションを実施するために、格納されたプログラム命令を実行する１つ又は複数のコントローラのオペレーションのことを指している。プロセス３００は、上述の図２のプロセス２００の要素を使用し、３つ以上のノードから成るグループのために、前方秘匿性を伴って効率的な暗号化鍵生成プロセスを可能にする付加的なオペレーションを含む。プロセス３００を、例示目的において図１のシステム１００と関連させて説明する。以下で説明する例の場合、ノード１０４Ａ、１０４Ｂ及び１０４Ｃが、攻撃者１５０又はシステム１００内の他のノードには利用できない１つの共通の共有暗号化鍵を生成する。
【００５６】
プロセス３００が始まると、１つの暗号化鍵を共有するグループ内のＮ個のノード各々（例えば、ノード１０４Ａ、１０４Ｂ、１０４Ｃ）が、初期ノードシード値１３０、インデックス値１３２、及び、ラウンドカウンタ１３６を生成する（ブロック３０４）。一例としてノード１０４Ａを用いると、コントローラ１０８は、ハードウェア又はソフトウェアの乱数発生器を使用してランダムなノードシード値１３０を生成し、乱数発生器を暗号学的にセキュアなＰＲＮＧとすることができ、又は、攻撃者１５０によっても予測できない値を生成する他の任意の乱数発生器とすることができる。コントローラ１０８は初期インデックス値１３２も生成し、この値を、ゼロ、他の予め定められた値、又は、ランダムに生成された他のインデックス値とすることができる。ｎ個のビットは、攻撃者が実際的な手法により秘密鍵を推測できてしまうことなく、ノード１０４Ａ、１０４Ｂ及び１０４Ｃが１つの共有秘密暗号化鍵を生成できるようにするために、十分な数値空間をもたらす共有秘密データの量に対応する。プロセス２００と同様に、ｎの非限定的な例は６４ビット、８０ビット又は１２８ビットである。ラウンドカウンタ１３６は、ゼロ又は他の予め定められた数値に初期化され、プロセス３００において、発生したノード間のペアごとのデータ交換のラウンドの経過を追うために、また、シーケンスにおける以前のノードペアが、以前のラウンドのときの１つ又は複数のシード値１３４をメモリ１２０内に格納していることから、ラウンドごとに発生する共有シード値１３４を追跡するために、用いられる。ラウンドカウンタ１３６は、グループの共有秘密暗号化鍵を生成するために、プロセス３００中にノードのグループが交換する１つ又は複数のシード値を追跡する。
【００５７】
プロセス３００が次に進むと、第１のノードペア（この例ではノード１０４Ａ及び１０４Ｂ）が、セキュアな手法により共有秘密データを確立する（ブロック３０８）。ノード１０４Ａ及び１０４Ｂは、図２のブロック２０８乃至２２４の処理を参照しながら上述の記載で説明した同様の手法により、疑似乱数秘密データを交換し、これには疑似乱数ビット及びこれに続くそれらのビットの論理的補数の同時送信が含まれ、これによって、非セキュアな共有通信媒体１０２を介したノード１０４Ａと１０４Ｂとの間のセキュアなデータ交換が可能となる。１つの実施形態によれば、第１のノードペアは第１のラウンドの共有シード値１３４を確立し、これは暗号学的にセキュアな一方向性関数をｎ個の共有データビットに適用することによって、プロセス３００の第１のラウンドに関連づけられる（ブロック３１２）。例えば、ノード１０４Ａにおいて、コントローラ１０８はシード値
【数１】
0006903223.tif 000002
を生成する。同様にノード１０４Ｂは、
【数２】
0006903223.tif 000003
を生成し、ノード１０４Ａ及び１０４Ｂの双方は同一の共有シード値１３４を生成し、このシード値１３４は、メモリ１２０内でラウンドカウンタ値１３６と関連づけられる（
【数３】
0006903223.tif 000004
）。
【数４】
0006903223.tif 000005
の表記は、もっと一般的には
【数５】
0006903223.tif 000006
として表現され、この場合、各シード値は、シード値を生成したノードのｎｏｄｅ  ｉｄと、ラウンドカウンタ１３６に対応する数値ｒｏｕｎｄの双方に関連づけられる。ブロック３１２の処理において一方向性関数を使用することによって、両方のノード１０４Ａと１０４Ｂとに首尾一貫した共有シード値がもたらされ、これによって、後続の秘密データ交換オペレーションにおいて第１のノードになる第２のノード１０４Ｂが、ノード１０４Ａとの以前のデータ交換のときのｎ個の共有データビットを再送信しない、ということが保証される。他の実施形態において、ノード１０４Ａ及び１０４Ｂ、並びに、グループ内の最終ノードペアを除く他のノードペアは、共有シード値１３４のために直接、ｎ個の共有秘密データビットを使用し、他のノードを追加するための今後のラウンドにおいて必要とされる場合にだけ、又は、以前に生成された共有シード値１３４をＰＲＮＧへの入力として使用して、付加的な疑似乱数データ１４４を生成した後、共有シード値１３４を更新する他の今後のオペレーションにおいて必要とされる場合にだけ、暗号学的にセキュアな一方向性関数を適用する。この実施形態の場合、ｎ個の共有秘密データビットを、付加的な通信のベースとして使用することができる。それというのも、ノード１０４Ａ及び１０４Ｂは、ｎ個の共有秘密データビットを明らかにはしない他の一方向性関数である暗号学的にセキュアなＰＲＮＧを使用して、疑似乱数データ１４４を生成するからである。しかしながら、最終共有シード値の生成を観察するグループ内のノードすべてと共有される、グループ内の少なくとも最終ノードペアのための共有シード値１３４は、一方向性関数（
【数６】
0006903223.tif 000007
）を使用し、ここで、Ｎ−ｌは、最終ラウンドを表す。それというのも、最終ラウンドのときの共有ビットは、共有シード１３４と共有秘密暗号化鍵１４０の双方に対するベースとして用いられるからである。これに加えて、上述のように、ノード１０４Ａ及び１０４Ｂの各々は、暗号学的にセキュアな一方向性関数をノードシード値１３０に適用し、これはシステム１００内の他のノードとは決して共有されず、これによって、プロセス３００の後続の反復に対し前方秘匿性がもたらされる。
【００５８】
プロセス３００が次に進むと、ノード各々はラウンドカウンタ１３６を更新し、以前のラウンドのときの第２のノードが、次のラウンドにおいては第１のノードになる（ブロック３１６）。図１の例の場合、第１のラウンドのときの第２のノード１０４Ｂが、次のラウンドにおいては第１のノードになり、このノードはノード１０４Ｃを第２のラウンドにおける第２のノードとして受け入れる。以前のラウンドのときの「第２の」ノードを次のラウンドにおいて第１のノードとして使用するという説明は、例示目的のために約束事として用いられる。もっと広く言えば、次のラウンドにおいて「第１の」ノードになる「第２の」ノードを、最新のラウンドに関与した２つのノードのうちのいずれかとすることができ、例えば、図１の例であればノード１０４Ａと１０４Ｂのうちのいずれかである。
【００５９】
プロセス３００が次に進むと、次のノードペア（例えば、ノード１０４Ｂ及び１０４Ｃ）は、プロセス３００の次のラウンドのための他の共有秘密シードを確立し、この場合、第１のノード（この例においてはノード１０４Ｂ）は、以前のラウンドのときの共有シードを、暗号学的にセキュアなＰＲＮＧ関数への入力のベースとして用いる（ブロック３２０）。第１のノード１０４Ｂは、予め定められた値（例えば、０）からスタートする、又は、システム１００内のノードすべてに送信される他の数値からスタートするインデックス値１３２（ｉｎｄ）も使用し、その結果、以前のラウンドのときのすべてのノードは、第１のノード１０４Ｂにより使用されるｌ個の疑似乱数データのビット、即ち、
【数７】
0006903223.tif 000008
から成る同様のセットを計算することができる。グループに追加された第２のノード（例えば、ノード１０４Ａと１０４Ｂのグループに追加されたノード１０４Ｃ）におけるコントローラ１０８は、ランダムに生成されたノードシード値１３０を使用して、他のｌ個の疑似乱数データ１４４のビットを生成し、グループに追加された新たなノードにおける疑似乱数データ１４４は、ノード１０４Ｂ及び１０４Ｃが、上述の記載で説明した同時送信プロセスを実施するまで、グループ内に存在するノードにはわからない。かくして、秘密データセットを以前に共有していたノードすべて（例えば、ノード１０４Ａ）は、ＣＡＮトランシーバ１１２を使用して、次のノードペア１０４Ｂと１０４Ｃとの間のｎ個のビットの次の交換を観察することができ、その理由は、以前のグループのときのノードにおけるコントローラ１０８は、第１のノード１０４Ｂにより送信されるデータについて先験的な知識を有しているからであり、共有通信媒体１０２を介したノード１０４Ｂ及び１０４Ｃの同時送信を観察することによって、次のノードペアによりどのビットが破棄され、どのビットが保持されるのかを含め、ｎ個の交換されるビットから成る次のセットを特定することができる。
【００６０】
プロセス３００が次に進むと、次のノードペア及び以前のラウンドに関与したグループ内のノードすべては、暗号学的にセキュアな一方向性関数を使用して、次のラウンドのための共有シード値１３４を確立する（ブロック３２４）。特に、ノード１０４Ｂと１０４Ｃとの間の最新のラウンドのためのｎ個のビットから成るセットが、ノード１０４Ａ乃至１０４Ｃの各々によって共有され、各ノードにおけるコントローラ１０８は、一方向性関数ｇへの入力としてこのｎ個のビットを用いて、次のラウンドのための共有シード値１３４を生成する。上述のように、次のラウンドにおける第２のノード（例えば、ノード１０４Ｃ）も、暗号学的にセキュアな一方向性関数をノードシード値１３０に適用して、ノードシード値１３０を更新する。他のノードをグループに追加するための付加的なラウンドのたびに、１つ又は複数の以前のラウンドに関与したノードすべては、次のラウンドのシード値１３４をラウンドカウンタ１３６に関連づけてメモリ１２０内に格納し、付加的なノード各々がグループに追加されたときに各ラウンドのために使用されたシード値の記録を維持する。上述のように、初期ラウンドのときのノード１０４Ａ及び１０４Ｂは、メモリ１２０内に第１のラウンドのためのラウンドインデックス１３６に関連づけて別個の共有シード値１３４も格納しており、この場合、ラウンドごとのシード値は、個々のラウンドのための共有秘密データに適用される一方向性暗号化関数の出力である（例えば、第１のラウンドにおけるノード１０４Ａ及び１０４Ｂにより共有されたｎ個の共有秘密データビットについて
【数８】
0006903223.tif 000009
である）。しかしながら、新たに追加されたノード１０４Ｃのコントローラ１０８は、ノード１０４Ｃのメモリ１２０内の最新のラウンドインデックス１３６のときの共有シード値１３４だけしか格納せず（例えば、
【数９】
0006903223.tif 000010
）、ノード１０４Ａと１０４Ｂとの間のデータ交換のときに生成された以前の共有シード値を受信しない。あとでさらに詳しく説明するように、ノードのメモリ１２０は、ラウンドカウンタ１３６に関連づけて共有シード値１３４のヒストリを格納しており、これによって、以降の時点でグループからあるノードを取り除くための効率的なプロセスがもたらされる。疑似乱数データ１４４を生成するために第１のノードのためのベースとして用いられた以前のラウンドのときの共有シード値１３４（例えば、ノード１０４Ｂにおける共有シード
【数１０】
0006903223.tif 000011
）について、前のラウンドの共有シード値１３４へのアクセスを有するすべてのノード（例えば、ノード１０４Ａ及び１０４Ｂ）におけるコントローラ１０８は、疑似乱数データ１４４の他の交換が完了した後、暗号学的にセキュアな一方向性関数ｇを前のラウンドの共有シード値１３４に適用して、前のラウンドの共有シード値１３４を更新し、いかなるノードのメモリ１２０にも古い共有シード値１３４が格納されていない、ということを保証する（ノード１０４Ａにおける
【数１１】
0006903223.tif 000012
及びノード１０４Ｂにおける
【数１２】
0006903223.tif 000013
）。
【００６１】
プロセス３００は、グループに加わるどのような付加的なノードについても、ブロック３１６乃至３２４において上述のように付加的なノードの追加を続ける（ブロック３２８）。付加的なノードが存在しなくなった時点で（ブロック３２８）、グループ内のノード各々は、グループ内のノードすべてにより観察されるグループ内の最終ノードペア間の最終ラウンドのときの共有秘密データセットに基づき、共有秘密鍵を生成する（ブロック３３２）。各ノードは、プロセス２００において上述の記載で説明したブロック２３２の処理と同様の手法により、ブロック３３２の処理を実施する。１つの実施形態の場合、ノード各々のコントローラ１０８は、Ｎ−１の番号が振られた最終ラウンドにおいて最終ノードペア（例えば、ノード１０４Ｂ及び１０４Ｃ）間で交換される共有秘密データｓｈａｒｅｄ  ｂｉｔｓｒｏｕｎｄＮ−１に、鍵生成関数を適用する。１つの実施形態の場合、鍵生成関数は暗号学的にセキュアなＰＲＮＧであって、これが共有秘密データｓｈａｒｅｄ  ｂｉｔｓｒｏｕｎｄＮ−１及び予め定められたインデックス値（例えば、０又はノードすべてにより使用される他の値）に適用されて、最終共有秘密暗号化鍵１４０が生成される。グループの各ノードにおけるコントローラ１０８は、出力、即ち、ｋ＝ｆ（ｓｈａｒｅｄ  ｂｉｔｓｒｏｕｎｄＮ−１，０）のすべて又は一部分を、ノード１０４Ａ乃至１０４Ｃ各々の間の第１の暗号化通信セッションのための初期秘密鍵１４０として使用して、第１の共有暗号化鍵１４０を生成する。
【００６２】
グループ内のノードが上述のプロセス３００を実施した後、グループに新たなノードを追加することには、ブロック３１６乃至３２８を参照しながら上述の記載において説明した同様のプロセスを使用して、グループに最も新たに追加されたノード（例えば、ノード１０４Ｃ）を付加的なペアにおける第１のノードとして用いること、及び、ブロック３３２を参照しながら説明したプロセスを使用して、ノードすべてのために新たな共有暗号化鍵を生成すること、が含まれる。例えば、システム１００の場合であれば、ノード１０４Ａ乃至１０４Ｃが共有秘密鍵を生成した後、ノード１０４Ａ乃至１０４Ｃのグループにノード１０４Ｄを追加することができる。ノード１０４Ａ乃至１０４Ｃすべてによりメモリ内に格納されているラウンドカウンタ１３６に関連づけられたノード１０４Ｃにおける最新ラウンドのシード値１３４が、新たなノード１０４Ｄを追加するセキュアなデータ交換プロセスに対し付加的なＰＲＮＧデータを生成するための初期シード値として用いられる。ノード１０４Ａ乃至１０４Ｂはこのとき、第１のラウンド（ノード１０４Ａ乃至１０４Ｂ）、第２のラウンド（ノード１０４Ｂ乃至１０４Ｃ）及び第３のラウンド（ノード１０４Ｃ乃至１０４Ｄ）について、ラウンドカウンタ１３６に関連づけてシード値１３４の複数ラウンドのヒストリを格納している。ノード１０４Ｃは、第２のラウンド（ノード１０４Ｂ乃至１０４Ｃ）及び第３のラウンド（ノード１０４Ｃ乃至１０４Ｄ）のみについて、ラウンドカウンタ１３６に関連づけてシード値１３４を格納している。ノード１０４Ｄは、第３のラウンド（第３のラウンドのノード１０４Ｃ乃至１０４Ｄ）のみについて、ラウンドカウンタ１３６に関連づけてシード値１３４を格納している。ノード１０４Ａ乃至１０４Ｄすべては、ノード１０４Ｃ乃至１０４Ｄ間で交換されるｎ個のデータビットに適用される暗号学的にセキュアなＰＲＮＧを使用して、新たな共有秘密暗号化鍵１４０を生成し、これによって、ノード１０４Ａ乃至１０４Ｃすべてのための共有暗号化鍵が生成される。
【００６３】
３つ以上のノードから成るグループが、図２及び図３のプロセスを実施した後、一部の状況の場合には、グループ内のノードがインタラクティブな鍵再生成プロセスを実施し、このプロセスによって、グループ内のノードすべてのための新たな共有秘密暗号化鍵１４０が生成される。このプロセスはプロセス３００とは異なっており、その理由は、インタラクティブなプロセスにおいて、グループ内のノードの一部は共有通信媒体１０２を介してビットを送信するけれども、３つ以上のノードから成るグループの場合にインタラクティブな鍵再生成プロセスによれば、本来のプロセス３００の場合のように、グループ内のノードすべてがデータを送信しなくてもよいからである。図４には、インタラクティブな鍵再生成プロセス４００が示されている。プロセス４００によれば、グループ内のノードすべてがプロセス３００を反復する必要なく、グループ内のノードすべてが新たな最終ラウンドの共有シードと共有暗号化鍵とを再生成できるようになる。以下の説明において、１つの機能又はアクションを実施するプロセス４００の説明は、１つの通信システム内の他のコンポーネントと共働してその機能又はアクションを実施するために、格納されたプログラム命令を実行する１つ又は複数のコントローラのオペレーションのことを指している。プロセス４００を、例示目的において図１のシステム１００と関連させて説明する。
【００６４】
プロセス４００が始まると、プロセス３００の間にグループに追加された最終ノードペアの第１のノード、及び、最終ノード以外のグループ内の他のノードすべてが、疑似乱数データ１４４から成る新たなセットを生成するためのベースとして、プロセス３００の最終ラウンドのための共有シード値１３４を使用する一方、最終ペアにおける第２のノードは、共有秘密データの他の交換について疑似乱数データ１４４から成る新たなセットを生成するためのベースとして、以前に更新されたノードシード値１３０を使用する（ブロック４０４）。例えば、図１のシステム１００の場合、あるグループが、１０４Ａ乃至１０４Ｂ、１０４Ｂ乃至１０４Ｃ、１０４Ｃ乃至１０４Ｄの順序で、ペアとして追加されたノード１０４Ａ乃至１０４Ｄ各々を含むならば、このときノード１０４Ｃは最終ペアの第１のノードであり、ノード１０４Ｄは最終ペアの第２のノードである。ノード１０４Ａ乃至１０４Ｃ各々におけるコントローラ１０８は、最終ラウンドのシード値
【数１３】
0006903223.tif 000014
を、暗号学的にセキュアなＰＲＮＧへの入力として、予め定められたカウンタ値と共に使用する一方、ノード１０４Ｄにおけるコントローラ１０８は、上述の記載で説明したプロセス３００の最終ラウンドのときに暗号学的にセキュアな一方向性関数を使用して以前に更新されたノードシード値１３０を使用する。かくしてプロセス４００は、インタラクティブな鍵再生成のために暗号学的にセキュアなＰＲＮＧへの入力を使用し、これによって、前方秘匿性がもたらされる。なぜならば、以前のラウンド中に使用された疑似乱数データとは無関係な疑似乱数データをノードが生成するからであり、このことにより以前のラウンドのときの共有秘密暗号化鍵が攻撃者１５０から保護される。
【００６５】
プロセス４００が次に進むと、ノード１０４Ｃ及び１０４Ｄは、プロセス３００において上述の記載で説明したセキュアなデータ交換を実施し、暗号学的にセキュアなＰＲＮＧの出力を入力のシード値及びインデックス値と共に使用して各ノードにおけるコントローラ１０８が生成する疑似乱数データ１４４に基づき、ｎ個のビットを交換する（ブロック４０８）。図３において上述したように、第１のノード１０４Ｃは、他のノード１０４Ａ乃至１０４Ｂに既知の最終ラウンドのシード値１３４を使用し、さらに他のノード１０４Ａ乃至１０４Ｂに事前に既知であるか又はプロセス４００中に他のノード１０４Ａ乃至１０４Ｂに送信されたインデックス値１３２を使用する。ノード１０４Ａ乃至１０４Ｂ各々におけるコントローラ１０８は、ノード１０４Ｃのコントローラ１０８と同様の疑似乱数データを生成し、すべての３つのノードは、最終ノード１０４Ｄとの交換プロセス中、ｎ個のビットから成る同様のセットを受信する。ノード１０４Ｄは、疑似乱数データを生成するためのＰＲＮＧへの入力として以前に使用されていなかったノードシード値１３０を使用するので、新たに交換されるｎ個のビットは、過去のシード値及び暗号化鍵とは関係ない、ノード１０４Ａ乃至１０４Ｄすべてにおける新たな最終ラウンドの共有シード値１３４及び共有秘密暗号化鍵１４０のためのベースを成す。
【００６６】
プロセス４００が次に進むと、グループ内のノード１０４Ａ乃至１０４Ｄ各々は、ｎ個の共有ビットに基づき新たな共有秘密暗号化鍵１４０を生成し、さらに更新されたシード値を生成して、付加的な通信ラウンド中の前方秘匿性をもたらす（ブロック４１２）。グループの各ノードにおけるコントローラ１０８は、１つの実施形態において暗号学的にセキュアなＰＲＮＧからの出力、即ち、ｋ＝ｆ（ｓｈａｒｅｄ  ｂｉｔｓ，０）のすべて又は一部分である鍵生成関数を使用して、次の共有暗号化鍵１４０を生成し、これによって、ノード１０４Ａ乃至１０４Ｄ各々の間の暗号化通信の次のラウンドのために更新された秘密暗号化鍵１４０を生成する。共有秘密暗号化鍵１４０に対する更新プロセスの一部分として、ノード１０４Ａ乃至１０４Ｄ各々におけるコントローラ１０８は、プロセス４００の実施よりも前に使用された過去の共有暗号化鍵１４０の削除も行い、これによって、ノード１０４Ａ乃至１０４Ｄ間の以前の暗号化された通信セッションに対する前方秘匿性がもたらされる。ノード各々におけるコントローラ１０８は、付加的な通信ラウンドに対する前方秘匿性を維持するために、ｎ個の共有ビットから成るセットに適用される暗号学的にセキュアな一方向性関数、即ち、
【数１４】
0006903223.tif 000015
を使用し、最終ラウンドのカウンタ１３６に関連づけて最終ラウンドのシード値１３４の更新も行い、これによって、過去の最終ラウンドの共有シード値１３４が削除されて、以前の暗号化通信セッションに対する前方秘匿性がもたらされる。最終ペアにおける第２のノード（例えば、ノード１０４Ｄ）も、ノードシード値１３０を更新し、即ち、Ｓｎｏｄｅ＝ｇ（Ｓｎｏｄｅ）である。上述のように、プロセス４００によってグループ内のノードすべてが、今後の暗号化通信セッションにおける前方秘匿性のために、新たな共有秘密暗号化鍵及びシードを生成できるようになる一方、ただ１つのノードペアだけが共有通信媒体１０２を介してデータを送信するだけでよい。プロセス４００を、２つのノードしか含まないグループによって実施することもでき、これには、暗号学的にセキュアな一方向性関数を使用して共有シード値１３４を更新する２つのノードについて、前方秘匿性のさらなる利点が伴う。
【００６７】
３つ以上のノードから成るグループがプロセス３００を実施した後、秘密暗号化鍵を共有していた複数のノードから成るグループを１つのノードが離れる可能性がある。図５には、グループ内の残留ノードのためのプロセス５００が示されている。このプロセスは、前方秘匿性をもたらすように、また、メモリ１２０内に共有シード値１３４と共有秘密暗号化鍵１４０とを保持しているものとされている離脱したノードが、グループ内の残留ノード間の今後の暗号化通信を復号できないように、新たな共有暗号化鍵を再生成する。以下の説明において、１つの機能又はアクションを実施するプロセス５００の説明は、１つの通信システム内の他のコンポーネントと共働してその機能又はアクションを実施するために、格納されたプログラム命令を実行する１つ又は複数のコントローラのオペレーションのことを指している。プロセス５００を、例示目的において図１のシステム１００と関連させて説明する。
【００６８】
プロセス５００が始まると、以前に１つの秘密暗号化鍵を共有していた複数のノードから成るグループを１つのノードが離れる（ブロック５０４）。図１の例示的な実施形態の場合、ノード１０４Ａ乃至１０４Ｄから成るグループが１つの秘密暗号化鍵１４０を共有しており、１つのノード１０４Ｃがこのグループを離れる。図１の例の場合、グループは、１０４Ａ乃至１０４Ｂ、１０４Ｂ乃至１０４Ｃ、１０４Ｃ乃至１０４Ｄの順序で、ペアとして追加されたノード１０４Ａ乃至１０４Ｄ各々を含む。従って、上述の記載で説明したプロセス３００において、ノード１０４Ａ乃至１０４Ｂの後でありノード１０４Ｄの前に、ノード１０４Ｃがグループに追加される。１つのノードがグループを離れると、残留ノードすべて（例えば、ノード１０４Ａ、１０４Ｂ及び１０４Ｄ）が、共有秘密暗号化鍵１４０を削除する。なぜならば、古い共有秘密暗号化鍵は、ノード１０４Ｃがグループを離れた後には、付加的な暗号化オペレーションのためには使用されないからである。これに加えて、以前のノード（例えば、ノード１０４Ａ及び１０４Ｂ）は、グループを離れたノード及びプロセス３００によるすべての以降のノードを含むラウンドカウンタ値１３６に対応する共有シード値１３４のすべてを削除する。この例においては、ノード１０４Ａと１０４Ｂの双方が、ノード１０４Ｃを追加した第２のラウンドのための共有シード値
【数１５】
0006903223.tif 000016
と、ノード１０４Ｄを追加した第３のラウンドのための共有シード値
【数１６】
0006903223.tif 000017
とを削除する。これに加えて、グループを離れたノードの後に追加されたノード（例えば、ノード１０４Ｄ）は、共有シード値１３４のすべてを削除する。なぜならば、プロセス５００はそれらの値を、グループを離れたノードには既知でない新たな共有シード値と置き換えるからである。
【００６９】
プロセス５００が次に進むと、残留ノードは、残留ノードグループ内における最終ノード（例えば、ノード１０４Ｂ）からスタートして、無効化されたがまだグループのメンバであるグループ内のノードをグループに追加して戻す（ブロック５０８）。前述の例の場合であれば、ノード１０４Ｂが、無効化されたノード１０４Ｄを含むがグループを離れたノード１０４Ｃを除く新たなペアにおいて、第１のノードとなる。ノード１０４Ｂは、ノード１０４Ｃがグループに追加された後、プロセス３００中に更新された共有シード値１３４（シード
【数１７】
0006903223.tif 000018
）を使用するので、更新された共有シード値１３４は、ノード１０４Ｃとの通信用に疑似乱数データ１４４を生成するために使用されたことはなかった。従って、ノード１０４Ｂは、ノード１０４Ｄとのデータ交換プロセスのために疑似乱数データを生成し、この疑似乱数データは、ノード１０４Ｃ又は攻撃者１５０によっても観察できないが、グループ内に残留しているノード１０４Ａによって観察できる。ノード１０４Ｄは第２のノードとして振る舞い、以前に生成されたいかなる疑似乱数データとも関係ない疑似乱数データ１４４を生成するためのベースとして、ノード１０４Ｄがプロセス３００においてグループに追加されたときと同様にして、以前に更新されたノードシード値１３０を使用する。残留ノードすべてが更新された共有シード値１３４を確立すると、グループ内の残留ノード１０４Ａ乃至１０４Ｂ及び１０４Ｄは、図３におけるブロック３３２の処理に戻り、グループを離れてしまったノード１０４Ｃには暗号化されたデータが明かされることなく、データを暗号化及び復号する、新たな共有秘密暗号化鍵１４０を生成する。
【００７０】
プロセス５００においてシステム１００は、第１のノードペアにおける１つのノードがグループを離れた状況、又は、グループに加えられるべき最終ノードがグループを離れた状況に対処するために、それぞれ異なるオペレーションを実施する。グループ内の第１のノードペアにおけるノードのうちの一方（例えば、ノード１０４Ａ又は１０４Ｂのいずれか）がグループを離れた状況においては、グループ全体が無効化され、システム１００はその代わりに、グループ内の第１のペアからのノードの離脱に対処するために、上述の記載で説明したプロセス３００を残留ノードだけを使用して実施する。グループに追加すべき最終ノードがグループを離れた状況においては（例えば、ノード１０４Ｃではなくノード１０４Ｄがグループを離れたならば）、グループ内の残留ノードは、最終ラウンドよりも前にラウンドカウンタ１３６に対応する共有シード値１３４（例えば、ノード１０４Ａ乃至１０４Ｃについてそれぞれシード値
【数１８】
0006903223.tif 000019
）を使用して、新たな共有秘密暗号化鍵１４０を生成することができ、最終シード値の値（シード値
【数１９】
0006903223.tif 000020
）を無効にすることができる。残留ノードは、更新された共有シード値１３４を使用して、あとでさらに詳しく説明する非インタラクティブな鍵再生成オペレーションを実施することができる。上述のように、グループに追加された第１のノードペア内にはないグループをあるノードが離れた状況において、プロセス５００は、グループの残留ノードにおいて新たな共有秘密暗号化鍵１４０を確立するためのより効率的なプロセスをもたらす。それというのも、離れたノードよりも前にグループに加わったいかなるノードも（例えば、ノード１０４Ａ及び１０４Ｂ）、取り除かれたノード１０４Ｃの追加よりも前のラウンドのときのシード値１３４を更新することができるからであり、前方秘匿性を伴って新たな共有暗号化鍵を生成するために、付加的なデータを交換し合う必要がないからである。
【００７１】
一部の実施形態の場合、１つのグループ内の複数のノードから成るセットが、非インタラクティブな鍵再生成オペレーションにおいて、新たな共有暗号化鍵１４０を生成する。このオペレーションによれば、ノードすべてが図２及び図３のプロセスを使用して既に共有シードを確立しているならば、１つ又は複数のノードペアが新たな共有秘密データを交換する必要がない。図６には、非インタラクティブな鍵再生成プロセス６００がさらに詳しく示されている。以下の説明において、１つの機能又はアクションを実施するプロセス６００の説明は、１つの通信システム内の他のコンポーネントと共働してその機能又はアクションを実施するために、格納されたプログラム命令を実行する１つ又は複数のコントローラのオペレーションのことを指している。プロセス６００を、例示目的において図１のシステム１００と関連させて説明する。
【００７２】
プロセス６００が始まると、グループ内の各ノードは、最終ラウンドの共有シード値１３４に適用される鍵生成関数を使用して、新たな共有秘密暗号化鍵１４０を生成し、各ノードは、古い共有秘密暗号化鍵１４０を削除する（ブロック６０４）。例えば、システム１００の場合、ノード１０４Ａ、１０４Ｂ及び１０４Ｃがグループ内にあるならば、各ノードにおけるコントローラ１０８は、新たな共有秘密暗号化鍵１４０を生成し、予め定められたインデックス値と共に暗号学的にセキュアなＰＲＮＧを最終ラウンドの共有シード値１３４、即ち、
【数２０】
0006903223.tif 000021
に適用することにより、古い鍵を置き換える。選択的な実施形態によれば、新たな共有秘密暗号化鍵を生成するために、異なる鍵生成関数を使用することができる。同様のオペレーションを、２つ以上のノードを含む任意のグループについて生じさせることができる。図２及び図３において上述の記載で説明したように、最終ラウンドの共有シード値１３４は、共有秘密データの最終ラウンドに適用される暗号学的にセキュアな一方向性関数を使用して生成され、暗号学的にセキュアな一方向性関数の特性ゆえに、新たに生成された共有秘密暗号化鍵１４０を、過去の共有秘密暗号化鍵１４０を再生成するために使用することはできず、このことによって、新たに生成された共有秘密暗号化鍵１４０が攻撃者１５０に明らかにされたときに、過去の共有秘密暗号化鍵に対する前方秘匿性がもたらされる。
【００７３】
プロセス６００が次に進むと、グループ内の各ノードは、最終ラウンドのシード値に適用される暗号学的にセキュアな一方向性関数を使用して、最終ラウンドのシード値を更新し、これにより共有シード値を用いた付加的なオペレーションに対し前方秘匿性がもたらされる（ブロック６０８）。上述の例の場合、ノード１０４Ａ乃至１０４Ｃ各々におけるコントローラ１０８は、最終ラウンドのために更新された共有シード値１３４を生成し、この共有シード値１３４は、暗号学的にセキュアな一方向性関数ｇ、即ち、
【数２１】
0006903223.tif 000022
を使用して、以前の共有シード値を置き換える。このオペレーションによっても前方秘匿性がもたらされ、それというのも、攻撃者１５０は、新たな共有秘密暗号化鍵１４０又は過去の共有秘密暗号化鍵の値を導出するために、更新された共有シード値１３４を使用することができないからである。
【００７４】
自明であるように、これまで開示してきた特徴及び機能並びにその他の特徴及び機能の変形又はそれらの代替案を所望のように組み合わせて、さらに他の多くの種々のシステム、アプリケーション又は方法を実現することができる。現時点においては予見できない又は予期されない様々な代替案、修正、変形又は改善を、後から当業者が行うことができ、これらも以下の特許請求の範囲に含まれるものとする。
【図１】
0006903223.tif 000023
【図２】
0006903223.tif 000024
【図３】
0006903223.tif 000025
【図４】
0006903223.tif 000026
【図５】
0006903223.tif 000027
【図６】
0006903223.tif 000028