(57)【要約】  プログラマにマウントされたプログラマブルデバイスに対してターゲットペイロードのプロビジョニング及びプログラミングを行う為のセキュアプログラミングシステム及び方法である。プログラマブルデバイスは、プログラミングの前に認証が行われることにより、シリコンベンダによって生産された有効なデバイスであることを確認されてよい。ターゲットペイロードは、プログラマブルデバイスにプログラムされてよく、承認済み製造者にリンクされてよい。プログラマブルデバイスは、ターゲットペイロードのプログラミング後に、シリコンベンダ及び承認済み製造者を確認することにより、検証されてよい。
2019527904.tif 000002
【特許請求の範囲】
【請求項１】
セキュアプログラミングシステムの動作方法であって、
プログラマにマウントされたプログラマブルデバイスからシリコンベンダデバイス証明書を抽出するステップと、
シリコンベンダ公開鍵を使用して前記シリコンベンダデバイス証明書を認証するステップと、
前記シリコンベンダデバイス証明書に基づいて前記プログラマブルデバイスのＯＥＭデバイス証明書を生成するステップであって、前記ＯＥＭデバイス証明書はＯＥＭ秘密鍵で署名されている、前記ＯＥＭデバイス証明書を生成する前記ステップと、
前記ＯＥＭデバイス証明書及びターゲットペイロードを、前記プログラマにマウントされた前記プログラマブルデバイスに転送するステップと、
前記ＯＥＭデバイス証明書が前記プログラマブルデバイスに転送された後に、前記ＯＥＭデバイス証明書及び前記シリコンベンダデバイス証明書を前記プログラマブルデバイスから抽出するステップと、
前記ＯＥＭ公開鍵を使用して前記ＯＥＭデバイス証明書を認証し、前記シリコンベンダ公開鍵を使用して前記シリコンベンダデバイス証明書を認証することにより、妥当性ステータスを生成するステップであって、前記ＯＥＭデバイス証明書又は前記シリコンベンダデバイス証明書の前記いずれかが正常に認証されない場合には前記妥当性ステータスが無効として設定される、前記妥当性ステータスを生成する前記ステップと、
前記妥当性ステータスに基づいて、前記プログラマブルデバイスを前記プログラマの出力レセプタクルにソートするステップと、
を含む方法。
【請求項２】
前記ＯＥＭデバイス証明書を生成する前記ステップは、前記プログラマブルデバイスのセキュア記憶ユニットに前記ＯＥＭデバイス証明書を書き込むステップを含む、請求項１に記載の方法。
【請求項３】
前記シリコンベンダデバイス証明書を抽出する前記ステップは、前記プログラマブルデバイスのセキュア記憶ユニットから前記シリコンベンダデバイス証明書を抽出するステップを含む、請求項１に記載の方法。
【請求項４】
前記プログラマブルデバイスをソートする前記ステップは、前記プログラマブルデバイスを前記プログラマにある不良デバイスレセプタクルに入れるステップを含む、請求項１に記載の方法。
【請求項５】
前記プログラマのプログラマ識別表示を有するジョブ制御パッケージを生成するステップを更に含む、請求項１に記載の方法。
【請求項６】
セキュアプログラミングシステムの動作方法であって、
ターゲットペイロードを有するジョブ制御パッケージを受け取るステップと、
プログラマにマウントされたプログラマブルデバイスからシリコンベンダデバイス証明書を抽出するステップであって、前記シリコンベンダデバイス証明書はシリコンベンダ秘密鍵で暗号化されている、前記シリコンベンダデバイス証明書を抽出する前記ステップと、
工場セキュリティシステム内で、シリコンベンダ公開鍵を使用して前記シリコンベンダデバイス証明書を認証するステップと、
前記シリコンベンダデバイス証明書に基づいて前記プログラマブルデバイスのＯＥＭデバイス証明書を生成するステップであって、前記ＯＥＭデバイス証明書はＯＥＭ秘密鍵で署名されている、前記ＯＥＭデバイス証明書を生成する前記ステップと、
前記ＯＥＭデバイス証明書及び前記ターゲットペイロードを、前記プログラマ内の前記プログラマブルデバイスに転送するステップであって、前記ＯＥＭデバイス証明書は前記プログラマブルデバイスのセキュア記憶ユニットに記憶されている、前記転送するステップと、
前記ＯＥＭデバイス証明書が前記プログラマブルデバイスに転送された後に、前記ＯＥＭデバイス証明書及び前記シリコンベンダデバイス証明書を前記プログラマブルデバイスから抽出するステップと、
前記ＯＥＭ公開鍵を使用して前記ＯＥＭデバイス証明書を認証し、前記シリコンベンダ公開鍵を使用して前記シリコンベンダデバイス証明書を認証することにより、妥当性ステータスを生成するステップであって、前記ＯＥＭデバイス証明書又は前記シリコンベンダデバイス証明書の前記いずれかが正常に認証されない場合には前記妥当性ステータスが無効として設定される、前記妥当性ステータスを生成する前記ステップと、
前記妥当性ステータスに基づいて、前記プログラマブルデバイスを出力レセプタクルにソートするステップと、
を含む方法。
【請求項７】
前記ＯＥＭデバイス証明書を生成する前記ステップは、承認された生産数をジョブ制御パッケージにエンコードするステップを含む、請求項６に記載の方法。
【請求項８】
前記妥当性ステータスを生成する前記ステップは、前記工場セキュリティシステムにおいて前記ＯＥＭデバイス証明書及び前記シリコンベンダデバイス証明書を認証するステップを含む、請求項６に記載の方法。
【請求項９】
前記シリコンベンダデバイス証明書を認証する前記ステップは、前記シリコンベンダデバイス証明書にあるシリコンベンダ識別子を、前記プログラミングユニットのセキュリティコントローラに記憶されているベンダ識別子と照合するステップを含む、請求項６に記載の方法。
【請求項１０】
前記妥当性ステータスを生成する前記ステップは、前記妥当性ステータスにリンクされた前記シリコンベンダデバイス証明書のデバイス識別子を有する有効デバイスリストを生成するステップを含む、請求項６に記載の方法。
【請求項１１】
プログラマであって、プログラマブルデバイスからシリコンベンダデバイス証明書を抽出し、前記ＯＥＭデバイス証明書及びターゲットペイロードを、前記プログラマ内の前記プログラマブルデバイスに転送し、前記ＯＥＭデバイス証明書が前記プログラマブルデバイスに転送された後に、前記ＯＥＭデバイス証明書及び前記シリコンベンダデバイス証明書を前記プログラマブルデバイスから抽出し、前記妥当性ステータスに基づいて、前記プログラマブルデバイスを前記プログラマの出力レセプタクルにソートする前記プログラマと、
前記プログラマと結合された工場セキュリティシステムであって、シリコンベンダ公開鍵を使用して前記シリコンベンダデバイス証明書を認証し、前記シリコンベンダデバイス証明書に基づいて、ＯＥＭ秘密鍵で署名されている、前記プログラマブルデバイスのＯＥＭデバイス証明書を生成し、前記ＯＥＭ公開鍵を使用して前記ＯＥＭデバイス証明書を認証し、前記シリコンベンダ公開鍵を使用して前記シリコンベンダデバイス証明書を認証することにより、妥当性ステータスを生成し、前記ＯＥＭデバイス証明書又は前記シリコンベンダデバイス証明書の前記いずれかが正常に認証されない場合には前記妥当性ステータスを無効として設定する前記工場セキュリティシステムと、
を含むセキュアプログラミングシステム。
【請求項１２】
前記ＯＥＭデバイス証明書は、前記プログラマブルデバイスのセキュア記憶ユニットに記憶されている、請求項１１に記載のシステム。
【請求項１３】
前記シリコンベンダデバイス証明書は前記プログラマブルデバイスのセキュア記憶ユニットから抽出される、請求項１１に記載のシステム。
【請求項１４】
前記プログラマは、前記プログラマブルデバイスを不良デバイスレセプタクルに入れる、請求項１１に記載のシステム。
【請求項１５】
前記工場セキュリティシステムは、前記プログラマのプログラマ識別表示を有するジョブ制御パッケージを含む、請求項１１に記載のシステム。
【請求項１６】
前記プログラマブルデバイスは、前記シリコンベンダ秘密鍵で暗号化された前記シリコンベンダデバイス証明書を含み、前記ＯＥＭデバイス証明書及び前記シリコンベンダデバイス証明書は両方ともセキュア記憶ユニットに記憶されており、
前記プログラマは、ターゲットペイロードを有するジョブ制御パッケージを含み、
前記工場セキュリティシステムは、前記シリコンベンダ公開鍵を使用して前記シリコンベンダデバイス証明書を認証する、
請求項１１に記載のシステム。
【請求項１７】
前記プログラマは、前記プログラマブルデバイスの承認された生産数を有するジョブ制御パッケージを含む、請求項１６に記載のシステム。
【請求項１８】
前記プログラマブルデバイスは、前記ＯＥＭデバイス証明書及び前記シリコンベンダデバイス証明書を含み、前記ＯＥＭデバイス証明書及び前記シリコンベンダデバイス証明書は両方とも、前記工場セキュリティシステムのセキュリティコントローラによって妥当性を検査される、請求項１６に記載のシステム。
【請求項１９】
前記プログラマブルデバイスに含まれる、前記シリコンベンダデバイス証明書にあるシリコンベンダ識別子が、前記プログラミングユニットのセキュリティコントローラにプリインストールされているシリコンベンダ識別子と一致する、請求項１６に記載のシステム。
【請求項２０】
前記プログラマは、前記プログラマブルデバイスの前記シリコンベンダデバイス証明書のデバイス識別子を有する有効デバイスリストを含む、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照により全内容が本明細書に完全に記載されているかのように本明細書に組み込まれている、２０１７年６月３０日に出願された米国特許非仮出願第１５／６４０，４３８号、件名「システム生成を伴うデバイスプログラミング（ＤＥＶＩＣＥ  ＰＲＯＧＲＡＭＭＩＮＧ  ＷＩＴＨ  ＳＹＳＴＥＭ  ＧＥＮＥＲＡＴＩＯＮ）」、並びに２０１６年８月１日に出願された米国特許仮出願第６２／３６９，３０４号、件名「システム生成を伴うデバイスプログラミング（ＤＥＶＩＣＥ  ＰＲＯＧＲＡＭＭＩＮＧ  ＷＩＴＨ  ＳＹＳＴＥＭ  ＧＥＮＥＲＡＴＩＯＮ）」の、３５  Ｕ．Ｓ．Ｃ．１２０に基づく優先権を主張するものである。
【０００２】
本出願は、２０１６年８月４日に出願された米国特許仮出願第６２／３７１，１８４号、件名「偽造の防止（ＣＯＵＮＴＥＲＦＥＩＴ  ＰＲＥＶＥＮＴＩＯＮ）」、２０１６年８月８日に出願された米国特許仮出願第６２／３７２，２４２号、件名「セキュリティアルゴリズムによる信頼の基本的な基点の埋め込み（ＥＭＢＥＤＤＩＮＧ  ＦＯＵＮＤＡＴＩＯＮＡＬ  ＲＯＯＴ  ＯＦ  ＴＲＵＳＴ  ＵＳＩＮＧ  ＳＥＣＵＲＩＴＹ  ＡＬＧＯＲＩＴＨＭＳ）」、並びに２０１６年９月３０日に出願された米国特許仮出願第６２／４０１，９５３号、件名「プログラマブルデバイス向け統合プログラミング環境（ＵＮＩＦＩＥＤ  ＰＲＯＧＲＡＭＭＩＮＧ  ＥＮＶＩＲＯＮＭＥＮＴ  ＦＯＲ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＤＥＶＩＣＥＳ）」に関連しており、これらの出願のそれぞれは本出願人によって所有されており、この参照によって全内容が本明細書に組み込まれている。
【０００３】
実施形態は、全般的にはデバイスプログラミングシステムに関し、より具体的には、システム生成を伴うセキュアプログラミングシステムに関する。
【背景技術】
【０００４】
本セクションに記載のアプローチは、追求可能なアプローチであるが、必ずしも、これまでに構想又は追求されたことのあるアプローチではない。従って、特に断らない限り、本セクションに記載のアプローチはいずれも、本セクションに含まれることで単に先行技術として限定されるものと見なされるべきではない。
【０００５】
電子回路基板組立のうちの幾つかの作業は、メイン製造組立ラインから離れたところで行われる。様々な供給機やロボット操作システムが電子回路基板を集積回路で埋めていく一方で、プログラミング、検査、較正、測定などの処理集積回路に関連する作業は、メイン製造組立ラインに組み込まれるのではなく、別の場所にある別の設備で行われるのが一般的である。
【０００６】
カスタマイズ可能なデバイス、例えば、フラッシュメモリ（フラッシュ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、不揮発性メモリ素子を組み込んだマイクロコントローラなどが、別個のプログラミング機器によって構成されてよく、そのようなプログラミング機器は、回路基板組立ラインとは別の場所に置かれることが多い。更に、システムレベルのコンポーネント、例えば、スマートフォン、回路基板、インターネットオブシングス（ＩｏＴ）デバイス、メディアプレートなども、専用セキュリティ構成サポートを必要としてよい。
【０００７】
一般に、量産ラインで一括して製造又は組立が行われるシステム及び部分組立品は機能が同一である。そのような製品は、機能及び動作に関する同様の問題を共有する。１つのデバイスで発生した問題は、典型的には、同様に製造された全てのデバイスで見つかる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、上記従来技術の課題を解決するためになされたものである。
【課題を解決するための手段】
【０００９】
本発明は、添付図面の各図において限定ではなく例として図解されており、添付図面においては類似の参照符号は類似の要素を指す。
【図面の簡単な説明】
【００１０】
【図１】一実施形態によるセキュアプログラミングシステムの説明図である。
【図２】プログラマの一例を示す図である。
【図３】信頼できるデバイスの一例を示す図である。
【図４】データデバイスの一例を示す図である。
【図５】デバイス識別表示の一例を示す図である。
【図６】セキュアプログラミングシステムの例示的ブロック図である。
【図７】セキュアプログラミングシステムの別の例示的ブロック図である。
【図８】１つの信頼できるデバイスのプロビジョニングのブロック図である。
【図９】管理及びセキュリティ処理システムの一例を示す図である。
【図１０】セキュア要素ユースケースの一詳細例を示す図である。
【図１１】１つ以上の実施形態による、プログラマブルデバイスのプロビジョニングプロセスフローの一例を示す図である。
【図１２】１つ以上の実施形態による、プログラマブルデバイスのセキュア製造プロセスフローの一例を示す図である。
【図１３】本発明の実施形態が実装されてよいコンピュータシステムのブロック図である。
【発明を実施するための形態】
【００１１】
以下の記述では、本発明が十分に理解されるように、説明を目的として多数の具体的詳細を示す。しかしながら、当然のこととして、本発明は、そのような具体的詳細がなくても実施可能である。他の例では、本発明が不必要に曖昧にならないように、周知の構造及びデバイスはブロック図形式で示されている。
【００１２】
本明細書では、以下のアウトラインに従って実施形態を説明する。
１．０．全般的概要
２．０．構造の概要
３．０．機能の概要
４．０．例示的実施形態
５．０．実装の機構−ハードウェアの概要
６．０．拡張及び代替
１．０．全般的概要
【００１３】
プログラマブルデバイスのプロビジョニングをセキュアな方式で行う為のアプローチ、技術、及び機構を開示する。本セキュアプログラミングシステムは、データ及びコードのターゲットペイロードを個別に暗号化し、その情報をプログラマブルデバイスの１つ１つにプログラムすることが可能である。本セキュアプログラミングシステムは、正しいセキュリティ鍵を有するシステム又はデバイスによってのみ復号可能な、カスタマイズされたペイロードパッケージを生成することが可能である。
【００１４】
プログラマブルデバイスは、メモリチップ、回路基板、完成品の電子デバイス（例えば、スマートフォン、メディアプレーヤ、又は他の民生用又は産業用電子デバイス）等であってよい。セキュリティ鍵を構成することにより、プログラマブルデバイスの動作を制御することが可能である。
【００１５】
本セキュアプログラミングシステムは、コンポーネント、回路基板、及び完成製品を含む個々のデバイスをセキュアに構成することが可能である。個々のコンポーネントの製造時にセキュリティ機能を実装することにより、デバイス単位で動作を制御することが可能である。セキュアなコンテンツ、コード、及び鍵を相互運用することにより、高度のセキュリティ及び制御を実現することが可能である。
【００１６】
一実施形態によれば、プログラマブルデバイスのうちの１つ、例えば、回路基板のターゲットペイロードを個別に暗号化することにより、その回路基板を、登録済みセキュリティコードを有するコンポーネントとだけ動作するように構成することが可能である。このことを用いて、回路基板が特定のカテゴリの部品とだけ動作可能であるようにすることが可能である。これによって、製造元は、基板の最終用途をある程度管理することが可能になる。
【００１７】
別の実施形態によれば、プログラマブルデバイスは、デバイスの動作の前提条件として、シリアル番号又は他のパラメータの妥当性を検査することが可能である。更に別の実施形態では、プログラマブルデバイスは、コードを実行前に認証するコード署名機能を備えることが可能である。
【００１８】
別の実施形態によれば、プログラマブルデバイスは、プログラミング前に認証され、ターゲットペイロードのプログラミング後に再度認証されてよい。これは、シリコンベンダのデバイス証明書、及び相手先ブランド製造者（ＯＥＭ）のデバイス証明書を認証することを含んでよい。プログラマブルデバイスは、シリコンベンダ、ＯＥＭ、デバイスのプログラミングに使用される工場、プログラマ、及び他の、プログラマブルデバイスの製造の追跡及び認証に使用可能な識別情報を識別するセキュリティ情報を含んでよい。
【００１９】
別の態様では、本発明は、上述の技術を実施するように構成されたコンピュータ装置及びコンピュータ可読媒体媒体を包含する。
【００２０】
２．０．構造の概要
次に図１を参照すると、一実施形態による、本明細書に記載の技術を実施できるセキュアプログラミングシステム１００の様々な態様の説明図が示されている。セキュアプログラミングシステム１００は、データデバイス及びアクティブな信頼できるデバイスを暗号情報で個別に構成することにより、プログラミング及び作業のセキュアな環境を提供することが可能である。
【００２１】
セキュアプログラミングシステム１００は、プログラマ１１２を有するプログラミングユニット１１０と、セキュリティコントローラ１１４と、セキュリティ鍵１０６と、プログラマブルデバイスと結合する為のアダプタと、第１のセキュリティモジュール１１６と、第２のセキュリティモジュール１１８と、第ｎのセキュリティモジュール１２０と、を含む。セキュアプログラミングシステム１００は、セキュアマスタ記憶システム１０２を有するセキュリティマスタシステム１０４と結合されてよい。セキュリティマスタシステム１０４及びセキュアマスタ記憶システム１０２は、情報の暗号化及び復号を行う為のセキュリティ鍵１０６を生成してセキュアに記憶することが可能である。セキュリティ鍵１０６は、様々なセキュリティパラダイムを実装することが可能である。例えば、セキュリティ鍵１０６は、秘密鍵１５２及び公開鍵１５４を有する鍵ペア１５０を含んでよい。鍵ペア１５０を使用して、公開鍵１５４によって暗号化されたデータを秘密鍵１５２で復号できる公開鍵暗号システムを実装することが可能である。セキュアプログラミングシステム１００は、異なる鍵ペア１５０を必要な数だけ含んでよい。鍵ペア１５０、秘密鍵１５２、及び公開鍵１５４は、セキュアプログラミングシステム１００、プログラミングユニット１１０、プログラマ１１２、セキュリティコントローラ１１４、セキュリティモジュール、プログラマブルデバイス１２８、データデバイス１３２、信頼できるデバイス１３０、又は他の任意のシステム要素を含む様々なデバイス又はシステム要素に対して実装可能である。
【００２２】
システム１００は、１つ以上のコンピューティング装置を含む。これらの１つ以上のコンピューティング装置は、本明細書に記載の様々な論理コンポーネントを実装するように構成された、ハードウェアとソフトウェアの任意の組み合わせを含み、そのようなコンポーネントとして、プログラマ１１２を有するプログラミングユニット１１０、セキュリティコントローラ１１４、アダプタ、第１のセキュリティモジュール１１６、第２のセキュリティモジュール１１８、及び第ｎのセキュリティモジュール１２０がある。例えば、これらの１つ以上のコンピューティング装置は、本明細書に記載の様々なコンポーネントを実装する命令を記憶する１つ以上のメモリと、１つ以上のメモリに記憶された命令を実行するように構成された１つ以上のハードウェアプロセッサと、様々なコンポーネントによって利用及び操作されるデータ構造体を記憶する、１つ以上のメモリの中の様々なデータリポジトリとを含んでよい。
【００２３】
プログラミングユニット１１０は、データ、メタデータ、及びコードをプログラマブルデバイス１２８にプログラムするセキュアなシステムであってよい。プログラミングユニット１１０は、セキュリティマスタシステム１０４からセキュリティ情報を受け取り、その情報を処理し、そのセキュリティ情報の個別に構成されたバージョンを各プログラマブルデバイス１２８に転送することが可能である。
【００２４】
プログラミングユニット１１０はプログラマ１１２を含んでよい。プログラマ１１２は、プログラマブルデバイス１２８を物理的にプログラムする電気機械システムであってよい。例えば、プログラマ１１２は、プログラマブルデバイス１２８を収容したトレイを受け取り、プログラマブルデバイス１２８をアダプタユニットに電気的に結合し、プログラマブルデバイス１２８にセキュリティ情報を転送することが可能である。プログラミングユニット１１０は、各プログラマブルデバイス１２８から、個別化されたステータス情報を受け取り、各プログラマブルデバイス１２８に転送されるセキュリティ情報を個々のデバイスごとにカスタマイズすることが可能である。例えば、各プログラマブルデバイス１２８は、他のプログラマブルデバイスに転送される情報と異なる個別の情報ブロックを受け取ることが可能である。
【００２５】
プログラマ１１２は、プログラマブルデバイス１２８へのアクセスに使用可能なアダプタのうちの１つ以上のアダプタに結合されてよい。これらのアダプタは、第１のアダプタ１２２、第２のアダプタ１２４、及び第ｎのアダプタ１２６を含んでよい。
【００２６】
一事例では、第１のアダプタ１２２は、１つ以上のプログラマブルデバイスをプログラマ１１２に電気的に接続することに使用可能なハードウェアデバイスであってよい。そしてプログラマ１１２は、あるバージョンのセキュリティ情報を１つのプログラマブルデバイス１２８に転送することが可能である。第１のアダプタ１２２は、プログラマブルデバイス１２８をマウントする為のソケットを１つ以上含んでよい。第１のアダプタ１２２は、集積回路をマウントする為のソケット、コネクタ、ゼロ挿入力（ＺＩＦ）ソケット、又は同様のデバイスを含んでよい。
【００２７】
これらのアダプタは、プログラマブルデバイス１２８をマウントする為の電気機械式ユニットとして説明されているが、当然のことながら、別の実施態様を有してもよい。例えば、プログラマブルデバイス１２８が独立した電子デバイス、例えば、携帯電話、民生用電子デバイス、回路基板、又は同様の、アクティブコンポーネントを有するデバイスである場合には、アダプタは、プログラマブルデバイス１２８と通信する機構を含んでよい。アダプタは、ケーブルリンク、ユニバーサルシリアルバスリンク、シリアル接続、パラレル接続、無線通信リンク、電子データバスインタフェース、光インタフェース、又は他の任意の通信機構を含んでよい。
【００２８】
プログラマブルデバイス１２８は、プログラミングユニット１１０によってセキュア情報をプロビジョニングされることが可能なデバイスである。例えば、プログラマブルデバイス１２８は、フラッシュメモリユニット、プログラマブル読み出し専用メモリ、セキュアデータ記憶デバイス、又は他のデータ記憶デバイスのようなデータデバイスであってよい。
【００２９】
プロビジョニングは、データ及び／又はコード情報をデバイスに転送することを含んでよい。例えば、フラッシュメモリユニットは、これをデータでプログラムすることによってプロビジョニングされてよい。
【００３０】
プログラマブルデバイス１２８は更に、セキュリティデータ及びセキュリティプログラミング情報を含む信頼できるデバイス１３０を含んでよい。例えば、プログラマブルデバイス１２８は、信頼できるデバイス１３０として、例えば、携帯電話、ハードウェアセキュリティモジュール、信頼できるプログラミングモジュール、回路基板、又は同様のデバイスを含んでよい。
【００３１】
データデバイス１３２は、任意の数のデバイスを含んでよく、例えば、第１のデータデバイス１３４、第２のデータデバイス１３６、及び第ｎのデータデバイス１３８を含んでよい。信頼できるデバイス１３０は、任意の数の信頼できるデバイスを含んでよく、例えば、第１の信頼できるデバイス１４０、第２の信頼できるデバイス１４２から第ｎの信頼できるデバイス１４４までを含んでよい。
【００３２】
プログラマブルデバイス１２８は、それぞれが、個別にカスタマイズされたセキュリティ情報をプロビジョニングされてよい。従って、各プログラマブルデバイス１２８は、プログラマブルデバイス１２８に記憶されたデータを個別に暗号化することに使用可能な、セキュリティ鍵１０６のそれぞれ異なるセットを含んでよい。これにより、セキュリティ情報１４８を各プログラマブルデバイス１２８ごとに異なるように暗号化することでセキュリティを最大化することが可能になる。各プログラマブルデバイス１２８は、個別のセキュリティ鍵１０６で個人化されてよい。
【００３３】
プログラマブルデバイス１２８は、ペアデバイス１４６を含むように構成されてよい。ペアデバイス１４６は、１つ以上のセキュリティ鍵１０６を共有できる２つ以上のプログラマブルデバイス１２８である。これにより、各ペアデバイス１４６が、同じグループにある別のペアデバイス１４６を検出して認証することが可能になりうる。従って、１つのペアデバイス１４６からのデータが、別の１つのペアデバイス１４６と共有されることが可能である。これにより、情報を共有すること、２つ以上のペアデバイス１４６の間の二方向セキュア通信チャネルを認証すること、他の関連デバイスを識別すること、又はこれらの組み合わせなどの機能性が可能になりうる。
【００３４】
一事例では、セキュアプログラミングシステム１００を使用して、第１のデータデバイス１３４（例えば、システム情報モジュール（ＳＩＭ）チップ）と第１の信頼できるデバイス１４０（例えば、スマートフォン）とがペアになった、いずれかのペアデバイス１４６を確立することが可能である。この構成では、第１のデータデバイス１３４及び第１の信頼できるデバイス１４０は、両方とも、ペアデバイス１４６用セキュリティ鍵１０６でプログラムされることが可能である。従って、第１の信頼できるデバイス１４０は、第１のデータデバイス１３４のセキュリティ情報１４８（例えば、シリアル番号）の妥当性を検査することにより、第１の信頼できるデバイス１４０が第１のデータデバイス１３４に関する他の情報の使用を許可されていることを確認することが可能である。
【００３５】
プログラミングユニット１１０は、プログラマ１１２と結合されたセキュリティコントローラ１１４を含んでよい。セキュリティコントローラ１１４は、セキュリティ情報を処理するコンピューティング装置である。セキュリティコントローラ１１４は、暗号情報の処理を促進する特定の暗号及び計算用のハードウェアを含んでよい。例えば、セキュリティコントローラ１１４は、量子コンピュータ、並列コンピューティング回路、セキュリティ情報を処理するように構成されたフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コプロセッサ、アレイ論理ユニット、マイクロプロセッサ、又はこれらの組み合わせを含んでよい。
【００３６】
セキュリティコントローラ１１４は、セキュリティ情報の処理の入力段階、中間段階、又は最終段階においてセキュリティ情報への不正なアクセスを阻止するように特に構成されたセキュアデバイスであってよい。セキュリティコントローラ１１４は、セキュアコード要素３１４が実行されるセキュア実行環境を提供することが可能である。例えば、セキュリティコントローラ１１４は、ハードウェアセキュリティモジュール（ＨＳＭ）、マイクロプロセッサ、信頼できるセキュリティモジュール（ＴＰＭ）、専用セキュリティユニット、又はこれらの組み合わせであってよい。セキュリティコントローラ１１４は、プログラミングユニット１１０の一部であってよい。例えば、セキュリティコントローラ１１４（例えば、ハードウェアセキュリティモジュール）は、プログラマ１１２内に含まれてよい。
【００３７】
セキュリティコントローラ１１４は、特定のセキュリティ機能性を提供する為にセキュリティモジュールと結合されてよい。セキュリティモジュールは、第１のセキュリティモジュール１１６、第２のセキュリティモジュール１１８、第ｎのセキュリティモジュール１２０などであってよい。各セキュリティモジュールは、特定のセキュリティ機能性を提供してよく、例えば、識別、認証、暗号化、復号、妥当性検査、コード署名、データ抽出、又はこれらの組み合わせなどのセキュリティ機能性を提供してよい。例えば、セキュリティモジュールは、ハードウェア、ソフトウェア、又はこれらの組み合わせであってよい。
【００３８】
例えば、第１のセキュリティモジュール１１６は、よく使われるセキュリティ機能の標準化されたセットへのアプリケーションプログラミングインタフェース（ＡＰＩ）を提供するように構成されてよい。別の例では、第２のセキュリティモジュール１１８は、データの暗号化及び復号をより高速で行う為の専用のハードウェア及びソフトウェアの組み合わせであってよい。
【００３９】
プログラミングユニット１１０は、１つ以上のセキュリティ鍵１０６のセキュア記憶装置を含んでよい。セキュリティ鍵１０６は、セキュアプログラミングシステム１００の内部で計算されてよく、或いは外部で計算されてからセキュアプログラミングシステム１００によって受け取られてもよく、或いはこれらの組み合わせであってもよい。
【００４０】
セキュリティ鍵１０６は、セキュリティ情報の暗号化及び復号に使用されてよい。セキュリティ鍵１０６は、セキュリティの様々なメソドロジ及びプロトコルを実装する為に使用されてよい。例えば、セキュリティ鍵１０６は、公開鍵暗号システムを実装する為に使用されてよい。別の例では、セキュリティ鍵１０６は、セキュリティの様々なプロトコル又はメソドロジを実装する為に使用されてよい。セキュリティ鍵１０６は公開鍵暗号システムに使用されるように説明されている場合があるが、当然のことながら、セキュリティ鍵１０６は、様々なセキュリティパラダイムの実装に使用されてよい。
【００４１】
セキュアプログラミングシステム１００の利点の１つとして、セキュリティ鍵１０６の別々のセット、並びにその個別セキュリティ鍵１０６によって暗号化される別々のバージョンのセキュリティ情報１４８を各プログラマブルデバイス１２８にプロビジョニングできることが挙げられる。これにより、１つのプログラマブルデバイス１２８に関するセキュリティ情報１４８の復号に使用されるセキュリティ鍵１０６が、別の１つのプログラマブルデバイス１２８に関するセキュリティ情報の復号には使用できないようにすることが可能である。各プログラマブルデバイス１２８は、保護を最大化する為に、それぞれ異なるセキュリティ鍵１０６を有してよい。
【００４２】
次に図２を参照すると、プログラマ１１２の例が示されている。プログラマ１１２は、プログラマブルデバイス１２８をプロビジョニングする電気機械式デバイスである。
【００４３】
プログラマ１１２は、プログラマブルデバイス１２８にアクセスし、プログラマブルデバイス１２８にコンテンツペイロードをプロビジョニングすることに使用されてよい。コンテンツペイロードは、データ、コード、図１のセキュリティ鍵１０６、図１のセキュリティ情報１４８、及び他の関連コンテンツを含んでよい。
【００４４】
プログラマ１１２は、様々な構成を有してよい。プログラマ１１２は、プログラミングプロセッサ２０２、入力デバイスレセプタクル２０６、デバイスアダプタ２０８、デスティネーションソケット２１０、デバイス装着ユニット２１２、及び出力デバイスレセプタクル２１４を含んでよい。例えば、プログラマ１１２は、プログラマ１１２、チッププログラマ、デバイスプロビジョニングシステム、回路基板プログラマ、又は同様のプロビジョニングシステムであってよい。
【００４５】
プログラマ１１２は、プログラマ識別表示２１６を有してよい。プログラマ識別表示２１６は、プログラマ１１２を識別する為の一意の値である。
【００４６】
プログラマ１１２は、データイメージを初期化してプログラマブルデバイス１２８に書き込むことによって、プログラマブルデバイス１２８を構成することが可能である。データイメージは、プログラマブルデバイス１２８のデバイスタイプに合わせて構成されてよい。プログラマ１１２は、直接又は間接のメモリアクセスにより、データをプログラマブルデバイス１２８に転送してよい。
【００４７】
プログラマ１１２は、プログラマブルデバイス１２８のシングルペイロードイメージを受け取り、このイメージをローカルプログラマ記憶ユニットに記憶することが可能である。ペイロードイメージは、各プログラマブルデバイス１２８をターゲットとする個別イメージになるように処理されてよい。プログラマブルデバイス１２８を構成することにより、メモリ構造、暗号データ、及びユーザデータをプログラマブルデバイス１２８に記憶することが可能である。構成することは、パーティションのようなワンタイム構造をプログラマブルデバイス１２８に形成することを含んでよい。
【００４８】
プログラマ１１２は、プログラミングプロセッサ２０２を含んでよい。プログラミングプロセッサ２０２は、プログラマ１１２を制御するコンピューティングユニットである。プログラミングプロセッサ２０２は、中央処理ユニット（図示せず）、プログラマ記憶ユニット２０４、通信インタフェース（図示せず）、及びソフトウェア（図示せず）を含んでよい。
【００４９】
プログラミングプロセッサ２０２は、様々な構成を有してよい。例えば、プログラミングプロセッサ２０２は、セキュリティコントローラを含んでよく、或いはシステムコントローラと結合されてよい。プログラミングプロセッサ２０２は、シングルプロセッサ、マルチプロセッサ、クラウドコンピューティング要素、又はこれらの組み合わせであってよい。
【００５０】
プログラマ記憶ユニット２０４は、情報の記憶及び取り出しを行うデバイスである。例えば、プログラマ１１２のプログラマ記憶ユニット２０４は、ディスクドライブ、ソリッドステートメモリ、光記憶デバイス、又はこれらの組み合わせであってよい。
【００５１】
プログラマ１１２は、プログラマ２０４を動作させるソフトウェアを含んでよい。このソフトウェアは、プログラミングプロセッサ２０２上で実行される制御情報である。このソフトウェアは、プログラマ記憶ユニット２０４で記憶されて、プログラミングプロセッサ２０２上で実行されてよい。
【００５２】
プログラマ１１２は、入力デバイスレセプタクル２０６を含んでよい。入力デバイスレセプタクル２０６は、プログラマブルデバイス１２８のソースである。例えば、入力デバイスレセプタクル２０６は、電子素子技術連合評議会（Ｊｏｉｎｔ  Ｅｌｅｃｔｒｏｎ  Ｄｅｖｉｃｅ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｃｏｕｎｃｉｌ）（ＪＥＤＥＣ）規格に準拠したトレイであってよい。入力デバイスレセプタクル２０６は、プログラミング前のデバイスを保持することに使用されてよい。
【００５３】
プログラマ１１２は、出力デバイスレセプタクル２１４を含んでよい。出力デバイスレセプタクル２１４は、プロビジョニングが行われたプログラマブルデバイス１２８のデスティネーションである。例えば、出力デバイスレセプタクル２１４は、完成デバイス、蓄積管、出荷パッケージ、又は他の同様の構造物を保持する空のＪＥＤＥＣトレイであってよい。
【００５４】
プログラマ１１２は、デバイスアダプタ２０８を含んでよい。デバイスアダプタ２０８は、プログラマブルデバイス１２８に結合される為の機構である。
【００５５】
デバイスアダプタ２０８は、様々な構成を有してよい。例えば、デバイスアダプタ２０８は、チップなどのプログラマブルデバイス１２８をマウントする為のデスティネーションソケット２１０を含んでよい。これらのソケットは、プログラマブルデバイス１２８を保持し、これとインタフェースする為の機構である。デバイスアダプタ２０８は、様々なソケット構成に対応する為に、モジュール式であってプログラマ１１２から取り外し可能であってよい。デバイスアダプタ２０８は、プログラマ１１２と接続される為のラッチ機構（図示せず）を含んでよい。
【００５６】
デスティネーションソケット２１０は、プログラマブルデバイス１２８を保持することが可能である。デスティネーションソケット２１０は、プログラマブルデバイス１２８に対する新しい情報の読み書きに使用されてよい。
【００５７】
プログラマ１１２は、デバイス装着ユニット２１２を含んでよい。デバイス装着ユニット２１２は、プログラマブルデバイス１２８を１つのデスティネーションソケット２１０に配置する為の機構である。
【００５８】
デバイス装着ユニット２１２は、様々な様式で実装されてよい。例えば、デバイス装着ユニット２１２は、ロボットアーム、ピックアンドプレース機構、又はこれらの組み合わせであってよい。デバイス装着ユニット２１２はレール式の配置システムとして説明されている場合があるが、当然のことながら、１つのプログラマブルデバイス１２８をデスティネーションソケット２１０に配置することが可能な任意のシステムが使用されてよい。
【００５９】
デバイス装着ユニット２１２は、ブランクである１つ以上のプログラマブルデバイス１２８を入力デバイスレセプタクル２０６から取り出してよい。デバイス装着ユニット２１２は、プログラマブルデバイス１２８をデバイスアダプタ２０８のデスティネーションソケット２１０に移してよい。
【００６０】
プログラマブルデバイス１２８がデバイスアダプタ２０８と係合して固定されると、デバイスプログラミングプロセスが開始されてよい。プログラマ１１２は、１つのデスティネーションソケット２１０にあるプログラマブルデバイス１２８に情報のローカルコピーをプログラムしてよい。例えば、プログラミング情報のローカルコピーは、あらかじめプログラムされたマスタデバイスにあってよく、ローカル記憶装置内のファイルにあってよく、或いは、リモートサーバにあってよい。
【００６１】
プログラミングが完了すると、デバイス装着ユニット２１２は、プログラムされたプログラマブルデバイス１２８を出力デバイスレセプタクル２１４に移してよい。デバイス装着ユニット２１２は、プログラマブルデバイス１２８のうちのエラーがあったものを不合格ビン（図示せず）に移してよい。
【００６２】
プログラマ１１２は、プログラマ識別表示２１６を含んでよい。プログラマ識別表示２１６は、そのプログラマ１１２の一意の値である。プログラマ識別表示２１６は、プログラマ１１２を識別する為に使用されてよい。プログラマ識別表示２１６は、デバイスをプログラムするのにどのプログラマ１１２が使用されたかを示す為に、各プログラマブルデバイス１２８のデバイス識別表示に組み込まれてよい。
【００６３】
次に図３を参照すると、１つの信頼できるデバイス１３０の例が示されている。信頼できるデバイス１３０は、セキュア記憶ユニット３２６及びセキュア実行ユニット３２４を有するコンポーネントである。信頼できるデバイス１３０は、セキュア実行ユニット３２４にあるセキュアコードを実行して、セキュア記憶ユニット３２６にあるセキュアデータに対する演算を実施することが可能なアクティブコンポーネントである。
【００６４】
信頼できるデバイス１３０は、図１のセキュアプログラミングシステム１００によってプロビジョニングされてセキュリティ情報を含むことが可能である。例えば、信頼できるデバイス１３０は、デバイス識別表示３０２と、セキュリティアルゴリズム３０４と、セキュリティ証明書３０６と、鍵ペア１５０（各ペアは秘密鍵１５２及び公開鍵１５４を有する）とを含んでよい。
【００６５】
一事例では、セキュリティ鍵１０６は、公開鍵暗号システム用の鍵ペア１５０を１つ以上含んでよい。セキュリティ情報は、１つの鍵ペア１５０の公開鍵１５４で暗号化されてよく、秘密鍵１５２で復号されてよい。しかしながら、当然のこととして、本システムは様々なセキュリティパラダイムを利用してよく、そのようなセキュリティパラダイムとして、対称暗号化、非対称暗号化、データ暗号化規格（ｄａｔａ  ｅｎｃｒｙｐｔｉｏｎ  ｓｔａｎｄａｒｄ）（ＤＥＳ）、ハッシュコード、ＰＧＰ、又は他の暗号システムが挙げられる。別の例では、セキュリティ鍵１０６の異なる２つのセットを使用するデジタル署名を実現する為に鍵ペア１５０が使用されてよい。デジタル署名の例では、メッセージ又はペイロードが、第１の要素の秘密鍵１５２と第２の要素の公開鍵１５４を使用して暗号化されてよい。結果として暗号化されたメッセージは、第１の要素の公開鍵１５４と第２の要素の秘密鍵１５２を使用して復号されてよい。メッセージが正常に復号されれば、そのメッセージが第１の要素によって暗号化されたことになり、従って、デジタル署名が確立されたことになる。
【００６６】
デバイス識別表示３０２は、各信頼できるデバイス１３０を個別に一意識別できるデータ値である。例えば、デバイス識別表示３０２は、シリアル番号、マーカ、セキュリティコード、又はこれらの組み合わせを含んでよい。
【００６７】
セキュリティアルゴリズム３０４は、セキュアコード要素３１４である。セキュリティアルゴリズム３０４は、信頼できるデバイス１３０に対するセキュリティ機能性を制御する為のアプリケーションプログラミングインタフェースを外部システムに提供することが可能である。セキュリティアルゴリズム３０４は、各信頼できるデバイス１３０に合わせてカスタマイズ可能である。例えば、セキュリティアルゴリズム３０４は、コード要素３１４を含んでよく、例えば、ソースコード、実行可能コード、ライブラリモジュール、リンクモジュール、構成ファイル、初期化データ、ハードウェア制御コード、又はこれらの組み合わせを含んでよい。
【００６８】
セキュリティ証明書３０６は、１つの信頼できるデバイス１３０に関連付けられたセキュリティオブジェクトである。セキュリティ証明書３０６は、デバイスに特定の信頼の基点が埋め込まれていることを証明するように、あらかじめプログラムされてよい。セキュリティ証明書３０６は、その中に１つ以上の公開鍵１５４を有してよい。セキュリティ証明書３０６は、鍵ペア１５０、図１のセキュリティ鍵１０６、暗号化されたパスワード、又はこれらの組み合わせのようなセキュリティデータを含んでよい。
【００６９】
セキュリティ証明書３０６は、セキュアに記憶されたデータ要素であってよい。例えば、セキュリティ証明書３０６は、使用前に復号されなければならない暗号化されたセキュリティ情報であってよい。
【００７０】
鍵ペア１５０は、データの暗号化及び復号に使用される２つ以上の別々のセキュリティ鍵を有するセキュリティ要素であってよい。例えば、鍵ペア１５０は、秘密鍵１５２と公開鍵１５４を含んでよい。公開鍵１５４で暗号化されたセキュリティ情報は、秘密鍵１５２で復号されてよい。
【００７１】
鍵ペア１５０は、様々な様式で実装されてよい。例えば、鍵ペア１５０は、セキュリティのレベルを変更する為に様々な鍵長を有するように構成されてよい。秘密鍵１５２及び公開鍵１５４は、同じ文字長又は異なる文字長で実装されてよい。
【００７２】
鍵ペア１５０は公開鍵暗号システムの文脈で説明されているが、当然のことながら、鍵ペア１５０は、他の暗号化パラダイムを実装する為に使用されてもよい。例えば、鍵ペア１５０は、対称暗号化、非対称暗号化、規格に基づく暗号化、ハッシュアルゴリズム、又は他の任意の暗号化システムに使用されてよい。
【００７３】
信頼できるデバイス１３０は、セキュリティモジュールとして実装されるセキュリティ機能性を含んでよい。例えば、信頼できるデバイス１３０は、識別表示モジュール３１６、認証モジュール３２０、暗号モジュール３１８、及びコード署名モジュール３２２を含んでよい。
【００７４】
識別表示モジュール３１６は、１つのプログラマブルデバイス１２８の識別表示を検証することが可能である。識別表示モジュール３１６は、１つのプログラマブルデバイス１２８のデバイス識別表示３０２を受け取って、そのデバイス識別表示３０２が正しいかどうかを判定することが可能である。例えば、デバイス識別表示３２０は、既知のデバイスのリストと比較されてよく、或いはチェックサムに対して比較されてよく、或いは計算アルゴリズムを使用して比較されてよく、或いは同様の手法であってよい。
【００７５】
認証モジュール３２０は、１つのプログラマブルデバイス１２８の１つ以上のプロパティを認証することが可能である。認証モジュール３２０は、セキュリティパラメータに１つ以上のセキュリティ鍵１０６が含まれるデバイス識別表示３０２を受け取って、与えられたセキュリティパラメータが有効かどうかを判定することが可能である。認証モジュール３２０は、デバイス識別表示３０２の妥当性検査にも使用可能である。
【００７６】
セキュリティパラメータの妥当性の判定は、様々な様式で行われてよい。例えば、セキュリティパラメータの妥当性は、１つの信頼できるデバイス１３０が利用できる１つのセキュリティ鍵を使用してセキュリティパラメータが正常に復号されれば、確認されものとしてよい。別の例では、セキュリティパラメータの妥当性は、１つのセキュリティパラメータを復号し、これを、１つの信頼できるデバイス１３０に記憶されている所定値と比較することによって確認されてよい。
【００７７】
暗号モジュール３１８は、暗号演算を実施するユニットである。暗号モジュール３１８は、暗号化及び復号などの計算集約型の演算を実施する為のインタフェースを提供することが可能である。他のセキュリティモジュールは、セキュリティ機能性を実現する為に暗号モジュール３１８と結合されてよい。
【００７８】
暗号モジュール３１８は、様々な様式で実装されてよい。例えば、暗号モジュール３１８は、ハードウェア、ソフトウェア、又はこれらの組み合わせを含んでよい。暗号モジュール３１８は、他のセキュリティモジュールが必要な暗号機能を実施することを可能にする標準化されたインタフェースを提供することが可能である。
【００７９】
コード署名モジュール３２２は、コード要素３１４をセキュリティ保護するユニットである。コード署名モジュール３２２は、コード要素の暗号化、コード要素の復号、及びコード要素の実行の制御を行うことが可能である。コード署名モジュール３２２は、１つの信頼できるデバイス１３０に対して１つのコード要素３１４が実行可能であることを、セキュリティ情報がそのコード要素３１４に関連付けられていることを検証することによって確認する為に使用されてよい。
【００８０】
一事例では、各コード要素３１４は、コード要素３１４の実行が許可されている信頼できるデバイス１３０のモデル番号を示す実行パラメータを含んでよい。コード署名モジュール３２２は、実行パラメータの妥当性を検査すること、このパラメータを１つの信頼できるデバイス１３０のモデル番号情報と比較すること、並びにこれら２つの値が一致した場合のみコード要素３１４の実行を許可することに使用されてよい。これは、コード要素３１４の動作を、特定のハイエンド電話又は他の特定のデバイスに限定することに用いられてよい。
【００８１】
信頼できるデバイス１３０の利点の１つとして、セキュリティ情報を内部で識別及び認証することによってセキュリティのレベルを高めることが可能な点が挙げられる。信頼できるデバイス１３０は、セキュア記憶ユニット３２６に記憶されているセキュリティ鍵１０６を使用してセキュリティ情報の妥当性を検査することが可能である。
【００８２】
信頼できるデバイス１３０は、信頼できるデバイス１３０がセキュアである場合の信頼の尺度を示すことが可能である。信頼できるデバイス１３０は、様々な構成を有してよい。例えば、信頼できるデバイス１３０は、システム識別表示、認証機構、暗号化及び復号の機能性、実行可能ファイルを保護するコード署名、信頼できる記憶装置、及び信頼できる実行環境を有してよい。
【００８３】
システム識別表示は、ハードウェアコンポーネント及びソフトウェアコンポーネントを識別又は記述する要素を含んでよい。信頼できるデバイス１３０は、その識別情報及び他のプロパティをセキュアに認証することが可能であってよい。信頼できるデバイスは、情報をセキュアに暗号化及び復号することが可能でなければならない。信頼できるデバイス１３０は、信頼できるコードを認証することが可能でなければならない。信頼できるデバイスは、セキュアな記憶装置及び実行機能を有する必要がある。
【００８４】
セキュアプログラミングシステム１００は、信頼の基点のシステムを実装することが可能でなければならない。信頼の基点（ＲｏＴ）は、信頼できるコンピューティング環境における、本システムによって常に信頼される一連の機能である。例えば、信頼の基点は、信頼できるコンピューティングプラットフォームの暗号プロセスを制御する、独立したセキュアコンピューティングエンジンとして動作可能である。或いは、デバイスは、信頼の基点を、元来信頼されているハードウェアコンポーネント及びソフトウェアコンポーネントとして実装してよい。これらは、 セキュア・バイ・デザインであり、ハードウェアの形で実装されるか、ハードウェアによって保護されてよい。これらは、ソフトウェアの測定又は検証、暗号鍵の保護、デバイス認証の実施などのセキュリティクリティカルな機能を実施することに使用されてよい。
【００８５】
信頼の基点は、様々なセキュリティ機能性を提供することが可能であり、そのような機能性として、オンザフライ暗号化、セキュアデータの改ざんの検出及び報告、アクティブな改ざん試行の検出、デジタル権利管理、及び他のセキュリティ機能が挙げられる。
【００８６】
モバイルハードウェア空間にセキュアな動作を実装することは、デバイスへの物理的アクセスに起因するリスクが高まることから困難である。そのようなセキュアなデバイスは、セキュアな動作を保証する為に、保護されるデータ及びソフトウェアの近くでハードウェアが動作することが必要である。
【００８７】
次に図４を参照すると、１つのデータデバイス１３２の例が示されている。データデバイス１３２は、セキュア記憶ユニット３２６を有するコンポーネントである。データデバイス１３２は、セキュア記憶ユニット３２６にセキュアデータを記憶することと、図１の信頼できるデバイス１３０の１つによってアクセスされた場合に、記憶されているデータへのアクセスを提供することと、を行うことが可能なパッシブコンポーネントである。
【００８８】
データデバイス１３２は、図１のセキュアプログラミングシステム１００によってプロビジョニングされてセキュリティ情報を含むことが可能である。例えば、データデバイス１３２は、デバイス識別表示３０２と、セキュリティアルゴリズム３０４と、図３のセキュリティ証明書３０６と、鍵ペア１５０（各ペアは秘密鍵１５２及び公開鍵１５４を有する）とを含んでよい。この場合、セキュア記憶ユニット３２６内のデータには、データデバイス１３２内から内部的にアクセスされてよい。
【００８９】
セキュア記憶ユニット３２６は、ライトワンスデータ領域として使用されてよい。セキュア記憶ユニット３２６に情報がプログラムされてよく、その後、セキュア記憶ユニット３２６は、データデバイス１３２の外側からセキュア記憶ユニット３２６内のデータへのアクセスを排除するように処理されてよい。
【００９０】
一事例では、１つのデータデバイス１３２がフラッシュメモリデバイスであってよい。フラッシュメモリデバイス内では、フラッシュメモリは様々なブロックにパーティショニングされてよい。幾つかのブロックは、汎用メモリ空間を提供することに使用されてよい。他の幾つかのブロックは、プライベートとして、フラッシュメモリドライブの外側からはアクセスできない情報を記憶することに使用されるように構成されてよい。プライベートブロックは、セキュリティ記憶ユニット３２６を形成することに使用されてよい。
【００９１】
別の例では、セキュア記憶ユニット３２６は、１つのデータデバイス１３２における、セキュリティヒューズによって保護されている専用メモリ領域であってよい。データはセキュア記憶ユニット３２６に書き込まれてよく、その後、セキュリティヒューズをブローすることによって外部アクセスが排除されてよい。
【００９２】
各データデバイス１３２が、信頼できる証明書４０２を含んでよい。信頼できる証明書４０２は、他のセキュリティパラメータを含んでよいデータ構造体である。例えば、信頼できる証明書４０２は、デバイス識別表示３０２、セキュリティアルゴリズム３０４、及び鍵ペア１５０を含んでよい。
【００９３】
次に図５を参照すると、デバイス識別表示３０２の例が示されている。デバイス識別表示３０２は、図１のプログラマブルデバイス１２８、図１のセキュアプログラミングシステム１００、図１のプログラマ１１２、又はこれらの組み合わせのいずれかを一意識別することに使用可能なデータ構造体である。デバイス識別表示３０２は、データデバイス１３２及び信頼できるデバイス１３０を含むプログラマブルデバイス１２８を記述する為に使用されてよい。
【００９４】
デバイス識別表示３０２は、様々な構成を有してよい。例えば、デバイス識別表示３０２は、入ってくる信頼の基点５０４、シリアル番号マーカ５１２、ファームウェアマーカ５０６、製造マーカ５１０、製品マーカ５０８、動作マーカ５１４、相手先ブランド製造者マーカ５１６（ＯＥＭマーカ）、鍵ペア１５０、又は同様のマーカを含んでよい。
【００９５】
入ってくる信頼の基点５０４はセキュリティ要素である。入ってくる信頼の基点５０４は、製造時又はプログラミング時に１つのプログラマブルデバイス１２８にプログラムされてよい。例えば、入ってくる信頼の基点５０４は、シリアル番号及び鍵値であってよい。別の例では、入ってくる信頼の基点５０２は、埋め込み識別子であってよく、例えば、シリコン作成時に１つのプログラマブルデバイス１２８に埋め込まれるデバイス識別子であってよい。
【００９６】
シリアル番号マーカ５１２は、１つのプログラマブルデバイス１２８のシリアル番号を含んでよいセキュリティ要素である。デバイス識別表示３０２は、１つ以上のシリアル番号マーカ５１２を含んでよい。
【００９７】
ファームウェアマーカ５０６は、１つのプログラマブルデバイス１２８に使用されているファームウェアを示すか識別することが可能なセキュリティ要素である。ファームウェアマーカ５０６は、バージョン番号、計算されたチェックサム値、部分ハッシュ値又は完全ハッシュ値、文字列識別子、数値識別子、又はこれらの組み合わせを含んでよい。例えば、１つのプログラマブルデバイス１２８が、ファームウェアをインストールされた回路基板であってよい。ファームウェアマーカ５０６は、個々のファームウェア要素のそれぞれのバージョン番号を識別することが可能である。ファームウェアのバージョン情報は、プログラマブルデバイス１２８内の図３のコード要素３１４同士の間の相互運用性を調整することに使用されてよい。別の例では、ファームウェアマーカ５０６は、計算されたハッシュチェックサムを含んでよく、例えば、ＭＤ５ハッシュ又はフィンガプリントを含んでよい。ハッシュチェックサムを使用して、ハッシュチェックサムを、ファームウェアの現行バージョンに対して計算されたハッシュと比較することにより、ファームウェアのデータ保全性を検証することが可能である。差があった場合は、ファームウェアが修正されていることになる。
【００９８】
製造マーカ５１０は、１つ以上の製造プロパティを示すことが可能なセキュリティ識別子である。例えば、１つのプログラマブルデバイス１２８は、位置情報、プログラマ識別表示、プログラミングユニット識別表示、製造時刻情報、製造場所情報、時間窓、製造実行システムの識別表示情報、工場識別表示、ベンダ識別表示、製造設備情報、又は製造関連パラメータなどの製造マーカ５１０を含んでよい。
【００９９】
製品マーカ５０８は、プログラマブルデバイス１２８とともに使用される製品を示すことが可能なセキュリティ要素である。製品マーカ５０８は、関連する製造者、ブランディング情報、製品ライン情報、モデル情報、又は他の製品関連パラメータを含んでよい。
【０１００】
動作マーカ５１４は、プログラマブルデバイス１２８の動作プロパティを示すことが可能なセキュリティ要素である。動作マーカ５１４は、動作電圧、電圧パターン、電流レベル、電力ドロー、加熱因子、クリティカル動作周波数、動作シーケンス情報、又は動作パラメータを含んでよい。
【０１０１】
ＯＥＭマーカ５１６は、プログラマブルデバイス１２８を使用できる相手先ブランド製造者又は関連する請負製造者を示すことが可能なセキュリティ要素である。ＯＥＭマーカ５１６は、製造者識別表示５１８、ライセンス情報、時間窓、許可された場所、許可された工場、製品ロットサイズ、シリアル番号範囲、又は他のＯＥＭ関連パラメータを含んでよい。
【０１０２】
デバイス識別表示３０２は、プログラマブルデバイス１２８のセキュリティ情報を含む多変数データ構造体である。デバイス識別表示３０２のデータ要素は、デバイス識別表示３０２内で個別に暗号化されてよい。デバイス識別表示３０２自体が暗号化されてよい。デバイス識別表示３０２は、デバイス識別表示３０２を形成するデータ要素、並びにデバイス識別表示３０２自体を保護する為に使用される、暗号化などのセキュリティ機構の程度の両方に関して、それぞれのプログラマブルデバイス１２８に固有であってよい。
【０１０３】
デバイス識別表示３０２の多くの利点のうちの１つは、デバイス識別表示３０２内の特定のデータ要素へのアクセスが、その必要な要素だけを復号することによって可能になることである。デバイス識別表示３０２と個々のデータ要素の両方を暗号化することにより、セキュリティの粒度を高めることが可能である。
【０１０４】
次に図６を参照すると、セキュアプログラミングシステム１００の例示的ブロック図が示されている。セキュアプログラミングシステム１００は、幾つかのセキュアオブジェクトを含み、例えば、第１のセキュアオブジェクト６０２及び第２のセキュアオブジェクト６０４を含む。第１のセキュアオブジェクト６０２は、第２のセキュアオブジェクト６０４とインタフェース又は通信してよい。
【０１０５】
これらのセキュアオブジェクトは、不正な傍受又は複製からの保護の為のセキュリティ機構又はセキュリティプロトコルを有する任意のハードウェアオブジェクト又はソフトウェアオブジェクトを表す。例えば、セキュアオブジェクトは、１つのデータデバイス１３２、１つの信頼できるデバイス１３４、電子コンポーネント、電子デバイス、ブートローダ、ファームウェア（ＦＷ）、オペレーティングシステム（ＯＳ）、ソフトウェアアプリケーション、ハードウェアプログラマ、周辺デバイス、ウェブサイト、機械等であってよく、これらに限定されない。
【０１０６】
第１のセキュアオブジェクト６０２は、識別表示モジュール３１６、認証モジュール３２０、暗号モジュール３１８、及びコード署名モジュール３２２とインタフェースしてよい。説明の為に、第２のセキュアオブジェクト６０４は、第１のセキュアオブジェクト６０２とだけ接続されているように示されているが、第２のセキュアオブジェクト６０４も、識別表示モジュール３１６、暗号モジュール３１８、認証モジュール３２０、コード署名モジュール３２２の任意の組み合わせと接続されてよい。第１のセキュアオブジェクト６０２又は第２のセキュアオブジェクト６０４をセキュリティ侵害から保護する為に、識別表示モジュール３１６、暗号モジュール３１８、認証モジュール３２０、コード署名モジュール３２２、他の任意の、セキュアプログラミングシステム１００のユニット、モジュール、又は機能の組み合わせが使用され、これらに限定されない。
【０１０７】
識別表示モジュール３１６は、セキュアオブジェクトを不正なアクセスから保護する為に、セキュアオブジェクトの識別情報を生成する。識別表示モジュール３１６は、識別表示トークン６２４（ＩＤトークン）を抽出する。ＩＤトークン６２４は、セキュアオブジェクトへのアクセスが許可される前に識別情報を検証することに用いられる情報を含む。ＩＤトークン６２４に含まれてよいものは、ユーザ識別表示、デバイスのシリアル番号、デバイスの識別表示等であってよく、これらに限定されない。
【０１０８】
ＩＤトークン６２４は、識別表示モジュール３１６によって抽出されてよく、信頼の基点のコード６２０（ＲｏＴコード）及び信頼の基点のデータ６２２（ＲｏＴデータ）を含む（これらに限定されない）任意のセキュア情報又はセキュア機構を使用して抽出されてよい。例えば、ＲｏＴデータ６２２は、デバイスのデジタル生産地証明書に関連付けられた情報を表してよい。
【０１０９】
本明細書で言及されている信頼の基点（ＲｏＴ）という用語は、ハードウェアコンポーネント、ソフトウェアコンポーネント、又はハードウェアコンポーネントとソフトウェアコンポーネントとの組み合わせを含む、信頼できる、又はセキュアなコンピューティングモジュールにおける一連の機能を意味する。例えば、これらの機能は、ブートファームウェア、ハードウェア初期化ユニット、クロスチェックコンポーネント／チップ等の形で実装されてよく、これらに限定されない。又、例えば、これらの機能は、暗号プロセッサの動作を制御する独立したコンピューティングエンジンを使用して実装されてよく、これに限定されない。
【０１１０】
ＩＤトークン６２４は、ＲｏＴコード６２０を使用してＲｏＴデータ６２２から抽出されてよい。ＩＤトークン６２４は、暗号学的に保護されてよく、従って、ＲｏＴコード６２０によってのみ復号されてよい。ＩＤトークン６２４は固有であってよく、従って、各セキュアオブジェクトは固有の識別表示を有し、どのセキュアオブジェクトもその識別表示が別のセキュアオブジェクトと同じになることはない。
【０１１１】
ＲｏＴコード６２０は、デバイスのソースの識別、又はコンテンツのデコードに使用可能なデータを解読する為に使用される命令又はコマンドを含む。ＲｏＴデータ６２２は、保護されていて、ＲｏＴコード６２０でのみデコード可能な情報を含む。
【０１１２】
ＲｏＴコード６２０及びＲｏＴデータ６２２は、任意のセキュアな機構によって供給又は生成されてよい。例えば、ＲｏＴコード６２０及びＲｏＴデータ６２２は、デバイスのプログラミング又は構成の途中にデバイスのセキュア記憶ユニットにプログラムされてよい。
【０１１３】
又、例えば、ＲｏＴコード６２０及びＲｏＴデータ６２２は、セキュアプログラミングシステム１００だけがＲｏＴコード６２０及びＲｏＴデータ６２２の受け取りを許可及び有効化されているセキュアな方式で、ホストサーバ又はホストシステムからセキュアプログラミングシステム１００に送られてよい。更に、例えば、ホストサーバ又はホストシステムは、図１のセキュリティマスタシステム１０４を含んでよく、セキュリティマスタシステム１０４が図１のセキュリティ鍵１０６を識別又は認証の為にセキュアプログラミングシステム１００に送ることにより、セキュアプログラミングシステム１００がセキュリティマスタ１０４からの情報の受け取り又は復号を行うことが可能になりうる。
【０１１４】
一例として、セキュア記憶ユニットは、ワンタイムプログラマブルメモリ、又は他の任意の、許可されたユーザ又はデバイスにのみ知られている記憶ユニットを含んでよく、これらに限定されない。別の例として、セキュア記憶ユニットは、承認された情報又は識別表示がある場合のみアクセス可能であって、これがないと許可を拒否される記憶装置又はメモリを含んでよく、これらに限定されない。
【０１１５】
例えば、ＲｏＴコード６２０及びＲｏＴデータ６２２は、デバイス（例えば、セキュアオブジェクト）が本番の環境又はシステムに組み込まれるか、そこで運用される前のデバイスのプログラミング時又は構成時に、デバイスにプリプログラムされてよい。又、例えば、本番の環境又はシステムは、ポータブルデバイス、コンピュータ、サーバ、電子回路基板等を含んでよく、これらに限定されない。
【０１１６】
認証モジュール３２０は、識別表示トークン６２４がセキュアオブジェクトへのアクセスを許可されているかどうかを検証することに使用されてよい。識別表示モジュール３１６がＩＤトークン６２４を抽出した後、認証モジュール３２０は、セキュアオブジェクトが、許可されたシステムと通信してセキュア情報の送受信を行うことが可能な有効オブジェクトかどうかを識別する為に、ＩＤトークン６２４を検証する。例えば、１つのＩＤトークン６２４が有効でないと、セキュアオブジェクトは、図１のプログラマ１１２と情報を交換することを許可されない場合がある。
【０１１７】
セキュアオブジェクトのＩＤトークン６２４が有効であることを認証モジュール３２０が確認した後、認証モジュール３２０は、１つのＩＤトークン６２４と、鍵トークン６２８と、暗号トークン６２６との組み合わせを生成してよい。鍵トークン６２８は、ＩＤトークン６２４の認証に使用される情報を含む。暗号トークン６２６は、情報のセキュリティ又はデータの機密性の為に情報を暗号学的にエンコード又はデコードすることに使用される情報を含む。
【０１１８】
１つ以上の実施形態では、ＩＤトークン６２４、鍵トークン６２８、又は暗号トークン６２６は、ＲｏＴコード６２０を使用してＲｏＴデータ６２２から生成されてよい。１つ以上の実施形態では、ＩＤトークン６２４、鍵トークン６２８、又は暗号トークン６２６は、暗号学的に保護されてよく、従って、ＲｏＴコード６２０によってのみ復号されてよい。
【０１１９】
暗号モジュール３１８は、セキュアオブジェクト同士の間で、或いはセキュアオブジェクトと外部システムとの間で交換されるセキュア情報の為のデータの暗号化及び復号を行うことが可能である。セキュアオブジェクトとの間でセキュア情報を交換することが可能な外部システムは、プログラマ１１２、セキュリティマスタシステム１０４、ホストシステム等であってよく、これらに限定されない。
【０１２０】
１つ以上の実施形態では、識別表示モジュール３１６がＩＤトークン６２４を抽出した後、又は認証モジュール３２０がＩＤトークン６２４の妥当性を確認した後に、暗号モジュール３１８がＩＤトークン６２４、鍵トークン６２８、及び暗号トークン６２６を生成してよい。暗号トークン６２６は、暗号モジュール３１８が、ＲｏＴデータ６２２から情報をデコードする為にＲｏＴコード６２０を使用して生成してよい。
【０１２１】
１つ以上の実施形態では、暗号モジュール３１８は、ＲｏＴデータ６２２から他の情報を更にデコードする為に、暗号トークン６２６を使用して、ＩＤトークン６２４又は鍵トークン６２８を生成してよい。一実施形態では、情報のセキュリティ又はデータの機密性を高める保護レベルが複数ある暗号モジュール３１８を使用すれば、データ侵害の排除が大幅に簡略化される。
【０１２２】
１つ以上の実施形態では、暗号モジュール３１８は、対称鍵暗号、公開鍵暗号等であってこれらに限定されない暗号方法を含んでよい。例えば、暗号モジュール３１８は、送り側と受け側の両方が、所定のアルゴリズムで計算されてよい同じ鍵又は別々の鍵を共有することが可能な暗号方法を含んでよい。
【０１２３】
一例として、暗号方法は、ブロック暗号方法、暗号ハッシュ関数等であってよく、これらに限定されない。別の例として、暗号方法は、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）、トリプルＤＥＳ、ＭＤ４メッセージダイジェストアルゴリズム、ＭＤ５アルゴリズム、セキュアハッシュアルゴリズム１及び２等であってよく、これらに限定されない。
【０１２４】
一例として、暗号方法は、異なる（しかし数学的に関連する）２つの鍵、即ち、公開鍵及び秘密鍵が使用されてよい公開鍵（非対称鍵）暗号であってよく、これに限定されない。別の例として、一方の鍵（例えば、秘密鍵）を他方の鍵（例えば、公開鍵）から計算することが（たとえこれらが関連し合っていても）コンピュータ的に実行不可能な場合がある公開鍵システムが構築されてよい。公開鍵及び秘密鍵は両方とも、相互に関係のあるペアとして秘密裏に生成されてよい。
【０１２５】
例えば、公開鍵暗号システムでは、公開鍵が自由に配布されてよく、その一方で、ペアを成す秘密鍵が秘密のままであってよい。公開鍵暗号化システムでは、公開鍵が暗号化に使用されてよく、秘密鍵が復号に使用されてよい。
【０１２６】
コード署名モジュール３２２は、システム間又はデバイス間で交換されるコード情報の保全性を検証する。コード署名モジュール３２２は、交換された情報の内容が改変又は改ざんされていないかどうかを検証することが可能である。
【０１２７】
例えば、コード署名モジュール３２２は、ソフトウェアの作成者又は生成者を確認する為に実行可能ファイル又はスクリプトにデジタル署名を行うプロセスを含んでよく、実行可能コード又はスクリプトが改変又は破損されていないことを検証する。又、例えば、コードが署名されてから改変又は破損されたかどうかを、暗号ハッシュ、チェックサム等（これらに限定されない）によって検証されてよい。
【０１２８】
１つ以上の実施形態では、識別表示モジュール３１６がＩＤトークン６２４を抽出した後、又は認証モジュール３２０がＩＤトークン６２４の妥当性を確認した後に、コード署名モジュール３２２がＩＤトークン６２４、鍵トークン６２８、及び暗号トークン６２６を生成してよい。暗号トークン６２６は、コード署名モジュール３２２が、ＲｏＴデータ６２２から情報をデコードする為にＲｏＴコード６２０を使用して生成してよい。
【０１２９】
１つ以上の実施形態では、コード署名モジュール３２２は、ＲｏＴデータ６２２から他の情報を更にデコードする為に、暗号トークン６２６を使用して、ＩＤトークン６２４又は鍵トークン６２８を生成してよい。一実施形態では、情報のセキュリティ又はデータの機密性を高める保護レベルが複数あるコード署名モジュール３２２を使用すれば、データ侵害の排除が大幅に簡略化される。
【０１３０】
セキュアオブジェクト、例えば、第１のセキュアオブジェクト６０２又は第２のセキュアオブジェクト６０４は、セキュア実行エンジン６０６とインタフェースしてよい。セキュア実行エンジン６０６は、セキュアオブジェクトの動作を管理又は制御する機構を含む。セキュア実行エンジン６０６は、セキュア実行ユニット３２４及びセキュア記憶ユニット３２６を含む。
【０１３１】
セキュア実行ユニット３２４は、保護された環境でコード又はコンピュータ命令を実行するブロックである。セキュア実行ユニット３２４が動作する環境は、信頼できる認証済みアプリケーションコードだけが動作可能な大規模且つ広範囲のセキュア環境を作成するという課題に対してフレキシブル且つスケーラブルなソリューションを生成することが可能である。セキュア実行ユニット３２４は、プログラマ１１２及びセキュアオブジェクトがセキュア環境で一緒に動作することを可能にしうる。
【０１３２】
セキュアオブジェクトがエンドユーザの本番環境で動作する前に、セキュアオブジェクトがあらかじめプログラム、構成、テスト、又は認証されていれば、セキュア実行ユニット３２４は、セキュア記憶ユニット３２６によって記憶されている信頼できるコードを実行することが可能である。セキュア実行ユニット３２４によって実行される信頼できるコードは、署名及び認証されてよい。
【０１３３】
セキュア記憶ユニット３２６は、セキュア実行ユニット３２４が実行する信頼できるコードを記憶し、提供する。一実施形態では、セキュア環境は、セキュア実行エンジン６０６により大幅に簡略化され、セキュア実行エンジン６０６は、プログラムコードをセキュア記憶ユニット３２６に記憶し、セキュア実行ユニット３２４を使用してプログラムコードを実行することにより、データ侵害に対して更なるレベルの保護を提供する。
【０１３４】
例えば、セキュアオブジェクトがあらかじめプログラム、構成、テスト、又は認証されていれば、信頼できるコードは、セキュアオブジェクトのセキュア記憶領域又はメモリ領域にあらかじめ記憶されてよい。又、例えば、信頼できるコードは、暗号モジュール３１８が、プログラマ１１２からセキュアオブジェクトに送られた情報を使用してデコードしてよい。
【０１３５】
次に図７を参照すると、セキュアプログラミングシステム１００のブロック図の別の例が示されている。この例の図は、セキュアオブジェクトのプログラミング中のセキュア情報のデータフローを示している。
【０１３６】
例えば、ＩＤ１、ＩＤ２、及びＩＤ３として示されている識別表示トークン６２４は、セキュアオブジェクトのシリアル番号マーカ５１２を含んでよい。シリアル番号マーカ５１２は、各セキュアオブジェクトに割り当てられた一意情報である。セキュアオブジェクトのシリアル番号マーカ５１２は、２つのセキュアオブジェクトが同じシリアル番号マーカを共有することがないように、別のセキュアオブジェクトの別のシリアル番号マーカ５１２と異なってよい。シリアル番号マーカ５１２は、図１のプログラマ１１２によって生成されてよい。各シリアル番号マーカは、プログラマ１１２によって各セキュアオブジェクトに割り当てられてよい。
【０１３７】
図５の入ってくる信頼の基点５０４（Ｉｎ＿ＲｏＴ）は、図２のプログラマ識別表示２１６を含んでよく、これに限定されない。Ｉｎ＿ＲｏＴ５０４で示される入ってくるＲｏＴ５０４は、セキュアオブジェクトのプログラミングの前にあらかじめプログラム又は構成されている情報を含む。１つ以上の実施形態では、あらかじめプログラムされている情報は、セキュアオブジェクト、プログラマ１１２、及びセキュアオブジェクトのプログラミングの為に、複数のアダプタの組み合わせにプログラムされていてよい。例えば、Ｉｎ＿ＲｏＴ５０４は、シリコン製造時にセキュアオブジェクトに埋め込まれるシリアル番号であってよい。
【０１３８】
Ｉｎ＿ＲｏＴ５０４は、ＩＤトークン６２４とは別個であるか異なっていてよい。Ｉｎ＿ＲｏＴ５０４は、セキュアオブジェクトにプログラムされる情報とは異なる、あらかじめプログラムされた情報を含んでよい。
【０１３９】
例えば、Ｉｎ＿ＲｏＴ５０４は、コンポーネントの製造時にコンポーネントに埋め込まれたかプログラムされたシリアル番号又は一意鍵を含んでよく、これらに限定されない。又、例えば、コンポーネントの製造時は、コンポーネントがプログラムされる前の、コンポーネントがシリコンレベル又はシステムレベルで製造されたときであってよく、これに限定されない。
【０１４０】
１つ以上の実施形態では、Ｉｎ＿ＲｏＴ  ５０４は、製造実行システム７０２（ＭＥＳ）によって収集又は入力されてよい。Ｉｎ＿ＲｏＴ５０４は、一意のシステムレベルのＲｏＴを生成する為に、プログラマで生成された一意のＲｏＴ（例えば、ＩＤトークン６２４）と組み合わされてよい。Ｉｎ＿ＲｏＴ５０４は、コンポーネントの製造時にコンポーネントにあらかじめプログラムされているデジタル生産地証明書からの情報を含んでよい。
【０１４１】
Ｉｎ＿ＲｏＴ５０４は、Ｐ１及びＰ２として示される任意の数の製造マーカ５１０を含んでよい。製造マーカ５１０は、コンポーネントの製造時に、コンポーネントに関連付けられた情報を含む。例えば、製造マーカ５１０は、コンポーネントＩＤ、プログラマＩＤ、コンポーネントの製造場所、コンポーネントの製造日時等を含んでよく、これらに限定されない。
【０１４２】
製造実行システム７０２は、製品の品質を管理する目的で製造時に使用されるコンピュータシステムである。ＭＥＳ７０２は、原材料が完成品に変わるまでを追跡して文書化することが可能である。ＭＥＳ７０２は、生産高を増やす為に工場の作業場における現在の状況をどのように最適化できるかについての情報を提供することが可能である。ＭＥＳ７０２は、生産工程の複数の要素（例えば、投入量、人員、機械、サポートサービス等）の管理を可能にする為にリアルタイムで働く。
【０１４３】
１つ以上の実施形態では、ＭＥＳ７０２は、プログラマブルデバイス１２８をプログラムする為に、Ｉｎ＿ＲｏＴ５０４をＩＤトークン６２４と一緒に受け取ってよい。Ｉｎ＿ＲｏＴ５０４及びＩＤトークン６２４は、セキュアオブジェクトのデバイス識別表示３０２を生成する為に使用されてよい。デバイス識別表示３０２は、一意であって、１つのデバイス又はセキュアオブジェクトにのみ関連付けられている情報を含む。
【０１４４】
デバイス識別表示３０２は、システム、例えば、第１の基板７１２又は第２の基板７１４にプログラムされてよい一意情報を含んでよい。第１の基板７１２又は第２の基板７１４は、幾つかのセキュアオブジェクトがシステム内に集められて相互接続されている、基板レベルのシステムである。
【０１４５】
第１の基板７１２は、暗号用のシステム公開鍵１５４を含んでよい。システム公開鍵１５４は、公開鍵暗号化システム用として第１の基板７１２に実装されてよい。システム公開鍵１５４は、図１の１つの鍵ペア１５０の一部であってよい。セキュリティ情報は、セキュアオブジェクトが図１の１つの鍵ペア１５０の公開鍵１５４を使用して暗号化してよく、第１の基板７１２が秘密鍵１５２を使用して復号してよい。
【０１４６】
第１の基板７１２は、システム公開鍵１５４を使用して、セキュア情報を暗号化してセキュアオブジェクトに送ってよく、セキュアオブジェクトは、暗号化された情報を、秘密鍵１５２を使用して復号してよい。システム公開鍵１５４は第１の基板７１２用として説明されているが、当然のことながら、システム公開鍵は第２の基板７１４に実装されてもよい。
【０１４７】
システム１００は、本明細書に記載の機能性を実現するように構成される、多数の可能なコンポーネント構成のうちの１つを示しているに過ぎない。より少ないコンポーネント、より多くのコンポーネント、又は別のコンポーネントを含む別の構成も可能であり、コンポーネント間の動作分担は、構成に応じて様々であってよい。例えば、実施形態によっては、幾つかのセキュリティモジュールが省略されてよく、他のいずれかのコンポーネントがその省略されたコンポーネントの代用として頼りにされてよい。別の例として、一実施形態では、システム１００は、複数のシリアル番号又は他のシステム識別子を更に含んでよい。
【０１４８】
次に図８を参照すると、１つの信頼できるデバイス１３０をプロビジョニングする例が示されている。プロビジョニングプロセスでは、プログラマブルデバイス１２８にセキュリティデータをプログラムし、それらの信頼できるデバイス１３０を別の１つの信頼できるデバイス１３０に関連付けることが可能である。更に、プロビジョニングプロセスでは、それらの信頼できるデバイス１３０をセキュアプログラミングシステム１００に関連付けることが可能である。
【０１４９】
セキュアプログラミングシステム１００は、セキュアプログラミングシステム１００の公開鍵１５４を使用して１つ以上のシリアル番号マーカ５１２をエンコードし、その暗号化された値をプログラマブルデバイス１２８にプログラムすることが可能である。例えば、プログラマブルデバイス１２８は、フィールドプログラマブルゲートアレイ８０４、プログラマブル中央処理ユニット８０６（ＣＰＵ）、エンベデッドマルチメディアメモリコントローラ８０８（ｅＭＭＣ）、マイクロＣＰＵ８１０、又は同様のデバイスであってよい。
【０１５０】
従って、各プログラマブルデバイス１２８は、セキュアプログラミングシステム１００に関連付けられた図１の秘密鍵１５２でのみ復号可能な１つのシリアル番号マーカ５１２を有してよい。一事例では、シリアル番号マーカ５１２は、セキュアプログラミングシステム１００のシステム識別表示８１４を表すことが可能である。これにより、セキュアプログラミングシステム１００とプログラマブルデバイス１２８との間のセキュリティリンケージが得られる。このセキュリティリンケージは、セキュアプログラミングシステム１００とプログラマブルデバイス１２８との間の関係を示す。
【０１５１】
プロビジョニングプロセスは、セキュアプログラミングシステム１００の秘密鍵１５２を使用する場合について説明されているが、当然のことながら、別のシステムコンポーネントのシリアル番号マーカ５１２の１つが使用されてもよい。例えば、プログラマブルデバイス１２８は、図１のプログラマ１１２のシリアル番号マーカ５１２によりプロビジョニングされてよい。
【０１５２】
プロビジョニングが行われたプログラマブルデバイス１２８は、１つの信頼できるデバイス１３０（例えば、回路基板）にインストールされてよく、この信頼できるデバイス１３０も、セキュアプログラミングシステム１００の秘密鍵１５４によりプロビジョニングされてよい。そして、回路基板は、エンコードされた値８１２を復号し、その結果を比較して、シリアル番号マーカ５１２が一致することを確認することにより、プログラマブルデバイス１２８を識別することが可能である。
【０１５３】
別の例では、セキュアプログラミングシステム１００は、１つの信頼できるデバイス１３０（例えば、回路基板）のシリアル番号マーカ５１２を受け取り、その回路基板のシリアル番号マーカ５１２を暗号化して、その情報をプログラマブルデバイス１２８にプログラムすることによって生成された、エンコードされた値８１２でプログラマブルデバイス１２８をプロビジョニングすることが可能である。インストール後、回路基板は、エンコードされた値８１２を復号し、シリアル番号マーカ５１２を回路基板のシリアル番号と比較することが可能である。
【０１５４】
信頼できるデバイス１３０は、デバイス識別表示３０２によりプロビジョニングされてよい。１つの信頼できるデバイス（例えば、回路基板）のデバイス識別表示３０２は、入ってくる信頼の基点５０４、シリアル番号マーカ５１２、ファームウェアマーカ５０６、製造マーカ５１０、又は同様の識別子であってよい。例えば、シリアル番号マーカ５１２は、様々なタイプのプログラマブルデバイス１２８に関連付けられた識別子ＩＤ１、ＩＤ２、及びＩＤ３を含んでよい。適切な識別子に関連付けられた各プログラマブルデバイス１２８は、回路基板が適切なコンポーネントの公開鍵１５４でプロビジョニングされている場合には、回路基板によって識別及び認証されてよい。
【０１５５】
プロビジョニングプロセスは、シリアル番号マーカ５１２を使用して、関連付けられ承認されたシステムを識別するものとして説明されているが、当然のことながら、デバイス識別表示３０２内の別の要素が使用されてもよい。例えば、プログラマブルデバイス１２８は、デバイス識別表示３０２の別の部分（例えば、製造マーカ５１０又はファームウェアマーカ５０６）を使用して、信頼できるデバイス１３０（例えば、回路基板）とプログラマブルデバイス１２８との間のセキュリティリンケージを確立することが可能である。
【０１５６】
セキュアプログラミングシステム１００の１つの要素に関連付けられた公開鍵１５４を使用してデバイス識別表示３０２の一部をエンコードすることの一利点は、プログラマブルデバイス１２８と信頼できるデバイス１３０との相互運用性を制限する認証機構を提供することである。１つの要素の公開鍵１５４でエンコードされた値でプログラマブルデバイス１２８をプロビジョニングすることにより、信頼できるデバイス１３０は、そのプログラマブルデバイス１２８が信頼できるデバイス１３０とともに動作することを承認されていることを、秘密鍵１５２を使用して確認することが可能である。
【０１５７】
次に図９を参照すると、管理及びセキュリティ処理システム９０２（ＭＳＰシステム）の例が示されている。ＭＳＰシステム９０２は、プログラマブルデバイス１２８のデプロイメント及びプロビジョニングをセキュアに行うことが可能である。
【０１５８】
ＭＳＰシステム９０２は、データデバイスとアクティブな信頼できるデバイスとを暗号情報で個別に構成することにより、プログラミング及び動作のセキュアな環境を実現することが可能である。ＭＳＰシステム９０２は、セキュアな相手先ブランド製造者（ＯＥＭ）現場でのプログラマブルデバイス１２８のセキュアなプログラミングを可能にすることができる。
【０１５９】
ＭＳＰシステム９０２は、図１のセキュアプログラミングシステム１００の一実施形態でありうる。ＭＳＰシステム９０２の要素は、セキュアプログラミングシステム１００の要素を使用して実装されてよい。
【０１６０】
ＭＳＰシステム９０２は、一部が複数の場所又は施設にまたがって分散しているシステムの動作をサポートすることが可能である。ＭＳＰシステム９０２は、ＯＥＭ開発施設９４０と工場施設９４２とを含んでよい。ＯＥＭ開発施設９４０は、プログラマブルデバイス１２８の実際のプログラミング及びプロビジョニングの準備に使用されてよい。ＯＥＭ開発施設９４０は、複数の工場向けのプログラミング情報の準備に使用されてよい。ＯＥＭ開発施設９４０は、一連のセキュアデバイス（例えば、プログラマブルデバイス１２８、セキュア要素、図１の信頼できるデバイス１３０、又は他の同様のデバイス）を構成する為の情報を有するプログラミングプロジェクト９４４をＯＥＭが準備できる場所である。
【０１６１】
セキュアデバイスはタイプによって違いがあるが、それらの用語は、当然のことながら、大まかには入れ替えがきき、本質的には汎用である。セキュアデバイス、セキュア要素、プログラマブルデバイス１２８、信頼できるデバイス１３０、及び他の同様の要素は、本明細書では、便宜上且つ簡潔さの為に区別なく用いられている場合がある。
【０１６２】
ＯＥＭ開発施設９４０は、プログラマブルデバイス１２８のプロビジョニングに使用されるファームウェアイメージ９１４を取得して、プログラミングプロジェクト９４４を準備することが可能である。その後、プログラミングプロジェクト９４４は、工場施設９４２にセキュアに転送され、プログラマブルデバイス１２８のプログラミングの管理に使用されてよい。
【０１６３】
ＯＥＭ開発施設９４０は、プログラミングプロジェクト９４４の作成を促進する一連のセキュア製造システム及びデータ記憶装置を有してよい。例えば、ＯＥＭ開発施設９４０は、ファームウェア開発システム９０８、ＯＥＭマスタリングツール９１０、ファームウェア更新サービス９１２、及びＯＥＭ管理システム９２４を含んでよい。
【０１６４】
工場施設９４２は、プログラマブルデバイス１２８のプログラミング及びプロビジョニングを行う為の場所である。工場施設９４２は、プログラミングセンタ、組立施設、請負製造者現場、又は同様の場所であってよい。一実施形態では、工場施設９４２は、プログラマ１１２及びプログラマブルデバイス１２８が配置及び運用される場所である。
【０１６５】
ＭＳＰシステム９０２は、セキュリティブートローダ９１８を含んでよい。セキュリティブートローダ９１８は、セキュリティプロトコルを確実に順守する為に、プログラマブルデバイス１２８に対してブート時に実行可能なセキュアプログラミングコードである。ＯＥＭセキュリティブートローダ９０６は、デバイスの識別情報を生成し、暗号化されたデータストリームを受け入れてデバイス上で復号する機能を生成し、デバイス上でファームウェアをセキュアに実行できるようにするセキュア実行時環境をデバイス上で初期化する。
【０１６６】
ＭＳＰシステム９０２は、セキュアファームウェア９２０を含んでもよい。セキュアファームウェア９２０は、プログラマブルデバイス１２８の不揮発性メモリにエンベッドされるソフトウェアコード及びデータである。セキュアファームウェア９２０は、暗号化された状態で転送され、プログラマ１１２において復号されてよい。
【０１６７】
ＭＳＰシステム９０２は、ファームウェア復号鍵９２２を含んでよい。ファームウェア復号鍵９２２は、ファームウェア復号鍵９２２に関連付けられた暗号化鍵を使用して暗号化されているセキュアファームウェア９２０を復号する為に使用されてよい。例えば、ファームウェア復号鍵及び暗号化鍵は、暗号化に使用される対称鍵ペアの一部であってよい。
【０１６８】
ＭＳＰシステム９０２は、ＯＥＭからのファームウェアイメージ９１４を含んでよい。ファームウェアイメージ９１４は、ＯＥＭセキュリティブートローダ９０６によってロードされ、製造中及び製造後にプログラマブルデバイス１２８上で実行されるエンベデッドアプリケーションコードである。
【０１６９】
ＭＳＰシステム９０２は、ＯＥＭ鍵マテリアル９０４を含んでよい。ＯＥＭ鍵マテリアル９０４は、シリコンベンダデバイス認証鍵９５５、ＯＥＭデバイス証明書９４６に署名する為に必要なＯＥＭデバイス証明書署名鍵９４７、ＯＥＭデバイス証明書テンプレート９５０等のような情報を含んでよい。
【０１７０】
ＯＥＭ証明書テンプレート９５０は、ＯＥＭ証明書９５１の形成に使用される情報のブロックである。これは、ＯＥＭ証明書９５１に関する必須の基本情報を含む。ＯＥＭ証明書９５１は、ＯＥＭユーザ９６８を規定する情報のブロックである。ＯＥＭ証明書９５１は、ＯＥＭ識別子９６６、ＯＥＭ公開鍵９６２、及びＯＥＭ秘密鍵９５２を含んでよい。ＯＥＭ識別子９６６は、ＯＥＭを一意識別する値である。
【０１７１】
シリコンベンダは、プログラマブルデバイス１２８を製造又は供給できるエンティティである。シリコンベンダは、シリコンベンダ識別子９５６で識別されてよい。シリコンベンダ識別子９５６は、シリコンベンダにリンクされた値である。例えば、シリコンベンダ識別子９５６は、プログラマブルデバイス１２８を形成する集積回路又はコンポーネントを実際に製造する会社にリンクされてよい。シリコンベンダは又、本システムによるプログラミングに向けてプログラマブルデバイス１２８を事前構成して納入する会社であってもよい。
【０１７２】
ＭＳＰシステム９０２は、ＯＥＭファームウェア開発システム９０８を含んでよい。ファームウェア開発システム９０８は、プログラマブルデバイス１２８へのデプロイメントに備えてファームウェアイメージ９１４の開発をサポートする。
【０１７３】
ＭＳＰシステム９０２は、ＯＥＭマスタリングツール９１０（ＯＭＴ）を含んでよい。ＯＥＭマスタリングツール９１０は、ＯＥＭセキュリティブートローダ９０６をファームウェアイメージ９１４にバインドできるセキュリティアプリケーション又はシステムである。ＯＥＭマスタリングツール９１０は、ファームウェアイメージ９１４に対して署名及び暗号化を行い、ファームウェアイメージ９１４を現場更新に備えて準備することが可能である。現場更新は、プログラマブルデバイス１２８にデプロイされたファームウェアをセキュアな方式で遠隔変更することを可能にしうる。ＯＥＭマスタリングツール９１０は、ファームウェア復号鍵９２２を使用してファームウェアイメージ９１４を暗号化することにより、セキュアファームウェア９２０を生成することが可能である。ＯＥＭマスタリングツール９１０は、ＨＳＭ又はＴＳＭを含んでよく、ハードウェア又はソフトウェアとして実装されてよい。
【０１７４】
ＭＰＳシステム９０２は、ＯＥＭ管理システム９２４を含んでよい。ＯＥＭ管理システム９２４は、プログラミングプロジェクト９４４をＯＥＭユーザに向けて規定するシステムである。プログラミングプロジェクト９４４は、プログラマブルデバイス１２８のセキュアな生産工程を規定する情報パッケージである。
【０１７５】
ＯＥＭ管理システム９２４は、ＯＥＭセキュリティブートローダ９０６、ファームウェアイメージ９１４、ＯＥＭ証明書９５１、ＯＥＭ鍵マテリアル９０４、及び生産数９４８をプログラミングプロジェクト９４４にバインドすることが可能である。まずプログラミングプロジェクト９４４が生成された後、プログラミングプロジェクト９４４は、ＯＥＭセキュリティブートローダ９０６、ファームウェアイメージ９１４、ＯＥＭ鍵マテリアル９０４、ＯＥＭ証明書９５１、及び生産数９４８の参照、コード、及びデータを含むように更新されてよい。バインドプロセスは、それらの情報がプログラミングプロジェクト９４４のパラメータの一部であることを意味する。ＯＥＭ管理システム９２４は、プログラミングプロジェクト９４４を、工場施設９４２にある特定のセキュアプログラミングシステムにバインドすることも可能である。プログラミングプロジェクト９４４は、プログラミングシステム又はサブシステム（例えば、セキュアプログラミングシステム１００、プログラミングユニット１１０、プログラマ１１２、又はこれらの組み合わせ）の図８のシステム識別表示８１４を含んでよい。そして、プログラミングプロジェクト９４４は、システム識別表示８１４を有するシステムでのみ実施されてよい。
【０１７６】
生産数９４８は、生産工程において生産されるセキュアデバイスの数を示す指標である。生産数９４８は、セキュアデバイスの生産の開始時点又は完了時点で更新される増分数と比較されてよい。プログラミングプロジェクト９４４を受け取ったプログラマ１１２は、生産数９４８を使用してプログラミング及びプロビジョニングされるデバイスの数を制限することにより、プログラマブルデバイス１２８の不正な生産を防ぐことが可能である。生産の途中では、現在数９７８が、生産済み製品の現在の数を示すことが可能である。本システムは、現在数９７８を生産数９４８と比較し、現在数９７８が生産数９４８と同じになった時点でデバイスのプログラミングを停止してよい。
【０１７７】
ＯＥＭ管理システム９２４は、様々な様式で構成されてよい。例えば、ＯＥＭ管理システム９４４は、共有構成で実装されてよく、それぞれが自前の工場（例えば、工場施設９４２）を有する複数のＯＥＭへのデプロイメントに向けてプログラミングプロジェクト９４４を生成することが可能である。ＯＥＭ管理システム９２４は、図１のセキュアマスタ記憶システム１０２、図１のセキュリティマスタシステム１０４、図１のセキュアプログラミングシステム１００、又はこれらのシステム及びサブシステムの組み合わせを使用して実装されてよい。
【０１７８】
ＭＳＰシステム９０２は、工場管理システム９３０を含んでよい。工場管理システム９３０は、工場施設９４２においてセキュアプログラミングコンポーネントを管理するシステムである。工場管理システム９３０は、ＯＥＭ管理システム９４４からプログラミングプロジェクト９４４を受け取り、製造情報を復号して、工場施設９４２にある他のセキュリティ及びプログラミングのシステムに配布することが可能である。
【０１７９】
工場管理システム９３０は、様々な様式で実装されてよい。例えば、工場管理システム９３０は、図７の製造実行システム７０２、図２のプログラミングプロセッサ２０２、ホストコンピュータシステム、又は別の同様の処理システムとともに実装されてよい。
【０１８０】
ＭＳＰシステム９０２は、工場セキュリティシステム９３２を含んでよい。工場セキュリティシステムは、プログラマブルデバイス１２８にプログラムされる鍵及び証明書を生成するＨＳＭベースのセキュリティアプライアンスである。工場セキュリティシステム９３２は、１つのＯＥＭのセキュリティ情報を別のＯＥＭのセキュリティ情報から隔離することにより、マルチテナントＯＥＭアーキテクチャをサポートすることが可能である。これにより、工場セキュリティシステム９３２は、様々なプログラマにおいて、様々なＯＥＭに向けてプログラマブルデバイス１２８の様々なセットのプログラミング及びプロビジョニングを行うことが可能になる。
【０１８１】
工場セキュリティシステム９３２は、様々な様式で構成されてよい。例えば、工場セキュリティシステム９３２は、図１のセキュリティマスタシステム１０４、図１のセキュリティコントローラ１１４、図２のプログラミングプロセッサ２０２、図１の第１のセキュリティモジュール１１６、図１の第２のセキュリティモジュール１１８、図１の第ｎのセキュリティモジュール１２０、又はこれらの組み合わせを使用して実装されてよい。工場セキュリティシステム９３２は、ＭＳＰシステム９０２の１つ又は複数のセキュリティコンポーネントを使用して、集中式又は分散式で実装されてよい。
【０１８２】
工場セキュリティシステム９３２は、鍵ペア生成、暗号化、復号、証明書管理、セキュアな記憶、セキュアな実行、及び他の同様のセキュリティ処理機能を含む高いセキュリティの暗号化サービスを提供することが可能である。工場セキュリティシステム９３２は又、セキュアな開発、セキュアなマスタリング、データ及びコードのセキュアなデプロイメント、セキュアなプロビジョニング、セキュアなプログラミング、及びセキュアな更新をサポートすることも可能である。
【０１８３】
工場セキュリティシステム９３２は、デバイス証明書に基づくデバイス認証、デプロイメントの管理及びバージョニング、デジタルライフサイクル管理、及びアプリケーション管理を実施することが可能である。工場セキュリティシステム９３２は、対称暗号化、ハッシュ関数、データカプセル化、デジタル署名、鍵の共有及び配送、鍵管理、及びユーザアクセス制御を提供することが可能である。
【０１８４】
工場セキュリティシステム９３２は、工場セキュリティシステム９３２の識別情報を認証する工場セキュリティシステム証明書９３３を含んでよい。工場セキュリティシステム証明書９３３は、ＯＥＭ開発施設９４０及びＯＥＭ管理システム９２４から工場管理システム９３０及び工場セキュリティシステム９３６に転送される情報に署名する為に使用されてよい。工場セキュリティシステム９３２は、工場セキュリティシステムデータ暗号化鍵９８０及び工場セキュリティシステムデータ認証鍵９８２を含んでよい。これらの鍵は、セキュア情報の暗号化、復号、署名、及び認証をセキュアに行うことに使用されてよい。
【０１８５】
ＭＳＰシステム９０２は、工場施設９４２においてホストシステム９３６を含んでよい。ホストシステム９３６は、プログラミングプロジェクト９４４の実行の制御、並びにプログラマ１１２と工場セキュリティシステム９３２との間の通信の管理を行う為のコンピュータシステムである。
【０１８６】
ホストシステム９３６は、様々な様式で実装されてよい。例えば、ホストシステム９３６は、セキュリティコントローラ１１４、プログラミングプロセッサ２０２、又は別の同様の、セキュアプロセシングシステム１００と結合されたコンピューティングシステムを使用して実装されてよい。ホストシステム９３６は、工場セキュリティシステム９３２、プログラマ１１２、工場管理システム９３０、又は他の同様のシステムと結合されてよい。
【０１８７】
ＭＳＰシステム９０２は、プログラマブルデバイス１２８をプログラムするプログラマ１１２を含んでよい。プログラマ１１２は、ブランクのデバイス、又は一部プログラム済みのデバイスのセットを受け取り、それらのプログラマブルデバイス１２８に、プログラミングプロジェクト９４４からの情報をセキュアにプログラムすることが可能である。
【０１８８】
プログラマ１１２は、プログラマブルデバイス１２８をプログラムする為のシリアルデータリスト９６４を生成してよい。シリアルデータリスト９６４は、プログラマブルデバイス１２８にプログラムされるデバイス固有データのリストである。これは、ファームウェアイメージ９１４、ＯＥＭデバイス証明書９４６、コード、データ、又は他の情報を含んでよい。シリアルデータリスト９６４は、個々のデバイスの情報、例えば、シリアル番号、デバイス識別表示、データ証明書、又は同様のデバイス固有パラメータに基づいて様々であってよい。
【０１８９】
ＭＳＰシステム９０２は、プログラマブルデバイス１２８を保護する為にデバイス証明書を含んでよい。デバイス証明書は、シリコンベンダデバイス証明書９２６、相手先ブランド製造者デバイス証明書９４６（ＯＥＭデバイス証明書９４６）、又は他のデバイス証明書であってよい。デバイス証明書は、公開鍵を含む、プログラマブルデバイス１２８に関する情報、図３のデバイス識別表示３０２、シリコンベンダ識別子９５６、ＯＥＭ識別子９６６、又は他の同様の情報を含んでよい。
【０１９０】
シリコンベンダデバイス証明書９２６は、１つのセキュア要素（例えば、図１のプログラマブルデバイス１２８又は信頼できるデバイス１３０）の識別情報をセキュアに規定するデータ要素のセットである。シリコンベンダデバイス証明書９２６は、図３のデバイス識別表示３０２、シリコンベンダ公開鍵９５４、及び／又は他のセキュリティ情報を含んでよい。シリコンベンダ秘密鍵９５８で暗号化された情報は、シリコンベンダ鍵ペア９６０のシリコンベンダ公開鍵９５４で復号可能である。
【０１９１】
シリコンベンダデバイス証明書９２６は、セキュア要素が他の製造者又はユーザに転送される前に、シリコンベンダ又は製造者によってセキュア要素のセキュア記憶ユニットにプログラムされてよい。シリコンベンダデバイス証明書９２６はライトワンスセキュア記憶ユニットに記憶されてよく、そこでは、シリコンベンダデバイス証明書９２６に更なる情報を追加することが可能であるが、既存の情報を消去又は変更することはできない。更なる変更が不要な場合には、セキュア記憶ユニットの一部をロックすることが可能である。セキュア記憶ユニットは、１つ以上のデータ要素を含んでよく、例えば、複数のデバイス証明書及び他の関連セキュリティデータを含んでよい。
【０１９２】
シリコンベンダデバイス証明書９２６は、様々な様式で実装されてよい。例えば、シリコンベンダデバイス証明書９２６は、図５の製造マーカ５１０、図３のセキュリティ証明書３０６、図３のセキュリティアルゴリズム３０４、図５の製品マーカ５０８、図５の動作マーカ５１４、図５の入ってくる信頼の基点５０４、図４の信頼できる証明書４０２、又は別の同様のデータ要素を使用して実装されてよい。
【０１９３】
ＭＳＰシステム９０２は、デバイスレベルのプログラミング統計をリアルタイムで提供するデバイスデータ追跡システム９３４を含んでよい。デバイスデータ追跡システム９３４は、ローカル工場におけるセキュアプログラミングシステム１００、又はリモートにプロビジョニングされるデバイスのデバイスレベルの情報を追跡することが可能である。デバイスデータ追跡システム９３４は、ＭＳＰシステム９０２のプログラマ１１２によって構成される各プログラマブルデバイス１２８のデバイスレベルの情報を追跡することが可能である。デバイスデータ追跡システム９３４は、シリコンベンダデバイス証明書９２６、図８のシステム識別表示８１４、デバイス識別表示３０２、又は他の、デバイスにプログラムされたデータ要素などのデータを追跡することが可能である。デバイスデータ追跡システム９３４は、妥当性ステータス、構成ステータス、複製ステータス、又は他のデバイスレベルのステータスを含むデバイスステータスを追跡することが可能である。
【０１９４】
ＭＳＰシステム９０２は、デバイスプロビジョニングサービス９３８を含んでよい。デバイスプロビジョニングサービス９３８は、インターネットを介してプログラマブルデバイス１２８のプロビジョニングを行うシステムである。デバイスプロビジョニングサービス９３８は、現場のプログラマブルデバイス１２８にプロビジョニング情報をセキュアに送達することが可能な、ハードウェアとソフトウェアの組み合わせであってよい。デバイスプロビジョニングサービス９３８は、各デバイスのセキュアな動作の継続に必要なセキュリティ情報、データ更新、ソフトウェア更新、及び他のセキュリティ及び動作の情報を配布することが可能である。
【０１９５】
ＭＳＰシステム９０２は、ファームウェア更新サービス９１２を含んでよい。ファームウェア更新サービス９１２は、インターネット、例えば、ＯＥＭクラウド９２８を介してプログラマブルデバイス１２８のファームウェアを更新するシステムである。ファームウェア更新サービス９１２は、１つ以上のプログラマブルデバイス１２８を有するシステムにファームウェア更新９１６をセキュアに送達して、プログラマブルデバイス１２８を新しいファームウェアで更新することが可能である。ファームウェア更新９１６は、プログラマブルデバイス１２８のファームウェアの更新に使用されるソフトウェアとデータのパッケージである。ファームウェア更新サービス９１２は、セキュリティソフトウェア及びハードウェアを有するシステムのうちの、プログラマブルデバイス１２８のセキュアな更新が確実に行われるようにファームウェア更新９１６及び関連セキュリティ情報をデプロイすることが可能な部分であってよい。
【０１９６】
ＭＳＰシステム９０２は、様々な様式で動作可能である。一事例では、ＭＳＰシステム９０２は、セキュア要素ユースケース９７０に基づいて動作可能である。セキュア要素ユースケース９７０は、ＭＳＰシステム９０２を使用してプログラマブルデバイス１２８をセキュアにプログラムする一様式を記述することが可能であり、その場合、プログラマブルデバイス１２８は、既にファームウェアで構成されており、シリコンベンダ施設でプリインストールされたシリコンベンダデバイス証明書９２６を有する。
【０１９７】
セキュア要素ユースケース９７０は、２つの主要ステップを含んでよい。ステップ１では、１つのプログラマブルデバイス１２８からシリコンベンダデバイス証明書９２６が抽出され、デバイスが認証される。ステップ２では、認証されたデバイスのシリコンベンダデバイス証明書９２６に基づいてＯＥＭデバイス証明書９４６が生成される。その後、ＯＥＭデバイス証明書９４６がデバイスにプログラムされる。
【０１９８】
このユースケースでは、ＨＳＭベースのセキュリティシステム、例えば、工場セキュリティシステム９３２が、セキュアプログラミングシステムの一部として、例えば、セキュリティ領域が組み込まれたセキュアマイクロコントローラユニットをプログラムするシステムとして組み込まれてよい。組み込まれたセキュリティ領域は、書き込みが一度だけ可能であって変更不可である保護されたメモリ領域であってよい。これにより、鍵、コード、又は証明書のようなセキュリティデータの変更不可の記憶が可能になる。
【０１９９】
本システムは、プログラマブルデバイス１２８のステータスデータを管理する為に、ＯＥＭ管理システム９２４、工場管理システム９３０、ジョブ生成及びジョブ実行システム、及びデバイスデータ追跡システム９３４を含んでよい。これらの様々なシステムは様々な様式で実装されてよい。例えば、ＯＥＭ管理システム９２４、工場管理システム９３０、ジョブ生成及びジョブ実行システム、及びデバイスデータ追跡システム９３４は全て、ホストシステム９３６上でソフトウェアとして実行されてよい。別の例では、これらのシステムは、それぞれが専用ハードウェア上で実行されてよい。
【０２００】
このセキュリティモデルでは、工場施設９４２は、ＯＥＭユーザのプロキシとして動作可能であり、ＯＥＭ管理システム９２４の機能性を実行することが可能である。これは実質的に、ＯＥＭユーザ９６８が工場施設９４２を暗黙的に信頼して、ＯＥＭ鍵マテリアル９０４及びＯＥＭ証明書９５１を供給し、プログラマブルデバイス１２８の生産数９４８を設定することを意味する。このアクティビティは図１のプログラミングユニット１１０のホストシステム９３６上で行われる為、ジョブのセットアップ、ＯＥＭ鍵マテリアル９０４の生成、及びセキュアプログラミングシステム１００の構成は、工場施設９４２内の物理的にセキュアな場所で認定済みの要員によって行われる。
【０２０１】
実施態様によっては、セキュア要素として構成されているプログラマブルデバイス１２８にＯＥＭデバイス証明書９４６をプロビジョニングすることに重点が置かれてよい。しかしながら、当然のこととして、ＯＥＭシステムによって、ＯＥＭ鍵マテリアル９０４をセキュアに流すこと、並びに生産数９４８をセキュアに更新することは、物理的セキュリティ手段及びセキュアデータチャネルによって保護される。
【０２０２】
ＯＥＭ開発施設９４０からのＯＥＭデータは、ＯＥＭ管理システム９２４から工場セキュリティシステム９３２までずっとセキュアであり、暗号化されており、これは、データが暗号化されて特定の工場セキュリティシステム９３２に関連付けられている為である。例えば、プログラミングプロジェクト９４４は、工場セキュリティシステム証明書９３３を使用して暗号化されてよく、これは、指定された工場セキュリティシステム９３２によってのみ復号可能である。
【０２０３】
別の例では、ＯＥＭデバイス証明書署名鍵９４７を含むＯＥＭ鍵マテリアル９０４の転送は、そのマテリアルが暗号化されて伝送されることから、セキュアに行われる。ＯＥＭデバイス証明書署名鍵９４７は、秘密鍵コンポーネントを含んでよい。
【０２０４】
一事例では、プログラマブルデバイス１２８の秘密鍵１５２がデバイスから離れない為、ＯＥＭ管理システム９２４へのＯＥＭデバイス証明書署名鍵９４７のインポートはセキュアに行われる。これにより、データが暗号化されることから、物理的セキュリティの必要性が低減されうる。
【０２０５】
別の事例では、ＭＳＰシステム９０２は、マイクロコントローラユニットユースケース９７２に基づいて動作可能であり、その場合、ＭＳＰシステム９０２は、図１のプログラマブルデバイス１２８及び信頼できるデバイス１３０（例えば、セキュアマイクロコントローラユニット）のプロビジョニングに使用される。セキュアマイクロコントローラユニットは、セキュア処理設備及びセキュア記憶設備を含んでよい。
【０２０６】
ＭＣＵユースケース９７２は、２つの主要ステップを含んでよい。第１のステップでは、ＯＥＭセキュリティブートローダ９０６は、プログラマブルデバイス１２８にプログラムされてよい。その後、ＯＥＭセキュリティブートローダ９０６が使用されてプログラマブルデバイス１２８がブートされて、プログラマブルデバイス１２８用のデバイス認証鍵ペア９７４及びデバイス復号鍵ペア９７６が生成されてよい。その後、その２つの鍵ペアの一部が使用されて、ＯＥＭデバイス証明書９４６の構築、プログラミング、及び署名が行われてよい。
【０２０７】
第２のステップでは、ＭＳＰシステム９０２は、シリコンベンダデバイス証明書９２６を読み出し、プログラマブルデバイス１２８を認証してよい。ファームウェア復号鍵９２２は、シリコンベンダデバイス証明書９２６からのデバイス復号鍵により暗号化されてよい。暗号化されたファームウェア及び暗号化されたファームウェア復号鍵９２２は、プログラマブルデバイス１２８上でプログラムされてよい。
【０２０８】
ＯＥＭセキュリティブートローダ９０６、ＯＥＭファームウェア開発９０８、ＯＥＭマスタリングツール９１０、ＯＥＭ管理システム９２４、及びＯＥＭ鍵マテリアル９０４の生成は、全てがＯＥＭ開発施設９４０において実施されてよい。全体プロジェクト定義、並びに生産数９４８の決定は、ＯＥＭユーザ９６８によって管理される。
【０２０９】
ＯＥＭソフトウェア実行環境は、ＯＥＭ開発施設９４０にあるコンピュータにおいてホストされてよい。全てのＯＥＭ信頼の基点が、ＯＥＭ開発施設９４０から工場施設９４２にセキュアに移される。工場管理システム９３０、工場セキュリティシステム９３２、及びデバイスデータ追跡システム９３４は、工場施設９４２においてホストシステム９３６上で実行可能である。
【０２１０】
一実施形態では、第１のステップがプログラマブルデバイス１２８のセキュアプロビジョニングを必要とする為、これはセキュアな施設、例えば、ＯＥＭ信頼できる工場、シリコンベンダ工場、ＯＥＭ工場、又はプログラミングセンタで行われなければならない。次にステップ２は、セキュリティのレベルがより低い施設、例えば、信頼できない工場、請負製造者、サードパーティパートナ、又は同様のタイプの施設で行われてよい。
【０２１１】
このセキュリティモデルでは、ＯＥＭ信頼の基点及びプログラミングプロジェクト９４４は、ＯＥＭ開発施設９４０において規定され、工場施設９４２に配布される。重要なのは、ＯＥＭ製品のサプライチェーンのセキュリティを高める為に、ＯＥＭユーザが自身の信頼の基点を管理しなければならないことである。
【０２１２】
一事例では、ＭＣＵユースケース９７２は物理的セキュリティを必要とし、これは、プログラマブルデバイス１２８の図１の鍵ペアが工場セキュリティシステム９３２で生成され、工場施設９４２において露出される可能性がありうる為である。プログラマブルデバイス１２８とプログラマ１１２との間の物理的接続は暗号化されていない為、工場施設９４２のシステムに物理的にアクセスできる何者かがのぞきまわって重要な情報を盗む可能性がある。従って、セキュリティ情報を保護する為には物理的セキュリティが実装されなければならない。
【０２１３】
ＭＣＵユースケース９７２の別の例では、プログラマブルデバイス１２８はブランクであってよく、シリコンベンダデバイス証明書９２６をプリプログラムすることができない。この場合には、ＯＥＭデバイス証明書９４６が認証に使用されてよい。更に、ファームウェア復号鍵９２２は、ＯＥＭデバイス証明書９４６からの公開復号鍵、例えば、ＯＥＭ公開鍵９６２を使用して暗号化されてよい。
【０２１４】
次に図１０を参照すると、セキュア要素ユースケース９７０の詳細な例が示されている。セキュア要素ユースケース９７０は、セキュア要素、例えば、図１のプログラマブルデバイス１２８をセキュアに構成するプロセスを示している。図９のＭＳＰシステム９０２は、セキュア要素ユースケース９７０に従って図１の各プログラマブルデバイス１２８のデプロイメント及びプロビジョニングをセキュアに行うことが可能である。
【０２１５】
セキュア要素ユースケース９７０では、セキュア要素は、様々な施設において、インスタンス化、転送、及び管理されてよい。施設は様々なタイプの場所があってよく、例えば、シリコン製造者１００４、ＯＥＭ場所１００６、プログラミングセンタ１００８、プログラマ場所１０１０、及びデバイス場所１０１２があってよい。各施設は、何らかのタイプのセキュアプログラミング関連アクションが行われうる場所を表す。更に、このユースケースは、図１のプログラマ１１２、及びデバイス場所１０１２においてエンベッドされるデータ及びアクションを含んでよい。
【０２１６】
セキュア要素ユースケース９７０は、それぞれが異なるセキュアアクティビティを実施する、３つの異なるイベントシーケンスを含んでよい。第１のシーケンス１０１４では、図９のＭＳＰシステム９０２は、図９のＯＥＭ管理システム９２４を使用して、図９の工場セキュリティシステム９３２を初期化してよい。これは、図９のＯＥＭ開発施設９４０、図９の工場施設９４２、又は別の同様の場所で行われてよい。
【０２１７】
ＭＳＰシステム９０２は又、工場施設９４２、プログラミングセンタ１００８、又は別の同様の場所で、図９の工場管理システム９３０を初期化してよい。工場管理システム９３０は、現在数９７８、図９のシリコンベンダ公開鍵９５４、図９のＯＥＭ秘密鍵９５２、及び図９のＯＥＭデバイス証明書テンプレート９５０で更新されてよい。工場管理システム９３０は、その情報を、セキュアな処理の為に工場セキュリティシステム９３２に転送してよい。
【０２１８】
第２のシーケンス１０１６では、セキュア要素は、シリコンベンダ（ＳＶ）工場で、図９のシリコンベンダデバイス証明書９２６によりプログラムされる。
【０２１９】
第３のシーケンス１０１８では、ＭＳＰシステム９０２は、第２のシーケンス１０１６でプリインストールされたシリコンベンダデバイス証明書９２６を使用して、各デバイス（例えば、図１のプログラマブルデバイス１２８又は信頼できるデバイス１３０）を暗号認証してよい。その後、図９のＯＥＭデバイス証明書９４６が構築され、プログラマブルデバイス１２８にプログラムされてよい。
【０２２０】
ＯＥＭデバイス証明書９４６の構築は、シリコンベンダデバイス証明書９２６からのデバイス識別情報鍵ペアの公開鍵部分、例えば、シリコンベンダ公開鍵９５４を再使用することにより行われてよい。従って、シリコンベンダ公開鍵９５４は、ＯＥＭデバイス証明書９４６の計算に使用されてよく、従って、両証明書は同じ証明書を使用して証明される。或いは、シリコンベンダ鍵ペアとは別個のＯＥＭ識別情報を表す為に別の鍵ペアが使用されてよい。これは、工場セキュリティシステム９３２によって、又はセキュア要素自体において行われてよい。
【０２２１】
第２のシーケンス１０１６では、ステップ１０２０はシリコン製造者１００４において行われる。シリコン製造者１００４は、ローセキュア要素を作成する会社であってよい。図９のシリコンベンダデバイス証明書９２６は、各セキュア要素（例えば、プログラマブルデバイス１２８又は信頼できるデバイス１３０）ごとに生成される。シリコンベンダデバイス証明書９２６は、各セキュア要素についての一意情報を含んでよく、例えば、図３のデバイス識別表示３０２、シリアル番号、製品タイプ、製造日付、又は同様のデバイス情報を含んでよい。
【０２２２】
ステップ１０２２も、シリコン製造者１００４において行われてよい。各シリコンベンダデバイス証明書９２６は、図９のシリコンベンダ識別子９５６を有するシリコン製造者の図９のシリコンベンダ秘密鍵９５８により署名される。シリコンベンダデバイス証明書９２６に署名することによって、証明書のデータが暗号化される。このデータは、シリコンベンダ公開鍵９５４でのみ復号可能である。
【０２２３】
ステップ１０２4も、シリコン製造者１００４において行われてよい。各プログラマブルデバイス１２８は、シリコンベンダ秘密鍵９５８により署名されたシリコンベンダデバイス証明書９２６でプログラムされる。シリコンベンダ秘密鍵９５８で署名されたシリコンベンダデバイス証明書９２６は、デバイスがそのシリコンベンダによって承認又は供給されていることを示す。シリコンベンダデバイス証明書９２６をシリコンベンダ秘密鍵９５４で正常に復号することにより、プログラマブルデバイス１２８が、これに署名したシリコンベンダからのものであることを認証することが可能である。
【０２２４】
第２のシーケンス１０１６では、シリコンベンダ秘密鍵９５８により更なる署名が行われたシリコンベンダデバイス証明書９２６の一意且つ個別のインスタンスにより、各プログラマブルデバイス１２８に一意のタグ付けを行ってよい。これにより、シリコンベンダ公開鍵９５４を使用してシリコンベンダデバイス証明書９２６をデコードすることによって、シリコンベンダデバイス証明書９２６が、シリコンベンダ識別子９５６を有するシリコンベンダから供給されたことを確認することが可能になりうる。これにより、工場又は他のデバイスユーザがプログラマブルデバイス１２８の信憑性を確認することが可能になる。
【０２２５】
第１のシーケンス１０１４は、シリコン製造者１００４、ＯＥＭ場所１００６、及びプログラミングセンタ１００８において実施される。第１のシーケンス１０１４では、プログラミングセンタ１００８において、セキュアなプログラミングが行われるようにプログラミングコンポーネントを構成することが可能である。
【０２２６】
ステップ１０３０では、シリコンベンダが、シリコンベンダ公開鍵９５４及びシリコンベンダ秘密鍵９５８を有するシリコンベンダ鍵ペア９６０を生成してよい。これは、シリコンベンダ秘密鍵９５８及びシリコンベンダ公開鍵９５４を有するシリコンベンダ鍵ペア１０８０であってよい。
【０２２７】
ステップ１０３２では、シリコンベンダ公開鍵９５４がＯＥＭユーザ１００６に転送されてよい。シリコンベンダ公開鍵９５４は、暗号化されずに送られてよい。例えば、シリコンベンダ公開鍵９５４は、ネットワークリンクを介して送られてよい。
【０２２８】
ステップ１０３４では、ＯＥＭユーザ１００６が、図９のＯＥＭ証明書９５１を、プログラミングセンタ１００８の、図９の工場管理システム９３０及び図９の工場セキュリティシステム９３２に登録してよい。ＯＥＭ証明書９５１は、ＯＥＭ秘密鍵９６２で暗号化又は署名された情報を復号及び認証する為に図９のＯＥＭ公開鍵９６２を含んでよい。プログラミングセンタ１００８におけるＯＥＭ証明書の登録をセキュアに行うことにより、ＯＥＭユーザ１００６に関するセキュリティ情報をプログラミングセンタ１００８に提供することが可能である。この登録は、工場管理システム９３０及び工場セキュリティシステム９３２におけるＯＥＭ資格証明の導入及び識別の為に行われてよい。
【０２２９】
ステップ１０３５では、工場管理システム９３０及び工場セキュリティシステム９３２が、セキュア交換プロセスにおいて工場セキュリティシステム暗号化鍵９８０をＯＥＭ管理システム９２４に送ってよい。工場セキュリティシステムデータ暗号化鍵９８０は、情報のセキュアな転送をサポートする為に、ＯＥＭユーザ１００６から工場管理システム９３０及び工場セキュリティシステム９３２に送られる情報の暗号化に使用されてよい。工場セキュリティシステム９３２は、工場セキュリティシステムデータ暗号化鍵をＯＥＭ管理システム９２４に送ってよい。
【０２３０】
ステップ１０３６では、ＯＥＭユーザ１００６が、ＳＶデバイス認証公開鍵、ＯＥＭデバイス証明書署名鍵、及びＯＥＭデバイス証明書テンプレート９５０を有するパッケージを作成してよい。ＯＥＭデバイス証明書署名鍵は、ＯＥＭ管理システム９２４において生成されてよく、或いは外部ＨＳＭなどの外部セキュリティシステムからインポートされてよい。このパッケージは、ＯＥＭ管理システム９２４において、工場セキュリティシステムデータ暗号化鍵９８０を使用して暗号化されてから、工場管理システム９３０及び工場セキュリティシステム９３２に送られてよい。このパッケージは、工場セキュリティシステム９３２の工場セキュリティシステムデータ暗号化鍵９８０を使用して暗号化されている為、工場セキュリティシステム９３２の工場セキュリティシステムデータ認証鍵９８２でのみ復号可能である。ＯＥＭデバイス証明書テンプレート９５０は、図３のデバイス識別表示３２０を有するデバイスの公開鍵１５２を含むＯＥＭデバイス証明書９４６用テンプレートであり、ＯＥＭ秘密署名鍵により署名される。ＯＥＭ公開鍵９６２は、ＯＥＭユーザ１００６に関連付けられた暗号値である。ＯＥＭ公開鍵９６２は、様々なフォーマットを有する。例えば、鍵は、Ｘ．５０９公開鍵証明書又は別の公開鍵フォーマットとしてフォーマットされてよい。Ｘ．５０９規格は、公開鍵の所有権を示す公開鍵証明書を規定している。ＯＥＭ公開鍵９６２は、公開鍵の妥当性情報を提供することが可能である。ＯＥＭ公開鍵９６２は、プログラミングセンタ１００８におけるデバイス証明書に使用されてよい。
【０２３１】
ステップ１０３８では、ＯＥＭユーザ１００６が、シリコンベンダ公開鍵９５４、ＯＥＭ秘密鍵９５２、及びＯＥＭデバイス証明書テンプレート９５０を有するパッケージをプログラミングセンタ１００８に送ってよい。そして、このパッケージの情報は、プログラマブルデバイス１２８に署名する際に使用されてよい。
【０２３２】
第３のシーケンス１０１８は、プログラミングセンタ１００８又は工場施設９４２において、プログラマ１１２及びプログラマブルデバイス１２８に対して実施される。第３のシーケンス１０１８では、セキュア要素の認証、ＯＥＭ情報によるセキュア要素のプロビジョニング及び暗号署名、並びにプロビジョニングされたデバイスが承認されたことの確認を行うことが可能である。
【０２３３】
ステップ１０４０では、プログラマ１１２が、プログラムされる各プログラマブルデバイス１２８のシリコンベンダデバイス証明書９２６を読み込んでよい。シリコンベンダデバイス証明書９２６は、プログラマブルデバイス１２８からプログラマ１１２まで暗号化されずに転送される。
【０２３４】
ステップ１０４２では、シリコンベンダデバイス証明書９２６が、プログラマ１１２から工場管理システム９３０及び工場セキュリティシステム９３２に転送されてよい。工場管理システム９３０は、プログラミング作業を制御し、工場セキュリティシステム９３２はデバイス及びシステムのセキュリティを管理する。
【０２３５】
ステップ１０４４では、シリコンベンダデバイス証明書９２６が、プログラミングセンタ１００８の工場管理システム９３０において受け取られる。プログラマ１１２は、図９の工場施設９４２に配置される。
【０２３６】
ステップ１０４６では、プログラマブルデバイス１２８が、シリコンベンダ公開鍵９５４により認証されてよい。このステップでは、プログラムされるデバイスが、シリコンベンダ識別子９５６を有するシリコンベンダから供給されることを確認する。シーケンス１でシリコンベンダ秘密鍵９５８で署名されたシリコンベンダデバイス証明書９２６がシリコンベンダ公開鍵９５４により復号された時点で、プログラマブルデバイス１２８が認証される。シリコンベンダデバイス証明書９２６の情報がシリコンベンダ公開鍵９５４によりアクセス可能であれば、デバイスは認証される。
【０２３７】
ステップ１０４８では、ＯＥＭデバイス証明書９４６が、ＯＥＭデバイス証明書テンプレート９５０に基づいてフォーマットされる。そして、ＯＥＭデバイス証明書９４６は、ＯＥＭ秘密鍵９５２により署名される。
【０２３８】
ステップ１０５０では、ＯＥＭデバイス証明書９４６がプログラマ１１２に転送される。ＯＥＭデバイス証明書９４６は、ＯＥＭ秘密鍵９５２で暗号化及び署名されている為、暗号化されずに転送されてよい。
【０２３９】
ステップ１０５２では、プログラマ１１２がシリアルデータリスト９６４を作成してよい。シリアルデータリスト９６４は、プログラマブルデバイス１２８にプログラムされるデバイス固有データのリストである。これは、シリアル番号、デバイス識別表示、ＯＥＭデバイス証明書９４６、製造マーカ。コード、データ、マーカ、ＭＡＣアドレス、デバイス固有鍵、又は他の情報を含んでよい。
【０２４０】
ステップ１０５４では、シリアルデータリスト９６４に含まれるデバイス固有データが、プログラマ１１２によってプログラマブルデバイス１２８にプログラムされてよい。シリアルデータリスト９６４は、デバイス固有データが記憶されるべき場所を示すことが可能である。例えば、ＯＥＭデバイス証明書９４６は、セキュア記憶ユニットに記憶されてよい。
【０２４１】
ステップ１０５６では、シリコンベンダデバイス証明書９２６及びＯＥＭデバイス証明書９４６が、プログラマ１１２によってセキュア要素、例えば、プログラマブルデバイス１２８又は信頼できるデバイス１３０から再抽出され、取り出されてよい。シリコンベンダデバイス証明書９２６及びＯＥＭデバイス証明書９４６のコピーが工場セキュリティシステム９３２内、又はシステム内の他の場所に既に存在する場合があるが、これらのデバイス証明書は、プログラマブルデバイス１２８の検査の為、且つ、潜在的な重複生産工程、不正な複製、又は他の不適正なアクティビティを検出する為に再抽出される。これらのデバイス証明書がエラーなくプログラムされたことを確認する為に、妥当性検査ステップが用いられてよい。エラーとしては、プログラミング障害、デバイス損傷、ビットエラー、又は同様のエラーがありうる。
【０２４２】
ステップ１０５８では、シリコンベンダデバイス証明書９２６及びＯＥＭデバイス証明書９４６が、検証及び更なる用途の為に工場セキュリティシステム９３２に送られる。取り出されたデバイス証明書は、適正なプログラマブルデバイス１２８がプログラムされたことを確認する為に、第２の認証ラウンドに使用されてよい。これは、プログラマブルデバイス１２８の不正な複製を防ぐ為、且つデバイスの偽造を防ぐ為に使用されてよい。
【０２４３】
ステップ１０６０では、プログラマブルデバイス１２８が適切であることを確認する為に、シリコンベンダデバイス証明書９２６及びＯＥＭデバイス証明書９４６が検査される。これは、シリコンベンダ公開鍵９５４を使用してシリコンベンダデバイス証明書９２６の妥当性を検査することと、ＯＥＭ公開鍵９６２を使用してＯＥＭデバイス証明書９４６の妥当性を検査することと、を含んでよい。デバイス証明書の妥当性検査は、デバイス証明書の公開鍵をシリコンベンダ証明書１０７８の公開鍵と比較して、それらが一致することを確認することを必要とする。更に、証明書は、証明書のフォーマットが正当であることを確認する為に、証明書妥当性検査ツール（図示せず）により処理されてよい。証明書の署名も、工場セキュリティシステム９３２により妥当性を検査される。
【０２４４】
ステップ１０６２では、検証結果がプログラマ１１２に送り返されてよい。ステップ１０６４では、プログラマ１１２が完成デバイスを処理してよい。プログラマブルデバイス１２８の妥当性が確認されない場合、プログラマ１１２は、それらのデバイスを、妥当性ステータスが不良デバイスを示していると識別して、廃棄用不良デバイスレセプタクル（図示せず）に転送してよい。プログラマブルデバイス１２８が適正であると確認された場合には、プログラマブルデバイス１２８は、確認された状態値で更新され、確認済みコンポーネントとして渡されてよい。或いは、プログラマ１１２は、生産工程において各プログラマブルデバイス１２８のデバイス識別表示及び妥当性ステータスをログ記録した妥当性検査報告書を生成してよい。有効でないプログラマブルデバイス１２８は、後で除去又は破壊されてよい。
３．０．機能の概要
【０２４５】
セキュアプログラミングシステム１００は、セキュア要素、例えば、図１のプログラマブルデバイス１２８及び信頼できるデバイス１３０の構成及びプロビジョニングを様々な様式で行うことが可能である。セキュア要素に対して実施される操作のタイプに応じて、様々なレベルのセキュリティが実装されてよい。様々なエンドユーザの需要に対応する為に、同じ物理的システムに対して様々なユースケース及びプロセスフローが実装されてよい。
【０２４６】
次に図１１を参照すると、１つ以上の実施形態による、図１のプログラマブルデバイス１２８のプロビジョニングプロセスフローの例が示されている。上述の図１のシステム１００のようなシステムを含む様々なシステムにおいて、プロビジョニングプロセスフロー１１０２の様々な要素が実施されてよい。一実施形態では、後述の機能ブロックに関して説明される各プロセスが、１つ以上のコンピュータプログラム、他のソフトウェア要素、及び／又は、汎用コンピュータ又は専用コンピュータのいずれかにおけるデジタルロジックを使用し、同時に、コンピュータのメモリとの対話、及びそのメモリの物理的状態の変換を必要とする、データの取り出し、変換、及び記憶の各操作を実施することにより、実装されてよい。
【０２４７】
プロビジョニングプロセスフロー１１０２は、セキュアプログラミングシステム１００から提供されるターゲットペイロード１１１４によりプログラマブルデバイスをプログラムすることを担う。プロビジョニングプロセスフロー１１０２は、セキュアプログラミングシステム１００においてプロビジョニングジョブを開始することと、プログラマブルデバイス１２８を受け取ることと、暗号化されたペイロード１１１６を計算することと、プログラマブルデバイス１２８をプロビジョニングすることと、を担ってよい。プロビジョニングプロセスフロー１１０２は、図８のシステム識別表示８１４、及び図３のデバイス識別表示３０２をプログラマブルデバイス１２８にプログラムすることを示すことが可能であり、同時にそれらの間のセキュリティリンケージを示すことが可能である。
【０２４８】
プロビジョニングプロセスフロー１１０２は、様々な構成を有してよい。例えば、プロビジョニングプロセスフロー１１０２は、プロビジョニングジョブを開始するモジュール１１０４と、デバイス情報を受け取るモジュール１１０６と、暗号化されたペイロードを計算するモジュール１１０８と、デバイスをプロビジョニングするモジュール１１１０と、を含んでよい。
【０２４９】
プロビジョニングジョブを開始するモジュール１１０４は、プログラマブルデバイス１２８にプログラムするジョブ制御パッケージ１１１２及びターゲットペイロード１１１４を受け取ってよい。ジョブ制御パッケージ１１１２は、ターゲットペイロード１１１４によりプログラマブルデバイス１２８をプロビジョニングする為の命令及びパラメータを含む。
【０２５０】
ターゲットペイロード１１１４は、暗号化されてプログラマブルデバイス１２８にプログラムされる情報である。ターゲットペイロード１１１４は、データ、コード、セキュリティ鍵、及び他の情報を含んでよい。例えば、ターゲットペイロード１１１４は、図１の信頼できるデバイス１３０に対して実行されるセキュアファームウェアコードであってよい。別の例では、ターゲットペイロード１１１４は、一緒に組み合わされた様々なデータ要素、例えば、一連の追加セキュリティ鍵及び１つ以上のソフトウェアモジュールを含んでよい。例えば、ジョブ制御パッケージ１１１２は、図９のプログラミングプロジェクト９４４の一部であってよい。
【０２５１】
ジョブ制御パッケージ１１１２は、ターゲットペイロード１１１４によりプログラマブルデバイス１２８の構成及びプログラミングを行うのに必要な情報を含む。ジョブ制御パッケージ１１１２は、プログラミング命令、セキュリティ情報、プログラマ構成情報、デバイス構成情報、及び他の同様のジョブ情報を含んでよい。
【０２５２】
一事例では、ジョブ制御パッケージ１１１２は、特定のプログラマブルデバイス１２８群をプロビジョニングする命令を収容してよい。ジョブ制御パッケージ１１１２は、プログラマブルデバイス１２８にプログラムされる前のターゲットペイロード１１１４の暗号化に使用される、図１のセキュリティ鍵１０６の１つ以上を含んでよい。セキュリティ鍵１０６は、ターゲットペイロード１１１４の暗号化に使用される信頼の基点を表すことが可能である。
【０２５３】
ジョブ制御パッケージ１１１２は、セキュアプログラミングシステム１００を識別するセキュリティ鍵１０６、図１のプログラミングユニット１１０、図１のプログラマ１１２、ターゲットペイロード１１１４、及び他のセキュリティパラメータを含んでよい。例えば、図２のプログラマ識別表示２１６は、プログラマ１１２に関連付けられた図１の公開鍵１５４を使用して暗号化されてよい。図２のプログラマ識別表示２１６は、プログラマ１１２に関連付けられたセキュリティ鍵１０６の図１の秘密鍵１５２でのみ復号可能である。他のシステム要素の識別子も、その要素に関連付けられた公開鍵１５４及び秘密鍵１５２により、同様に暗号化及び復号されることが可能である。
【０２５４】
ジョブ制御パッケージ１１１２は、生産工程を実行する為の、プログラマ１１２のプログラマ識別表示２１６を含んでよい。ジョブ制御パッケージ１１１２のプログラマ識別表示２１６が、使用されるプログラマ１１２の識別表示と一致しない場合には、生産ジョブは実行されない。これにより、指定されたプログラマ１１２でのみ実行されるようにジョブを制限することが可能になる。同様に、ジョブ制御パッケージ１１１２は、ジョブ制御パッケージ１１１２が既知の場所の既知の設備でのみ実行可能であるようにする為に、施設識別表示、工場識別表示、又は他の場所及び設備の識別子を含んでよい。これにより、セキュアデバイスの不正な生産を防ぐことが可能である。
【０２５５】
プロビジョニングジョブを開始するモジュール１１０４が完了した後、制御フローが、図３のデバイス識別表示を受け取るモジュール３１６に渡されてよい。デバイス情報を受け取るモジュール１１０６は、プログラムされるプログラマブルデバイス１２８に関する情報を受け取ることが可能である。
【０２５６】
セキュアプログラミングシステム１００は、図７の製造実行システム７０２と結合されてよい。ＭＥＳ７０２は、プログラムされるプログラマブルデバイス１２８のシリアル番号をセキュアプログラミングシステム１００に送るように構成されてよい。
【０２５７】
例えば、ＭＥＳ７０２は、光技術又は無線周波数技術によりプログラマブルデバイス１２８のシリアル番号を読み取ることが可能である。別の例では、ＭＥＳ７０２は、プログラムされるプログラマブルデバイス１２８に関連付けられたシリアル番号又は他のパラメータのリストでプログラムされてよい。更に別の例では、セキュアプログラミングシステム１００は、プログラマブルデバイス１２８のシリアル番号を直接読み取ることが可能である。デバイス情報を受け取るモジュール１１０６が完了した後、制御フローが、暗号化されたペイロードを計算するモジュール１１０８に渡されてよい。
【０２５８】
暗号化されたペイロードを計算するモジュール１１０８は、ターゲットペイロード１１１４を暗号化して、暗号化されたペイロード１１１６を形成してよい。暗号化されたペイロード１１１６は、各プログラマブルデバイス１２８について図３のデバイス識別表示３０２の１つ以上の部分に関連付けられた公開鍵１５４を使用して形成されてよい。
【０２５９】
暗号化されたペイロードを計算するモジュール１１０８は、様々な様式でターゲットペイロード１１１４を暗号化してよい。例えば、ターゲットペイロード１１１４は、図５のシリアル番号マーカ５１２に関連付けられた公開鍵１５４、図５のファームウェアマーカ５０６、図５の製造マーカ５１０、図５の製品マーカ５０８、図５の動作マーカ５１４、図５のＯＥＭマーカ５１６、又は同様の、１つのプログラマブルデバイス１２８のデバイス識別表示３０２内の値を使用して暗号化されてよい。暗号化されたペイロード１１１６は、デバイス識別表示３０２から選択されたパラメータに関連付けられた秘密鍵１５２を使用して復号可能である。
【０２６０】
別の例では、暗号化されたペイロードを計算するモジュール１１０８は、セキュアプログラミングシステム１００からの情報を使用して、暗号化されたペイロード１１１６を計算することが可能である。ターゲットペイロードは、セキュアプログラミングシステム１００に関連付けられた公開鍵１５４、プログラミングユニット１１０、プログラマ１１２、図２のデバイスアダプタ２０８、又は別の同様のパラメータを使用して暗号化されてよい。
【０２６１】
暗号化されたペイロードを計算するモジュール１１０８は、ターゲットペイロード１１１４の様々な部分を使用して、暗号化されたペイロード１１１６を形成してよい。例えば、暗号化されたペイロード１１１６は、ターゲットペイロード１１１４全体、又はターゲットペイロード１１１４のサブセット、又はターゲットペイロード１１１４と他の情報の組み合わせを暗号化することによって形成されてよい。
【０２６２】
暗号化されたペイロードを計算するモジュール１１０８は、セキュリティモジュールを使用してターゲットペイロード１１１４を処理することが可能である。暗号化されたペイロードを計算するモジュール１１０８は、識別表示モジュール３１６、図３の認証モジュール３２０、図３の暗号モジュール３１８、又は図３のコード署名モジュール３２２の任意の組み合わせを使用して、暗号化されたペイロード１１１６の形成に必要なセキュリティ動作を行うことが可能である。
【０２６３】
識別表示モジュール３１６は、各プログラマブルデバイス１２８の識別表示を検査することに使用されてよい。認証モジュール３２０は、各プログラマブルデバイス１２８に関連付けられたパラメータを認証することに使用されてよい。暗号モジュール３１８は、ターゲットペイロード１１１４及び暗号化されたペイロード１１１６の暗号化及び復号に使用されてよい。コード署名モジュール３２２は、ターゲットペイロード１１１４内で図３のコード要素３１４の妥当性を検査することに使用されてよい。暗号化されたペイロードを計算するモジュール１１０８が完了した後、制御フローが、デバイスをプロビジョニングするモジュール１１１０に渡されてよい。
【０２６４】
デバイスをプロビジョニングするモジュール１１１０は、暗号化されたペイロード１１１６により、各プログラマブルデバイス１２８をプログラムしてよい。デバイスをプロビジョニングするモジュール１１１０は、暗号化されたペイロード１１１６を、プログラマ１１２と結合されたプログラマブルデバイス１２８に転送する為に、プログラマ１１２のハードウェアとインタフェースしてよい。
【０２６５】
例えば、デバイスをプロビジョニングするモジュール１１１０は、各プログラマブルデバイス１２８（例えば、図１のデータデバイス１３２）を、暗号化されたペイロード１１１６のファイルでプログラムしてよい。例えば、デバイスをプロビジョニングするモジュール１１１０は、デバイスタイプが異なる各プログラマブルデバイス１２８を構成する為の特定情報を含んでよい。データデバイス１３２は、デバイスアダプタ２０８によりプログラマ１１２と結合可能である。
【０２６６】
別の例では、デバイスをプロビジョニングするモジュール１１１０は、各プログラマブルデバイス１２８、例えば、信頼できるデバイス１３０をプロビジョニングしてよい。信頼できるデバイス１３０は、スマートフォン、回路基板、セキュリティデバイス、又は同様のデバイスなどであってよい。信頼できるデバイス１３０は、プログラマ１１２と、デバイスアダプタ２０８内で直接結合されてよく、或いは有線接続又は無線接続のようなデータリンクを介して結合されてよく、或いはこれらの組み合わせにより結合されてよい。
【０２６７】
一事例では、セキュアプログラミングシステム１００は、各プログラマブルデバイス１２８の識別情報を、そのシステムの構築に使用されたコンポーネントに基づいて確立してよい。スマートフォンや回路基板のような、信頼できるデバイス１３０のそれぞれについて、デバイス識別表示３０２は、信頼できるデバイス１３０内の各コンポーネントのシリアル番号又は他の識別子を含んでよい。プログラマブルデバイス１２８の識別情報は、ハードウェアコンポーネント、ソフトウェアコンポーネント、及び／又はファームウェアコンポーネントにわたってよい。
【０２６８】
デバイス識別表示３０２はＯＥＭマーカ５１６を含んでよい為、識別表示は、全ての製造者及びベンダにまたがって一意でありうる。更に、デバイス識別表示３０２は、製造時にセキュアプログラミングシステム１００によって暗号化されてよい為、プログラマブルデバイス１２８の識別情報は、デバイス識別表示３０２及びセキュリティ鍵１０６を使用してデバイスの外部及びデバイス上にセキュアに記憶されてよい。
【０２６９】
セキュアプログラミングシステム１００の一利点として、図８のシステム識別表示８１４はデバイスセキュリティのレベルを高めることが可能である。システム識別表示８１４の暗号化バージョンでプログラマブルデバイス１２８をエンコードすることにより、プログラマブルデバイス１２８は、各プログラマブルデバイス１２８のライフサイクルの残りに関する信頼レベル及びトレーサビリティが高くなる。
【０２７０】
セキュアプログラミングシステム１００の更に別の利点として、システム識別表示８１４の使用により、シリコンデバイスレベルでの信頼の基点が得られる為に、製造サプライチェーンがよりセキュアになる。システム識別表示８１４は、プログラマブルデバイス１２８にプログラムされ、一意の製造データに基づき、これを含む。システム識別表示８１４により、セキュリティ侵害されるファームウェアの検出が可能になる。これは、セキュリティ侵害されるファームウェアには適正な暗号化形式で利用可能なシステム識別表示８１４がない為である。
【０２７１】
このブロック図は、システム生成の多くの可能なフローの１つを示しているに過ぎない。別のフローでは、より少ない要素、より多くの要素、又は別の要素が様々な構成で含まれてよい。例えば、実施形態によっては、セキュリティモジュールが省略されてよく、他のいずれかの要素がその省略された要素の代用として頼りにされてよい。別の例として、一実施形態では、フローが更にハッシュ生成モジュールを含んでよい。
【０２７２】
R次に図１２を参照すると、１つ以上の実施形態による、図１のプログラマブルデバイス１２８のセキュア製造プロセスフローの例１２０２が示されている。上述の図１のシステム１００のようなシステムを含む様々なシステムにおいて、プロビジョニングプロセスフロー１２０２の様々な要素が実施されてよい。一実施形態では、後述の機能ブロックに関して説明される各プロセスが、１つ以上のコンピュータプログラム、他のソフトウェア要素、及び／又は、汎用コンピュータ又は専用コンピュータのいずれかにおけるデジタルロジックを使用し、同時に、コンピュータのメモリとの対話、及びそのメモリの物理的状態の変換を必要とする、データの取り出し、変換、及び記憶の各操作を実施することにより、実装されてよい。
【０２７３】
プロビジョニングプロセスフロー１２０２では、図１のプログラマ１２２においてプログラマブルデバイス１２８を認証し、ＯＥＭデバイス証明書９４６を生成し、ターゲットペイロード１２２０をプログラマブルデバイス１２８にプログラムし、シリコンベンダデバイス証明書９２６及びＯＥＭデバイス証明書９４６を検証する。
【０２７４】
プロビジョニングプロセスフロー１２０２は、様々な構成を有してよい。例えば、プロビジョニングプロセスフロー１２０２は、デバイス証明書を抽出するモジュール１２０４と、デバイスを認証するモジュール１２０６と、ＯＥＭデバイス証明書を生成するモジュール１２０８と、デバイスをプログラムするモジュール１２１０と、妥当性ステータスを生成するモジュール１２１２と、デバイスをソートするモジュール１２１４と、を含んでよい。プロビジョニングプロセスフロー１２０２の制御フローは、モジュールからモジュールへと順番に渡されてよい。
【０２７５】
デバイス証明書を抽出するモジュール１２０４は、プログラマブルデバイス１２８からシリコンベンダデバイス証明書９２６を抽出してよい。シリコンベンダデバイス証明書９２６は、シリコンベンダ秘密鍵９５８で暗号化されて、図１のプログラマ１２２にマウントされたプログラマブルデバイス１２８の図３のセキュア記憶ユニット３２６に記憶されてよい。プログラマ１２２は、シリコンベンダによってプログラマブルデバイス１２８にプリプログラムされていたシリコンベンダデバイス証明書９２６を、セキュア記憶ユニット３２６にアクセスして抽出してよい。
【０２７６】
デバイスを認証するモジュール１２０６は、シリコンベンダデバイス証明書９２６を認証することによって、プログラマ１２２内のプログラマブルデバイス１２８がシリコンベンダからの真正デバイスであることを実証することが可能である。プログラマブルデバイス１２８を認証する為に、シリコンベンダ公開鍵９５８で既に暗号化されているシリコンベンダデバイス証明書９２６を、シリコンベンダ公開鍵９５４で復号することが可能である。復号が成功すれば、プログラマブルデバイス１２８は有効であり、シリコンベンダからのものである。一方、シリコンベンダデバイス証明書９２６をシリコンベンダ公開鍵９５４で正常に復号することができない場合、デバイスは真正ではない。
【０２７７】
ＯＥＭデバイス証明書を生成するモジュール１２０８は、図９のＯＥＭデバイス証明書テンプレート９５０を使用してＯＥＭデバイス証明書９４６を生成してよい。ＯＥＭデバイス証明書９５０は、シリコンベンダデバイス証明書９２６から取り出された、プログラマブルデバイス１２８に関する情報を含んでよい。ＯＥＭデバイス証明書９５０は、生成された後にＯＥＭ秘密鍵９５２で署名されてよい。
【０２７８】
デバイスをプログラムするモジュール１２１０は、ＯＥＭデバイス証明書９５０及びターゲットペイロード１２２０をプログラマ１２２からプログラマブルデバイス１２８に転送してよい。ＯＥＭデバイス証明書９５０は、プログラマブルデバイス１２８の図３のセキュア記憶ユニット３２６の１つに記憶されてよい。ターゲットペイロード１２２０は、プログラマブルデバイス１２８のセキュア部分又は非セキュア部分にプログラムされてよい。ターゲットペイロード１２２０は、ファームウェアイメージ９１４、図９のファームウェア更新９１６、図３のセキュリティアルゴリズム３０４、又は他の、プログラマブルデバイス１２８において復号されるコード又はデータを含んでよい。
【０２７９】
妥当性ステータスを生成するモジュール１２１２は、ターゲットペイロード１２２０がプログラムされた後に、プログラマブルデバイス１２８からシリコンベンダデータ証明書９２６及びＯＥＭデバイス証明書９４６を取り出してよい。シリコンベンダデータ証明書９２６は、シリコンベンダ公開鍵９５４と対照して認証されてよい。ＯＥＭデバイス証明書９４６は、ＯＥＭ公開鍵９６２と対照して認証されてよい。これらのデバイス証明書が両方とも認証された場合、プログラマブルデバイス１２８は有効である。
【０２８０】
デバイスをソートするモジュール１２１４は、それらのデバイス証明書が認証されたことに基づいて、プログラマブルデバイス１２８の妥当性ステータス１２２２を生成してよい。これらのデバイス証明書が両方とも有効であれば、妥当性ステータス１２２２は有効として設定される。これらのデバイス証明書のいずれか又は両方が無効であれば、妥当性ステータス１２２２は無効として設定される。
【０２８１】
これらのデバイス証明書の一方又は両方が無効であることが妥当性ステータス１２２２によって示された場合、現在プログラムされているプログラマブルデバイス１２８は無効であり、使用不可である。プログラマ１２２は、無効なプログラマブルデバイス１２８を廃棄用出力レセプタクルに転送してよい。
【０２８２】
デバイスをソートするモジュール１２１４は又、妥当性検査に不合格であったプログラマブルデバイス１２８のシリアル番号又はデバイス識別表示をリストした妥当性検査報告書を生成してよい。不正デバイスの意図的な使用を報告することにより、潜在的な不正行為を識別してセキュリティを高めることが可能である。
【０２８３】
プログラマブルデバイス１２８がプログラムされた後にシリコンベンダデータ証明書９２６及びＯＥＭデバイス証明書９４６の完全性を検証することは、図１のプログラマ１１２に最初にロードされたデバイスと同じデバイスが図１１のターゲットペイロード１１１４を受け取ったことを示すことによって、セキュリティのレベルを高める。プログラマブルデバイス１２８がシリコンベンダによって承認されていることをチェックすることと、プログラマブルデバイス１２８がシリコンベンダ及び図９のＯＥＭユーザ９６８によって承認されていることを完了時にダブルチェックすることは、不正な製造の防止に役立ち、偽造品の可能性を低減する。
４．０．例示的実施形態
【０２８４】
以下の各節では、幾つかの実施形態の、限定ではない例を示す。
【０２８５】
一実施形態によれば、セキュアプログラミングシステムの動作方法が、プログラマにマウントされたプログラマブルデバイスからシリコンベンダデバイス証明書を抽出するステップと、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証するステップと、シリコンベンダデバイス証明書に基づいてプログラマブルデバイスのＯＥＭデバイス証明書を生成するステップであって、ＯＥＭデバイス証明書はＯＥＭ秘密鍵で署名されている、ＯＥＭデバイス証明書を生成するステップと、ＯＥＭデバイス証明書及びターゲットペイロードを、プログラマ内のプログラマブルデバイスに転送するステップと、ＯＥＭデバイス証明書がプログラマブルデバイスに転送された後に、ＯＥＭデバイス証明書及びシリコンベンダデバイス証明書をプログラマブルデバイスから抽出するステップと、ＯＥＭ公開鍵を使用してＯＥＭデバイス証明書を認証し、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証することにより、妥当性ステータスを生成するステップであって、ＯＥＭデバイス証明書又はシリコンベンダデバイス証明書のいずれかが正常に認証されない場合には妥当性ステータスが無効として設定される、妥当性ステータスを生成するステップと、妥当性ステータスに基づいて、プログラマブルデバイスをプログラマの出力レセプタクルにソートするステップと、を含む。
【０２８６】
一実施形態では、この方法は更に、プログラマブルデバイスのセキュア記憶ユニットにＯＥＭデバイス証明書を書き込むステップを含む。
【０２８７】
一実施形態では、この方法は更に、プログラマブルデバイスのセキュア記憶ユニットからシリコンベンダデバイス証明書を抽出するステップを含む。
【０２８８】
一実施形態では、この方法は更に、プログラマブルデバイスをプログラマにある不良デバイスレセプタクルに入れるステップを含む。
【０２８９】
一実施形態では、この方法は更に、プログラマのプログラマ識別表示を有するジョブ制御パッケージを生成するステップを含む。
【０２９０】
一実施形態によれば、セキュアプログラミングシステムの動作方法が、ターゲットペイロードを有するジョブ制御パッケージを受け取るステップと、プログラマにマウントされたプログラマブルデバイスからシリコンベンダデバイス証明書を抽出するステップであって、シリコンベンダデバイス証明書はシリコンベンダ秘密鍵で暗号化されている、シリコンベンダデバイス証明書を抽出するステップと、工場セキュリティシステム内で、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証するステップと、シリコンベンダデバイス証明書に基づいてプログラマブルデバイスのＯＥＭデバイス証明書を生成するステップであって、ＯＥＭデバイス証明書はＯＥＭ秘密鍵で署名されている、ＯＥＭデバイス証明書を生成するステップと、ＯＥＭデバイス証明書及びターゲットペイロードを、プログラマ内のプログラマブルデバイスに転送するステップであって、ＯＥＭデバイス証明書はプログラマブルデバイスのセキュア記憶ユニットに記憶されている、転送するステップと、ＯＥＭデバイス証明書がプログラマブルデバイスに転送された後に、ＯＥＭデバイス証明書及びシリコンベンダデバイス証明書をプログラマブルデバイスから抽出するステップと、ＯＥＭ公開鍵を使用してＯＥＭデバイス証明書を認証し、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証することにより、妥当性ステータスを生成するステップであって、ＯＥＭデバイス証明書又はシリコンベンダデバイス証明書のいずれかが正常に認証されない場合には妥当性ステータスが無効として設定される、妥当性ステータスを生成するステップと、妥当性ステータスに基づいて、プログラマブルデバイスを出力レセプタクルにソートするステップと、を含む。
【０２９１】
一実施形態では、この方法は更に、承認された数をＯＥＭデバイス証明書にエンコードするステップを含む。
【０２９２】
一実施形態では、この方法は更に、工場セキュリティシステムにおいてＯＥＭデバイス証明書及びシリコンベンダデバイス証明書を認証するステップを含む。
【０２９３】
一実施形態では、この方法は更に、シリコンベンダデバイス証明書にあるシリコンベンダ識別子を、プログラミングユニットのセキュリティコントローラに記憶されているベンダ識別子と照合するステップを含む。
【０２９４】
一実施形態では、この方法は更に、妥当性ステータスにリンクされたシリコンベンダデバイス証明書のデバイス識別子を有する有効デバイスリストを生成するステップを含む。
【０２９５】
一実施形態によれば、セキュアプログラミングシステムが、プログラマであって、プログラマブルデバイスからシリコンベンダデバイス証明書を抽出し、ＯＥＭデバイス証明書及びターゲットペイロードを、プログラマ内のプログラマブルデバイスに転送し、ＯＥＭデバイス証明書がプログラマブルデバイスに転送された後に、ＯＥＭデバイス証明書及びシリコンベンダデバイス証明書をプログラマブルデバイスから抽出し、妥当性ステータスに基づいて、プログラマブルデバイスをプログラマの出力レセプタクルにソートするプログラマと、プログラマと結合された工場セキュリティシステムであって、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証し、シリコンベンダデバイス証明書に基づいて、ＯＥＭ秘密鍵で署名されている、プログラマブルデバイスのＯＥＭデバイス証明書を生成し、ＯＥＭ公開鍵を使用してＯＥＭデバイス証明書を認証し、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証することにより、妥当性ステータスを生成し、ＯＥＭデバイス証明書又はシリコンベンダデバイス証明書のいずれかが正常に認証されない場合には妥当性ステータスを無効として設定する工場セキュリティシステムと、を含む。
【０２９６】
一実施形態では、このシステムは更に、ＯＥＭデバイス証明書がプログラマブルデバイスのセキュア記憶ユニットに記憶されている。
【０２９７】
一実施形態では、このシステムは更に、シリコンベンダデバイス証明書がプログラマブルデバイスのセキュア記憶ユニットから抽出される。
【０２９８】
一実施形態では、このシステムは更に、プログラマがプログラマブルデバイスを不良デバイスレセプタクルに入れる。
【０２９９】
一実施形態では、このシステムは更に、ジョブ制御パッケージがプログラマのプログラマ識別表示を有する。
【０３００】
一実施形態では、このシステムは更に、プログラマブルデバイスが、シリコンベンダ秘密鍵で暗号化されたシリコンベンダデバイス証明書を含み、ＯＥＭデバイス証明書及びシリコンベンダデバイス証明書は両方ともセキュア記憶ユニットに記憶されており、プログラマは、ターゲットペイロードを有するジョブ制御パッケージを含み、工場セキュリティシステムは、シリコンベンダ公開鍵を使用してシリコンベンダデバイス証明書を認証する。
【０３０１】
一実施形態では、このシステムは更に、ＯＥＭデバイス証明書が、プログラマブルデバイスの承認された数を有する。
【０３０２】
一実施形態では、このシステムは更に、ＯＥＭデバイス証明書及びシリコンベンダデバイス証明書が両方とも、工場セキュリティシステムのセキュリティコントローラによって妥当性を検査される。
【０３０３】
一実施形態では、このシステムは更に、シリコンベンダデバイス証明書にあるシリコンベンダ識別子が、プログラミングユニットのセキュリティコントローラにプリインストールされているシリコンベンダ識別子と一致する。
【０３０４】
一実施形態では、このシステムは更に、プログラマブルデバイスのシリコンベンダデバイス証明書のデバイス識別子を有する有効デバイスリストを含む。
【０３０５】
これら及び他の実施形態の別の例が本開示全体を通して示される。
５．０．実装の機構−ハードウェアの概要
【０３０６】
一実施形態によれば、本明細書に記載の技術は、１つ以上の専用コンピューティング装置によって実装される。専用コンピューティング装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルド装置、スマートフォン、メディア装置、ゲーミングコンソール、ネットワーキング装置、又は他の任意の、本技術を実装するハードワイヤードロジック及び／又はプログラムロジックを組み込んだ装置であってよい。専用コンピューティング装置は、本技術を実施するようにハードワイヤリングされてよく、或いは、本技術を実施するように永続的にプログラムされたデジタル電子デバイス（例えば、１つ以上の特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ））を含んでよく、或いは、ファームウェア、メモリ、他の記憶装置、又はこれらの組み合わせにあるプログラム命令に従って本技術を実施するようにプログラムされた１つ以上の汎用ハードウェアプロセッサを含んでよい。そのような専用コンピューティング装置は、本技術を達成する為に、カスタムハードワイヤードロジック、ＡＳＩＣ、又はＦＰＧＡとカスタムプログラミングとを組み合わせてもよい。
【０３０７】
次に図１３を参照すると、一実施形態による、上述の技術を実装することに利用されるコンピュータシステム１３００を示すブロック図が示されている。コンピュータシステム１３００は、例えば、デスクトップコンピューティング装置、ラップトップコンピューティング装置、タブレット、スマートフォン、サーバアプライアンス、コンピューティングメインフレーム、マルチメディア装置、ハンドヘルド装置、ネットワーキング装置、又は他の任意の適切な装置であってよい。
【０３０８】
コンピュータシステム１３００は、情報を伝達する為の１つ以上のバス１３０２又は他の通信機構と、情報を処理する為にバス１３０２と結合された１つ以上のハードウェアプロセッサ１３０４とを含む。ハードウェアプロセッサ１３０４は、例えば、汎用マイクロプロセッサであってよい。バス１３０２は、様々な内部コンポーネント及び／又は外部コンポーネントを含んでよく、それらは、内部のプロセッサバス又はメモリバス、Ｓｅｒｉａｌ  ＡＴＡバス、ＰＣＩ  Ｅｘｐｒｅｓｓバス、ユニバーサルシリアルバス、ハイパートランスポートバス、インフィニバンドバス、及び／又は他の任意の、適切な有線又は無線の通信チャネルであってよく、これらに限定されない。
【０３０９】
コンピュータシステム１３００は又、プロセッサ１３０４によって実行される情報及び命令を記憶する為に、バス１３０２と結合された主メモリ１３０６、例えば、ランダムアクセスメモリ（ＲＡＭ）又は他の動的又は揮発性の記憶装置を含む。主メモリ１３０６は又、プロセッサ１３０４で実行される命令の実行中に一時変数又は他の中間情報を記憶する為に使用されてよい。そのような命令は、プロセッサ１３０４からアクセス可能な非一時的記憶媒体に記憶された場合に、コンピュータシステム１３００を、それらの命令で指定された動作を実施するようにカスタマイズされた専用マシンにする。
【０３１０】
コンピュータシステム１３００は更に、プロセッサ１３０４用の静的情報及び命令を記憶する為に、１つ以上の読み出し専用メモリ（ＲＯＭ）１３０８、又は他の、バス１３０２と結合された静的記憶装置を含んでよい。情報及び命令を記憶する為に、１つ以上の記憶装置１３１０、例えば、ソリッドステートドライブ（ＳＳＤ）、磁気ディスク、光ディスク、又は他の適切な不揮発性記憶装置が設けられ、バス１３０２と結合されている。
【０３１１】
コンピュータシステム１３００は、情報をコンピュータユーザに提示する為に、バス１３０２を介して１つ以上のディスプレイ１３１２と結合されてよい。例えば、コンピュータシステム１３００は、ハイデフィニションマルチメディアインタフェース（ＨＤＭＩ）ケーブル又は他の適切なケーブリングを介して液晶ディスプレイ（ＬＣＤ）モニタと接続されてよく、且つ／又は、ピアツーピアＷｉ−Ｆｉ  Ｄｉｒｅｃｔ接続のような無線接続を介して発光ダイオード（ＬＥＤ）テレビ受像機と接続されてよい。適切なタイプのディスプレイ１３１２の別の例として、プラズマディスプレイ装置、プロジェクタ、ブラウン管（ＣＲＴ）モニタ、電子ペーパ、仮想現実ヘッドセット、点字端末、及び／又は他の任意の適切な、情報をコンピュータユーザに出力する装置があってよく、これらに限定されない。一実施形態では、任意の適切なタイプの出力装置、例えば、オーディオスピーカやプリンタなどが、ディスプレイ１３１２の代わりに利用されてよい。
【０３１２】
一実施形態では、コンピュータシステム１３００内の１つ以上のグラフィックス処理ユニット（ＧＰＵ）により、ディスプレイ１３１２への出力を加速することが可能である。ＧＰＵは、例えば、グラフィックスデータ、３Ｄデータ、及び／又はマルチメディアの表示に関連する演算動作を実施することに高度に最適化された、高度に並列化されたマルチコア浮動小数点処理ユニットであってよい。ＧＰＵは、すぐにディスプレイ１３１２に出力される画像及び／又はビデオのデータの演算に加えて、超高性能画面外画像処理の為に、画面外の画像又は他のビデオデータをレンダリングして、そのデータをプログラムに読み戻すことにも使用されてよい。他の様々な演算タスクの負担が、プロセッサ１３０４からＧＰＵに移されてよい。
【０３１３】
情報及びコマンドの選択結果をプロセッサ１３０４に伝達する為に、１つ以上の入力装置１３１４がバス１３０２と結合されてよい。入力装置１３１４の一例として、英数字キー及び他のキーを含むキーボードがある。別のタイプのユーザ入力装置１３１４として、方向情報及びコマンドの選択結果をプロセッサ１３０４に伝達する為、並びにディスプレイ１３１２上のカーソルの動きを制御する為のカーソル制御装置１３１６（例えば、マウス、トラックボール、又はカーソル方向キー）がある。この入力装置は、典型的には、２つの軸、即ち、第１の軸（例えば、ｘ）及び第２の軸（例えば、ｙ）での自由度２を有しており、これによって平面内の位置を指定することが可能になっている。更に別の適切な入力装置１３１４の例として、ディスプレイ１３１２に貼り付けられたタッチスクリーンパネル、カメラ、マイクロホン、加速度計、動き検出器、及び／又は他のセンサがある。一実施形態では、ネットワークベースの入力装置１３１４が利用されてよい。そのような実施形態では、ユーザ入力及び／又は他の情報又はコマンドは、ローカルエリアネットワーク（ＬＡＮ）又は他の適切な共用ネットワーク上のルータ及び／又はスイッチを介して、或いは、コンピュータシステム１３００上の入力装置１３１４からネットワークリンク１３２０へのピアツーピアネットワークを介して中継されてよい。
【０３１４】
コンピュータシステム１３００は、本明細書に記載の技術を実装する為に、カスタマイズされたハードワイヤードロジック、１つ以上のＡＳＩＣ又はＦＰＧＡ、ファームウェア、及び／又はプログラムロジックを使用してよく、これらは、コンピュータシステムと組み合わされて、コンピュータシステム１３００が専用マシンになるようにしたり、そのようにコンピュータシステム１３００をプログラムしたりする。一実施形態によれば、本明細書に記載の技術は、主メモリ１３０６に格納されている１つ以上の命令の１つ以上のシーケンスをプロセッサ１３０４が実行した時点でコンピュータシステム１３００によって実施される。そのような命令は、記憶装置１３１０などの別の記憶媒体から主メモリ１３０６に読み込まれてよい。主メモリ１３０６に格納された命令のシーケンスが実行されると、プロセッサ１３０４は本明細書に記載の処理ステップを実施する。代替実施形態では、ソフトウェア命令の代わりに、又はソフトウェア命令との組み合わせでハードワイヤード回路が使用されてよい。
【０３１５】
本明細書では「記憶媒体」という用語は、マシンを特定の様式で動作させるデータ及び／又は命令を記憶する任意の非一時的媒体を意味する。そのような記憶媒体は、不揮発性媒体及び／又は揮発性媒体を含んでよい。不揮発性媒体としては、例えば、光ディスク又は磁気ディスク、例えば、記憶装置１３１０がある。揮発性媒体としては、動的メモリ、例えば、主メモリ１３０６がある。記憶媒体の一般的な形態としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、又は他の任意の磁気データ記憶媒体、ＣＤ−ＲＯＭ、他の任意の光データ記憶媒体、せん孔パターンを有する任意の物理的媒体、ＲＡＭ、ＰＲＯＭ、及びＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ、他の任意のメモリチップ又はカートリッジがある。
【０３１６】
記憶媒体は伝送媒体とは別個のものであるが、伝送媒体との組み合わせで使用されてよい。伝送媒体は、記憶媒体間の情報転送に関係する。伝送媒体としては、例えば、同軸ケーブル、銅線、光ファイバなどがあり、これにはバス１３０２を構成するワイヤが含まれる。伝送媒体は、音波又は光波の形態であってもよく、例えば、電波通信や赤外線データ通信の際に生成される音波又は光波の形態であってもよい。
【０３１７】
プロセッサ１３０４が実行する１つ以上の命令の１つ以上のシーケンスの搬送には、様々な形態の媒体が関与してよい。例えば、これらの命令は、最初にリモートコンピュータの磁気ディスク又はソリッドステートドライブに保持されてよい。リモートコンピュータは、それらの命令をその動的メモリにロードし、モデムを使用して、それらの命令を変調信号としてネットワーク（例えば、ケーブルネットワークやセルラネットワーク）に送信してよい。コンピュータシステム１３００の固有のモデムが、ネットワーク上のデータを受信し、信号を復調して、伝送された命令をデコードしてよい。そして、しかるべき回路がそのデータをバス１３０２上に置いてよい。バス１３０２は、データを主メモリ１３０６に搬送し、プロセッサ１３０４が主メモリ１３０６から命令を取り出して実行する。主メモリ１３０６が受け取った命令は、任意選択で、プロセッサ１３０４による実行の前又は後に記憶装置１３１０に記憶されてよい。
【０３１８】
コンピュータシステム１３００は更に、一実施形態では、バス１３０２と結合された１つ以上の通信インタフェース１３１８を含んでよい。通信インタフェース１３１８は、ローカルネットワーク１３２２に接続されたネットワークリンク１３２０への（典型的には二方向の）データ通信結合を提供する。例えば、通信インタフェース１３１８は、何らかの統合ディジタル通信サービス網（ＩＳＤＮ）カード、ケーブルモデム、衛星モデム、又は、対応するタイプの電話回線にデータ通信接続を提供するモデムであってよい。別の例として、１つ以上の通信インタフェース１３１８は、データ通信接続を互換ＬＡＮに提供するローカルエリアネットワーク（ＬＡＮ）カードを含んでよい。更に別の例として、１つ以上の通信インタフェース１３１８は、無線ネットワークインタフェースコントローラであってよく、例えば、８０２．１１ベースのコントローラ、Ｂｌｕｅｔｏｏｔｈコントローラ、ロングタームエボリューション（ＬＴＥ）モデム、及び／又は他のタイプの無線インタフェースであってよい。任意のそのような実装では、通信インタフェース１３１８は、様々なタイプの情報を表すデジタルデータストリームを搬送する電気信号、電磁信号、又は光信号の送受信を行う。
【０３１９】
ネットワークリンク１３２０は、典型的には、１つ以上のネットワークを介する、他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク１３２０は、ローカルネットワーク１３２２を介する、ホストコンピュータ１３２４への接続、又はサービスプロバイダ１３２６が運用するデータ設備への接続を提供してよい。そしてサービスプロバイダ１３２６（例えば、インターネットサービスプロバイダ（ＩＳＰ）であってよい）は、ワイドエリアネットワーク、例えば、現在では一般的に「インターネット」と呼ばれるワールドワイドパケットデータ通信ネットワーク１３２８を通るデータ通信サービスを提供する。ローカルネットワーク１３２２及びインターネット１３２８は両方とも、デジタルデータストリームを搬送する電気信号、電磁信号、又は光信号を使用する。デジタルデータをコンピュータシステム１３００に搬送したり、コンピュータシステム１３００から搬送したりする、様々なネットワークを通る信号、並びにネットワークリンク１３２０上にあって通信インタフェース１３１８を通る信号は、伝送媒体の例示的形態である。
【０３２０】
一実施形態では、コンピュータシステム１３００は、１つ以上のネットワーク、ネットワークリンク１３２０、及び通信インタフェース１３１８を介して、プログラムコード及び／又は他のタイプの命令を含めて、メッセージを送信し、データを受信してよい。インターネットの例では、サーバ１３３０が、要求されたアプリケーションプログラム用コードを、インターネット１３２８、ＩＳＰ１３２６、ローカルネットワーク１３２２、及び通信インタフェース１３１８を介して送信してよい。受信されたコードは、受信された時点でハードウェアプロセッサ１３０４によって実行されてよく、且つ／又は、後で実行される為に、記憶装置１３１０、又は他の不揮発性記憶装置に記憶されてよい。別の例として、ネットワークリンク１３２０を介して受け取られた情報は、コンピュータシステム１３００のソフトウェアコンポーネント、例えば、ウェブブラウザ、アプリケーション、又はサーバによって解釈及び／又は処理されてよく、このコンポーネントは、その情報に基づく命令をハードウェアプロセッサ１３０４に出す。これは、場合によっては、オペレーティングシステム、及び／又はソフトウェアコンポーネントの別の中間層を介して行われる。
【０３２１】
一実施形態では、本明細書に記載のシステムの幾つか又は全てがサーバコンピュータシステムであってよく、或いはサーバコンピュータシステムを含んでよく、これらのサーバコンピュータシステムは、システムの様々なコンポーネントを一連のサーバサイドプロセスとして集合的に実装する１つ以上のコンピュータシステム１３００を含む。サーバコンピュータシステムは、ウェブサーバ、アプリケーションサーバ、データベースサーバ、及び／又は他の従来型サーバコンポーネントを含んでよく、特定の上述のコンポーネントがこれらを利用して記載の機能性を提供する。サーバコンピュータシステムは、任意の様々なソースからの入力データを含むネットワークベースの通信を受信してよく、そのようなソースとして、限定ではなく、ユーザが操作するクライアントコンピューティング装置があり、それらは、例えば、デスクトップコンピュータ、タブレット即ちスマートフォン、リモートセンシング装置、及び／又は他のサーバコンピュータシステムである。
【０３２２】
一実施形態では、特定のサーバコンポーネントの全体又は一部が、インターネットなどの１つ以上のネットワークによってシステムと結合された「クラウド」ベースのコンポーネントにより実装されてよい。クラウドベースのコンポーネントは、それらが処理、記憶、ソフトウェア、及び／又は他のリソースをシステムの他のコンポーネントに提供する為のインタフェースを露出させてよい。一実施形態では、クラウドベースのコンポーネントは、そのコンポーネントのデプロイ先である別のエンティティに代わりにサードパーティエンティティによって実装されてよい。しかしながら、実施形態によっては、記載のシステムは、単一エンティティによって所有及び運用されるコンピュータシステムによって完全に実装されてよい。
【０３２３】
一実施形態では、装置がプロセッサを含み、上述の方法のいずれかを実施するように構成されている。一実施形態では、非一時的コンピュータ可読記憶媒体がソフトウェア命令を記憶しており、これらの命令は、１つ以上のプロセッサによって実行された場合に、上述の方法のいずれかを実施させる。
６．０．拡張及び代替
【０３２４】
本明細書では、「第１の」、「第２の」、「ある特定の」、及び「特定の」という語句は、クエリ、計画、表現、ステップ、オブジェクト、デバイス、又は他のアイテムを互いに区別する命名規則として用いられており、従って、これらのアイテムは、これらが紹介された後に参照されてよい。本明細書では特に断らない限り、これらの語句の使用は、参照されているアイテムの順序づけ、タイミング、又は他の任意の特徴を意味するものではない。
【０３２５】
図面では、様々なコンポーネントが、矢印によって、他の様々なコンポーネントと通信可能に結合されているように描かれている。これらの矢印は、コンポーネント間の情報フローの特定の例を示しているに過ぎない。特定のコンポーネント間の矢印の方向も矢印線の欠落も、それらの特定コンポーネント自体の間の通信の有無を示すものとして解釈されるべきではない。実際には、各コンポーネントは、そのコンポーネントが、本明細書に記載のいずれかの機能を達成する為に、必要に応じて他のコンポーネントと通信可能に結合されることを可能にする適切な通信インタフェースを特徴として備えてよい。
【０３２６】
上述の明細書では、本発明の実施形態が、実装ごとに異なってよい様々な具体的詳細に関して説明されている。従って、本発明が何であるか、並びに出願人が何を本発明として意図しているか、を唯一且つ排他的に示すのが、本出願から出される一連のクレームであり、これは、後補正があればそれも含めて、そのようなクレームが出される際の特定の形式である。この点において、本出願のクレームには特定のクレーム従属関係が提示されているが、本出願の従属クレームの特徴は、適宜、他の従属クレームの特徴と組み合わされてよく、且つ、本出願の独立クレームの特徴と組み合わされてよく、一連のクレームに記述される特定の従属関係に従うだけのものでなくてよいことに注意されたい。更に、本明細書には複数の別々の実施形態が記載されているが、本明細書に記載の実施形態及び／又は実施形態の一部が任意に組み合わされて別の実施形態が形成されてよい。
【０３２７】
そのようなクレームに含まれる語句に関して、本明細書中に明示的に説明された定義があれば、そのような語句がクレームで使用されている場合にも、その意味はその定義に従うものとする。従って、クレーム中に明示的に記述されていない制限、要素、特性、特徴、利点、又は属性がそのようなクレームの範囲をいかなる形でも制限することはない。従って、本明細書及び図面は、制限的ではなく例示的であると考えられたい。
【図１】
2019527904.tif 000003
【図２】
2019527904.tif 000004
【図３】
2019527904.tif 000005
【図４】
2019527904.tif 000006
【図５】
2019527904.tif 000007
【図６】
2019527904.tif 000008
【図７】
2019527904.tif 000009
【図８】
2019527904.tif 000010
【図９】
2019527904.tif 000011
【図１０】
2019527904.tif 000012
【図１１】
2019527904.tif 000013
【図１２】
2019527904.tif 000014
【図１３】
2019527904.tif 000015
【国際調査報告】
2019527904.tif 000016
2019527904.tif 000017
2019527904.tif 000018