(58)【調査した分野】(Int.Cl.,DB名)
前記随時認証段階において、前記データの暗号化は、前記乱数用メモリに保存されている乱数のうち、前回送信時に保存した乱数か、又は該乱数と前々回送信時に保存した乱数とのXOR演算値かのいずれかをシード値として生成した擬似乱数を使用して行われ、伝送路の正当性確認が前々回送信時に保存した乱数を利用して求めたハッシュ値を使用して行われることを特徴とする請求項1に記載のデバイス間暗号通信方法。
前記初期化認証段階及び前記随時認証段階のそれぞれは、前記アテストにおいて、前記乱数用メモリに保存された乱数のうち、前回受信時に保存した乱数か、又は該乱数と前々回送信時に保存した乱数とのXOR演算値かのいずれかをシード値として生成した擬似乱数を使用して復号化した情報を基に求めたハッシュ値と、受信したデータ中に含まれる元のデータのハッシュ値とが等しいか否かを確認する段階を含み、
少なくとも前記初期化認証段階は、前記ホスト側デバイスが、前記アテストにおいて、デバイス認証子が正しいものであるか否かを確かめる認証子認証段階を更に含むことを特徴とする請求項1又は2に記載のデバイス間暗号通信方法。
前記構成時認証段階、前記初期化認証段階、及び前記随時認証段階において、前記端末側及びホスト側デバイス間の通信で送受信されるデータは、送受信の都度生成される自然乱数と前記乱数用メモリに保存された2番目に新しい乱数を含めて算出されたデータのハッシュ値とを含み、
少なくとも前記構成時認証段階、前記初期化認証段階において、前記端末側及びホスト側デバイス間の通信で送受信されるデータは、前記デバイス認証子を更に含むことを特徴とする請求項3に記載のデバイス間暗号通信方法。
前記デバイス間暗号通信に使用するデバイスは、USB又はIEEE1394準拠のいずれかを含むシリアルバス規格に基づくホスト及び周辺機器であることを特徴とする請求項4に記載のデバイス間暗号通信方法。
前記デバイス間暗号通信に使用するデバイスは、IEEE802.15.4準拠の近距離無線通信規格に基づくエンドポイント及びコーディネータであって、機器設置時、アドレスリストを形成するときに相互認証が行われることを特徴とする請求項4に記載のデバイス間暗号通信方法。
前記デバイス間暗号通信に使用するデバイスは、IP準拠のコンピュータ通信規格に基づくクライアント及びサーバであることを特徴とする請求項4に記載のデバイス間暗号通信方法。
複数のデバイスを直列に接続する伝送路を有するネットワークにおいて、請求項5乃至7のいずれか一項に記載のデバイス間暗号通信方法を少なくともいずれか1つのデバイス間の通信に適用し、始点から終点までの全てのデバイス間の相互認証を完了後に前記始点及び終点デバイス間でデータ通信を行うことを特徴とするデータ通信方法。
複数のデバイスを直列に接続する伝送路を有するネットワークにおいて、請求項5乃至7のいずれか一項に記載のデバイス間暗号通信方法を少なくともいずれか1つのデバイス間の通信に適用し、始点から終点に向って順次デバイス間の相互認証を行い、認証が確認された区間までのデータ通信を順次行うことを特徴とするデータ通信方法。
【発明を実施するための形態】
【0015】
以下、本発明のデバイス間暗号通信方法及びこれを用いたデータ通信方法を実施するための具体例を、図面を参照しながら詳細に説明する。
【0016】
図1は、本発明の一実施形態による認証子と暗号通信用の乱数を保存するメモリの初期値設定後の状態を示した図であり、ネットワークを形成するデバイス1(端末側デバイス)とホスト2(ホスト側デバイス)との間の通信に使用する認証子と暗号通信に使用する乱数とを保存するメモリに共通の初期値を設定した段階の状態を示した図である。
【0017】
デバイス1のメモリとして、認証子用メモリDa1(30)と上り経路の暗号通信に使用する乱数用メモリセット51(Up11(511)、Up12(512))及び下り経路の暗号通信に使用する乱数用メモリセット61(Down11(611)、Down12(612))の合計5つがあり、それぞれの保存データを示す。
【0018】
ホスト2のメモリとして、認証子用メモリDa2(40)と上り経路の暗号通信に使用する乱数用メモリセット52(Up21(521)、Up22(522))及び下り経路の暗号通信に使用する乱数用メモリセット62(Down21(621)、Down22(622))の合計5つがあり、それぞれの保存データを示す。
【0019】
それぞれのメモリの内容は、機器設置時の構成時認証段階の前の段階で全て同じ初期値にセットされる。初期値は、例えばデバイス1の固有情報など、構成前にデバイス1とホスト2で互いに共有可能な情報からハッシュ計算したダイジェストを設定することで、人手を介することなく自動的に設定される。
【0020】
図2は、本発明の一実施形態による構成時認証段階における認証子の発番と共有の手順を示した図である。
【0021】
デバイス1は、自然乱数生成器81と送信データ格納用のメモリ91、及び外部メモリ71を有する。またデバイス認証子を保存する認証子用メモリDa1(30)を外部メモリ71の中に設ける。認証子用メモリDa1(30)には事前に初期値(31)をセットする。
【0022】
一方、ホスト2は、受信したデータを保存する受信データ格納用のメモリ102と演算処理部(図示せず)、及び外部メモリ72を有する。外部メモリ72には、ホスト認証子を保存する認証子用メモリDa2(40)を有し、更に予め設定して秘匿したホストキーK(120)を保存する。両デバイスは伝送線路140によって接続される。
【0023】
デバイス1は、自然乱数生成器81で自然乱数X1(131)を生成し、認証子用メモリDa1(30)の初期値(31)と共に送信データ格納用のメモリ91に格納する(ステップS201)。デバイス1は、この送信データを後述する暗号化手段による暗号化の後、ホスト2に送信する(ステップS202)。
【0024】
ホスト2は、後述するアテストを行い、ホスト認証子が初期値であり受信データ中のUUID(後述する
図4、5の説明部分参照)が未登録である場合には、新たに自然乱数Y1(132)を生成し、演算処理部で受信したデバイス認証子の初期値31と自然乱数X1(131)に付加した後、ハッシュ値を求める(ステップS203)。このハッシュ値はデバイス1の新たなデバイス認証子A(32)として暗号化後デバイス1に送信され(ステップS204)、デバイス1により認証子用メモリDa1(30)に保存される。ホスト2は、演算処理部でデバイス認証子A(32)に更にホストキーK(120)を付加した後、このハッシュ値を求め(ステップS205)、ホスト認証子C(42)としてホスト2の認証子用メモリDa2(40)に保存する。
【0025】
このようにデバイス認証子A(32)と、このデバイス認証子A(32)を更に加工して別の値としたホスト認証子C(42)とを、対を成す形でそれぞれのデバイスに保存するが、いずれも通信の両端で生成された乱数を含んだ情報のダイジェスト値であるため、グローバルにもユニークな認証子となる。またホストキーK(120)は、秘匿した値であるため、デバイス認証子A(32)が盗用されても、ホスト2内のホスト認証子C(42)との関連性を読み取られるリスクは低い。
【0026】
構成時認証段階では、認証子の生成と併せて、それぞれで生成した自然乱数X1(131)、Y1(132)を両デバイス間で交換して保存する。この手順を、
図3〜
図6を参照して説明する。
【0027】
図3は、本発明の一実施形態による構成時認証段階における乱数の生成からデバイス間共有までの手順を示した図である。
【0028】
デバイス1は、自然乱数生成器81、上り経路と下り経路用の4つの乱数用メモリ(Up11(511)、Up12(512)、Down11(611)、Down12(612))、及び受信したデータのアテストを行う認証部151を有し、デバイス認証子を保存する認証子用メモリDa1(30)を外部メモリに有する。
【0029】
ホスト2は、自然乱数生成器82、上り経路と下り経路用の4つの乱数用メモリ(Up21(521)、Up22(522)、Down21(621)、Down22(622))、及び受信したデータのアテストを行う認証部152を有する。デバイス1、ホスト2のそれぞれの4つの乱数用メモリと認証子用メモリには、構成時認証段階の前の段階でいずれも初期値が設定される。
【0030】
図4は、本発明の一実施形態による通信に使用するペイロードデータの構成を示した図であり、デバイス1とホスト2との間の通信に使用するペイロードデータの構成例を示す。
ペイロードデータは、認証子の値を格納するUUID、リクエストやリターンコードなどの通信で使用するコマンド等を格納するRP、新たに生成した自然乱数を格納するKey、送信データの主要部分のハッシュ値を格納するHash、及び平文等データを格納するDataの5つの要素で構成される。Hashには、送信データのKey、Data、及び前々回に交換した乱数を使用して求めたハッシュ値を格納する。ペイロードデータの構成は、後述するように通信形態によって変えても良い。
【0031】
再び
図3を参照すると、構成時認証段階では、初めに、デバイス1が自然乱数生成器81で新たな自然乱数X1(131)を生成してペイロードデータのKeyに格納する。またUUIDの部分に、認証子用メモリDa1(30)に保存された初期値を読み出して格納する(ステップS301)。
【0032】
デバイス1は、ペイロードデータ内のUUIDとRPを、予め設定されたホスト2と共有するゼネラルキーをシード値として生成した擬似乱数により、それ以外を上り経路用の乱数用メモリUp12(512)の値をシード値として生成した擬似乱数によりXOR演算して暗号化した後、ホスト2に送信する(ステップS302)。
【0033】
ここで、UUIDとRP以外のデータの暗号化に使用する擬似乱数のシード値は、上り経路用の乱数用メモリUp12(512)の値に限らず、Up12(512)の値を使用した演算値、例えばUp12(512)とUp11(511)とのXOR値を使用してもよい。
【0034】
図3に示すように、デバイス1は、データ送信後、乱数更新手段により、上り経路用の乱数用メモリUp11(511)の値をUp12(512)の値で書き換え、Up12(512)の値を自然乱数X1で書き換える。ホスト2は受信したデータのアテストを実施する。
【0035】
図5は、本発明の一実施形態によるホスト側デバイスのアテストのフロー図であり、ホスト2におけるアテストの手順を示した図である。
【0036】
ホスト2は、初めに受信データの先頭の32バイト(Payload Data(0〜32))を、ゼネラルキーをシード値として生成した擬似乱数によりXOR演算して復号化する。この時点でホスト認証子が初期値でありUUIDが未登録である場合には上述の認証子の発番を行い、ホスト認証子が初期値で無い場合には後述する認証子認証を行う。
【0037】
認証子認証が成功すると、受信データ内の33バイト目以降を、上り経路用の乱数用メモリUp22の値をシード値として生成した擬似乱数によりXOR演算して復号化し、前々回に交換して上り経路用の乱数用メモリUp21に保存された乱数とKey、及びDataから求めたハッシュ値と予めデータに格納されたハッシュ値とを比較して、伝送経路の正当性を確認する。ここで、上り経路用の乱数用メモリUp21の値として、構成時認証段階の乱数の交換が行われる前は初めに設定した初期値を使用する。尚、この図のようにハッシュ値を求める際に上り経路用の乱数用メモリUp21の値を1/2にして、Up21の値を繰返して使用しないように形を変えてもよい。この場合、当然ながらデバイス1で送信用データの暗号化を行うにあたり、ハッシュ値を求めるための上り経路用の乱数用メモリUp11の値も1/2にして使用する。
【0038】
図5では、復号化用の擬似乱数のシード値として、上り経路用の乱数用メモリUp22の値を使用する例を示したが、暗号化の際に使用したシード値に対応する値を使用することもできる。即ち、上述のように暗号化時の擬似乱数にUp12(512)とUp11(511)とのXOR値をシード値として使用した場合は、それに合わせて復号化用の擬似乱数に、上り経路用の乱数用メモリUp22(522)とUp21(521)とのXOR値をシード値として使用する。
【0039】
図6は、本発明の一実施形態による認証子認証の手順を示した図である。
【0040】
ホスト2は、デバイス1から受信した(ステップS602)受信データからデバイス認証子A(32)を取り出し、このデバイス認証子A(32)にホスト2に保存されたホストキーK(120)の値を付加した後、付加した値に対するハッシュ値を求める(ステップS603)。このハッシュ値がホスト2に保存されたホスト認証子C(42)と等しい場合に認証は成功して次の伝送経路の正当性を確認する段階に進む。等しくない場合に認証は失敗し、これ以降の処理を排除する(ステップS604)。
【0041】
再び
図3を参照すると、アテストが成功した後、ホスト2は、乱数更新手段により上り経路用の乱数用メモリUp21(521)の値をUp22(522)の値で書き換え、Up22(522)の値を自然乱数X1(131)で書き換える。続いて新たな自然乱数Y1(132)を生成してデバイス1に送信するデータを構成する。ペイロードデータの構成は上述の通りであるが、UUIDにはデバイス認証子A(32)、Keyには自然乱数Y1(132)を格納する。
ホスト2からデバイス1への通信の暗号化は、デバイス1からホスト2への暗号化と同様で、
図5で説明したように先頭の32バイトに関してはゼネラルキーをシード値とした擬似乱数を使用するが、33バイト目以降は下り経路用の乱数用メモリDown22(622)の値をシード値として生成した擬似乱数を使用する。このときも、Down22(622)の値に代えて下り経路用の乱数用メモリDown22(622)とDown21(621)のXOR値を用いてもよい。
【0042】
ホスト2は、暗号化した自然乱数Y1(132)を含むデータをデバイス1に送信(ステップS303)した後、乱数更新手段により下り経路用の乱数用メモリDown21(621)の値をDown22(622)の値で書き換え、Down22(622)の値を自然乱数Y1で書き換える。デバイス1は、ホスト2からのデータを受信するとアテストを行う。
【0043】
デバイス1のアテストは、
図5のホスト2のアテストと異なり、認証子による判定は行わずにハッシュ値による伝送経路の正当性確認だけを行う。また復号化及びハッシュ値の確認に、上り経路ではなく下り経路用の乱数用メモリの値を使用するという点で異なる。
【0044】
アテストが成功した後、デバイス1は、乱数更新手段により下り経路用の乱数用メモリDown11(611)の値をDown12(612)の値で書き換え、Down12(612)の値を自然乱数Y1(132)で書き換える。
【0045】
以上の一連の動作、即ちデバイス1で生成した乱数をホスト2に送信してホスト2で生成した乱数をデバイス1に送信し、両デバイスで乱数を共有して保有するというハンドシェーク動作によって、上り経路用の乱数用メモリ及び下り経路用の乱数用メモリのそれぞれ1つずつを新しい乱数で書き換える。
【0046】
上述したように、
図2の構成時認証段階で1回目のハンドシェークを行い、ホスト2で生成したデバイス認証子をデバイス1で保存すると共にホスト2でホスト認証子を生成して保有し、
図3に示すように、構成時認証段階で自然乱数X1、Y1を共有するための乱数用メモリUp12、Up22、Down12、Down22のメモリ値を乱数に書き換える。
【0047】
次に初期化認証段階について説明する。初期化認証段階では2回目のハンドシェークを行うが、
図2の構成時認証段階の終了時点でデバイス認証子A(32)とホスト認証子C(42)の設定は終了しており、認証子として初期値の代わりに初めからデバイス認証子A(32)を使用する点が構成時認証段階の1回目のハンドシェークと異なる。
【0048】
初期化認証段階の2回目のハンドシェークで、デバイス1は、新たな自然乱数X2を生成し、デバイス認証子A(32)と共に暗号化してホスト2に送信し、乱数更新手段により自然乱数X2を乱数用メモリに保存する。ホスト2は受信データのアテストを行い、認証子認証と伝送経路の正当性確認が成功すると、乱数更新手段により自然乱数X2を乱数用メモリに保存するとともに新たな自然乱数Y2を生成してデバイス認証子Aと共に暗号化の後にデバイス1に送信する。
【0049】
デバイス1及びホスト2共に、乱数更新手段により自然乱数Y2を乱数用メモリに保存する。この結果、初期化認証段階終了後のデバイス1、ホスト2のそれぞれ4つのメモリは、全て自然乱数に書き換わる。
【0050】
初期化認証段階終了後のデータの送受信も、上述の初期化認証段階と同様の手順によりデータの送受信と共に乱数の交換を行う。即ち、デバイス1は、データ送信の都度自然乱数X(n)を生成してデバイス認証子Aと共にデータの一部に組み込み、前回交換した上り経路用の乱数をシード値とした擬似乱数で暗号化を行う。ホスト2は、前回交換した上り経路用の乱数をシード値とした擬似乱数で復号化してアテストを行い、認証子認証とデータの正当性の確認後、受信した乱数を保存すると共に新たな自然乱数Y(n)を生成し、デバイス認証子を含めて前回交換した下り経路用の乱数をシード値とした擬似乱数で暗号化して返信する。最後に、デバイス1も、アテストを行い、返信されたデータから自然乱数Y(n)を取り出して保存する。
以上
図1〜
図6を参照して自然乱数生成器を有するデバイス1とホスト2の間の実施形態を説明したが、通信に使用する乱数は各エンドポイントが相手のエンドポイントの乱数を予測し得ないという条件を満たせばよく、自然乱数としては、抵抗に発生する熱雑音を増幅して得られるような物理乱数やプロセッサー常駐のエントロピー・ソースを使用してハードウェアで生成するようなデジタル乱数であっても良い。従って自然乱数生成器としては物理乱数生成器やデジタル乱数生成器であっても良い。これらの乱数生成器は、LSIを使ってハードウェアで実現しても良いし、RDRAND命令などのデジタル乱数を生成するソフトウェアで実現しても良い。
【0051】
図7は、本発明の一実施形態による様々な通信形態の機器のシームレスなネットワークの実施例を示した図であり、様々な通信形態の機器がシリーズにつながった実施例を示したものである。
【0052】
USB接続機器を有するホストコントローラ200は、無線通信回線によってUSB接続機能を有するM2Mゲートウェイ220に接続し、更にIPv6等による広域通信ネットワーク(WAN)を通して上位のM2Mゲートウェイ230に接続する。このネットワーク構成は、例えばUSB接続機器を有するホストコントローラ200が通信機能を有する遊技機であり、USB接続機能を有するM2Mゲートウェイ220がホールコンピュータであり、上位のM2Mゲートウェイ230がデータサーバというような事例が想定される。接続回線の通信手段は各機器間で異なっているが、上述したデバイス間暗号通信方法を用い、それぞれの通信手段で事前に交換した乱数を暗号及び復号に使用しながら、次の通信の暗号用に新たな乱数を交換するという暗号通信を適用することで、起点から終点まで一貫して高いセキュリティレベルを保った暗号化通信が可能になる。このように複数のデバイスがシリーズにつながったネットワークで、起点から終点までの通信を行う際、起点から終点に向って順次デバイス間の相互認証を行い、全ての区間の認証が終わってからデータ通信を行っても良いし、順次デバイス間の相互認証を行い、認証が確認された区間までのデータ通信を順次行っても良い。また、USBに代えて、IEEE1394、シリアルATA、PCI Express等のシリアルバス規格に基づく通信にも適用できる。
【0053】
以下、各種の通信手段による具体的な実施例を説明する。
【0054】
先ず、USBによる動的なデバイス認証について
図8〜10を参照して説明する。
【0055】
図8は、本発明の一実施形態によるUSB接続のファンクションの定義を示した図である。
【0056】
デバイス10は、デフォルトのコントロールパイプ用のエンドポイントを有しており、ホスト20と接続する際に、コントロールパイプ300を使用してコンフィグレーションが行われ、各パイプの使用条件等が設定される。
図8は、エンドポイント1がホストからデバイスへの下り経路用、エンドポイント2が上り経路用に設定された状態を示す。尚、ホスト及びデバイスは、それぞれ自然乱数生成器、認証子を保存する認証子用メモリ、及び上り経路と下り経路の暗号通信で使用する乱数を時系列的に保存する乱数更新手段による乱数用メモリを有する(いずれも図示せず)。
【0057】
USBにデバイスを加える際、デバイス側から定義(デスクリプタ)を登録する必要があるが、構成時にデフォルトのコントロールパイプ300を使用してデバイスとホストとの間のユニークな関係を構築することができる。
【0058】
ユニークな関係を構築するために、ホストとデバイスとの間で共有可能な情報を使用する。例えばデバイスの構成の登録に使用されるデスクリプタの情報を用い、
Product string=“PLSSEC”、
Serial number string=“20130001”
のように定義する。
デバイス認証に当たり、ホスト及びデバイスの認証子用メモリと乱数用メモリの初期値を設定する。初期値として、デバイス側では、
初期値=Hash(Product string+Serial number string)
のように定める。またホスト側では付加されたUSBデバイスから、Product、Serial numberを用いて同様にハッシュ値により初期値を定める。
【0059】
このように、自動的に読み込まれるデスクリプタの情報を使用することによって、人手を介することなく初期値を自動的に設定することができる。
【0060】
図8に示すデバイス10及びホスト20は、双方共に初期値設定後に認証子用メモリ及び乱数用メモリの全てに初期値を保存する。尚、ホストには複数のデバイスが接続されることがあるが、ホスト20はそれぞれのデバイス10と1対1の暗号通信を行い、認証子や暗号用の乱数はそれぞれのデバイスで異なるため、ホスト20には、接続されるデバイス数のメモリセットが用意され、メモリセットごとに初期値が設定される。
【0061】
図9は、本発明の一実施形態によるUSB接続における構成時認証段階と初期化認証段階におけるメモリの状態の遷移を示した図であり、認証子用メモリ及び乱数用メモリの状態の遷移を示したものである。
【0062】
これらの認証はデフォルトコントロールパイプ(RP0)のベンダーリクエストを用いて行われる。
【0063】
構成時認証段階では、初めにデバイス10で自然乱数X1を生成し、認証子用メモリに保存された初期値と共に乱数用メモリに保存された初期値を用いて暗号化を行い、ホスト20に送信する(ステップS901)。デバイス10は、データ送信後に乱数更新手段により上り経路用の乱数用メモリUp12の値をUp11に移し、Up12に新たに自然乱数X1を保存する。
【0064】
ホスト20は、
図5に示すアテストを行い、乱数更新手段により自然乱数Y1を保存し、続いて
図2、3の手順で新たな自然乱数Y1の生成と、デバイス認証子A1及びホスト認証子C1の生成及び登録を行う。ホスト20は、更に自然乱数Y1を、デバイス認証子A1と共に乱数用メモリに保存された初期値を使用して暗号化し、デバイス10に送信する(ステップS902)とともに乱数更新手段により自然乱数Y1を保存する。
尚、
図3ではホストキーK(120)及びホスト認証子C(42)はホスト2に接続された外部メモリ72に保存する形態を示したが、ホストキーK(120)及びホスト認証子C(42)はホスト2から取り外し可能な外部デバイスの中に保存し、構成時認証終了後、外部デバイスを取り外して保管することも可能である。このような構成は特に遊技機の場合に有効であり、一度通信が異常終了した際、ホストキーK(120)及びホスト認証子C(42)を保存した外部デバイスを接続して、新たに構成時認証を実施しないと通信を再開できないようにすることで、なりすましによる不正行為を防止することができる。
【0065】
デバイス10はアテストを行った後、乱数更新手段により自然乱数Y1を保存する。
【0066】
この結果、構成時認証段階終了時には、デバイス10、ホスト20のそれぞれで乱数用メモリに保存された4つの初期値の内の2つがX1、Y1に書き換わる。
【0067】
続く初期化認証段階において、デバイス10で新たな自然乱数X2を生成し、2度目のハンドシェーク(ステップS903、S904)により、ホストで新たに生成した自然乱数Y2を含めて両デバイスが乱数の交換、アテスト、及び乱数更新を行う。初期化認証段階が終了した時点で、ホスト20及びデバイス10共に各メモリの初期値がそれぞれの認証子及び乱数に書き換わる。
【0068】
USBの場合、このようにデフォルトのコントロールパイプを使用して、プラグアンドプレイの段階でデバイスとホストとの間のユニークな関係を築くことができる。
【0069】
図10は、本発明の一実施形態による初期化認証段階終了後のUSB接続におけるデータの流れと乱数の状態を示した図であり、初期化認証段階終了後のデータ転送におけるデータの流れと乱数の状態を示したものである。
【0070】
データ転送はデバイス10とホスト20との間で定義したパイプを使用して行われる。パイプはエンドポイント毎に設定され、データは双方向ではなく一方向に固定される。
【0071】
デバイス10は、データ転送が必要になると新たな自然乱数Xを生成し、デバイス認証子Aと共にデータに付加して暗号化の後、上り経路用パイプを使用してホスト20に送信する(ステップS1001)。暗号化は、上り経路用の乱数用メモリUp12に保存されたX2をシード値として生成した擬似乱数を用いて行い、伝送路の正当性確認は上り経路用の乱数用メモリUp11に保存されたX1を含めてハッシュ値を求め、これを使用して行う。デバイス10は、データ送信後に、乱数更新手段により自然乱数Xを乱数用メモリUp12に保存する。
【0072】
ホスト20は、データ受信後、アテストにより認証子認証と伝送路の正当性確認を行う。ホスト20は、アテストで正当性が確認できると乱数更新手段により自然乱数Xを乱数用メモリUp22に保存し、続いて新たな自然乱数Yを生成し、リターンコードと共に暗号化後に下り経路用パイプを使用してデバイス10に送信する(ステップS1002)。暗号化は下り経路用の乱数用メモリDown22に保存されたY2をシード値として生成した擬似乱数を用いて行い、伝送路の正当性確認に使用するハッシュ値は下り経路乱数用メモリDown21に保存されたY1を含めて算出する。データ送信後、ホスト20は、乱数更新手段により自然乱数Yを乱数用メモリDown22に保存する。
【0073】
デバイス10は、受信したデータのアテストを行い、正当性が確認できると、乱数更新手段により自然乱数Yを乱数用メモリDown12に保存する。この一連の手順により、データ送受信に併せて前に交換した乱数を暗号に使用しながら新たな乱数を後の暗号化に使用するために共有することが継続的に実行可能となる。
【0074】
図11は、本発明の一実施形態によるUSB接続における構成時認証段階と初期化認証段階におけるメモリの状態の遷移を示した図であり、認証子用メモリ及び乱数用メモリの状態の遷移を示したものである。
図9の実施形態では、暗号化は通信の経路に合わせて、上り経路には上り経路用の乱数用メモリUp12、下り経路には下り経路用の乱数用メモリDown22に保存された乱数を使用したが、
図11は最後に受信した逆方向の経路用の乱数も付加することでさらに第3者による解読のリスクを低減する実施形態を示す。
【0075】
構成時認証段階では、初めにデバイス10で自然乱数X1を生成し、認証子用メモリに保存された初期値と共に乱数用メモリに保存された初期値を用いて暗号化を行い、ホスト20に送信する(ステップS1101)。デバイス10は、データ送信後に乱数更新手段により上り経路用の乱数用メモリUp12の値をUp11に移し、Up12に新たに自然乱数X1を保存するとともに、下り経路用の乱数用メモリDown12にも自然乱数X1を元の値にXOR演算する形で付加して保存する。
【0076】
ホスト20は、デバイス10からのデータを受信後、復号化して
図5に示すアテストを行い伝送路の正当性が確認できると、自然乱数X1を取り出し、乱数更新手段により上り経路用の乱数用メモリUp22の値をUp21に移し、Up22に新たに自然乱数X1を保存するとともに、下り経路用の乱数用メモリDown22にも自然乱数X1を元の値にXOR演算する形で付加して保存する。
その後ホスト20は、
図2、3の手順で新たな自然乱数Y1の生成と、デバイス認証子A1及びホスト認証子C1の生成及び登録を行う。更に自然乱数Y1を、デバイス認証子A1と共に乱数用メモリに保存された値を使用して暗号化し、デバイス10に送信する(ステップS1102)。次いでホスト20は乱数更新手段により自然乱数Y1を下り経路用の乱数用メモリDown22に保存するとともに上り経路用の乱数用メモリUp22にもXOR演算の形で付加して保存する。
【0077】
デバイス10はアテストを行った後、乱数更新手段により自然乱数Y1を保存する。この際、下り経路用の乱数用メモリDown12に保存するとともに上り経路用の乱数用メモリUp12にもXOR演算の形で付加して保存する。
【0078】
続く初期化認証段階において、デバイス10で新たな自然乱数X2を生成し、2度目のハンドシェーク(ステップS1103、S1104)により、ホストで新たに生成した自然乱数Y2を含めて両デバイスが乱数の交換、アテスト、及び乱数更新を行う。この際のデータの暗号化は上り経路の場合、上り経路用の乱数用メモリUp22の値を使用するが、このUp22にはデバイス10で生成した自然乱数X1とホスト20で生成したY1とがXOR演算の形で保存されているので、通信を第3者に盗まれても解読のリスクを低減することができる。
同様に下り経路の場合もデータの暗号化は下り経路用の乱数用メモリDown22の値を使用するが、Down22には直前に受信したデバイス10で生成した自然乱数X2が付加されているので、通信データの安全性が確保される。
データの暗号化は、その経路の乱数用メモリの値を使用するが、1つのメモリの値に限らず、時系列的に1つ前の乱数を保存するメモリの値とのXORを使用しても良い。これによりさらにデータが複雑になり、第3者による解読のリスクを低減できる。
【0079】
図12、13は、IEEE802.15.4等の近距離無線通信によるデバイス認証について説明する図である。
【0080】
図12は、本発明の一実施形態による近距離無線通信とUSBの機器認証を組合せたネットワークのイメージ図であり、近距離線通信IEEE802.15.4(ZigBee(登録商標))を使用した機器とUSBの機器認証を組合せたネットワークのイメージ図である。
【0081】
本実施形態は、複数のエンドデバイス(410、411)で構成されるセンサーネットワーク400のデータを、それ自身がUSBのデバイスとして実装されたコーディネータ210に集約し、更にUSB接続によりホスト21に送信することを想定する。
【0082】
コーディネータ210がUSB接続機能を有することで、通信規格の異なる伝送経路がシームレスに接続される。
【0083】
各エンドデバイスとコーディネータは、それぞれ自然乱数生成器、認証子を保存する認証子用メモリ、及び上り経路と下り経路の暗号通信で使用する乱数を時系列的に保存する乱数更新手段による乱数用メモリを備える(いずれも図示せず)。
【0084】
一つのエンドデバイス、例えばエンドデバイス410が新たに近距離無線通信ネットワークに参加するときに、コーディネータ210はネットワークIDを割り振り、エンドデバイス410とコーディネータ210との両端でネットワークIDを共有する。またエンドデバイス410がセンサーネットワーク400に参加する都度、コーディネータ210は、例えば16ビットのアドレス(ショートアドレス)を動的に割り当てる。エンドデバイス410及びコーディネータ210は、これらの値を使用して認証子用メモリと乱数用メモリの初期値を生成する。
【0085】
具体的に、例えばエンドデバイスの認証子だけは、初期値として64ビットのロングアドレスを用い、その他のメモリの初期値はPAN ID(近距離線通信ZigBee(登録商標)に割り当てられたID)とショートアドレスを使用して、
PAN ID=0x0101
ショートアドレス=0xa01
のように設定を行い、ハッシュ値を求めて初期値とする。
初期値=Hash(PAN ID+ショートアドレス)
【0086】
このように、エンドデバイスが近距離無線通信ネットワークに参加するときに、自動的に発生する情報を初期値設定に利用することで、人手を介することなく初期値の設定を行うことができる。
【0087】
近距離無線通信の場合も、エンドデバイス410とコーディネータ210の構成時認証段階の前に、それぞれの認証子用メモリ及び乱数用メモリに全て共通の初期値が設定される。
【0088】
近距離無線通信の場合、通信速度に制約があるため、あまり大きなデータを送受信することは負荷が大きく効率が悪い。そこでペイロードデータの構成を見直す必要がある。
【0089】
ネットワークの構成段階に応じてペイロードデータの構成を変え、構成時認証段階と初期認証段階の時には、デバイス認証子を格納するUUID、自然乱数を格納するKey、及び伝送データの正当性確認用のハッシュ値を格納するHashの3つの要素で構成し、それ以降のデータ伝送時には、UUIDの代わりに平文等のデータを格納するDataを使用し、Key、Hash、及びDataの3要素構成とする。
【0090】
このように段階に応じてデータ構成が変わるため、ペイロードデータを受信したときのアテストの内容も段階に応じて変更する。
【0091】
図13は、本発明の一実施形態による近距離無線通信における短いデータのホスト側デバイスのアテストのフロー図であり、近距離無線通信における構成時認証段階と初期認証段階の時にコーディネータで行うアテストの内容を示したフローチャートである。近距離無線通信の場合の暗号化には上述のようなゼネラルキーを使用せず、ペイロードデータ全体を1つの擬似乱数で暗号化する。
【0092】
エンドデバイス側で送信データを暗号化する場合、上り経路用の乱数用メモリのUp12に保存された値をシード値として生成した擬似乱数を使用する。またハッシュ値は上り経路用の乱数用メモリのUp11に保存された値を含めて求める。
【0093】
このため、コーディネータ側のアテストでは、上り経路用の乱数用メモリのUp22に保存された値をシード値として生成した擬似乱数で復号化の後、ホスト認証子が初期値か否か及びUUIDの値が登録済みか否かにより認証子の発番又は認証を行う。続いて上り経路用の乱数用メモリのUp21に保存された値を含めてハッシュ値を求め、受信したデータ中のハッシュ値と比較する。
【0094】
随時認証段階のデータ送信時にコーディネータで行うアテストでは、ペイロードデータの構成が変わりUUIDを含めないため、認証子の認証は行わずに伝送路の正当性確認のみを行う。この場合の復号化には乱数用メモリUp22を、ハッシュ値計算には乱数用メモリUp21を参照する。
【0095】
随時認証段階のデータ送信時にエンドデバイスで行うアテストは、コーディネータで行うアテストと同様であるが、使用する乱数として、復号化に乱数用メモリDown12を、ハッシュ値計算に乱数用メモリDown11を参照する点が異なる。
【0096】
エンドデバイス410とコーディネータ210の構成時認証段階と初期化認証段階における認証子用メモリ及び乱数用メモリの状態の遷移は、
図9のデバイスをエンドデバイス、ホストをコーディネータと見なすと、内容は略同じである。
【0097】
近距離無線通信における初期化認証段階終了後の双方向データの流れと乱数の状態は、
図14のデバイスをエンドデバイス、ホストをコーディネータと見なすと内容は類似しているが、ペイロードデータの構成が異なるため、上述のようにホスト側デバイスのアテストが異なる。
【0098】
図14は、本発明の一実施形態によるエンドデバイスとコーディネータの構成時認証段階と初期化認証段階におけるメモリの状態の遷移を示した図であり、近距離無線通信の他の実施形態を示した図である。
【0099】
図13は、複数のエンドデバイス(MANY)から1つのコーディネータ(ONE)へのMANY−TO−ONEのデータ転送の状態を示している。
【0100】
MANY−TO−ONEのデータ転送は両端で同期が取れない一方通行のデータ送信となり、コーディネータ側で発生する乱数は、エンドデバイスとの間で交換されない。そこでエンドデバイス側の乱数のみで発生と交換を繰り返す。
【0101】
MANY−TO−ONEのデータ転送を行うエンドデバイス410も、設置の際に構成時認証段階と初期化認証段階の各手順を行い、初期化認証段階の後に、エンドデバイス410は、認証子用メモリと上り経路用の乱数用メモリUp11、Up12にそれぞれデバイス認証子と自然乱数X1、X2を保存する。一方コーディネータ210は、認証子用メモリと上り経路用の乱数用メモリUp21、Up22にそれぞれホスト認証子と自然乱数X1、X2を保存する。
【0102】
図15は、本発明の一実施形態による初期化認証段階終了後のエンドデバイスとコーディネータとの間のデータの流れと乱数の状態を示した図であり、MANY−TO−ONEのデータ転送の初期化認証段階終了後のデータ通信におけるデータの流れと乱数の状態を示した図である。
【0103】
エンドデバイス410からデータを送信する場合のペイロードデータは、Key、Hash、及びDataの3要素で構成される。
【0104】
先ず、エンドデバイス410は、自然乱数生成器で新たな自然乱数Xを生成し、送信データ格納用のメモリ(図示せず)のKeyに格納し、送信する平文データをDataに格納する。これに上り経路用の乱数用メモリUp11に保存された乱数を付加してハッシュ値を求め、Hashに格納する。こうして構成したペイロードデータを、上り経路用の乱数用メモリUp12に保存された乱数をシード値として生成した擬似乱数とXOR演算で暗号化し、コーディネータ210に送信する(ステップS1501)。
【0105】
コーディネータ210は、受信時にアテストで復号化したデータから求めたハッシュ値で正当性確認を行ってデータを受け取ると乱数更新手段により、上り経路用の乱数用メモリUp21(521)の値をUp22(522)の値で書き換え、Up12(522)の値を自然乱数Xで書き換えとともに、エンドデバイス410にデータが正常に送られたことを示すAckを送信する(ステップS1502)。このアテストには上り経路用の乱数用メモリUp21、Up22に保存された乱数を使用する。デバイス1は、Ack受信後、乱数更新手段により、上り経路用の乱数用メモリUp11(511)の値をUp12(512)の値で書き換え、Up12(512)の値を自然乱数Xで書き換える。
【0106】
このように、MANY−TO−ONEの場合は、データ送信が一方通行のため、エンドデバイス側で発生する乱数のみを通信に使用するが、常に新しい乱数を含むと共に前2回分の乱数を暗号化と正当性確認に使用するため、高いセキュリティを確保することができる。
【0107】
図16を参照してインターネット等の広域通信ネットワークによる動的なエンドポイント認証の事例を説明する。
【0108】
図16は、本発明の一実施形態によるインターネットによるシステム構成のイメージを示した図である。M2Mエンドデバイス510は、USBのホストコントローラの機能を有し、自然乱数生成器(NRG)581をUSBにより接続する。このM2Mエンドデバイスは、IPv6等による広域通信ネットワーク(WAN)を通じてM2Mゲートウェイ520に接続される。M2Mゲートウェイ520もまたUSBホストコントローラの機能を有し、自然乱数生成器(NRG)582をUSBにより接続する。
【0109】
M2MエンドデバイスとM2Mゲートウェイは、それぞれ認証子を保存する認証子用メモリと、上り経路及び下り経路の暗号通信で使用する乱数を時系列的に保存する乱数更新手段による乱数用メモリを備える(いずれも図示せず)。
【0110】
M2Mエンドデバイス510が新たにネットワークに参加する際、マシン名、IPアドレス或いはMACアドレスが上位のM2Mゲートウェイ520との間で共有される。そこでネットワークに参加する時点を構成の認証と見なし、ユニークに識別可能でM2Mエンドデバイス510とM2Mゲートウェイ520とで共有可能な情報を用いて認証子用メモリ及び乱数用メモリの初期値を生成する。
具体的に、例えばパーソナルコンピュータのマシン名を
MachineName=“UTP−PC1”
のように定義し、このハッシュ値を求めて初期値とする。
初期値=Hash(MachineName)
【0111】
このように機器に固有の情報を使用することで、人を介することなく自動的に初期値設定を行うことができる。
【0112】
インターネットによるシステムの場合もM2Mエンドデバイス510とM2Mゲートウェイ520のそれぞれの認証子用メモリ及び乱数用メモリへの初期値の設定、構成時認証段階、及び初期化認証段階の各手順を行う。この場合も、
図9、10のデバイスをM2Mエンドデバイス、ホストをM2Mゲートウェイと見なすと、通信手段は異なるが認証子の生成や認証手順などの基本部分は略同じ内容である。
【0113】
図17は、本発明の一実施形態によるシームレスネットワークの説明図であり、USBゲートウェイを中心としたシームレスネットワークの例である。
【0114】
図17は、PAN(Personal Area Network)(例えば、近距離線通信ZigBee(登録商標))のエンドデバイスからUSBゲートウェイを経由してインターネットに接続されたサーバと連携するネットワークを示す。USBゲートウェイは、USBデバイスとUSBホストコントローラを有しており、USBデバイスは、PANエンドデバイスに対してコーディネータの機能を有し、USBホストコントローラに対してUSBのデバイスとして機能する。USBホストコントローラは、USBのデバイスに対するUSBのホスト機能を有すると共にLAN機能を有し、サーバに対してイーサーネット(登録商標)のエンドデバイスとして機能する。そこでUSBデバイスはPANで使用する認証子Bの他にUSBで使用する認証子Cを有し、USBホストコントローラはUSBで使用する認証子Dの他にイーサーネット(登録商標)で使用する認証子Eを有する。それぞれの機器間の通信にはそれぞれの役割の認証子を付加して送信し、PANエンドデバイスからデータを送信し、PANエンドデバイスにレスポンスが戻るまでの一連のハンドシェークを行う。途中の経路で通信方式は変わるが、それぞれの通信経路で本発明の暗号通信が行われることで人手を介することなく、M2Mでシームレスなセキュリティネットワークが構築される。
【0115】
以上、本発明の実施形態について図面を参照しながら説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更することが可能である。