(57)【特許請求の範囲】
【請求項１】
ハードウェア装置であって、
複数の事前記憶キーを記憶するための記憶デバイスと、
サーバから、アクティベートキーコマンドおよび前記複数の事前記憶キーのうちの1つの事前記憶キーに関連付けられた証明書を受信するための通信インターフェースと、
前記記憶デバイスおよび前記通信インターフェースに結合されたプロセッサであって、
前記複数の事前記憶キーのうちの前記1つの事前記憶キーおよび前記複数の事前記憶キーのうちの前記1つの事前記憶キーに関連付けられた前記サーバから受信された前記証明書を用いて前記ハードウェア装置をリブートするために前記アクティベートキーコマンドを実施し、
前記リブートが成功したかどうかを決定する
ように構成されたプロセッサと
を備え、
前記リブートが成功しなかった場合、前記プロセッサは、以前に使用された事前記憶キーおよび対応する以前に使用された証明書を用いた動作をレジュームするように構成され、
前記リブートが成功した場合、前記プロセッサは、さらなるリブートのために、前記複数の事前記憶キーのうちの前記1つの事前記憶キーに関連付けられた前記証明書を記憶し、前記以前に使用された事前記憶キーをリボークするようにさらに構成されるハードウェア装置。
【請求項２】
前記リブートが成功した場合、前記プロセッサは、前記以前に使用された事前記憶キーをリボークするためにリボークキーコマンドを発行するようにさらに構成される、請求項1に記載の装置。
【請求項３】
少なくともアクティベーション用の事前記憶キーおよびリボケーション用の事前記憶キーを含めて、前記複数の事前記憶キーのうちの2つまたはそれ以上が同時にアクティブとなる、請求項1に記載の装置。
【請求項４】
前記プロセッサは、無認可のアクティベートキーコマンドおよび無認可のリボークキーコマンドを防止するようにさらに構成される、請求項1に記載の装置。
【請求項５】
前記以前に使用された事前記憶キーをリボークすることは、前記以前に使用された事前記憶キーに関連付けられたハードウェアヒューズを切断するように前記プロセッサが指令することをさらに含む、請求項1に記載の装置。
【請求項６】
前記通信インターフェースはワイヤレスインターフェースであり、前記アクティベートキーコマンドはワイヤレスに送信される、請求項1に記載の装置。
【請求項７】
コンピューティングデバイスによって、サーバから、アクティベートキーコマンドおよび前記コンピューティングデバイス上に記憶された複数の事前記憶キーのうちの1つの事前記憶キーに関連付けられた証明書を受信するステップと、
前記アクティベートキーコマンドを実施するステップであって、
前記複数の事前記憶キーのうちの前記1つの事前記憶キーおよび前記複数の事前記憶キーのうちの前記1つの事前記憶キーに関連付けられた前記サーバから受信された前記証明書を用いて前記コンピューティングデバイスをリブートするステップと、
前記リブートが成功したかどうかを決定するステップと
を含む、実施するステップと
を含み、
前記リブートが成功しなかった場合、以前に使用された事前記憶キーおよび対応する以前に使用された証明書を用いた動作をレジュームするステップをさらに含み、
前記リブートが成功した場合、さらなるリブートのために、前記複数の事前記憶キーのうちの前記1つの事前記憶キーに関連付けられた前記証明書を記憶するステップと、前記以前に使用された事前記憶キーをリボークするステップと
をさらに含む方法。
【請求項８】
少なくともアクティベーション用の事前記憶キーおよびリボケーション用の事前記憶キーを含めて、前記複数の事前記憶キーのうちの2つまたはそれ以上が同時にアクティブとなる、請求項7に記載の方法。
【請求項９】
無認可のアクティベートキーコマンドおよび無認可のリボークキーコマンドを防止するステップをさらに含む、請求項7に記載の方法。
【請求項１０】
前記以前に使用された事前記憶キーをリボークするステップは、前記以前に使用された事前記憶キーに関連付けられたハードウェアヒューズを切断するように指令するステップをさらに含む、請求項7に記載の方法。
【請求項１１】
前記アクティベートキーコマンドはサーバから前記コンピューティングデバイスにワイヤレスに送信される、請求項7に記載の方法。
【請求項１２】
コードを記録した非一時的コンピュータ可読記録媒体であって、前記コードは、コンピューティングデバイスのプロセッサによって実行されると、前記プロセッサに、
前記コンピューティングデバイスによって、サーバから、アクティベートキーコマンドおよび前記コンピューティングデバイス上に記憶された複数の事前記憶キーのうちの1つの事前記憶キーに関連付けられた証明書を受信することと、
前記アクティベートキーコマンドを実施することであって、
前記複数の事前記憶キーのうちの前記1つの事前記憶キーおよび前記複数の事前記憶キーのうちの前記1つの事前記憶キーに関連付けられた前記サーバから受信された前記証明書を用いて前記コンピューティングデバイスをリブートすることと、
前記リブートが成功したかどうかを決定することと
を含む、実施することと、を行わせ、
前記非一時的コンピュータ可読記録媒体は、
前記リブートが成功しなかった場合、以前に使用された事前記憶キーおよび対応する以前に使用された証明書を用いた動作をレジュームするためのコードをさらに記録し、
前記リブートが成功した場合、さらなるリブートのために、前記複数の事前記憶キーのうちの前記1つの事前記憶キーに関連付けられた前記証明書を記憶し、前記以前に使用された事前記憶キーをリボークするためのコードをさらに記録した、コンピュータ可読記録媒体。
【請求項１３】
少なくともアクティベーション用の事前記憶キーおよびリボケーション用の事前記憶キーを含めて、前記複数の事前記憶キーのうちの2つまたはそれ以上の事前記憶キーを、同時にアクティブにするためのコードをさらに記録した、請求項12に記載のコンピュータ可読記録媒体。
【請求項１４】
無認可のアクティベートキーコマンドおよび無認可のリボークキーコマンドを防止するためのコードをさらに記録した、請求項12に記載のコンピュータ可読記録媒体。
【請求項１５】
前記以前に使用された事前記憶キーをリボークするためのコードは、前記以前に使用された事前記憶キーに関連付けられたハードウェアヒューズを切断するように指令するためのコードをさらに備える、請求項12に記載のコンピュータ可読記録媒体。
【請求項１６】
前記アクティベートキーコマンドを、サーバから前記コンピューティングデバイスにワイヤレスに送信するためのコードをさらに記録した、請求項12に記載のコンピュータ可読記録媒体。
【請求項１７】
コンピュータ装置であって、
複数の事前記憶キーを記憶するための手段と、
サーバから、アクティベートキーコマンドおよび前記複数の事前記憶キーのうちの1つの事前記憶キーに関連付けられた証明書を受信するための手段と、
前記アクティベートキーコマンドを実施するための手段であって、
前記複数の事前記憶キーのうちの前記1つの事前記憶キーおよび前記複数の事前記憶キーのうちの前記1つの事前記憶キーに関連付けられた前記サーバから受信された前記証明書を用いて前記コンピュータ装置をリブートするための手段と、
前記リブートが成功したかどうかを決定するための手段と
を含む、実施するための手段と
を備え、
前記リブートが成功しなかった場合、以前に使用された事前記憶キーおよび対応する以前に使用された証明書を用いた動作をレジュームするための手段をさらに備え、
前記リブートが成功した場合、さらなるリブートのために、前記複数の事前記憶キーのうちの前記1つの事前記憶キーに関連付けられた前記証明書を記憶するための手段と、前記以前に使用された事前記憶キーをリボークするための手段とをさらに備える、コンピュータ装置。
【請求項１８】
少なくともアクティベーション用の事前記憶キーおよびリボケーション用の事前記憶キーを含めて、前記複数の事前記憶キーのうちの2つまたはそれ以上が同時にアクティブとなる、請求項17に記載の装置。
【請求項１９】
無認可のアクティベートキーコマンドおよび無認可のリボークキーコマンドを防止するための手段をさらに備える、請求項17に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照により本明細書に組み込まれている、2015年8月26日に出願された「COMPUTING DEVICE TO SECURELY ACTIVATE OR REVOKE A KEY」という名称の米国特許出願第14/836,651号からの優先権の利益を継続および主張するものである。
【０００２】
本発明は、キーをセキュアにアクティベート(activate)およびリボーク(revoke)するコンピューティングデバイスに関する。
【背景技術】
【０００３】
現代のコンピューティングデバイスはしばしば、セキュアブートの手順を適用している。この共通の手順は一般的に、ハードウェアにパブリックキーをアンカリングすることによって、また、ソフトウェアアプリケーションイメージ全体のハッシュを保持する署名入り証明書によってアプリケーションソフトウェアにそのパブリックキーをチェーン結合するために採用される。パブリックキーは、プライベートキーにアクセスされ得ないようにセキュアなサーバ内に常駐するプライベートキーとペアにされてもよく、また、プライベートキーは、新たなソフトウェアアプリケーションアップグレードがコンピューティングデバイス上で稼働することが可能となるように、署名入り証明書を生成してもよい。
【０００４】
残念ながら、プライベートキーが損なわれる事例も生じており、そのような事象において、企業がコンピューティングデバイスの制御を失うこともある。一例として、プライベートキーをハッキングしたハッカーは、コンピューティングデバイスの制御を得るために(たとえば、ユーザのプライバシーを侵害するために)、コンピューティングデバイスに自身のソフトウェアアプリケーションイメージを送信することがある。
【発明の概要】
【課題を解決するための手段】
【０００５】
キーをセキュアにアクティベートまたはリボークするための装置および方法が開示される。たとえば、この装置は、複数の事前記憶キーを記憶するための記憶デバイスと、アクティベートキーコマンドおよび事前記憶キーのうちの1つに関連付けられた証明書を受信するための通信インターフェースと、プロセッサとを備え得る。プロセッサは記憶デバイスおよび通信インターフェースに結合され得、事前記憶キーおよび証明書を用いて装置をリブートするためにアクティベートキーコマンドを実施し、リブートが成功したかどうかを決定するように構成され得る。一実施形態では、リブートが成功した場合、プロセッサは、さらなるリブートのために証明書を記憶するように、また以前に使用された事前記憶キーをリボークするためにリボークキーコマンドを発行するように構成される。
【図面の簡単な説明】
【０００６】
【図１】各実施形態が実施され得るコンピューティングデバイスの図である。
【図２】各実施形態が実施され得るシステムの図である。
【図３】認証されるまたは認証されないブートプロセスを示す図である。
【図４】新しいキーがアクティベートされるかどうかを決定するためのプロセスを示す図である。
【図５】パブリックキーのリボークを示す図である。
【図６】アクティベートキーコマンドを実施するためのプロセスの例を示す流れ図である。
【発明を実施するための形態】
【０００７】
「例示的」または「例」という用語は、本明細書では「例、事例、または例示として働く」を意味する語として使用される。「例示的」または「例」として本明細書において説明する任意の態様または実施形態は、必ずしも、他の態様または実施形態よりも好ましいか、または有利であると解釈されるべきでない。
【０００８】
本明細書で使用される場合、「コンピューティングシステムまたはデバイス」という用語は、限定はしないが、ラップトップコンピュータ、タブレット、スマートフォン、テレビ、デスクトップコンピュータ、家電機器、セルラー電話、ウォッチ、ウェアラブルデバイス、モノのインターネット(IoT)デバイス、個人用テレビデバイス、携帯情報端末(PDA)、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、全地球測位システム(GPS)受信機、ワイヤレスゲームコントローラ、自動車用デバイス、インタラクティブゲームデバイス、ノートブック、スマートブック、ネットブック、モバイルテレビデバイス、カメラ、インフォテイメントデバイス、ゲートウェイなど、または任意のコンピューティングデバイスもしくはデータ処理装置を含む、任意の形態のコンピューティングデバイスを指す。コンピューティングデバイス、コンピューティングシステム、装置などの用語は互換的に使用され得ることを諒解されたい。
【０００９】
これ以降、詳細に説明されることになる、証明書をアクティベートするために利用され得る一例のコンピューティングデバイス100が図1に示されている。コンピュータデバイス100は、バス105を介して電気的に結合され得る(または適宜、他の何らかの形で通信し得る)ハードウェア要素を備えるように図示されている。ハードウェア要素は、限定はしないが、1つまたは複数の汎用プロセッサならびに/もしくは(デジタル信号処理チップ、グラフィックアクセラレーションプロセッサ、および/もしくは同類のものなどの)1つまたは複数の専用プロセッサを含む、1つまたは複数のプロセッサ110と、1つまたは複数の入力デバイス115(たとえばキーボード、キーパッド、タッチスクリーン、マウスなど)と、少なくともディスプレイデバイス121を含み、さらに、限定はしないが、スピーカ、プリンタ、ならびに/もしくは同類のものを含み得る、1つまたは複数の出力デバイス120とを含み得る。加えて、コンピューティングデバイス100は多種多様なセンサー122を含み得る。センサー122は、クロック、周辺光センサー(ALS)、バイオメトリックセンサー(たとえば、血圧モニタなど)、加速度計、ジャイロスコープ、磁力計、方位センサー、指紋センサー、気象センサー(たとえば、温度、風、湿度、気圧など)、全地球測位センサー(GPS)、赤外(IR)センサー、近接センサー、ニアフィールド通信(NFC)センサー、マイクロフォン、カメラを含み得る。コンピューティングデバイス100は任意のタイプのセンサーを含み得ることを諒解されたい。一実施形態では、以下で説明される、アクティベーションおよびリボケーション機能において利用され得るハードウェア要素には、セキュアなプロセッサ、ハードウェアセキュリティコア、暗号エンジンなどが含まれ得る。
【００１０】
コンピューティングデバイス100は、1つまたは複数の非一時的な記憶デバイス125をさらに含み得(かつ/またはそれと通信し得)、これは、限定はしないが、ローカルおよび/またはネットワークアクセス可能記憶装置を備え得、かつ/あるいは、限定はしないが、ディスクドライブ、ドライブアレイ、光記憶デバイス、プログラム可能、フラッシュ更新可能であり得るランダムアクセスメモリ(「RAM」)および/もしくはリードオンリーメモリ(「ROM」)などの固体記憶デバイス、ならびに/または同類のものを含み得る。そのような記憶デバイスは、限定はしないが、種々のファイルシステム、データベース構造などを含む、任意の適切なデータストアを実施するように構成される場合がある。
【００１１】
コンピューティングデバイス100は、通信サブシステム130も含み得、これは、限定はしないが、モデム、ネットワークカード(ワイヤレスもしくは有線)、赤外線通信デバイス、(Bluetooth(登録商標)デバイス、802.11デバイス、Wi-Fiデバイス、WiMaxデバイス、セルラー通信デバイスなどの)ワイヤレス通信デバイスおよび/もしくはチップセット、ならびに/または同類のものを含み得る。通信サブシステムおよび/またはインターフェース130は、データが、ネットワーク、他のコンピュータシステム、および/または本明細書において説明する他の任意のデバイスと交換されることを可能にし得る。多くの実施形態では、コンピューティングデバイス100は、上で説明したRAMまたはROMデバイスを含み得るワーキングメモリ135をさらに備えることになる。
【００１２】
コンピューティングデバイス100は、オペレーティングシステム140、アプリケーション145、デバイスドライバ、実行可能ライブラリ、および/または他のコードを含む、ワーキングメモリ135内に現在位置するように示されているファームウェア要素、ソフトウェア要素も備え得る。一実施形態では、本明細書において説明されるような実施形態を実施するために、方法を実施し、および/またはシステムを構成するように、アプリケーションが設計され得る。単に例として、以下で論じる方法に関連して説明する1つまたは複数の手順は、コンピューティングデバイス(および/またはコンピューティングデバイス内のプロセッサ)によって実行可能なコードおよび/または命令として実施されてもよく、一態様では、その場合、そのようなコードおよび/または命令は、本明細書で説明する実施形態によれば、説明する方法に従って1つまたは複数の動作を実施するようにコンピューティングデバイス100を構成するおよび/または適合させるために使用され得る。
【００１３】
これらの命令および/またはコードのセットは、上述の記憶デバイス125などの非一時的コンピュータ可読記憶媒体に記憶される場合がある。場合によっては、記憶媒体は、コンピューティングデバイス100などのコンピュータシステム内に組み込まれる場合がある。他の実施形態では、記憶媒体は、そこに記憶された命令/コードを用いて汎用コンピュータをプログラムし、構成し、および/または適応させるために使用できるように、コンピュータシステムから分離することができ(たとえば、コンパクトディスクなどのリムーバブル媒体)、かつ/またはインストールパッケージにおいて提供することができる。これらの命令は、コンピュータ制御のコンピューティングデバイス100によって実行可能である実行可能コードの形をとることができ、ならびに/あるいは(たとえば、種々の一般的に入手可能なコンパイラ、インストールプログラム、圧縮/解凍ユーティリティなどのいずれかを用いて)コンピューティングデバイス100上でのコンパイルおよび/またはインストール時に、実行可能コードの形態をとるソースコードおよび/またはインストール可能コードの形をとることができる。
【００１４】
実質的な変形形態が、特定の要件に従って作られ得ることは、当業者には明白である。たとえば、本明細書で説明する実施形態を実施するために、カスタマイズされたハードウェアが使用されることもあり、かつ/または特定の要素がハードウェア、ファームウェア、ソフトウェア、もしくはその両方において実施されることがある。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスへの接続が用いられることがある。
【００１５】
各態様は、コンピューティングデバイス100のための新しい証明書をアクティベートするための装置および方法に関し得る。具体的には、各態様は、コンピューティングデバイス100上に記憶された事前記憶キーおよびサーバからコンピューティングデバイス100に送信された新しい証明書を利用して、新しいルートオブトラスト(RoT)へと遷移するための装置および方法に関し得る。
【００１６】
一実施形態では、以下でより詳細に説明するように、コンピューティングデバイス100は、複数の事前記憶キーと通信インターフェース130とを含み得る。記憶デバイス125は複数の事前記憶キーを記憶し得る。複数の事前記憶キーのための様々なタイプの記憶デバイスについては以下で説明することにする。通信インターフェース130は、リモートサーバから、アクティベートキーコマンドおよび事前記憶キーのうちの1つに関連付けられた証明書(たとえば以下、新しい証明書と呼ぶ)を受信し得る。新しい証明書は新しいキーによって署名されるものであり、新しいキー自体ではないことに留意されたい。言い換えれば、コンピューティングデバイス100上にすでにあり得るが非アクティブであったキーがアクティベートされる。後述するように、アクティブになると、関連付けられた証明書は、新しいキーとともに機能するために交換されることが必要となる。前に説明したように、プロセッサ110は、記憶デバイス125および通信インターフェース130に結合され得る。コンピューティングデバイス100のプロセッサ110は、コンピューティングデバイス100の事前記憶キーおよびサーバから受信された新しい証明書を用いてコンピューティングデバイスをリブートするアクティベートキーコマンドを実施するように構成され得る。リブートが成功した場合、プロセッサ110は、事前記憶キーの利用を伴うさらなるリブートのための新しい証明書を記憶するように構成され得、また以前に使用された事前記憶キーの使用をリボークし得る。他方で、リブートが成功しなかった場合、プロセッサ110は、以前に使用された事前記憶キーおよび対応する以前に使用された証明書を用いた動作をレジュームするように構成され得る。一実施形態では、プロセッサ110は、セキュアなプロセッサ、ハードウェアセキュリティコア、暗号エンジンなど、以下で説明するアクティベーションおよびリボケーション機能において利用され得る特定のタイプの処理ハードウェア要素であり得る。
【００１７】
図2をさらに参照すると、コンピューティングデバイス100がリモートサーバ200とともに示されている。リモートサーバ200は、プロセッサ210と、メモリ212と、コンピューティングデバイス100と通信するための通信インターフェース230とを含み得る。一実施形態では、サーバ200は、ワイヤレスまたはワイヤードリンク250を介してコンピューティングデバイス100に、アクティベートキーコマンド、リボークオールドキーコマンド、および新しい証明書を送信するのに適したコンピューティングデバイスであり得る。これらのコマンドについては、以下でより詳細に説明することにする。サーバ200は、これらの機能を実施するためのプロセッサ、メモリ、および通信インターフェースを備えた適当なコンピューティングデバイスであり得ることを諒解されたい。さらに、サーバ200は、コンピューティングデバイス100を用いてこれらのタイプのコマンドを有効化するある種の秘密を有するべきであることを諒解されたい。たとえば、新しい証明書は、コンピューティングデバイス100の事前記憶パブリックキーのうちの1つに関連付けられたサーバ200のプライベートキーによって署名され得る。このようにして、パブリックキーは、セキュアなサーバ200内に常駐するプライベートキーとペアにされ得る。これは、1つのタイプの利用され得る非対称パブリック/プライベート暗号化技法である。しかしながら、任意の適切なタイプの非対称または対称技法が利用され得ることを諒解されたい。
【００１８】
通信インターフェース130を介してコンピューティングデバイス100は、リンク250を通してアクティベートキーコマンド、リボークオールドキーコマンド、および新しい証明書を受信し得る。プロセッサ110の制御下で、コンピューティングデバイス100はアクティベートキーコマンドを実施し得る。アクティベートキーコマンドは、コンピューティングデバイス上に記憶された新しい事前記憶キーおよびサーバ200から受信された新しい証明書を用いて、コンピューティングデバイス100のリブートを指令することを含み得る。コンピューティングデバイス100は次いで、リブートが成功したかどうかを決定し得る。リブートが成功した場合、プロセッサ110は、新しい事前記憶キーの使用を伴うさらなるリブートのための新しい証明書の記憶をさらに指令し得、また以前に使用された事前記憶キーをリボークし得る。他方で、リブートが成功しなかった場合、プロセッサ110は、以前に使用された事前記憶キーおよび対応する以前に使用された証明書を用いた動作をレジュームするように構成され得る。
【００１９】
さらに図3を参照すると、例300が示され得る。一例として、アプリケーション(たとえば、オペレーティングシステムまたはリモートコンピューティングデバイス用の特定のアプリケーション)がブートされ得る。図3に示すように、プロセッサ110によるブートの間、ダイジェスト308を生成するために、セキュアハッシュアルゴリズム306がアプリケーションイメージ304に適用され得る。次に、アプリケーションダイジェスト308の第1のイタレーションはプロダクトIDと連結され310、この値は、フラッシュアプリケーションダイジェスト314を計算するために、さらなるセキュアハッシュアルゴリズム312を受け得る。さらに、プロセッサ110は、ルートオブトラスト(RoT)のパブリックキー330のうちの1つによって復号された署名入り証明書324に基づいて、証明書ダイジェスト350を計算し得る。たとえば、4つのパブリックキー、すなわち、パブリックキー1 332、パブリックキー2 334、パブリックキー3 336、およびパブリックキー4 338が示されている。この例では、第1の以前に使用された事前記憶パブリックキー(キー1 332)が証明書ダイジェスト350を生成するために利用されている。署名はハッシュ342を用いて検証され得る(ブロック340)。いずれの場合も、プロセッサ110は、証明書ダイジェスト350に対してフラッシュダイジェスト314を比較する比較機能360を実施し、画像認証がマッチする場合、アプリケーションは認証され(成功する(362))、ブートする(たとえば、認証画像304からのブートまたはランコードを続行する)ことを許可される。他方では、そうでない場合、認証は失敗し(失敗する(362))、アプリケーションはブートすることを許可されない。したがって、アプリケーションのリブートは成功するか成功しないかのいずれかである。
【００２０】
前に説明したように、プライベートキーが障害を受ける事例もあり、そのような事例では、コンピューティングデバイスの制御が失われ得る。一例として、プライベートキーをハッキングしたハッカーは、コンピューティングデバイスの制御を得るために(たとえば、ユーザのプライバシーを侵害するために)、コンピューティングデバイスに自身のソフトウェアアプリケーションイメージを送信することがある。
【００２１】
一実施形態によれば、コンピューティングデバイス100にすでに記憶されている事前記憶パブリックキーが新しい証明書324とともにアプリケーションのブートを制御するために利用され得るように、アクティベートキーコマンドおよび新しい証明書が、サーバ200によってコンピューティングデバイス100に送られ得る。
【００２２】
この実施形態では、図4をさらに参照すると、新しい署名入り証明書324および新しい事前記憶パブリックキー(たとえば、パブリックキー2 334)が利用され得るプロセス400が実施され得る。たとえば、プロセス400は、実施され得る様々なタイプのフェーズを示している。まず第1に、現在のフェーズ402は、元のルートオブトラスト(RoT)が利用され、アクティベートキーコマンドとリボークキーコマンドが実施されない(たとえば、0でマークされる)以前の手順を示している。
【００２３】
この例によれば、プロセッサ110は、新しい事前記憶パブリックキー(たとえばパブリックキー2 334)が、サーバ200から送られた新しい受信済みの署名入り証明書324とともに利用されるアクティベートキーコマンドフェーズ404を実施し得る。フェーズ404において、新しいパブリックキー(パブリックキー2 334)がアクティベートされ、古い署名入り証明書は、サーバ200から受信された新しい署名入り証明書324と交換される。これを可能にするために適当なパスワードと署名または他の暗号化手段が利用され得ることを諒解されたい。次に、フェーズ406において、プロセッサ110は、パブリックキー2 334および新しい署名入り証明書324を利用してRoT 300を用いたリブートを実施し、それが成功するかどうかを決定する。これを可能にするために適当なパスワードと署名が利用され得ることを諒解されたい。一例として、図3を参照すると、この場合には、プロセッサ110が、サーバ200から受信された新しい署名入り証明書324を用いて、アプリケーションをリブートするためにコンピューティングデバイスのリブートを指令する。アプリケーションイメージ304はここでも、プロダクトIDが連結されるダイジェスト308を計算するために適用されるセキュアハッシュアルゴリズム306を有し、このデータはここでも、フラッシュダイジェスト314を計算するために適用される別のセキュアハッシュアルゴリズム312を有している。さらに、プロセッサ110は、証明書ダイジェスト350を生成するために、新たにアクティベートされたパブリックキー2 334によって復号された新しい署名入り証明書324に基づいて、証明書ダイジェスト350を計算する。署名はハッシュ342を用いて検証され得る(ブロック340)。いずれの場合も、プロセッサ110は、証明書ダイジェスト350に対してフラッシュダイジェスト314を比較する比較機能360を実施し、画像認証がマッチする場合、アプリケーションは認証され(成功する(362))、ブートすることを許可される。他方では、そうでない場合、認証は失敗し(失敗する(362))、アプリケーションはブートすることを許可されない。したがって、アプリケーションのリブートは成功するか成功しないかのいずれかである。このようにして、新しい署名入り証明書324および新たにアクティベートされたパブリックキー2 334がリブートに成功するかどうかが試験される。
【００２４】
フェーズ408においてリブートが成功する場合、新しい署名入り証明書324がプロセッサ110によって永久的に記憶され、すべてのさらなるリブートに利用され、RoTのパブリックキー2 334がアクティベートされる。さらに、以下でより詳細に説明するように、RoTのパブリックキー1 332がリボークコマンドによってリボークされ、削除または無効化され、再び使用され得なくなる。他方で、フェーズ410において、リブートが成功しなかった場合、プロセッサ110は、RoTの以前に使用された事前記憶パブリックキー1 332および対応する以前に使用された証明書を用いた動作をレジュームするように構成される。このようにして、何らかの理由で、新しい署名入り証明書を用いたアプリケーションのリブートが成功しない場合、より古い現在のフェーズ402は単に、元のパブリックキーおよび元の署名入り証明書とともに利用され得る。
【００２５】
前に説明した手順の間、事前記憶キーのうちの2つまたはそれ以上(たとえば、キー1 332およびキー2 334)が同時にアクティブになり得る。このようにして、アクティベーションとリボケーションとが分離され得る。また、リボケーションフェーズが後続するアクティベーションフェーズの例について説明されているが、リボケーションフェーズ、次いでアクティベーションフェーズ、または任意の適切な順序付けなど、任意の適切な順序付けが利用され得ることを諒解されたい。加えて、複数のアクティブなキーおよびリボークされたキーがプロセスの間に利用されてもよく、前に説明したプロセスは一例にすぎないが、任意の適切なプロセスが利用され得る。さらに、プロセッサ110(たとえば、セキュアプロセッサ、ハードウェアセキュリティコア、暗号エンジンなど)は、無認可のアクティベートキーコマンドおよび無認可のリボークキーコマンドを防止するように構成され得ることを諒解されたい。たとえば、アクティベートおよびリボークキーコマンドは、サーバ200において適切なプライベートキーで署名され、コンピューティングデバイス100のプロセッサ110によって、適切にペアにされたパブリックキーで認可され得る。しかしながら、アクティベートおよびリボークキーコマンドの認可のための任意の好適な認可技法がハードウェアまたはソフトウェアにおいて利用され得ることを諒解されたい。
【００２６】
この方法論を利用することにより、プロセス400は、遷移(失敗することに反応し得る)の間にいかなる通信にも頼ることなく安全なルート遷移を達成し、またフラッシュメモリエリアに頼らずに複数のアプリケーションイメージ(同様に失敗することに反応し得るかサイズを制限され得る)を記憶する。この機能は、メモリおよび処理能力が制限されたリモートのモノのインターネット(IoT)デバイス(たとえば、サーモスタット、ライト、リモートセンサー、煙感知器など)に有用となり得ることを諒解されたい。したがって、コンピューティングデバイスがIoTデバイスなどのリモートデバイスである事例では、このプロセスは非常に有用となり得る。
【００２７】
具体的には、これらの動作が、いかなる人の支援も伴わずに、また多くの場合、オーナーがこれらの動作に気づくことさえなく、リモートサーバ200からのアクティベーションコマンドに基づいてリモートで実施され得る、IoTデバイスなどのリモートコンピューティングデバイス100に対し、プライベートキーが漏洩している可能性があり、ハッカーが潜在的にこれらのリモートコンピューティングデバイスを制御し得る場合には、新しいパブリックキーおよび新しい署名入り証明書の使用が利用され得る。IoTデバイスの動作において、この実施態様は何百万ものリモートデバイスをカバーし得ることを諒解されたい。したがって、デバイスの「死亡」が起こり得る出来事とならないように、新しい署名入り証明書および新しいパブリックキーを使用するためのアクティベーションコマンドは、以前のプロセスにおいて説明したように、フォールバックなしに正常に発生するべきであることを諒解されたい。このようにして、古いパブリックキーのリボケーションを新しいパブリックキーのアクティベーションから分離し、新しいパブリックキーが正常であるとコンピューティングデバイスが決定し、正常である場合にのみ、古いパブリックキーがリボークされる安全なステージを可能にすることによる、前に説明したプロセスの実施形態は、非常に有益な実施態様をもたらす。新しい署名入り証明書および新しいパブリックキーが失敗する場合でも、古いパブリックキーおよび古い署名入り証明書は利用され得る。
【００２８】
コンピューティングデバイス100およびサーバ200の前に説明した通信インターフェースは、アクティベートキーコマンド、新しい署名入り証明書、およびリボークキーコマンドがワイヤレスリンク250を通じて送信されるワイヤレスインターフェースであり得ることを諒解されたい。これは、コンピューティングデバイス100が、限られたメモリおよびプロセッサを有するIoTデバイスなどのリモートデバイスである場合に当てはまり得、またこれは何百万もの異なるリモートデバイスを含み得る。しかしながら、ワイヤードリンクも利用され得ることを諒解されたい。加えて、前に説明したプロセスは任意のタイプのコンピューティングデバイスに利用され得るものであり、前の説明は例にすぎないことを諒解されたい。また、リブートが成功し、新しい署名入り証明書が受け入れられ、新しいパブリックキーがアクティベートされ、古いパブリックキーがリボークされると、プロセッサ110の制御下にあるコンピューティングデバイス100はサーバ200に確認応答メッセージを送信し得、そのため、サーバ200は、リモートコンピューティングデバイス100が現在、新しい署名入り証明書および新しいパブリックキーを認証の目的で利用しているという記録を維持し得ることを諒解されたい。
【００２９】
図5をさらに参照すると、以前に使用された事前記憶パブリックキーをリボークするところの説明が示される。説明するように、一実施形態では、プロセッサ110は、以前に使用された事前記憶パブリックキーに関連付けられたハードウェアヒューズを切断するように指令し得る。図5の例でわかるように、システム500が実施され得、4つのパブリックキー330(たとえば、パブリックキー1 332、パブリックキー2 334、パブリックキー3 336、パブリックキー4 338)がハードウェア設計510において実施され得、各キーは、アクティブなキー、リボークされたキー、または非アクティブなキーのいずれかである。一例として、アクティブなキー、リボークされたキー、または非アクティブなキーはワンタイムプログラマブル(OTP)メモリを介して実施され得る。この例では、説明するように、パブリックキー1 332がリボークされ得、パブリックキー2 334がアクティベートされ得るが、パブリックキー336および338は依然として非アクティブであり得る。このようにして、各キーの状態(たとえば、アクティブ、リボーク済み、非アクティブ)が各OTPブロックによって記憶される。この例では、前に説明したように、1に設定されたリボークキーコマンドベクトル502が設定され得、ここでパブリックキー1 332がリボークされるが、これはライン530を介して確認され得る。この場合は、以前に使用された事前記憶パブリックキー1 332に関連付けられたハードウェアヒューズが切断される。この場合は、以前に使用された事前記憶パブリックキー1 332は再び使用され得ない。これは、新しい事前記憶パブリックキー2 334が1に設定されたアクティベートキーコマンドベクトル504を介してアクティベートされることに基づき得るが、その場合、パブリックキー2 334はコンピューティングデバイス100上におけるアプリケーションのリブートに利用される(ライン520を参照)。したがって、一例では、パブリックキーはアクティベートキーコマンドベクトル504を介してアクティベートされ、リボークキーコマンドベクトル502を介してリボークされ得る。さらに、リボークされたキーの場合、以前に使用された事前記憶キーが再び使用され得ないようにハードウェアヒューズが切断され得る。以前の例は、例
示的な実施態様として、4つのパブリックキー330(たとえば、パブリックキー1 332、パブリックキー2 334、パブリックキー3 336、パブリックキー4 338)のルートオブトラストを利用していることを諒解されたい。しかしながら、任意の好適な数のキーが対応するアクティベートキーコマンドおよびリボークキーコマンドとともに利用され得ることを諒解されたい。利用されているパブリックキー1およびパブリックキー2の例は単に例にすぎない。パブリックキー3、4などもまた利用され得る。さらに、任意の好適な数の利用可能なパブリックキーが、前に説明したプロセスに従って利用され得る。したがって、OTPブロック(eFuseと呼ばれることもある)は、修正不可能な方式でパブリックキーまたはそれらのダイジェストを記憶するために使用され得る。キーが知られており、生成時に固定されている場合、代替的な記憶手段がROMを利用することでよいことを諒解されたい。任意の好適なタイプの「記憶デバイス」が利用され得ることを諒解されたい。
【００３０】
さらに図6を参照すると、前に説明した実施形態を実施する方法プロセス600が以下に説明されることになる。ブロック602において、コンピューティングデバイス100は、サーバ200からアクティベートキーコマンドを受信する。ブロック604において、コンピューティングデバイス100は、コンピューティングデバイス100上に記憶された複数の事前記憶キーのうちの1つに関連付けられたサーバ200から署名入り証明書を受信する。ブロック606において、コンピューティングデバイス100はアクティベートキーコマンドを実施する。具体的には、ブロック608において、コンピューティングデバイス100は、事前記憶パブリックキーおよび新しい署名入り証明書を用いてアプリケーションをリブートする。次に、決定ブロック610において、コンピューティングデバイス100は、リブートが成功したかどうかを決定する。リブートが成功した場合、コンピューティングデバイス100は、以前に使用された事前記憶パブリックキーをリボークし、新しい署名入り証明書を記憶し、その新しい署名入り証明書および事前記憶パブリックキーを用いてさらなるリブートを実施する(ブロック614)。他方で、リブートが成功しなかった場合、コンピューティングデバイス100は、以前に使用された事前記憶パブリックキーおよび対応する以前に使用された署名入り証明書を用いた動作をレジュームするように構成される(ブロック612)。
【００３１】
これまでに説明された本発明の態様は、先に説明されたように、デバイス(たとえば、コンピューティングデバイス100)のプロセッサ(たとえば、プロセッサ110)による命令の実行に関連して実施される場合があることを諒解されたい。具体的には、限定はしないがプロセッサを含む、デバイスの回路が、本発明の実施形態による方法またはプロセス(たとえば、図2〜図6のプロセスおよび機能)を実行するために、プログラム、ルーチンの制御下、または命令の実行下で動作し得る。たとえば、そのようなプログラムは、(たとえば、メモリおよび/または他の位置に記憶された)ファームウェアまたはソフトウェアに実施されてもよく、プロセッサ、および/またはデバイスの他の回路によって実施されてもよい。さらに、プロセッサ、マイクロプロセッサ、回路、コントローラなどの用語が、論理、コマンド、命令、ソフトウェア、ファームウェア、機能などを実行することができる任意のタイプの論理または回路を指すことを諒解されたい。
【００３２】
デバイスがワイヤレスデバイスであるとき、それらのデバイスは、任意の適切なワイヤレス通信技術に基づくか、あるいは場合によっては任意の適切なワイヤレス通信技術をサポートするワイヤレスネットワークを通じて、1つまたは複数のワイヤレス通信リンクを介して通信することがあることを諒解されたい。たとえば、いくつかの態様では、ワイヤレスデバイスおよび他のデバイスは、ワイヤレスネットワークを含むネットワークに関連付けることがある。いくつかの態様では、ネットワークは、ボディエリアネットワークまたはパーソナルエリアネットワーク(たとえば超広帯域ネットワーク)を備えることがある。いくつかの態様では、ネットワークは、ローカルエリアネットワークまたはワイドエリアネットワークを備えることがある。ワイヤレスデバイスは、様々なワイヤレス通信技術、プロトコル、または、たとえば、3G、LTE、アドバンストLTE、4G、5G、CDMA、TDMA、OFDM、OFDMA、WiMAX、およびWiFiなどの規格のうちの1つまたは複数をサポートし得るか、あるいは別の方法で使用し得る。同様に、ワイヤレスデバイスは、様々な対応する変調方式または多重化方式のうちの1つまたは複数をサポートし得るか、あるいは別の方法で使用し得る。したがって、ワイヤレスデバイスは、上のまたは他のワイヤレス通信技術を使用して、1つまたは複数のワイヤレス通信リンクを確立し、その通信リンクを介して通信するのに適したコンポーネント(たとえばエアインターフェース)を含むことがある。たとえば、デバイスは、ワイヤレス媒体を通じた通信を容易にする様々なコンポーネント(たとえば、信号生成器および信号プロセッサ)を含んでもよく、関連するトランスミッタコンポーネントおよびレシーバコンポーネント(たとえば、トランスミッタおよび受信機)を有するワイヤレストランシーバを備えることがある。周知のように、スマートフォンデバイスは、したがって、他のモバイルデバイス、セルラー電話、他のワイヤードコンピュータおよびワイヤレスコンピュータ、インターネットウェブサイトなどとワイヤレス通信し得る。
【００３３】
本明細書における教示は、様々な装置(たとえばデバイス)に組み込まれる(たとえば、様々な装置内で実施される、または様々な装置によって実施される)ことが可能である。たとえば、本明細書で教示する1つまたは複数の態様は、電話(たとえば、セルラー電話)、携帯情報端末(「PDA」)、タブレット、ウェアラブルデバイス、モノのインターネット(IoT)デバイス、モバイルコンピュータ、ラップトップコンピュータ、エンターテインメントデバイス(たとえば、音楽デバイスもしくはビデオデバイス)、ヘッドセット(たとえば、ヘッドフォン、イヤピースなど)、医療デバイス(たとえば、生体センサー、心拍数モニタ、歩数計、EKGデバイスなど)、ユーザI/Oデバイス、コンピュータ、有線コンピュータ、固定コンピュータ、デスクトップコンピュータ、サーバ、店頭デバイス、セットトップボックス、または任意の他のタイプの通信デバイスに組み込まれ得る。これらのデバイスは、異なる電力要件およびデータ要件を有し得る。
【００３４】
いくつかの態様では、ワイヤレスデバイスは、通信システムのためのアクセスデバイス(たとえばWi-Fiアクセスポイント)を含み得る。そのようなアクセスデバイスは、たとえば、有線またはワイヤレスの通信リンクを介した別のネットワーク(たとえば、インターネットまたはセルラーネットワークなどのワイドエリアネットワーク)への接続を提供し得る。したがって、アクセスデバイスは、別のデバイス(たとえばWiFiステーション)が他のネットワークまたは何らかの他の機能にアクセスできるようにし得る。
【００３５】
情報および信号は多種多様な技術および技法のいずれかを使用して表され得ることを、当業者は理解されよう。たとえば、上記の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは粒子、光場もしくは光粒子、またはそれらの任意の組合せによって表され得る。
【００３６】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、または両方の組合せとして実施され得ることを、当業者はさらに諒解されよう。ハードウェア、ファームウェア、またはソフトウェアのこの互換性を明瞭に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、上では全般にその機能に関して説明された。そのような機能をハードウェア、ファームウェアまたはソフトウェアのいずれとして実施するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は説明した機能を特定の用途ごとに様々な方法で実施してもよいが、そのような実施決定は本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００３７】
本明細書で開示した実施形態に関連して説明した種々の例示的な論理ブロック、モジュールおよび回路は、汎用プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、システムオンチップ(SoC)または他のプログラマブル論理デバイス、個別のゲートまたはトランジスタ論理、個別のハードウェア構成要素、または本明細書で説明される機能を実行するように設計されたそれらの任意の組合せを用いて、実施されるか、または実行される場合がある。汎用プロセッサはマイクロプロセッサであってもよく、あるいは任意のタイプのプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ(たとえば、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成)として実施されてもよい。
【００３８】
本明細書において開示される実施形態に関して説明した方法またはアルゴリズムのステップは、ハードウェアにおいて直接具現されても、ファームウェアにおいて直接具現されても、プロセッサによって実行されるソフトウェアモジュールとして具現されても、あるいはこの2つの組合せにおいて具現されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態の記憶媒体に存在する場合がある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、また記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサと一体であることがある。プロセッサおよび記憶媒体は、ASICの中に存在することがある。ASICは、ユーザ端末の中に存在することがある。代替として、プロセッサおよび記憶媒体は、個別のコンポーネントとしてユーザ端末の中に存在することがある。
【００３９】
1つまたは複数の例示的な実施形態では、述べた機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せにおいて実施される場合がある。コンピュータプログラム製品としてソフトウェアにおいて実施される場合、機能は、コンピュータ可読媒体上の1つまたは複数の命令またはコードとして記憶されてもよく、または伝送されてもよい。コンピュータ可読媒体は、コンピュータ記憶媒体と、コンピュータプログラムのある場所から別の場所への転送を容易にする任意の媒体を含む通信媒体との両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の使用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形式の所望のプログラムコードを搬送もしくは記憶するために使用可能であり、コンピュータによってアクセス可能な任意の他の媒体を備え得る。さらに、任意の接続をコンピュータ可読媒体と呼ぶことは適正である。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから伝送される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書では、ディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、一方、ディスク(disc)は、データをレーザによって光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含まれるべきである。
【００４０】
開示された実施形態についての上記の説明は、当業者が本発明を作成または使用することを可能にするように提供される。これらの実施形態に対する様々な変更形態が、当業者には容易に明らかとなり、本明細書において規定される一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用されてもよい。したがって、本発明は、本明細書に示される実施形態に限定されるものではなく、本明細書において開示される原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００４１】
100  コンピューティングデバイス
105  バス
110  プロセッサ
115  入力デバイス
120  出力デバイス
121  ディスプレイデバイス
122  センサー
125  記憶デバイス
130  通信サブシステム/インターフェース
135  メモリ
140  オペレーティングシステム
145  アプリケーション
200  サーバ
210  プロセッサ
212  メモリ
230  通信インターフェース
250  ワイヤレスまたはワイヤードリンク、リンク、ワイヤレスリンク
300  例、RoT
304  アプリケーションイメージ、認証画像
306  セキュアハッシュアルゴリズム
308  ダイジェスト、アプリケーションダイジェスト
312  セキュアハッシュアルゴリズム
314  フラッシュアプリケーションダイジェスト、フラッシュダイジェスト
324  署名入り証明書
330  パブリックキー
332  パブリックキー1
334  パブリックキー2
336  パブリックキー3
338  パブリックキー4
342  ハッシュ
350  証明書ダイジェスト
360  比較機能
400  プロセス
500  システム
502  リボークキーコマンドベクトル
504  アクティベートキーコマンドベクトル
510  ハードウェア設計
520  ライン
530  ライン
600  方法プロセス
【図１】
0006569006.tif 000002
【図２】
0006569006.tif 000003
【図３】
0006569006.tif 000004
【図４】
0006569006.tif 000005
【図５】
0006569006.tif 000006
【図６】
0006569006.tif 000007