(57)【特許請求の範囲】
【請求項１】
論理的相互接続と、
上記論理的相互接続に接続された不揮発性メモリと、
プライベート鍵を発生するプライベート鍵発生器とを備えた装置であって、
上記プライベート鍵発生器は、上記論理的相互接続に接続され、上記プライベート鍵を上記不揮発性メモリ内に格納するために、上記論理的相互接続を介して上記プライベート鍵を上記不揮発性メモリに提供し、
上記装置は、
上記論理的相互接続に接続されたハッシュエンジンを備え、
上記ハッシュエンジンは、上記論理的相互接続を介して上記プライベート鍵を受信し、上記プライベート鍵に対して、所定の数のハッシュを実行して識別値を発生し、
上記ハッシュの数は、クロックソースを含むインデックスソースにより指示されるクロック番号と、上記不揮発性メモリ内に格納される参照時間との差に基づき、
上記論理的相互接続は、上記装置を認証するときの使用のために上記識別値を提供することを特徴とする装置。
【請求項２】
上記論理的相互接続、上記プライベート鍵発生器、上記不揮発性メモリ及び上記ハッシュエンジンは、単一の集積装置を備え、
上記単一の集積装置は、上記論理的相互接続が上記不揮発性メモリ内だけに上記プライベート鍵を格納し、上記不揮発性メモリ内だけに格納された上記プライベート鍵を上記ハッシュエンジンに提供されるように構成され、
上記単一の集積装置は、上記不揮発性メモリ内に格納された上記プライベート鍵が他の複数の装置がアクセス不可能となるように構成され、その結果上記他の複数の装置は上記プライベート鍵を獲得することができず、
上記装置の識別子、上記インデックス番号及び上記識別値は、上記不揮発性メモリ内に格納され、上記論理的相互接続は上記装置を認証するときの使用のために、上記インデックス番号及び上記識別子を提供することを特徴とする請求項１記載の装置。
【請求項３】
上記装置の識別子、上記クロック番号、及び上記識別値は、上記不揮発性メモリ内に格納され、上記論理的相互接続は、上記装置を認証するために使用される上記クロック番号及び上記識別子を提供し、
上記プライベート鍵発生器は上記装置内の乱数発生器であって、上記クロック番号は現在のタイムスタンプを備え、上記参照時間は終了のタイムスタンプを備え、上記ハッシュの数は上記現在のタイムスタンプと上記終了のタイムスタンプとの間の差から得られ、
上記終了のタイムスタンプは遠い将来の日付を備えたことを特徴とする請求項１記載の装置。
【請求項４】
プロセッサと、
上記プロセッサに接続された不揮発性メモリと、
プライベート鍵を発生するプライベート鍵発生器とを備えた装置であって、
上記プライベート鍵発生器は上記プロセッサに接続され、上記プロセッサは上記不揮発性メモリ内に上記プライベート鍵を格納し、
上記装置は、
インデックス番号を上記プロセッサに対して指示するインデックスソースを備え、
上記プロセッサは、上記プライベート鍵に対して、上記不揮発性メモリ内に格納された上記インデックス番号に基づいた数のハッシュを実行して識別値を発生し、
上記ハッシュの数は、上記インデックスソースにより指示されるクロック番号と、上記不揮発性メモリ内に格納される参照時間との差に基づき、
上記識別値は、上記装置を認証するために使用されることを特徴とする装置。
【請求項５】
プライベート鍵を発生するためのプライベート鍵発生器と、
少なくとも上記プライベート鍵を格納するための不揮発性メモリと、
クロックソースを含むインデックスソースと、
ハッシュエンジンと、
上記プライベート鍵発生器、上記不揮発性メモリ、上記インデックスソース、及び上記ハッシュエンジンとの間の論理的相互接続と、
情報を送信するためのプロセッサとを備えた電子装置であって、
上記ハッシュエンジンは、上記論理的相互接続を介して上記プライベート鍵を受信して、上記プライベート鍵に対して所定の数のハッシュを実行して上記論理的相互接続を介して提供される識別値を発生し、
上記ハッシュの数は、上記インデックスソースにより指示されるクロック番号と、上記不揮発性メモリ内に格納される参照時間との差に基づき、
上記識別値は、上記装置を認証するときの使用のためであることを特徴とする電子装置。
【請求項６】
検証装置と複数の電子装置とを備えたシステムであって、
上記各電子装置は、
論理的相互接続と、
上記論理的相互接続に接続された不揮発性メモリと、
プライベート鍵を発生するプライベート鍵発生器とを備え、
上記プライベート鍵発生器は、上記論理的相互接続に接続され、上記不揮発性メモリ内に上記プライベート鍵を格納するために、上記論理的相互接続を介して上記プライベート鍵を上記不揮発性メモリに提供し、
上記各電子装置は、
クロック番号を指示するインデックスソースと、
上記論理的相互接続に接続されたハッシュエンジンとを備え、
上記ハッシュエンジンは、上記論理的相互接続を介して上記プライベート鍵を受信し、上記プライベート鍵に対して、上記クロック番号に基づいた数のハッシュを実行して識別値を発生し、
上記論理的相互接続は、上記装置を認証するときの使用のために、上記識別値及び上記インデックス番号を上記検証装置に対して提供し、
上記検証装置は、上記識別値及び上記クロック番号を受信し、上記検証装置は、上記受信されたクロック番号に基づいた上記受信された識別値に対して、所定の数のハッシュを実行して上記電子装置が認証されるべきか否かを決定することを特徴とするシステム。
【請求項７】
上記検証装置は、第１の識別値及び第１のクロック番号を受信し、
上記検証装置は、第２の識別値及び第２のクロック番号を受信し、
上記検証装置は、上記受信された第２の識別値に対して、上記第１のクロック番号と上記第２のクロック番号との間の差から得られた数のハッシュを実行して結果を決定し、
上記検証装置は、上記結果を上記第１の識別値と比較して、上記検証装置は、上記結果が上記第１の識別値と等しい場合は上記電子装置を認証し、上記結果が上記第１の認証値と等しくない場合は上記電子装置を認証しないことを特徴とする請求項６記載のシステム。
【請求項８】
装置識別子を有する安全な認証装置を認証するためのシステムであって、上記システムは、
前のタイムスタンプ及び上記装置識別子と関連する前のハッシュ値を格納するためのメモリと、
上記メモリに動作可能なように接続された論理的相互接続とを備え、
上記論理的相互接続は上記装置に通信するために動作し、
上記システムは、
上記メモリ及び上記論理的相互接続に動作可能なように接続されたプロセッサを備え、
上記プロセッサは、上記論理的相互接続を介して、上記装置識別子と現在のハッシュ値と現在のタイムスタンプとを受信するために動作し、上記プロセッサは、上記メモリから、上記前のタイムスタンプと上記装置識別子と関連する上記前のハッシュ値とを検索し、
上記プロセッサは、上記現在のタイムスタンプと上記前のタイムスタンプとの間の時間量を決定し、上記プロセッサは、上記現在のハッシュ値に対して、上記現在のタイムスタンプと上記前のタイムスタンプとの間の時間量の差に基づいた数のハッシュを実行して、識別値を発生し、
上記プロセッサは、上記識別値が上記前のハッシュ値が等しいか否かを決定して、上記識別値が上記前のハッシュ値と等しければ上記装置は認証され、そうでなければ上記装置は認証されないことを特徴とするシステム。
【請求項９】
安全な認証装置を認証する安全認証装置によって実行される方法であって、上記方法は、
上記安全認証装置が、装置識別子と、ハッシュ値と、現在のタイムスタンプとを受信するステップと、
上記安全認証装置が、上記装置識別子により識別された装置の前の認証と関連する前のタイムスタンプ及び前のハッシュ値を検索するステップと、
上記安全認証装置が、上記現在のタイムスタンプと上記前のタイムスタンプとの間の時間量を決定するステップと、
上記安全認証装置が、上記現在のタイムスタンプと上記前のタイムスタンプとの間の時間量に基づいた数のハッシュを上記ハッシュ値に対して実行するステップと、
上記安全認証装置が、上記ハッシュの数を実行した結果生じた値が上記前のハッシュ値と等しいか否かを決定するステップとを備え、
上記結果生じた値が上記前のハッシュ値と等しければ上記装置は認証され、そうでなければ上記装置は認証されないことを特徴とする方法。
【請求項１０】
暗号通信で複数の装置のペアを構成するための方法であって、上記方法は、
第１の装置と第２の装置とを識別するステップを備え、
上記各装置は、
プライベート鍵を発生するためのプライベート鍵発生器と、
少なくとも上記プライベート鍵を格納するための不揮発性メモリと、
ルート鍵及び上記プライベート鍵を使用するハッシュエンジンと、
上記ハッシュエンジンによる使用のためのクロックソースを含むインデックスソースと、
上記プライベート鍵発生器、上記不揮発性メモリ、及び上記ハッシュエンジンとの間の論理的相互接続とを備え、
上記方法は、
上記第１の装置と上記第２の装置とを接続するステップと、
上記接続された第１の及び第２の装置により、各ハッシュエンジンによる使用のための共通のルート鍵を発生するステップとを備え、
上記第１の装置は、そのハッシュエンジンを介して上記共通のルート鍵を使用して上記第２の装置と暗号通信し、及び上記第２の装置はそのハッシュエンジンを介して上記共通のルート鍵を使用して上記第１の装置と暗号通信し、
上記各ハッシュエンジンは、上記プライベート鍵に対して所定の数のハッシュを実行して、上記プライベート鍵及び上記共通のルート鍵に基づいて識別値を発生し、
上記ハッシュの数は、上記インデックスソースにより指示されたクロック番号と、上記不揮発性メモリ内に格納される参照時間との差に基づき、
上記論理的相互接続を介して提供される上記発生された識別値は、上記装置を認証するために使用されることを特徴とする方法。
【請求項１１】
暗号法の電子装置であって、上記電子装置は、
プライベート鍵を発生するためのプライベート鍵発生器と、
少なくとも上記プライベート鍵を格納するための不揮発性メモリと、
上記プライベート鍵を使用し、この装置とペアが構成される少なくとも１つの他の装置により使用された共通のルート鍵を使用するハッシュエンジンと、
上記ハッシュエンジンによる使用のためのクロックソースを含むインデックスソースと、
上記プライベート鍵発生器、不揮発性メモリ、及び上記ハッシュエンジンとの間の論理的相互接続とを備え、
上記ハッシュエンジンは、上記プライベート鍵に対して所定の数のハッシュを実行して、上記プライベート鍵に基づいた識別値及び上記共通のルート鍵を発生し、上記ハッシュの数は、上記インデックスソースにより指示された一連の減少する数の１つであるクロック番号と、上記不揮発性メモリ内に格納される参照時間との差に基づき、上記識別値は、他の装置を用いて上記装置を認証するときの使用のために、上記論理的相互接続を介して提供され、上記共通のルート鍵は、他の装置と暗号通信するために使用されることを特徴とする電子装置。
【請求項１２】
複数の装置を備えた暗号通信のためのシステムであって、
上記各装置は、
プライベート鍵を発生するためのプライベート鍵発生器と、
少なくとも上記プライベート鍵を格納するための不揮発性メモリと、
共通のルート鍵と上記プライベート鍵とを使用するハッシュエンジンと、
上記ハッシュエンジンによる使用のためのクロックソースを含むインデックスソースと、
上記プライベート鍵発生器、上記不揮発性メモリ、及び上記ハッシュエンジンとの間の論理的相互接続とを備え、
上記各装置は、上記複数の装置をともに接続することにより発生された上記共通の鍵を共有し、
上記各装置の上記各ハッシュエンジンは、上記共通のルート鍵を使用して上記複数の装置の他の複数の装置と暗号通信するように構成され、
上記各ハッシュエンジンは、上記プライベート鍵に対して所定の数のハッシュを実行して、上記プライベート鍵及び上記共通のルート鍵に基づいて識別値を発生し、
上記ハッシュの数は、上記インデックスソースにより指示されたクロック番号と、上記不揮発性メモリ内に格納される参照時間との差に基づき、
上記論理的相互接続を介して提供される上記発生される識別値は、上記装置を認証するために使用されることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的に、装置の安全な認証を提供するためのシステム及び方法に関し、排他的ではないがより特に、複数のプライベート鍵が各装置に対して内部だけに格納されるように、複数の装置の内部のキーイングを利用する認証システムを提供することに関する。
【背景技術】
【０００２】
小型で低電力の複数の無線装置は、工業プロセスのモニタリング及び制御と、機械の健全性のモニタリングと、環境及び生息環境のモニタリングと、複数のヘルスケア応用と、ビルディング自動化と、ユーティリティのモニタリング及び制御、並びに交通制御を含む、多くの産業及び民間の応用領域において使用される。複数の無線装置は、お互いに通信してもよく、及び／もしくは中心サーバと通信してもよい。複数の無線装置は、例えば複数の交通信号を制御することや電気及びガスの使用を制御することや建物の中への入場を制御することなどの重大な複数の機能を実行する能力を有するかもしれないので、複数の無線装置の安全性が危険にさらされないことが重要である。しばしば、複数の無線装置は、データの暗号化及び／もしくは認証のために複数の暗号鍵を使用する。例えば、複数の無線装置は、データ暗号化及び／もしくはフレームインテグリティのための対称鍵１２８ビットの進歩した暗号化標準を使用し、データを複数の暗号鍵なしに複数の者により修正されることから保護されてもよい。製造時において、複数の生産者は、公開鍵暗号法を使用して、装置を一意的に識別するプライベート鍵を組み込むか、もしくは挿入してもよい。プライベート鍵は装置の認証のために使用されてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、複数の生産者が第三者の複数の製造業者を使用する場合、鍵のリークの脅威の可能性があり、そこではキーイングマテリアルのすべてが複数の正規装置を製造するために使用されるとは限らない。この場合において、非正規装置が、当該非正規装置が複数の無線装置に対して認証されないアクセスを可能とするかもしれないプライベート鍵が組み込まれるかもしれない。
【０００４】
さらに、複数の装置の中に組み込まれた複数のプライベート鍵が発生され、例えばデータベース内もしくは取り外し可能な媒体内などの、上記複数の装置に対して外部に格納される。もし第三者が組み込まれた複数の鍵を格納するデータベースに対するアクセスを獲得することができたならば、第三者は１つのもしくはそれ以上の無線装置に対して認証されないアクセスを得ることができるかもしれない。すべての可能性がある１２８ビットの鍵を通してサーチして複数の装置に対するアクセスを獲得しなければならない代わりに、可能性がある複数の鍵のサーチ空間は、データ記憶装置上に格納された複数の鍵に対して狭まるであろう。従って、複数の無線装置の安全性は、複数の鍵のセットが格納された外部のデータ記憶装置の安全性に依存するかもしれない。データ記憶装置の安全性を危険にさらすことは、結果としてそこに格納された複数の鍵を有する複数の無線装置の安全性を危険にさらすことになるかもしれない。
【課題を解決するための手段】
【０００５】
電子装置は、オンボードの乱数発生器により発生された乱数及びインデックス番号と参照番号との差に基づいた複数の識別値を発生する。複数の識別値は、乱数をリリースすることなしに電子装置を認証することにおいて、検証装置により使用される。
【０００６】
他の複数の目的及び複数の特徴は一部においては明白となろう。そして、一部においては後述において指摘されるであろう。
【０００７】
対応する複数の参照文字は、複数の図面を通して対応する複数の部分を指示する。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態に係る安全な認証装置を含む例示的なシステムのブロック図である。
【図２】本発明の一実施形態に係る安全な認証装置のブロック図である。
【図３】本発明の一実施形態に係るプロセッサを含む安全な認証装置のブロック図である。
【図４Ａ】図２の安全な認証装置、もしくは本発明の複数の実施形態に係る他の安全な認証装置の内部のキーイング演算を例示するフローチャートである。
【図４Ｂ】図２の安全な認証装置、もしくは本発明の複数の実施形態に係る他の安全な認証装置の内部のキーイング演算を例示するフローチャートである。
【図５】図２の安全な認証装置、もしくは本発明の複数の実施形態に係る他の安全な認証装置を認証する検証装置の演算を例示するフローチャートである。
【図６】図２の安全な認証装置、もしくは本発明の複数の実施形態に係る他の安全な認証装置の認証演算を例示するフローチャートである。
【図７】図２の安全な認証装置、もしくは本発明の複数の実施形態に係る他の安全な認証装置の内部のキーイング演算及び／もしくは暗号法の鍵共有演算を例示するフローチャートである。
【発明を実施するための形態】
【０００９】
開示された複数の実施形態において、内部にプライベート鍵を発生して格納する、安全な認証装置、システム及び方法が提示される。プライベート鍵は、装置のための固有の識別値（Ｉ．Ｖ．）を発生するために使用される。プライベート鍵は他の複数の装置に対してアクセス不可能であり、それによりプライベート鍵が潜在的に第三者によりアクセスされることを防止する。安全な認証装置は、当該装置がそれがプライベート鍵を開示することなしにプライベート鍵を所有することを実証できる認証方法を利用する。従って、認証は外部とプライベート鍵を通信で送受信しなければならない装置なしに達成される。プライベート鍵が、例えば装置のメモリ内などの、装置に対する内部だけに格納されて装置に対して外部から決して通信されないので、第三者が装置の安全性を危険にさらすことは非常に困難である。
【００１０】
いま、複数の図面を見ると、図１は、一実施形態に係る安全な認証装置２００及びプロセッサ１１０を含む電子装置１００のブロック図を提供する。安全な認証装置２００は、１つのもしくはそれ以上の識別値を、例えばサーバ１２０もしくは他のステーションなどの検証装置に対する送信のためのプロセッサ１１０に対して提供してもよく、装置もしくはシステムは電子装置１００の固有のアイデンティティ（同一性）を検証する必要がある。安全な認証装置２００は、マイクロチップ内、システムボード上、もしくは一般的にプロセッサ１１０とインターフェースすることができる任意の装置を通して実装されてもよい。電子装置は、識別値（Ｉ．Ｖ．）と電子装置１００の識別と現在の時間とを送信し、電子装置１００が本物であることを検証するときの使用のためにこれらのすべてがサーバ１２０により受信される。図１に例示された実施形態において、情報は、例えばアンテナ１３０、１４０を介して、及び／もしくは（例えば、赤外線送信などの）いくつかの他の無線送信を介して、及び／もしくは（例えば、有線ネットワークなどの）有線接続１５０を介してなどの無線送信により送信されてもよい。
【００１１】
電子装置１００は、認証を要求する任意の装置であってもよい。例えば、電子装置１００は、遠隔の検針システムにおいて使用される検針装置であってもよく、その場合は、プロセッサ１１０はサーバと通信してもよく、検針に関する情報を上記サーバに送信する。この例において、検針装置は、請求書作成サーバを用いて認証して検針装置により提供された複数の値を検証する必要があるとしてもよい。代わりに、電子装置１００は、国際的な携帯機器識別子（ＩＭＥＩ）を使用する携帯電話ネットワークを用いて認証する携帯電話であってもよい。従って、プロセッサ１１０は、携帯電話を操作して音声情報を含む情報を送信するための携帯電話プロセッサであろう。代わりに、電子装置１００は、認証を必要とする無線ネットワークにおいて動作する無線センサであってもよい。
【００１２】
１つの実施形態において、１つのもしくはそれ以上の複数の電子装置１００は、電子装置１００が製造されるときにサーバ１２０とペアが構成されてもよい。各安全な認証装置２００は、ボード上にそれ自身のプライベート鍵を有し、それ自身のプライベート鍵を発生する。さらに、各装置２００は、将来における終了の日付／時間を識別して（もしくは割り当てられて）そのプライベート鍵と関連付けられてもよい。識別された終了の日付／時間は、例えば日付／時間を将来に向けた５０年とするなど、装置の平均寿命よりも長く続くように、将来において十分に遠いべきである。安全な認証装置２００は、プライベート鍵と識別された終了の日付／時間とを、例えば不揮発性メモリ内などの内部に格納する。
【００１３】
演算において、各安全な認証装置２００は、現在の日付／時間と終了の日付／時間との間の時間量を決定する。例えば、秒、ミリ秒、分などの任意の単位において測定される。各安全な認証装置２００は、時間量から得られたプライベート鍵に対してある回数のハッシュを実行し、その結果生じたハッシュ（すなわち、第１の識別値。）をプロセッサ１１０に提供する。ハッシュの数は差であってもよく、または差から得られた線形値であってもよく、または差に関する全体もしくは一部に基づいたある他の値から得られた線形値であってもよい。プロセッサ１１０は、次の情報をサーバ１２０に送信する。すなわち、第１の識別値と、クロック１６０により提供された現在の日付／時間と、例えば携帯電話のＩＭＥＩなどの電子装置１００の識別子（「ＩＤ」）とである。サーバ１２０は、送信された情報を受信するためのインターフェース１２２と、動作可能なようにインターフェース１２２に接続されるプロセッサ１２４と、例えばデータ記憶装置内などのメモリ１２６とを含む。プロセッサは、メモリ１２６内に電子装置１００の識別子と、第１の識別値と、現在の日付／時間とを格納する。しかしながら、安全な認証装置２００は、プライベート鍵を決してサーバ１２０に提供しない。従って、送信された情報を受信することによって、もしくはサーバ１２０にアクセスすることによって、プライベート鍵が第三者によって獲得されないように、プライベート鍵は送信されない。結果として、装置１００及びサーバ１２０の安全性は危険にさらされない。安全な認証装置の最初の複数のキーイング演算が、以下の図４においてより詳細に説明される。
【００１４】
サーバ１２０は各電子装置１００を認証することができ、すなわち電子装置１００は（「より最近の現在の日付／時間」と呼ばれる）より最近の時間においてサーバを用いて認証を開始することができる。認証の間、各安全な認証装置２００は、より最近の現在の日付／時間を決定し、安全な認証装置２００上に格納された、より最近の現在の日付／時間と終了の日付／時間との間の（例えば、複数の秒などの）時間量を決定する。安全な認証装置２００は、時間量に基づいてプライベート鍵をハッシュして第２の識別値を発生する（例えば、複数のハッシュは、より最近の現在の日付／時間と終了の日付／時間との間の秒数から得られた回数だけであってもよい。）。安全な認証装置２００は、装置識別子及びより最近の現在の日付／時間と一緒に第２の識別値をサーバ１２０に提供するプロセッサ１１０に対して、上記第２の識別値を提供する。サーバ１２０は、安全な認証装置２００から受信されたより最近の現在の日付／時間と、（例えば、第１の識別値のすぐ前の現在の日付／時間などの）電子装置１００が認証されたときの最後に受信された前の日付／時間との間の（例えば、数秒などの）時間量を決定する。もし電子装置１００が前に認証されなかった場合、この前の日付／時間は、電子装置１００がサーバと最初にペアが構成されたときの日付／時間であろう。サーバ１２０は、より最近の現在の日付／時間と前の複数の日付／時間との間の（例えば、数秒における差などの）時間量を決定し、受信された第２の識別値を、（例えば、数秒などの）時間量から得られた回数だけハッシュする。その結果生じた第２の識別値は、装置１００の安全な認証装置２００から受信された前の（第１の）識別値と等しくなるべきである。特に、もしその結果生じた値が装置１００の安全な認証装置２００から受信された前の（第１の）識別値と等しければ、その場合は認証が確認される。そうでなければ、もしその結果生じた値が装置１００の安全な認証装置２００から受信された前の（第１の）識別値と等しくなければ、その場合はその認証は失敗してその装置は認証されない。安全な認証装置２００を検証すること、もしくは認証することの複数の演算が、以下の図４から図５においてより詳細に説明される。
【００１５】
プライベート鍵が安全な認証装置２００内だけに格納されるので、安全な認証装置２００だけが、プライベート鍵に対して、終了の日付／時間とより最近の現在の日付／時間との間の時間量から得られた数だけハッシュを実行し、その結果をサーバ１２０に提供することができる。次に、サーバは、前の識別値が安全な認証装置２００から受信されて以来ずっと、（例えば、数秒などの）時間量から得られた回数だけ識別値をハッシュし続ける。もし、例えば安全なハッシュアルゴリズム−２５６（ＳＨＡ−２５６）などの強いハッシュ関数が使用されるならば、第三者が安全な認証装置２００により提供された複数の識別値に基づいてプライベート鍵を決定することは非常に困難かもしれない。
【００１６】
図２は、一実施形態に係る安全な認証装置２００のブロック図である。安全な認証装置２００は、（破線を用いて図示された）オプション的なインターフェース２２０と、プライベート鍵（Ｐ．Ｋ．）を発生するための（例えば、エントロピーソースなどの）プライベート鍵発生器２３０と、少なくともプライベート鍵を格納するための不揮発性メモリ２４０と、インデックス番号を提供するインデックスソース２５０と、ハッシュエンジン２６０と、プライベート鍵発生器２３０、不揮発性メモリ２４０、インデックスソース２５０、ハッシュエンジン２６０、及びオプション的なインターフェース２２０との間にある論理的相互接続２７０とを含む。ハッシュエンジン２６０はプライベート鍵を使用して論理的相互接続２７０及び任意のオプション的なインターフェース２２０を介して通信装置２８０に提供される識別値（Ｉ．Ｖ．）を発生する。ここで留意されるように、識別値は、装置２００を認証するときの使用のためである。論理的相互接続２７０は通信装置２８０を用いて直接的に通信してもよいので、インターフェース２２０はオプション的である。オプション的なインターフェース２２０は、シリアルインターフェース、集積回路間（Ｉ２Ｃ）インターフェース、システムパケットインターフェース（ＳＰＩ）、もしくは論理的相互接続２７０と（例えば、携帯電話などの）通信装置２８０との間を通信することができる一般的な任意のインターフェースとしてもよい。インターフェース２２０は有線としてもよいし、及び／もしくは無線としてもよいし、通信装置２８０の一部であってもよい。
【００１７】
論理的相互接続２７０は、オプション的なインターフェース２２０を介して、プライベート鍵発生器２３０、不揮発性メモリ２４０、インデックスソース２５０、ハッシュエンジン２６０、及び通信装置２８０との間の通信ができる任意の回路であってもよい。例えば、論理的相互接続２７０は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、複合プログラム可能なロジックデバイス（ＣＰＬＤ）、または一般的な任意のプログラム可能なロジックもしくはプログラム可能なデバイスであってもよい。
【００１８】
ハッシュエンジン２６０は、例えば暗号法のハッシュなどのハッシュを実行することができる任意のエンジンであってもよい。１つの実施形態において、ハッシュエンジン２４０は、例えばＳＨＡ−２５６もしくはＳＨＡ−５１２などの１つのもしくはそれ以上の安全なハッシュアルゴリズム（ＳＨＡ）ハッシュ、例えばＲＩＰＥＭＤ−１２８もしくはＲＩＰＥＭＤ−１６０などのＲＡＣＥインテグリティプリミティブズエバリューエーションメッセージダイジェスト（ＲＩＰＥＭＤ）の複数のハッシュ、メッセージダイジェストアルゴリズム５（ＭＤ５）の複数のハッシュ、または一般的な任意のハッシュアルゴリズムを実行する。１つの実施形態において、ハッシュエンジン２６０は、例えばＴＥＳＬＡ（調節された効率的なストリーム損失許容性がある認証）などの対称暗号法の認証プロトコルを実行してもよい。
【００１９】
プライベート鍵発生器２３０は、プライベート鍵として使用される乱数を実質的に発生することができる任意のソースであってもよい。１つの実施形態において、プライベート鍵発生器２３０は、本願と同日に出願された特許出願に開示された乱数発生器であってもよい。メモリ２４０は、例えば乱数などのプライベート鍵、及び終了の日付／時間を格納することができる不揮発性メモリであってもよい。インデックスソース２５０は、クロックソース、内部発振器、または装置２００と一緒に集積されたもしくは装置２００から分離された一般的な任意の振動信号発生源であってもよい。代わりに、インデックスソース２５０は、複数の能動型電源もしくは複数のクロック源を必要としない内部の複数の時間参照（または、時間のおおよその経過を決定する能力）であってもよい。ここで使用されるように、インデックス発生器もしくはクロックが装置２００に対して外部となるように、インデックスソース２５０は装置２００に対するポートもしくは入力であってもよい。
【００２０】
一実施形態における演算において、プライベート鍵発生器２３０は、プライベート鍵（Ｐ．Ｋ．）として使用される乱数を発生する。この実施形態において、インデックスソース２５０はクロックであり、インデックス番号は現在の日付／時間を表してもよく、将来の終了の日付／時間は参照番号として使用される、ということが仮定される。参照番号はメモリ２４０内に格納されてもよく、その場合は、論理的相互接続はハッシュエンジン２６０だけがその参照番号にアクセスすることができるように構成された内部のロジックを有する。代わりに、参照番号は、（図示されない）分離されたメモリ内に格納されてもよい。論理的相互接続２７０はメモリ２４０内に乱数を格納し、論理的相互接続はハッシュエンジン２６０だけがその乱数にアクセスすることができるように構成された内部のロジックを有する。安全な認証装置２００が、例えばサーバ１２０などの検証装置とペアを構成する場合、論理的相互接続２７０は現在の日付／時間を識別し、メモリ２４０内に格納された終了の日付／時間からの秒数と現在の日付／時間とをハッシュエンジン２６０に対して指示する。現在の日付／時間は、第三者が将来における日付／時間を安全な認証装置２００に対して提供することを回避するために、安全な認証装置２００により内部的に識別されてもよい。次に、ハッシュエンジン２６０は、乱数に対して、秒数から得られた数だけハッシュを実行する。その結果生じたハッシュ値（すなわち、識別値Ｉ．Ｖ．）と、現在の日付／時間と、安全な認証装置２００の識別子とがサーバ１２０に対して提供される。１つの実施形態において、安全な認証装置２００の識別子は、安全な認証装置２００のメモリ２４０の中に予めプログラムされる。
【００２１】
代わりに、サーバ１２０は、安全な認証装置２００からハッシュ値と現在の日付／時間とを受信すると同時に、識別子を安全な認証装置２００に提供してもよい。この実施形態において、安全な認証装置２００は、メモリ２６０内に装置識別子を格納し、サーバ１２０は、例えばデータ記憶装置内などの、安全な認証装置２００に対して外部に、ハッシュ値と現在の日付／時間と装置識別子とを格納する。安全な認証装置の最初の複数のキーイング演算が以下の図４においてより詳細に説明される。
【００２２】
認証演算において、論理的相互接続２７０は、クロックにより指示された現在の日付／時間とメモリ２４０内に格納された終了の日付／時間との間の複数の秒における差を、ハッシュエンジン２６０に対して指示する。ハッシュエンジン２６０は、乱数に対して、指示された秒数から得られた数だけハッシュを実行する。論理的相互接続２７０は、オプション的なインターフェース２２０を介して、ハッシュ値と、現在の日付／時間と、装置識別子とを、例えばサーバ１２０などの検証装置に対して提供する。次に、サーバ１２０は、安全な認証装置２００の前の認証、もしくは安全な認証装置２００の開始以来ずっと、秒数から得られた回数だけハッシュ値をハッシュし続ける。その結果得られたハッシュ値は、安全な認証装置２００により提供される前のハッシュ値と等しくなるべきである。安全な認証装置２００を検証すること、もしくは認証することの複数の演算が以下の図４から図５においてより詳細に説明される。
【００２３】
従って、図２において例示された一実施形態において、本発明は、論理的相互接続２７０と、論理的相互接続２７０に接続された不揮発性メモリ２４０とを含む装置を備える。プライベート鍵発生器２３０は、プライベート鍵Ｐ．Ｋ．を発生し、プライベート鍵Ｐ．Ｋ．を論理的相互接続２７０を介して不揮発性メモリ２４０内のプライベート鍵Ｐ．Ｋ．を格納するための不揮発性メモリ２４０に供給するために、論理的相互接続２７０に接続される。ハッシュエンジン２６０は論理的相互接続２７０に接続され、論理的相互接続２７０を介してプライベート鍵Ｐ．Ｋ．を受信して、プライベート鍵Ｐ．Ｋ．に対して、（例えば、インデックス番号と参照番号との間の差に基づくなどの）インデックスソース２５０により指示されたインデックス番号に基づいた数だけハッシュを実行して識別値Ｉ．Ｖ．を発生する。論理的相互接続２７０は、オプション的なインターフェース２２０を介して、識別値Ｉ．Ｖ．を例えばサーバ１２０などの検証装置に提供する。
【００２４】
一実施形態において、論理的相互接続２７０、プライベート鍵発生器２３０、不揮発性メモリ２４０、及びハッシュエンジン２６０は、例えばＡＳＩＣ、及び／もしくはＦＰＧＡ、及び／もしくはＣＰＬＤなどの単一の集積装置を構成する。単一の集積装置は、論理的相互接続２７０が不揮発性メモリ２４０内だけにプライベート鍵を格納し、不揮発性メモリ２４０内だけに格納されたプライベート鍵をハッシュエンジン２６０に供給できるように構成される。
【００２５】
結果として、単一の集積装置は、不揮発性メモリ内に格納されたプライベート鍵が他の複数の装置によりアクセス不可能となるように構成される。その結果、他の複数の装置は安全性を危険にさらすためのプライベート鍵を獲得することができない。言い換えると、そのような装置はアクセスされるポートもしくは入力／出力が存在しないので、他の複数の装置は単一の集積装置内に格納されたプライベート鍵を読み出すことができない。
【００２６】
ＴＥＳＬＡ（調節された効率的なストリーム損失許容性がある認証）を実装する１つの実施形態において、ハッシュエンジン２６０によるハッシュの数は、インデックスソース２５０により提供されたインデックス番号と参照番号との間の差に基づき、その差から得られてもよい、ということが考えられる。例えば、もしインデックスソースがクロックソースであってインデックス番号がクロック番号であるならば、その場合はハッシュの数はクロック番号と参照時間との間の差に基づいてもよい。より特定の実施例として、ハッシュの数が現在のタイムスタンプと終了のタイムスタンプとの間の差に基づくとして、クロック番号が現在のタイムスタンプであってもよく、参照時間が終了のタイムスタンプであってもよい。いくつかの複数の実施形態において、終了のタイムスタンプは、安全な認証装置２００の平均寿命を超えるために遠い将来の日付を備える。ここで使用されるように、遠い将来の日付は、例えば現在の日付／時間に少なくとも１０年をプラスした日付などを意味し、または例えば現在の日付／時間に少なくとも５０年もしくはそれ以上をプラスした日付などを意味する。
【００２７】
ＴＥＳＬＡ（調節された効率的なストリーム損失許容性がある認証）を実装する１つの実施形態において、安全な認証装置２００は、暗号法的に安全な認証チップを備えることが考えられ、それはプライベート鍵発生器２３０を用いてルート鍵であって公にリリースされないＫ０と称された「ベース鍵」を作り出す。このベース鍵Ｋ０は、インデックス１…Ｎ及び関連する鍵Ｋ１…ＫＮからなるＴＥＳＬＡ鍵チェーンに対する始点として使用され、ここで、各連続した鍵Ｋｉは公式Ｋｉ＝ＳＨＡ２５６＿ＨＡＳＨ（ｉ−１｜Ｋｉ−１）を用いて前の鍵Ｋｉ−１の暗号法的に安全なハッシュとして計算される。認証された施設において初期化及び内部のキーイングと同時に装置２００を製造する間、Ｎ及びＫＮだけが装置２００から開示され、装置２００のための「暗号法のＤＮＡ署名」を表す。この方法において、ＴＥＳＬＡ鍵チェーンは装置２００に対して内部に作り出され、露出されない。装置２００からの複数のインデックス及び複数の鍵の後に続く複数のリリースは、終了点の絶対的な認証のために後で使用され、認証された製造製品としてそのペディグリを指示する。
【００２８】
図３は、一実施形態に係る、ここで安全な認証プロセッサ３００として参照された、プロセッサを有する安全な認証装置のブロック図である。安全な認証プロセッサ３００は、プロセッサ３３０と、例えばクロックソース３４０などのインデックスソースと、プライベート鍵発生器３５０と、メモリ３６０とを含む。装置３００は、例えば携帯電話などの通信装置３７０と通信するために、オプション的なインターフェース３２０を含んでもよい。プロセッサ３３０は通信装置３７０と直接的に通信してもよいので、インターフェース３２０はオプション的である。プロセッサ３３０は、マイクロプロセッサ、コントローラ、もしくは一般的な任意のプロセッサであってもよい。この実施形態において、プロセッサ３３０は、プライベート鍵発生器とメモリ２６０との間の相互接続を提供する。１つの実施形態において、プロセッサ３３０は、回路に対する外部からのアクセスが不可能である回路であって、それはＡＳＩＣ、及び／もしくはＦＰＧＡ、及び／もしくはＣＰＬＤであってもよい。また、プロセッサ３３０が構成されもしくはプログラムされて、例えば安全なハッシュアルゴリズム（ＳＨＡ）の複数のハッシュ、ＲＡＣＥインテグリティプリミティブズエバリューエーションメッセージダイジェスト（ＲＩＰＥＭＤ）の複数のハッシュ、メッセージダイジェストアルゴリズム５（ＭＤ５）の複数のハッシュ、もしくは一般的な任意の複数のハッシュアルゴリズムなどの１つのもしくはそれ以上のハッシュアルゴリズムを実行してもよい、ということが考えられる。代わりに、プロセッサは（図３において図示されない）分離したハッシュエンジンと相互接続してもよい（例えば、図２参照。）。代わりに、プロセッサ３３０は、例えば通信装置３７０のプロセッサなどの分離したプロセッサであってもよい。しかしながら、プロセッサ３３０のような分離したプロセッサを使用することは、もし分離したプロセッサがアクセス可能であれば、それが他の複数の装置がメモリ３６０内に格納されたプライベート鍵にアクセスすることを可能とするかもしれないので、装置３００の安全性に影響を与えるかもしれない。プライベート鍵発生器３５０は、実質的に乱数を発生してプライベート鍵として使用されることができる任意のソースであってもよい。
【００２９】
一実施形態における演算において、プライベート鍵発生器３５０は、乱数を発生してプライベート鍵として使用される。プロセッサ３３０は、終了の日付／時間を決定し、メモリ内３６０内に終了の日付／時間及び乱数を格納する。安全な認証プロセッサ３００は、例えばサーバ１２０などの検証装置とペアを構成するとき、プロセッサ３３０は現在の日付／時間を識別して、例えばメモリ３６０内に格納された終了の日付／時間と現在の日付／時間との秒数の差を決定する。現在の日付／時間はしばしば、第三者が将来における日付／時間を安全な認証プロセッサ３００に提供することを避けるために、安全な認証プロセッサ３００により内部で識別される。次に、プロセッサ３３０は、乱数に対して、秒数から得られた数だけハッシュを実行する。その結果生じたハッシュ値と、現在の日付／時間と、安全な認証プロセッサ３００の識別子とが、例えばプロセッサとペアが構成されるサーバ１２０などの検証装置に提供される。安全な認証プロセッサ３００の識別子は、安全な認証プロセッサ３００のメモリ３６０の中にプログラムされてもよい。代わりに、検証装置は、安全な認証プロセッサ３００からハッシュ値及び現在の日付／時間を受信すると同時に、識別子を安全な認証プロセッサ３００に提供してもよい。安全な認証プロセッサ３００は、メモリ３６０内に装置識別子を格納し、検証装置は、ハッシュ値と、現在の日付／時間と、装置識別子とを、例えばデータ記憶装置内などの、安全な認証プロセッサ３００に対する外部に格納する。安全な認証プロセッサ３００の最初の複数のキーイング演算が、以下の図４Ａ及び図４Ｂにおいてより詳細に説明される。
【００３０】
認証演算において、プロセッサ３３０は、メモリ３６０から終了の日付／時間及び乱数を検索する。プロセッサ３３０は、現在の日付／時間を識別し、現在の日付／時間と終了の日付／時間との間の秒数を決定する。次に、プロセッサ３３０は、乱数に対して、決定された秒数から得られた数だけハッシュを実行する。プロセッサ３３０は、オプション的なインターフェース３２０を介して、ハッシュ値と、現在の日付／時間と、装置識別子とを、例えばサーバ１２０などの検証装置に提供する。次に、検証装置は、安全な認証プロセッサ３００の前の認証もしくは安全な認証プロセッサ３００の初期化からの秒数から得られた回数の間ハッシュ値をハッシュし続ける。その結果生じたハッシュ値は、安全な認証プロセッサ３００により提供された前のハッシュ値と等しくなるべきである。安全な認証プロセッサ３００を検証すること、もしくは認証することの複数の演算が、以下の図４から図５においてより詳細に説明される。代わりに、一実施形態において、プロセッサ３３０は、終了の日付／時間及び現在の日付／時間の代わりに参照番号及びインデックス番号を使用してもよい。
【００３１】
図４Ａは、図２の安全な認証装置、もしくは本発明の他の複数の安全な認証装置の実施形態の例示的な内部のキーイング演算を例示するフローチャートである。安全な認証装置２００、もしくはそれの特定の複数の構成要素により実行される図４Ａの演算が説明される。しかしながら、複数の演算は、例えば上述した図２から図３において説明された複数の構成要素のうちのいずれかなどの安全な認証装置２００もしくは安全な認証プロセッサ３００の複数の構成要素のいずれかにより実行されてもよい。複数の説明の目的のために、図４Ａの複数の演算が線形として例示されて説明される。しかしながら、図４Ａの複数の演算はまた並列演算であってもよく、すなわち１つのもしくはそれ以上の演算が同時に実行されてもよい。１つの実施形態において、図４Ａの内部のキーイング演算は、例えば不揮発性メモリなどのコンピュータ／プロセッサ読み出し可能なタンジブル記録媒体上に格納されたコンピュータ／プロセッサ実行可能な複数の命令において実行されてもよい。もう１つの実施形態において、複数の命令はプログラム可能なロジックにより実行されてもよい。
【００３２】
４０１において、乱数が安全な認証装置２００のプライベート鍵発生器２３０により発生する。４０２において、安全な認証装置２００は、（例えば、終了の日付／時間などの）参照番号を識別し、もしくは決定する。代わりに、製造時において、参照番号が安全な認証装置２００のメモリ２６０の中にプログラムされてもよい。一実施形態において、インデックス番号は、より最近の認証時において発生された第２のインデックス番号がより早い時間において発生された第１のインデックスよりも小さいように、一連の減少数から取られる。
【００３３】
４０３において、安全な認証装置２００は、乱数及び参照番号を、例えばメモリ２４０内などに格納する。４０４において、安全な認証装置２００は、例えばインデックスソース２５０から提供されるなどの、参照番号とインデックス番号との間の差を決定する。４０５において、安全な認証装置２００は、決定された差から得られた回数だけ乱数をハッシュする。４０６において、安全な認証装置２００は、ハッシュ、インデックス番号、及び／もしくは装置識別子を、例えば装置２００とペアが構成されるサーバ１２０の検証装置に出力する。検証装置は、装置識別子を安全な認証装置２００に割り当て、及び／もしくは当該装置識別子を安全な認証装置２００に提供してもよい。安全な認証装置２００は、メモリ２４０内に装置識別子を格納してもよい。装置２００は、論理的相互接続２７０を介してメモリ２４０内に乱数を格納するので、外部からその乱数にアクセスすることが不可能となり、その結果、他の装置は乱数にアクセスすることができず装置の安全性が危険にさらされることはない。
【００３４】
図４Ｂは、図２の安全な認証装置、もしくは本発明の他の安全な複数の認証装置の実施形態のもう１つの例示的な内部のキーイング演算を例示するフローチャートである。安全な認証装置２００、もしくはそれの特定の複数の構成要素により実行される図４Ｂの複数の演算が説明される。しかしながら、複数の演算は、例えば図２から図３において上述説明された複数の構成要素のいずれかなどの安全な認証装置２００、もしくは安全な認証プロセッサ３００の複数の構成要素のいずれかにより実行されてもよい。複数の説明の目的のために、図４Ｂの複数の演算が線形として例示されて説明される。しかしながら、図４Ｂの複数の演算はまた並列演算されてもよく、すなわち１つのもしくはそれ以上の演算が同時に実行されてもよい。一実施形態において、図４Ｂの内部のキーイング演算は、例えば不揮発性メモリなどのコンピュータ／プロセッサ読み出し可能なタンジブル記録媒体上に格納されたコンピュータ／プロセッサ実行可能な複数の命令において実行されてもよい。もう１つの実施形態において、複数の命令はプログラム可能なロジックにより実行されてもよい。
【００３５】
４１０において、乱数が安全な認証装置２００のプライベート鍵発生器２３０により発生する。４２０において、安全な認証装置２００は終了の日付／時間を識別する。終了の日付／時間が例えば現在の日付／時間に５０年をプラスするなどの安全な認証装置２００の平均寿命を超えるように、終了の日付／時間が識別されてもよい。代わりに、終了の日付／時間は、製造時において安全な認証装置２００のメモリ２６０の中にプログラムされてもよい。
【００３６】
４３０において、安全な認証装置２００は、例えばメモリ２４０内などに乱数及び終了の日付／時間を格納する。４４０において、安全な認証装置２００は、現在の日付／時間から終了の日付／時間までの時間量を決定する。時間量は、例えば秒、分、ミリ秒、日などの任意の時間増加量で測定されてもよい。４５０において、安全な認証装置２００は、決定された時間量から得られた回数だけ乱数をハッシュする。４６０において、安全な認証装置２００は、ハッシュと、現在の日付／時間と、装置識別子とを、例えば装置２００がペアを構成するサーバ１２０などの検証装置に対して出力してもよい。代わりに、安全な認証装置２００は、ハッシュと現在の日付／時間とを出力する。検証装置は、装置識別子を安全な認証装置２００に対して割り当ててもよく、及び／もしくは当該装置識別子を安全な認証装置２００に対して提供してもよい。安全な認証装置２００は、メモリ２４０内に装置識別子を格納してもよい。
【００３７】
図５は、例えば安全な認証装置２００、もしくは他の複数の安全な認証装置を認証するサーバ１２０などの検証装置の演算を例示するフローチャートである。複数の説明の目的のために、図５の複数の演算は線形的に演算するとして例示されて説明される。しかしながら、図５の複数の演算はまた並列演算されてもよく、すなわち、１つのもしくはそれ以上の演算が同時に演算されてもよい。
【００３８】
５１０において、サーバ１２０は、それ自身を認証するために安全な認証装置２００を要求する。代わりにもしくはさらに、安全な認証装置２００は、サーバ１２０を用いてそれ自身を認証するために要求を開始してもよい。例えば、安全な認証装置２００は、データをサーバ１２０に通信することを望んでもよく、サーバ１２０は当該データを通信する前に安全な認証装置２１０が認証することを要求してもよい。５２０において、サーバ１２０のプロセッサ１２４は、インターフェース１２２を介して安全な認証装置２００から次の情報を受信する。すなわち、装置識別子と、日付／時間と、ハッシュ値とである。受信された情報は、メモリ１２６内に格納される。５３０において、サーバ１２０のプロセッサ１２４は、例えばデータ記憶装置からなどのメモリ１２６から、装置識別子と関連する安全な認証装置２００の前の認証の日付／時間を検索する。また、サーバ１２０は、安全な認証装置２００から受信された前のハッシュ値をメモリ１２６から検索する。装置識別子と関連する安全な認証装置２００の前の認証の日付／時間及び安全な認証装置２００から受信された前のハッシュ値は、サーバ１２０と最初のペアを構成する装置２００からであってもよい。
【００３９】
５４０において、サーバ１２０のプロセッサ１２４は、受信された日付／時間から前の認証の日付／時間までの時間量を決定する。時間量は、例えば秒、分、日などの任意の時間増加量で測定されてもよいが、当該時間増加量は、安全な認証装置２００がサーバ１２０とペアが構成されるときに使用される同一の時間増加量であるべきである。例えば、もし安全な認証装置２００がサーバ１２０とペアが構成されたときに使用された時間増加量が秒で測定されたならば、その場合は受信された日付／時間から前の認証の日付／時間までの時間量もまた、秒で測定されるべきである。
【００４０】
５５０において、サーバ１２０のプロセッサ１２４は、安全な認証装置２００から受信されたハッシュ値を、決定された時間量から得られた回数だけハッシュする。例えば、もし決定された時間量が１００秒であれば、安全な認証装置２００はハッシュ値を１００回ハッシュしてもよい。５５５において、サーバ１２０のプロセッサ１２４は、ハッシュの結果が安全な認証装置２００から受信された前のハッシュ値と等しいか否かを決定する。もし、５５５において、サーバ１２０のプロセッサ１２４がハッシュの結果が前に受信されたハッシュと等しくないことを決定するならば、サーバ１２０は５６０に移動する。５６０において、サーバ１２０のプロセッサ１２４は安全な認証装置２００の認証が失敗されたことを決定する。サーバ１２０は、認証が失敗したことを安全な認証装置２００に対して通信してもよい。もし、５５５において、サーバ１２０のプロセッサ１２４がハッシュの結果が前に受信されたハッシュと等しいことを決定するならば、サーバ１２０は５７０に移動する。５７０において、サーバ１２０のプロセッサ１２４は認証が成功したことを決定する。サーバ１２０は、認証が成功したことを安全な認証装置２００に対して通信してもよい。
【００４１】
図６は、図２の安全な認証装置、もしくは他の安全な複数の認証装置の認証演算を例示するフローチャートである。安全な認証装置２００、もしくはそれの特定の複数の構成要素により実行された図６の複数の演算が説明される。しかしながら、複数の演算は、例えば図２から図３において上述説明された複数の構成要素のいずれかなどの安全な認証装置２００もしくは安全な認証プロセッサ３００のいずれかの複数の構成要素により実行されてもよい。複数の説明の目的のために、図６の複数の演算が線形的に演算するとして例示されて説明される。しかしながら、図６の複数の演算はまた並列演算されてもよく、すなわち、１つのもしくはそれ以上の演算が同時に演算されてもよい。
【００４２】
６１０において、安全な認証装置２００は、例えばサーバ１２０などから認証要求を受信する。代わりにもしくはさらに、安全な認証装置２００は、サーバ１２０を用いて認証するために要求してもよい。例えば、安全な認証装置２００は、データを通信することを望んでもよいし、もしくはサーバ１２０上で動作を実行してもよいし、もしくはその逆であってもよい。代わりに、サーバ１２０は、安全な認証装置２００のアイデンティティを検証することを望んでもよい。６２０において、安全な認証装置２００は、メモリ２６０から乱数及び終了の日付／時間（すなわち、参照番号）を検索する。６３０において、安全な認証装置２００は、現在の日付／時間から終了の日付／時間までの時間量を決定する（すなわち、装置２００は、インデックス番号と参照番号との間の差を決定する。）。時間量は、例えば秒、分、日などの任意の時間増加量で測定されてもよい。
【００４３】
６４０において、安全な認証装置２００は、（すなわち、差に基づいて）決定された時間量から得られた回数だけ乱数をハッシュする。例えば、もし時間量が１０００秒ならば、安全な認証装置２００は、乱数を１０００回だけハッシュしてもよい。６５０において、安全な認証装置２００は、ハッシュ値と現在の日付／時間と装置識別子とを、もしあれば、例えばオプション的なインターフェース２２０を通してサーバ１２０に提供する（すなわち、装置２００は、識別値及びインデックス番号を、装置を認証するときの使用のために検証装置に提供する。）。
【００４４】
図７は、図１から図３の安全な認証装置、もしくは他の複数の安全な認証装置の、内部のキーイング演算及び／または暗号法の鍵共有演算を例示するフローチャートである。安全な認証装置２００、もしくはそれの特定の複数の構成要素により実行される図７の複数の演算が例示されて説明される。しかしながら、複数の演算は、例えば図１から図３において上述説明された複数の構成要素のいずれかなどの、安全な認証装置２００もしくは安全な認証プロセッサ３００の複数の構成要素のいずれかにより実行されてもよい。複数の説明の目的のために、図７の複数の演算が線形的に演算するとして説明される。しかしながら、図７の複数の演算はまた並列演算されてもよく、すなわち、１つのもしくはそれ以上の演算が同時に演算されてもよい。複数の説明の目的のために、複数のハッシュ演算において使用される暗号鍵の共有に関する図７の複数の演算が説明される。しかしながら、図７の複数の演算はまた、複数のプライベート鍵の複数の暗号鍵との共有を含んでもよく、もしくは複数のプライベート鍵だけの共有を含んでもよい。
【００４５】
７１０において、第１の安全な認証装置２００及び第２の安全な認証装置２００’が識別される。一実施形態において、第２の安全な装置２００’は、サーバ１２０を備える。第１の及び第２の安全な認証装置は、安全な通信を約束する複数の装置であってもよい。７２０において、第１の安全な認証装置２００は、第２の安全な認証装置２００’に接続される。複数の安全な認証装置は、妨害されもしくはそうでなければ決定される通信のリスクを最小化するために、有線接続を用いて接続されてもよい。代わりに、複数の安全な認証装置は、無線接続を用いて接続されてもよい。７３０において、接続された複数の安全な認証装置は、安全な鍵の確立を実行して共通のルート鍵及び／もしくは共通のプライベート鍵に到着してそれらのハッシュエンジンにより使用される（実施例はディフィへルマン鍵交換である。）。７４０において、複数の装置はお互いから切断されて分離され、使用のための準備完了状態となる。複数のメッセージは、図４から図６において説明された及び／もしくは後述説明された複数の演算を用いて暗号化され及び／もしくは認証されてもよい。
【００４６】
７５０において、第１の安全な認証装置２００及び第２の安全な認証装置２００’は、暗号化された複数のメッセージを送受信して通信するために、及び／もしくは複数の通信を行って認証するために、共有されたルート鍵を使用する。第１の安全な認証装置２００と第２の安全な認証装置２００’との間の通信に関し、両方の装置は、上述した使用のために同一の認証チェーンを有し、両方の装置はまた、分離した秘密鍵チェーンを計算することができる。いま、（対称鍵の暗号化のために）同一の複数の秘密鍵を使用することによる複数の装置間の安全な通信が、共通のインデックス番号だけを第２の装置に対して露出する第１の装置により可能となる。複数の秘密鍵及び／もしくは複数の乱数が複数の装置により外部に露出されなかったので、複数の装置間の通信は実質的に安全なのかもしれない。
【００４７】
また、複数の装置のうちの一方が他方を認証することに関し、上述の代わりとしてもしくは上述に加えて以下のことが考えられる。７６０において、第１の装置２００は、ランダムなプライベート鍵を第２の装置２００’に提供することにより（もしくはその逆により）、第２の装置２００’を認証してもよい。第１の装置は、共有の共通のルート鍵を使用して提供されたランダムなプライベート鍵に基づき、第１の識別値を計算する。７７０において、第２の装置は、共有の共通のルート鍵を使用して提供されたランダムなプライベート鍵に基づき、第２の識別値を計算するであろう。計算された第２の識別値は、第１の装置に提供されて第２の装置を認証する。７８０において、第１の装置は、第２の識別値をそれの第１の識別値と比較する。もし第２の識別値と第１の識別値と等しければ、第２の装置は認証され、そうでなければ、第２の装置は認証されない。言い換えると、第２の装置は、それが共有のルート鍵を知ることを第１の装置に対して検証し、第１の装置により第２の装置に対して提供されたランダムなプライベート鍵に対して、第１の装置と同一の複数のハッシュ演算を実行することができる。
【００４８】
従って、一実施形態において、本発明は、第１のハッシュエンジン２６０及び第１のプライベート鍵Ｐ．Ｋ．を第２の装置２００’に対して発生するための第１のプライベート鍵発生器２３０を有する第１の装置２００と暗号法によりペアを構成するための方法を備える。７１０において、第２のハッシュエンジン２６０’及び第２のプライベート鍵Ｐ．Ｋ．’を発生するための第２のプライベート鍵発生器２３０’を有する第２の装置２００’が識別される。７２０において、第１の装置２００と第２の装置２００’とが接続され、７３０において、第１の装置２００と第２の装置２００’とは共通の鍵を発生する。７４０において、上記複数の装置は切断される。共通のルート鍵及び第１のプライベート鍵は、第１の装置２００の第１のハッシュエンジン２６０により使用されて第２の装置２００’と暗号通信し、共通のルート鍵及び第２のプライベート鍵は、第２の装置２００’の第２のハッシュエンジン２６０’により使用されて第１の装置２００と暗号通信する。
【００４９】
別の一実施形態において、暗号法通信のために複数の装置がペアを構成するための方法が提供される。７１０において、第１の装置２００及び第２の装置２００’が識別される。各装置が図２において例示されたようであってもよい。第１の装置２００は第２の装置２００’に接続され、共通のルート鍵が各装置の各ハッシュエンジンによる使用のために接続された複数の装置により発生する。第１の装置２００は、それのハッシュエンジンを介して共通のルート鍵を使用して第２の装置２００’と暗号通信し、その逆もまた同様である。オプション的に、各装置は、ハッシュエンジンによる使用のためにインデックスソースを持ってもよく、ここで各ハッシュエンジンは、インデックスソースとプライベート鍵と共通のルート鍵とに基づいて識別値を発生する。発生された識別値が、装置を認証するときの使用のために、論理的相互接続を介して提供される。
【００５０】
一実施形態において、プライベート鍵Ｐ．Ｋ．を発生するためのプライベート鍵発生器２３０と、少なくともプライベート鍵を格納するための不揮発性メモリ２４０と、プライベート鍵を使用し、この装置２００がペアを構成する少なくとも１つの他の装置２００’により使用される共通のルート鍵を使用するハッシュエンジン２６０と、プライベート鍵発生器、不揮発性メモリ、及びハッシュエンジンとの間にある論理的相互接続２７０とを含む暗号法の電子装置２００が提供される。ハッシュエンジンは、プライベート鍵及び共通のルート鍵に基づいて識別値を発生する。他の装置２００’を用いて装置２００を認証するときの使用のために、識別値が論理的相互接続を介して提供され、共通のルート鍵は他の装置２００’に暗号通信するために使用される。
【００５１】
一実施形態において、暗号法の通信のためのシステムは複数の装置を備え、ここで各装置２００は、プライベート鍵を発生するためのプライベート鍵発生器２３０と、少なくともプライベート鍵を格納するための不揮発性メモリ２４０と、共通ルート鍵及びプライベート鍵を使用するハッシュエンジン２６０と、プライベート鍵発生器、不揮発性メモリ、及びハッシュエンジンとの間の論理的相互接続２７０とを備える。各装置は、複数の装置をともに接続することにより発生された共通のルート鍵を共有する。各装置２００の各ハッシュエンジンは、共通のルート鍵を使用して複数の装置の他の複数の装置２００’と暗号通信するように構成される。
【００５２】
結果として、２つの分離したチェーンは、各計算されたチェーンのためのハッシュチェーンにおける（少なくとも）１つの異なるビットを用いて計算され、従って、２つのチェーンは２つの識別値を発生し、もし複数のチェーンと結果生じた複数の識別値との両方が発生されたことにより「ルートランダム」（すなわち、ルート鍵及び／もしくは乱数）が知らないならば、各チェーンは他方とは「無関係」のように見える。このことが、同一のメカニズムであるが２つの異なるチェーンを用いる認証と暗号法の安全性との両方を提供する。
【００５３】
ここで説明された複数の方法は、コンピュータシステムにより実行可能な複数のソフトウェアプログラムにより実行されてもよい。さらに、複数の実行には、分散処理、コンポーネント／オブジェクト分散処理、及び並列処理を含んでもよい。代わりにもしくはさらに、バーチャルコンピュータシステム処理が、ここで説明された１つのもしくはそれ以上の方法もしくは機能を実行するように構築されてもよい。
【００５４】
ここで説明された複数の例示は、種々の複数の実施形態の構造の一般的な理解を提供することが意図される。複数の例示は、ここで説明された複数の構造もしくは複数の方法を利用する装置、複数のプロセッサ、及び複数のシステムのすべての要素及び特徴の完全な説明として役目を果たすことは意図されない。多数の他の複数の実施形態は、本開示を検討すると同時に当業者に対して明白であってもよい。本開示の範囲から離れることなしに構造的な及び論理的な複数の代用や複数の変更がなされてもよいように、他の複数の実施形態が利用されて本開示から得られてもよい。さらに、複数の例示は単なる代表であって、スケールで描かれなくてよい。複数の例示内のある複数の比率が誇張されてもよい一方で、他の複数の比率が最小化されてもよい。従って、本開示及び複数の図面は制限的というよりもむしろ例示的としてみなされるべきである。
【００５５】
上述説明された主題は、例示的であって制限的でないと考えられるべきであり、添付された特許請求の範囲はすべて真の精神及び説明の範囲内に入るような複数の変形、複数の強化、及び他の複数の実施形態を包含することが意図される。従って、法律により許容された最大の範囲で、当該範囲は、以下の特許請求の範囲及びそれらの複数の均等物の最も広く許容可能な解釈により決定されるべきであり、上述の詳細説明により制限されもしくは限定されるべきでない。
【００５６】
例示の複数の目的のために、例えばオペレーティングシステムなどの複数のプログラム及び他の複数の実行可能なプログラム構成要素が別個の複数のブロックとしてここで例示される。しかしながら、そのような複数のプログラム及び複数の構成要素は種々の時々においてコンピュータの異なる複数の記録構成要素内に存在し、当該コンピュータの１つのもしくは複数のデータプロセッサにより実行される、ということが認識される。
【００５７】
例示的なコンピューティングシステム環境との接続において説明したが、本発明の複数の実施形態は、多数の他の一般的な目的または特定の目的のコンピューティングシステム環境もしくは構成を用いて動作可能である。コンピューティングシステム環境は、本発明の任意の態様の使用もしくは機能の範囲に関して任意の限定を示唆することは意図されない。さらに、コンピューティングシステム環境は、例示的な動作環境において図示された複数の構成要素のうちの任意の１つもしくは組み合わせに関する任意の従属関係もしくは要件を有するとして解釈されるべきでない。本発明の複数の態様を用いた使用に適しているかもしれない十分に知られた複数のコンピューティングシステム、複数の環境、及び／もしくは複数の構成の複数の例は、これらには限定されないが、複数のパーソナルコンピュータ、複数のサーバコンピュータ、ハンドヘルドもしくはラップトップの複数の装置、マルチプロセッサもしくは複数のシステム、マイクロプロセッサに基づいた複数のシステム、複数のセットトップボックス、プログラム可能なコンシューマエレクロトロニクス、複数の携帯電話、複数のネットワークＰＣ、複数のマイクロコンピュータ、複数のメインフレームコンピュータ、上述の複数のシステムもしくは複数の装置のいずれかを含む複数の分散型コンピューティング環境などを含む。
【００５８】
本発明の複数の実施形態は、例えば１つのもしくはそれ以上のコンピュータもしくは他の装置により実行される、複数のプログラムモジュールなどのコンピュータ実行可能な複数の命令の一般的なコンテキストにおいて説明されてもよい。一般的に、複数のプログラムモジュールは、これらには限定されないが、複数のルーティーン、複数のプログラム、複数のオブジェクト、複数のコンポーネント、及び特定の複数のタスクを実行しもしくは特定の複数のアブストラクトデータタイプを実行する複数のデータ構造を含む。また、本発明の複数の態様は、複数のタスクが通信ネットワークを通してリンクされる複数の遠隔の処理装置により実行される複数の分散型コンピューティング環境において実施されてもよい。分散型コンピューティング環境において、複数のプログラムモジュールは、局所的な及び遠隔の両方の複数のメモリ記録装置を含むコンピュータ記録媒体内に位置してもよい。
【００５９】
演算において、複数のコンピュータ及び／または複数のサーバは、本発明の複数の態様を実行するために、例えばここで例示されたコンピュータ実行可能な命令などの複数のコンピュータ実行可能な命令を実行してもよい。
【００６０】
ここで例示されて説明された本発明の複数の実施形態における複数の演算の実行もしくは性能のオーダは、他に特に規定がなければ、必須ではない。すなわち、複数の演算は、任意のオーダにおいて実行されてもよく、他に特に規定がなければ、本発明の複数の実施形態は、ここで開示された演算よりも追加的なもしくはより少ない演算を含んでもよい。例えば、もう１つの演算の前に、もしくはもう１つの演算と同時に、もしくはもう１つの演算の後に特定の演算を実行し、もしくは遂行することが本発明の複数の態様の範囲内で考えられる。
【００６１】
本発明の複数の実施形態が、コンピュータ実行可能な複数の命令を用いて実行されてもよい。コンピュータ実行可能な複数の命令がタンジブルコンピュータ読み出し可能な記録媒体上の１つのもしくはそれ以上のコンピュータ実行可能な複数のコンポーネントもしくは複数のモジュールの中に編成されてもよい。本発明の複数の態様は、任意の数のそのような複数のコンポーネントもしくは複数のモジュールの編成を用いて実行されてもよい。例えば、本発明の複数の態様は、特定のコンピュータ実行可能な複数の命令または、複数の図面において例示されてここで説明された、特定の複数のコンポーネントもしくは複数のモジュールに限定されない。本発明の他の複数の実施形態は、異なるコンピュータ実行可能な複数の命令、またはここで例示されて説明されたよりも高いもしくは低い機能を有する複数のコンポーネントを含んでもよい。
【００６２】
本発明の複数の態様の複数の要素もしくはそれの複数の実施形態を紹介する場合、冠詞「ａ」、「ａｎ」、「ｔｈｅ」、及び「ｓａｉｄ」は、１つのもしくはそれ以上の要素が存在することを意味することを意図する。用語「備えている」、「含んでいる」、及び「有している」は、記載された複数の要素以外の追加的な複数の要素が存在してもよいことを包括的に意味することが意図される。
【００６３】
上述したことを考慮して、本発明のいくつかの複数の利点が成し遂げられて他の複数の有益な結果が達成されることが理解されるであろう。
【００６４】
例示されもしくは説明された図示された複数の構成要素のすべては必要とされないかもしれない。さらに、いくつかの複数の実施及び複数の実施形態には、追加的な複数の構成要素を含んでもよい。ここで説明された特許請求の範囲の精神もしくは範囲から離れることなしに、複数の構成要素の配列及びタイプにおける複数の変形がなされてもよい。さらに、異なったもしくはより少ない構成要素が提供されてもよく、複数の構成要素は組み合わされてもよい。代わりにもしくはさらに、構成要素はいくつかの複数の構成要素により実行されてもよい。
【００６５】
もし本発明の複数の態様が詳細に説明されたならば、添付された特許請求の範囲において定義された発明の複数の態様の範囲から離れることなしに複数の変更及び複数の変形が可能となることが明白となろう。本発明の複数の態様の範囲から離れることなしに上述した複数の構成、複数の生産物、及び複数の方法において種々の複数の変更がなされるので、上述の説明において含まれた、そして添付の複数の図面において図示されたすべての事項が例示的として解釈され、限定的な意味において解釈されるべきでないということが意図される。
【図１】
0005840138.tif 000002
【図２】
0005840138.tif 000003
【図３】
0005840138.tif 000004
【図４Ａ】
0005840138.tif 000005
【図４Ｂ】
0005840138.tif 000006
【図５】
0005840138.tif 000007
【図６】
0005840138.tif 000008
【図７】
0005840138.tif 000009