(57)【特許請求の範囲】
【請求項１】
ソフトウェアが、キー導出機能を実行することによってワーキングキーを生成するステップであって、前記キー導出機能への入力が、セキュアメカニズムによるソフトウェアの認証に使用するためのセキュリティパラメータのセットのうちの少なくとも1つのセキュリティパラメータとデバイスのシークレットキーとを含み、セキュリティパラメータの前記セットおよび前記シークレットキーは前記ワーキングキーの前記生成に先立って前記デバイス上に供給および記憶されている、ステップと、
前記ソフトウェアを認証するための前記セキュアメカニズムのアクティブ化に先立って、前記ソフトウェアが、前記ワーキングキーに基づいて前記デバイスの少なくとも1つのセキュリティ機能を実行するステップであって、前記ワーキングキーは前記少なくとも1つのセキュリティ機能に対して前記ソフトウェアによって使用される、ステップと
を備える、セキュリティを提供する方法。
【請求項２】
前記少なくとも1つのセキュリティパラメータは、前記デバイス上の前記ソフトウェアに許可されている少なくとも1つの操作機能を決定する、請求項1に記載の方法。
【請求項３】
前記少なくとも1つのセキュリティパラメータは、前記ソフトウェアが前記デバイスに対して許可されているかどうかを決定するために使用される公開キーを備える、請求項1に記載の方法。
【請求項４】
前記公開キーは、前記ソフトウェアに署名するために使用される秘密キーに対応する、請求項3に記載の方法。
【請求項５】
シークレットキーは第1のエンティティによって前記デバイスにロードされ、前記少なくとも1つのセキュリティパラメータは前記第1のエンティティとは異なる第2のエンティティによって前記デバイスにロードされる、請求項1に記載の方法。
【請求項６】
前記シークレットキーおよび前記少なくとも1つのセキュリティパラメータは、異なる時間に前記デバイスにロードされる、請求項1に記載の方法。
【請求項７】
少なくとも1つのセキュリティ機能を実行する前記ステップは、前記ワーキングキーにより前記デバイスのデータを暗号化または署名するステップを備える、請求項1に記載の方法。
【請求項８】
前記少なくとも1つのセキュリティ機能を実行する前記ステップは、前記ワーキングキーにより前記デバイスのデータを復号または検証するステップを備える、請求項1に記載の方法。
【請求項９】
前記少なくとも1つのセキュリティ機能を実行する前記ステップは、前記ソフトウェアの制御の下に前記少なくとも1つのセキュリティ機能を実行するステップを備える、請求項1に記載の方法。
【請求項１０】
前記デバイスのプロセッサが、セキュアメカニズムを介して前記ソフトウェアを認証することなく前記ソフトウェアを前記デバイス上で実行するステップをさらに備える、請求項1に記載の方法。
【請求項１１】
前記デバイス上のセキュアメモリが、前記シークレットキーを記憶するステップと、
前記デバイス上のセキュアメモリまたは非セキュアメモリが、前記少なくとも1つのセキュリティパラメータを記憶するステップと
をさらに備える、請求項1に記載の方法。
【請求項１２】
セキュアメカニズムによるソフトウェアの認証に使用するためのセキュリティパラメータのセットのうちの少なくとも1つのセキュリティパラメータとデバイスのシークレットキーとを入力してキー導出機能を実行することによって、ワーキングキーを生成する手段であって、セキュリティパラメータの前記セットおよび前記シークレットキーは前記ワーキングキーの前記生成に先立って前記デバイス上に供給および記憶されている、手段と、
前記ソフトウェアを認証するための前記セキュアメカニズムのアクティブ化に先立って、前記ワーキングキーに基づいて前記デバイスの少なくとも1つのセキュリティ機能を実行する手段であって、前記ワーキングキーは前記少なくとも1つのセキュリティ機能に対して前記ソフトウェアによって使用される、手段と
を含む装置。
【請求項１３】
前記シークレットキーおよび前記少なくとも1つのセキュリティパラメータは、異なるエンティティによって、または異なる時間において、またはその両方において、前記デバイスにロードされる、請求項12に記載の装置。
【請求項１４】
少なくとも1つのコンピュータに、請求項１〜１１のいずれか一項に記載の方法を実行させるコードを備えるコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般に、電子工学に関し、より詳細には電子デバイスにセキュリティを提供するための技法に関する。
【背景技術】
【０００２】
電子デバイス(たとえば、セルラーフォンまたはスマートフォン)は通常、デバイス上のハードウェアの動作を制御し、デバイスのさまざまな機能をサポートするソフトウェアに基づいて動作する。セキュリティメカニズム(たとえば、セキュアブート)は、デバイスに許可されたソフトウェアのみがデバイス上で実行され得ることを保証するために採用されてもよい。しかし、デバイスは、デバイス上のセキュリティメカニズムのアクティブ化に先立つ(たとえば、製造中の)悪意ある攻撃に対して脆弱となり得る。この脆弱な期間中に、許可されていないソフトウェアがデバイスに悪意をもってロードされ、デバイスによって実行され、デバイス上のセキュリティ情報(たとえば、セキュリティキー)にアクセス、および/またはセキュリティ情報を使用してデータを操作する可能性もある。
【発明の概要】
【課題を解決するための手段】
【０００３】
本明細書において、電子デバイスのセキュリティを高めるための技法が開示される。本開示の態様において、デバイスのセキュリティは、デバイスのハードウェアシークレットキーならびに少なくとも1つのセキュリティパラメータに基づいてワーキングキーを生成することによって高められ得る。(ハードウェアシークレットキーではなく)ワーキングキーは、デバイス上でセキュリティ機能を実行する(たとえば、データを暗号化および復号する)ために使用され得る。
【０００４】
例示的な設計において、ワーキングキーがデバイスの少なくとも1つのセキュリティパラメータおよびシークレットキーに基づいて、たとえばキー導出機能により、生成されてもよい。少なくとも1つのセキュリティパラメータは、デバイス上の認証されるべきソフトウェアおよび/またはデバイスのセキュリティのその他の態様に関連付けられてもよい。少なくとも1つのセキュリティ機能は、ワーキングキーに基づいてデバイスに対して実行されてもよい。たとえば、ワーキングキーは、デバイスのデータを暗号化、署名、復号、または検証するために使用されてもよい。ワーキングキーは、少なくとも1つのセキュリティ機能に対してソフトウェアによって直接的または間接的に使用されてもよい。
【０００５】
少なくとも1つのセキュリティパラメータは、デバイスのセキュリティのさまざまな態様を制御することができる。たとえば、少なくとも1つのセキュリティパラメータは、ソフトウェアが、デバイス上での実行を許可されているかどうか、少なくとも1つの操作機能がソフトウェアに対して許可されているかどうかなどを決定することができる。1つの設計において、少なくとも1つのセキュリティパラメータは、ソフトウェアがデバイスに対して許可されているかどうかを決定するために使用される公開キーを含むことができる。公開キーは、ソフトウェアに署名するために使用される秘密キーに対応することができる。少なくとも1つのセキュリティパラメータはまた、その他のタイプの情報を備えることもできる。
【０００６】
後段において、本開示のさまざまな態様および特徴がさらに詳細に説明される。
【図面の簡単な説明】
【０００７】
【図１】ワイヤレスデバイスを示すブロック図である。
【図２】ワイヤレスデバイスの例示的な製造プロセスを示す図である。
【図３Ａ】ワイヤレスデバイス上でセキュリティ情報を記憶するためのプロセスを示す図である。
【図３Ｂ】ワイヤレスデバイスのセキュアブートを実行するためのプロセスを示す図である。
【図４】ハードウェアシークレットキーに基づいてデータを暗号化および復号するためのプロセスを示す図である。
【図５】ワーキングキーに基づいてデータを暗号化および復号するためのプロセスを示す図である。
【図６】デバイスにセキュリティを提供するためのプロセスを示す図である。
【発明を実施するための形態】
【０００８】
本明細書において開示されるセキュリティキー生成技法は、ワイヤレス通信デバイス、ハンドヘルドデバイス、ゲームデバイス、コンピューティングデバイス、家庭用電子デバイス、コンピュータなどのような、さまざまな電子デバイスに使用され得る。明確にするため、技法は、ワイヤレス通信デバイスについて、後段において説明される。
【０００９】
図1は、本明細書において開示されるセキュリティキー生成技法を実装することができるワイヤレス通信デバイス100の例示的な設計のブロック図を示す。ワイヤレスデバイス100は、セルラーフォン、スマートフォン、タブレット、ワイヤレスモデム、携帯情報端末(PDA)、ハンドヘルドデバイス、ラップトップコンピュータ、スマートブック、ネットブック、コードレスフォン、ワイヤレスローカルループ(WLL)ステーション、Bluetooth(登録商標)デバイスなどであってもよい。ワイヤレスデバイス100は、1つまたは複数のワイヤレス通信システムとの双方向通信をサポートすることができる。
【００１０】
データ送信の場合、デジタルモジュール120は、送信されるべきデータを処理(たとえば、エンコードおよび変調)して、出力ベースバンド信号を送信機(TMTR)114に提供することができる。送信機114は、出力ベースバンド信号を増幅、フィルタ、およびアップコンバートして、出力無線周波数(RF)信号を生成することができ、この信号はアンテナ112を介して基地局に送信されてもよい。
【００１１】
データ受信の場合、アンテナ112は、基地局および/またはその他の送信局から信号を受信することができ、受信したRF信号を受信機(RCVR)116に提供することができる。受信機116は、受信したRF信号をRFからベースバンドにダウンコンバートし、ダウンコンバートした信号をフィルタおよび増幅して、入力ベースバンド信号をデジタルモジュール120に提供することができる。デジタルモジュール120は、入力ベースバンド信号を処理(たとえば、復調およびデコード)して、ワイヤレスデバイス100に送信されたデータを回復することができる。
【００１２】
デジタルモジュール120は、ワイヤレスデバイス100のデジタル処理をサポートするために、さまざまな処理、インターフェイス、およびメモリユニットを含むことができる。図1に示される設計において、デジタルモジュール120は、モデムプロセッサ122、中央処理装置(CPU)/縮小命令セットコンピュータ(RISC)プロセッサ124、メインコントローラ126、内部メモリ130、セキュアメモリ140、メモリコントローラ148、および入出力(I/O)コントローラ158を含み、これらはすべて1つまたは複数のバス160を介して相互に通信することができる。
【００１３】
モデムプロセッサ122は、たとえば、エンコーディング、変調、復調、デコーディングなどのような、データ送信および受信のための処理を実行することができる。CPU/RISCプロセッサ124は、たとえば、オーディオ、ビデオ、グラフィックス、および/またはその他のアプリケーションのための処理など、ワイヤレスデバイス100の汎用処理を実行することができる。メインコントローラ126は、デジタルモジュール120内のさまざまなユニットの操作を指示することができる。内部メモリ130は、デジタルモジュール120内でプロセッサおよびコントローラによって使用されるソフトウェア132および/またはデータを記憶することができる。メモリ130は、静的ランダムアクセスメモリ(SRAM)またはその他のタイプのメモリにより実装されてもよい。
【００１４】
セキュアメモリ140は、セキュリティキー142、セキュリティパラメータ144、ブートコード146、および/またはその他のセキュア情報を記憶することができる。セキュリティキー142は、たとえば、ワイヤレスデバイス100によって送信されたデータを暗号化する、ワイヤレスデバイス100に送信された暗号化データを復号する、内部メモリ130にロードされたソフトウェアを認証するなど、ワイヤレスデバイス100上のセキュリティ機能のために使用されてもよい。セキュリティパラメータ144は、ワイヤレスデバイス100のセキュリティに関連するさまざまな態様を制御することができる。ブートコード146は、ワイヤレスデバイス100にロードされたソフトウェアを認証するためにセキュアブートを実行することができる。メモリ140は、読取り専用メモリ(ROM)、ワンタイムプログラマブル(OTP)素子、および/またはその他のタイプのメモリにより実装されてもよい。
【００１５】
メモリコントローラ148は、外部メモリ150とデジタルモジュール120との間のデータの転送を容易にすることができる。外部メモリ150は、デジタルモジュール120内の処理装置に大容量/バルク記憶装置を提供することができる。たとえば、メモリ150は、実行のためにデジタルモジュール120にロードされ得るソフトウェア152、データなどを記憶することができる。メモリ150は、(i)NANDフラッシュおよび/またはNORフラッシュメモリのようなバルク不揮発性メモリ、(ii)同期ダイナミックランダムアクセスメモリ(SDRAM)またはダイナミックランダムアクセスメモリ(DRAM)のようなバルク揮発性メモリ、および/または(iii)その他のタイプのメモリを備えることができる。I/Oコントローラ158は、ワイヤレスデバイス100が、セキュアサーバおよび/またはその他のエンティティと通信できるようにすることができる。
【００１６】
図1は、デジタルモジュール120の例示的な設計を示す。一般に、デジタルモジュール120は、任意の数の処理、インターフェイス、およびメモリユニットを含むことができる。デジタルモジュール120はまた、1つまたは複数のデジタル信号プロセッサ(DSP)、マイクロプロセッサ、RISCプロセッサなどにより実装されてもよい。デジタルモジュール120は、1つまたは複数の特殊用途向け集積回路(ASIC)および/またはその他の集積回路(IC)上で実装されてもよい。
【００１７】
ワイヤレスデバイス100のような電子デバイスは、通常、一連の製造ステップを経由する。電子デバイスは、1つまたは複数の製造ステップ中にセキュリティ攻撃に対して脆弱となり得る。
【００１８】
図2は、ワイヤレスデバイス100(または任意の電子デバイス)の例示的な製造プロセス200を示す。キー供給エンティティは、ワイヤレスデバイス100にハードウェア(HW)シークレットキーを確実に供給することができる(ステップ1)。キー供給エンティティは、(図2に示されるような)ワイヤレスデバイス100に使用されるICチップ(たとえば、ASIC)の集積回路(IC)チップ製造業者、またはその他のエンティティであってもよい。ハードウェアシークレットキーは、ワイヤレスデバイス100上のセキュアメモリ140に記憶されてもよい。
【００１９】
デバイス製造業者は、製造されるデバイスへのアクセスが信頼できる従業員のみに限定され得ない非セキュアな製造環境において、ワイヤレスデバイス100を製造または構築する場合がある。デバイス製造業者は、正規デバイス製造業者(ODM)(図2に示されるような)、相手先ブランド製造業者(OEM)、またはワイヤレスデバイス100を構築、組み立て、および供給する任意のエンティティであってもよい。デバイス製造業者は通常、ワイヤレスデバイス100上で、ソフトウェアをロードし、セキュリティパラメータをロードし、セキュリティ機能を使用可能にする(ステップ2)。
【００２０】
セキュアサーバは、ハードウェアシークレットキーを使用して、機密データをワイヤレスデバイス100に供給することができる(ステップ3)。セキュアデータ供給は通常、ワイヤレスデバイス100に機密データをロードするために安全な設備において実行される。セキュアデータ供給のために、セキュアサーバは、ハードウェアシークレットキーを使用して、ワイヤレスデバイス100とデータを安全に交換することができる。供給された機密データは、ワイヤレスデバイス100上のセキュアメモリ140に記憶されてもよい。
【００２１】
図2に示されるように、セキュリティパラメータは、製造プロセス中にワイヤレスデバイス100にロードされてもよい。セキュリティパラメータは、ワイヤレスデバイス100上でセキュリティのさまざまな態様を制御することができ、次の事項のうちの1つまたは複数を含むことができる。
デバイスの信頼のルート(RoT: root-of-trust)に関連する情報
どのソフトウェアがデバイス上で実行可能であるか、および/または、どのようにソフトウェアがデバイス上で動作可能であるかを制御する情報
特定のセキュリティ機能がデバイス上で使用可能または使用不可にされ得るかを制御する情報、および/または
その他のセキュリティ関連の情報
【００２２】
セキュリティパラメータは、ワイヤレスデバイス100の信頼のルートに関連する情報を含むことができる。信頼のルートは、ワイヤレスデバイス100上のすべてのセキュリティメカニズムの基盤となり得る。信頼のルートに関連する情報は、1つまたは複数の秘密ルートキーに対応する1つまたは複数の公開ルートキー、公開ルートキーの1つまたは複数の証明書などを含むことができる。秘密ルートキーは、ワイヤレスデバイス100に送信されたデータに署名するために使用されてもよい。対応する公開ルートキーは、秘密ルートキーで署名されているデータを認証するために使用されてもよい。たとえば、公開ルートキーは、後段において説明されるように、ワイヤレスデバイス100にロードされたソフトウェアを認証するためにセキュアブートにおいて使用されてもよい。
【００２３】
セキュリティパラメータは、どのソフトウェアがデバイス100上で実行可能であるか、および/または、どのようにソフトウェアがワイヤレスデバイス100上で動作可能であるかを制御することができる。たとえば、セキュリティパラメータは、ワイヤレスデバイス100での実行を許可されたソフトウェアを認証するために使用される公開キーを含むことができる。ソフトウェアは、公開キーに対応する秘密キーに基づいて署名されてもよく、ワイヤレスデバイス100に記憶されてもよい。ソフトウェアは、後段において説明されるように、ワイヤレスデバイス100での実行に先立って公開キーに基づいて認証されてもよい。
【００２４】
セキュリティパラメータは、特定のセキュリティ機能がワイヤレスデバイス100上で使用可能または使用不可にされ得るかを制御することができる。たとえば、セキュリティパラメータは、ワイヤレスデバイス100のセキュアブートが使用可能にされるかどうか、ワイヤレスデバイス100のデバッグ機能が、テストまたはデバッグ中にワイヤレスデバイス100の内部状態にアクセスできるようにするため使用不可にされ得るかなどを制御することができる。
【００２５】
一部のセキュリティパラメータは、複数の目的に適合することができる。たとえば、公開ルートキーは、ワイヤレスデバイス100の信頼のルートとしての役割を果たし、ならびにどのソフトウェアがワイヤレスデバイス100上で実行可能であるかを制御するために役立つことができる。
【００２６】
セキュリティパラメータは、ワイヤレスデバイス100上のセキュアメモリ140に記憶されてもよい。たとえば、セキュリティパラメータは、ワイヤレスデバイス100のプロセッサのICチップ上のOTP素子を使用して記憶されてもよい。OTP素子は、ヒューズの状態を介してデータを永続的に記憶するために製造中に1度溶断され得るヒューズにより実装されてもよい。
【００２７】
ソフトウェアおよびセキュリティ情報は、ワイヤレスデバイス100がソフトウェアの実行に先立ってソフトウェアを認証できるようにする方法で、ワイヤレスデバイス100に記憶されてもよい。ワイヤレスデバイス100に記憶されたソフトウェアを認証するための例示的なセキュリティメカニズムについては、後段において説明される。
【００２８】
図3Aは、ワイヤレスデバイス100にセキュリティ情報を記憶して、ワイヤレスデバイス100にロードされたソフトウェアの認証をサポートするためのプロセス300の例示的な設計を示す。プロセス300は、セキュアサーバまたはその他のエンティティによって実行されてもよい。
【００２９】
セキュアサーバにおいて、署名機能320は、公開キーX'を介してデジタル署名SR、および場合によっては秘密ルートキーRを使用してその他の情報を生成することができる。署名SRは、セキュアサーバであるソースエンティティを認証するために使用され得る。署名機能320は、RSA(Rivest-Shamir-Adleman)アルゴリズム、デジタル署名アルゴリズム(DSA)、または何らかのその他の暗号(デジタル署名または暗号化)アルゴリズムを実装することができる。証明書生成器322は、公開キーX'、署名SR、および場合によってはソースエンティティの識別子、使用のために選択された暗号化アルゴリズム、証明書の有効期限などのような他の情報を含む証明書CRを形成することができる。この証明書は、ワイヤレスデバイス100上のセキュアメモリ140(またはその他のメモリ)にX.509証明書として記憶されてもよい。公開ルートキーR'は、安全な方法でワイヤレスデバイス100に使用可能にされてもよく、ワイヤレスデバイス100上のセキュアメモリ140(たとえば、OTPメモリまたはROM)に記憶されてもよい。
【００３０】
セキュアハッシュ機能330は、ワイヤレスデバイス100にロードされたソフトウェアをハッシュすることができ、ハッシュダイジェストSを提供することができる。セキュアハッシュ機能330は、SHA-1、SHA-2、MD-5、または何らかのその他のセキュアハッシュアルゴリズムを実装することができる。署名機能332は、秘密キーXを使用してダイジェストSを介してデジタル署名SXを生成することができる。署名SXは、メモリ150に記憶されてもよい。署名機能332は、RSA、DSA、または何らかのその他の暗号化アルゴリズムを実装することができる。ソフトウェアは、ワイヤレスデバイス100上のメモリ150(またはその他のメモリ)に記憶されてもよい。
【００３１】
図3Bは、ワイヤレスデバイス100のセキュアブートのためのプロセス350の例示的な設計を示す。プロセス350は、後段において説明されるように、ワイヤレスデバイス100によって実行されてもよい。ワイヤレスデバイス100において、検証機能370は、セキュアメモリ140から証明書CRおよび公開ルートキーR'を受信することができる。検証機能370は、証明書CRから署名SRおよび公開キーX'を抽出し、公開ルートキーR'により署名SRを検証して、署名SRが検証される場合、公開キーX'を提供することができる。サードパーティによる証明書CRのいかなる改ざんも、検証していない署名SRによって容易に検出され得る。
【００３２】
セキュアハッシュ機能380は、メモリ150からソフトウェアを受信し、ソフトウェアをハッシュして、ハッシュダイジェストS'を提供することができる。セキュアハッシュ機能380は、図3Aにおいてセキュアハッシュ機能330によって使用されるものと同じセキュアハッシュアルゴリズムを実装することができる。検証機能390は、セキュアハッシュ機能380からダイジェストS'、メモリ150からデジタル署名SX、検証機能370から公開キーX'を受信することができる。検証機能390は、公開キーX'およびダイジェストS'によりデジタル署名SXを検証することができ、デジタル署名SXが検証されるかどうかを指示することができる。公開キーX'は、公開ルートキーR'により認証される。したがって、サードパーティによるデジタル署名SXおよび/またはソフトウェアによるいかなる改ざんも、検証していないデジタル署名SXによって容易に検出され得る。デジタル署名SXが検証される場合、ソフトウェアは使用のために提供されてもよい。それ以外の場合、エラーメッセージが提供されてもよい。
【００３３】
図3Aは、例示的なセキュアブートソフトウェア署名プロセスを示す。図3Bは、例示的なセキュアブートソフトウェア認証プロセスを示す。セキュアブートはまた、その他の方法で実装されてもよい。
【００３４】
通常の動作中に、ワイヤレスデバイス100は、ソフトウェアの実行に先立って、ワイヤレスデバイス100にロードされたソフトウェアを認証するためにセキュアブートを実行することができる。セキュアブートの場合、ワイヤレスデバイス100は最初に、公開キーX'の認証性を決定するために公開ルートキーR'により署名SRを認証することができる。公開キーX'が認証される場合、ワイヤレスデバイス100は、ソフトウェアの認証性を決定するために公開キーX'により署名SXを認証することができる。セキュアブートは、ワイヤレスデバイス100に許可されているソフトウェアのみがワイヤレスデバイス100上で実行され得ることを保証することができる。
【００３５】
ハードウェアシークレットキーは、一般に、システムオンチップ(SoC)ICのようなASIC上に供給され、ASICに外部のメモリに記憶されたデータを暗号化および復号するために使用される。このセキュリティメカニズムはまた、セキュアファイルシステムまたは暗号化ファイルシステムとしても知られる。ハードウェアシークレットキーは通常、公開/秘密キーとは別個のものである。ハードウェアシークレットキーは通常、デバイス内の機密を暗号化および復号するために使用される対称キーである。たとえば、ハードウェアシークレットキーは、暗号化データを、ソリッドステートディスク(SSD)、マルチメディアカード(MMC)、eMMCなどのような保護されていないデータ記憶装置に記憶する前にデータを暗号化するために使用されてもよい。多くのOEMは、それらの製造現場の従業員またはODM従業員を信頼していない。したがって、ほとんどのセキュリティ実施態様は、ソフトウェアがASIC上のハードウェアシークレットキーにアクセスできるようにはしていない。しかし、これらのセキュリティ実装態様は通常、ハードウェアシークレットキーがソフトウェアによって間接的に使用され得るようにする。この使用は、データの復号または暗号化を含むことができる。
【００３６】
ソフトウェアは、ASICの信頼のルート(RoT)に関係している認証メカニズムによって認証および検証された後に、信頼されるべきものと見なされてもよい。この認証メカニズムは通常、セキュアブートと称される。しかし、セキュアブートは、製造プロセス中には使用可能ではないことがある。
【００３７】
ハードウェアシークレットキーが供給され、セキュアブートが使用可能ではなく、信頼のルートが供給されていない汎用ASICをOEM/ODMに提供することは、一般的なことである。ハードウェアシークレットキーは、デバイスまたはASIC上のセキュアメモリに供給されてもよい。この段階において、デバイス上のソフトウェアの保全性を保護することができるセキュアブートおよび/またはその他のセキュリティメカニズムを使用可能にする前に、許可されていないソフトウェアがデバイスにロードされ、デバイスによって実行される可能性もある。デバイス上に供給されたいかなるセキュリティキーも、許可されていないソフトウェアによって操作され得る。これは、信頼できないODM/OEM製造業の従業員が、ハードウェアシークレットキーを使用してデータを操作したり、機密情報を暴露したり、またはハードウェアシークレットキーによって保護されたデータの保全性を脅かすような機会を与えてしまう。
【００３８】
したがって、ワイヤレスデバイス100は、(i)ハードウェアシークレットキーが、たとえば図2のステップ1においてICチップ製造業者によって、ワイヤレスデバイス100上に供給される時点から、(ii)セキュリティが、たとえば図2のステップ3においてOEMによって、ワイヤレスデバイス100上でロックされる時点まで、攻撃に脆弱となる可能性がある。この脆弱な期間中に、許可されていないソフトウェアがワイヤレスデバイス100に悪意をもってロードされ、ワイヤレスデバイスによって実行され、(i)ハードウェアシークレットキーにアクセスする、および/または、(ii)たとえばハードウェアシークレットキーがワイヤレスデバイス100上でソフトウェアによってアクセス可能ではない場合、ハードウェアシークレットキーを使用してデータを操作する可能性もある。
【００３９】
本開示の態様において、デバイスのセキュリティは、ハードウェアシークレットキー、ならびにデバイスに許可されたソフトウェアに関連し得る少なくとも1つのセキュリティパラメータに基づいてワーキングキーを生成することによって高められてもよい(および前述のセキュリティの弱点が効果的に対処され得る)。(ハードウェアシークレットキーではなく)ワーキングキーは、デバイス上のデータを暗号化および復号するために使用されてもよい。
【００４０】
図4は、ハードウェアシークレットキーに基づく従来の方法でデータを暗号化および復号するためのプロセス400を示す。(OEMに属してもよい)セキュアサーバ410において、暗号エンジン430は、デバイス450のハードウェアシークレットキー442によりデータを暗号化して、暗号化データを取得することができる。暗号エンジン430は、セキュアサーバ410のソフトウェア440による指示どおりに動作することができる。暗号化データは、デバイス450に送信されてもよい。
【００４１】
デバイス450において、暗号エンジン470は、セキュアサーバ410から暗号化データを受信することができ、デバイス450のハードウェアシークレットキー442により暗号化データを復号することができる。暗号エンジン470は、デバイス450のソフトウェア480による指示どおりに動作することができる。前述のように、ソフトウェア480は、デバイス450上でセキュアブートを使用可能にする前は、安全ではない可能性がある。この場合、悪意あるソフトウェアがデバイス450にロードされることがあり、(i)暗号エンジン470に暗号化データを復号するよう、および/または(ii)復号データを操作するように指示するために実行されることもある。
【００４２】
図5は、ワーキングキーに基づく新しい方法でデータを暗号化および復号するためのプロセス500の例示的な設計を示す。セキュアサーバ510において、片方向キー導出機能(DKF)522は、ハードウェアシークレットキー542、およびデバイス550に許可されたソフトウェアに関連し得る少なくとも1つのセキュリティパラメータ544に基づいて、デバイス550のワーキングキーを生成することができる。暗号エンジン530は、ワーキングキーによりデータを暗号化して、デバイス550に送信され得る暗号化データを取得することができる。
【００４３】
デバイス550において、キー導出機能522は、デバイス550のハードウェアシークレットキー542および少なくとも1つのセキュリティパラメータ544に基づいて、デバイス550のワーキングキーを生成することができる。暗号エンジン570は、セキュアサーバ510から暗号化データを受信することができ、ワーキングキーにより暗号化データを復号して、復号データを取得することができる。
【００４４】
セキュアサーバ510、ハードウェアシークレットキー542、および/またはセキュリティパラメータ544は、セキュアサーバ510内のセキュア記憶装置541に記憶されてもよい。キー導出機能522および暗号エンジン530は、ハードウェア、ソフトウェア、および/またはファームウェアにより実装されてもよく、セキュアサーバ510内のプロセッサ521によって実装されても(たとえば、実行されても)よい。
【００４５】
デバイス550において、ハードウェアシークレットキー542、および/またはセキュリティパラメータ544は、デバイス550のセキュアメモリ540に記憶されてもよい。たとえば、セキュアメモリ540は、OTPメモリ、およびハードウェアシークレットキー542を備えることができる、および/またはセキュリティパラメータ544は、OTPメモリのヒューズを溶断することによって記憶されてもよい。キー導出機能522および暗号エンジン570は、ハードウェア、ソフトウェア、および/またはファームウェアにより実装されてもよく、デバイス550内のプロセッサ520によって実装されても(たとえば、実行されても)よい。デバイス550は、図1のワイヤレスデバイス100の1つの例示的な設計であってもよい。セキュアメモリ540は、図1のワイヤレスデバイス100内のセキュアメモリ140に対応することができる。プロセッサ520は、図1のワイヤレスデバイス100内のプロセッサ122または124に対応することができる。
【００４６】
さまざまなキー導出機能が、セキュアサーバ510およびデバイス550においてキー導出機能522のために使用されてもよい。キー導出機能は、SHA-1(セキュアハッシュアルゴリズム)、SHA-2(SHA-224、SHA-256、SHA-384、およびSHA-512を含む)、MD-4(メッセージダイジェスト)、MD-5などのような1つまたは複数の暗号化ハッシュ機能を利用することができる。セキュアハッシュアルゴリズムは、入力メッセージと(疑似ランダムビットストリングである)出力ダイジェストとの間の機能が不可逆であり、2つの入力メッセージが同じダイジェストにマップする可能性が非常に低くなるような、暗号特性を有している。キー導出機能522は、公開されているNIST 800-108において説明されるように実装されてもよい。
【００４７】
図2に示されるように、セキュリティパラメータ(たとえば、信頼のルートに関連するセキュリティ情報およびセキュアブートに関連するセキュリティ情報)は、製造プロセスの一部としてワイヤレスデバイスのセキュアメモリに供給されてもよい。セキュリティパラメータの供給は通常、ハードウェアシークレットキーが既にワイヤレスデバイスに供給された後に行われる。セキュリティパラメータは通常、機密ではなく、許可されていないエンティティ(たとえば、製造の従業員)によって供給されてもよい。
【００４８】
図5に示されるように、キー導出機能は、デバイスに供給されているハードウェアシークレットキーおよび少なくとも1つのセキュリティパラメータに基づいて、ワーキングキーを生成するために使用されてもよい。セキュリティパラメータは、デバイスに許可されたソフトウェアに関連し得る。セキュリティパラメータはまた、デバイス上のシステムセキュリティレベルおよび/または固有の信頼のルートを決定することができる。ワーキングキーは、セキュリティパラメータが、たとえばOEMによって、デバイス上に供給された後に適正に生成されてもよい。ワーキングキーは、機密データを保護するためにOEMによって使用されてもよい。許可されていないソフトウェアは、デバイス上でのセキュリティパラメータの供給に先立って、デバイスに悪意をもってロードされる可能性もある。しかし、許可されていないソフトウェアは、セキュリティパラメータの正当なセットがなければ正しいワーキングキーを生成することはできない。さらに、不正確なセキュリティパラメータは、たとえば信用できない従業員など、許可されていないエンティティによってデバイスにロードされる可能性がある。しかし、正しいワーキングキーは、セキュリティパラメータの正当なセットがなければ生成されることはなく、データは引き続き保護されることになる。いずれの場合においても、正しいワーキングキーを利用することができないソフトウェアは、デバイス上のデータを適正に暗号化または復号することができない。
【００４９】
図6は、セキュリティを提供するためのプロセス600の例示的な設計を示す。プロセス600は、デバイス、またはセキュアサーバ、またはその他のエンティティによって実行されてもよい。ワーキングキーは、デバイスの少なくとも1つのセキュリティパラメータおよびシークレットキー(たとえばハードウェアシークレットキー)に基づいて(たとえばキー導出機能により)生成されてもよい(ブロック612)。少なくとも1つのセキュリティパラメータは、デバイス上の認証されるべきソフトウェアおよび/またはワイヤレスデバイスのセキュリティのその他の態様に関連付けられてもよい。少なくとも1つのセキュリティ機能は、ワーキングキーに基づいてデバイスに対して実行されてもよい(ブロック614)。ワーキングキーは、少なくとも1つのセキュリティ機能に対してソフトウェアによって直接的または間接的に使用されてもよい。少なくとも1つのセキュリティパラメータおよび/またはシークレットキーは、たとえばOTP素子などの、デバイス上のセキュアメモリに記憶されてもよい。
【００５０】
少なくとも1つのセキュリティパラメータは、デバイスのセキュリティのさまざまな態様を制御することができる。1つの設計において、少なくとも1つのセキュリティパラメータは、ソフトウェアが(またはどのソフトウェアが)デバイス上での実行に対して許可されているかどうかを決定することができる。もう1つの設計において、少なくとも1つのセキュリティパラメータは、デバイス上のソフトウェアに許可されている少なくとも1つの操作機能(またはソフトウェアがデバイス上でどのように使用され得るか)を決定することができる。さらにもう1つの設計において、少なくとも1つのセキュリティパラメータは、ソフトウェアがデバイスに対して許可されているかどうかを決定するために使用される公開キーを備えることができる。公開キーは、たとえば、図3Aおよび図3Bに示されるように、ソフトウェアに署名するために使用される秘密キーに対応することができる。少なくとも1つのセキュリティパラメータはまた、その他のタイプの情報を備えることもできる。
【００５１】
1つの設計において、シークレットキーは、第1のエンティティ(たとえば、ICチップの製造中、ICチップ製造業者)によってデバイスにロードされてもよい。少なくとも1つのセキュリティパラメータは、第1のエンティティとは異なっていてもよい第2のエンティティ(たとえば、OEMまたはODMデバイス製造業者)によってデバイスにロードされてもよい。1つの設計において、シークレットキーおよび少なくとも1つのセキュリティパラメータは、異なる時間にデバイスにロードされてもよい。シークレットキーおよび少なくとも1つのセキュリティパラメータは、異なるその他の特徴を有することもできる。
【００５２】
ブロック614の1つの設計において、デバイスのデータは、ワーキングキーにより暗号化または署名されてもよい。ブロック614のもう1つの設計において、デバイスのデータは、ワーキングキーにより復号または検証されてもよい。1つの設計において、少なくとも1つのセキュリティ機能は、ソフトウェアの制御の下で実行されてもよい。
【００５３】
少なくとも1つのセキュリティ機能は、ソフトウェアを認証するためのセキュアメカニズム(たとえば、セキュアブート)のアクティブ化に先立って、ソフトウェアによって実行されてもよい。ワーキングキーの使用は、セキュアメカニズムを介してソフトウェアを認証することなく、ソフトウェアがデバイス上で実行されるようにすることができる。
【００５４】
例示的な設計において、装置(たとえば、ASIC、ワイヤレスデバイス、電子デバイスなど)は、メモリおよびプロセッサを含む。メモリ(たとえば、図1のメモリ150)は、デバイスのソフトウェアを記憶することができる。プロセッサ(たとえば、図1のプロセッサ122または124)は、(たとえば、1つまたは複数のデータバスを介して)メモリに操作可能に結合されてもよい。プロセッサは、(i)デバイスの少なくとも1つのセキュリティパラメータおよびシークレットキーに基づいてワーキングキーを生成し、(ii)ワーキングキーに基づいてデバイスの少なくとも1つのセキュリティ機能(たとえば、暗号化、復号、署名、検証など)を実行することができる。プロセッサは、ソフトウェアを認証するためのセキュアメカニズム(たとえば、セキュアブート)のアクティブ化に先立って、少なくとも1つのセキュリティ機能を実行することができる。少なくとも1つのセキュリティパラメータは、メモリに記憶されているソフトウェアの認証に関連付けられてもよい。ワーキングキーは、少なくとも1つのセキュリティ機能に対してソフトウェアによって直接的または間接的に使用されてもよい。シークレットキーおよび少なくとも1つのセキュリティパラメータは、異なるエンティティによって、および/または異なる時間において、デバイスにロードされてもよい。第1のエンティティは、シークレットキーをデバイスにロードすることができ、その後第2のエンティティは、少なくとも1つのセキュリティパラメータをデバイスにロードすることができる。第1のエンティティはICチップ製造業者であってもよく、第2のエンティティはOEMまたはODMであってもよい。あるいは、第1のエンティティは信頼できる従業員であってもよく、第2のエンティティは、たとえば同じ製造現場または異なる場所の、信頼できない従業員であってもよい。装置は、シークレットキーおよび/または少なくとも1つのセキュリティパラメータを記憶するセキュアメモリをさらに含むことができる。少なくとも1つのセキュリティパラメータはまた、少なくとも1つのセキュリティパラメータの保全性がメモリによって保護される限り、装置上の非セキュアメモリに記憶されてもよい。
【００５５】
本明細書において開示されるセキュリティキー生成技法は、さまざまな利点をもたらすことができる。技法は、許可されていないソフトウェアが、セキュアブートのアクティブ化に先立つ製造の脆弱期間中に、ハードウェアシークレットキーを利用すること、またはデータを操作することを防ぐことができる。これは、OEM/ODMが、製造現場を安全にするためにさまざまなプロセスを実装する必要性を軽減することができる。本明細書において開示される技法によって提供されるその他の利点もあり得る。
【００５６】
当業者であれば、情報および信号が、多種多様な異なる技術および技法のいずれかを使用して表され得ることを理解するであろう。たとえば、上記の説明全体にわたり参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場または磁性粒子、光学場または光学粒子、またはそれらの任意の組合せによって表されてもよい。
【００５７】
当業者であれば、本明細書において開示に関連して説明されるさまざまな例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得ることをさらに理解するであろう。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、さまざまな例示的なコンポーネント、ブロック、モジュール、回路、およびステップは、概してそれらの機能に関して上記で説明されてきた。そのような機能がハードウェアまたはソフトウェアのいずれとして実装されるかは、全体的なシステムに課される特定のアプリケーションおよび設計の制約によって異なる。当業者は、各々特定のアプリケーションについて異なる方法で、説明されている機能を実装することができるが、そのような実装の決定は、本開示の範囲からの逸脱を生じさせるものと解釈されるべきではない。
【００５８】
本明細書において開示に関連して説明されるさまざまな例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特殊用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)またはその他のプログラマブル論理デバイス、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、または本明細書において説明される機能を実行するように設計されたこれらの任意の組合せにより実装または実行されてもよい。汎用プロセッサは、マイクロプロセッサであってもよいが、代替策において、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態マシンであってもよい。プロセッサはまた、たとえばDSPとマイクロプロセッサの組合せのようなコンピューティングデバイスの組合せ、複数のマイクロプロセッサ、DSPコアと連動する1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてもよい。
【００５９】
本明細書において開示に関連して説明される方法またはアルゴリズムのステップは、ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、またはこの2つの組合せにおいて直接具現されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取り外し可能ディスク、CD-ROM、または当技術分野において知られている任意のその他の形態の記憶媒体に常駐することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替策において、記憶媒体は、プロセッサに内蔵型であってもよい。プロセッサおよび記憶媒体は、ASIC内に常駐することができる。ASICは、ユーザ端末に常駐することができる。代替策において、プロセッサおよび記憶媒体は、ユーザ端末にディスクリートコンポーネントとして常駐することができる。
【００６０】
1つまたは複数の例示的な設計において、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組合せにおいて実装されてもよい。ソフトウェアにおいて実装される場合、機能は、コンピュータ可読媒体上に1つまたは複数の命令またはコードとして記憶または送信されてもよい。コンピュータ可読媒体は、1つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータス記憶媒体と通信媒体の両方を含む。記憶媒体は、汎用または特殊用途コンピュータによってアクセスされ得る任意の使用可能な媒体であってもよい。限定的ではなく、一例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたはその他の光ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶装置、もしくは望ましいプログラムコード手段を命令またはデータ構造の形態で搬送または記憶するために使用され得る、汎用または特殊用途コンピュータ、もしくは汎用または特殊用途プロセッサによってアクセスされ得る任意の他の媒体を備えることができる。また、任意の接続が、コンピュータ可読媒体と適切に称される。たとえば、ソフトウェアがウェブサイト、サーバ、もしくは同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線、マイクロ波のようなワイヤレス技術を使用するその他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、マイクロ波のようなワイヤレス技術は、媒体の定義に含まれる。本明細書において使用される場合、ディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は通常データを磁気的に再生するが、ディスク(disc)はデータをレーザーにより光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲に含まれるものとする。
【００６１】
本開示の前述の説明は、当業者が本開示を作製または使用できるようにするために提供される。本開示へのさまざまな変更は、当業者には容易に明らかとなり、本明細書において定義される一般的原理は、本開示の範囲を逸脱することなくその他の変形に適用されてもよい。したがって、本開示は、本明細書において説明される例および設計に限定されることは意図されないが、本明細書において開示される原理および新しい特徴と合致する最大範囲が与えられるものとする。
【符号の説明】
【００６２】
120  デジタルモジュール
122  モデムプロセッサ
124  CPU/RISCプロセッサ
126  メインコントローラ
130  内部メモリ
132  ソフトウェア
140  セキュアメモリ
142  セキュリティキー
144  セキュリティパラメータ
146  ブートコード
148  メモリコントローラ
150  外部メモリ
152  ソフトウェア
158  I/Oコントローラ
320  署名機能
322  証明書生成器
330  セキュアハッシュ機能
332  署名機能
370  検証機能
380  セキュアハッシュ機能
390  検証機能
410  セキュアサーバ
430  暗号エンジン
440  ソフトウェア
442  デバイス450のHWシークレットキー
450  デバイス
470  暗号エンジン
480  ソフトウェア
510  セキュアサーバ
520  プロセッサ
521  プロセッサ
522  キー導出機能
530  暗号エンジン
540  セキュアメモリ
541  セキュア記憶装置
542  デバイス550のHWシークレットキー
544  デバイス550のセキュリティパラメータ
545  デバイス550のHWシークレットキー
550  デバイス
560  ソフトウェア
570  暗号エンジン
【図１】
0006509197.tif 000002
【図２】
0006509197.tif 000003
【図３Ａ】
0006509197.tif 000004
【図３Ｂ】
0006509197.tif 000005
【図４】
0006509197.tif 000006
【図５】
0006509197.tif 000007
【図６】
0006509197.tif 000008