説明

セキュアプロセッサにおけるオンチップ不揮発性メモリのプログラミング方法、及びそのようにプログラミングされた装置

改善されたセキュア・プログラミング技術は、セキュアデバイスによってサポートされる典型的なセキュア・アプリケーションを可能とすると同時に、オンチップ秘密不揮発性メモリにプログラミングされるビットサイズを減少させることを含む。セキュア・プログラミング技術は、チップの製造を、チケットを取得するために、チケットサーバに接続する後処理から分離させることを含む。この技術に沿った方法は、チケットを受け取るための如何なる通信に先だって、装置から(製造)サーバの署名が入った証明書を送ることを含んでも良い。本技術に沿った装置は、製造プロセスにおいて、証明書をプライベートキーと共に格納するためのチップ内不揮発性メモリを含んでも良い。

【発明の詳細な説明】
【技術分野】
【0001】
セキュアプロセッサは通常、ID、及び/又は格納された秘密鍵を含む。セキュリティレベルを高めるために、ある量(quantities)の秘密鍵などが、チップ内不揮発性メモリにプログラミングされて、セキュアプロセッサを作ることがある。ID及び秘密鍵のプログラミングは、チップのセキュア製造プロセスにおいて行われる。それぞれのIDは固有のものであり、プライベートキーも又固有のものである。これらの量(these quantities)は、デジタル権利管理や他のセキュリティ関連アプリケーションを実行するため、装置上のアプリケーションで使用される。通常、チップは、ネットワーク・プロトコル、秘密鍵などにおいて、使い捨てデータとして使用するために、暗号学的に強力な乱数を生成するメカニズムを含む。
【背景技術】
【0002】
デジタル権利管理を実行するために使用される典型的なインフラにおいて、サーバは、装置に対する権利を有効にするため、デジタル的に署名されたチケットを供給するのに使用される。そのようなチケットは、装置にチケットを結びつけるために、かかる装置のアイデンティティ、及び/又は秘密鍵メカニズムを使用する。それぞれの装置ID/鍵の独自性を確実にするため、サーバは通常、セキュア・データベースを使って、製造された各チップに対応するID(及び/又は署名された証明書)を格納している。これらの証明書は、チップにプログラミングされた各秘密鍵((プライベートキー、公開鍵)ペアのプライベートキー)に対応する公開鍵を含んでいる。データベースに証明書を投入するためには、データベースに関連するインフラを確実に製造プロセスに結び付け、製造されたチップとデータベース内の証明書の間で1対1対応を維持しなければならない。
【0003】
上述したこれら関連技術の例や制限事項は、あくまで説明に役立つものとして例証したものであって排他的ではない。関連技術の他の制限事項は、当該技術者が本願明細書を読み、図面を検討することにより明らかになるであろう。
【発明の概要】
【発明が解決しようとする課題】
【0004】
以下の実施形態とその特徴は、あくまで例証的であって範囲を制限しないことを意図したシステム、ツール、および方法に関連して記載、図示される。種々の実施形態では、上述した問題の1つ又はそれ以上が低減又は解消され、一方では他の実施形態がその他の改善に向けられる。
【0005】
改善されたセキュア・プログラミング技術は、セキュアデバイスによってサポートされる典型的なセキュア・アプリケーションを可能とすると同時に、オンチップ秘密不揮発性メモリにプログラミングされるビットサイズを減少させることを含む。また、改善されたセキュア・プログラミング技術は、システムの製造プロセスを簡素化することを含む。一実施形態において、秘密事項のプログラミングは、オンチッププログラミングに対し分離されており、特にシステム統合やインフラ設定のプロセスからは分離される。
【課題を解決するための手段】
【0006】
セキュア・プログラミング技術は、チップの製造を、チケットを取得するために、チケットサーバに接続する後処理から分離させることを含む。この技術に沿った方法は、チケットを受け取るための如何なる通信に先だって、装置から(製造)サーバの署名が入った証明書を送ることを含んでも良い。この方法は、データベースを投入し、例えばちょうどチケットサービスが必要となる時など、後のチケットサービス実行を容易にすることを含んでも良い。
【0007】
本技術に沿った装置は、製造プロセスにおいて、証明書をプライベートキーと共に格納するためのチップ内不揮発性メモリを含んでも良い。プライベートキーは、楕円カーブをベースとするプライベートキーであっても、またそうでなくとも良い。楕円カーブの暗号ベースの鍵の長所は、相対的な暗号強度にしては、多くの種類の鍵より小さいことである。更に、楕円曲線アルゴリズムを使用し、無作為のプライベートキーを保存すると共に、ランタイム計算によって公開鍵を算出することが可能である。
【0008】
有利な点としては、特にオンチップ・リアルエステートを考慮して、圧縮された証明書を不揮発性メモリ内に設けることが可能なことがある。(デバイス証明書を保存するために必要とされるものより)より小さなデータセットを使用して、かかる装置はデバイス上にダイナミックに証明書を作成し、それを要求するアプリケーションに提供する。デバイス証明書を複数回作っても、また作らなくとも良い。例えば、一旦デバイス証明書を作成し、更なる使用に備えてシステムの外部記憶装置に格納するようにしても良い。このことは証明書が公知データであるため、特に不安定なことではない(セキュアでない訳ではない)。
【0009】
本技術によって構築された装置は、他の分野においても適用性を持つ可能性がある。例えば、ピア又は、第1のデバイス証明書を必要とする如何なるアプリケーションに対しても装置を認証することができる。またこれとは別に、不揮発性メモリにプログラミングするためのセキュアな製造プロセスを使い、不揮発性メモリは、装置のためのセキュアな乱数発生器を含んでも良い。
【図面の簡単な説明】
【0010】
本発明の実施形態を図面に示す。しかしながら、ここに示した実施形態と図面は、本発明を制限するものというよりむしろ説明するためのものであって、本発明の例を提供するものである。
【図1】サーバにおいてクライアントを認証するためのシステム例を示す図である。
【図2】このシステムにおける使用に適切な装置の電源オンからオフの方法例を示すフローチャートである。
【図3】1回のみデバイス証明書を作成するための方法例を示すフローチャートである。
【図4】図1乃至図3を参照して説明した技術を実装の形態に適したコンピュータ・システムを示す図である。
【図5】図1乃至図3を参照して説明した技術の実装の形態に適したセキュアシステム例を示す図である。
【図6】セキュアデバイス製造方法の一例を示すフローチャートである。
【図7】セキュア証明書の作成方法の一例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下の説明では、本発明の実施形態の十分な理解を与えるために幾つかの特定の具体的な構成が提示される。しかし、当業者であれば、1つ以上のこれら特定の具体的な構成がなくとも、あるいは他の構成部などとの組み合わせにより、本発明を実施することが可能であることが理解されるであろう。また別の例では、様々な実施形態における本発明の側面を覆い隠すことがないように、周知の具体的構成は、図示または詳細に説明されていない。
【0012】
図1は、サーバにおいてクライアントを認証する(validating)ためのシステム100の一例を示している。図1の例でシステム100は、サーバ102、ネットワーク104、及びクライアント106を含む。サーバ102は、証明書リクエストモジュール110、証明書検証モジュール112、証明書データベース114、擬似乱数(PRN)発生器116、及びインターフェース118を含む。クライアント106は、証明書作成モジュール120、不揮発性(NV)メモリ122、及びインターフェース124を含む。
【0013】
サーバ102は、如何なる適用可能な公知の(又は手頃な)コンピュータであっても良い。ネットワーク104は、非限定的な例として、インターネットを含む如何なる通信ネットワークでも良い。クライアント106は、セキュア記憶装置(技術的に安全性が保証された記憶装置)を有する、如何なる適用可能な公知の(又は手頃な)コンピュータであっても良い。不揮発性メモリ122はセキュア鍵ストアを含んでもよく、一実施形態では同不揮発性メモリ122はオンチップメモリである。
【0014】
図1の例では、動作において、レジストレーション(registration)用又はアクティベーション(activation)用プロトコルが、サーバ102によって起動される(或いは、クライアント106が、レジストレーション又はアクティベーションを起動するようにしても良い)。一実施形態では、プロトコルは、装置の同一性(a device identity)を登録(register)したり、証明書データベース114に証明書を与えたりする(certificate into)役割を果たす。そのために、乱数発生器116は、乱数Rを生成し、サーバ102の証明書リクエストモジュール110は、デバイス証明書のリクエストを生成する。乱数Rとデバイス証明書のリクエストは、インターフェース118を介して、ネットワーク104へと送られる。
【0015】
乱数Rとデバイス証明書のリクエストは、クライアント106のインターフェース124で受け取られる。クライアント106の証明書作成モジュール120は、証明書Certを作成する。証明書Certを作成するのに使用されるアルゴリズム例としては、図7を参照して以下に説明する。証明書作成モジュール120は、デバイス・プライベートキーを使用し、乱数R上の署名Sigを算出する。オペランド(operands)は、不揮発性メモリ122に格納されているが、それらは例えばセキュリティカーネル(図5参照)にあるようにしても良い。また別の実施形態では、上記演算には、装置ID、シリアルナンバー、リージョンコード、或いはその他幾つかの数値を含む場合もある。クライアント106のインターフェース124は、ネットワーク104に対し、乱数Rや何らかの任意データ、証明書Cert、及び証明書Sigを返す。
【0016】
サーバ102Rは、インターフェース118で、乱数R、任意データ、証明書Cert、及び署名Sigを受けとる。サーバ102における証明書検証モジュール112は、信頼できる証明書チェーン(trusted certificate chain)を用いて、証明書Certを認証し、証明書Certを用いて署名Sigを認証し、更に乱数Rが、元々サーバ102によってクライアント106に送られた乱数Rと同じであるか否かを検証する。これらの認証及び検証が成功裏に完了したならば、サーバ102は、証明書データベース116に証明書Certを取り込む。この時点で、クライアント106が、サーバ102から(或いはクライアント106に許可を与える証明書を使用できる、その他幾つかのロケーションから)権利管理コンテンツ(rights managed content)やその他のオペレーションのためのデジタルライセンスを獲得することについて、推定上許可されることになる。
【0017】
その他の実施形態としては、装置がRNGを使って新しい鍵のペア{pvt1、pub1}を作成し、署名者としてプライベートキーがプログラミングされた装置を使用して、この新しい公開鍵pub1のために証明書が作成される場合もある。この新しい鍵pvt1は、乱数Rを持つメッセージに署名するのにつかわれる場合もある。
【0018】
尚、SSLなどのセキュアネットワーク・プロトコルや短期秘密鍵を必要とする他のサービスなどは通常、一連の乱数群の情報源(source)を利用している。それに限定されるものではないが、図6を参照して以下に説明するようなセキュア製造プロセスは、装置に秘密乱数Sをシード(seed)するために使用されることができる。AESやSHAの機能のように暗号プリミティブを使った疑似乱数発生アルゴリズムは、疑似乱数(PRNs)を生成するために使用できる。このシーケンスは、装置の電源スイッチを切ってすぐに入れ直した後に、繰り返して行うべきではない。チップ型不揮発性メモリ(chip non-volatile memory)を含む状態保存メカニズム(state-saving mechanism)の使用は、高レベルのセキュリティを確実にする。シーケンス番号を格納するために、この装置は、書き換え可能な不揮発性メモリの一部を使用する。
【0019】
図2は、システム100に適した装置の電源オン(power up)、及び電源オフ(power down)方法の一例のフローチャート200を示している。図2の例において、フローチャート200は、モジュール202でスタートし、ここで装置の電源がオン状態にされる。図2の例で、フローチャート200は、モジュール204に進み、ここでランタイム状態が1に初期化される。ランタイム状態が時間と共にインクリメントされるため、このランタイム状態は、オンチップ書込み可能メモリのような書き込み可能メモリに格納されるべきである。
【0020】
図2の例で、フローチャート200は、モジュール206に進み、装置は該シーケンス番号をインクリメントし、鍵=fn(S、シーケンス番号)(但し、Sはプログラミングされた秘密シード乱数)を算出する。乱数Sはプログラミングされたものであるため、これをオンチップの不揮発性リードオンリメモリ(ROM)に格納することができる。この時点で、この装置は“稼働状態(up and running)”であると見なされる。
【0021】
図2の例で、フローチャート200は、モジュール208に進み、ここでは乱数のリクエストに応えて、装置は、乱数=fn(鍵、状態)を作成すると共に、状態を状態++にインクリメントする。図2の例で、フローチャート200は、次に決定ポイント210に進み、ここでは別の乱数のリクエストを受けているか否かが判定される。別の乱数のリクエストを受け取ったと判定されたならば(210―Y)、フローチャート200はモジュール208に戻る。このようにして、モジュール208は、複数の乱数のリクエストのために、何度も繰り返して行われるかもしれない。
【0022】
別の乱数のリクエストがないと判定されたならば(210−N)、フローチャート200はモジュール212に進み、装置の電源がオフ状態にされ、それまでの装置状態は失われる。即ち、フローチャート200は、パワーオンからパワーオフまでの間における装置の状態を示している。装置の電源が再びオン状態にされた場合、その時には新しい鍵を演算しなければならず、装置状態も再び初期化されることになる。
【0023】
図3は、一回だけデバイス証明書を作成する方法の一例のフローチャート300を示している。図3の例では、フローチャート300は、モジュール302で始まり、ここでデバイス証明書がセキュアデバイスで作成される。次いでフローチャート300は、モジュール304に進み、該デバイス証明書がシステムの外部記憶装置に格納される。装置はセキュア(技術的に安全性が保証されたもの)であるために、この変化(variation)は注目に値するが、デバイス証明書は公知のものである。従って、それはその都度、再生されないが、証明書は依然としてセキュアなものである。
【0024】
図4は、図1乃至図3を参照して上述した技術の実施に適するコンピュータ・システム400を示している。コンピュータ・システム400は、コンピュータ402、I/Oデバイス404、及びディスプレイデバイス406を含む。コンピュータ402は、プロセッサ408、通信インターフェース410、メモリ412、ディスプレイコントローラ414、不揮発性記憶装置416、及びI/Oコントローラ418を含む。コンピュータ402は、I/Oデバイス404とディスプレイデバイス406に接続する形でも、あるいはそれらを含む形でも良い。
【0025】
コンピュータ402は、モデムやネットワークインターフェースを含んでもよい通信インターフェース410を介し、外部システムと接続する。通信インターフェース410は、コンピュータ・システム400の一部かコンピュータ402の一部として考えることができる。通信インターフェース410は、アナログ・モデム、ISDNモデム、ケーブルモデム、トークン・リング・インタフェース、衛星通信インターフェース(例えば、“ダイレクトPC”)、又は1つのコンピュータ・システムを他のコンピュータ・システムに接続する他のインターフェースのいずれでも良い。従来のコンピュータは通常、一種の通信インターフェースを備えるが、インターフェースを含まないコンピュータを作成することで、通信インターフェース410を厳密な意味で任意的なものとすることができる。
【0026】
プロセッサ408は、それに限定されない一例として、インテル社のペンティアム(登録商標)マイクロプロセッサやモトローラ社のパワーPCマイクロプロセッサなどの従来マイクロプロセッサを具備しても良い。プロセッサ408は、総ての従来型コンピュータにとって重要な部品と言えるが、ここで説明した技術を実施するためには、適用可能な如何なる公知の(又は手頃な)プロセッサを使用することも可能である。メモリ412は、バス420によって、プロセッサ408に接続される。メモリ412(以下、“主記憶装置(primary memory)”と呼ぶこともある)は、ダイナミック・ランダムアクセス・メモリ(DRAM)を備えたり、またスタティック・ラム(SRAM)を備えたりすることも可能である。バス220は、プロセッサ408をメモリ412に接続したり、又不揮発性記憶装置416にも、ディスプレイコントローラ414にも、更にI/Oコントローラ418にも接続したりすることができる。
【0027】
I/Oデバイス404は、キーボード、ディスクドライブ、プリンタ、スキャナ、及びマウスか他のポインティング・デバイスを含む他の入出力装置を含むことができる。説明のため、これらI/Oデバイスの少なくとも1つを、DVDプレーヤーのようなブロックベースドメディアデバイスと仮定する。ディスプレイコントローラ414は、公知の又は手頃な方法で、ディスプレイデバイス406上のディスプレイを制御しても良く、ディスプレイデバイス406は、例えば、ブラウン管(CRT)だったり、液晶ディスプレイ(LCD)だったりする。
【0028】
ディスプレイコントローラ414とI/Oコントローラ418はデバイスドライバを具備しても良い。デバイスドライバは、ハードウェアデバイスとの相互作用を可能にするべく開発された特定のコンピュータ・ソフトウェアである。通常、これは、デバイスと通信するためのインターフェースを構成し、ハードウェアが接続されるバスや通信サブシステムを介し、デバイスへの命令送信及び/又はデバイスからのデータ受信を実行する一方、必要不可欠なものはOSとソフトウェアアプリケーションと相互作用する。
【0029】
デバイスドライバは、OS特有でもあるハードウェア依存型コンピュータ・プログラムを含んでもよい。そのコンピュータ・プログラムにより、別のプログラム(通常OS、アプリケーションソフトウェアパッケージ、又はOSカーネル上で動くコンピュータ・プログラム)は、透過的にハードウェアデバイスと相互作用することができ、同コンピュータ・プログラムは通常、ニーズと調和した如何なる必要な非同期・時間依存型ハードウェアにも必要不可欠な割り込み処理を提供する。
【0030】
往々にして不揮発性記憶装置416(以下、“補助記憶装置(secondary memory)”と呼ぶこともある)は、磁気ハードディスクだったり、光ディスクだったり、或いは大量データ用の他の種類の記憶装置だったりする。このデータのいくつかはしばしば、コンピュータ402でソフトウェアを実行している間に、ダイレクトメモリアクセスプロセスによってメモリ412に書き込まれる。不揮発性記憶装置416は、ブロックベースドメディアデバイスを含むものでも良い。“機械可読メディア”や“コンピュータ可読メディア”という用語は、プロセッサ408によってアクセス可能であって、データ信号を符号化する搬送波を包含する如何なる公知の(又は手頃な)記憶装置をも含んでいる。
【0031】
コンピュータ・システム400は、異なったアーキテクチャを持っている多くの実行可能なコンピュータ・システムの一例である。例えば、インテルマイクロプロセッサをベースとするパーソナルコンピュータは往々にして複数のバスを有し、その1つは周辺機器へのI/Oバスであったり、プロセッサ408とメモリ412を直接接続するもの(しばしば“メモリバス”と呼ばれる)であったりする。これらのバスは、バスプロトコルが異なることによって必要とされる如何なる変換(translation)を実行できるブリッジコンポーネントを介して接続される。
【0032】
ネットワーク・コンピュータは、ここで提供した教示に関連して使用可能な別のタイプのコンピュータ・システムである。通常、ネットワーク・コンピュータはハードディスクや他の大容量記憶装置を備えておらず、実行可能プログラムは、プロセッサ408による実行のために、ネットワーク接続からメモリ412に取り込まれる。当該技術では既知のウェブテレビシステムも又、1つのコンピュータ・システムと考えることもできるが、ある入力や出力装置のように図4に示した特徴の幾つかを欠く可能性がある。通常、一般的なコンピュータ・システムは、少なくともプロセッサ、メモリ、メモリをプロセッサに接続するバスを具備することになる。
【0033】
オペレーティングシステム(OS)でコンピュータ・システム400を制御しても良い。OSは、全部ではないが殆どのコンピュータ・システムに使用されるソフトウェアプログラムであって、コンピュータのハードウェア及びソフトウェア・リソースを管理している。通常、OSは、メモリを制御して割り当てをしたり、システムの要求に優先順位を付けたり、入出力装置を制御したり、ネットワーキングを補助したり、ファイルを管理するといったような基本タスクを実行するものである。パーソナルコンピュータ用オペレーティングシステムの例としては、マイクロソフト社のウインドウズ(登録商標)、リナックス、マックOS(登録商標)などがある。OSとアプリケーション・ソフトウエアとの間の線引きは往々にしてかなり難しい。幸いにも、何らかのリーズナブルな線引きで十分であるため、本願で説明した技術を理解するのにこの線引きは不要である。
【0034】
最も低いレベルのOSとしては、その(OSの)カーネルであっても良い。通常、カーネルは、システムブートや、スタートアップする際にメモリに取り込まれるソフトウェアの第1の層(first layer)である。カーネルは、他のシステムやアプリケーション・プログラムに対する様々な共通コアサービスへのアクセスを提供する。
【0035】
ここに使用されたように、コンピュータメモリ中のデータ・ビットにおける操作のアルゴリズム的記述と象徴(symbolic representations)は、当業者に対し最も効果的に技術を伝えるものと思われる。アルゴリズムという用語は、ここで使用するとき、また一般に使用されるとき、所望の結果を導き出す動作(operations)の首尾一貫したシーケンス(self-consistent sequence)と考えられる。この動作は、物理量の物理的な操作(manipulations)を必要とするものである。必ずしも必要ではないが、通常、こうした量は、格納、転送、結合、比較、及び他の操作を行うことができる電気、または磁気の信号の形を取る。時には、主に一般的な使用のために、こうした信号をビット(bits)、値(values)、要素(elements)、記号(symbols)、文字(characters)、項(terms)、数字(numbers)などと呼ぶのが便利であることがわかっている。
【0036】
しかしながら、これら、及びこれらと同様の用語はすべて、適切な物理量に関連付けられ、単にこうした量に適用される手頃なラベル(labels)にすぎないことを心に留めておくべきである。特に明記しない限り、または下記の記述から明らかであるように、“処理する(processing)”、“演算する(computing)”、“計算する(calculating)”、“決定する(determining)”、“表示する(displaying)”などの用語は、コンピュータ・システムのレジスタおよびメモリ内の物理的な(電子)量として表されるデータを操作し、コンピュータ・システムのメモリまたはレジスタ、または他のこうした情報記憶装置、送信装置または表示装置内の同じように物理(電子)量として表される他のデータに変換するコンピュータの動作および処理(process)を指す。
【0037】
ここで説明した技術を実施するための装置は、要求された目的のためにそれ専用に構成しても良く、又コンピュータに格納されたコンピュータ・プログラムによって選択的に起動(activated)されたり再構成(reconfigured)されたりする汎用コンピュータから成るものでも良い。そのようなコンピュータ・プログラムは、それらに限定されるものではないが例えば、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気又は光学カード、フレキシブルディスクを含む如何なるタイプのディスク、光ディスク、CD-ROM、DVD、光磁気ディスク、或いは電子的な指示(instructions)を格納するのに適した如何なる公知の(又は手頃な)の媒体のような、コンピュータ可読記憶媒体に格納されても良い。
【0038】
ここに提示されたアルゴリズムとディスプレイは本来、如何なる特定コンピュータ・アーキテクチャにも関連するものではない。この技術は、高いレベル(例えば、C/C++)であろうと低レベル(例えば、アセンブリ言語)だろうと、又インタープリタ型(例えば、Perl)だろうと、コンパイラ型(例えば、C/C++)だろうと、バイトコード(例えば、Java(登録商標))からコンパイルされるジャストインタイム(JIT)であろうと、如何なる公知の(又は手頃な)プログラミング言語を使用して実施されても良い。どんな公知の(又は手頃な)コンピュータでも、アーキテクチャに関係なく、コンパイルされた機械コードか、さもなければ何らかの言語からコンピュータ・アーキテクチャと互換性がある機械コードへとアセンブルされた機械コードを実行することが可能でなければならない。
【0039】
図5は、図1乃至図3を参照して上述した技術を実施するのに適していたセキュアシステム500の一例を示している。代表的なセキュアシステム500は、ゲーム機、メディアプレーヤー、埋め込み型(embedded)セキュアデバイス、セキュアプロセッサ付き“従来型”PC、或いはセキュアプロセッサを備える他のコンピュータ・システムを備えても良い。
【0040】
図5の例においてセキュアシステム500は、セキュアプロセッサ502、OS504、チケットサービス506、呼出しアプリケーション(calling application)508、及びプロテクト・メモリ510を含む。図5の例ではOS504は、鍵ストア516、暗号化/復号化エンジン517、及びセキュリティAPI518を順に含むセキュリティカーネル514を有する。上述したこれら部品の1つ又はそれ以上、或いはその一部を、プロテクト・メモリ510又は保護されていないメモリ(図示せず)に属させるようにしても良いことを留意すべきである。
【0041】
さらに留意すべきは、慣例だけによって、セキュリティカーネル514が、OS504に属するように表現されていることである。実際にOS504の一部であってもなくても良く、OSの外側に存在することも、或いはOSを含まないシステム上に存在することも可能である。説明を簡単にする目的で、OS504は認証可能であることが前提である。実施形態では、チケットサービス506は、OS504の一部であっても良い。認証付きのチケットサービス506を読み込むこと(loading)が、セキュリティを向上できるという理由で、これは望ましいかもしれない。従って、そのような実施形態では、OS504は認証付きで読み込まれ、チケットサービス506を含むことになる。
【0042】
説明の簡略化のために、プロテクト・メモリは単一メモリとして示される。しかしながら、このプロテクト・メモリは、保護された主記憶装置、保護された補助記憶装置、及び/又は、シークレットメモリを含んでも良い。メモリが保護されるのを確実とするためには、公知の(又は手頃な)メカニズムが適所にあることが前提である。主記憶装置と補助記憶装置との間、及び/又は、揮発性記憶装置と不揮発性記憶装置との間のインタープレイ(interplay)は、公知であるため、様々な種類のメモリと記憶装置の間の区別は図5に関しては示されていない。
【0043】
チケットサービス506は、例えば“デジタルライセンス有効化サービス”として考えられても良く、また非限定的な実施形態では、ライセンス有効化に関連する公知の(又は手頃な)手順を含んでもよい。例えば、チケットサービス506は、デジタルライセンスを有効にするための手順、PKI有効化手順などを含んでも良い。図5の例では、チケットサービス506は、呼び出しアプリケーション508からチケットを有効化することができる。この動作において、チケットサービス506は、呼出しアプリケーション508からチケットを獲得し、続けてチケット有効化を進行させる。
【0044】
チケットには、自分の名前を記入することができる(personalized)。この場合には、秘密共有暗号鍵を算出するために、(上述したようにプログラミングされた)デバイス・プライベートキーを用いて復号化されることができる。チケットは、インターネット・ダウンロードメカニズムを使って獲得されてもされなくてもよく、また、書き込み可能なフラッシュメモリに記憶されてもされなくてもよい。
【0045】
一実施形態では、セキュリティカーネル514が、起動時点において読み込み(loaded)されてもよい。別の実施形態では、セキュリティカーネルの一部が、起動時点において読み込みされ、残りが後で読み込みされても良い。この技術の一例は、Srinivasanらによって、2003年2月7日に出願された“信頼性や下位互換性のあるプロセッサ、及びその上でのセキュアソフトウェア実行”というタイトルの出願番号:10/360,827号に記載される。セキュアな方法(技術的に安全性が保証された方法、in a secure manner)で、セキュリティカーネル514を読み込みするべく、如何なる公知の(又は手頃な)技術も使用可能である。
【0046】
鍵ストア516は、鍵のための格納場所群からなる。鍵を格納するのに使用されるデータ構造は重要な意味をもつものではないが、鍵ストア516は、鍵の一配列と思われても良い。鍵を格納するために、適用可能な如何なる公知の(又は、手頃な)構造も使用可能である。非限定的な実施形態では、鍵ストア516は、静的な(static)鍵を以て初期化されるが、可変鍵(variable keys)は初期化されない(或いは、セキュアでない値に初期化される)。例えば、幾つかの鍵ストア位置(key store locations)は、認証されたセキュリティカーネル514の読み込み(loading)の一部としての信頼値(例えば信頼ルート鍵)で予備充填(pre-filled)される。不揮発性メモリにおけるプライベートキーは、ここから取り出すことも、また将来の使用に備えて鍵ストアに格納することも可能である。
【0047】
一実施形態において、暗号化/復号化エンジン517は、暗号化と復号化の両方が可能である。例えば、かかる動作において、アプリケーションは、セキュリティAPI518に、アプリケーションが暗号化に使用できるというキーハンドルを要求するかもしれない。暗号化/復号化エンジン517を、キーハンドルを使用してデータを暗号化するのに使用しても良い。好都合なことには、セキュリティAPI518は、キーハンドルを平文で提供するが、鍵そのものは決してセキュリティカーネル514から離れることはない。
【0048】
セキュリティAPI518は、鍵を明らかにすることなく(すなわち、鍵がセキュリティカーネル514を離れないか、或いは暗号化される場合にだけに限って鍵がセキュリティカーネル514を離れるような状態で)、鍵ストア516内の鍵を使用した動作を実行することができる。セキュリティAPI518は、鍵ストア516で鍵(そして潜在的には、他のセキュリティマテリアル)を作成(create)し、投入(populate)し、使用するためのサービスを含んでも良い。また、一実施形態では、セキュリティAPI518は、また、秘密鍵とデバイス・プライベートキーを含む、内部の秘密と不揮発性データへのアクセスを与える。例えば、デバイス・プライベートキーは、鍵ストアに格納されたり、セキュリティAPIに使用されたりするかもしれない。1つのAPI呼び出し(API call)が、(ここで記述した、証明書を作成するためのアルゴリズムを用いて)デバイス証明書を戻すために使用されることも可能である。また復号化のための共用鍵を算出するためにプライベートキーを使用したり、メッセージや証明書に署名するためにプライベートキーを使用したりするために、別のAPI呼び出しが構成されることが可能である。実装の形態によっては、セキュリティAPI518は、ハードウェア加速を使用することでAES及びSHAオペレ−ションをサポートするようにしても良い。
【0049】
図5の例では、チケットサービス506とセキュリティAPI518は、システムセキュリティのための個々の実行スペースにおいて実行してもよい。データブロックを有効化するために、チケットサービス506は、ヘッダのデータを使ってチケットを有効にしても良い。そのチケットは、暗号化された鍵を含んでも良い。チケットサービス506は、セキュリティカーネル514におけるサービス(例えば、暗号化/復号化エンジン517)を利用して、鍵を復号化する。
【0050】
一実施形態では、暗号化/復号化エンジン517は、この復号化を実行するために、鍵ストア518からの秘密共通鍵を使用する。別の実施形態では、チケットサービス506は、フラッシュかネットワーク(図示せず)から得られたデバイス個別チケット(device personalized ticket)を使用して、コンテンツに対する幾つかの権利を有効にして、その後に鍵を戻すことも可能である。いずれにしても、このプロセスは、鍵を戻す。この個別チケットは、デバイス・プライベートキーの関数(function)であって、かつ不揮発性メモリにプログラミングされた鍵により暗号化されることができる。
【0051】
矢印520〜528を以て、システム500のデータフローの例が例示を目的として供される。チケットサービス506での証明書リクエストの受取りは、呼出しアプリケーション508からチケットサービス506への証明書リクエスト矢印520によって表わされる。
【0052】
チケットサービス506からセキュリティAPI516への証明書リクエストの送りは、証明書リクエスト矢印522によって表されている。セキュリティカーネル514において、公開鍵/デバイス証明書・作成エンジン517は、鍵/署名ストア518からの鍵/署名データにアクセスする。このアクセスは、プライベートキー/署名アクセス矢印524によって表されている。セキュリティAPI516は、デバイス証明書矢印526に示すように、デバイス証明書をチケットサービス506に返し、それは更にデバイス証明書矢印528に示すように、呼出しアプリケーション508に転送される。
【0053】
図6は、セキュアデバイスを製造する方法の例を示すフローチャート600である。この方法、及び他の方法は、連続的に並べられたモジュールの形で表現される。しかしながら、これらの方法における各モジュールは、並べ替えされたり、並列実行のために適当に並べられたりしても良い。図6の例において、フローチャート600は、モジュール602でスタートし、ここで装置IDが取得される。装置IDは、シリアルナンバーであっても、或いは装置のための他の何らかの固有な識別子であっても良い。
【0054】
図6の例で、フローチャート600は、モジュール604に進み、ここでは装置のために小署名プライベートキー(a small-signature private key)として使用する目的で、擬似乱数が供される。今日に至るまで、本当の意味での乱数というものはコンピュータ上では生成できないが、当然のことながら、疑似乱数発生器や外部のセキュアなハードウェアにおける真性乱数発生器が、ここで意図する目的のために使用できるだろう。小署名プライベートキーは、これに限定されない例として、楕円カーブプライベートキーや比較的小さなフットプリント(footprint)を持った他の何らかのプライベートキーでも良い。
【0055】
図6の例で、フローチャート600は、モジュール606に進み、ここでは共通パラメータを使用してプライベートキーから公開鍵が算出される。例えば、スカラー倍数(scalar multiple)がプライベートキーとなるように、基点(base point)の倍数が算出されても良い。
【0056】
図6の例で、フローチャート600は、モジュール608に進み、ここでは一定の証明書構造(fixed certificate structure)が、証明書を作成するために使用される。証明書は、例えば楕円カーブDSAなどの小署名アルゴリズム(small signature algorithm)を使用して署名される。一実施形態では、該一定の証明書構造は、少なくとも装置ID、発行者名、及びデバイス公開鍵を含むかもしれない。小署名アルゴリズムは、署名サイズを最小限におさえるのに使用される。これに限定されない例として、楕円カーブ署名アルゴリズムが使用されても良い。
【0057】
図6の例で、フローチャート600は、モジュール610に進み、ここでは{装置ID、プライベートキー、発行者ID、署名}が、装置の不非揮発性メモリにプログラミングされる。このセットは、これらのアイテムが殆どの目的に対して充分セキュリティを提供するという理由でこれら4つのアイテムを含んでおり、また該セットは、比較的小さいサイズのプライベートキーと署名のおかげで比較的小さいフットプリントを有する(推定するに、装置ID及び発行者IDも又、比較的小さいフットプリントを有している)。一実施形態では、例えば公開鍵など、デバイス証明書の作成(construct)に必要とされる如何なるデータも、要求に応じてプログラミングされた状態で生成されても良い。しかしながら、与えられた実施形態や実装に見合った形で、より多くのアイテム、又より少ないアイテムが不揮発性メモリにプログラミングされ得る。
【0058】
図6の例では、フローチャート600は、モジュール612に進み、秘密の乱数が装置のROMにプログラミングされる。この秘密乱数は、疑似乱数的に生成されても、また任意に割り当てられるようにしても良い。この秘密乱数は、セキュアな擬似乱数の生成をサポートするのに利用できる。また別の実施形態では、ROMが、他の公知の(又は手頃な)不揮発性記憶装置と置き換えられても良い。
【0059】
図7は、セキュア証明書の作成方法の例を示したフローチャート700である。メリットとして、この方法は、不揮発性でプログラミングされた鍵と必要なソフトウェアを有する装置が、装置認証に使用可能な完全なデバイス証明書を作成することを可能にする。図7の例では、フローチャート700は、モジュール702でスタートし、ここではデバイス証明書のリクエストが、呼出しアプリケーションから受け取られる。
【0060】
図7の例で、フローチャート700は、モジュール704に進み、ここでは{装置ID、プライベートキー、発行者ID、署名}が、不非揮発性メモリから読み込まれる。一実施形態では、セキュリティカーネル・モジュールが、不揮発性メモリにアクセスして読み込む。この目的のために適切なセキュリティカーネル・モジュールの例としては、Srinivasanらによって2003年2月7日に出願された“信頼性や下位互換性のあるプロセッサ及びその上でのセキュアソフトウェア実行”というタイトルの米国出願第10/360,827号や、Srinivasanらによって2006年10月24日に出願された“セキュアデバイス認証システム及び方法”というタイトルの米国出願第11/586,446号に記載されている。しかしながら、如何なる適用可能な公知の(又は手頃な)セキュリティカーネル・モジュールでも使用可能である。
【0061】
図7の例で、フローチャート700は、モジュール706に進み、ここでは公開鍵が、プライベートキーと(もしあるならば)共通パラメータとによって算出される。一実施形態では、この演算は、図6を参照して上述した方法のような製造プロセスに使用されたのと同じアルゴリズムを利用する。公開鍵は、セキュリティカーネルで算出されても良い。
【0062】
図7の例で、フローチャート700は、モジュール708に進み、ここではデバイス証明書が、装置ID、発行者ID、公開鍵、署名、及び共通パラメータから作成される。一実施形態において、セキュリティカーネル・モジュールは、図6を参照して上述した方法のような製造プロセスで使用されおり、該デバイス証明書の構造を認識している。メリットとして、デバイス証明書は、要求に応じて作成できる。
【0063】
図7の例で、フローチャート700は、モジュール710に進み、ここではデバイス証明書が呼出しアプリケーションに供される。デバイス証明書が呼出しアプリケーションに供された時、フローチャート700は終了する。この方法は、別の呼出しアプリケーションで(何らかの理由で、デバイス証明書が再び必要とされる時は同じ呼出しアプリケーションによって)再開することが可能である
【0064】
ここで使用されたように、用語“コンテンツ”は、メモリに保存可能な如何なるデータをも広く含むことを意図する。
【0065】
ここで使用されたように、用語“実施形態”は、それに限定されない一例として説明を行うための実施例を意味している。
【0066】
当業者であれば前述した実施例と実施形態は、代表的なものであり、本発明の範囲を限定するものでないことが理解されるであろう。当業者が明細書を考慮し、図面を検討したときに自明な置き換え、増強、均等物やそれらへの改良が、本発明の要旨と範囲に含まれることを意図している。したがって、添付された特許請求の範囲は、本発明の要旨と範囲内にあるこのような総ての変更、置き換え、均等物を含むことを意図している。
【符号の説明】
【0067】
100 システム
102 サーバ
104 ネットワーク
106 クライアント
110 証明書リクエストモジュール
112 証明書検証モジュール
114 証明書データベース
116 擬似乱数(PRN)発生器
118 インターフェース
120 証明書作成モジュール
122 不揮発性(NV)メモリ
124 インターフェース
200 フローチャート
202、204、206、208、212 モジュール
210 決定ポイント
300 フローチャート
302、304 モジュール
400 コンピュータ・システム
402 コンピュータ
404 I/Oデバイス
406 ディスプレイデバイス
408 プロセッサ
410 通信インターフェース
412 メモリ
414 ディスプレイコントローラ
416 不揮発性記憶装置
418 I/Oコントローラ
420 バス
500 セキュアシステム
502 セキュアプロセッサ
504 OS(オペレーティングシステム)
506 チケットサービス
508 呼出しアプリケーション
510 プロテクト・メモリ
514 セキュリティカーネル
516 鍵ストア
517 暗号化/復号化エンジン
518 セキュリティAPI


