(57)【特許請求の範囲】
【請求項１】
コンピュータシステムを動作させる方法であって、
前記コンピュータシステムにおいて、前記コンピュータシステムの複数のハードウェア構成要素の各々に関連付けされた検証入力情報を取得するステップであって、前記検証入力情報は前記コンピュータシステムの前記複数のハードウェア構成要素の各々の識別子を含む情報取得のステップと、
前記コンピュータシステムにおいて、前記コンピュータシステムの目下のハードウェア構成を表している暗号結果を取得するように前記検証入力情報を暗号的に処理するステップと、
前記コンピュータシステム上に保存された被署名値に対して前記コンピュータシステム上に保存された検証鍵を暗号的に適用することによって検証値を算定するステップと、
前記コンピュータシステムにおいて、前記暗号結果の前記検証値との比較に応じて、前記複数のハードウェア構成要素のうちの少なくとも1つに関するさらなる動作を許可するか禁止するかを決定するステップであって、前記検証値は前記コンピュータシステムの所定のハードウェア構成の複数の構成要素の各々の識別子を含んだデバイス整合性情報を含む、決定ステップと、
を含む方法。
【請求項２】
前記コンピュータシステムにおいて、
前記コンピュータシステム上の記憶装置から前記検証値にアクセスするステップをさらに含む請求項1に記載の方法。
【請求項３】
前記アクセスのステップは前記コンピュータシステムのワンタイムプログラマブルメモリから前記検証値にアクセスするステップを含む、請求項2に記載の方法。
【請求項４】
前記暗号的処理のステップは前記検証入力情報と前記コンピュータシステム上に保存された秘密鍵とを用いて前記暗号結果を作成するステップを含む、請求項1に記載の方法。
【請求項５】
前記暗号結果とモバイル通信デバイスにある保存済み検証値との比較を行うステップをさらに含む請求項4に記載の方法。
【請求項６】
前記コンピュータシステム上でワンタイムプログラマブルメモリ内に前記暗号結果を保存するステップをさらに含む請求項1に記載の方法。
【請求項７】
前記保存のステップは前記暗号結果が決定された最初の時点でフィールドプログラマブル読み出し専用メモリをプログラムするステップを含む、請求項6に記載の方法。
【請求項８】
前記暗号的処理のステップは前記検証入力情報に対して一方向ハッシュ関数を適用するステップを含む、請求項1に記載の方法。
【請求項９】
前記取得、処理および決定のステップは、周期的または時間の経過以外のトリガー性イベントに対する応答の少なくとも一方により実行されている、請求項1に記載の方法。
【請求項１０】
前記暗号結果を前記コンピュータシステムからリモート装置に向けて送信するステップと、
前記コンピュータシステムにおいて前記リモート装置から前記比較の指標を受け取るステップと、
をさらに含むとともに、
前記決定のステップが前記指標に基づいている、
請求項1に記載の方法。
【請求項１１】
構成要素からなる組と、
コンピューティングデバイスの複数のハードウェア構成要素と通信可能に結合させたプロセッサであって、該プロセッサは、
前記構成要素の組の前記複数のハードウェア構成要素の各々に関連付けされた検証入力情報であって、前記コンピューティングデバイスの前記複数のハードウェア構成要素の各々の識別子を含んだ検証入力情報を取得するステップと、
前記コンピューティングデバイスの目下のハードウェア構成を表した暗号結果を取得するように前記検証入力情報を暗号的に処理するステップと、
前記デバイス上に保存された被署名値に対して前記デバイス上に保存された検証鍵を暗号的に適用することによって検証値を算定するステップであって、前記検証値は、前記コンピューティングデバイスの所定のハードウェア構成の複数の構成要素の各々の識別子を含んだデバイス整合性情報を含む、算定ステップと、
前記暗号結果の前記検証値との比較に応じて、前記複数のハードウェア構成要素のうちの少なくとも1つに関するさらなる動作を許可するか禁止するかを決定するステップと、
を行うように構成されたプロセッサと、
を備えるコンピューティングデバイス。
【請求項１２】
前記プロセッサはさらに、
前記コンピューティングデバイス上の記憶装置から前記検証値にアクセスするステップと、
前記暗号結果の前記検証値との比較を行うステップと、
を行うように構成されている、請求項11に記載のデバイス。
【請求項１３】
前記プロセッサはワンタイムプログラマブルメモリを含むとともに、前記プロセッサは前記ワンタイムプログラマブルメモリから検証値にアクセスするように構成されている、請求項12に記載のデバイス。
【請求項１４】
前記検証入力情報を暗号的に処理するために前記プロセッサは、前記検証入力情報と前記デバイス上に保存された秘密鍵とを用いて前記暗号結果を作成するように構成されている、請求項11に記載のデバイス。
【請求項１５】
前記構成要素の組の各々は前記関連付けされた検証入力情報を提供するように構成されている、請求項11に記載のデバイス。
【請求項１６】
前記プロセッサはさらに、前記暗号結果を取得するために前記検証入力情報に対して一方向ハッシュ関数を適用するように構成されている、請求項11に記載のデバイス。
【請求項１７】
前記プロセッサは、周期的または時間の経過以外のトリガー性イベントに対する応答の少なくとも一方により、さらなる動作を許可するか禁止するかを決定するように構成されている、請求項11に記載のデバイス。
【請求項１８】
前記プロセッサはさらに、前記デバイス上でワンタイムプログラマブルメモリ内に前記暗号結果を保存するように構成されている、請求項11に記載のデバイス。
【請求項１９】
前記プロセッサは、前記暗号結果を保存するために前記暗号結果が決定された最初の時点でフィールドプログラマブル読み出し専用メモリをプログラムするように構成されている、請求項18に記載のデバイス。
【請求項２０】
前記プロセッサと通信可能に結合させた送受信器をさらに備えており、前記プロセッサはさらに、
前記送受信器を介してリモートシステムに向けて前記暗号結果を送ること、
前記送受信器を介してリモートシステムから指標を受け取ること、
を行うように構成されており、
前記プロセッサは、前記指標に基づいてさらなる動作を許可するか禁止するかを決定するように構成されている、請求項11に記載のデバイス。
【請求項２１】
コンピューティングデバイスの複数のハードウェア構成要素の各々と関連付けされた構成要素情報であって、
前記コンピューティングデバイスの前記複数のハードウェア構成要素の各々の識別子を含んだ構成要素情報を取得するための手段と、
暗号結果を取得するために前記構成要素情報を暗号的に処理するための手段と、
不揮発性記憶装置内に保存された被署名値に対して前記コンピューティングデバイス上に保存された検証鍵を暗号的に適用することによって検証値を算定するための手段であって、前記検証値は、前記コンピューティングデバイスの所定のハードウェア構成の複数の構成要素の各々の識別子を含んだデバイス整合性情報を含む、算定手段と、
前記暗号結果の前記検証値との比較を行うための手段と、
前記暗号結果の前記検証値との前記比較に応じて、前記複数のハードウェア構成要素のうちの少なくとも1つの動作を許可するか禁止するかを決定するための手段と、
を備えるコンピューティングデバイス。
【請求項２２】
前記暗号的処理のための手段は、前記構成要素情報と前記コンピューティングデバイス上に保存された秘密鍵とを暗号的に合成するための手段を含む、請求項21に記載のデバイス。
【請求項２３】
前記検証値を保存するためのワンタイムプログラマブルメモリ手段をさらに備える請求項21に記載のデバイス。
【請求項２４】
前記ワンタイムプログラマブルメモリ手段はフィールドプログラマブル読み出し専用メモリを含む、請求項23に記載のデバイス。
【請求項２５】
前記取得のための手段は、周期的または時間の経過以外のトリガー性イベントに対する応答の少なくとも一方により前記構成要素情報を取得するように構成されている、請求項21に記載のデバイス。
【請求項２６】
前記暗号的処理のための手段は、前記構成要素情報に対して一方向ハッシュ関数を適用するための手段を含む、請求項21に記載のデバイス。
【請求項２７】
前記暗号結果をリモートシステムに向けて送るため、および
前記リモートシステムから指標を受け取るために、
前記暗号的処理のための手段および前記決定のための手段と通信可能に結合させた送受信器手段をさらに備えており、
前記決定のための手段は前記指標に基づいて前記さらなる動作を許可するか禁止するかを決定するように構成されている、請求項21に記載のデバイス。
【請求項２８】
コンピューティングデバイスのコンピュータ可読記録媒体であって、
コンピューティングデバイスの複数のハードウェア構成要素の各々と関連付けされた構成要素情報であって、前記コンピューティングデバイスの前記複数のハードウェア構成要素の各々の識別子を含んだ構成要素情報を取得すること、
前記コンピューティングデバイスの目下のハードウェア構成を表している暗号結果を取得するために前記構成要素情報を暗号的に処理すること、
前記コンピューティングデバイスの所定のハードウェア構成の前記構成要素の各々の識別子を含んだデバイス整合性情報を含む検証値を算定するために前記コンピューティングデバイス上に保存された被署名値に対して前記コンピューティングデバイス上に公開保存された検証鍵を暗号的に適用すること、
前記暗号結果の前記検証値との比較を行うこと、および
前記暗号結果の前記検証値との前記比較に応じて、前記複数のハードウェア構成要素の少なくとも1つのさらなる動作を許可するか禁止するかを決定すること、
をコンピュータに実行させるように構成したコンピュータ読み取り可能命令を備えるコンピュータ可読記録媒体。
【請求項２９】
前記検証値を取得するように構成した前記命令は、前記コンピュータに対して前記コンピューティングデバイスのワンタイムプログラマブルメモリから前記検証値にアクセスさせるように構成されている、請求項28に記載のコンピュータ可読記録媒体。
【請求項３０】
前記コンピュータに対して前記構成要素情報を暗号的に処理させるように構成した前記命令は、前記コンピュータに対して前記構成要素情報と前記コンピューティングデバイス上に保存された秘密鍵とを用いて前記暗号結果を作成するように構成されている、請求項28に記載のコンピュータ可読記録媒体。
【請求項３１】
前記コンピュータに対して、前記暗号結果が取得された最初の時点で前記コンピューティングデバイスのワンタイムプログラマブルメモリ内に前記暗号結果を前記検証値として保存させるように構成した命令をさらに備える請求項28に記載のコンピュータ可読記録媒体。
【請求項３２】
前記コンピュータに対して前記構成要素情報を取得させるように構成した前記命令は、前記コンピュータに対して周期的または時間の経過以外のトリガー性イベントに対する応答の少なくとも一方により前記構成要素情報を取得させるように構成されている、請求項28に記載のコンピュータ可読記録媒体。
【請求項３３】
前記コンピュータに対して前記構成要素情報を暗号的に処理させるように構成した前記命令は、前記コンピュータに対して前記構成要素情報に一方向ハッシュ関数を適用させるように構成されている、請求項28に記載のコンピュータ可読記録媒体。
【請求項３４】
前記コンピュータに対して前記暗号結果を前記コンピューティングデバイスからリモート装置に向けて送信させるように構成した命令をさらに備えており、前記コンピュータに決定させるように構成した前記命令は、前記コンピュータに対して前記暗号結果の送信に応答して受け取った指標に基づいて前記さらなる動作を許可するか禁止するかを決定させるように構成されている、請求項28に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングデバイス整合性保護に関する。
【背景技術】
【０００２】
コンピューティングデバイスは極めて普及しており、多くの人にとってほとんど必需品の1つとなっている。これらのデバイスは複雑であり、多くの特徴および機能を提供する。システムオンチップ(SoC)設計はますます複雑になりつつある。1つのチップセットが複数のマイクロプロセッサ(または、コア)を包含することが可能であり、また各コアは単独の機能を有することが可能である。さらに各コア上で動作するソフトウェアは、異なる会社/事業体によって記述される可能性がある。さらに、システムインテグレーションに携わる事業体はコアの各々で動作するソフトウェアを提供する事業体と異なることがある。こうしたシステムの動作は、ソフトウェアやそれぞれのコアの互換性および相互運用性に依存する。
【０００３】
構成要素の元の組合せの中でチップセット構成要素を用いていない場合はデバイスの動作が損なわれることがある。チップセットを含むデバイスの構成要素は、互いに分離されることや、その他の元来はなかった構成要素と再統合した構成要素から分離されることがある。こうした再統合したデバイスは、たとえばより低品質の構成要素の使用、元の構成要素のソフトウェアと比べて互換性がより低いソフトウェアの使用、元の構成要素の動作が認証されていないもしくは動作するように特に設計されていないソフトウェアの使用、その他のために、元のチップセットと比べてその動作が低下することがあることを含め幾つかの理由から望ましくないことがあり得る。
【発明の概要】
【課題を解決するための手段】
【０００４】
コンピュータシステムを動作させる方法の一例は、コンピュータシステムにおいて、コンピュータシステムの複数のハードウェア構成要素の各々に関連付けされた検証入力情報を取得するステップと、コンピュータシステムにおいて、暗号結果を取得するように検証入力情報を暗号的に処理するステップと、コンピュータシステムにおいて、暗号結果の検証値との比較に応じて、ハードウェア構成要素のうちの少なくとも1つに関するさらなる動作を許可するか禁止するかを決定するステップと、を含む。
【０００５】
そのような方法の実現形態は、次の特徴のうちの1つまたは幾つかを含むことがある。本方法はさらにコンピュータシステムにおいて、コンピュータシステム上の記憶装置から検証値にアクセスするステップと、その暗号結果の該検証値との比較を行うステップと、を含む。このアクセスのステップは、コンピュータシステムのワンタイムプログラマブルメモリから検証値にアクセスするステップを含む。この暗号的処理のステップは、検証入力情報とコンピュータシステム上に保存された秘密鍵とを用いて暗号結果を作成するステップを含む。暗号結果とモバイル通信デバイスにある保存済みの検証値との比較を行うステップを含むことがある。コンピュータシステム上でワンタイムプログラマブルメモリ内に暗号結果を保存するステップを含むことがある。この保存のステップは、暗号結果が決定された最初の時点でフィールドプログラマブル読み出し専用メモリをプログラムするステップを含む。コンピュータシステム上に保存された被署名値に対してコンピュータシステム上に保存された検証鍵を暗号的に適用することによって検証値を算定するステップを含むことがある。この暗号的処理のステップは、検証入力情報に対して一方向ハッシュ関数を適用するステップを含む。取得、処理および決定のステップは、周期的または時間の経過以外のトリガー性イベントに対する応答の少なくとも一方により実行される。恐らくは、コンピュータシステムからリモート装置に向けて暗号結果を送信するステップと、コンピュータシステムにおいてリモート装置から比較の指標を受け取るステップとを含んでおり、その決定はこの指標に基づいている。
【０００６】
コンピューティングデバイスの一例は、第1の構成要素からなる組と、第1の構成要素と通信可能に結合させた第2の構成要素と、を含んでおり、この第2の構成要素は、第1の構成要素の各々に関連付けされた検証入力情報を取得するステップと、暗号結果を取得するように検証入力情報を暗号的に処理するステップと、暗号結果の検証値との比較に応じて、(1)第2の構成要素または(2)第1の構成要素のうちの少なくとも1つの少なくとも一方のさらなる動作を許可するか禁止するかを決定するステップと、を行うように構成されている。
【０００７】
そのようなコンピューティングデバイスの実現形態は、次の特徴のうちの1つまたは幾つかを含むことがある。第2の構成要素は、コンピューティングデバイス上の記憶装置から検証値にアクセスすること、およびその暗号結果の該検証値との比較を行うこと、をするように構成されている。この第2の構成要素はワンタイムプログラマブルメモリを含んでおり、この第2の構成要素はこのワンタイムプログラマブルメモリから検証値にアクセスするように構成されている。検証入力情報を暗号的に処理するために第2の構成要素は、検証入力情報とデバイス上に保存された秘密鍵とを用いて暗号結果を作成するように構成されている。第1の構成要素の各々は、関連付けされた検証入力情報を提供するように構成されている。第2の構成要素は、デバイス上に保存された被署名値に対してデバイス上に保存された検証鍵を暗号的に適用することによって検証値を算定するように構成されている。第2の構成要素は、暗号結果を取得するために検証入力情報に対して一方向ハッシュ関数を適用するように構成されている。第2の構成要素は、周期的または時間の経過以外のトリガー性イベントに対する応答の少なくとも一方によりさらなる動作を許可するか禁止するかを決定するように構成されている。第2の構成要素は、デバイス上でワンタイムプログラマブルメモリ内に暗号結果を保存するように構成されている。第2の構成要素は、暗号結果を保存するために暗号結果が決定された最初の時点でフィールドプログラマブル読み出し専用メモリをプログラムするように構成されている。第2の構成要素と通信可能に結合させた送受信器が含まれることがあり、この第2の構成要素は、この送受信器を介してリモートシステムに向けて暗号結果を送ること、および送受信器を介してリモートシステムから指標を受け取ること、を行うように構成されており、この指標に基づいて第2の構成要素はさらなる動作を許可するか禁止するかを決定するように構成されている。
【０００８】
コンピューティングデバイスの別の例は、コンピューティングデバイスの複数のハードウェア構成要素の各々と関連付けされた構成要素情報を取得するための手段と、暗号結果を取得するために構成要素情報を暗号的に処理するための手段と、コンピューティングデバイス上の不揮発性記憶装置を用いて検証値を取得するための手段と、その暗号結果の該検証値との比較を行うための手段と、暗号結果の検証値との該比較に応じて、コンピューティングデバイスの動作を許可するか禁止するかを決定するための手段と、を含む。
【０００９】
そのようなコンピュータデバイスの実現形態は、次の特徴のうちの1つまたは幾つかを含むことがある。暗号的処理のための手段は、構成要素情報とコンピューティングデバイス上に保存された秘密鍵とを暗号的に合成するための手段を含む。検証値を保存するために、ワンタイムプログラマブルメモリ手段を含むことがある。このワンタイムプログラマブルメモリ手段は、フィールドプログラマブル読み出し専用メモリを含む。その取得のための手段は、周期的または時間の経過以外のトリガー性イベントに対する応答の少なくとも一方により構成要素情報を取得するように構成されている。暗号的処理のための手段は構成要素情報に対して一方向ハッシュ関数を適用するための手段を含む。不揮発性記憶装置内に保存された被署名値に対してデバイス上に保存された検証鍵を暗号的に適用することによって検証値を算定するための手段を含むことがある。暗号的処理のための手段および決定のための手段と通信可能に結合させた、暗号結果をリモートシステムに向けて送るためおよびリモートシステムから指標を受け取るための送受信器手段を含むことがあり、その指標に基づいて決定のための手段はさらなる動作を許可するか禁止するかを決定するように構成されている。
【００１０】
コンピューティングデバイスのコンピュータ可読記録媒体の一例は、コンピューティングデバイスの複数の構成要素の各々と関連付けされた構成要素情報を取得すること、暗号結果を取得するために構成要素情報を暗号的に処理すること、コンピューティングデバイス上の記憶装置を用いて検証値を取得すること、その暗号結果の該検証値との比較を行うこと、暗号結果の検証値との該比較に応じて、コンピューティングデバイスのさらなる動作を許可するか禁止するかを決定すること、をコンピュータに対して実行させるように構成したコンピュータ読み取り可能命令を含む。
【００１１】
そのようなコンピュータ可読記録媒体の実現形態は、次の特徴のうちの1つまたは幾つかを含むことがある。検証値を取得させるように構成した命令はコンピュータに対して、コンピューティングデバイスのワンタイムプログラマブルメモリから検証値にアクセスさせるように構成されている。コンピュータに対して構成要素情報を暗号的に処理させるように構成した命令は、コンピュータに対して構成要素情報とコンピューティングデバイス上に保存された秘密鍵とを暗号的に合成させるように構成されている。コンピュータに対して暗号結果が取得された最初の時点でコンピューティングデバイスのワンタイムプログラマブルメモリ内に暗号結果を検証値として保存させるように構成した命令を含むことがある。コンピュータに対して構成要素情報を取得させるように構成した命令は、コンピュータに対して周期的または時間の経過以外のトリガー性イベントに対する応答の少なくとも一方により構成要素情報を取得させるように構成されている。コンピュータに対して構成要素情報を暗号的に処理させるように構成した命令は、コンピュータに対して構成要素情報に一方向ハッシュ関数を適用させるように構成されている。コンピュータに対して検証値を取得させるように構成した命令は、コンピュータに対して検証値を算定するためにコンピューティングデバイス上に保存された被署名値とコンピューティングデバイス上に公開保存された検証鍵とを暗号的に合成させるように構成されている。コンピュータに対して暗号結果をコンピュータシステムからリモート装置に向けて送信させるように構成した命令を含むことがあり、ここでコンピュータに対して決定させるように構成した命令は、コンピュータに対して暗号結果の送信に応答して受け取った指標に基づいてさらなる動作を許可するか禁止するかを決定させるように構成されている。
【００１２】
本明細書に記載した要素および/または技法は、以下に示す機能並びに言及していない別の機能のうちの1つまたは幾つかを提供し得る。互いに一緒に使用するように設計された互換的な構成要素を使用するとより確実性を高くし得る。品質が粗悪なチップセットまた恐らくは違法に改修されたチップセットを減少させることが可能である。
【図面の簡単な説明】
【００１３】
【図１】コンピュータデバイスの簡略化した図である。
【図２Ａ】デバイス整合性検証のために検証値を確立しかつ保存する処理のブロック流れ図である。
【図２Ｂ】デバイス整合性を検証する処理のブロック流れ図である。
【図３】図2に示した処理の一例のブロック流れ図である。
【図４】電気通信システムの簡略化した図である。
【図５】図4に示したデバイスの整合性を検証する処理のブロック流れ図である。
【図６】デバイス整合性をリモート式に検証するシステムのブロック図である。
【発明を実施するための形態】
【００１４】
重要なデバイス構成要素を暗号式に結合させる1組の情報を生成することによって単独のデバイスの構成要素が新たなデバイスに組み上げられかつ使用されるのを防止するための技法を提供する。デバイス上の構成要素の組合せが元の組合せ、したがって正当/受容可能な組合せであることを認証または確認するためには、デバイスの構成要素のうちの1つ(「アンカー(anchor)」チップセット)が使用される。アンカーチップセットは、その他のハードウェア構成要素、また好ましくは指定されたその他すべてのハードウェア構成要素からなる組合せがアンカーチップセットと相性がよいことを確認するソフトウェアを用いている。このアンカーチップセットには、それ以外のハードウェア構成要素(たとえば、RAMメモリチップ、フラッシュ/eMMC不揮発メモリチップ、カメラモジュール、ディスプレイモジュール、GPSモジュール、WiFiモジュール、Bluetooth(登録商標)モジュール、電力管理モジュール、RFモジュール、その他)を挙げることが可能である。たとえばそのアンカーチップセットは、これ以外の構成要素に関する製造者、モデルおよび/または一意の識別子(たとえば、シリアルナンバー)情報をアンカーチップの一意の情報(たとえば、シリアルナンバー)と組合せている。この組合せでは、ハードウェア構成要素の元の組合せなしには製作がほぼ不可能でありまた実用的でないことが確実な1組の情報を作成する暗号ダイジェストアルゴリズムが使用される。この情報の組のことは、これが構成要素が離れ離れにならないように保証することを支援することから「グルービット(Glue Bits)」と呼んでいる。このグルービットは、デバイス製造ライフサイクルの初期段階に(たとえば、最初のデバイス製造、最初のデバイス動作の間に)作成されるとともに、このアンカーチップに対してアクセス可能な一回書込み型メモリ内に保存される。このアンカーチップは、間欠的に(たとえば、周期的に、トリガー性イベントに応答して、その他によって)このグルービットを再計算するとともに、再計算されたグルービットを保存されたグルービット組と比較することになる。この再計算したグルービット組と保存されていたグルービット組とが一致すれば、アンカーチップは構成要素の動作の継続を許可する。再計算したビット組と保存されていた
ビット組とが一致しなければ、アンカーチップはアンカーチップまた恐らくはその他の構成要素の動作を禁止する。
【００１５】
図1を参照すると、コンピューティングデバイス10は幾つかの構成要素を含む。ここで、コンピューティングデバイス10はモバイル電話などのモバイル通信デバイスであり、またモデムプロセッサ12と、アプリケーションプロセッサ14と、無線周波数(RF)モデム16と、フラッシュ/eMMCモジュール18と、ランダムアクセスメモリ(RAM)20と、全地球測位衛星(GPS)システムモジュール22と、電力管理モジュール24と、WiFiモジュール26と、BLUETOOTH(登録商標)モジュール28と、メモリ30と、を含む。フラッシュ/eMMCモジュール18は、不揮発性フラッシュメモリおよび/または埋め込み型マルチメディアカード(eMMC)を備える。メモリ30は、たとえば読み出し専用メモリ(ROM)などのデバイス10のその他のメモリを含む。RFモデム16は、たとえば携帯電話ネットワーク基地局などのその他のデバイスとワイヤレス電磁気信号を用いて通信するように構成されている。GPSモジュール22は、デバイス10の箇所を決定するためにGPS衛星信号を処理するように構成されている。WiFiモジュール26およびBluetooth(登録商標)モジュール28は、WiFiプロトコルとBluetooth(登録商標)プロトコルのそれぞれを用いてアクセスポイントなどのその他のデバイスと通信するように構成されている。デバイス10の構成要素間の接続を図示していないが、構成要素12、14、16、18、20、22、24、26、28はたとえば、プロセッサ12、14のうちの少なくとも1つを介するかつ/または直接式に互いに通信可能に接続されている。さらにモデムプロセッサ12と恐らくはアプリケーションプロセッサ14とはハードウェアプロセッサの一部である。さらに、構成要素12、14、16、18、20、22、24、26、28の各々はデバイス整合性を検証するための暗号値の作成に使用するためのそれぞれの構成要素情報(CI)13、15、17、19、21、23、25、27、29を包含している。この例ではプロセッサ12はさらに、暗号値の作成に使用するための秘密鍵40を(たとえば、ハードウェア内に格納して)保存している。秘密鍵40は、その秘密鍵40が未認証の構成要素に対してアクセス不可能である(たとえば、少なくともプロセッサ12を破壊することなくアクセスすることが、不可能でないとしても、非実用的である)ようにして保存されている。
【００１６】
デバイス10のインテリジェントな構成要素の内部にはデバイス整合性情報が存在する。この情報のことは、グルービットの保存された真正値である検証値または基準値(RV)と呼ぶことが可能である。元の構成要素(たとえば、構成要素12、14、16、18、20、22、24、26、28、30のうちから選択された構成要素)が、たとえばインテリジェントな構成要素の動作を有効にするように共存できることを保証するのにデバイス整合性情報が有用であることを示すために、実際の情報形態によらずグルービットという用語を使用している。デバイス10内ではモデムプロセッサ12がRV34を含むが、アプリケーションプロセッサ14がRV36を含む可能性があり、あるいはフラッシュ/eMMCがRV38を含む可能性がある。典型的にはRV34とRV36とは異なることになる。たとえばRV34やRV36を作成するために使用する構成要素が同じでも使用する鍵が異なる可能性があり、したがってRV34はRV36と異なることになる(ただし、このことが必ずしも必要ではない)。以下の検討を簡潔にするために、デバイス整合性情報の作成および使用に関してモデムプロセッサ12のみを検討しているが、この検討はアプリケーションプロセッサ14など同様の構成として任意の構成要素に適用することができる。以下でさらに検討することにするがデバイス整合性情報は、デバイス整合性情報と関連付けされた構成要素を暗号式に結合するように構成されるとともに、デバイス整合性情報の作成のために使用される。
【００１７】
デバイス10は、プロセッサ読み取り可能でコンピュータ読み取り可能なメモリ内に常駐するソフトウェアを含む。このソフトウェアは、プロセッサに対して上で記載したまた以下に記載する機能を実行させるように構成したプロセッサ読み取り可能プログラムコード(すなわち、命令)を含む。具体的にはデバイス10は、メモリ30内に保存し得るソフトウェア32を含む、ただし例証を目的としてこれを単独では示している。ソフトウェア32はハードウェアプロセッサを駆動しており、また基本オペレーティングシステム(OS)機能および/またはモデムドライバを含むことがありかつRFモデム16と対話することがある。不揮発メモリのソフトウェア32の内部には、デバイス整合性を実現するように構成されたソフトウェアを存在させている。このソフトウェアのことを本明細書では、デバイス整合性ソフトウェアまたはグルーコードと呼んでいる。
【００１８】
モデムプロセッサ12は、そのモデムコードを認証するように構成されている。モデムプロセッサのハードウェアはモデムコードを、モデムコードの整合性を保証するセキュリティブート動作を介して認証している。このモデムコードはモデムプロセッサ12に対して、適宜デバイス整合性情報の作成および使用をさせるためのコードを含む。このモデムコードは、プロセッサ12に対してデバイスを使用のためにネットワークに導入した最初の時点で(たとえば、製造後の最初の動作時点で)デバイス整合性情報を作成させかつそのデバイス整合性情報を後から検証させるように構成されている。プロセッサ12は、プロセッサ12の最初のパワーアップの間にRV34を作成するとともに、たとえば一回書込み式ビットのトグル切替えによって一回修正可能なインジケータを起動させることになる。プロセッサ12は、デバイス整合性検証で将来使用するために(すなわち、関連する構成要素のデバイス組成が元の関連する構成要素組成と一致することを保証するために)RV34を不揮発メモリ内に保存することになる。
【００１９】
図2Aを参照しさらに図1を参照すると、デバイス整合性検証用の検証値を確立しかつ保存するプロセス50は図示した段階を含む。しかしプロセス50は単に一例であって限定的/網羅的ではない。
【００２０】
段階52では、検証入力情報(たとえば、構成要素シリアルナンバーおよび/またはその他の識別子)を用いて検証値(ここでは、RV34)が作成される。この検証値は好ましくは、たとえばデバイスを動作させる最初のパワーアップの間に一回作成される。この検証値は、多種多様な方法(たとえば、アンカーチップ内の検証入力情報にハッシュ関数を適用すること、アンカーチップ内の検証入力情報にハッシュ関数および秘密鍵を適用すること(たとえば、オンチップで保存された秘密鍵を用いる)、製造の間に署名鍵を用いて検証入力情報を暗号化すること、並びにアンカーチップにアクセス可能な(たとえば、デバイスのソフトウェア内で露出させた)検証鍵を有すること)によって作成することが可能である。
【００２１】
段階54では、その検証値が不揮発メモリ内に保存される。保存するこの検証値は、多種多様な箇所に保存することが可能であるがこれらに対する上書きを防止するような方式で保存される。保存されるグルービットは、アンカーチップ(たとえば、PROM、EPROMあるいはフィールドプログラマブル読み出し専用メモリなどのワンタイムプログラマブルメモリ内のグルービット34)の内部にあるあるいはアンカーチップ(たとえば、アプリケーションプロセッサ14内のグルービット36あるいはフラッシュまたはeMMC18内のグルービット38)の外部にある不揮発性ワンタイムプログラマブルメモリ内とすることが可能である。さらに保存されるこのグルービットは、デバイス10からリモートに保存しており、このリモート箇所において再計算ビットと比較される可能性もある。
【００２２】
図2Bを参照しさらに図1および図2Aを参照すると、デバイス整合性を検証するプロセス55は図示した段階を含む。しかしプロセス55は単に一例であって限定的/網羅的ではない。
【００２３】
段階56では、検証入力情報が(たとえば、デバイス10内のハードウェア構成要素からCIを取得することによって)取得される。この検証入力情報は、その整合性の保証の支援を希望する組合せを構成している各ハードウェア構成要素と関連付けされる。
【００２４】
段階58では、暗号結果(グルービット)を取得するために、この検証入力情報が認証済みソフトウェアコードを用いて暗号的に処理される。段階60では、この暗号結果と保存してある検証値との比較に応じて、ハードウェア構成要素のうちの少なくとも1つに関するさらなる動作を許可するか禁止するかが決定される。段階52および54は好ましくは一回実行されており、かつ段階56、58および60はたとえば周期的に、あるトリガーに応答して(たとえば、デバイス10の各始動時や通電時に)、その他によって反復式に実行される。
【００２５】
図3を参照すると、プロセス50の具体的な実現形態(ここでは、デバイス整合性を検証するプロセス70)は図示した段階を含む。しかしプロセス70は単に一例であって限定的/網羅的ではない。
【００２６】
段階72では、アンカーチップ(ここでは、モデムプロセッサ12)が、暗号値を作成するように準備する。プロセッサ12は、デバイス整合性検証に含めることを希望するデバイス10の構成要素から構成要素情報13、15、17、19、21、23、25、27、29を収集または取得する(たとえば、読み取る)。構成要素情報13、15、17、19、21、23、25、27、29は、デバイス整合性内に含めるべきデバイス10の様々な構成要素の各々に関連付けされている。たとえば構成要素情報13、15、17、19、21、23、25、27、29は、構成要素12、14、16、18、20、22、24、26、28に関するシリアルナンバーおよび/または製作/モデル情報とすることができる。プロセッサ12は、デバイス10の通電イベントまたはパワーアップ、タイマの満了、トリガー性メッセージの(たとえば、ネットワークサーバ(図示せず)からの)受け取り、その他などのトリガー性イベントに応答して構成要素情報13、15、17、19、21、23、25、27、29を取得する。
【００２７】
段階74ではプロセッサ12が暗号値またはグルービットを作成する。プロセッサ12は、暗号値を暗号式に形成するために秘密鍵40と構成要素情報13、15、17、19、21、23、25、27、29とを使用する。ここでプロセッサ12は、秘密鍵40と構成要素情報13、15、17、19、21、23、25、27、29とを暗号値の作成のための一方向ハッシュ関数に対する入力(たとえば、SHA256)として使用している。具体的にはプロセッサ12は、モデムプロセッサ12、アプリケーションプロセッサ14、RFモデム16、フラッシュ/eMMCモジュール18、RAMモジュール20、GPSモジュール22、電力管理モジュール24、WIFIモジュール26およびBluetooth(登録商標)モジュール28の構成要素情報13、15、17、19、21、23、25、27、29を取得する。ここでプロセッサ12は、ハッシュ式メッセージ認証コード(HMAC)を用いて以下に従ってグルービット(Glue Bits)を計算する。
Glue Bits=HMACHW-Key(MEID||modem ver||CompInfo1||CompInfo2||…||CompInfon)    (1)
上式において、CompInfomはモジュールmの構成要素情報であり、modem verはモデムプロセッサ12のバージョンであり、またMEIDはデバイス(利用可能な場合)と関連付けされたモバイル装置識別子または任意の識別子である。これは一例であり、これがグルービットの決定に使用可能な唯一の技法や式ではない。たとえばMEIDおよび/またはmodem verを省略することが可能であり、あるいは次式に従って鍵を伴わずにハッシュ関数(たとえば、SHA1)が使用される可能性がある。
Glue Bits=SHA1(MEID||modem ver||CompInfo1||CompInfo2||…||CompInfon)    (2)
【００２８】
段階76では、プロセッサ12は一回書込み型インジケータの値を解析する。ここで一回書込み型インジケータは一回書込みビットであり、またプロセッサ12は一回書込み型ビットがゼロを示すか1を示すかを決定する。別法として、一回書込み型インジケータに冗長度と高い信頼度とを提供するために、多重ビット値を使用することが可能である。一回書込み型インジケータによって検証値RefValがすでに保存済みである(このとき、一回書込み型ビットは値1を有する)ことが示された場合は、プロセス70は段階82に進む。一回書込み型インジケータによって検証値がまだ保存されていない(このとき、一回書込み型ビットは値ゼロを有する)ことが示された場合は、プロセス70は段階78に進み、ここでプロセッサ12は不揮発性のワンタイムプログラマブルメモリ内にグルービット(すなわち、暗号値)を検証値として保存する。最初の時点の報告グルービットは真正であると見なされ、このため将来の基準として保存される。プロセッサ12は、フィールドプログラマブル読み出し専用メモリや一回書込み型ビットを実現するその他のワンタイムプログラマブルメモリデバイスをプログラムすることによって一回書込み型ビットが1を示すように変更する。次いでプロセス70は段階80に進み、ここでデバイス10の動作は好ましくはデバイス10の構成要素のすべての機能を有効にするように進む。プロセス70は段階72に戻る。
【００２９】
段階82では検証値がすでに保存済みであり、この検証値がメモリから読み取られる。プロセッサ12は、段階74で決定した暗号結果との比較で使用するために不揮発メモリ内のその保存箇所から検証値RefValを読み取る。
【００３０】
段階84では、グルービットと検証値との比較が行われる。プロセッサ12はグルービットを検証値と比較するとともに、これらが同じであるか否かを決定する。これらが同一であればプロセス70は段階80に進み、またグルービットと検証値が同一でなければプロセス70は段階86に進む。
【００３１】
段階86では、デバイス10の動作は禁止される。プロセッサ12は、デバイス10の整合性が損なわれていると決定済みであり、デバイス10の動作を禁止する。たとえばプロセッサ12は、グルービットの形成にその情報が使用された構成要素のいずれかについてプロセッサ12のさらなる動作を禁止することが可能である。別法としてプロセッサ12は、構成要素の情報がグルービットの形成に使用されたか否かによらず、デバイス10の別の任意の構成要素との協働を終了させることが可能である。
【００３２】
別の例
上で検討した以外の構成および方法が使用されることがある。たとえば上の検討はデバイス10上でのRVの作成とデバイス10上でのRV34の保存とに焦点を当てたが、デバイスの整合性の検証に使用するための値はその整合性を検証しようとするデバイスからリモートで作成される可能性がある。図4を参照するとサーバ110はメモリ内に署名鍵112を保存し、プロセッサ114を含み、かつその整合性を検証しようとするデバイス116と通信することが可能である。デバイス116は、構成要素情報(CI)118を包含し、またメモリ内に検証鍵120および被署名値(SV)122を保存し、またプロセッサ124を包含する。プロセッサ114、124は、(たとえば、適当に保存されたソフトウェアコード命令によって)図5に関連して検討した動作を実行するように構成されている。
【００３３】
さらに図5を参照すると、デバイス整合性を検証するプロセス130は図示した段階を含む。しかしプロセス130は、単に一例であって限定ではない。プロセス130は、たとえば段階の追加、削除、再配置、組合せおよび/または同時実行によって変更することが可能である。
【００３４】
段階132では、SV118がオフデバイスで作成されデバイス116上に保存される。サーバプロセッサ114は、デバイス116からCI118を取得するとともに、署名鍵112を用いてSV122を作成するようにCI118を暗号的に処理する。サーバプロセッサ114はSV122をデバイス116に送信し、次いでここにSV122が保存される。この段階はたとえば、サーバ110を製造者のサーバとして、署名鍵をデバイス116と別に保持しながら、かつ製造者によるSV122の提供によりデバイス116の製造中に実行することが可能である。
【００３５】
段階134では、署名鍵112に対応する検証鍵120がデバイス116上に保存される。この段階はさらに、製造者による検証鍵120の提供によりデバイス116の製造中に実行することが可能である。別法としてこの段階はたとえば、デバイス116がネットワークを通じて検証鍵120をダウンロードすることで、デバイス116の製造後に実行される可能性がある。検証鍵120はデバイス116内に公開保存されること、すなわちハードウェア内でアクセス不可能に隠されているのではなく、一度プログラムされると変更不可能な方式で保存される(たとえば、ワンタイムプログラマブルメモリ内に保存される)ことがある。
【００３６】
段階136では、グルービットを作成すべきか否かが決定される。デバイス116は、デバイス116のパワーアップまたは通電、タイマの満了、トリガー性メッセージの(たとえば、ネットワークサーバ(図示せず)からの)受け取り、その他などのトリガー性イベントを待つ。トリガーがなければ、プロセス130は段階136のままである。プロセス130はトリガーに応答して段階138に進む。
【００３７】
段階138では、デバイス116はCI118を用いてグルービットを作成しSV122を暗号的に処理する。デバイスプロセッサ124はCI118を取得し、グルービットを決定するためにこのCI118にハッシュ関数を適用する。デバイスプロセッサ124はさらに、基準値(RV)を決定するために検証鍵120を取得しこの検証鍵120を用いてSV122を暗号的に処理する。
【００３８】
段階140では、グルービットがRVと一致するか否かに関する問い合わせが行われる。デバイスプロセッサ124は、CI118から決定したグルービットを、SV122および検証鍵120から導出したRVと比較する。グルービットが算定したRVと一致しなければ、プロセス130は段階142に進み、ここでデバイス116はその少なくとも一部が無効化される。グルービットが算定したRVと一致すれば、プロセス130は段階144進み、ここで好ましくはデバイス116の構成要素のうちのすべての機能を有効にしてデバイス116の動作が進行する。
【００３９】
またさらには図6を参照すると、整合性の決定をリモートで実施することが可能である。システム200は、サーバ210と、ネットワーク212と、モバイル通信デバイスなどのコンピュータデバイス214と、を含む。サーバ210は、ネットワーク212を通じてデバイス214と通信しまたこの逆とするように構成されている。デバイス214は、構成要素情報(CI)218を収集するとともにこのCI218を(たとえば、上で検討した技法に従って(たとえば、ハッシュ関数の適用、鍵の適用、その他によって))暗号的に処理するように構成されたデバイスプロセッサ216を含む。デバイスプロセッサ216はさらに、送受信器220を介して暗号的処理済みのCIをネットワーク212を介してサーバ210に送信するように構成されている。サーバ210は、デバイス214から受け取った情報をサーバプロセッサ222が取得(たとえば、メモリからのアクセスまたは保存済み情報からの決定)した基準情報と比較するように構成されたサーバプロセッサ222を含む。サーバプロセッサ222は、デバイス214の整合性が完全であるか(たとえば、デバイス214から受け取った情報が基準情報と一致するか)否かに関する指標を、ネットワーク212を介してデバイス214に送るように構成されている。デバイスプロセッサ216は送受信器220を介してこの指標を受け取るとともにこの指標に基づいてデバイス214の動作を禁止すべきか許可すべきかを決定するように構成されている。別法としてデバイスプロセッサ216は、CI218を暗号化せずにサーバ210にCI218を送ることも可能である。
【００４０】
その他の検討事項
またさらなる実現形態や構成が可能である。
【００４１】
特許請求の範囲を含め本明細書で使用する場合に、「少なくとも1つの(at least one of)」の前置きを付けた項目の一覧中で使用する「または(or)」という用語は、選言的な一覧を示しており、たとえば「A、BまたはCのうちの少なくとも1つ」の一覧はAまたはBまたはCまたはABまたはACまたはBCまたはABC(すなわち、AとBとC)の意味である。幾つかの例示の構成について記載してきたが、本開示の精神を逸脱することなく様々な修正、代替的な構造および等価物が用いられることがある。たとえば上の要素をより大型のシステムの構成要素とすることがあり、この際に別の法則を本発明の用途に優先させ、さもなければ別の法則によりこれを修正することがある。さらに、上述した要素の検討前、検討中または検討後に多くのステップが実行されることがある。したがって上の記載は本特許請求の範囲の趣旨を制限するものではない。さらに複数の発明を開示することがある。
【符号の説明】
【００４２】
10  コンピューティングデバイス
12  モデムプロセッサ
13  構成要素情報(CI)
14  アプリケーションプロセッサ
15  構成要素情報(CI)
16  無線周波数(RF)モデム
17  構成要素情報(CI)
18  フラッシュ/eMMCモジュール
19  構成要素情報(CI)
20  ランダムアクセスメモリ(RAM)
21  構成要素情報(CI)
22  全地球測位衛星(GPS)システムモジュール
23  構成要素情報(CI)
24  電力管理モジュール
25  構成要素情報(CI)
26  WiFiモジュール
27  構成要素情報(CI)
28  BLUETOOTH(登録商標)モジュール
29  構成要素情報(CI)
30  メモリ
32  ソフトウェア
34  RV
36  RV
38  RV
40  秘密鍵
110  サーバ
112  署名鍵
114  プロセッサ
116  デバイス
118  構成要素情報(CI)
120  検証鍵
122  被署名値(SV)
124  プロセッサ
200  システム
210  サーバ
212  ネットワーク
214  コンピュータデバイス
216  デバイスプロセッサ
218  構成要素情報(CI)
220  送受信器
222  サーバプロセッサ
【図１】
0005798695.tif 000002
【図２Ａ】
0005798695.tif 000003
【図２Ｂ】
0005798695.tif 000004
【図３】
0005798695.tif 000005
【図４】
0005798695.tif 000006
【図５】
0005798695.tif 000007
【図６】
0005798695.tif 000008