(58)【調査した分野】(Int.Cl.,DB名)
前記署名及び前記固有識別子を送信することが、前記信頼できる第三者または前記第2のデバイスから受信した要求に応答して、前記署名及び前記固有識別子を送信することを含む、請求項1に記載の方法。
前記要求がノンスを含み、前記署名を生成することが、前記共有鍵及び前記ノンスを使用して前記固有識別子に暗号学的ハッシュを実行することを含む、請求項2に記載の方法。
前記第1のデバイスの前記識別情報を検証するための前記命令が、前記固有識別子、前記共有鍵、及び前記ノンスを使用して、前記信頼できる第三者によって実行される第2の暗号学的ハッシュ演算の出力と、前記署名を比較する命令を含む、請求項6に記載のコンピュータ可読媒体。
前記固有識別子及び前記共有鍵を前記信頼できる第三者に送信することが、公開鍵インフラストラクチャ暗号化技術を使用して前記固有識別子及び前記共有鍵を暗号化し、前記暗号化された固有識別子及び共有鍵を前記ネットワーク上で送信することを含む、請求項10に記載の方法。
前記固有識別子及び前記共有鍵を前記第1のデバイスに記憶することが、前記共有鍵が別のエンティティによってアクセス可能でないように、前記第1のデバイスの製造中に前記第1のデバイスのメモリを静的にプログラミングすることを含む、請求項10に記載の方法。
前記マイクロコントローラが、前記データ・バスを介して前記プロセッサから前記要求を受信し、前記データ・バスを介して前記署名及び前記固有識別子を前記プロセッサに送信するように前記不揮発性ブート・デバイスに指示するように構成され、
前記プロセッサが、前記ネットワークを介して前記署名及び前記固有識別子を、前記信頼できる第三者に送信するように構成された、
請求項15に記載の不揮発性ブート・デバイス。
前記第1のデバイスが、前記第2のデバイスまたは前記信頼できる第三者から受信した要求に応答して、前記信頼できる第三者に前記固有識別子及び前記署名を送信して、前記信頼できる第三者が、前記第1のデバイスの識別情報を検証し、前記第1のデバイスの識別情報が検証されたときに、前記第2のデバイスに前記共有鍵を通信するように構成されている、請求項25に記載のコンピューティング・システム。
前記第1のデバイスが、前記固有識別子に前記第1の暗号学的ハッシュを実行することによって前記署名を生成するように構成され、前記第1の暗号学的ハッシュが、前記第2の暗号学的ハッシュと同じ演算である、請求項25に記載のコンピューティング・システム。
【発明を実施するための形態】
【0006】
上述したように、共有暗号鍵は、安全な(例えば、符号化された及び/または署名された)通信を可能にするために、デバイスによってしばしば使用される。より具体的には、デバイスは、送信データに署名(例えば、符号化)し、受信データを検証(例えば、復号)するために、共有鍵を利用することができる。例えば、第1のデバイスは、共有鍵を使用してデータに対して暗号学的ハッシュを実行することによってデータに署名し、ハッシュ結果と共に署名データを第2のデバイスに送信することができる。次に、第2のデバイスは、共有鍵を使用して暗号学的ハッシュを実行し、結果を比較することによって、受信データを検証することができる。このように、通信のいずれかの端にあるデバイスは、共有鍵を利用することができる。言い換えれば、共有鍵は、各通信デバイスに安全に通信され得る。
【0007】
理解され得るように、共有鍵は送信データを保護するための基礎であるので、外部の第三者が共有鍵を取得しないことが重要である。このように、共有鍵は、外部の当事者が共有鍵を判定することなく、デバイスに安全に通信されるべきである。様々な方法を使用して、デバイスへの共有鍵の安全な送信を容易にすることができる。そのような方法は、Diffie−Hellman鍵交換、Ron Rivest、Adi Shamir及びLeonard Adleman(RSA)システム・アプローチ、または別の公開鍵インフラストラクチャ・アプローチを含むことができる。しかしながら、これらの方法は計算上複雑であり、膨大な処理能力を利用する。
【0008】
例えば、Diffie−Hellman鍵交換を利用するために、第1及び第2のデバイスは、まず、17などの素数の法、及び3などの素数の法の原始根を判定することができる。次に、第1及び第2のデバイスは、それぞれ秘密の整数を選択することができる。例えば、第1のデバイスは15を選択し、第2のデバイスは13を選択することができる。それらの秘密の整数を使用して、第1及び第2のデバイスは原始根をそのそれぞれの秘密の整数に累乗し、素数の法を使用してモジュロ演算を行うことができる。例えば、第1のデバイスは、3
15mod17を計算することができ、それは6であり、第2のデバイスは、3
13mod17を計算することができ、それは12である。計算された結果は、次に、他のデバイスに送信される。次に各受信デバイスは、受信結果をそれぞれの秘密整数に累乗し、素数の法を使用してモジュロ演算を実行することができる。例えば、第1のデバイスは、10に等しい12
15mod17を計算することができ、それは10であり、第2のデバイスは、6
13mod17を計算することができ、それは同じく10に等しい。このようにして、第1及び第2のデバイスは共に、例えば10という共有鍵を判定することができる。
【0009】
このように、第1及び第2のデバイスの両方は、一般的には、モジュロ演算を迅速かつ効率的に実行するための処理コンポーネントを含む。より具体的には、処理コンポーネントは、複数の指数演算及びモジュロ演算を実行する。さらに、セキュリティを向上させるために、使用される数字のサイズを例えば数百桁まで増加させることができる。言い換えれば、現実的世界の状況では、指数関数演算及びモジュロ演算は、上記の例よりはるかに複雑であり得る。
【0010】
しかしながら、データを保護するために共有鍵を利用することを望むいくつかのデバイスは、その処理能力が制限されていることがある。そのような1つの例は、コンピューティング・システムをブートするために使用される不揮発性ブート・デバイスであり得る。一般に、不揮発性ブート・デバイスは、限定された動作を実行し、制限された処理能力を有する処理コンポーネントを含むことができる。例えば、処理コンポーネントは、整数の算術演算及び論理演算しか実行しない算術論理ユニット(ALU)であってもよい。
【0011】
このようなデバイスの処理能力を高めることは可能ではあるが、コストがかかりすぎる可能性がある。言い換えれば、不揮発性ブート・デバイスの処理能力を増加させることなく、共有鍵のコンピューティング・システムとの安全な通信を可能にすることは有益であろう。
【0012】
したがって、本開示は、最小の処理要件で共有鍵の安全な通信を可能にする技術を記述する。例えば、いくつかの実施形態は、通信を保護するために、公開鍵インフラストラクチャ(PKI)技術よりも計算の複雑さが少ない、共有対称鍵を利用することができる。より具体的には、共用対称鍵アプローチは、モジュロ演算のようなPKI技術で使用されるより広範なコンピュータ計算と比較して、局所組み合わせを使用して主に実装され得る。
【0013】
さらに、いくつかの実施形態は、サーバなどの信頼できる第三者の使用を通じて共有鍵を安全に通信することができる。より具体的には、鍵生成器は、第1のデバイスのための固有識別子及び共有鍵のペアリングを生成することができる。ペアリングは、例えば、製造中に、かつ信頼できる第三者において、第1のデバイスに記憶されてもよい。共有鍵を第2のデバイスに通信するために、第1のデバイスは、その固有識別子と、共有鍵及び、ノンス(例えば、ランダムまたは疑似乱数)を使用して生成された署名を、信頼できる第三者に送信することができる。次に、信頼できる第三者は、固有識別子を使用して、対応する共有鍵を検索し、署名を検証することができる。署名が検証された場合、信頼できる第三者は、それが固有識別子に基づいて調べた安全な鍵が、第1のデバイスに記憶された安全な鍵と同じであることを保証され得る。このように、信頼できる第三者は、第1のデバイスと第2のデバイスとの間の通信チャネル上に共有鍵を公開することなく、共有鍵を安全なチャネルを介して第2のデバイスに通信することができる。その後、第1及び第2のデバイスは、共有鍵を使用して安全に通信することができる。
【0014】
したがって、以下でより詳細に説明するように、デバイス間に既存の安全なチャネルが存在しない場合であっても、共有鍵をデバイスと安全に共有することができる。言い換えれば、署名及び固有識別子だけしか受信しない別の当事者は、その当事者が、信頼できる第三者と安全なチャネルを介して以前に共有された、固有識別子及び共有鍵のペアリングへのアクセス権を有していない限り、共有鍵を判定することが出来ない。さらに、以下でより詳細に説明するように、共有鍵は、第1のデバイスによって実行される最小限の計算で第2のデバイスと安全に共有することができる。より具体的には、第1のデバイスによる処理は、例えば、固有識別子に対して暗号学的ハッシュ演算を実行することによって、共有鍵とノンスとを使用して署名を生成することしか含まなくてもよい。
【0015】
上述したように、本明細書で説明する技術は、コンピューティング・システム内の不揮発性ブート・デバイスに特に有用であり得る。説明を助けるために、不揮発性ブート・デバイス12を備えたコンピューティング・システム10の実施形態を
図1に示す。コンピューティング・システム10は、コンピュータ、ページャ、携帯電話、パーソナル・オーガナイザ、制御回路等のような様々なタイプのいずれかであってもよい。
図1に示す様々な機能ブロックは、ハードウェア要素(回路を含む)、ソフトウェア要素(コンピュータ可読媒体に記憶されたコンピュータ・コードを含む)、またはハードウェア要素とソフトウェア要素の両方の組み合わせを含むことができる。
図1は、特定の実施態様の単なる一例に過ぎず、コンピューティング・システム10に存在し得るコンポーネントのタイプを示すことを意図していることはさらに留意すべきである。
【0016】
図示されるように、コンピューティング・システム10は、中央処理装置14及びメモリ16を含む。より具体的には、中央処理装置14は、メモリ16に記憶された命令を実行して、本明細書に記載されている技術において様々な動作を実行することができる。このように、中央処理装置14は、1つ以上の汎用マイクロプロセッサ、1つ以上の特定用途向けプロセッサ(ASIC)、1つ以上のフィールド・プログラマブル論理アレイ(FPGA)、またはそれらの任意の組み合わせを含むことができる。さらに、メモリ16は、中央処理装置14によって実行可能な命令及び/または中央処理装置14によって処理されるデータを記憶する、有形の非一時的なコンピュータ可読媒体であってもよい。いくつかの実施形態では、メモリ16は、ランダム・アクセス・メモリ(RAM)などの揮発性メモリ及び/または、読出し専用メモリ(ROM)、フラッシュ・メモリ、強誘電体RAM(F−RAM)、ハード・ディスク、フロッピー・ディスク、磁気テープ、光ディスク、あるいはそれらの任意の組み合わせなどの不揮発性メモリを含むことができる。
【0017】
さらに、中央処理装置14は、コンピューティング・システム10内の他のコンポーネントを利用して、様々な機能を実行することができる。1つの機能は、ユーザに情報を提供し、ユーザから制御コマンドを受信することを含む、ユーザとの情報の通信を含むことができる。例えば、中央処理装置14は、スピーカ18にオーディオ・データを提供し、オーディオ・データをユーザに音声として通信するようにスピーカ18に指示することができる。加えて、中央処理装置14は、ビデオデータをディスプレイ20に提供し、ディスプレイ20に、ユーザに情報を提示するグラフィカル・ユーザ・インタフェースを表示するように指示することができる。さらに、情報の受信を容易にするために、中央処理装置14は、1つ以上の入力デバイス22を介してユーザから制御コマンドを受信することができる。いくつかの実施形態では、入力デバイス22は、ボタン、スイッチ、キーボード、光学ペン、マウス、デジタイザ及びスタイラス、音声認識システム、タッチ感知ディスプレイ、またはそれらの任意の組み合わせを含むことができる。
【0018】
さらに、情報は通信インタフェース24を介して外部デバイスと通信することができる。さらに詳細には、通信インタフェース24は、コンピューティング・システム10が、パーソナル・エリア・ネットワーク(例えば、ブルートゥース・ネットワーク)、ローカル・エリア・ネットワーク(例えば、802.11x Wi−Fiネットワーク)、及び/またはワイド・エリア・ネットワーク(例えば、3Gセルラ・ネットワーク)などのネットワークに接続することを可能にすることができる。さらに、通信インタフェース24は、コンピューティング・システム10が、例えば、シリアル・ケーブルを介して外部デバイスに直接接続することを可能にすることができる。
【0019】
上述した機能並びにその他を初期化するために、ブート・デバイス12に記憶されたスタートアップ・ルーチン命令を実行することができる。図示のように、ブート・デバイス12は、マイクロコントローラ26と、スタートアップ・ルーチン命令を記憶するブート・ブロック28のような1つ以上の不揮発性メモリとを含む。したがって、コンピューティング・システム10に電源を投入すると、スタートアップ・ルーチン命令がブート・ブロック28から検索され、中央処理装置14が命令を実行することができる。より具体的には、スタートアップ・ルーチンは、コンピューティング・システム10の適切な機能実行のための基盤を確立することができる。例えば、いくつかの実施形態では、中央処理装置14がスタートアップ・ルーチン命令を実行すると、マルウェア・エラー検出が実行されて、メモリ16に記憶された悪意のあるコード、欠陥コード、または他の方法で破損したコードの存在を、検出することができる。
【0020】
したがって、ブート・デバイス12から中央処理装置14へのスタートアップ・ルーチン命令の安全な通信を確保することが重要である。1つの方法は、共有鍵の使用であってもよい。より具体的には、ブート・デバイス12は、共有鍵を使用してスタートアップ・ルーチン命令に署名(例えば、符号化)し、署名された命令を中央処理装置14に通信することができる。次に、中央処理装置14は、共有鍵を使用して署名された命令を検証(例えば、復号)して、スタートアップ・ルーチンの命令を実行する。言い換えると、共有鍵を利用するために、共有鍵は、ブート・デバイス12及び中央処理装置14の両方と安全に共有することができる。
【0021】
上述したように、共有鍵を共有するための様々な計算集中的な方法を利用することができる。したがって、このような方法を利用するためには、中央処理装置14及びマイクロコントローラ26の処理能力は、効率的に計算を実行するのに十分なものでなければならない。例えば、マイクロコントローラ26は、モジュロ演算を効率的に実行することを求められ得る。しかし、データの符号化/復号などの他の動作を実行するためにマイクロコントローラ26によって利用される処理能力は、モジュロ演算などの計算集中的な計算を実行するために使用されるよりも少なくてもよい。
【0022】
したがって、共有鍵は、異なる中央処理装置14に接続されているとき、または最大でもコンピューティング・デバイス10の各電源投入時にしか共有され得ないので、本明細書で説明される技術は、集中的な計算を利用することなく、また安全でない通信チャネルを介して共有鍵を公開することなく、共有鍵をブート・デバイス12及び中央処理装置14で共有することを可能にする。こうして、マイクロコントローラ26の処理能力が低減することができ、したがって、ブート・デバイス12の製造コストも低減することができる。言い換えれば、本明細書で説明する技術は、一方の当事者(例えば、デバイス)が処理能力によって制限されている場合であっても、共有鍵が安全に通信されることを可能にする。
【0023】
しかしながら、本明細書で説明する技術は、電力制限のあるデバイスを処理することに限定されない。言い換えれば、これらの技術は、共有鍵を安全に通信するために任意のデバイスによって利用されてもよい。説明を助けるために、共有鍵共有システム30のブロック図を
図2に示す。図示の実施形態では、共有鍵共有システム30は、デバイスA32(例えば、ブート・デバイス12)とデバイスB34(例えば、中央処理装置14)との間の安全な通信を可能にすることができる。言い換えると、共有鍵共有システム30は、共有鍵を、デバイスA32及びデバイスB34と安全に通信することができる。
【0024】
共有鍵の通信を容易にするために、鍵共有システム30は、鍵生成器36及び信頼できる第三者38を含む。いくつかの実施形態では、鍵生成器36は、安全な施設におけるデバイスのために、固有識別子及び共有鍵のペアリングを生成することができる。したがって、図示されているように、鍵生成器36は、鍵生成器36の機能を容易にするために、1つ以上の処理コンポーネント40及びメモリ42を含むことができる。いくつかの実施形態では、固有識別子は、メディア・アクセス制御(MAC)アドレスなどのデバイスA32を固有に識別する識別子であってもよい。さらに、共有鍵は、通信されたデータを保護するために使用される暗号鍵(例えば、対称鍵または秘密鍵)であってもよい。
【0025】
いくつかの実施形態では、鍵生成器36はデバイスA32を製造する製造施設の一部であってもよい。説明を助けるために、デバイスA32が製造されるとき、製造者は、鍵生成器36を利用して固有識別子及び共有鍵のペアリングを生成し、ペアリングをデバイスA32に記憶することができる。例えば、ペアリングは、中央処理装置14または別のエンティティによって直接アクセス可能ではなく、またはそれに露出されていない、ブート・ブロック28の部分など、デバイスAの不揮発性メモリに静的にプログラムされてもよい。さらに、ペアリングは安全な施設に記憶されているので、望ましくない侵入の可能性が最小限に抑えられる。こうして、固有識別子及び共有鍵のペアリングはデバイスA32に安全に通信することができる。したがって、図示のように、鍵生成器36は、第1の安全な通信チャネル33を介してデバイスA32に通信可能に結合される。
【0026】
鍵生成器36は、デバイスA32用のペアリングを生成することに加えて、例えば、製造された各デバイスのために、複数のデバイスのそれぞれについて固有識別子及び共有鍵のペアリングを生成することができる。次に、生成されたペアリングは、信頼できる第三者38に安全に通信することができる。
【0027】
一般に、信頼できる第三者38は、鍵生成器36と安全に通信し、複数の固有識別子及び共有鍵のペアリングを安全に記憶することができるデータベースであってもよい。例えば、信頼できる第三者38は、クラウド内に位置するリモートサーバであってもよい。したがって、図示のように、信頼できる第三者38は、受信したペアリングを記憶するために鍵生成器36及びメモリ46との安全な通信を容易にする1つ以上の処理コンポーネント44を含むことができる。
【0028】
鍵生成器36と信頼できる第三者38との間の通信を確保するための任意の適切な手段を利用することができる。例えば、処理コンポーネント40及び44は、鍵生成器36と信頼できる第三者38との間で通信されるデータを暗号化するのに十分な処理能力を含むことができる。いくつかの実施形態において、暗号化は、データ暗号化規格(DES)、高度暗号化規格(AES)、国際データ暗号化アルゴリズム(IDEA)、RSA暗号化、Diffie−Hellman暗号化、または別のPKI暗号化技術を利用することができる。したがって、示すように、鍵生成器36は、第2の安全な通信チャネル35を介して信頼できる第三者38に通信可能に結合される。言い換えれば、鍵生成器36及び信頼できる第三者38は、第2の通信チャネル35を保護するための暗号化技術を利用するために十分な処理能力を備えることができる。いくつかの実施形態では、第2の安全な通信チャネル35は、ワイド・エリア・ネットワーク(WAN)またはローカル・エリア・ネットワーク(LAN)などのネットワークを利用することができる。
【0029】
以下でより詳細に説明するように、デバイスB34と共有鍵を共有するプロセスが初期化されるとき、デバイスA32は、署名及びその固有識別子を信頼できる第三者38に通信することができる。いくつかの実施形態では、デバイスA32は、信頼できる第三者38と直接通信することができる。したがって、図示のように、デバイスA32及び信頼できる第三者38は、安全でない可能性がある第3の通信チャネル37を介して通信可能に結合されてもよい。いくつかの実施形態では、第3の通信チャネル37は、ワイド・エリア・ネットワーク(WAN)またはローカル・エリア・ネットワーク(LAN)などのネットワークを利用することができる。
【0030】
他の実施形態では、デバイスA32は、デバイスB34を介して信頼できる第三者38と通信することができる。言い換えれば、デバイスA32は、デバイスB34に署名及びその固有識別子を通信することができ、デバイスB34は固有識別子及び署名を信頼できる第三者38に中継することができる。したがって、図示されるように、デバイスA32は、最初は安全でない可能性がある第4の通信チャネル39を介してデバイスB34に通信可能に結合される。例えば、コンピューティング・デバイス10において、第4の通信チャネル39は、中央処理装置14とブート・デバイス12とを通信可能に結合するデータ・バスであってもよい。
【0031】
以下でより詳細に説明するように、信頼できる第三者38が固有識別子及び署名を受信すると、信頼できる第三者38は、受信した固有識別子を使用して対応する共有鍵を検索し、受信した共有鍵を使用して受信した署名を検証することができる。署名が検証された場合、信頼できる第三者38は、共有鍵をデバイスB34に安全に通信することができる。
【0032】
一般に、信頼できる第三者38とデバイスB34との間の通信を保護するための任意の適切な手段を利用することができる。例えば、処理コンポーネント40及び中央処理装置14は、信頼できる第三者38とデバイスBとの間で通信されるデータを暗号化するのに十分な処理能力を含むことができる。いくつかの実施形態において、暗号化は、データ暗号化規格(DES)、高度暗号化規格(AES)、国際データ暗号化アルゴリズム(IDEA)、RSA暗号化、Diffie−Hellman暗号化、または別のPKI暗号化技術を利用することができる。したがって、図示されるように、信頼できる第三者38は、第5の安全な通信チャネル41を介してデバイスB34に通信可能に結合されている。言い換えれば、信頼できる第三者38及びデバイスB34は、第5の通信チャネル41を保護する暗号化技術を利用するために十分な処理能力を備えることができる。例えば、コンピューティング・デバイス10において、中央処理装置14及び信頼できる第三者は、通信インタフェース24に接続されたネットワークを介して通信可能に結合されてもよい。言い換えれば、第5の安全な通信チャンネル41は、ワイド・エリア・ネットワーク(WAN)またはローカルエリアネットワーク(LAN)などのネットワークを利用することができる。
【0033】
デバイスB34が共有鍵を受信すると、デバイスA32及びデバイスB34は、共有鍵を使用して通信されたデータを符号化及び復号することによって安全に通信することができる。このようにして、デバイスA32とデバイスBとの間で通信されるデータは、通信されたデータの完全性を検証する共有鍵を使用してデータに署名することによって保護される。上述したように、本明細書に記載の技術を利用して共有鍵を安全に通信することは、鍵共有システム30をセット・アップすることによって可能にすることができる。
【0034】
鍵共有システム30をセット・アップするためのプロセス48の一実施形態を
図3に示す。一般に、プロセス48は、固有識別子及び共有鍵のペアリングを生成すること(プロセス・ブロック50)、第1のデバイスにペアリングを記憶すること(プロセス・ブロック52)、信頼できる第三者に記憶するためにペアリングを送信すること(プロセス・ブロック54)、及び共有鍵を第2のデバイスに安全に通信すること(プロセス・ブロック56)を含む。いくつかの実施形態では、プロセス48は、メモリ16、42、46などの1つ以上の有形の非一時的なコンピュータ可読媒体及び/またはブート・ブロック28(単独または組み合わせのいずれか)に記憶され、中央処理装置14、処理コンポーネント40もしくは44、及び/またはマイクロコントローラ26のような1つ以上の処理コンポーネントによって(単独または組み合わせて)実行される、複数の命令によって実施することができる。
【0035】
したがって、いくつかの実施形態では、鍵生成器36は、デバイスA32のための固有識別子及び共有鍵のペアリングを生成することができる(プロセス・ブロック50)。より具体的には、鍵生成器36は、デバイスA32を固有に識別するための固有識別子を生成してもよい。例えば、一部の実施形態では、固有識別子は、シリアル番号及び製造者識別子を含むMACアドレスであってもよい。より具体的には、シリアル番号は、デバイスA32が製造された順序を示すことができる。言い換えれば、シリアル番号を生成するために、鍵生成器36は、1つのデバイスにシリアル番号を割り当て、シリアル番号をインクリメントし、インクリメントされたシリアル番号を次のデバイスに割り当てることができる。他の実施形態では、固有識別子は、例えば複数のルールのセットに基づいてランダムに生成されてもよい。
【0036】
さらに、鍵生成器36は、デバイスA32と通信されたデータを符号化/復号するために使用される、共有鍵を生成することができる。より具体的には、共有鍵は、デバイスAとデバイスBとの間の通信に使用され得る符号化/復号のタイプに基づいて生成されてもよい。いくつかの実施形態では、共有鍵は、ルールの特定のセットに基づいて生成されてもよい。他の実施形態では、共有鍵は、数字、文字、及び/または記号を含むことができる大きなランダムに生成された文字列であってもよい。共有鍵のサイズは、外部当事者が鍵のすべての可能性を推測できる可能性を低減するように選択することができる。したがって、共有鍵は、80ビット、128ビット、256ビット、またはそれ以上であってもよい。
【0037】
いくつかの実施形態では、固有識別子及び共有鍵は、別々に生成されてもよい。例えば、デバイスA32に対する固有識別子は、共有鍵を生成するためのアルゴリズムにアクセスできない製造者によって生成されてもよい。その後、別個の安全な施設が共有鍵を生成することができる。言い換えれば、鍵生成器36は、製造施設及び/または追加の安全な施設を含むことができる。
【0038】
デバイスA32の固有識別子及び共有鍵が生成されると、鍵生成器36は、メモリ42にペアリングを記憶することができる。より具体的には、固有識別子及び共有鍵は、それらが互いに対応するように記憶することができる。言い換えれば、対応する共有鍵は、固有識別子に基づいて判定されてもよい。いくつかの実施形態では、共有鍵が単一の固有識別子とペアになっている場合、固有識別子は、共有鍵に基づいて判定されてもよい。
【0039】
さらに、鍵生成器36は、デバイスA32に固有識別子及び共有鍵のペアリングを記憶することができる(プロセス・ブロック52)。いくつかの実施形態では、ペアリングは、製造中にデバイスA32に記憶されてもよい。例えば、ブート・デバイス12の製造中に、鍵生成器36は、中央処理装置14により直接アクセスできないブート・ブロック28の一部分のような別のエンティティに、直接アクセス可能でなくまたさらされていない、不揮発性メモリに、ペアリングを静的にプログラムすることができる。いくつかの実施形態では、ペアリングは、例えばディスクリート回路を使用してデバイスA32にハードワイヤ接続されてもよい。他の実施形態では、デバイスA32の固有識別子は、共有鍵へのアクセス権を持たない製造業者によって記憶されてもよい。その後、別個の安全な施設、例えば共有鍵を生成した安全な施設は、それが固有識別子とペアになるようにデバイスAに共有鍵を記憶することができる。言い換えれば、ブート・デバイス12の製造が完了した後に、ペアリングをブート・デバイス12に記憶することができる。
【0040】
より具体的には、ペアリングは、製造施設などの安全な施設でデバイスA32に記憶されてもよい。いくつかの実施形態では、安全な施設は、外部当事者がペアリングへのアクセス権を得る可能性を低減する侵入防止システムを含むことができる。このように、特に、製造中にペアリングが記憶されるとき、共有鍵は、デバイスA32に安全に通信することができる。
【0041】
さらに、固有識別子及び共有鍵のペアリングは、信頼できる第三者38に記憶することができる(プロセス・ブロック54)。より具体的には、ペアリングは、例えば、ネットワークを介して、鍵生成器36から信頼できる第三者38に通信することができる。このような実施形態では、転送されたデータを暗号化することによってペアリングを安全に通信することができる。より具体的には、鍵生成器36は、ペアリングを暗号化し、暗号化されたペアリングを信頼できる第三者38に通信することができる。次に、信頼できる第三者38は、受信したペアリングを暗号解読し、暗号解読されたペアリングをメモリ46に記憶する。
【0042】
次に、共有鍵は、信頼できる第三者38からデバイスB34に安全に通信することができる(プロセス・ブロック56)。いくつかの実施形態では、共有鍵は、例えば、ネットワークを介して信頼できる第三者38からデバイスB34に通信されてもよい。そのような実施形態では、共有鍵は、転送されたデータを暗号化することによって安全に通信することができる。より具体的には、信頼できる第三者38は、共有鍵を暗号化し、暗号化された鍵をデバイスB34に通信することができる。次に、デバイスB34は、受信した鍵を暗号解読し、例えばメモリ16に暗号解読された共有鍵を記憶する。
【0043】
しかしながら、共有鍵は、デバイスA32とデバイスB34との間の通信を保護するために使用されるので、共有鍵を秘密に保たねばならない。したがって、共有鍵をデバイスB34に通信するプロセスは、外部第三者が共有鍵を取得する可能性を低減するためのセキュリティ手段を含むことができる。説明を助けるため、共有鍵を通信するために使用される、信頼できる第三者38、デバイスB34、及びデバイスA32の間のデータ・フローを、
図4に記載する。
【0044】
図示された実施形態では、デバイスB34は、デバイスA32に、その固有識別子及び署名(矢印58)について要求を送信することができる。例えば、コンピューティング・システム10において、中央処理装置14は、データ・バスを介してブート・デバイス12に要求を通信することができる。いくつかの実施形態では、署名は、メッセージのオリジナリティを提供するために使用される乱数または疑似乱数であり得る、ノンスを使用して生成され得る。したがって、要求とともに、デバイスB34はノンスを送信することができる。他の実施形態では、信頼できる第三者38は、ノンスと共にデバイスA32に要求を送信(図示せず)することができる。
【0045】
この要求に応答して、デバイスA32は署名を生成することができる(矢印60)。いくつかの実施形態では、署名は、ノンス及び共有鍵を使用して固有識別子に対して暗号学的ハッシュを実行することによって生成することができる。例えば、コンピューティング・システム10では、マイクロコントローラ26が署名を生成することができる。
【0046】
次に、デバイスA32は、署名と共にデバイスB34に固有識別子を送信することができ(矢印62)、デバイスB34は、信頼できる第三者に固有識別子及び署名を中継することができる(矢印64)。例えば、コンピューティング・システム10において、ブート・デバイス12は、データ・バスを介して固有識別子及び署名を中央処理装置14に通信することができる。中央処理装置14は、通信インタフェース24に接続されたネットワークを介して、固有識別子及び署名を信頼できる第三者に中継することができる。他の実施形態では、デバイスA32は、固有識別子及び署名を、信頼できる第三者38に直接通信(図示せず)することができる。
【0047】
受信した固有識別子を使用して、信頼できる第三者38は、デバイスA32に記憶された共有鍵を検索することができる(矢印66)。さらに、共有鍵を使用して、信頼できる第三者38は、受信した署名を検証することができる(矢印68)。例えば、上述のコンピューティング・システム10を参照すると、信頼できる第三者38は、メモリ46から共有鍵を検索し、処理コンポーネント44を使用して署名を検証することができる。より具体的には、信頼できる第三者38は、署名を生成するためにデバイスA32によって実行される共有鍵を使用して、固有識別子について同じ動作(例えば、暗号学的ハッシュ)を実行することによって、署名を検証することができる。
【0048】
信頼できる第三者38によって判定された署名がデバイスA32から受信した署名と一致する場合、信頼できる第三者38は共有鍵をデバイスB34に通信することができる(矢印70)。例えば、上述のコンピューティング・システム10を参照すると、信頼できる第三者38は、通信インタフェース24に接続されたネットワークを介して、共有鍵を中央処理装置14に通信することができる。
【0049】
共有鍵が受信されると、デバイスB34は、共有鍵を記憶することができる(矢印72)。例えば、コンピューティング・システム10において、中央処理装置14は、共有鍵をメモリ16に記憶することができる。上述したように、共有鍵の露出を制限することが重要である。このように、中央処理装置14は、別のエンティティによって直接アクセス可能ではなく、または別のエンティティに露出されないように、共有鍵を記憶することができる。言い換えると、共有鍵は、デバイスBに安全に記憶することができる。
【0050】
このようにして、デバイスA32とデバイスB34との間のその後の通信(矢印74)は、例えば、共有鍵で送信データに署名することによって、共有鍵を使用して送信データの完全性を検証することによって保護することができる。例えば、コンピューティング・システム10において、中央処理装置14は、共有鍵を使用して暗号学的ハッシュを実行することによって、メモリ16から共有鍵を検索し、データに署名(例えば、符号化)することができる。署名されたデータを受信すると、マイクロコントローラ26は、共有鍵を使用して同じ暗号学的ハッシュを実行することによって、不揮発性メモリ(例えば、ブート・ブロック28)から共有鍵を検索し、データを検証(例えば、復号)する。より具体的には、中央処理装置14によって実行される暗号学的ハッシュの結果を、マイクロコントローラ26によって実行される暗号学的ハッシュの結果と比較することによって、結果を検証することができる。そして、結果が一致する場合、マイクロコントローラ26は、中央処理装置14の識別情報を検証し、及び/またはデータの識別情報が変更されていないことを検証することができる。次に、マイクロコントローラ26は、検証されたデータを処理することができる。
【0051】
同様に、マイクロコントローラ26は、共有鍵を使用して暗号学的ハッシュを実行することによって、不揮発性メモリ(例えば、ブート・ブロック28)から共有鍵を検索し、データに署名(例えば、符号化)することができる。中央処理装置14は、署名されたデータを受信すると、メモリ16から共有鍵を検索し、共有鍵を使用して同じ暗号学的ハッシュを実行することによってデータを検証(例えば、復号)することができる。より具体的には、中央処理装置14によって実行される暗号学的ハッシュの結果を、マイクロコントローラ26によって実行される暗号学的ハッシュの結果と比較することによって、結果を検証することができる。そして、結果が一致すると、中央処理装置14は、マイクロコントローラ26の識別情報を検証し、及び/またはデータが変更されていないことを検証することができる。次に、中央処理装置14は検証されたデータを処理することができる。Twofish、Serpent、AES、Blowfish、CAST5、RC4、3DES、及びIDEAなどの様々な符号化/復号技術を利用することができる。このようにして、共有鍵を他のエンティティに露出することなく、データの通信を保護することができる。
【0052】
データ・フローを実施するためのプロセス76の一実施形態を
図5に示す。一般に、プロセス76は、第1のデバイスから固有識別子及び署名を要求し(プロセス・ブロック78)、署名を生成し(プロセス・ブロック80)、固有識別子及び署名を信頼できる第三者に送信し(プロセス・ブロック82)、共有鍵を検索し(プロセス・ブロック84)、署名を検証し(プロセス・ブロック86)、共有鍵を第2のデバイスに送信し(プロセス・ブロック88)、そして共有鍵を使用して通信を復号/符号化する(プロセス・ブロック90)ことを含む。いくつかの実施形態では、プロセス76は、メモリ16、42、46及び/またはブート・ブロック28などの1つ以上の有形の非一時的なコンピュータ可読媒体に記憶され、中央処理装置14、処理コンポーネント40あるいは44、及び/またはマイクロコントローラ26などの、1つ以上の処理コンポーネントによって実行される、命令によって実施することができる。
【0053】
データ・フローに示すように、プロセス76はデバイスB34によって初期化することができる。例えば、デバイスB34は、デバイスB34が、デバイスA32との通信が所望されているが、デバイスB34は共有鍵を知らない、と判定した場合に、プロセス76を初期化することができる。他の実施形態では、プロセス76は、信頼できる第三者38及び/またはデバイスB34によって初期化されてもよい。例えば、プロセス76は、デバイスB34及びデバイスA32が、例えばコンピューティング・システム10の作動開始時またはコンピューティング・システム10の電源投入時ごとに初めて通信可能に結合されている、とデバイスB34または信頼できる第三者38が判定した場合に、初期化されてもよい。
【0054】
プロセス76が初期化されると、固有識別子及び署名の要求がデバイスA32に通信される(プロセス・ブロック78)。データ・フローにあるように、要求は、例えばデバイスB34がプロセス76を初期化すると、デバイスB34からデバイスA32に通信されてもよい。他の実施形態では、信頼できる第三者38がプロセス76を初期化すると、要求は信頼できる第三者38からデバイスB34に通信され、デバイスB34は要求をデバイスA32に中継することができる。追加的にまたは代替的に、要求は信頼できる第三者38からデバイスA32に直接通信することができる。
【0055】
上述したように、署名は、固有識別子、共有鍵、及び/またはノンスを使用して生成することができる。したがって、署名を生成するために使用されたノンスは、要求と共にデバイスA32に通信されてもよい(プロセス・ブロック92)。一般に、ノンスは乱数または疑似乱数であってもよい。いくつかの実施形態では、ノンスは、信頼できる第三者38が、ノンスを利用してデバイスA32によって返された署名を検証することができるように、信頼できる第三者38によって生成されてもよい。他の実施形態では、ノンスはデバイスB34によって生成されて、デバイスA32及び信頼できる第三者38の両方に通信されてもよい。
【0056】
要求の受信に応答して、デバイスA32は署名を生成することができる(プロセス・ブロック80)。より具体的には、デバイスA32は、共有鍵及び受信したノンスを使用して署名を生成することができる。いくつかの実施形態では、デバイスA32は、共有鍵及びノンスを鍵として使用して固有識別子に対して暗号学的ハッシュを実行することによって、署名を生成することができる。暗号学的ハッシュ関数の出力(例えば、結果)は、署名である。さらに、ノンスは乱数または疑似乱数とすることができるので、署名は外部の当事者が再現するのを困難にすることができる。
【0057】
次に、デバイスA32は、生成された署名及びその固有識別子を信頼できる第三者38に通信することができる(プロセス・ブロック82)。データ・フローにあるように、署名及び固有識別子は、デバイスA32からデバイスB34に通信され、デバイスB34は、署名及び固有識別子を信頼できる第三者38に中継することができる。追加的にまたは代替的に、署名及び固有識別子は、デバイスA32から信頼できる第三者38に直接通信されてもよい。
【0058】
受信した固有識別子を使用して、信頼できる第三者38は、デバイスA32の対応する共有鍵を検索することができる(プロセス・ブロック84)。上述したように、信頼できる第三者38は、例えばメモリ46に、複数のデバイスに対する固有識別子及び共有鍵のペアリングを記憶することができる。したがって、信頼できる第三者38は、記憶されたペアリングを検索して、受信した固有識別子に対応する共有鍵を見つけることができる。
【0059】
次に、信頼できる第三者38は、デバイスA32から受信した署名を検証することができる(プロセス・ブロック86)。より具体的には、信頼できる第三者38は共有鍵とノンスを有するので、信頼できる第三者38は、デバイスA32によって使用されるのと同じ動作を実行して、署名を生成することができる。例えば、信頼できる第三者38は、共有鍵とノンスを鍵として使用して、固有識別子に対して同じ暗号学的ハッシュを実行することができる。次に、暗号学的ハッシュ関数の出力を、受信した署名と比較することができる。署名が一致する場合、信頼できる第三者38は、デバイスA32が実際に共有鍵を知っていると判定することができる。言い換えれば、共有鍵はデバイスA32に固有であるので、信頼できる第三者38は、デバイスA32の識別情報を検証するために署名を使用することができる。
【0060】
一方、署名が一致しない場合、信頼できる第三者38は、外部の第三者がデバイスA32であると偽っていると判定することができる。言い換えれば、信頼できる第三者38は、外部の第三者が共有鍵を判定しようと試みている、と判定することができる。いくつかの実施形態では、これはコンピューティング・システム10への侵入の試みを示し得る。このように、信頼できる第三者38は、共有鍵を検索するさらなる試みをブロックし、及び/または可能性のある侵入をオペレータに通知することができる。
【0061】
署名が検証された場合、信頼できる第三者38は、共有鍵をデバイスB34に安全に通信することができる(プロセス・ブロック88)。より具体的には、信頼できる第三者38は、共有鍵を暗号化し、暗号化された鍵をデバイスB34に送信することができる。次に、デバイスB34は、共有鍵を暗号解読し、例えばメモリ16に記憶することができる。
【0062】
続いて、デバイスA32及びデバイスB34は、共有鍵を使用してデータを符号化及び復号することによって安全に通信することができる(プロセス・ブロック90)。一般に、デバイスA32は、共有鍵を使用してデータに署名(例えば、符号化)し、署名されたデータをデバイスB34に送信することができる。いくつかの実施形態では、デバイスA32は、共有鍵を使用してデータに対する暗号学的ハッシュを実行することにより、データに署名することができる。次にデバイスA32は、署名されたデータをデバイスBに送信することができる。いくつかの実施形態では、署名されたデータは、デバイスA32によって実行された暗号学的ハッシュの結果とともにデータを含むことができる。デバイスB34は、受信データを検証(例えば、復号)し、処理することができる。いくつかの実施形態では、デバイスB34は、データに対して同じ暗号学的ハッシュを実行し、デバイスA32によって実行された暗号学的ハッシュの結果を、デバイスB34によって実行された暗号学的ハッシュの結果と比較することによって、署名されたデータを検証することができる。より具体的には、結果が一致した場合、デバイスB34は、デバイスA32の識別情報を検証し、及び/またはデータが変更されていない(例えば、改竄されていない)ことを検証することができる。さらに、いくつかの実施形態では、同じ暗号学的ハッシュ関数が、デバイスA32、信頼できる第三者38、及びデバイスB34によって使用されて、署名を生成し、送信データを署名/検証することができる。
【0063】
このようにして、デバイスA32及びデバイスB34は、安全な通信チャネル(例えば、通信チャネル39)をセット・アップすることができる。したがって、コンピューティング・システム10において、ブート・デバイス12は、スタートアップ・ルーチン命令を中央処理装置14に安全に通信することができる。より具体的には、マイクロコントローラ26は、共有鍵を使用してスタートアップ・ルーチン命令に署名(例えば、符号化)し、符号化された命令を中央処理装置14に送信することができる。次に、中央処理装置14は、命令を検証(例えば、復号)してスタートアップ命令を実行することができる。さらに、共有鍵が中央処理装置14及びブート・デバイス12の両方に安全に通信されるので、外部の第三者がスタートアップ・ルーチン命令を変更するリスクが最小限に抑えられる。
【0064】
したがって、本開示の技術的効果は、共有鍵のデバイスへの安全な通信を可能にすることを含む。実際、本技術は、デバイスの1つが処理能力に制限がある場合であっても、共有鍵をデバイスに安全に通信することを可能にする。
【0065】
本発明は、様々な修正及び代替形態が可能であるが、特定の実施形態は、図面の例として示されており、本明細書において詳細に説明されている。しかしながら、本発明は開示された特定の形態に限定されるものではないことを理解されたい。むしろ、本発明は、以下の添付の特許請求の範囲によって規定される本発明の精神及び範囲内に入るすべての修正、等価物、及び代替物を包含するものである。
共有鍵をデバイスに安全に通信するために使用されるシステム及び方法。一実施形態では、第1のデバイス(32)及び第2のデバイス(34)に共有鍵を安全に通信する方法であり、前記第1のデバイスを使用して、前記第1のデバイス(32)に関連付けられた共有鍵及び固有識別子のペアリングを、鍵生成器(36)から受信すること(52)と、信頼できる第三者(38)を使用して、前記鍵生成器(36)から前記共有鍵及び固有識別子のペアリングを受信すること(54)と、前記第1のデバイス(32)を使用して、前記固有識別子及び前記共有鍵を使用する署名を生成すること(80)と、前記第1のデバイス(32)を使用して、前記署名及び前記固有識別子を前記信頼できる第三者(38)に送信すること(82)と、前記信頼できる第三者(38)を使用して、前記署名に基づいて前記固有識別子を検証すること(86)と、前記信頼できる第三者(38)を使用して、前記固有識別子が検証されたときに前記共有鍵を判定することと、前記信頼できる第三者(38)を使用して、前記第1のデバイス(32)及び前記第2のデバイス(34)が、前記共有鍵を使用して通信データを符号化及び復号することによって安全に通信することを可能にするために、前記第2のデバイス(34)に前記共有鍵を送信すること(88)とを説明する。