以下の記述では、本発明が十分に理解されるように、説明を目的として多数の具体的詳細を示す。しかしながら、当然のこととして、本発明は、そのような具体的詳細がなくても実施可能である。他の例では、本発明が不必要に曖昧にならないように、周知の構造及びデバイスはブロック図形式で示されている。
本明細書では、以下のアウトラインに従って実施形態を説明する。
1.0.全般的概要
2.0.構造の概要
3.0.機能の概要
4.0.例示的実施形態
5.0.実装の機構−ハードウェアの概要
6.0.拡張及び代替
1.0.全般的概要
プログラマブルデバイスのプロビジョニングをセキュアな方式で行う為のアプローチ、技術、及び機構を開示する。本セキュアプログラミングシステムは、データ及びコードのターゲットペイロードを個別に暗号化し、その情報をプログラマブルデバイスの1つ1つにプログラムすることが可能である。本セキュアプログラミングシステムは、正しいセキュリティ鍵を有するシステム又はデバイスによってのみ復号可能な、カスタマイズされたペイロードパッケージを生成することが可能である。
プログラマブルデバイスは、メモリチップ、回路基板、完成品の電子デバイス(例えば、スマートフォン、メディアプレーヤ、又は他の民生用又は産業用電子デバイス)等であってよい。セキュリティ鍵を構成することにより、プログラマブルデバイスの動作を制御することが可能である。
本セキュアプログラミングシステムは、コンポーネント、回路基板、及び完成製品を含む個々のデバイスをセキュアに構成することが可能である。個々のコンポーネントの製造時にセキュリティ機能を実装することにより、デバイス単位で動作を制御することが可能である。セキュアなコンテンツ、コード、及び鍵を相互運用することにより、高度のセキュリティ及び制御を実現することが可能である。
一実施形態によれば、プログラマブルデバイスのうちの1つ、例えば、回路基板のターゲットペイロードを個別に暗号化することにより、その回路基板を、登録済みセキュリティコードを有するコンポーネントとだけ動作するように構成することが可能である。このことを用いて、回路基板が特定のカテゴリの部品とだけ動作可能であるようにすることが可能である。これによって、製造元は、基板の最終用途をある程度管理することが可能になる。
別の実施形態によれば、プログラマブルデバイスは、デバイスの動作の前提条件として、シリアル番号又は他のパラメータの妥当性を検査することが可能である。更に別の実施形態では、プログラマブルデバイスは、コードを実行前に認証するコード署名機能を備えることが可能である。
別の実施形態によれば、プログラマブルデバイスは、プログラミング前に認証され、ターゲットペイロードのプログラミング後に再度認証されてよい。これは、シリコンベンダのデバイス証明書、及び相手先ブランド製造者(OEM)のデバイス証明書を認証することを含んでよい。プログラマブルデバイスは、シリコンベンダ、OEM、デバイスのプログラミングに使用される工場、プログラマ、及び他の、プログラマブルデバイスの製造の追跡及び認証に使用可能な識別情報を識別するセキュリティ情報を含んでよい。
別の態様では、本発明は、上述の技術を実施するように構成されたコンピュータ装置及びコンピュータ可読媒体媒体を包含する。
2.0.構造の概要
次に図1を参照すると、一実施形態による、本明細書に記載の技術を実施できるセキュアプログラミングシステム100の様々な態様の説明図が示されている。セキュアプログラミングシステム100は、データデバイス及びアクティブな信頼できるデバイスを暗号情報で個別に構成することにより、プログラミング及び作業のセキュアな環境を提供することが可能である。
セキュアプログラミングシステム100は、プログラマ112を有するプログラミングユニット110と、セキュリティコントローラ114と、セキュリティ鍵106と、プログラマブルデバイスと結合する為のアダプタと、第1のセキュリティモジュール116と、第2のセキュリティモジュール118と、第nのセキュリティモジュール120と、を含む。セキュアプログラミングシステム100は、セキュアマスタ記憶システム102を有するセキュリティマスタシステム104と結合されてよい。セキュリティマスタシステム104及びセキュアマスタ記憶システム102は、情報の暗号化及び復号を行う為のセキュリティ鍵106を生成してセキュアに記憶することが可能である。セキュリティ鍵106は、様々なセキュリティパラダイムを実装することが可能である。例えば、セキュリティ鍵106は、秘密鍵152及び公開鍵154を有する鍵ペア150を含んでよい。鍵ペア150を使用して、公開鍵154によって暗号化されたデータを秘密鍵152で復号できる公開鍵暗号システムを実装することが可能である。セキュアプログラミングシステム100は、異なる鍵ペア150を必要な数だけ含んでよい。鍵ペア150、秘密鍵152、及び公開鍵154は、セキュアプログラミングシステム100、プログラミングユニット110、プログラマ112、セキュリティコントローラ114、セキュリティモジュール、プログラマブルデバイス128、データデバイス132、信頼できるデバイス130、又は他の任意のシステム要素を含む様々なデバイス又はシステム要素に対して実装可能である。
システム100は、1つ以上のコンピューティング装置を含む。これらの1つ以上のコンピューティング装置は、本明細書に記載の様々な論理コンポーネントを実装するように構成された、ハードウェアとソフトウェアの任意の組み合わせを含み、そのようなコンポーネントとして、プログラマ112を有するプログラミングユニット110、セキュリティコントローラ114、アダプタ、第1のセキュリティモジュール116、第2のセキュリティモジュール118、及び第nのセキュリティモジュール120がある。例えば、これらの1つ以上のコンピューティング装置は、本明細書に記載の様々なコンポーネントを実装する命令を記憶する1つ以上のメモリと、1つ以上のメモリに記憶された命令を実行するように構成された1つ以上のハードウェアプロセッサと、様々なコンポーネントによって利用及び操作されるデータ構造体を記憶する、1つ以上のメモリの中の様々なデータリポジトリとを含んでよい。
プログラミングユニット110は、データ、メタデータ、及びコードをプログラマブルデバイス128にプログラムするセキュアなシステムであってよい。プログラミングユニット110は、セキュリティマスタシステム104からセキュリティ情報を受け取り、その情報を処理し、そのセキュリティ情報の個別に構成されたバージョンを各プログラマブルデバイス128に転送することが可能である。
プログラミングユニット110はプログラマ112を含んでよい。プログラマ112は、プログラマブルデバイス128を物理的にプログラムする電気機械システムであってよい。例えば、プログラマ112は、プログラマブルデバイス128を収容したトレイを受け取り、プログラマブルデバイス128をアダプタユニットに電気的に結合し、プログラマブルデバイス128にセキュリティ情報を転送することが可能である。プログラミングユニット110は、各プログラマブルデバイス128から、個別化されたステータス情報を受け取り、各プログラマブルデバイス128に転送されるセキュリティ情報を個々のデバイスごとにカスタマイズすることが可能である。例えば、各プログラマブルデバイス128は、他のプログラマブルデバイスに転送される情報と異なる個別の情報ブロックを受け取ることが可能である。
プログラマ112は、プログラマブルデバイス128へのアクセスに使用可能なアダプタのうちの1つ以上のアダプタに結合されてよい。これらのアダプタは、第1のアダプタ122、第2のアダプタ124、及び第nのアダプタ126を含んでよい。
一事例では、第1のアダプタ122は、1つ以上のプログラマブルデバイスをプログラマ112に電気的に接続することに使用可能なハードウェアデバイスであってよい。そしてプログラマ112は、あるバージョンのセキュリティ情報を1つのプログラマブルデバイス128に転送することが可能である。第1のアダプタ122は、プログラマブルデバイス128をマウントする為のソケットを1つ以上含んでよい。第1のアダプタ122は、集積回路をマウントする為のソケット、コネクタ、ゼロ挿入力(ZIF)ソケット、又は同様のデバイスを含んでよい。
これらのアダプタは、プログラマブルデバイス128をマウントする為の電気機械式ユニットとして説明されているが、当然のことながら、別の実施態様を有してもよい。例えば、プログラマブルデバイス128が独立した電子デバイス、例えば、携帯電話、民生用電子デバイス、回路基板、又は同様の、アクティブコンポーネントを有するデバイスである場合には、アダプタは、プログラマブルデバイス128と通信する機構を含んでよい。アダプタは、ケーブルリンク、ユニバーサルシリアルバスリンク、シリアル接続、パラレル接続、無線通信リンク、電子データバスインタフェース、光インタフェース、又は他の任意の通信機構を含んでよい。
プログラマブルデバイス128は、プログラミングユニット110によってセキュア情報をプロビジョニングされることが可能なデバイスである。例えば、プログラマブルデバイス128は、フラッシュメモリユニット、プログラマブル読み出し専用メモリ、セキュアデータ記憶デバイス、又は他のデータ記憶デバイスのようなデータデバイスであってよい。
プロビジョニングは、データ及び/又はコード情報をデバイスに転送することを含んでよい。例えば、フラッシュメモリユニットは、これをデータでプログラムすることによってプロビジョニングされてよい。
プログラマブルデバイス128は更に、セキュリティデータ及びセキュリティプログラミング情報を含む信頼できるデバイス130を含んでよい。例えば、プログラマブルデバイス128は、信頼できるデバイス130として、例えば、携帯電話、ハードウェアセキュリティモジュール、信頼できるプログラミングモジュール、回路基板、又は同様のデバイスを含んでよい。
データデバイス132は、任意の数のデバイスを含んでよく、例えば、第1のデータデバイス134、第2のデータデバイス136、及び第nのデータデバイス138を含んでよい。信頼できるデバイス130は、任意の数の信頼できるデバイスを含んでよく、例えば、第1の信頼できるデバイス140、第2の信頼できるデバイス142から第nの信頼できるデバイス144までを含んでよい。
プログラマブルデバイス128は、それぞれが、個別にカスタマイズされたセキュリティ情報をプロビジョニングされてよい。従って、各プログラマブルデバイス128は、プログラマブルデバイス128に記憶されたデータを個別に暗号化することに使用可能な、セキュリティ鍵106のそれぞれ異なるセットを含んでよい。これにより、セキュリティ情報148を各プログラマブルデバイス128ごとに異なるように暗号化することでセキュリティを最大化することが可能になる。各プログラマブルデバイス128は、個別のセキュリティ鍵106で個人化されてよい。
プログラマブルデバイス128は、ペアデバイス146を含むように構成されてよい。ペアデバイス146は、1つ以上のセキュリティ鍵106を共有できる2つ以上のプログラマブルデバイス128である。これにより、各ペアデバイス146が、同じグループにある別のペアデバイス146を検出して認証することが可能になりうる。従って、1つのペアデバイス146からのデータが、別の1つのペアデバイス146と共有されることが可能である。これにより、情報を共有すること、2つ以上のペアデバイス146の間の二方向セキュア通信チャネルを認証すること、他の関連デバイスを識別すること、又はこれらの組み合わせなどの機能性が可能になりうる。
一事例では、セキュアプログラミングシステム100を使用して、第1のデータデバイス134(例えば、システム情報モジュール(SIM)チップ)と第1の信頼できるデバイス140(例えば、スマートフォン)とがペアになった、いずれかのペアデバイス146を確立することが可能である。この構成では、第1のデータデバイス134及び第1の信頼できるデバイス140は、両方とも、ペアデバイス146用セキュリティ鍵106でプログラムされることが可能である。従って、第1の信頼できるデバイス140は、第1のデータデバイス134のセキュリティ情報148(例えば、シリアル番号)の妥当性を検査することにより、第1の信頼できるデバイス140が第1のデータデバイス134に関する他の情報の使用を許可されていることを確認することが可能である。
プログラミングユニット110は、プログラマ112と結合されたセキュリティコントローラ114を含んでよい。セキュリティコントローラ114は、セキュリティ情報を処理するコンピューティング装置である。セキュリティコントローラ114は、暗号情報の処理を促進する特定の暗号及び計算用のハードウェアを含んでよい。例えば、セキュリティコントローラ114は、量子コンピュータ、並列コンピューティング回路、セキュリティ情報を処理するように構成されたフィールドプログラマブルゲートアレイ(FPGA)、コプロセッサ、アレイ論理ユニット、マイクロプロセッサ、又はこれらの組み合わせを含んでよい。
セキュリティコントローラ114は、セキュリティ情報の処理の入力段階、中間段階、又は最終段階においてセキュリティ情報への不正なアクセスを阻止するように特に構成されたセキュアデバイスであってよい。セキュリティコントローラ114は、セキュアコード要素314が実行されるセキュア実行環境を提供することが可能である。例えば、セキュリティコントローラ114は、ハードウェアセキュリティモジュール(HSM)、マイクロプロセッサ、信頼できるセキュリティモジュール(TPM)、専用セキュリティユニット、又はこれらの組み合わせであってよい。セキュリティコントローラ114は、プログラミングユニット110の一部であってよい。例えば、セキュリティコントローラ114(例えば、ハードウェアセキュリティモジュール)は、プログラマ112内に含まれてよい。
セキュリティコントローラ114は、特定のセキュリティ機能性を提供する為にセキュリティモジュールと結合されてよい。セキュリティモジュールは、第1のセキュリティモジュール116、第2のセキュリティモジュール118、第nのセキュリティモジュール120などであってよい。各セキュリティモジュールは、特定のセキュリティ機能性を提供してよく、例えば、識別、認証、暗号化、復号、妥当性検査、コード署名、データ抽出、又はこれらの組み合わせなどのセキュリティ機能性を提供してよい。例えば、セキュリティモジュールは、ハードウェア、ソフトウェア、又はこれらの組み合わせであってよい。
例えば、第1のセキュリティモジュール116は、よく使われるセキュリティ機能の標準化されたセットへのアプリケーションプログラミングインタフェース(API)を提供するように構成されてよい。別の例では、第2のセキュリティモジュール118は、データの暗号化及び復号をより高速で行う為の専用のハードウェア及びソフトウェアの組み合わせであってよい。
プログラミングユニット110は、1つ以上のセキュリティ鍵106のセキュア記憶装置を含んでよい。セキュリティ鍵106は、セキュアプログラミングシステム100の内部で計算されてよく、或いは外部で計算されてからセキュアプログラミングシステム100によって受け取られてもよく、或いはこれらの組み合わせであってもよい。
セキュリティ鍵106は、セキュリティ情報の暗号化及び復号に使用されてよい。セキュリティ鍵106は、セキュリティの様々なメソドロジ及びプロトコルを実装する為に使用されてよい。例えば、セキュリティ鍵106は、公開鍵暗号システムを実装する為に使用されてよい。別の例では、セキュリティ鍵106は、セキュリティの様々なプロトコル又はメソドロジを実装する為に使用されてよい。セキュリティ鍵106は公開鍵暗号システムに使用されるように説明されている場合があるが、当然のことながら、セキュリティ鍵106は、様々なセキュリティパラダイムの実装に使用されてよい。
セキュアプログラミングシステム100の利点の1つとして、セキュリティ鍵106の別々のセット、並びにその個別セキュリティ鍵106によって暗号化される別々のバージョンのセキュリティ情報148を各プログラマブルデバイス128にプロビジョニングできることが挙げられる。これにより、1つのプログラマブルデバイス128に関するセキュリティ情報148の復号に使用されるセキュリティ鍵106が、別の1つのプログラマブルデバイス128に関するセキュリティ情報の復号には使用できないようにすることが可能である。各プログラマブルデバイス128は、保護を最大化する為に、それぞれ異なるセキュリティ鍵106を有してよい。
次に図2を参照すると、プログラマ112の例が示されている。プログラマ112は、プログラマブルデバイス128をプロビジョニングする電気機械式デバイスである。
プログラマ112は、プログラマブルデバイス128にアクセスし、プログラマブルデバイス128にコンテンツペイロードをプロビジョニングすることに使用されてよい。コンテンツペイロードは、データ、コード、図1のセキュリティ鍵106、図1のセキュリティ情報148、及び他の関連コンテンツを含んでよい。
プログラマ112は、様々な構成を有してよい。プログラマ112は、プログラミングプロセッサ202、入力デバイスレセプタクル206、デバイスアダプタ208、デスティネーションソケット210、デバイス装着ユニット212、及び出力デバイスレセプタクル214を含んでよい。例えば、プログラマ112は、プログラマ112、チッププログラマ、デバイスプロビジョニングシステム、回路基板プログラマ、又は同様のプロビジョニングシステムであってよい。
プログラマ112は、プログラマ識別表示216を有してよい。プログラマ識別表示216は、プログラマ112を識別する為の一意の値である。
プログラマ112は、データイメージを初期化してプログラマブルデバイス128に書き込むことによって、プログラマブルデバイス128を構成することが可能である。データイメージは、プログラマブルデバイス128のデバイスタイプに合わせて構成されてよい。プログラマ112は、直接又は間接のメモリアクセスにより、データをプログラマブルデバイス128に転送してよい。
プログラマ112は、プログラマブルデバイス128のシングルペイロードイメージを受け取り、このイメージをローカルプログラマ記憶ユニットに記憶することが可能である。ペイロードイメージは、各プログラマブルデバイス128をターゲットとする個別イメージになるように処理されてよい。プログラマブルデバイス128を構成することにより、メモリ構造、暗号データ、及びユーザデータをプログラマブルデバイス128に記憶することが可能である。構成することは、パーティションのようなワンタイム構造をプログラマブルデバイス128に形成することを含んでよい。
プログラマ112は、プログラミングプロセッサ202を含んでよい。プログラミングプロセッサ202は、プログラマ112を制御するコンピューティングユニットである。プログラミングプロセッサ202は、中央処理ユニット(図示せず)、プログラマ記憶ユニット204、通信インタフェース(図示せず)、及びソフトウェア(図示せず)を含んでよい。
プログラミングプロセッサ202は、様々な構成を有してよい。例えば、プログラミングプロセッサ202は、セキュリティコントローラを含んでよく、或いはシステムコントローラと結合されてよい。プログラミングプロセッサ202は、シングルプロセッサ、マルチプロセッサ、クラウドコンピューティング要素、又はこれらの組み合わせであってよい。
プログラマ記憶ユニット204は、情報の記憶及び取り出しを行うデバイスである。例えば、プログラマ112のプログラマ記憶ユニット204は、ディスクドライブ、ソリッドステートメモリ、光記憶デバイス、又はこれらの組み合わせであってよい。
プログラマ112は、プログラマ204を動作させるソフトウェアを含んでよい。このソフトウェアは、プログラミングプロセッサ202上で実行される制御情報である。このソフトウェアは、プログラマ記憶ユニット204で記憶されて、プログラミングプロセッサ202上で実行されてよい。
プログラマ112は、入力デバイスレセプタクル206を含んでよい。入力デバイスレセプタクル206は、プログラマブルデバイス128のソースである。例えば、入力デバイスレセプタクル206は、電子素子技術連合評議会(Joint Electron Device Engineering Council)(JEDEC)規格に準拠したトレイであってよい。入力デバイスレセプタクル206は、プログラミング前のデバイスを保持することに使用されてよい。
プログラマ112は、出力デバイスレセプタクル214を含んでよい。出力デバイスレセプタクル214は、プロビジョニングが行われたプログラマブルデバイス128のデスティネーションである。例えば、出力デバイスレセプタクル214は、完成デバイス、蓄積管、出荷パッケージ、又は他の同様の構造物を保持する空のJEDECトレイであってよい。
プログラマ112は、デバイスアダプタ208を含んでよい。デバイスアダプタ208は、プログラマブルデバイス128に結合される為の機構である。
デバイスアダプタ208は、様々な構成を有してよい。例えば、デバイスアダプタ208は、チップなどのプログラマブルデバイス128をマウントする為のデスティネーションソケット210を含んでよい。これらのソケットは、プログラマブルデバイス128を保持し、これとインタフェースする為の機構である。デバイスアダプタ208は、様々なソケット構成に対応する為に、モジュール式であってプログラマ112から取り外し可能であってよい。デバイスアダプタ208は、プログラマ112と接続される為のラッチ機構(図示せず)を含んでよい。
デスティネーションソケット210は、プログラマブルデバイス128を保持することが可能である。デスティネーションソケット210は、プログラマブルデバイス128に対する新しい情報の読み書きに使用されてよい。
プログラマ112は、デバイス装着ユニット212を含んでよい。デバイス装着ユニット212は、プログラマブルデバイス128を1つのデスティネーションソケット210に配置する為の機構である。
デバイス装着ユニット212は、様々な様式で実装されてよい。例えば、デバイス装着ユニット212は、ロボットアーム、ピックアンドプレース機構、又はこれらの組み合わせであってよい。デバイス装着ユニット212はレール式の配置システムとして説明されている場合があるが、当然のことながら、1つのプログラマブルデバイス128をデスティネーションソケット210に配置することが可能な任意のシステムが使用されてよい。
デバイス装着ユニット212は、ブランクである1つ以上のプログラマブルデバイス128を入力デバイスレセプタクル206から取り出してよい。デバイス装着ユニット212は、プログラマブルデバイス128をデバイスアダプタ208のデスティネーションソケット210に移してよい。
プログラマブルデバイス128がデバイスアダプタ208と係合して固定されると、デバイスプログラミングプロセスが開始されてよい。プログラマ112は、1つのデスティネーションソケット210にあるプログラマブルデバイス128に情報のローカルコピーをプログラムしてよい。例えば、プログラミング情報のローカルコピーは、あらかじめプログラムされたマスタデバイスにあってよく、ローカル記憶装置内のファイルにあってよく、或いは、リモートサーバにあってよい。
プログラミングが完了すると、デバイス装着ユニット212は、プログラムされたプログラマブルデバイス128を出力デバイスレセプタクル214に移してよい。デバイス装着ユニット212は、プログラマブルデバイス128のうちのエラーがあったものを不合格ビン(図示せず)に移してよい。
プログラマ112は、プログラマ識別表示216を含んでよい。プログラマ識別表示216は、そのプログラマ112の一意の値である。プログラマ識別表示216は、プログラマ112を識別する為に使用されてよい。プログラマ識別表示216は、デバイスをプログラムするのにどのプログラマ112が使用されたかを示す為に、各プログラマブルデバイス128のデバイス識別表示に組み込まれてよい。
次に図3を参照すると、1つの信頼できるデバイス130の例が示されている。信頼できるデバイス130は、セキュア記憶ユニット326及びセキュア実行ユニット324を有するコンポーネントである。信頼できるデバイス130は、セキュア実行ユニット324にあるセキュアコードを実行して、セキュア記憶ユニット326にあるセキュアデータに対する演算を実施することが可能なアクティブコンポーネントである。
信頼できるデバイス130は、図1のセキュアプログラミングシステム100によってプロビジョニングされてセキュリティ情報を含むことが可能である。例えば、信頼できるデバイス130は、デバイス識別表示302と、セキュリティアルゴリズム304と、セキュリティ証明書306と、鍵ペア150(各ペアは秘密鍵152及び公開鍵154を有する)とを含んでよい。
一事例では、セキュリティ鍵106は、公開鍵暗号システム用の鍵ペア150を1つ以上含んでよい。セキュリティ情報は、1つの鍵ペア150の公開鍵154で暗号化されてよく、秘密鍵152で復号されてよい。しかしながら、当然のこととして、本システムは様々なセキュリティパラダイムを利用してよく、そのようなセキュリティパラダイムとして、対称暗号化、非対称暗号化、データ暗号化規格(data encryption standard)(DES)、ハッシュコード、PGP、又は他の暗号システムが挙げられる。別の例では、セキュリティ鍵106の異なる2つのセットを使用するデジタル署名を実現する為に鍵ペア150が使用されてよい。デジタル署名の例では、メッセージ又はペイロードが、第1の要素の秘密鍵152と第2の要素の公開鍵154を使用して暗号化されてよい。結果として暗号化されたメッセージは、第1の要素の公開鍵154と第2の要素の秘密鍵152を使用して復号されてよい。メッセージが正常に復号されれば、そのメッセージが第1の要素によって暗号化されたことになり、従って、デジタル署名が確立されたことになる。
デバイス識別表示302は、各信頼できるデバイス130を個別に一意識別できるデータ値である。例えば、デバイス識別表示302は、シリアル番号、マーカ、セキュリティコード、又はこれらの組み合わせを含んでよい。
セキュリティアルゴリズム304は、セキュアコード要素314である。セキュリティアルゴリズム304は、信頼できるデバイス130に対するセキュリティ機能性を制御する為のアプリケーションプログラミングインタフェースを外部システムに提供することが可能である。セキュリティアルゴリズム304は、各信頼できるデバイス130に合わせてカスタマイズ可能である。例えば、セキュリティアルゴリズム304は、コード要素314を含んでよく、例えば、ソースコード、実行可能コード、ライブラリモジュール、リンクモジュール、構成ファイル、初期化データ、ハードウェア制御コード、又はこれらの組み合わせを含んでよい。
セキュリティ証明書306は、1つの信頼できるデバイス130に関連付けられたセキュリティオブジェクトである。セキュリティ証明書306は、デバイスに特定の信頼の基点が埋め込まれていることを証明するように、あらかじめプログラムされてよい。セキュリティ証明書306は、その中に1つ以上の公開鍵154を有してよい。セキュリティ証明書306は、鍵ペア150、図1のセキュリティ鍵106、暗号化されたパスワード、又はこれらの組み合わせのようなセキュリティデータを含んでよい。
セキュリティ証明書306は、セキュアに記憶されたデータ要素であってよい。例えば、セキュリティ証明書306は、使用前に復号されなければならない暗号化されたセキュリティ情報であってよい。
鍵ペア150は、データの暗号化及び復号に使用される2つ以上の別々のセキュリティ鍵を有するセキュリティ要素であってよい。例えば、鍵ペア150は、秘密鍵152と公開鍵154を含んでよい。公開鍵154で暗号化されたセキュリティ情報は、秘密鍵152で復号されてよい。
鍵ペア150は、様々な様式で実装されてよい。例えば、鍵ペア150は、セキュリティのレベルを変更する為に様々な鍵長を有するように構成されてよい。秘密鍵152及び公開鍵154は、同じ文字長又は異なる文字長で実装されてよい。
鍵ペア150は公開鍵暗号システムの文脈で説明されているが、当然のことながら、鍵ペア150は、他の暗号化パラダイムを実装する為に使用されてもよい。例えば、鍵ペア150は、対称暗号化、非対称暗号化、規格に基づく暗号化、ハッシュアルゴリズム、又は他の任意の暗号化システムに使用されてよい。
信頼できるデバイス130は、セキュリティモジュールとして実装されるセキュリティ機能性を含んでよい。例えば、信頼できるデバイス130は、識別表示モジュール316、認証モジュール320、暗号モジュール318、及びコード署名モジュール322を含んでよい。
識別表示モジュール316は、1つのプログラマブルデバイス128の識別表示を検証することが可能である。識別表示モジュール316は、1つのプログラマブルデバイス128のデバイス識別表示302を受け取って、そのデバイス識別表示302が正しいかどうかを判定することが可能である。例えば、デバイス識別表示320は、既知のデバイスのリストと比較されてよく、或いはチェックサムに対して比較されてよく、或いは計算アルゴリズムを使用して比較されてよく、或いは同様の手法であってよい。
認証モジュール320は、1つのプログラマブルデバイス128の1つ以上のプロパティを認証することが可能である。認証モジュール320は、セキュリティパラメータに1つ以上のセキュリティ鍵106が含まれるデバイス識別表示302を受け取って、与えられたセキュリティパラメータが有効かどうかを判定することが可能である。認証モジュール320は、デバイス識別表示302の妥当性検査にも使用可能である。
セキュリティパラメータの妥当性の判定は、様々な様式で行われてよい。例えば、セキュリティパラメータの妥当性は、1つの信頼できるデバイス130が利用できる1つのセキュリティ鍵を使用してセキュリティパラメータが正常に復号されれば、確認されものとしてよい。別の例では、セキュリティパラメータの妥当性は、1つのセキュリティパラメータを復号し、これを、1つの信頼できるデバイス130に記憶されている所定値と比較することによって確認されてよい。
暗号モジュール318は、暗号演算を実施するユニットである。暗号モジュール318は、暗号化及び復号などの計算集約型の演算を実施する為のインタフェースを提供することが可能である。他のセキュリティモジュールは、セキュリティ機能性を実現する為に暗号モジュール318と結合されてよい。
暗号モジュール318は、様々な様式で実装されてよい。例えば、暗号モジュール318は、ハードウェア、ソフトウェア、又はこれらの組み合わせを含んでよい。暗号モジュール318は、他のセキュリティモジュールが必要な暗号機能を実施することを可能にする標準化されたインタフェースを提供することが可能である。
コード署名モジュール322は、コード要素314をセキュリティ保護するユニットである。コード署名モジュール322は、コード要素の暗号化、コード要素の復号、及びコード要素の実行の制御を行うことが可能である。コード署名モジュール322は、1つの信頼できるデバイス130に対して1つのコード要素314が実行可能であることを、セキュリティ情報がそのコード要素314に関連付けられていることを検証することによって確認する為に使用されてよい。
一事例では、各コード要素314は、コード要素314の実行が許可されている信頼できるデバイス130のモデル番号を示す実行パラメータを含んでよい。コード署名モジュール322は、実行パラメータの妥当性を検査すること、このパラメータを1つの信頼できるデバイス130のモデル番号情報と比較すること、並びにこれら2つの値が一致した場合のみコード要素314の実行を許可することに使用されてよい。これは、コード要素314の動作を、特定のハイエンド電話又は他の特定のデバイスに限定することに用いられてよい。
信頼できるデバイス130の利点の1つとして、セキュリティ情報を内部で識別及び認証することによってセキュリティのレベルを高めることが可能な点が挙げられる。信頼できるデバイス130は、セキュア記憶ユニット326に記憶されているセキュリティ鍵106を使用してセキュリティ情報の妥当性を検査することが可能である。
信頼できるデバイス130は、信頼できるデバイス130がセキュアである場合の信頼の尺度を示すことが可能である。信頼できるデバイス130は、様々な構成を有してよい。例えば、信頼できるデバイス130は、システム識別表示、認証機構、暗号化及び復号の機能性、実行可能ファイルを保護するコード署名、信頼できる記憶装置、及び信頼できる実行環境を有してよい。
システム識別表示は、ハードウェアコンポーネント及びソフトウェアコンポーネントを識別又は記述する要素を含んでよい。信頼できるデバイス130は、その識別情報及び他のプロパティをセキュアに認証することが可能であってよい。信頼できるデバイスは、情報をセキュアに暗号化及び復号することが可能でなければならない。信頼できるデバイス130は、信頼できるコードを認証することが可能でなければならない。信頼できるデバイスは、セキュアな記憶装置及び実行機能を有する必要がある。
セキュアプログラミングシステム100は、信頼の基点のシステムを実装することが可能でなければならない。信頼の基点(RoT)は、信頼できるコンピューティング環境における、本システムによって常に信頼される一連の機能である。例えば、信頼の基点は、信頼できるコンピューティングプラットフォームの暗号プロセスを制御する、独立したセキュアコンピューティングエンジンとして動作可能である。或いは、デバイスは、信頼の基点を、元来信頼されているハードウェアコンポーネント及びソフトウェアコンポーネントとして実装してよい。これらは、 セキュア・バイ・デザインであり、ハードウェアの形で実装されるか、ハードウェアによって保護されてよい。これらは、ソフトウェアの測定又は検証、暗号鍵の保護、デバイス認証の実施などのセキュリティクリティカルな機能を実施することに使用されてよい。
信頼の基点は、様々なセキュリティ機能性を提供することが可能であり、そのような機能性として、オンザフライ暗号化、セキュアデータの改ざんの検出及び報告、アクティブな改ざん試行の検出、デジタル権利管理、及び他のセキュリティ機能が挙げられる。
モバイルハードウェア空間にセキュアな動作を実装することは、デバイスへの物理的アクセスに起因するリスクが高まることから困難である。そのようなセキュアなデバイスは、セキュアな動作を保証する為に、保護されるデータ及びソフトウェアの近くでハードウェアが動作することが必要である。
次に図4を参照すると、1つのデータデバイス132の例が示されている。データデバイス132は、セキュア記憶ユニット326を有するコンポーネントである。データデバイス132は、セキュア記憶ユニット326にセキュアデータを記憶することと、図1の信頼できるデバイス130の1つによってアクセスされた場合に、記憶されているデータへのアクセスを提供することと、を行うことが可能なパッシブコンポーネントである。
データデバイス132は、図1のセキュアプログラミングシステム100によってプロビジョニングされてセキュリティ情報を含むことが可能である。例えば、データデバイス132は、デバイス識別表示302と、セキュリティアルゴリズム304と、図3のセキュリティ証明書306と、鍵ペア150(各ペアは秘密鍵152及び公開鍵154を有する)とを含んでよい。この場合、セキュア記憶ユニット326内のデータには、データデバイス132内から内部的にアクセスされてよい。
セキュア記憶ユニット326は、ライトワンスデータ領域として使用されてよい。セキュア記憶ユニット326に情報がプログラムされてよく、その後、セキュア記憶ユニット326は、データデバイス132の外側からセキュア記憶ユニット326内のデータへのアクセスを排除するように処理されてよい。
一事例では、1つのデータデバイス132がフラッシュメモリデバイスであってよい。フラッシュメモリデバイス内では、フラッシュメモリは様々なブロックにパーティショニングされてよい。幾つかのブロックは、汎用メモリ空間を提供することに使用されてよい。他の幾つかのブロックは、プライベートとして、フラッシュメモリドライブの外側からはアクセスできない情報を記憶することに使用されるように構成されてよい。プライベートブロックは、セキュリティ記憶ユニット326を形成することに使用されてよい。
別の例では、セキュア記憶ユニット326は、1つのデータデバイス132における、セキュリティヒューズによって保護されている専用メモリ領域であってよい。データはセキュア記憶ユニット326に書き込まれてよく、その後、セキュリティヒューズをブローすることによって外部アクセスが排除されてよい。
各データデバイス132が、信頼できる証明書402を含んでよい。信頼できる証明書402は、他のセキュリティパラメータを含んでよいデータ構造体である。例えば、信頼できる証明書402は、デバイス識別表示302、セキュリティアルゴリズム304、及び鍵ペア150を含んでよい。
次に図5を参照すると、デバイス識別表示302の例が示されている。デバイス識別表示302は、図1のプログラマブルデバイス128、図1のセキュアプログラミングシステム100、図1のプログラマ112、又はこれらの組み合わせのいずれかを一意識別することに使用可能なデータ構造体である。デバイス識別表示302は、データデバイス132及び信頼できるデバイス130を含むプログラマブルデバイス128を記述する為に使用されてよい。
デバイス識別表示302は、様々な構成を有してよい。例えば、デバイス識別表示302は、入ってくる信頼の基点504、シリアル番号マーカ512、ファームウェアマーカ506、製造マーカ510、製品マーカ508、動作マーカ514、相手先ブランド製造者マーカ516(OEMマーカ)、鍵ペア150、又は同様のマーカを含んでよい。
入ってくる信頼の基点504はセキュリティ要素である。入ってくる信頼の基点504は、製造時又はプログラミング時に1つのプログラマブルデバイス128にプログラムされてよい。例えば、入ってくる信頼の基点504は、シリアル番号及び鍵値であってよい。別の例では、入ってくる信頼の基点502は、埋め込み識別子であってよく、例えば、シリコン作成時に1つのプログラマブルデバイス128に埋め込まれるデバイス識別子であってよい。
シリアル番号マーカ512は、1つのプログラマブルデバイス128のシリアル番号を含んでよいセキュリティ要素である。デバイス識別表示302は、1つ以上のシリアル番号マーカ512を含んでよい。
ファームウェアマーカ506は、1つのプログラマブルデバイス128に使用されているファームウェアを示すか識別することが可能なセキュリティ要素である。ファームウェアマーカ506は、バージョン番号、計算されたチェックサム値、部分ハッシュ値又は完全ハッシュ値、文字列識別子、数値識別子、又はこれらの組み合わせを含んでよい。例えば、1つのプログラマブルデバイス128が、ファームウェアをインストールされた回路基板であってよい。ファームウェアマーカ506は、個々のファームウェア要素のそれぞれのバージョン番号を識別することが可能である。ファームウェアのバージョン情報は、プログラマブルデバイス128内の図3のコード要素314同士の間の相互運用性を調整することに使用されてよい。別の例では、ファームウェアマーカ506は、計算されたハッシュチェックサムを含んでよく、例えば、MD5ハッシュ又はフィンガプリントを含んでよい。ハッシュチェックサムを使用して、ハッシュチェックサムを、ファームウェアの現行バージョンに対して計算されたハッシュと比較することにより、ファームウェアのデータ保全性を検証することが可能である。差があった場合は、ファームウェアが修正されていることになる。
製造マーカ510は、1つ以上の製造プロパティを示すことが可能なセキュリティ識別子である。例えば、1つのプログラマブルデバイス128は、位置情報、プログラマ識別表示、プログラミングユニット識別表示、製造時刻情報、製造場所情報、時間窓、製造実行システムの識別表示情報、工場識別表示、ベンダ識別表示、製造設備情報、又は製造関連パラメータなどの製造マーカ510を含んでよい。
製品マーカ508は、プログラマブルデバイス128とともに使用される製品を示すことが可能なセキュリティ要素である。製品マーカ508は、関連する製造者、ブランディング情報、製品ライン情報、モデル情報、又は他の製品関連パラメータを含んでよい。
動作マーカ514は、プログラマブルデバイス128の動作プロパティを示すことが可能なセキュリティ要素である。動作マーカ514は、動作電圧、電圧パターン、電流レベル、電力ドロー、加熱因子、クリティカル動作周波数、動作シーケンス情報、又は動作パラメータを含んでよい。
OEMマーカ516は、プログラマブルデバイス128を使用できる相手先ブランド製造者又は関連する請負製造者を示すことが可能なセキュリティ要素である。OEMマーカ516は、製造者識別表示518、ライセンス情報、時間窓、許可された場所、許可された工場、製品ロットサイズ、シリアル番号範囲、又は他のOEM関連パラメータを含んでよい。
デバイス識別表示302は、プログラマブルデバイス128のセキュリティ情報を含む多変数データ構造体である。デバイス識別表示302のデータ要素は、デバイス識別表示302内で個別に暗号化されてよい。デバイス識別表示302自体が暗号化されてよい。デバイス識別表示302は、デバイス識別表示302を形成するデータ要素、並びにデバイス識別表示302自体を保護する為に使用される、暗号化などのセキュリティ機構の程度の両方に関して、それぞれのプログラマブルデバイス128に固有であってよい。
デバイス識別表示302の多くの利点のうちの1つは、デバイス識別表示302内の特定のデータ要素へのアクセスが、その必要な要素だけを復号することによって可能になることである。デバイス識別表示302と個々のデータ要素の両方を暗号化することにより、セキュリティの粒度を高めることが可能である。
次に図6を参照すると、セキュアプログラミングシステム100の例示的ブロック図が示されている。セキュアプログラミングシステム100は、幾つかのセキュアオブジェクトを含み、例えば、第1のセキュアオブジェクト602及び第2のセキュアオブジェクト604を含む。第1のセキュアオブジェクト602は、第2のセキュアオブジェクト604とインタフェース又は通信してよい。
これらのセキュアオブジェクトは、不正な傍受又は複製からの保護の為のセキュリティ機構又はセキュリティプロトコルを有する任意のハードウェアオブジェクト又はソフトウェアオブジェクトを表す。例えば、セキュアオブジェクトは、1つのデータデバイス132、1つの信頼できるデバイス134、電子コンポーネント、電子デバイス、ブートローダ、ファームウェア(FW)、オペレーティングシステム(OS)、ソフトウェアアプリケーション、ハードウェアプログラマ、周辺デバイス、ウェブサイト、機械等であってよく、これらに限定されない。
第1のセキュアオブジェクト602は、識別表示モジュール316、認証モジュール320、暗号モジュール318、及びコード署名モジュール322とインタフェースしてよい。説明の為に、第2のセキュアオブジェクト604は、第1のセキュアオブジェクト602とだけ接続されているように示されているが、第2のセキュアオブジェクト604も、識別表示モジュール316、暗号モジュール318、認証モジュール320、コード署名モジュール322の任意の組み合わせと接続されてよい。第1のセキュアオブジェクト602又は第2のセキュアオブジェクト604をセキュリティ侵害から保護する為に、識別表示モジュール316、暗号モジュール318、認証モジュール320、コード署名モジュール322、他の任意の、セキュアプログラミングシステム100のユニット、モジュール、又は機能の組み合わせが使用され、これらに限定されない。
識別表示モジュール316は、セキュアオブジェクトを不正なアクセスから保護する為に、セキュアオブジェクトの識別情報を生成する。識別表示モジュール316は、識別表示トークン624(IDトークン)を抽出する。IDトークン624は、セキュアオブジェクトへのアクセスが許可される前に識別情報を検証することに用いられる情報を含む。IDトークン624に含まれてよいものは、ユーザ識別表示、デバイスのシリアル番号、デバイスの識別表示等であってよく、これらに限定されない。
IDトークン624は、識別表示モジュール316によって抽出されてよく、信頼の基点のコード620(RoTコード)及び信頼の基点のデータ622(RoTデータ)を含む(これらに限定されない)任意のセキュア情報又はセキュア機構を使用して抽出されてよい。例えば、RoTデータ622は、デバイスのデジタル生産地証明書に関連付けられた情報を表してよい。
本明細書で言及されている信頼の基点(RoT)という用語は、ハードウェアコンポーネント、ソフトウェアコンポーネント、又はハードウェアコンポーネントとソフトウェアコンポーネントとの組み合わせを含む、信頼できる、又はセキュアなコンピューティングモジュールにおける一連の機能を意味する。例えば、これらの機能は、ブートファームウェア、ハードウェア初期化ユニット、クロスチェックコンポーネント/チップ等の形で実装されてよく、これらに限定されない。又、例えば、これらの機能は、暗号プロセッサの動作を制御する独立したコンピューティングエンジンを使用して実装されてよく、これに限定されない。
IDトークン624は、RoTコード620を使用してRoTデータ622から抽出されてよい。IDトークン624は、暗号学的に保護されてよく、従って、RoTコード620によってのみ復号されてよい。IDトークン624は固有であってよく、従って、各セキュアオブジェクトは固有の識別表示を有し、どのセキュアオブジェクトもその識別表示が別のセキュアオブジェクトと同じになることはない。
RoTコード620は、デバイスのソースの識別、又はコンテンツのデコードに使用可能なデータを解読する為に使用される命令又はコマンドを含む。RoTデータ622は、保護されていて、RoTコード620でのみデコード可能な情報を含む。
RoTコード620及びRoTデータ622は、任意のセキュアな機構によって供給又は生成されてよい。例えば、RoTコード620及びRoTデータ622は、デバイスのプログラミング又は構成の途中にデバイスのセキュア記憶ユニットにプログラムされてよい。
又、例えば、RoTコード620及びRoTデータ622は、セキュアプログラミングシステム100だけがRoTコード620及びRoTデータ622の受け取りを許可及び有効化されているセキュアな方式で、ホストサーバ又はホストシステムからセキュアプログラミングシステム100に送られてよい。更に、例えば、ホストサーバ又はホストシステムは、図1のセキュリティマスタシステム104を含んでよく、セキュリティマスタシステム104が図1のセキュリティ鍵106を識別又は認証の為にセキュアプログラミングシステム100に送ることにより、セキュアプログラミングシステム100がセキュリティマスタ104からの情報の受け取り又は復号を行うことが可能になりうる。
一例として、セキュア記憶ユニットは、ワンタイムプログラマブルメモリ、又は他の任意の、許可されたユーザ又はデバイスにのみ知られている記憶ユニットを含んでよく、これらに限定されない。別の例として、セキュア記憶ユニットは、承認された情報又は識別表示がある場合のみアクセス可能であって、これがないと許可を拒否される記憶装置又はメモリを含んでよく、これらに限定されない。
例えば、RoTコード620及びRoTデータ622は、デバイス(例えば、セキュアオブジェクト)が本番の環境又はシステムに組み込まれるか、そこで運用される前のデバイスのプログラミング時又は構成時に、デバイスにプリプログラムされてよい。又、例えば、本番の環境又はシステムは、ポータブルデバイス、コンピュータ、サーバ、電子回路基板等を含んでよく、これらに限定されない。
認証モジュール320は、識別表示トークン624がセキュアオブジェクトへのアクセスを許可されているかどうかを検証することに使用されてよい。識別表示モジュール316がIDトークン624を抽出した後、認証モジュール320は、セキュアオブジェクトが、許可されたシステムと通信してセキュア情報の送受信を行うことが可能な有効オブジェクトかどうかを識別する為に、IDトークン624を検証する。例えば、1つのIDトークン624が有効でないと、セキュアオブジェクトは、図1のプログラマ112と情報を交換することを許可されない場合がある。
セキュアオブジェクトのIDトークン624が有効であることを認証モジュール320が確認した後、認証モジュール320は、1つのIDトークン624と、鍵トークン628と、暗号トークン626との組み合わせを生成してよい。鍵トークン628は、IDトークン624の認証に使用される情報を含む。暗号トークン626は、情報のセキュリティ又はデータの機密性の為に情報を暗号学的にエンコード又はデコードすることに使用される情報を含む。
1つ以上の実施形態では、IDトークン624、鍵トークン628、又は暗号トークン626は、RoTコード620を使用してRoTデータ622から生成されてよい。1つ以上の実施形態では、IDトークン624、鍵トークン628、又は暗号トークン626は、暗号学的に保護されてよく、従って、RoTコード620によってのみ復号されてよい。
暗号モジュール318は、セキュアオブジェクト同士の間で、或いはセキュアオブジェクトと外部システムとの間で交換されるセキュア情報の為のデータの暗号化及び復号を行うことが可能である。セキュアオブジェクトとの間でセキュア情報を交換することが可能な外部システムは、プログラマ112、セキュリティマスタシステム104、ホストシステム等であってよく、これらに限定されない。
1つ以上の実施形態では、識別表示モジュール316がIDトークン624を抽出した後、又は認証モジュール320がIDトークン624の妥当性を確認した後に、暗号モジュール318がIDトークン624、鍵トークン628、及び暗号トークン626を生成してよい。暗号トークン626は、暗号モジュール318が、RoTデータ622から情報をデコードする為にRoTコード620を使用して生成してよい。
1つ以上の実施形態では、暗号モジュール318は、RoTデータ622から他の情報を更にデコードする為に、暗号トークン626を使用して、IDトークン624又は鍵トークン628を生成してよい。一実施形態では、情報のセキュリティ又はデータの機密性を高める保護レベルが複数ある暗号モジュール318を使用すれば、データ侵害の排除が大幅に簡略化される。
1つ以上の実施形態では、暗号モジュール318は、対称鍵暗号、公開鍵暗号等であってこれらに限定されない暗号方法を含んでよい。例えば、暗号モジュール318は、送り側と受け側の両方が、所定のアルゴリズムで計算されてよい同じ鍵又は別々の鍵を共有することが可能な暗号方法を含んでよい。
一例として、暗号方法は、ブロック暗号方法、暗号ハッシュ関数等であってよく、これらに限定されない。別の例として、暗号方法は、DES(Data Encryption Standard)、AES(Advanced Encryption Standard)、トリプルDES、MD4メッセージダイジェストアルゴリズム、MD5アルゴリズム、セキュアハッシュアルゴリズム1及び2等であってよく、これらに限定されない。
一例として、暗号方法は、異なる(しかし数学的に関連する)2つの鍵、即ち、公開鍵及び秘密鍵が使用されてよい公開鍵(非対称鍵)暗号であってよく、これに限定されない。別の例として、一方の鍵(例えば、秘密鍵)を他方の鍵(例えば、公開鍵)から計算することが(たとえこれらが関連し合っていても)コンピュータ的に実行不可能な場合がある公開鍵システムが構築されてよい。公開鍵及び秘密鍵は両方とも、相互に関係のあるペアとして秘密裏に生成されてよい。
例えば、公開鍵暗号システムでは、公開鍵が自由に配布されてよく、その一方で、ペアを成す秘密鍵が秘密のままであってよい。公開鍵暗号化システムでは、公開鍵が暗号化に使用されてよく、秘密鍵が復号に使用されてよい。
コード署名モジュール322は、システム間又はデバイス間で交換されるコード情報の保全性を検証する。コード署名モジュール322は、交換された情報の内容が改変又は改ざんされていないかどうかを検証することが可能である。
例えば、コード署名モジュール322は、ソフトウェアの作成者又は生成者を確認する為に実行可能ファイル又はスクリプトにデジタル署名を行うプロセスを含んでよく、実行可能コード又はスクリプトが改変又は破損されていないことを検証する。又、例えば、コードが署名されてから改変又は破損されたかどうかを、暗号ハッシュ、チェックサム等(これらに限定されない)によって検証されてよい。
1つ以上の実施形態では、識別表示モジュール316がIDトークン624を抽出した後、又は認証モジュール320がIDトークン624の妥当性を確認した後に、コード署名モジュール322がIDトークン624、鍵トークン628、及び暗号トークン626を生成してよい。暗号トークン626は、コード署名モジュール322が、RoTデータ622から情報をデコードする為にRoTコード620を使用して生成してよい。
1つ以上の実施形態では、コード署名モジュール322は、RoTデータ622から他の情報を更にデコードする為に、暗号トークン626を使用して、IDトークン624又は鍵トークン628を生成してよい。一実施形態では、情報のセキュリティ又はデータの機密性を高める保護レベルが複数あるコード署名モジュール322を使用すれば、データ侵害の排除が大幅に簡略化される。
セキュアオブジェクト、例えば、第1のセキュアオブジェクト602又は第2のセキュアオブジェクト604は、セキュア実行エンジン606とインタフェースしてよい。セキュア実行エンジン606は、セキュアオブジェクトの動作を管理又は制御する機構を含む。セキュア実行エンジン606は、セキュア実行ユニット324及びセキュア記憶ユニット326を含む。
セキュア実行ユニット324は、保護された環境でコード又はコンピュータ命令を実行するブロックである。セキュア実行ユニット324が動作する環境は、信頼できる認証済みアプリケーションコードだけが動作可能な大規模且つ広範囲のセキュア環境を作成するという課題に対してフレキシブル且つスケーラブルなソリューションを生成することが可能である。セキュア実行ユニット324は、プログラマ112及びセキュアオブジェクトがセキュア環境で一緒に動作することを可能にしうる。
セキュアオブジェクトがエンドユーザの本番環境で動作する前に、セキュアオブジェクトがあらかじめプログラム、構成、テスト、又は認証されていれば、セキュア実行ユニット324は、セキュア記憶ユニット326によって記憶されている信頼できるコードを実行することが可能である。セキュア実行ユニット324によって実行される信頼できるコードは、署名及び認証されてよい。
セキュア記憶ユニット326は、セキュア実行ユニット324が実行する信頼できるコードを記憶し、提供する。一実施形態では、セキュア環境は、セキュア実行エンジン606により大幅に簡略化され、セキュア実行エンジン606は、プログラムコードをセキュア記憶ユニット326に記憶し、セキュア実行ユニット324を使用してプログラムコードを実行することにより、データ侵害に対して更なるレベルの保護を提供する。
例えば、セキュアオブジェクトがあらかじめプログラム、構成、テスト、又は認証されていれば、信頼できるコードは、セキュアオブジェクトのセキュア記憶領域又はメモリ領域にあらかじめ記憶されてよい。又、例えば、信頼できるコードは、暗号モジュール318が、プログラマ112からセキュアオブジェクトに送られた情報を使用してデコードしてよい。
次に図7を参照すると、セキュアプログラミングシステム100のブロック図の別の例が示されている。この例の図は、セキュアオブジェクトのプログラミング中のセキュア情報のデータフローを示している。
例えば、ID1、ID2、及びID3として示されている識別表示トークン624は、セキュアオブジェクトのシリアル番号マーカ512を含んでよい。シリアル番号マーカ512は、各セキュアオブジェクトに割り当てられた一意情報である。セキュアオブジェクトのシリアル番号マーカ512は、2つのセキュアオブジェクトが同じシリアル番号マーカを共有することがないように、別のセキュアオブジェクトの別のシリアル番号マーカ512と異なってよい。シリアル番号マーカ512は、図1のプログラマ112によって生成されてよい。各シリアル番号マーカは、プログラマ112によって各セキュアオブジェクトに割り当てられてよい。
図5の入ってくる信頼の基点504(In_RoT)は、図2のプログラマ識別表示216を含んでよく、これに限定されない。In_RoT504で示される入ってくるRoT504は、セキュアオブジェクトのプログラミングの前にあらかじめプログラム又は構成されている情報を含む。1つ以上の実施形態では、あらかじめプログラムされている情報は、セキュアオブジェクト、プログラマ112、及びセキュアオブジェクトのプログラミングの為に、複数のアダプタの組み合わせにプログラムされていてよい。例えば、In_RoT504は、シリコン製造時にセキュアオブジェクトに埋め込まれるシリアル番号であってよい。
In_RoT504は、IDトークン624とは別個であるか異なっていてよい。In_RoT504は、セキュアオブジェクトにプログラムされる情報とは異なる、あらかじめプログラムされた情報を含んでよい。
例えば、In_RoT504は、コンポーネントの製造時にコンポーネントに埋め込まれたかプログラムされたシリアル番号又は一意鍵を含んでよく、これらに限定されない。又、例えば、コンポーネントの製造時は、コンポーネントがプログラムされる前の、コンポーネントがシリコンレベル又はシステムレベルで製造されたときであってよく、これに限定されない。
1つ以上の実施形態では、In_RoT 504は、製造実行システム702(MES)によって収集又は入力されてよい。In_RoT504は、一意のシステムレベルのRoTを生成する為に、プログラマで生成された一意のRoT(例えば、IDトークン624)と組み合わされてよい。In_RoT504は、コンポーネントの製造時にコンポーネントにあらかじめプログラムされているデジタル生産地証明書からの情報を含んでよい。
In_RoT504は、P1及びP2として示される任意の数の製造マーカ510を含んでよい。製造マーカ510は、コンポーネントの製造時に、コンポーネントに関連付けられた情報を含む。例えば、製造マーカ510は、コンポーネントID、プログラマID、コンポーネントの製造場所、コンポーネントの製造日時等を含んでよく、これらに限定されない。
製造実行システム702は、製品の品質を管理する目的で製造時に使用されるコンピュータシステムである。MES702は、原材料が完成品に変わるまでを追跡して文書化することが可能である。MES702は、生産高を増やす為に工場の作業場における現在の状況をどのように最適化できるかについての情報を提供することが可能である。MES702は、生産工程の複数の要素(例えば、投入量、人員、機械、サポートサービス等)の管理を可能にする為にリアルタイムで働く。
1つ以上の実施形態では、MES702は、プログラマブルデバイス128をプログラムする為に、In_RoT504をIDトークン624と一緒に受け取ってよい。In_RoT504及びIDトークン624は、セキュアオブジェクトのデバイス識別表示302を生成する為に使用されてよい。デバイス識別表示302は、一意であって、1つのデバイス又はセキュアオブジェクトにのみ関連付けられている情報を含む。
デバイス識別表示302は、システム、例えば、第1の基板712又は第2の基板714にプログラムされてよい一意情報を含んでよい。第1の基板712又は第2の基板714は、幾つかのセキュアオブジェクトがシステム内に集められて相互接続されている、基板レベルのシステムである。
第1の基板712は、暗号用のシステム公開鍵154を含んでよい。システム公開鍵154は、公開鍵暗号化システム用として第1の基板712に実装されてよい。システム公開鍵154は、図1の1つの鍵ペア150の一部であってよい。セキュリティ情報は、セキュアオブジェクトが図1の1つの鍵ペア150の公開鍵154を使用して暗号化してよく、第1の基板712が秘密鍵152を使用して復号してよい。
第1の基板712は、システム公開鍵154を使用して、セキュア情報を暗号化してセキュアオブジェクトに送ってよく、セキュアオブジェクトは、暗号化された情報を、秘密鍵152を使用して復号してよい。システム公開鍵154は第1の基板712用として説明されているが、当然のことながら、システム公開鍵は第2の基板714に実装されてもよい。
システム100は、本明細書に記載の機能性を実現するように構成される、多数の可能なコンポーネント構成のうちの1つを示しているに過ぎない。より少ないコンポーネント、より多くのコンポーネント、又は別のコンポーネントを含む別の構成も可能であり、コンポーネント間の動作分担は、構成に応じて様々であってよい。例えば、実施形態によっては、幾つかのセキュリティモジュールが省略されてよく、他のいずれかのコンポーネントがその省略されたコンポーネントの代用として頼りにされてよい。別の例として、一実施形態では、システム100は、複数のシリアル番号又は他のシステム識別子を更に含んでよい。
次に図8を参照すると、1つの信頼できるデバイス130をプロビジョニングする例が示されている。プロビジョニングプロセスでは、プログラマブルデバイス128にセキュリティデータをプログラムし、それらの信頼できるデバイス130を別の1つの信頼できるデバイス130に関連付けることが可能である。更に、プロビジョニングプロセスでは、それらの信頼できるデバイス130をセキュアプログラミングシステム100に関連付けることが可能である。
セキュアプログラミングシステム100は、セキュアプログラミングシステム100の公開鍵154を使用して1つ以上のシリアル番号マーカ512をエンコードし、その暗号化された値をプログラマブルデバイス128にプログラムすることが可能である。例えば、プログラマブルデバイス128は、フィールドプログラマブルゲートアレイ804、プログラマブル中央処理ユニット806(CPU)、エンベデッドマルチメディアメモリコントローラ808(eMMC)、マイクロCPU810、又は同様のデバイスであってよい。
従って、各プログラマブルデバイス128は、セキュアプログラミングシステム100に関連付けられた図1の秘密鍵152でのみ復号可能な1つのシリアル番号マーカ512を有してよい。一事例では、シリアル番号マーカ512は、セキュアプログラミングシステム100のシステム識別表示814を表すことが可能である。これにより、セキュアプログラミングシステム100とプログラマブルデバイス128との間のセキュリティリンケージが得られる。このセキュリティリンケージは、セキュアプログラミングシステム100とプログラマブルデバイス128との間の関係を示す。
プロビジョニングプロセスは、セキュアプログラミングシステム100の秘密鍵152を使用する場合について説明されているが、当然のことながら、別のシステムコンポーネントのシリアル番号マーカ512の1つが使用されてもよい。例えば、プログラマブルデバイス128は、図1のプログラマ112のシリアル番号マーカ512によりプロビジョニングされてよい。
プロビジョニングが行われたプログラマブルデバイス128は、1つの信頼できるデバイス130(例えば、回路基板)にインストールされてよく、この信頼できるデバイス130も、セキュアプログラミングシステム100の秘密鍵154によりプロビジョニングされてよい。そして、回路基板は、エンコードされた値812を復号し、その結果を比較して、シリアル番号マーカ512が一致することを確認することにより、プログラマブルデバイス128を識別することが可能である。
別の例では、セキュアプログラミングシステム100は、1つの信頼できるデバイス130(例えば、回路基板)のシリアル番号マーカ512を受け取り、その回路基板のシリアル番号マーカ512を暗号化して、その情報をプログラマブルデバイス128にプログラムすることによって生成された、エンコードされた値812でプログラマブルデバイス128をプロビジョニングすることが可能である。インストール後、回路基板は、エンコードされた値812を復号し、シリアル番号マーカ512を回路基板のシリアル番号と比較することが可能である。
信頼できるデバイス130は、デバイス識別表示302によりプロビジョニングされてよい。1つの信頼できるデバイス(例えば、回路基板)のデバイス識別表示302は、入ってくる信頼の基点504、シリアル番号マーカ512、ファームウェアマーカ506、製造マーカ510、又は同様の識別子であってよい。例えば、シリアル番号マーカ512は、様々なタイプのプログラマブルデバイス128に関連付けられた識別子ID1、ID2、及びID3を含んでよい。適切な識別子に関連付けられた各プログラマブルデバイス128は、回路基板が適切なコンポーネントの公開鍵154でプロビジョニングされている場合には、回路基板によって識別及び認証されてよい。
プロビジョニングプロセスは、シリアル番号マーカ512を使用して、関連付けられ承認されたシステムを識別するものとして説明されているが、当然のことながら、デバイス識別表示302内の別の要素が使用されてもよい。例えば、プログラマブルデバイス128は、デバイス識別表示302の別の部分(例えば、製造マーカ510又はファームウェアマーカ506)を使用して、信頼できるデバイス130(例えば、回路基板)とプログラマブルデバイス128との間のセキュリティリンケージを確立することが可能である。
セキュアプログラミングシステム100の1つの要素に関連付けられた公開鍵154を使用してデバイス識別表示302の一部をエンコードすることの一利点は、プログラマブルデバイス128と信頼できるデバイス130との相互運用性を制限する認証機構を提供することである。1つの要素の公開鍵154でエンコードされた値でプログラマブルデバイス128をプロビジョニングすることにより、信頼できるデバイス130は、そのプログラマブルデバイス128が信頼できるデバイス130とともに動作することを承認されていることを、秘密鍵152を使用して確認することが可能である。
次に図9を参照すると、管理及びセキュリティ処理システム902(MSPシステム)の例が示されている。MSPシステム902は、プログラマブルデバイス128のデプロイメント及びプロビジョニングをセキュアに行うことが可能である。
MSPシステム902は、データデバイスとアクティブな信頼できるデバイスとを暗号情報で個別に構成することにより、プログラミング及び動作のセキュアな環境を実現することが可能である。MSPシステム902は、セキュアな相手先ブランド製造者(OEM)現場でのプログラマブルデバイス128のセキュアなプログラミングを可能にすることができる。
MSPシステム902は、図1のセキュアプログラミングシステム100の一実施形態でありうる。MSPシステム902の要素は、セキュアプログラミングシステム100の要素を使用して実装されてよい。
MSPシステム902は、一部が複数の場所又は施設にまたがって分散しているシステムの動作をサポートすることが可能である。MSPシステム902は、OEM開発施設940と工場施設942とを含んでよい。OEM開発施設940は、プログラマブルデバイス128の実際のプログラミング及びプロビジョニングの準備に使用されてよい。OEM開発施設940は、複数の工場向けのプログラミング情報の準備に使用されてよい。OEM開発施設940は、一連のセキュアデバイス(例えば、プログラマブルデバイス128、セキュア要素、図1の信頼できるデバイス130、又は他の同様のデバイス)を構成する為の情報を有するプログラミングプロジェクト944をOEMが準備できる場所である。
セキュアデバイスはタイプによって違いがあるが、それらの用語は、当然のことながら、大まかには入れ替えがきき、本質的には汎用である。セキュアデバイス、セキュア要素、プログラマブルデバイス128、信頼できるデバイス130、及び他の同様の要素は、本明細書では、便宜上且つ簡潔さの為に区別なく用いられている場合がある。
OEM開発施設940は、プログラマブルデバイス128のプロビジョニングに使用されるファームウェアイメージ914を取得して、プログラミングプロジェクト944を準備することが可能である。その後、プログラミングプロジェクト944は、工場施設942にセキュアに転送され、プログラマブルデバイス128のプログラミングの管理に使用されてよい。
OEM開発施設940は、プログラミングプロジェクト944の作成を促進する一連のセキュア製造システム及びデータ記憶装置を有してよい。例えば、OEM開発施設940は、ファームウェア開発システム908、OEMマスタリングツール910、ファームウェア更新サービス912、及びOEM管理システム924を含んでよい。
工場施設942は、プログラマブルデバイス128のプログラミング及びプロビジョニングを行う為の場所である。工場施設942は、プログラミングセンタ、組立施設、請負製造者現場、又は同様の場所であってよい。一実施形態では、工場施設942は、プログラマ112及びプログラマブルデバイス128が配置及び運用される場所である。
MSPシステム902は、セキュリティブートローダ918を含んでよい。セキュリティブートローダ918は、セキュリティプロトコルを確実に順守する為に、プログラマブルデバイス128に対してブート時に実行可能なセキュアプログラミングコードである。OEMセキュリティブートローダ906は、デバイスの識別情報を生成し、暗号化されたデータストリームを受け入れてデバイス上で復号する機能を生成し、デバイス上でファームウェアをセキュアに実行できるようにするセキュア実行時環境をデバイス上で初期化する。
MSPシステム902は、セキュアファームウェア920を含んでもよい。セキュアファームウェア920は、プログラマブルデバイス128の不揮発性メモリにエンベッドされるソフトウェアコード及びデータである。セキュアファームウェア920は、暗号化された状態で転送され、プログラマ112において復号されてよい。
MSPシステム902は、ファームウェア復号鍵922を含んでよい。ファームウェア復号鍵922は、ファームウェア復号鍵922に関連付けられた暗号化鍵を使用して暗号化されているセキュアファームウェア920を復号する為に使用されてよい。例えば、ファームウェア復号鍵及び暗号化鍵は、暗号化に使用される対称鍵ペアの一部であってよい。
MSPシステム902は、OEMからのファームウェアイメージ914を含んでよい。ファームウェアイメージ914は、OEMセキュリティブートローダ906によってロードされ、製造中及び製造後にプログラマブルデバイス128上で実行されるエンベデッドアプリケーションコードである。
MSPシステム902は、OEM鍵マテリアル904を含んでよい。OEM鍵マテリアル904は、シリコンベンダデバイス認証鍵955、OEMデバイス証明書946に署名する為に必要なOEMデバイス証明書署名鍵947、OEMデバイス証明書テンプレート950等のような情報を含んでよい。
OEM証明書テンプレート950は、OEM証明書951の形成に使用される情報のブロックである。これは、OEM証明書951に関する必須の基本情報を含む。OEM証明書951は、OEMユーザ968を規定する情報のブロックである。OEM証明書951は、OEM識別子966、OEM公開鍵962、及びOEM秘密鍵952を含んでよい。OEM識別子966は、OEMを一意識別する値である。
シリコンベンダは、プログラマブルデバイス128を製造又は供給できるエンティティである。シリコンベンダは、シリコンベンダ識別子956で識別されてよい。シリコンベンダ識別子956は、シリコンベンダにリンクされた値である。例えば、シリコンベンダ識別子956は、プログラマブルデバイス128を形成する集積回路又はコンポーネントを実際に製造する会社にリンクされてよい。シリコンベンダは又、本システムによるプログラミングに向けてプログラマブルデバイス128を事前構成して納入する会社であってもよい。
MSPシステム902は、OEMファームウェア開発システム908を含んでよい。ファームウェア開発システム908は、プログラマブルデバイス128へのデプロイメントに備えてファームウェアイメージ914の開発をサポートする。
MSPシステム902は、OEMマスタリングツール910(OMT)を含んでよい。OEMマスタリングツール910は、OEMセキュリティブートローダ906をファームウェアイメージ914にバインドできるセキュリティアプリケーション又はシステムである。OEMマスタリングツール910は、ファームウェアイメージ914に対して署名及び暗号化を行い、ファームウェアイメージ914を現場更新に備えて準備することが可能である。現場更新は、プログラマブルデバイス128にデプロイされたファームウェアをセキュアな方式で遠隔変更することを可能にしうる。OEMマスタリングツール910は、ファームウェア復号鍵922を使用してファームウェアイメージ914を暗号化することにより、セキュアファームウェア920を生成することが可能である。OEMマスタリングツール910は、HSM又はTSMを含んでよく、ハードウェア又はソフトウェアとして実装されてよい。
MPSシステム902は、OEM管理システム924を含んでよい。OEM管理システム924は、プログラミングプロジェクト944をOEMユーザに向けて規定するシステムである。プログラミングプロジェクト944は、プログラマブルデバイス128のセキュアな生産工程を規定する情報パッケージである。
OEM管理システム924は、OEMセキュリティブートローダ906、ファームウェアイメージ914、OEM証明書951、OEM鍵マテリアル904、及び生産数948をプログラミングプロジェクト944にバインドすることが可能である。まずプログラミングプロジェクト944が生成された後、プログラミングプロジェクト944は、OEMセキュリティブートローダ906、ファームウェアイメージ914、OEM鍵マテリアル904、OEM証明書951、及び生産数948の参照、コード、及びデータを含むように更新されてよい。バインドプロセスは、それらの情報がプログラミングプロジェクト944のパラメータの一部であることを意味する。OEM管理システム924は、プログラミングプロジェクト944を、工場施設942にある特定のセキュアプログラミングシステムにバインドすることも可能である。プログラミングプロジェクト944は、プログラミングシステム又はサブシステム(例えば、セキュアプログラミングシステム100、プログラミングユニット110、プログラマ112、又はこれらの組み合わせ)の図8のシステム識別表示814を含んでよい。そして、プログラミングプロジェクト944は、システム識別表示814を有するシステムでのみ実施されてよい。
生産数948は、生産工程において生産されるセキュアデバイスの数を示す指標である。生産数948は、セキュアデバイスの生産の開始時点又は完了時点で更新される増分数と比較されてよい。プログラミングプロジェクト944を受け取ったプログラマ112は、生産数948を使用してプログラミング及びプロビジョニングされるデバイスの数を制限することにより、プログラマブルデバイス128の不正な生産を防ぐことが可能である。生産の途中では、現在数978が、生産済み製品の現在の数を示すことが可能である。本システムは、現在数978を生産数948と比較し、現在数978が生産数948と同じになった時点でデバイスのプログラミングを停止してよい。
OEM管理システム924は、様々な様式で構成されてよい。例えば、OEM管理システム944は、共有構成で実装されてよく、それぞれが自前の工場(例えば、工場施設942)を有する複数のOEMへのデプロイメントに向けてプログラミングプロジェクト944を生成することが可能である。OEM管理システム924は、図1のセキュアマスタ記憶システム102、図1のセキュリティマスタシステム104、図1のセキュアプログラミングシステム100、又はこれらのシステム及びサブシステムの組み合わせを使用して実装されてよい。
MSPシステム902は、工場管理システム930を含んでよい。工場管理システム930は、工場施設942においてセキュアプログラミングコンポーネントを管理するシステムである。工場管理システム930は、OEM管理システム944からプログラミングプロジェクト944を受け取り、製造情報を復号して、工場施設942にある他のセキュリティ及びプログラミングのシステムに配布することが可能である。
工場管理システム930は、様々な様式で実装されてよい。例えば、工場管理システム930は、図7の製造実行システム702、図2のプログラミングプロセッサ202、ホストコンピュータシステム、又は別の同様の処理システムとともに実装されてよい。
MSPシステム902は、工場セキュリティシステム932を含んでよい。工場セキュリティシステムは、プログラマブルデバイス128にプログラムされる鍵及び証明書を生成するHSMベースのセキュリティアプライアンスである。工場セキュリティシステム932は、1つのOEMのセキュリティ情報を別のOEMのセキュリティ情報から隔離することにより、マルチテナントOEMアーキテクチャをサポートすることが可能である。これにより、工場セキュリティシステム932は、様々なプログラマにおいて、様々なOEMに向けてプログラマブルデバイス128の様々なセットのプログラミング及びプロビジョニングを行うことが可能になる。
工場セキュリティシステム932は、様々な様式で構成されてよい。例えば、工場セキュリティシステム932は、図1のセキュリティマスタシステム104、図1のセキュリティコントローラ114、図2のプログラミングプロセッサ202、図1の第1のセキュリティモジュール116、図1の第2のセキュリティモジュール118、図1の第nのセキュリティモジュール120、又はこれらの組み合わせを使用して実装されてよい。工場セキュリティシステム932は、MSPシステム902の1つ又は複数のセキュリティコンポーネントを使用して、集中式又は分散式で実装されてよい。
工場セキュリティシステム932は、鍵ペア生成、暗号化、復号、証明書管理、セキュアな記憶、セキュアな実行、及び他の同様のセキュリティ処理機能を含む高いセキュリティの暗号化サービスを提供することが可能である。工場セキュリティシステム932は又、セキュアな開発、セキュアなマスタリング、データ及びコードのセキュアなデプロイメント、セキュアなプロビジョニング、セキュアなプログラミング、及びセキュアな更新をサポートすることも可能である。
工場セキュリティシステム932は、デバイス証明書に基づくデバイス認証、デプロイメントの管理及びバージョニング、デジタルライフサイクル管理、及びアプリケーション管理を実施することが可能である。工場セキュリティシステム932は、対称暗号化、ハッシュ関数、データカプセル化、デジタル署名、鍵の共有及び配送、鍵管理、及びユーザアクセス制御を提供することが可能である。
工場セキュリティシステム932は、工場セキュリティシステム932の識別情報を認証する工場セキュリティシステム証明書933を含んでよい。工場セキュリティシステム証明書933は、OEM開発施設940及びOEM管理システム924から工場管理システム930及び工場セキュリティシステム936に転送される情報に署名する為に使用されてよい。工場セキュリティシステム932は、工場セキュリティシステムデータ暗号化鍵980及び工場セキュリティシステムデータ認証鍵982を含んでよい。これらの鍵は、セキュア情報の暗号化、復号、署名、及び認証をセキュアに行うことに使用されてよい。
MSPシステム902は、工場施設942においてホストシステム936を含んでよい。ホストシステム936は、プログラミングプロジェクト944の実行の制御、並びにプログラマ112と工場セキュリティシステム932との間の通信の管理を行う為のコンピュータシステムである。
ホストシステム936は、様々な様式で実装されてよい。例えば、ホストシステム936は、セキュリティコントローラ114、プログラミングプロセッサ202、又は別の同様の、セキュアプロセシングシステム100と結合されたコンピューティングシステムを使用して実装されてよい。ホストシステム936は、工場セキュリティシステム932、プログラマ112、工場管理システム930、又は他の同様のシステムと結合されてよい。
MSPシステム902は、プログラマブルデバイス128をプログラムするプログラマ112を含んでよい。プログラマ112は、ブランクのデバイス、又は一部プログラム済みのデバイスのセットを受け取り、それらのプログラマブルデバイス128に、プログラミングプロジェクト944からの情報をセキュアにプログラムすることが可能である。
プログラマ112は、プログラマブルデバイス128をプログラムする為のシリアルデータリスト964を生成してよい。シリアルデータリスト964は、プログラマブルデバイス128にプログラムされるデバイス固有データのリストである。これは、ファームウェアイメージ914、OEMデバイス証明書946、コード、データ、又は他の情報を含んでよい。シリアルデータリスト964は、個々のデバイスの情報、例えば、シリアル番号、デバイス識別表示、データ証明書、又は同様のデバイス固有パラメータに基づいて様々であってよい。
MSPシステム902は、プログラマブルデバイス128を保護する為にデバイス証明書を含んでよい。デバイス証明書は、シリコンベンダデバイス証明書926、相手先ブランド製造者デバイス証明書946(OEMデバイス証明書946)、又は他のデバイス証明書であってよい。デバイス証明書は、公開鍵を含む、プログラマブルデバイス128に関する情報、図3のデバイス識別表示302、シリコンベンダ識別子956、OEM識別子966、又は他の同様の情報を含んでよい。
シリコンベンダデバイス証明書926は、1つのセキュア要素(例えば、図1のプログラマブルデバイス128又は信頼できるデバイス130)の識別情報をセキュアに規定するデータ要素のセットである。シリコンベンダデバイス証明書926は、図3のデバイス識別表示302、シリコンベンダ公開鍵954、及び/又は他のセキュリティ情報を含んでよい。シリコンベンダ秘密鍵958で暗号化された情報は、シリコンベンダ鍵ペア960のシリコンベンダ公開鍵954で復号可能である。
シリコンベンダデバイス証明書926は、セキュア要素が他の製造者又はユーザに転送される前に、シリコンベンダ又は製造者によってセキュア要素のセキュア記憶ユニットにプログラムされてよい。シリコンベンダデバイス証明書926はライトワンスセキュア記憶ユニットに記憶されてよく、そこでは、シリコンベンダデバイス証明書926に更なる情報を追加することが可能であるが、既存の情報を消去又は変更することはできない。更なる変更が不要な場合には、セキュア記憶ユニットの一部をロックすることが可能である。セキュア記憶ユニットは、1つ以上のデータ要素を含んでよく、例えば、複数のデバイス証明書及び他の関連セキュリティデータを含んでよい。
シリコンベンダデバイス証明書926は、様々な様式で実装されてよい。例えば、シリコンベンダデバイス証明書926は、図5の製造マーカ510、図3のセキュリティ証明書306、図3のセキュリティアルゴリズム304、図5の製品マーカ508、図5の動作マーカ514、図5の入ってくる信頼の基点504、図4の信頼できる証明書402、又は別の同様のデータ要素を使用して実装されてよい。
MSPシステム902は、デバイスレベルのプログラミング統計をリアルタイムで提供するデバイスデータ追跡システム934を含んでよい。デバイスデータ追跡システム934は、ローカル工場におけるセキュアプログラミングシステム100、又はリモートにプロビジョニングされるデバイスのデバイスレベルの情報を追跡することが可能である。デバイスデータ追跡システム934は、MSPシステム902のプログラマ112によって構成される各プログラマブルデバイス128のデバイスレベルの情報を追跡することが可能である。デバイスデータ追跡システム934は、シリコンベンダデバイス証明書926、図8のシステム識別表示814、デバイス識別表示302、又は他の、デバイスにプログラムされたデータ要素などのデータを追跡することが可能である。デバイスデータ追跡システム934は、妥当性ステータス、構成ステータス、複製ステータス、又は他のデバイスレベルのステータスを含むデバイスステータスを追跡することが可能である。
MSPシステム902は、デバイスプロビジョニングサービス938を含んでよい。デバイスプロビジョニングサービス938は、インターネットを介してプログラマブルデバイス128のプロビジョニングを行うシステムである。デバイスプロビジョニングサービス938は、現場のプログラマブルデバイス128にプロビジョニング情報をセキュアに送達することが可能な、ハードウェアとソフトウェアの組み合わせであってよい。デバイスプロビジョニングサービス938は、各デバイスのセキュアな動作の継続に必要なセキュリティ情報、データ更新、ソフトウェア更新、及び他のセキュリティ及び動作の情報を配布することが可能である。
MSPシステム902は、ファームウェア更新サービス912を含んでよい。ファームウェア更新サービス912は、インターネット、例えば、OEMクラウド928を介してプログラマブルデバイス128のファームウェアを更新するシステムである。ファームウェア更新サービス912は、1つ以上のプログラマブルデバイス128を有するシステムにファームウェア更新916をセキュアに送達して、プログラマブルデバイス128を新しいファームウェアで更新することが可能である。ファームウェア更新916は、プログラマブルデバイス128のファームウェアの更新に使用されるソフトウェアとデータのパッケージである。ファームウェア更新サービス912は、セキュリティソフトウェア及びハードウェアを有するシステムのうちの、プログラマブルデバイス128のセキュアな更新が確実に行われるようにファームウェア更新916及び関連セキュリティ情報をデプロイすることが可能な部分であってよい。
MSPシステム902は、様々な様式で動作可能である。一事例では、MSPシステム902は、セキュア要素ユースケース970に基づいて動作可能である。セキュア要素ユースケース970は、MSPシステム902を使用してプログラマブルデバイス128をセキュアにプログラムする一様式を記述することが可能であり、その場合、プログラマブルデバイス128は、既にファームウェアで構成されており、シリコンベンダ施設でプリインストールされたシリコンベンダデバイス証明書926を有する。
セキュア要素ユースケース970は、2つの主要ステップを含んでよい。ステップ1では、1つのプログラマブルデバイス128からシリコンベンダデバイス証明書926が抽出され、デバイスが認証される。ステップ2では、認証されたデバイスのシリコンベンダデバイス証明書926に基づいてOEMデバイス証明書946が生成される。その後、OEMデバイス証明書946がデバイスにプログラムされる。
このユースケースでは、HSMベースのセキュリティシステム、例えば、工場セキュリティシステム932が、セキュアプログラミングシステムの一部として、例えば、セキュリティ領域が組み込まれたセキュアマイクロコントローラユニットをプログラムするシステムとして組み込まれてよい。組み込まれたセキュリティ領域は、書き込みが一度だけ可能であって変更不可である保護されたメモリ領域であってよい。これにより、鍵、コード、又は証明書のようなセキュリティデータの変更不可の記憶が可能になる。
本システムは、プログラマブルデバイス128のステータスデータを管理する為に、OEM管理システム924、工場管理システム930、ジョブ生成及びジョブ実行システム、及びデバイスデータ追跡システム934を含んでよい。これらの様々なシステムは様々な様式で実装されてよい。例えば、OEM管理システム924、工場管理システム930、ジョブ生成及びジョブ実行システム、及びデバイスデータ追跡システム934は全て、ホストシステム936上でソフトウェアとして実行されてよい。別の例では、これらのシステムは、それぞれが専用ハードウェア上で実行されてよい。
このセキュリティモデルでは、工場施設942は、OEMユーザのプロキシとして動作可能であり、OEM管理システム924の機能性を実行することが可能である。これは実質的に、OEMユーザ968が工場施設942を暗黙的に信頼して、OEM鍵マテリアル904及びOEM証明書951を供給し、プログラマブルデバイス128の生産数948を設定することを意味する。このアクティビティは図1のプログラミングユニット110のホストシステム936上で行われる為、ジョブのセットアップ、OEM鍵マテリアル904の生成、及びセキュアプログラミングシステム100の構成は、工場施設942内の物理的にセキュアな場所で認定済みの要員によって行われる。
実施態様によっては、セキュア要素として構成されているプログラマブルデバイス128にOEMデバイス証明書946をプロビジョニングすることに重点が置かれてよい。しかしながら、当然のこととして、OEMシステムによって、OEM鍵マテリアル904をセキュアに流すこと、並びに生産数948をセキュアに更新することは、物理的セキュリティ手段及びセキュアデータチャネルによって保護される。
OEM開発施設940からのOEMデータは、OEM管理システム924から工場セキュリティシステム932までずっとセキュアであり、暗号化されており、これは、データが暗号化されて特定の工場セキュリティシステム932に関連付けられている為である。例えば、プログラミングプロジェクト944は、工場セキュリティシステム証明書933を使用して暗号化されてよく、これは、指定された工場セキュリティシステム932によってのみ復号可能である。
別の例では、OEMデバイス証明書署名鍵947を含むOEM鍵マテリアル904の転送は、そのマテリアルが暗号化されて伝送されることから、セキュアに行われる。OEMデバイス証明書署名鍵947は、秘密鍵コンポーネントを含んでよい。
一事例では、プログラマブルデバイス128の秘密鍵152がデバイスから離れない為、OEM管理システム924へのOEMデバイス証明書署名鍵947のインポートはセキュアに行われる。これにより、データが暗号化されることから、物理的セキュリティの必要性が低減されうる。
別の事例では、MSPシステム902は、マイクロコントローラユニットユースケース972に基づいて動作可能であり、その場合、MSPシステム902は、図1のプログラマブルデバイス128及び信頼できるデバイス130(例えば、セキュアマイクロコントローラユニット)のプロビジョニングに使用される。セキュアマイクロコントローラユニットは、セキュア処理設備及びセキュア記憶設備を含んでよい。
MCUユースケース972は、2つの主要ステップを含んでよい。第1のステップでは、OEMセキュリティブートローダ906は、プログラマブルデバイス128にプログラムされてよい。その後、OEMセキュリティブートローダ906が使用されてプログラマブルデバイス128がブートされて、プログラマブルデバイス128用のデバイス認証鍵ペア974及びデバイス復号鍵ペア976が生成されてよい。その後、その2つの鍵ペアの一部が使用されて、OEMデバイス証明書946の構築、プログラミング、及び署名が行われてよい。
第2のステップでは、MSPシステム902は、シリコンベンダデバイス証明書926を読み出し、プログラマブルデバイス128を認証してよい。ファームウェア復号鍵922は、シリコンベンダデバイス証明書926からのデバイス復号鍵により暗号化されてよい。暗号化されたファームウェア及び暗号化されたファームウェア復号鍵922は、プログラマブルデバイス128上でプログラムされてよい。
OEMセキュリティブートローダ906、OEMファームウェア開発908、OEMマスタリングツール910、OEM管理システム924、及びOEM鍵マテリアル904の生成は、全てがOEM開発施設940において実施されてよい。全体プロジェクト定義、並びに生産数948の決定は、OEMユーザ968によって管理される。
OEMソフトウェア実行環境は、OEM開発施設940にあるコンピュータにおいてホストされてよい。全てのOEM信頼の基点が、OEM開発施設940から工場施設942にセキュアに移される。工場管理システム930、工場セキュリティシステム932、及びデバイスデータ追跡システム934は、工場施設942においてホストシステム936上で実行可能である。
一実施形態では、第1のステップがプログラマブルデバイス128のセキュアプロビジョニングを必要とする為、これはセキュアな施設、例えば、OEM信頼できる工場、シリコンベンダ工場、OEM工場、又はプログラミングセンタで行われなければならない。次にステップ2は、セキュリティのレベルがより低い施設、例えば、信頼できない工場、請負製造者、サードパーティパートナ、又は同様のタイプの施設で行われてよい。
このセキュリティモデルでは、OEM信頼の基点及びプログラミングプロジェクト944は、OEM開発施設940において規定され、工場施設942に配布される。重要なのは、OEM製品のサプライチェーンのセキュリティを高める為に、OEMユーザが自身の信頼の基点を管理しなければならないことである。
一事例では、MCUユースケース972は物理的セキュリティを必要とし、これは、プログラマブルデバイス128の図1の鍵ペアが工場セキュリティシステム932で生成され、工場施設942において露出される可能性がありうる為である。プログラマブルデバイス128とプログラマ112との間の物理的接続は暗号化されていない為、工場施設942のシステムに物理的にアクセスできる何者かがのぞきまわって重要な情報を盗む可能性がある。従って、セキュリティ情報を保護する為には物理的セキュリティが実装されなければならない。
MCUユースケース972の別の例では、プログラマブルデバイス128はブランクであってよく、シリコンベンダデバイス証明書926をプリプログラムすることができない。この場合には、OEMデバイス証明書946が認証に使用されてよい。更に、ファームウェア復号鍵922は、OEMデバイス証明書946からの公開復号鍵、例えば、OEM公開鍵962を使用して暗号化されてよい。
次に図10を参照すると、セキュア要素ユースケース970の詳細な例が示されている。セキュア要素ユースケース970は、セキュア要素、例えば、図1のプログラマブルデバイス128をセキュアに構成するプロセスを示している。図9のMSPシステム902は、セキュア要素ユースケース970に従って図1の各プログラマブルデバイス128のデプロイメント及びプロビジョニングをセキュアに行うことが可能である。
セキュア要素ユースケース970では、セキュア要素は、様々な施設において、インスタンス化、転送、及び管理されてよい。施設は様々なタイプの場所があってよく、例えば、シリコン製造者1004、OEM場所1006、プログラミングセンタ1008、プログラマ場所1010、及びデバイス場所1012があってよい。各施設は、何らかのタイプのセキュアプログラミング関連アクションが行われうる場所を表す。更に、このユースケースは、図1のプログラマ112、及びデバイス場所1012においてエンベッドされるデータ及びアクションを含んでよい。
セキュア要素ユースケース970は、それぞれが異なるセキュアアクティビティを実施する、3つの異なるイベントシーケンスを含んでよい。第1のシーケンス1014では、図9のMSPシステム902は、図9のOEM管理システム924を使用して、図9の工場セキュリティシステム932を初期化してよい。これは、図9のOEM開発施設940、図9の工場施設942、又は別の同様の場所で行われてよい。
MSPシステム902は又、工場施設942、プログラミングセンタ1008、又は別の同様の場所で、図9の工場管理システム930を初期化してよい。工場管理システム930は、現在数978、図9のシリコンベンダ公開鍵954、図9のOEM秘密鍵952、及び図9のOEMデバイス証明書テンプレート950で更新されてよい。工場管理システム930は、その情報を、セキュアな処理の為に工場セキュリティシステム932に転送してよい。
第2のシーケンス1016では、セキュア要素は、シリコンベンダ(SV)工場で、図9のシリコンベンダデバイス証明書926によりプログラムされる。
第3のシーケンス1018では、MSPシステム902は、第2のシーケンス1016でプリインストールされたシリコンベンダデバイス証明書926を使用して、各デバイス(例えば、図1のプログラマブルデバイス128又は信頼できるデバイス130)を暗号認証してよい。その後、図9のOEMデバイス証明書946が構築され、プログラマブルデバイス128にプログラムされてよい。
OEMデバイス証明書946の構築は、シリコンベンダデバイス証明書926からのデバイス識別情報鍵ペアの公開鍵部分、例えば、シリコンベンダ公開鍵954を再使用することにより行われてよい。従って、シリコンベンダ公開鍵954は、OEMデバイス証明書946の計算に使用されてよく、従って、両証明書は同じ証明書を使用して証明される。或いは、シリコンベンダ鍵ペアとは別個のOEM識別情報を表す為に別の鍵ペアが使用されてよい。これは、工場セキュリティシステム932によって、又はセキュア要素自体において行われてよい。
第2のシーケンス1016では、ステップ1020はシリコン製造者1004において行われる。シリコン製造者1004は、ローセキュア要素を作成する会社であってよい。図9のシリコンベンダデバイス証明書926は、各セキュア要素(例えば、プログラマブルデバイス128又は信頼できるデバイス130)ごとに生成される。シリコンベンダデバイス証明書926は、各セキュア要素についての一意情報を含んでよく、例えば、図3のデバイス識別表示302、シリアル番号、製品タイプ、製造日付、又は同様のデバイス情報を含んでよい。
ステップ1022も、シリコン製造者1004において行われてよい。各シリコンベンダデバイス証明書926は、図9のシリコンベンダ識別子956を有するシリコン製造者の図9のシリコンベンダ秘密鍵958により署名される。シリコンベンダデバイス証明書926に署名することによって、証明書のデータが暗号化される。このデータは、シリコンベンダ公開鍵954でのみ復号可能である。
ステップ1024も、シリコン製造者1004において行われてよい。各プログラマブルデバイス128は、シリコンベンダ秘密鍵958により署名されたシリコンベンダデバイス証明書926でプログラムされる。シリコンベンダ秘密鍵958で署名されたシリコンベンダデバイス証明書926は、デバイスがそのシリコンベンダによって承認又は供給されていることを示す。シリコンベンダデバイス証明書926をシリコンベンダ秘密鍵954で正常に復号することにより、プログラマブルデバイス128が、これに署名したシリコンベンダからのものであることを認証することが可能である。
第2のシーケンス1016では、シリコンベンダ秘密鍵958により更なる署名が行われたシリコンベンダデバイス証明書926の一意且つ個別のインスタンスにより、各プログラマブルデバイス128に一意のタグ付けを行ってよい。これにより、シリコンベンダ公開鍵954を使用してシリコンベンダデバイス証明書926をデコードすることによって、シリコンベンダデバイス証明書926が、シリコンベンダ識別子956を有するシリコンベンダから供給されたことを確認することが可能になりうる。これにより、工場又は他のデバイスユーザがプログラマブルデバイス128の信憑性を確認することが可能になる。
第1のシーケンス1014は、シリコン製造者1004、OEM場所1006、及びプログラミングセンタ1008において実施される。第1のシーケンス1014では、プログラミングセンタ1008において、セキュアなプログラミングが行われるようにプログラミングコンポーネントを構成することが可能である。
ステップ1030では、シリコンベンダが、シリコンベンダ公開鍵954及びシリコンベンダ秘密鍵958を有するシリコンベンダ鍵ペア960を生成してよい。これは、シリコンベンダ秘密鍵958及びシリコンベンダ公開鍵954を有するシリコンベンダ鍵ペア1080であってよい。
ステップ1032では、シリコンベンダ公開鍵954がOEMユーザ1006に転送されてよい。シリコンベンダ公開鍵954は、暗号化されずに送られてよい。例えば、シリコンベンダ公開鍵954は、ネットワークリンクを介して送られてよい。
ステップ1034では、OEMユーザ1006が、図9のOEM証明書951を、プログラミングセンタ1008の、図9の工場管理システム930及び図9の工場セキュリティシステム932に登録してよい。OEM証明書951は、OEM秘密鍵962で暗号化又は署名された情報を復号及び認証する為に図9のOEM公開鍵962を含んでよい。プログラミングセンタ1008におけるOEM証明書の登録をセキュアに行うことにより、OEMユーザ1006に関するセキュリティ情報をプログラミングセンタ1008に提供することが可能である。この登録は、工場管理システム930及び工場セキュリティシステム932におけるOEM資格証明の導入及び識別の為に行われてよい。
ステップ1035では、工場管理システム930及び工場セキュリティシステム932が、セキュア交換プロセスにおいて工場セキュリティシステム暗号化鍵980をOEM管理システム924に送ってよい。工場セキュリティシステムデータ暗号化鍵980は、情報のセキュアな転送をサポートする為に、OEMユーザ1006から工場管理システム930及び工場セキュリティシステム932に送られる情報の暗号化に使用されてよい。工場セキュリティシステム932は、工場セキュリティシステムデータ暗号化鍵をOEM管理システム924に送ってよい。
ステップ1036では、OEMユーザ1006が、SVデバイス認証公開鍵、OEMデバイス証明書署名鍵、及びOEMデバイス証明書テンプレート950を有するパッケージを作成してよい。OEMデバイス証明書署名鍵は、OEM管理システム924において生成されてよく、或いは外部HSMなどの外部セキュリティシステムからインポートされてよい。このパッケージは、OEM管理システム924において、工場セキュリティシステムデータ暗号化鍵980を使用して暗号化されてから、工場管理システム930及び工場セキュリティシステム932に送られてよい。このパッケージは、工場セキュリティシステム932の工場セキュリティシステムデータ暗号化鍵980を使用して暗号化されている為、工場セキュリティシステム932の工場セキュリティシステムデータ認証鍵982でのみ復号可能である。OEMデバイス証明書テンプレート950は、図3のデバイス識別表示320を有するデバイスの公開鍵152を含むOEMデバイス証明書946用テンプレートであり、OEM秘密署名鍵により署名される。OEM公開鍵962は、OEMユーザ1006に関連付けられた暗号値である。OEM公開鍵962は、様々なフォーマットを有する。例えば、鍵は、X.509公開鍵証明書又は別の公開鍵フォーマットとしてフォーマットされてよい。X.509規格は、公開鍵の所有権を示す公開鍵証明書を規定している。OEM公開鍵962は、公開鍵の妥当性情報を提供することが可能である。OEM公開鍵962は、プログラミングセンタ1008におけるデバイス証明書に使用されてよい。
ステップ1038では、OEMユーザ1006が、シリコンベンダ公開鍵954、OEM秘密鍵952、及びOEMデバイス証明書テンプレート950を有するパッケージをプログラミングセンタ1008に送ってよい。そして、このパッケージの情報は、プログラマブルデバイス128に署名する際に使用されてよい。
第3のシーケンス1018は、プログラミングセンタ1008又は工場施設942において、プログラマ112及びプログラマブルデバイス128に対して実施される。第3のシーケンス1018では、セキュア要素の認証、OEM情報によるセキュア要素のプロビジョニング及び暗号署名、並びにプロビジョニングされたデバイスが承認されたことの確認を行うことが可能である。
ステップ1040では、プログラマ112が、プログラムされる各プログラマブルデバイス128のシリコンベンダデバイス証明書926を読み込んでよい。シリコンベンダデバイス証明書926は、プログラマブルデバイス128からプログラマ112まで暗号化されずに転送される。
ステップ1042では、シリコンベンダデバイス証明書926が、プログラマ112から工場管理システム930及び工場セキュリティシステム932に転送されてよい。工場管理システム930は、プログラミング作業を制御し、工場セキュリティシステム932はデバイス及びシステムのセキュリティを管理する。
ステップ1044では、シリコンベンダデバイス証明書926が、プログラミングセンタ1008の工場管理システム930において受け取られる。プログラマ112は、図9の工場施設942に配置される。
ステップ1046では、プログラマブルデバイス128が、シリコンベンダ公開鍵954により認証されてよい。このステップでは、プログラムされるデバイスが、シリコンベンダ識別子956を有するシリコンベンダから供給されることを確認する。シーケンス1でシリコンベンダ秘密鍵958で署名されたシリコンベンダデバイス証明書926がシリコンベンダ公開鍵954により復号された時点で、プログラマブルデバイス128が認証される。シリコンベンダデバイス証明書926の情報がシリコンベンダ公開鍵954によりアクセス可能であれば、デバイスは認証される。
ステップ1048では、OEMデバイス証明書946が、OEMデバイス証明書テンプレート950に基づいてフォーマットされる。そして、OEMデバイス証明書946は、OEM秘密鍵952により署名される。
ステップ1050では、OEMデバイス証明書946がプログラマ112に転送される。OEMデバイス証明書946は、OEM秘密鍵952で暗号化及び署名されている為、暗号化されずに転送されてよい。
ステップ1052では、プログラマ112がシリアルデータリスト964を作成してよい。シリアルデータリスト964は、プログラマブルデバイス128にプログラムされるデバイス固有データのリストである。これは、シリアル番号、デバイス識別表示、OEMデバイス証明書946、製造マーカ。コード、データ、マーカ、MACアドレス、デバイス固有鍵、又は他の情報を含んでよい。
ステップ1054では、シリアルデータリスト964に含まれるデバイス固有データが、プログラマ112によってプログラマブルデバイス128にプログラムされてよい。シリアルデータリスト964は、デバイス固有データが記憶されるべき場所を示すことが可能である。例えば、OEMデバイス証明書946は、セキュア記憶ユニットに記憶されてよい。
ステップ1056では、シリコンベンダデバイス証明書926及びOEMデバイス証明書946が、プログラマ112によってセキュア要素、例えば、プログラマブルデバイス128又は信頼できるデバイス130から再抽出され、取り出されてよい。シリコンベンダデバイス証明書926及びOEMデバイス証明書946のコピーが工場セキュリティシステム932内、又はシステム内の他の場所に既に存在する場合があるが、これらのデバイス証明書は、プログラマブルデバイス128の検査の為、且つ、潜在的な重複生産工程、不正な複製、又は他の不適正なアクティビティを検出する為に再抽出される。これらのデバイス証明書がエラーなくプログラムされたことを確認する為に、妥当性検査ステップが用いられてよい。エラーとしては、プログラミング障害、デバイス損傷、ビットエラー、又は同様のエラーがありうる。
ステップ1058では、シリコンベンダデバイス証明書926及びOEMデバイス証明書946が、検証及び更なる用途の為に工場セキュリティシステム932に送られる。取り出されたデバイス証明書は、適正なプログラマブルデバイス128がプログラムされたことを確認する為に、第2の認証ラウンドに使用されてよい。これは、プログラマブルデバイス128の不正な複製を防ぐ為、且つデバイスの偽造を防ぐ為に使用されてよい。
ステップ1060では、プログラマブルデバイス128が適切であることを確認する為に、シリコンベンダデバイス証明書926及びOEMデバイス証明書946が検査される。これは、シリコンベンダ公開鍵954を使用してシリコンベンダデバイス証明書926の妥当性を検査することと、OEM公開鍵962を使用してOEMデバイス証明書946の妥当性を検査することと、を含んでよい。デバイス証明書の妥当性検査は、デバイス証明書の公開鍵をシリコンベンダ証明書1078の公開鍵と比較して、それらが一致することを確認することを必要とする。更に、証明書は、証明書のフォーマットが正当であることを確認する為に、証明書妥当性検査ツール(図示せず)により処理されてよい。証明書の署名も、工場セキュリティシステム932により妥当性を検査される。
ステップ1062では、検証結果がプログラマ112に送り返されてよい。ステップ1064では、プログラマ112が完成デバイスを処理してよい。プログラマブルデバイス128の妥当性が確認されない場合、プログラマ112は、それらのデバイスを、妥当性ステータスが不良デバイスを示していると識別して、廃棄用不良デバイスレセプタクル(図示せず)に転送してよい。プログラマブルデバイス128が適正であると確認された場合には、プログラマブルデバイス128は、確認された状態値で更新され、確認済みコンポーネントとして渡されてよい。或いは、プログラマ112は、生産工程において各プログラマブルデバイス128のデバイス識別表示及び妥当性ステータスをログ記録した妥当性検査報告書を生成してよい。有効でないプログラマブルデバイス128は、後で除去又は破壊されてよい。
3.0.機能の概要
セキュアプログラミングシステム100は、セキュア要素、例えば、図1のプログラマブルデバイス128及び信頼できるデバイス130の構成及びプロビジョニングを様々な様式で行うことが可能である。セキュア要素に対して実施される操作のタイプに応じて、様々なレベルのセキュリティが実装されてよい。様々なエンドユーザの需要に対応する為に、同じ物理的システムに対して様々なユースケース及びプロセスフローが実装されてよい。
次に図11を参照すると、1つ以上の実施形態による、図1のプログラマブルデバイス128のプロビジョニングプロセスフローの例が示されている。上述の図1のシステム100のようなシステムを含む様々なシステムにおいて、プロビジョニングプロセスフロー1102の様々な要素が実施されてよい。一実施形態では、後述の機能ブロックに関して説明される各プロセスが、1つ以上のコンピュータプログラム、他のソフトウェア要素、及び/又は、汎用コンピュータ又は専用コンピュータのいずれかにおけるデジタルロジックを使用し、同時に、コンピュータのメモリとの対話、及びそのメモリの物理的状態の変換を必要とする、データの取り出し、変換、及び記憶の各操作を実施することにより、実装されてよい。
プロビジョニングプロセスフロー1102は、セキュアプログラミングシステム100から提供されるターゲットペイロード1114によりプログラマブルデバイスをプログラムすることを担う。プロビジョニングプロセスフロー1102は、セキュアプログラミングシステム100においてプロビジョニングジョブを開始することと、プログラマブルデバイス128を受け取ることと、暗号化されたペイロード1116を計算することと、プログラマブルデバイス128をプロビジョニングすることと、を担ってよい。プロビジョニングプロセスフロー1102は、図8のシステム識別表示814、及び図3のデバイス識別表示302をプログラマブルデバイス128にプログラムすることを示すことが可能であり、同時にそれらの間のセキュリティリンケージを示すことが可能である。
プロビジョニングプロセスフロー1102は、様々な構成を有してよい。例えば、プロビジョニングプロセスフロー1102は、プロビジョニングジョブを開始するモジュール1104と、デバイス情報を受け取るモジュール1106と、暗号化されたペイロードを計算するモジュール1108と、デバイスをプロビジョニングするモジュール1110と、を含んでよい。
プロビジョニングジョブを開始するモジュール1104は、プログラマブルデバイス128にプログラムするジョブ制御パッケージ1112及びターゲットペイロード1114を受け取ってよい。ジョブ制御パッケージ1112は、ターゲットペイロード1114によりプログラマブルデバイス128をプロビジョニングする為の命令及びパラメータを含む。
ターゲットペイロード1114は、暗号化されてプログラマブルデバイス128にプログラムされる情報である。ターゲットペイロード1114は、データ、コード、セキュリティ鍵、及び他の情報を含んでよい。例えば、ターゲットペイロード1114は、図1の信頼できるデバイス130に対して実行されるセキュアファームウェアコードであってよい。別の例では、ターゲットペイロード1114は、一緒に組み合わされた様々なデータ要素、例えば、一連の追加セキュリティ鍵及び1つ以上のソフトウェアモジュールを含んでよい。例えば、ジョブ制御パッケージ1112は、図9のプログラミングプロジェクト944の一部であってよい。
ジョブ制御パッケージ1112は、ターゲットペイロード1114によりプログラマブルデバイス128の構成及びプログラミングを行うのに必要な情報を含む。ジョブ制御パッケージ1112は、プログラミング命令、セキュリティ情報、プログラマ構成情報、デバイス構成情報、及び他の同様のジョブ情報を含んでよい。
一事例では、ジョブ制御パッケージ1112は、特定のプログラマブルデバイス128群をプロビジョニングする命令を収容してよい。ジョブ制御パッケージ1112は、プログラマブルデバイス128にプログラムされる前のターゲットペイロード1114の暗号化に使用される、図1のセキュリティ鍵106の1つ以上を含んでよい。セキュリティ鍵106は、ターゲットペイロード1114の暗号化に使用される信頼の基点を表すことが可能である。
ジョブ制御パッケージ1112は、セキュアプログラミングシステム100を識別するセキュリティ鍵106、図1のプログラミングユニット110、図1のプログラマ112、ターゲットペイロード1114、及び他のセキュリティパラメータを含んでよい。例えば、図2のプログラマ識別表示216は、プログラマ112に関連付けられた図1の公開鍵154を使用して暗号化されてよい。図2のプログラマ識別表示216は、プログラマ112に関連付けられたセキュリティ鍵106の図1の秘密鍵152でのみ復号可能である。他のシステム要素の識別子も、その要素に関連付けられた公開鍵154及び秘密鍵152により、同様に暗号化及び復号されることが可能である。
ジョブ制御パッケージ1112は、生産工程を実行する為の、プログラマ112のプログラマ識別表示216を含んでよい。ジョブ制御パッケージ1112のプログラマ識別表示216が、使用されるプログラマ112の識別表示と一致しない場合には、生産ジョブは実行されない。これにより、指定されたプログラマ112でのみ実行されるようにジョブを制限することが可能になる。同様に、ジョブ制御パッケージ1112は、ジョブ制御パッケージ1112が既知の場所の既知の設備でのみ実行可能であるようにする為に、施設識別表示、工場識別表示、又は他の場所及び設備の識別子を含んでよい。これにより、セキュアデバイスの不正な生産を防ぐことが可能である。
プロビジョニングジョブを開始するモジュール1104が完了した後、制御フローが、図3のデバイス識別表示を受け取るモジュール316に渡されてよい。デバイス情報を受け取るモジュール1106は、プログラムされるプログラマブルデバイス128に関する情報を受け取ることが可能である。
セキュアプログラミングシステム100は、図7の製造実行システム702と結合されてよい。MES702は、プログラムされるプログラマブルデバイス128のシリアル番号をセキュアプログラミングシステム100に送るように構成されてよい。
例えば、MES702は、光技術又は無線周波数技術によりプログラマブルデバイス128のシリアル番号を読み取ることが可能である。別の例では、MES702は、プログラムされるプログラマブルデバイス128に関連付けられたシリアル番号又は他のパラメータのリストでプログラムされてよい。更に別の例では、セキュアプログラミングシステム100は、プログラマブルデバイス128のシリアル番号を直接読み取ることが可能である。デバイス情報を受け取るモジュール1106が完了した後、制御フローが、暗号化されたペイロードを計算するモジュール1108に渡されてよい。
暗号化されたペイロードを計算するモジュール1108は、ターゲットペイロード1114を暗号化して、暗号化されたペイロード1116を形成してよい。暗号化されたペイロード1116は、各プログラマブルデバイス128について図3のデバイス識別表示302の1つ以上の部分に関連付けられた公開鍵154を使用して形成されてよい。
暗号化されたペイロードを計算するモジュール1108は、様々な様式でターゲットペイロード1114を暗号化してよい。例えば、ターゲットペイロード1114は、図5のシリアル番号マーカ512に関連付けられた公開鍵154、図5のファームウェアマーカ506、図5の製造マーカ510、図5の製品マーカ508、図5の動作マーカ514、図5のOEMマーカ516、又は同様の、1つのプログラマブルデバイス128のデバイス識別表示302内の値を使用して暗号化されてよい。暗号化されたペイロード1116は、デバイス識別表示302から選択されたパラメータに関連付けられた秘密鍵152を使用して復号可能である。
別の例では、暗号化されたペイロードを計算するモジュール1108は、セキュアプログラミングシステム100からの情報を使用して、暗号化されたペイロード1116を計算することが可能である。ターゲットペイロードは、セキュアプログラミングシステム100に関連付けられた公開鍵154、プログラミングユニット110、プログラマ112、図2のデバイスアダプタ208、又は別の同様のパラメータを使用して暗号化されてよい。
暗号化されたペイロードを計算するモジュール1108は、ターゲットペイロード1114の様々な部分を使用して、暗号化されたペイロード1116を形成してよい。例えば、暗号化されたペイロード1116は、ターゲットペイロード1114全体、又はターゲットペイロード1114のサブセット、又はターゲットペイロード1114と他の情報の組み合わせを暗号化することによって形成されてよい。
暗号化されたペイロードを計算するモジュール1108は、セキュリティモジュールを使用してターゲットペイロード1114を処理することが可能である。暗号化されたペイロードを計算するモジュール1108は、識別表示モジュール316、図3の認証モジュール320、図3の暗号モジュール318、又は図3のコード署名モジュール322の任意の組み合わせを使用して、暗号化されたペイロード1116の形成に必要なセキュリティ動作を行うことが可能である。
識別表示モジュール316は、各プログラマブルデバイス128の識別表示を検査することに使用されてよい。認証モジュール320は、各プログラマブルデバイス128に関連付けられたパラメータを認証することに使用されてよい。暗号モジュール318は、ターゲットペイロード1114及び暗号化されたペイロード1116の暗号化及び復号に使用されてよい。コード署名モジュール322は、ターゲットペイロード1114内で図3のコード要素314の妥当性を検査することに使用されてよい。暗号化されたペイロードを計算するモジュール1108が完了した後、制御フローが、デバイスをプロビジョニングするモジュール1110に渡されてよい。
デバイスをプロビジョニングするモジュール1110は、暗号化されたペイロード1116により、各プログラマブルデバイス128をプログラムしてよい。デバイスをプロビジョニングするモジュール1110は、暗号化されたペイロード1116を、プログラマ112と結合されたプログラマブルデバイス128に転送する為に、プログラマ112のハードウェアとインタフェースしてよい。
例えば、デバイスをプロビジョニングするモジュール1110は、各プログラマブルデバイス128(例えば、図1のデータデバイス132)を、暗号化されたペイロード1116のファイルでプログラムしてよい。例えば、デバイスをプロビジョニングするモジュール1110は、デバイスタイプが異なる各プログラマブルデバイス128を構成する為の特定情報を含んでよい。データデバイス132は、デバイスアダプタ208によりプログラマ112と結合可能である。
別の例では、デバイスをプロビジョニングするモジュール1110は、各プログラマブルデバイス128、例えば、信頼できるデバイス130をプロビジョニングしてよい。信頼できるデバイス130は、スマートフォン、回路基板、セキュリティデバイス、又は同様のデバイスなどであってよい。信頼できるデバイス130は、プログラマ112と、デバイスアダプタ208内で直接結合されてよく、或いは有線接続又は無線接続のようなデータリンクを介して結合されてよく、或いはこれらの組み合わせにより結合されてよい。
一事例では、セキュアプログラミングシステム100は、各プログラマブルデバイス128の識別情報を、そのシステムの構築に使用されたコンポーネントに基づいて確立してよい。スマートフォンや回路基板のような、信頼できるデバイス130のそれぞれについて、デバイス識別表示302は、信頼できるデバイス130内の各コンポーネントのシリアル番号又は他の識別子を含んでよい。プログラマブルデバイス128の識別情報は、ハードウェアコンポーネント、ソフトウェアコンポーネント、及び/又はファームウェアコンポーネントにわたってよい。
デバイス識別表示302はOEMマーカ516を含んでよい為、識別表示は、全ての製造者及びベンダにまたがって一意でありうる。更に、デバイス識別表示302は、製造時にセキュアプログラミングシステム100によって暗号化されてよい為、プログラマブルデバイス128の識別情報は、デバイス識別表示302及びセキュリティ鍵106を使用してデバイスの外部及びデバイス上にセキュアに記憶されてよい。
セキュアプログラミングシステム100の一利点として、図8のシステム識別表示814はデバイスセキュリティのレベルを高めることが可能である。システム識別表示814の暗号化バージョンでプログラマブルデバイス128をエンコードすることにより、プログラマブルデバイス128は、各プログラマブルデバイス128のライフサイクルの残りに関する信頼レベル及びトレーサビリティが高くなる。
セキュアプログラミングシステム100の更に別の利点として、システム識別表示814の使用により、シリコンデバイスレベルでの信頼の基点が得られる為に、製造サプライチェーンがよりセキュアになる。システム識別表示814は、プログラマブルデバイス128にプログラムされ、一意の製造データに基づき、これを含む。システム識別表示814により、セキュリティ侵害されるファームウェアの検出が可能になる。これは、セキュリティ侵害されるファームウェアには適正な暗号化形式で利用可能なシステム識別表示814がない為である。
このブロック図は、システム生成の多くの可能なフローの1つを示しているに過ぎない。別のフローでは、より少ない要素、より多くの要素、又は別の要素が様々な構成で含まれてよい。例えば、実施形態によっては、セキュリティモジュールが省略されてよく、他のいずれかの要素がその省略された要素の代用として頼りにされてよい。別の例として、一実施形態では、フローが更にハッシュ生成モジュールを含んでよい。
R次に図12を参照すると、1つ以上の実施形態による、図1のプログラマブルデバイス128のセキュア製造プロセスフローの例1202が示されている。上述の図1のシステム100のようなシステムを含む様々なシステムにおいて、プロビジョニングプロセスフロー1202の様々な要素が実施されてよい。一実施形態では、後述の機能ブロックに関して説明される各プロセスが、1つ以上のコンピュータプログラム、他のソフトウェア要素、及び/又は、汎用コンピュータ又は専用コンピュータのいずれかにおけるデジタルロジックを使用し、同時に、コンピュータのメモリとの対話、及びそのメモリの物理的状態の変換を必要とする、データの取り出し、変換、及び記憶の各操作を実施することにより、実装されてよい。
プロビジョニングプロセスフロー1202では、図1のプログラマ122においてプログラマブルデバイス128を認証し、OEMデバイス証明書946を生成し、ターゲットペイロード1220をプログラマブルデバイス128にプログラムし、シリコンベンダデバイス証明書926及びOEMデバイス証明書946を検証する。
プロビジョニングプロセスフロー1202は、様々な構成を有してよい。例えば、プロビジョニングプロセスフロー1202は、デバイス証明書を抽出するモジュール1204と、デバイスを認証するモジュール1206と、OEMデバイス証明書を生成するモジュール1208と、デバイスをプログラムするモジュール1210と、妥当性ステータスを生成するモジュール1212と、デバイスをソートするモジュール1214と、を含んでよい。プロビジョニングプロセスフロー1202の制御フローは、モジュールからモジュールへと順番に渡されてよい。
デバイス証明書を抽出するモジュール1204は、プログラマブルデバイス128からシリコンベンダデバイス証明書926を抽出してよい。シリコンベンダデバイス証明書926は、シリコンベンダ秘密鍵958で暗号化されて、図1のプログラマ122にマウントされたプログラマブルデバイス128の図3のセキュア記憶ユニット326に記憶されてよい。プログラマ122は、シリコンベンダによってプログラマブルデバイス128にプリプログラムされていたシリコンベンダデバイス証明書926を、セキュア記憶ユニット326にアクセスして抽出してよい。
デバイスを認証するモジュール1206は、シリコンベンダデバイス証明書926を認証することによって、プログラマ122内のプログラマブルデバイス128がシリコンベンダからの真正デバイスであることを実証することが可能である。プログラマブルデバイス128を認証する為に、シリコンベンダ公開鍵958で既に暗号化されているシリコンベンダデバイス証明書926を、シリコンベンダ公開鍵954で復号することが可能である。復号が成功すれば、プログラマブルデバイス128は有効であり、シリコンベンダからのものである。一方、シリコンベンダデバイス証明書926をシリコンベンダ公開鍵954で正常に復号することができない場合、デバイスは真正ではない。
OEMデバイス証明書を生成するモジュール1208は、図9のOEMデバイス証明書テンプレート950を使用してOEMデバイス証明書946を生成してよい。OEMデバイス証明書950は、シリコンベンダデバイス証明書926から取り出された、プログラマブルデバイス128に関する情報を含んでよい。OEMデバイス証明書950は、生成された後にOEM秘密鍵952で署名されてよい。
デバイスをプログラムするモジュール1210は、OEMデバイス証明書950及びターゲットペイロード1220をプログラマ122からプログラマブルデバイス128に転送してよい。OEMデバイス証明書950は、プログラマブルデバイス128の図3のセキュア記憶ユニット326の1つに記憶されてよい。ターゲットペイロード1220は、プログラマブルデバイス128のセキュア部分又は非セキュア部分にプログラムされてよい。ターゲットペイロード1220は、ファームウェアイメージ914、図9のファームウェア更新916、図3のセキュリティアルゴリズム304、又は他の、プログラマブルデバイス128において復号されるコード又はデータを含んでよい。
妥当性ステータスを生成するモジュール1212は、ターゲットペイロード1220がプログラムされた後に、プログラマブルデバイス128からシリコンベンダデータ証明書926及びOEMデバイス証明書946を取り出してよい。シリコンベンダデータ証明書926は、シリコンベンダ公開鍵954と対照して認証されてよい。OEMデバイス証明書946は、OEM公開鍵962と対照して認証されてよい。これらのデバイス証明書が両方とも認証された場合、プログラマブルデバイス128は有効である。
デバイスをソートするモジュール1214は、それらのデバイス証明書が認証されたことに基づいて、プログラマブルデバイス128の妥当性ステータス1222を生成してよい。これらのデバイス証明書が両方とも有効であれば、妥当性ステータス1222は有効として設定される。これらのデバイス証明書のいずれか又は両方が無効であれば、妥当性ステータス1222は無効として設定される。
これらのデバイス証明書の一方又は両方が無効であることが妥当性ステータス1222によって示された場合、現在プログラムされているプログラマブルデバイス128は無効であり、使用不可である。プログラマ122は、無効なプログラマブルデバイス128を廃棄用出力レセプタクルに転送してよい。
デバイスをソートするモジュール1214は又、妥当性検査に不合格であったプログラマブルデバイス128のシリアル番号又はデバイス識別表示をリストした妥当性検査報告書を生成してよい。不正デバイスの意図的な使用を報告することにより、潜在的な不正行為を識別してセキュリティを高めることが可能である。
プログラマブルデバイス128がプログラムされた後にシリコンベンダデータ証明書926及びOEMデバイス証明書946の完全性を検証することは、図1のプログラマ112に最初にロードされたデバイスと同じデバイスが図11のターゲットペイロード1114を受け取ったことを示すことによって、セキュリティのレベルを高める。プログラマブルデバイス128がシリコンベンダによって承認されていることをチェックすることと、プログラマブルデバイス128がシリコンベンダ及び図9のOEMユーザ968によって承認されていることを完了時にダブルチェックすることは、不正な製造の防止に役立ち、偽造品の可能性を低減する。
4.0.例示的実施形態
以下の各節では、幾つかの実施形態の、限定ではない例を示す。
一実施形態によれば、セキュアプログラミングシステムの動作方法が、プログラマにマウントされたプログラマブルデバイスからシリコンベンダデバイス証明書を抽出するステップと、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証するステップと、シリコンベンダデバイス証明書に基づいてプログラマブルデバイスのOEMデバイス証明書を生成するステップであって、OEMデバイス証明書はOEM秘密鍵で署名されている、OEMデバイス証明書を生成するステップと、OEMデバイス証明書及びターゲットペイロードを、プログラマ内のプログラマブルデバイスに転送するステップと、OEMデバイス証明書がプログラマブルデバイスに転送された後に、OEMデバイス証明書及びシリコンベンダデバイス証明書をプログラマブルデバイスから抽出するステップと、OEM公開鍵を使用してOEMデバイス証明書を認証し、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証することにより、妥当性ステータスを生成するステップであって、OEMデバイス証明書又はシリコンベンダデバイス証明書のいずれかが正常に認証されない場合には妥当性ステータスが無効として設定される、妥当性ステータスを生成するステップと、妥当性ステータスに基づいて、プログラマブルデバイスをプログラマの出力レセプタクルにソートするステップと、を含む。
一実施形態では、この方法は更に、プログラマブルデバイスのセキュア記憶ユニットにOEMデバイス証明書を書き込むステップを含む。
一実施形態では、この方法は更に、プログラマブルデバイスのセキュア記憶ユニットからシリコンベンダデバイス証明書を抽出するステップを含む。
一実施形態では、この方法は更に、プログラマブルデバイスをプログラマにある不良デバイスレセプタクルに入れるステップを含む。
一実施形態では、この方法は更に、プログラマのプログラマ識別表示を有するジョブ制御パッケージを生成するステップを含む。
一実施形態によれば、セキュアプログラミングシステムの動作方法が、ターゲットペイロードを有するジョブ制御パッケージを受け取るステップと、プログラマにマウントされたプログラマブルデバイスからシリコンベンダデバイス証明書を抽出するステップであって、シリコンベンダデバイス証明書はシリコンベンダ秘密鍵で暗号化されている、シリコンベンダデバイス証明書を抽出するステップと、工場セキュリティシステム内で、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証するステップと、シリコンベンダデバイス証明書に基づいてプログラマブルデバイスのOEMデバイス証明書を生成するステップであって、OEMデバイス証明書はOEM秘密鍵で署名されている、OEMデバイス証明書を生成するステップと、OEMデバイス証明書及びターゲットペイロードを、プログラマ内のプログラマブルデバイスに転送するステップであって、OEMデバイス証明書はプログラマブルデバイスのセキュア記憶ユニットに記憶されている、転送するステップと、OEMデバイス証明書がプログラマブルデバイスに転送された後に、OEMデバイス証明書及びシリコンベンダデバイス証明書をプログラマブルデバイスから抽出するステップと、OEM公開鍵を使用してOEMデバイス証明書を認証し、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証することにより、妥当性ステータスを生成するステップであって、OEMデバイス証明書又はシリコンベンダデバイス証明書のいずれかが正常に認証されない場合には妥当性ステータスが無効として設定される、妥当性ステータスを生成するステップと、妥当性ステータスに基づいて、プログラマブルデバイスを出力レセプタクルにソートするステップと、を含む。
一実施形態では、この方法は更に、承認された数をOEMデバイス証明書にエンコードするステップを含む。
一実施形態では、この方法は更に、工場セキュリティシステムにおいてOEMデバイス証明書及びシリコンベンダデバイス証明書を認証するステップを含む。
一実施形態では、この方法は更に、シリコンベンダデバイス証明書にあるシリコンベンダ識別子を、プログラミングユニットのセキュリティコントローラに記憶されているベンダ識別子と照合するステップを含む。
一実施形態では、この方法は更に、妥当性ステータスにリンクされたシリコンベンダデバイス証明書のデバイス識別子を有する有効デバイスリストを生成するステップを含む。
一実施形態によれば、セキュアプログラミングシステムが、プログラマであって、プログラマブルデバイスからシリコンベンダデバイス証明書を抽出し、OEMデバイス証明書及びターゲットペイロードを、プログラマ内のプログラマブルデバイスに転送し、OEMデバイス証明書がプログラマブルデバイスに転送された後に、OEMデバイス証明書及びシリコンベンダデバイス証明書をプログラマブルデバイスから抽出し、妥当性ステータスに基づいて、プログラマブルデバイスをプログラマの出力レセプタクルにソートするプログラマと、プログラマと結合された工場セキュリティシステムであって、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証し、シリコンベンダデバイス証明書に基づいて、OEM秘密鍵で署名されている、プログラマブルデバイスのOEMデバイス証明書を生成し、OEM公開鍵を使用してOEMデバイス証明書を認証し、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証することにより、妥当性ステータスを生成し、OEMデバイス証明書又はシリコンベンダデバイス証明書のいずれかが正常に認証されない場合には妥当性ステータスを無効として設定する工場セキュリティシステムと、を含む。
一実施形態では、このシステムは更に、OEMデバイス証明書がプログラマブルデバイスのセキュア記憶ユニットに記憶されている。
一実施形態では、このシステムは更に、シリコンベンダデバイス証明書がプログラマブルデバイスのセキュア記憶ユニットから抽出される。
一実施形態では、このシステムは更に、プログラマがプログラマブルデバイスを不良デバイスレセプタクルに入れる。
一実施形態では、このシステムは更に、ジョブ制御パッケージがプログラマのプログラマ識別表示を有する。
一実施形態では、このシステムは更に、プログラマブルデバイスが、シリコンベンダ秘密鍵で暗号化されたシリコンベンダデバイス証明書を含み、OEMデバイス証明書及びシリコンベンダデバイス証明書は両方ともセキュア記憶ユニットに記憶されており、プログラマは、ターゲットペイロードを有するジョブ制御パッケージを含み、工場セキュリティシステムは、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証する。
一実施形態では、このシステムは更に、OEMデバイス証明書が、プログラマブルデバイスの承認された数を有する。
一実施形態では、このシステムは更に、OEMデバイス証明書及びシリコンベンダデバイス証明書が両方とも、工場セキュリティシステムのセキュリティコントローラによって妥当性を検査される。
一実施形態では、このシステムは更に、シリコンベンダデバイス証明書にあるシリコンベンダ識別子が、プログラミングユニットのセキュリティコントローラにプリインストールされているシリコンベンダ識別子と一致する。
一実施形態では、このシステムは更に、プログラマブルデバイスのシリコンベンダデバイス証明書のデバイス識別子を有する有効デバイスリストを含む。
これら及び他の実施形態の別の例が本開示全体を通して示される。
5.0.実装の機構−ハードウェアの概要
一実施形態によれば、本明細書に記載の技術は、1つ以上の専用コンピューティング装置によって実装される。専用コンピューティング装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルド装置、スマートフォン、メディア装置、ゲーミングコンソール、ネットワーキング装置、又は他の任意の、本技術を実装するハードワイヤードロジック及び/又はプログラムロジックを組み込んだ装置であってよい。専用コンピューティング装置は、本技術を実施するようにハードワイヤリングされてよく、或いは、本技術を実施するように永続的にプログラムされたデジタル電子デバイス(例えば、1つ以上の特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA))を含んでよく、或いは、ファームウェア、メモリ、他の記憶装置、又はこれらの組み合わせにあるプログラム命令に従って本技術を実施するようにプログラムされた1つ以上の汎用ハードウェアプロセッサを含んでよい。そのような専用コンピューティング装置は、本技術を達成する為に、カスタムハードワイヤードロジック、ASIC、又はFPGAとカスタムプログラミングとを組み合わせてもよい。
次に図13を参照すると、一実施形態による、上述の技術を実装することに利用されるコンピュータシステム1300を示すブロック図が示されている。コンピュータシステム1300は、例えば、デスクトップコンピューティング装置、ラップトップコンピューティング装置、タブレット、スマートフォン、サーバアプライアンス、コンピューティングメインフレーム、マルチメディア装置、ハンドヘルド装置、ネットワーキング装置、又は他の任意の適切な装置であってよい。
コンピュータシステム1300は、情報を伝達する為の1つ以上のバス1302又は他の通信機構と、情報を処理する為にバス1302と結合された1つ以上のハードウェアプロセッサ1304とを含む。ハードウェアプロセッサ1304は、例えば、汎用マイクロプロセッサであってよい。バス1302は、様々な内部コンポーネント及び/又は外部コンポーネントを含んでよく、それらは、内部のプロセッサバス又はメモリバス、Serial ATAバス、PCI Expressバス、ユニバーサルシリアルバス、ハイパートランスポートバス、インフィニバンドバス、及び/又は他の任意の、適切な有線又は無線の通信チャネルであってよく、これらに限定されない。
コンピュータシステム1300は又、プロセッサ1304によって実行される情報及び命令を記憶する為に、バス1302と結合された主メモリ1306、例えば、ランダムアクセスメモリ(RAM)又は他の動的又は揮発性の記憶装置を含む。主メモリ1306は又、プロセッサ1304で実行される命令の実行中に一時変数又は他の中間情報を記憶する為に使用されてよい。そのような命令は、プロセッサ1304からアクセス可能な非一時的記憶媒体に記憶された場合に、コンピュータシステム1300を、それらの命令で指定された動作を実施するようにカスタマイズされた専用マシンにする。
コンピュータシステム1300は更に、プロセッサ1304用の静的情報及び命令を記憶する為に、1つ以上の読み出し専用メモリ(ROM)1308、又は他の、バス1302と結合された静的記憶装置を含んでよい。情報及び命令を記憶する為に、1つ以上の記憶装置1310、例えば、ソリッドステートドライブ(SSD)、磁気ディスク、光ディスク、又は他の適切な不揮発性記憶装置が設けられ、バス1302と結合されている。
コンピュータシステム1300は、情報をコンピュータユーザに提示する為に、バス1302を介して1つ以上のディスプレイ1312と結合されてよい。例えば、コンピュータシステム1300は、ハイデフィニションマルチメディアインタフェース(HDMI)ケーブル又は他の適切なケーブリングを介して液晶ディスプレイ(LCD)モニタと接続されてよく、且つ/又は、ピアツーピアWi−Fi Direct接続のような無線接続を介して発光ダイオード(LED)テレビ受像機と接続されてよい。適切なタイプのディスプレイ1312の別の例として、プラズマディスプレイ装置、プロジェクタ、ブラウン管(CRT)モニタ、電子ペーパ、仮想現実ヘッドセット、点字端末、及び/又は他の任意の適切な、情報をコンピュータユーザに出力する装置があってよく、これらに限定されない。一実施形態では、任意の適切なタイプの出力装置、例えば、オーディオスピーカやプリンタなどが、ディスプレイ1312の代わりに利用されてよい。
一実施形態では、コンピュータシステム1300内の1つ以上のグラフィックス処理ユニット(GPU)により、ディスプレイ1312への出力を加速することが可能である。GPUは、例えば、グラフィックスデータ、3Dデータ、及び/又はマルチメディアの表示に関連する演算動作を実施することに高度に最適化された、高度に並列化されたマルチコア浮動小数点処理ユニットであってよい。GPUは、すぐにディスプレイ1312に出力される画像及び/又はビデオのデータの演算に加えて、超高性能画面外画像処理の為に、画面外の画像又は他のビデオデータをレンダリングして、そのデータをプログラムに読み戻すことにも使用されてよい。他の様々な演算タスクの負担が、プロセッサ1304からGPUに移されてよい。
情報及びコマンドの選択結果をプロセッサ1304に伝達する為に、1つ以上の入力装置1314がバス1302と結合されてよい。入力装置1314の一例として、英数字キー及び他のキーを含むキーボードがある。別のタイプのユーザ入力装置1314として、方向情報及びコマンドの選択結果をプロセッサ1304に伝達する為、並びにディスプレイ1312上のカーソルの動きを制御する為のカーソル制御装置1316(例えば、マウス、トラックボール、又はカーソル方向キー)がある。この入力装置は、典型的には、2つの軸、即ち、第1の軸(例えば、x)及び第2の軸(例えば、y)での自由度2を有しており、これによって平面内の位置を指定することが可能になっている。更に別の適切な入力装置1314の例として、ディスプレイ1312に貼り付けられたタッチスクリーンパネル、カメラ、マイクロホン、加速度計、動き検出器、及び/又は他のセンサがある。一実施形態では、ネットワークベースの入力装置1314が利用されてよい。そのような実施形態では、ユーザ入力及び/又は他の情報又はコマンドは、ローカルエリアネットワーク(LAN)又は他の適切な共用ネットワーク上のルータ及び/又はスイッチを介して、或いは、コンピュータシステム1300上の入力装置1314からネットワークリンク1320へのピアツーピアネットワークを介して中継されてよい。
コンピュータシステム1300は、本明細書に記載の技術を実装する為に、カスタマイズされたハードワイヤードロジック、1つ以上のASIC又はFPGA、ファームウェア、及び/又はプログラムロジックを使用してよく、これらは、コンピュータシステムと組み合わされて、コンピュータシステム1300が専用マシンになるようにしたり、そのようにコンピュータシステム1300をプログラムしたりする。一実施形態によれば、本明細書に記載の技術は、主メモリ1306に格納されている1つ以上の命令の1つ以上のシーケンスをプロセッサ1304が実行した時点でコンピュータシステム1300によって実施される。そのような命令は、記憶装置1310などの別の記憶媒体から主メモリ1306に読み込まれてよい。主メモリ1306に格納された命令のシーケンスが実行されると、プロセッサ1304は本明細書に記載の処理ステップを実施する。代替実施形態では、ソフトウェア命令の代わりに、又はソフトウェア命令との組み合わせでハードワイヤード回路が使用されてよい。
本明細書では「記憶媒体」という用語は、マシンを特定の様式で動作させるデータ及び/又は命令を記憶する任意の非一時的媒体を意味する。そのような記憶媒体は、不揮発性媒体及び/又は揮発性媒体を含んでよい。不揮発性媒体としては、例えば、光ディスク又は磁気ディスク、例えば、記憶装置1310がある。揮発性媒体としては、動的メモリ、例えば、主メモリ1306がある。記憶媒体の一般的な形態としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、又は他の任意の磁気データ記憶媒体、CD−ROM、他の任意の光データ記憶媒体、せん孔パターンを有する任意の物理的媒体、RAM、PROM、及びEPROM、FLASH−EPROM、NVRAM、他の任意のメモリチップ又はカートリッジがある。
記憶媒体は伝送媒体とは別個のものであるが、伝送媒体との組み合わせで使用されてよい。伝送媒体は、記憶媒体間の情報転送に関係する。伝送媒体としては、例えば、同軸ケーブル、銅線、光ファイバなどがあり、これにはバス1302を構成するワイヤが含まれる。伝送媒体は、音波又は光波の形態であってもよく、例えば、電波通信や赤外線データ通信の際に生成される音波又は光波の形態であってもよい。
プロセッサ1304が実行する1つ以上の命令の1つ以上のシーケンスの搬送には、様々な形態の媒体が関与してよい。例えば、これらの命令は、最初にリモートコンピュータの磁気ディスク又はソリッドステートドライブに保持されてよい。リモートコンピュータは、それらの命令をその動的メモリにロードし、モデムを使用して、それらの命令を変調信号としてネットワーク(例えば、ケーブルネットワークやセルラネットワーク)に送信してよい。コンピュータシステム1300の固有のモデムが、ネットワーク上のデータを受信し、信号を復調して、伝送された命令をデコードしてよい。そして、しかるべき回路がそのデータをバス1302上に置いてよい。バス1302は、データを主メモリ1306に搬送し、プロセッサ1304が主メモリ1306から命令を取り出して実行する。主メモリ1306が受け取った命令は、任意選択で、プロセッサ1304による実行の前又は後に記憶装置1310に記憶されてよい。
コンピュータシステム1300は更に、一実施形態では、バス1302と結合された1つ以上の通信インタフェース1318を含んでよい。通信インタフェース1318は、ローカルネットワーク1322に接続されたネットワークリンク1320への(典型的には二方向の)データ通信結合を提供する。例えば、通信インタフェース1318は、何らかの統合ディジタル通信サービス網(ISDN)カード、ケーブルモデム、衛星モデム、又は、対応するタイプの電話回線にデータ通信接続を提供するモデムであってよい。別の例として、1つ以上の通信インタフェース1318は、データ通信接続を互換LANに提供するローカルエリアネットワーク(LAN)カードを含んでよい。更に別の例として、1つ以上の通信インタフェース1318は、無線ネットワークインタフェースコントローラであってよく、例えば、802.11ベースのコントローラ、Bluetoothコントローラ、ロングタームエボリューション(LTE)モデム、及び/又は他のタイプの無線インタフェースであってよい。任意のそのような実装では、通信インタフェース1318は、様々なタイプの情報を表すデジタルデータストリームを搬送する電気信号、電磁信号、又は光信号の送受信を行う。
ネットワークリンク1320は、典型的には、1つ以上のネットワークを介する、他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク1320は、ローカルネットワーク1322を介する、ホストコンピュータ1324への接続、又はサービスプロバイダ1326が運用するデータ設備への接続を提供してよい。そしてサービスプロバイダ1326(例えば、インターネットサービスプロバイダ(ISP)であってよい)は、ワイドエリアネットワーク、例えば、現在では一般的に「インターネット」と呼ばれるワールドワイドパケットデータ通信ネットワーク1328を通るデータ通信サービスを提供する。ローカルネットワーク1322及びインターネット1328は両方とも、デジタルデータストリームを搬送する電気信号、電磁信号、又は光信号を使用する。デジタルデータをコンピュータシステム1300に搬送したり、コンピュータシステム1300から搬送したりする、様々なネットワークを通る信号、並びにネットワークリンク1320上にあって通信インタフェース1318を通る信号は、伝送媒体の例示的形態である。
一実施形態では、コンピュータシステム1300は、1つ以上のネットワーク、ネットワークリンク1320、及び通信インタフェース1318を介して、プログラムコード及び/又は他のタイプの命令を含めて、メッセージを送信し、データを受信してよい。インターネットの例では、サーバ1330が、要求されたアプリケーションプログラム用コードを、インターネット1328、ISP1326、ローカルネットワーク1322、及び通信インタフェース1318を介して送信してよい。受信されたコードは、受信された時点でハードウェアプロセッサ1304によって実行されてよく、且つ/又は、後で実行される為に、記憶装置1310、又は他の不揮発性記憶装置に記憶されてよい。別の例として、ネットワークリンク1320を介して受け取られた情報は、コンピュータシステム1300のソフトウェアコンポーネント、例えば、ウェブブラウザ、アプリケーション、又はサーバによって解釈及び/又は処理されてよく、このコンポーネントは、その情報に基づく命令をハードウェアプロセッサ1304に出す。これは、場合によっては、オペレーティングシステム、及び/又はソフトウェアコンポーネントの別の中間層を介して行われる。
一実施形態では、本明細書に記載のシステムの幾つか又は全てがサーバコンピュータシステムであってよく、或いはサーバコンピュータシステムを含んでよく、これらのサーバコンピュータシステムは、システムの様々なコンポーネントを一連のサーバサイドプロセスとして集合的に実装する1つ以上のコンピュータシステム1300を含む。サーバコンピュータシステムは、ウェブサーバ、アプリケーションサーバ、データベースサーバ、及び/又は他の従来型サーバコンポーネントを含んでよく、特定の上述のコンポーネントがこれらを利用して記載の機能性を提供する。サーバコンピュータシステムは、任意の様々なソースからの入力データを含むネットワークベースの通信を受信してよく、そのようなソースとして、限定ではなく、ユーザが操作するクライアントコンピューティング装置があり、それらは、例えば、デスクトップコンピュータ、タブレット即ちスマートフォン、リモートセンシング装置、及び/又は他のサーバコンピュータシステムである。
一実施形態では、特定のサーバコンポーネントの全体又は一部が、インターネットなどの1つ以上のネットワークによってシステムと結合された「クラウド」ベースのコンポーネントにより実装されてよい。クラウドベースのコンポーネントは、それらが処理、記憶、ソフトウェア、及び/又は他のリソースをシステムの他のコンポーネントに提供する為のインタフェースを露出させてよい。一実施形態では、クラウドベースのコンポーネントは、そのコンポーネントのデプロイ先である別のエンティティに代わりにサードパーティエンティティによって実装されてよい。しかしながら、実施形態によっては、記載のシステムは、単一エンティティによって所有及び運用されるコンピュータシステムによって完全に実装されてよい。
一実施形態では、装置がプロセッサを含み、上述の方法のいずれかを実施するように構成されている。一実施形態では、非一時的コンピュータ可読記憶媒体がソフトウェア命令を記憶しており、これらの命令は、1つ以上のプロセッサによって実行された場合に、上述の方法のいずれかを実施させる。
6.0.拡張及び代替
本明細書では、「第1の」、「第2の」、「ある特定の」、及び「特定の」という語句は、クエリ、計画、表現、ステップ、オブジェクト、デバイス、又は他のアイテムを互いに区別する命名規則として用いられており、従って、これらのアイテムは、これらが紹介された後に参照されてよい。本明細書では特に断らない限り、これらの語句の使用は、参照されているアイテムの順序づけ、タイミング、又は他の任意の特徴を意味するものではない。
図面では、様々なコンポーネントが、矢印によって、他の様々なコンポーネントと通信可能に結合されているように描かれている。これらの矢印は、コンポーネント間の情報フローの特定の例を示しているに過ぎない。特定のコンポーネント間の矢印の方向も矢印線の欠落も、それらの特定コンポーネント自体の間の通信の有無を示すものとして解釈されるべきではない。実際には、各コンポーネントは、そのコンポーネントが、本明細書に記載のいずれかの機能を達成する為に、必要に応じて他のコンポーネントと通信可能に結合されることを可能にする適切な通信インタフェースを特徴として備えてよい。
上述の明細書では、本発明の実施形態が、実装ごとに異なってよい様々な具体的詳細に関して説明されている。従って、本発明が何であるか、並びに出願人が何を本発明として意図しているか、を唯一且つ排他的に示すのが、本出願から出される一連のクレームであり、これは、後補正があればそれも含めて、そのようなクレームが出される際の特定の形式である。この点において、本出願のクレームには特定のクレーム従属関係が提示されているが、本出願の従属クレームの特徴は、適宜、他の従属クレームの特徴と組み合わされてよく、且つ、本出願の独立クレームの特徴と組み合わされてよく、一連のクレームに記述される特定の従属関係に従うだけのものでなくてよいことに注意されたい。更に、本明細書には複数の別々の実施形態が記載されているが、本明細書に記載の実施形態及び/又は実施形態の一部が任意に組み合わされて別の実施形態が形成されてよい。
そのようなクレームに含まれる語句に関して、本明細書中に明示的に説明された定義があれば、そのような語句がクレームで使用されている場合にも、その意味はその定義に従うものとする。従って、クレーム中に明示的に記述されていない制限、要素、特性、特徴、利点、又は属性がそのようなクレームの範囲をいかなる形でも制限することはない。従って、本明細書及び図面は、制限的ではなく例示的であると考えられたい。