【特許請求の範囲】
【請求項1】
装置ID、プライベートキー、発行者ID、及び第1の署名を含むオンチップ不揮発性(NV)メモリと、
前記不揮発性メモリに接続する証明書作成モジュールであって、前記NVメモリから前記装置ID、プライベートキー、発行者ID、及び第1の署名を読み込み、前記プライベートキーの関数として公開鍵を算出し、前記装置ID、発行者ID、公開鍵、及び第1の署名の関数としてデバイス証明書を作成するように構成された証明書作成モジュールと、
前記証明書作成モジュールに接続するインターフェースであって、動作において、前記デバイス証明書のリクエストが前記インターフェースで受け取られ、前記証明書作成モジュールは前記デバイス証明書を作成し、前記デバイス証明書は前記リクエストに応じて前記インターフェースを介して送られるインターフェースとを備えることを特徴とする装置。
【請求項2】
前記証明書作成モジュールが、更に、前記プライベートキーと共通パラメータの関数として前記公開鍵を算出し、前記装置ID、発行者ID、公開鍵、第1の署名、及び前記共通パラメータの関数として前記デバイス証明書を作成するように構成されることを特徴とする請求項1に記載の装置。
【請求項3】
前記装置が、更に、乱数と前記プライベートキーの関数として第2の署名を算出するように構成され、
前記インターフェースは前記乱数を受け取り、前記第2の署名と乱数は、前記リクエストに応じて前記インターフェースを介し、前記デバイス証明書と共に送られることを特徴とする請求項1に記載の装置。
【請求項4】
前記装置が、更に、数発生器を用いて、一時公開鍵と一時プライベートキーの2つの鍵を有する一時キーペアを作り、格納されていたプライベートキーを用いて前記一時公開鍵を含むデータに署名することでアプリケーション証明書を作り、乱数の関数として前記第2の署名の算出に前記一時プライベートキーを使用するように構成されることを特徴とする請求項3に記載の装置。
【請求項5】
前記アプリケーション証明書は、前記第2の署名、乱数、及び前記デバイス証明書と共に、サーバに送られることを特徴とする請求項4に記載の装置。
【請求項6】
前記装置は、アプリケーションのための複数の一時キーペアを作るように構成されることを特徴とする請求項1に記載の装置。
【請求項7】
前記オンチップ不揮発性(NV)のリードオンリーメモリ(ROM)は、秘密シード乱数を含むことを特徴とする請求項1に記載の装置。
【請求項8】
前記証明書作成モジュールが、更に、楕円カーブベースのアルゴリズムを用いて、前記プライベートキーの関数として公開鍵を算出するように構成されることを特徴とする請求項1に記載の装置。
【請求項9】
数発生器と、
証明書リクエストモジュールと、
証明書検証モジュールと、
前記数発生器、前記証明書リクエストモジュール、及び前記証明書検証モジュールに接続するインターフェースとを備えるサーバであって、
動作において、
前記数発生器が第1の数を生成し、
前記証明書リクエストモジュールは、デバイス証明書のリクエストを生成し、前記第1の数と前記デバイス証明書のリクエストは前記インターフェースを介して送られ、第2の数と、前記第2の数を使用して生成される第2の署名と、デバイス証明書を含むレスポンスが前記インターフェースで受け取られ、前記証明書検証モジュールは前記デバイス証明書と第2の署名を有効化し、前記第1の数と前記第2の数が一致しているか否かを検証することを特徴とするサーバ。
【請求項10】
前記インターフェースが署名を受け取り、前記証明書検証モジュールは、前記デバイス証明書を使用して前記署名を有効化することを特徴とする請求項9に記載のサーバ。
【請求項11】
前記数発生器は、疑似乱数発生器であることを特徴とする請求項9に記載のサーバ。
【請求項12】
前記数発生器は、真性乱数発生成器であることを特徴とする請求項9に記載のサーバ。
【請求項13】
動作において、前記証明書検証モジュールは、信頼できる証明書チェーンを使用して前記デバイス証明書を有効化することを特徴とする請求項9に記載のサーバ。
【請求項14】
更に証明書データベースを備え、
前記デバイス証明書は、前記証明書検証モジュールによって有効化された場合に、前記証明書データベースにインポートされることを特徴とする請求項9に記載のサーバ。
【請求項15】
秘密シード乱数を含むオンチップ不揮発性(NV)メモリと、
格納されたシーケンス番号を含むオンチップ書込み可能メモリと、
状態変数を初期値に初期化する手段と、
前記秘密シード乱数と前記シーケンス番号の関数として鍵を算出する手段と、
前記シーケンス番号をインクリメントする手段と、
インクリメントされた前記シーケンス番号を格納する手段と、
鍵と前記状態変数の関数として乱数を生成する手段と、
前記状態変数をインクリメントする手段とを備えることを特徴とする装置。
【請求項16】
前記鍵とインクリメントされた前記状態変数を使用して乱数を生成する手段を更に備えることを特徴とする請求項15に記載の装置。
【請求項17】
前記鍵を生成し、前記乱数を生成するのに使用される関数は、暗号学的に強力な暗号化、復号化、及びハッシュ関数から成るグループから選択されることを特徴とする請求項15に記載の装置。
【請求項18】
装置の装置IDを獲得し、
小署名プライベートキーとして使用するための数を提供し、
共通パラメータを使用して、前記小署名プライベートキーから、公開鍵を算出し、
小署名アルゴリズムを以て、署名を算出するために、一定の証明書構造を使用し、
装置ID、小署名プライベートキー、発行者ID、及び署名を、前記装置の不揮発性(NV)メモリにプログラミングすることを特徴とする方法。
【請求項19】
更に、秘密シード乱数を、前記装置のリードオンリーメモリ(ROM)にプログラミングすることを特徴とする請求項18に記載の方法。
【請求項20】
前記小署名は、楕円曲線デジタル署名アルゴリズム(DSA)を用いて算出されることを特徴とする請求項18に記載の方法。
【請求項21】
更に、
呼出しアプリケーションから、デバイス証明書のリクエストを受け取り、
前記装置の不揮発性メモリから前記装置ID、小署名プライベートキー、発行者ID、及び署名を読み込み、
前記小署名プライベートキーと共通パラメータの関数として前記公開鍵を算出し、
前記装置ID、発行者ID、公開鍵、署名、及び共通パラメータを関数としてデバイス証明書を作成し、
前記デバイス証明書を、呼出しアプリケーションに供することを特徴とする請求項18に記載の方法。
【請求項22】
プライベートキーを格納するためのオンチップ不揮発性(NV)メモリと、
セキュアプロセッサと、
認証されたセキュリティAPIを有するセキュリティカーネルを含み、1個以上のモジュールを格納するセキュアオンチップメモリとを備える装置であって、
動作において、前記セキュリティカーネルは、供給された署名を用いてデバイス証明書を作成するために、前記プライベートキーを使用することを特徴とする装置。
【請求項23】
プログラミングされた秘密シードを格納するためのオンチップ・リードオンリーメモリ(ROM)と、
書き換え可能な状態を格納するためのオンチップ不揮発性メモリとを更に備え、
動作において、前記セキュリティカーネルは、プログラミングされた前記秘密シードと書き換え可能な状態とを用いて、キーマテリアルのための秘密の乱数を生成することを特徴とする請求項22に記載の装置。
【請求項24】
状態変数を初期値に初期化し、
秘密シード乱数とシーケンス番号の関数として鍵を算出し、
前記シーケンス番号をインクリメントし、
鍵と前記状態変数の関数として乱数を生成し、
前記状態変数をインクリメントし、
前記鍵とインクリメントされた状態変数とを使って乱数を生成することを特徴とする方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2010−509838(P2010−509838A)
【公表日】平成22年3月25日(2010.3.25)
【国際特許分類】
【出願番号】特願2009−536227(P2009−536227)
【出願日】平成19年9月13日(2007.9.13)
【国際出願番号】PCT/US2007/020074
【国際公開番号】WO2008/057156
【国際公開日】平成20年5月15日(2008.5.15)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.リナックス
【出願人】(505286718)ブロードオン コミュニケーションズ コーポレーション (8)
【氏名又は名称原語表記】BroadOn Communications Corp.
【Fターム(参考)】