(57)【特許請求の範囲】
【請求項１】
電子デバイスのためのデジタルデータを管理する方法であって、該方法は、
リモートサーバにおけるコンピュータのプロセッサが、ネットワークを介してコントローラデバイスに該リモートサーバを通信可能に接続することであって、該リモートサーバは、該コントローラデバイスからデジタルデータを獲得するように構成されている、ことと、
該コンピュータのプロセッサが、該デジタルデータを利用するように構成されている該電子デバイスとインターフェース接続している機器上で稼動する少なくとも１つのエージェントに、該リモートサーバを通信可能に接続することであって、該少なくとも１つのエージェントは、該デジタルデータが該電子デバイスに格納されるようにするように構成されている、ことと、
各通信可能な接続を介してサービス要求を処理するために、該コンピュータのプロセッサが、該リモートサーバと該コントローラデバイスとの間と、該リモートサーバと該少なくとも１つのエージェントのそれぞれとの間とに、別個のスレッドを確立することと、
該コントローラデバイスと該少なくとも１つのエージェントとが、互いに独立してサービス提供されることを可能にするために、該コンピュータのプロセッサが、第１のスレッドで該コントローラデバイスからデータを獲得することと、少なくとも１つの第２のスレッドで該少なくとも１つのエージェントに該デジタルデータを伝送することとを該リモートサーバに行わせることと
を含む、方法。
【請求項２】
前記第１のスレッドおよび前記第２のスレッドは、別のスレッドから１つのスレッドにおける接続遅延を分離するように独立して動作する、請求項１に記載の方法。
【請求項３】
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、
リモートサーバにおけるコンピュータのプロセッサを用いて、コントローラデバイスに該リモートサーバを通信可能に接続することであって、該リモートサーバは、該コントローラデバイスからデジタルデータを獲得するように構成されている、ことと、
該デジタルデータを利用するように構成されている電子デバイスとインターフェース接続している機器上で稼動する少なくとも１つのエージェントに、該リモートサーバを通信可能に接続することであって、該少なくとも１つのエージェントは、該デジタルデータが該電子デバイスに格納されるようにするように構成されている、ことと、
各通信可能な接続を介してサービス要求を処理するために、該リモートサーバと該コントローラデバイスとの間と、該リモートサーバと該少なくとも１つのエージェントのそれぞれとの間とに、別個のスレッドを確立することと、
該コントローラデバイスと該少なくとも１つのエージェントとが、互いに独立してサービス提供されることを可能にするために、第１のスレッドで該コントローラデバイスからデータを獲得することと、少なくとも１つの第２のスレッドで該少なくとも１つのエージェントに該デジタルデータを伝送することとを該リモートサーバに行わせることと
をコンピューティングデバイスに行わせる、コンピュータ可読媒体。
【請求項４】
プロセッサと、メモリと、コントローラデバイスとの通信可能な接続性と、複数のエージェントとの通信可能な接続性とを含むリモートサーバであって、該プロセッサは、
コントローラデバイスからデジタルデータを獲得するために、該コントローラデバイスに該リモートサーバを通信可能に接続することと、
該デジタルデータを利用するように構成されている電子デバイスとインターフェース接続している機器上で稼動する少なくとも１つのエージェントに、該リモートサーバを通信可能に接続することであって、該少なくとも１つのエージェントは、該デジタルデータが該電子デバイスに格納されるようにするように構成されている、ことと、
各通信可能な接続を介してサービス要求を処理するために、該リモートサーバと該コントローラデバイスとの間と、該リモートサーバと該少なくとも１つのエージェントのそれぞれとの間とに、別個のスレッドを確立することと、
該コントローラデバイスと該少なくとも１つのエージェントとが、互いに独立してサービス提供されることを可能にするために、第１のスレッドで該コントローラデバイスからデータを獲得することと、該少なくとも１つのエージェントに、少なくとも１つの第２のスレッドで該デジタルデータを伝送することとを該リモートサーバに行わせることと
を行うように構成されている、リモートサーバ。
【請求項５】
前記第１のスレッドおよび前記第２のスレッドは、別のスレッドから１つのスレッドにおける接続遅延を分離するように独立して動作する、請求項４に記載のリモートサーバ。
【請求項６】
前記コントローラデバイスおよび前記少なくとも１つのエージェントからの前記サービス要求は、前記リモートサーバのデーモンを用いて処理される、請求項１に記載の方法。
【請求項７】
前記デジタルデータは、シリアル番号、キー、特徴起動チケットのうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項８】
前記リモートサーバは、複数の独立したスレッドのうちの１つを確立し、該複数の独立したスレッドのうちの１つは、前記コントローラデバイスによって利用される、請求項１に記載の方法。
【請求項９】
前記リモートサーバは、複数のエージェントとの複数の第２のスレッドを確立し、各第２のスレッドは、互いに独立であり、かつ、前記第１のスレッドから独立である、請求項１に記載の方法。
【請求項１０】
前記コントローラデバイスおよび前記少なくとも１つのエージェントからの前記サービス要求は、前記リモートサーバのデーモンを用いて処理される、請求項３に記載のコンピュータ可読媒体。
【請求項１１】
前記デジタルデータは、シリアル番号、キー、特徴起動チケットのうちの少なくとも１つを含む、請求項３に記載のコンピュータ可読媒体。
【請求項１２】
前記リモートサーバは、複数の独立したスレッドのうちの１つを確立し、該複数の独立したスレッドのうちの１つは、前記コントローラデバイスによって利用される、請求項３に記載のコンピュータ可読媒体。
【請求項１３】
前記リモートサーバは、複数のエージェントとの複数の第２のスレッドを確立し、各第２のスレッドは、互いに独立であり、かつ、前記第１のスレッドから独立である、請求項３に記載のコンピュータ可読媒体。
【請求項１４】
前記コントローラデバイスおよび前記少なくとも１つのエージェントからの前記サービス要求は、前記リモートサーバのデーモンを用いて処理される、請求項４に記載のリモートサーバ。
【請求項１５】
前記デジタルデータは、シリアル番号、キー、特徴起動チケットのうちの少なくとも１つを含む、請求項４に記載のリモートサーバ。
【請求項１６】
前記リモートサーバは、複数の独立したスレッドのうちの１つを確立し、該複数の独立したスレッドのうちの１つは、前記コントローラデバイスによって利用される、請求項４に記載のリモートサーバ。
【請求項１７】
前記リモートサーバは、複数のエージェントとの複数の第２のスレッドを確立し、各第２のスレッドは、互いに独立であり、かつ、前記第１のスレッドから独立である、請求項４に記載のリモートサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、米国仮特許出願第６１／２２４，８２３号（２００９年７月１０日出願）に基づく優先権を主張する。この出願の内容は参照により本明細書に援用される。
【０００２】
（技術分野）
以下は、電子資産を管理するためのシステムおよび方法に関する。
【背景技術】
【０００３】
「無駄」と見なされるものを作成し得る、製造過程中の種々の要素がある。そのような要素は、欠陥、在庫（過剰、余剰等）、過剰生産、過剰加工、移動、輸送、および待機を含み得る。加えて、クローン作成、複製、技術移転、および窃盗（物理的およびＩＰ窃盗の両方）等の外因に起因し得る費用がある。
【０００４】
また、現在の多種多様な消費者製品および商品の中心には、多くの特徴が単一のシリコンダイ上に統合されている、システムオンチップ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ／ＳｏＣ）がある。製造業者は、市場で最終製品を差別化するために、種々の特徴が有効／無効である異なるプラットフォームで、同じＳｏＣを使用し得る。特徴の無許可使用可能性は、企業にとって有意な収益損失を表す。
【０００５】
特徴プログラミングの従来の方法は、異なるマスクセットを通したＳｏＣシリコンの徹底的なカスタマイゼーション、特徴を制御するように選択的に「飛ばされ」得る、シリコンヒューズの使用、マザーボード上のジャンパーワイヤの使用、および製品ごとの異なる構成要素およびファームウェアの搭載を含む。
【０００６】
特徴のプロビジョニングは、その施設が、チップ用のウエハ製造、組立、包装、試験、ならびに構成要素およびファームウェアが最終製品またはアセンブリに統合されるシステム統合を含む、一連の生産ステップを実施する、種々の製造場所で発生する。これらの製造場所は、典型的には海外にあり、これらの施設に契約製造を外注している半導体企業には制御できない。結果として、特徴プロビジョニングコマンド、コンテンツ保護キーデータ、ソフトウェア／ファームウェアコードイメージ、試験結果、および生産高報告データ等の専有および機密データの配布および収集を管理するのに、半導体企業が分散製造施設を信用するための理由がほとんどない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
そのようなＳｏＣが有する価値、ならびに製品の製造、組立、および配布を外注する半導体企業の動向を考慮すると、信用された製造過程の欠如により、いくつかの新しい問題が出現し始める。
【課題を解決するための手段】
【０００８】
特徴プログラミングに対する従来のアプローチに関連する問題は、信用された環境で行われる必要があり、変更を行うことが高価となり得、典型的には容易に取り消すことができないことである。
【０００９】
また、合法部品と違法部品を区別する方法がない状態で、偽造または廃棄チップが新製品として扱われていることが認識されている。場合によっては、破壊されるように指定された欠陥のあるチップが、どういうわけか生産ラインに再循環されている一方で、良好なデバイスが吸い出されて、安価な競合製品または非互換性チップに代替される。結果として、チップ業者は、非公式チップが仕様を満たすことができないため返品されるにつれて保証費が増加する一方で、ブランドが希釈されているのを見始めている。
【００１０】
デジタルメディア所有者の商権を保護するように設計されているコンテンツ保護スキームの急増を考慮する時に、別の問題が生じる。これらのコンテンツ保護スキームは、デバイスごとに一意のキーデータが製造過程中のどこかで各デバイスにプログラムされることを要求する。これらのコンテンツ保護スキームのライセンシーとして、半導体製造業者は、コンテンツ保護キーデータの責任を負い、信用できない製造動作の全体を通して配布される際に、そのデータを保護する必要がある。
【００１１】
半導体製造業者が配布された製造モデルを活用し始めると、分散製造動作に対する専有デバイスおよび製造データの直接制御を失う。コンテンツ保護キーデータに加えて、特徴プロビジョニングコマンド、ソフトウェア／ファームウェア命令／機械コード、およびデバイス個人化データのような、専有データの他のアウトバウンド形態が、信用できない製造動作の全体を通して配布され、記憶されなければならない。専有製造データも、半導体企業によって、信用できない分散製造動作において記憶され、そこから収集される必要がある。インバウンド専有製造データは、試験レポート／プログラム、過程データ、および生産高管理データとして存在し得る。
【００１２】
所与の製造過程における収益を増加させる機会は、デジタル資産の安全な管理を通して競争上の利点を取得することによって存在し得る。以下では、上記の無駄を削減し、種々の用途で競争上の利点を取得するために使用され得る、ソリューションフレームワークを提供するシステムが説明される。説明されるシステムは、複数の物理的な場所にわたって展開され、製造過程に統合される、ソフトウェアおよびハードウェア構成要素を備える。このようにして、総合的なインフラストラクチャソリューションを提供することができる、製造プラットフォームが作成される。
（項目１）  
電子資産を管理する方法であって、
該方法は、
コントローラに通信可能に接続可能なアプライアンスを提供することであって、該アプライアンスは、該コントローラから電子資産を獲得するように構成されており、該アプライアンスは、複数のエージェントに通信可能な接続を提供し、該複数のエージェントは、該電子資産をデバイスに適用するように構成されている、ことと、
該コントローラに対して、および、各エージェントに対して、別個のスレッドが該アプライアンス上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該アプライアンスが該コントローラから資産を獲得し、かつ、該電子資産を該エージェントに分配することを可能にすることと
を含む、方法。
（項目２）
上記アプライアンスは、上記コントローラから離れた製造設備におけるサーバを含む、項目１に記載の方法。
（項目３）
上記パラレルなスレッドは、別のスレッドから１つのスレッドにおける接続遅延を分離するように独立して動作する、項目１または２に記載の方法。
（項目４）
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、
コントローラに通信可能に接続可能なアプライアンスを提供することであって、該アプライアンスは、該コントローラから電子資産を獲得するように構成されており、該アプライアンスは、複数のエージェントに通信可能な接続を提供し、該複数のエージェントは、該電子資産をデバイスに適用するように構成されている、ことと、
該コントローラに対して、および、各エージェントに対して、別個のスレッドが該アプライアンス上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該アプライアンスが該コントローラから資産を獲得し、かつ、該電子資産を該エージェントに分配することを可能にすることと
をコンピューティングデバイスに行わせる、コンピュータ可読媒体。
（項目５）
プロセッサと、メモリと、コントローラデバイスとの通信可能な接続性と、複数のエージェントとの通信可能な接続性とを含むアプライアンスデバイスであって、該アプライアンスデバイスは、
コントローラに通信可能に接続し、該コントローラから電子資産を獲得し、複数のエージェントに通信可能な接続を提供することであって、該複数のエージェントは、該電子資産をデバイスに適用するように構成されている、ことと、
該コントローラに対して、および、各エージェントに対して、別個のスレッドが該アプライアンス上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該アプライアンスが該コントローラから資産を獲得し、かつ、該電子資産を該エージェントに分配することを可能にすることと
を行うように構成されている、アプライアンスデバイス。
（項目６）
電子資産を管理する方法であって、
該方法は、
電子資産を獲得し、かつ、該電子資産を１つ以上のアプライアンスに提供するように構成されたコントローラを提供することであって、該コントローラは、１つ以上のユーザインターフェース（ＵＩ）を含む、ことと、
各ＵＩ接続に対して、および、該１つ以上のアプライアンスのうちのそれぞれに対して、別個のスレッドが該コントローラ上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該コントローラが該資産を分配し、かつ、ＵＩ相互作用を扱うことを可能にすることと
を含む、方法。
（項目７）
上記コントローラは、上記複数のアプライアンスのうちのそれぞれのアプライアンスを含む１つ以上の製造設備から離れたサーバを含む、項目６に記載の方法。
（項目８）
上記パラレルなスレッドは、別のスレッドから１つのスレッドにおける接続遅延を分離するように独立して動作する、項目６または７に記載の方法。
（項目９）
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、
電子資産を獲得し、かつ、該電子資産を１つ以上のアプライアンスに提供するように構成されたコントローラを提供することであって、該コントローラは、１つ以上のユーザインターフェース（ＵＩ）を含む、ことと、
各ＵＩ接続に対して、および、該１つ以上のアプライアンスのうちのそれぞれに対して、別個のスレッドが該コントローラ上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該コントローラが該資産を分配し、かつ、ＵＩ相互作用を扱うことを可能にすることと
をコンピューティングデバイスに行わせる、コンピュータ可読媒体。
（項目１０）
プロセッサと、メモリと、１つ以上のユーザインターフェースと、複数のアプライアンスとの通信可能な接続性とを含むコントローラデバイスであって、該コントローラデバイスは、
電子資産を獲得し、かつ、該電子資産を１つ以上のアプライアンスに提供することであって、該コントローラは、１つ以上のユーザインターフェース（ＵＩ）を含む、ことと、
各ＵＩ接続に対して、および、該１つ以上のアプライアンスのうちのそれぞれに対して、別個のスレッドが該コントローラ上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該コントローラが該資産を分配し、かつ、ＵＩ相互作用を扱うことを可能にすることと
を行うように構成されている、コントローラデバイス。
（項目１１）
製造過程において試験アプリケーションに対する電子資産の分配を制御する方法であって、
該方法は、
試験アプリケーション上にデーモンアプリケーションプログラミングインターフェース（ＡＰＩ）を提供することにより、資産に対する要求を検出した際に資産を提供し、かつ、試験中に該試験アプリケーションからログデータを獲得することと、
該デーモンＡＰＩと関連してデーモンを開始することにより、該ログデータを該デーモンＡＰＩから獲得し、かつ、該資産を該デーモンＡＰＩに提供することであって、該デーモンは、該試験アプリケーションから離れたアプライアンスとの通信のために、エージェントＡＰＩをホストする、ことと、
該エージェントＡＰＩを利用して、複数の資産を含むバッチを獲得し、かつ、該ログデータを含む１つ以上のログレポートを該試験アプリケーションとは別個に提供することと、
該資産をキャッシュし、該デーモンＡＰＩからの要求に基づいて、該資産の一定量を該デーモンＡＰＩに提供することにより、該デーモンＡＰＩが該資産を該試験アプリケーションに提供することを可能にし、これにより、該試験アプリケーションとアプライアンスとの間の該電子資産を獲得するためのセッション確立を回避することと
を含む、方法。
（項目１２）
上記ログレポートをキャッシュすることと、該ログレポートを上記アプライアンスに提供することとをさらに含む、項目１１に記載の方法。
（項目１３）
上記デーモンＡＰＩは、リソース管理システムを含み、該リソース管理システムは、リソース管理過程を実施し、かつ、該デーモンに該過程を登録することにより、上記資産をいつフェッチし、ログデータをいつ返送するかを示す、項目１１または１２に記載の方法。
（項目１４）
上記リソース管理システムは、名前によって上記特定の製品プロフファイルと上記製品を関連付ける、項目１３に記載の方法。
（項目１５）
上記デーモンは、上記試験アプリケーションが終了するときに用いられない資産の記録を保持する、項目１３または１４に記載の方法。
（項目１６）
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、
試験アプリケーション上のデーモンアプリケーションプログラミングインターフェース（ＡＰＩ）を提供することにより、資産に対する要求を検出した際に資産を提供し、かつ、試験中に該試験アプリケーションからログデータを獲得することと、
該デーモンＡＰＩと関連してデーモンを開始することにより、該ログデータを該デーモンＡＰＩから獲得し、かつ、該資産を該デーモンＡＰＩに提供することであって、該デーモンは、該試験アプリケーションから離れたアプライアンスとの通信のために、エージェントＡＰＩをホストする、ことと、
該エージェントＡＰＩを利用して、複数の資産を含むバッチを獲得し、かつ、該ログデータを含む１つ以上のログレポートを該試験アプリケーションとは別個に提供することと、
該資産をキャッシュし、該デーモンＡＰＩからの要求に基づいて、該資産の一定量を該デーモンＡＰＩに提供することにより、該デーモンＡＰＩが該資産を該試験アプリケーションに提供することを可能にし、これにより、該試験アプリケーションとアプライアンスとの間の該電子資産を獲得するためのセッション確立を回避することと
を１つ以上のコンピューティングデバイスに行わせる、コンピュータ可読媒体。
（項目１７）
資産管理システムにおいて遠隔的に分離されたモジュールの間で安全に通信する方法であって、
該方法は、
該システムにおける各モジュールにおいて、安全な境界内の機密動作を実行するためのハードウェアセキュリティモジュール（ＨＳＭ）を提供することと、
各ＨＳＭにおいて、非伝統的な動作を実施することにより、該安全な境界内の該動作を保護するためのソースコードを含む機能モジュールを提供することと
を含む、方法。
（項目１８）
機密動作を実行するための安全な境界と、
非伝統的な動作を実施することにより、該安全な境界内の該動作を保護するためのソースコードを含む機能モジュールと
を含む、ハードウェアセキュリティモジュール（ＨＳＭ）。
（項目１９）
電子資産をデバイスに分配する方法であって、
該方法は、
デバイスに追加されるべき第１の資産を定義することと、
該デバイスに追加されるべき第２の資産を定義することと、
製品タイプを定義し、かつ、該第１の資産および該第２の資産を該製品タイプに関連付けることと、
該製品タイプに関連付けられた各デバイスに対して、該第１の資産および該第２の資産を一緒に分配することと
を含む、方法。
（項目２０）
上記第１の資産は、シリアル番号、キー、特徴セットのうちの１つである、項目１９に記載の方法。
（項目２１）
上記第２の資産は、シリアル番号、キー、特徴セットのうちの１つである、項目１９または２０に記載の方法。
（項目２２）
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、
デバイスに追加されるべき第１の資産を定義することと、
該デバイスに追加されるべき第２の資産を定義することと、
製品タイプを定義し、かつ、該第１の資産および該第２の資産を該製品タイプに関連付けることと、
該製品タイプに関連付けられた各デバイスに対して、該第１の資産および該第２の資産を一緒に分配することと
をコンピューティングデバイスに行わせる、コンピュータ可読媒体。
【図面の簡単な説明】
【００１３】
ここで、添付図面を参照して、実施例により実施形態を説明する。
【図１】図１は、資産管理システム（ＡＭＳ）のブロック図である。
【図２】図２は、資産をデバイスに提供するために図１のＡＭＳによって実施される例示的な動作を示す、シーケンス図である。
【図３】図３は、図１に示されたコントローラの一実施形態の詳細を示す、ブロック図である。
【図４Ａ】図４Ａは、図１に示されたアプライアンスの一実施形態の詳細を示す、ブロック図である。
【図４Ｂ】図４Ｂは、図４Ａに示されたアプライアンスの状態移行を図示する、状態図である。
【図５】図５は、図１に示されたテスターおよびエージェントの一実施形態の詳細を示す、ブロック図である。
【図６Ａ】図６Ａは、図１に示されたエージェントＡＰＩの一実施形態の詳細を示す、ブロック図である。
【図６Ｂ】図６Ｂは、図１に示されたデーモンＡＰＩの一実施形態の詳細を示す、ブロック図である。
【図７Ａ】図７Ａは、スキーマ定義ワークフロー例とともに、シリアライゼーションを実施するためのＡＭＳの構成を示す、ブロック図である。
【図７Ｂ】図７Ｂは、キー注入を実施するためのＡＭＳの構成を示す、ブロック図である。
【図７Ｃ】図７Ｃは、特徴起動を実施するためのＡＭＳの構成を示す、ブロック図である。
【図８】図８は、ＡＭＳを使用してシリアライゼーションを実施するための１組の例示的な動作を示す、シーケンス図である。
【図９】図９は、ＡＭＳを使用してキー注入を実施するための１組の例示的な動作を示す、シーケンス図である。
【図１０Ａ】図１０Ａから１０Ｂは、ＡＭＳを使用して特徴起動を実施するための１組の例示的な動作を示す、シーケンス図である。
【図１０Ｂ】図１０Ａから１０Ｂは、ＡＭＳを使用して特徴起動を実施するための１組の例示的な動作を示す、シーケンス図である。
【図１１】図１１は、図１に示されたＡＭＳグラフィカルユーザインターフェース（ＧＵＩ）によって提供される迅速状態表示を示す、例示的なスクリーンショットである。
【図１２】図１２は、ＡＭＳ  ＧＵＩによって提供されるアプライアンス表示を示す、例示的なスクリーンショットである。
【図１３】図１３は、警告バーを示して、ＡＭＳ  ＧＵＩによって提供されるアプライアンス表示を示す、例示的なスクリーンショットである。
【図１４】図１４は、ＡＭＳ  ＧＵＩによって提供されるメイン状態表示を示す、例示的なスクリーンショットである。
【図１５】図１５は、ＡＭＳ  ＧＵＩによって提供される警告表示を示す、例示的なスクリーンショットである。
【図１６】図１６は、３行ズームモードでＡＭＳ  ＧＵＩによって提供されるジョブ表示を示す、例示的なスクリーンショットである。
【図１７】図１７は、１行ズームモードでＡＭＳ  ＧＵＩによって提供されるジョブ表示を示す、例示的なスクリーンショットである。
【図１８】図１８は、詳細ズームモードでＡＭＳ  ＧＵＩによって提供されるジョブ表示を示す、例示的なスクリーンショットである。
【図１９】図１９は、ＡＭＳ  ＧＵＩによって提供されるレポート表示を示す、例示的なスクリーンショットである。
【図２０】図２０は、ＡＭＳ  ＧＵＩによって提供されるレポートを生成する表示を示す、例示的なスクリーンショットである。
【図２１】図２１は、ＡＭＳ  ＧＵＩによって提供されるレポート画面を示す、例示的なスクリーンショットである。
【図２２】図２２は、ＡＭＳ  ＧＵＩによって提供されるコントローラ表示を示す、例示的なスクリーンショットである。
【図２３】図２３は、ＡＭＳ  ＧＵＩによって提供されるコントローラを修正する表示を示す、例示的なスクリーンショットである。
【図２４】図２４は、３行ズームモードでＡＭＳ  ＧＵＩによって提供されるアプライアンス表示を示す、例示的なスクリーンショットである。
【図２５】図２５は、１行ズームモードでＡＭＳ  ＧＵＩによって提供されるアプライアンス表示を示す、例示的なスクリーンショットである。
【図２６】図２６は、詳細ズームモードでＡＭＳ  ＧＵＩによって提供されるアプライアンス表示を示す、例示的なスクリーンショットである。
【図２７】図２７は、ＡＭＳ  ＧＵＩによって提供されるアプライアンスをピングする表示を示す、例示的なスクリーンショットである。
【図２８】図２８は、ＡＭＳ  ＧＵＩによって提供されるアプライアンスを同期する表示を示す、例示的なスクリーンショットである。
【図２９】図２９は、ＡＭＳ  ＧＵＩによって提供されるアプライアンスを修正する表示を示す、例示的なスクリーンショットである。
【図３０】図３０は、ＡＭＳ  ＧＵＩによって提供されるアプライアンスを動作停止する表示を示す、例示的なスクリーンショットである。
【図３１】図３１は、ＡＭＳ  ＧＵＩによって提供されるアプライアンス除去表示を示す、例示的なスクリーンショットである。
【図３２】図３２は、３行ズームモードでＡＭＳ  ＧＵＩによって提供される製品表示を示す、例示的なスクリーンショットである。
【図３３】図３３は、１行ズームモードでＡＭＳ  ＧＵＩによって提供される製品表示を示す、例示的なスクリーンショットである。
【図３４】図３４は、詳細ズームモードでＡＭＳ  ＧＵＩによって提供される製品表示を示す、例示的なスクリーンショットである。
【図３５】図３５は、ＡＭＳ  ＧＵＩによって提供される製品を追加する表示を示す、例示的なスクリーンショットである。
【図３６】図３６は、３行ズームモードでＡＭＳ  ＧＵＩによって提供されるシリアライゼーションスキーマ表示を示す、例示的なスクリーンショットである。
【図３７】図３７は、１行ズームモードでＡＭＳ  ＧＵＩによって提供されるシリアライゼーションスキーマ表示を示す、例示的なスクリーンショットである。
【図３８】図３８は、詳細ズームモードでＡＭＳ  ＧＵＩによって提供されるシリアライゼーションスキーマ表示を示す、例示的なスクリーンショットである。
【図３９】図３９は、ＡＭＳ  ＧＵＩによって提供されるスキーマを追加する表示を示す、例示的なスクリーンショットである。
【図４０】図４０は、３行ズームモードでＡＭＳ  ＧＵＩによって提供されるキー種類表示を示す、例示的なスクリーンショットである。
【図４１】図４１は、１行ズームモードでＡＭＳ  ＧＵＩによって提供されるキー種類表示を示す、例示的なスクリーンショットである。
【図４２】図４２は、詳細ズームモードでＡＭＳ  ＧＵＩによって提供されるキー種類表示を示す、例示的なスクリーンショットである。
【図４３】図４３は、ＡＭＳ  ＧＵＩによって提供されるキー種類を追加する表示を示す、例示的なスクリーンショットである。
【図４４】図４４は、３行ズームモードでＡＭＳ  ＧＵＩによって提供される特徴制御チケット表示を示す、例示的なスクリーンショットである。
【図４５】図４５は、１行ズームモードでＡＭＳ  ＧＵＩによって提供される特徴制御チケット表示を示す、例示的なスクリーンショットである。
【図４６】図４６は、詳細ズームモードでＡＭＳ  ＧＵＩによって提供される特徴制御チケット表示を示す、例示的なスクリーンショットである。
【図４７】図４７は、ＡＭＳ  ＧＵＩによって提供されるユーザ表示を示す、例示的なスクリーンショットである。
【図４８】図４８は、ＡＭＳ  ＧＵＩによって提供されるユーザを追加する表示を示す、例示的なスクリーンショットである。
【図４９】図４９は、エラーバーの一実施例を示すＡＭＳ  ＧＵＩによって提供されるユーザを追加する表示を示す、例示的なスクリーンショットである。
【図５０】図５０は、エラーバーの別の実施例を示すＡＭＳ  ＧＵＩによって提供されるユーザを追加する表示を示す、例示的なスクリーンショットである。
【図５１】図５１は、ＡＣＣを利用するための１つの構成のＡＭＳのブロック図である。
【図５２】図５２は、図５１に示されたデバイスおよびＡＣＣのさらなる詳細を示す、ブロック図である。
【図５３】図５３は、図５１および５２に示されたＡＣＣのハードウェア構成要素のさらなる詳細を示す、ブロック図である。
【図５４】図５４は、種々の状態を通して移行するＡＣＣにおいてファームウェアによって実行される動作のシーケンスを図示する、状態図である。
【図５５】図５５は、ＡＣＣにおいてファームウェアによって実行される起動シーケンスを図示する、フロー図である。
【図５６】図５６は、ＡＣＣにおいてファームウェアによって実行される状態移行シーケンスを図示する、フロー図である。
【図５７ａ】図５７ａから５７ｄは、図５４および５５に示された４つのライフサイクル状態のサブルーチンを図示する、フロー図である。
【図５７ｂ】図５７ａから５７ｄは、図５４および５５に示された４つのライフサイクル状態のサブルーチンを図示する、フロー図である。
【図５７ｃ】図５７ａから５７ｄは、図５４および５５に示された４つのライフサイクル状態のサブルーチンを図示する、フロー図である。
【図５７ｄ】図５７ａから５７ｄは、図５４および５５に示された４つのライフサイクル状態のサブルーチンを図示する、フロー図である。
【図５８】図５８は、ＡＣＣにおいてファームウェアによって実行されるコマンドインタープリタのフロー図である。
【図５９】図５９は、ＡＣＣにおいてファームウェアによって実行されるエラーハンドラルーチンを図示する、フロー図である。
【図６０】図６０は、ＡＣＣにおいてファームウェアによって実行される休止状態サブルーチンを図示する、フロー図である。
【図６１】図６１は、アプライアンスとＡＣＣとの間の単一のコマンドシーケンスを図示する、フロー図である。
【図６２】図６２は、バックエンド、アプライアンス、およびＡＣＣの間の単一の初期化プロトコルを図示する、フロー図である。
【図６３】図６３は、バックエンド、アプライアンス、およびＡＣＣの間のキー合意プロトコルを図示する、フロー図である。
【図６４】図６４は、バックエンド、アプライアンス、およびＡＣＣの間の機密メッセージングプロトコルによる認証を図示する、フロー図である。
【図６５】図６５は、ＭＭＯハッシュ関数を図示する、ブロック図である。
【図６６ａ】図６６ａから６６ｆは、仮想在庫の特徴起動ルーチンで実施される一連の動作を図示する、フロー図である。
【図６６ｂ】図６６ａから６６ｆは、仮想在庫の特徴起動ルーチンで実施される一連の動作を図示する、フロー図である。
【図６６ｃ】図６６ａから６６ｆは、仮想在庫の特徴起動ルーチンで実施される一連の動作を図示する、フロー図である。
【図６６ｄ】図６６ａから６６ｆは、仮想在庫の特徴起動ルーチンで実施される一連の動作を図示する、フロー図である。
【図６６ｅ】図６６ａから６６ｆは、仮想在庫の特徴起動ルーチンで実施される一連の動作を図示する、フロー図である。
【図６６ｆ】図６６ａから６６ｆは、仮想在庫の特徴起動ルーチンで実施される一連の動作を図示する、フロー図である。
【発明を実施するための形態】
【００１４】
（資産管理システム（ＡＭＳ））
上記の製造プラットフォームは、本明細書では資産管理システム（ＡＭＳ）と呼ばれてもよく、図１に示されるように数字１０によって示される。ＡＭＳ１０は、種々のサービスに適応するように適合することができる、カスタマイズ可能なソリューションである。例えば、以下で論議されるように、ＡＭＳ１０は、対応する資産の提供を制御することによって、シリアライゼーション、キー注入、および特徴起動のうちの１つ以上を実施するように構成することができる。したがって、資産とは、デバイス１４に追加される、適用される、関連付けられる、または別様に結び付けられる任意のデジタルデータを指し得る。デバイス１４は、そのような資産を利用することが可能である、任意の構成要素またはアイテムとなり得る。例えば、デバイス１４は、チップ、回路基板、電子消費者デバイス、コンピュータ、プロセッサ、メモリ等を表し得る。ＡＭＳ１０は、デバイス１４への資産の提供または注入を制御する制御チャネル４、およびロギングデータの収集を施行して資産の配布および使用を追跡する監査チャネル６を作成する。以下で説明されるＡＭＳ１０の構成要素は、大域的に配布することができ、局所的に実装することができ、または遠隔および局所構成要素の両方を備える任意の構成となり得る。ＡＭＳ１０は、企業が、世界的な外注製造環境にわたって、機密製造過程を管理および制御することを可能にする。
【００１５】
ＡＭＳ１０は、メインサーバとして動作し、任意の世界的な場所で動作を遠隔制御するように、電子デバイス製造業者の本社に位置することができる、１つ以上のコントローラ２２を備える。コントローラ２２は、インターネットまたは他のネットワーク（図示せず）上で遠隔通信して、本明細書ではアプライアンス１８と呼ばれる、１つ以上の２次または遠隔サーバを制御することができる。アプライアンス１８は、異なる製造、試験、または配布現場に位置付けることができる。コントローラ２２およびアプライアンス１８は、高感度かつ高信頼性計算を実施し、非公開キー等の機密情報を記憶し、他の暗号動作を実施し、構成要素間の安全な接続を確立するように、ハードウェアセキュリティモジュール（ＨＳＭ）１９を備える。ＨＳＭ１９は、コントローラ２２とアプライアンス１８との間、およびアプライアンス１８とデバイス１４に組み込まれた資産制御コア（ＡＣＣ）１２の中の安全な信頼点との間で、安全なエンドポイントを作成するために使用される。ＨＳＭ１９は、付加的な安全動作を実施するソースコードを備える、機能モジュール（ＦＭ）１１を追加する能力を提供する標準の既製構成要素であり得る。例えば、以下でさらに説明されるように、ＡＭＳ１０は、消費される資産のクレジットの測定を可能にし、ＨＳＭ１９は、ＦＭ１１を利用する時に、ＨＳＭ１９によって作成される安全な境界内で、そのような測定が安全に実施されることを可能にする。ＦＭ１１の使用は、例えば、暗号化および署名に加えて、信用でき、かつ安全な方式で、動作を実施することができる、より多大な融通性を提供する。ＦＭ１１はまた、プロトコルを利用することができる、例えば、ＡＣＣ１２と通信するためにＥＣＭＱＶプロトコルを使用することができる（以降で論議される）、より多大な融通性も提供する。
【００１６】
コントローラ２２はまた、管理者、操作者、および他のユーザが、コントローラ２２、アプライアンス１８、およびより広いＡＭＳ１０と連動することを可能にするように、グラフィカルユーザインターフェース（ＧＵＩ）８も提供する。アプライアンス１８は、１つ以上のエージェント２０と通信し、各エージェント２０は、エージェントアプリケーションプログラミングインターフェース（ＡＰＩ）２１を使用して、およびいくつかの実施例では、テスター１６およびそのアプリケーションの外側の別個の過程にエージェントの役割を配置するデーモンＡＰＩ２３（以下で論議される図６Ｂを参照）を使用して、試験スクリプトまたは他の生産ルーチンに統合される。試験スクリプトまたは生産ルーチンは、典型的には、製造ライン上のテスター１６上に搭載される、カスタムアプリケーションである。「テスター」という用語は、電子資産をデバイス１４に注入するか、または別様に提供するために使用される、任意の製造または生産機器を表し得る。典型的には、アプライアンス１８は、テスター１６と同じ物理的な場所にあり得るか、または代わりに、それの遠隔にあり、ＬＡＮ、ＷＡＮ、または他のネットワーク（図示せず）上で接続され得る、生産現場に位置する。図１に図示されるように、１次またはマスタアプライアンス１８が誤動作するか、またはオフラインになる場合に、付加的なアプライアンス１８’が引き継ぎ、生産休止時間を最小限化するように準備されることを確実にするように、アプライアンス１８を、冗長アーキテクチャ（すなわち、付加的なアプライアンス１８’を伴う）において展開することができる。いくつかの実施形態では、ＡＭＳ１０は、エージェント２０を通して、アプライアンス１８とデバイス１４との間で安全な通信を確立するために、デバイス１４上に組み込まれるＡＣＣ１２を利用し得る。
【００１７】
ＡＭＳ１０を使用して、収益損失の削減につながることができ、かつパートナーおよび下流顧客との新しい収益共有機会をもたらすことができる、工場プロビジョニングのシステムを作成し、展開することができる。ＡＭＳ１０はまた、特に、利益率の高いデバイスを生産するために外注請負業者が使用される時に、製造過程の全体を通して、全体的なセキュリティおよびブランド保護を向上させることができる。製造および配布過程における、そのような収益損失削減は、半導体および他の電子デバイス１４における特徴の無許可起動を防止すること、過剰生産を削減すること、在庫および供給チェーン費を削減すること、強力な組み込み収益およびブランド保護対策を確立すること、およびアフターマーケット収益の可能性から利益を得る新しい機会をもたらすことに役立つようにＡＭＳ１０を使用することよって、達成することができる。
【００１８】
図２は、資産を定義し、デバイス１４に配布し、適用するため、ならびに、監査目的で種々の段階においてログレポートを収集するために、コントローラ２２、アプライアンス１８、エージェント２０、およびＡＣＣ１２をどのようにして使用することができるかを図示する。コントローラ２２において、製造業者（または提供される資産の所有者）が、製品、すなわち、シリアライゼーション、キー注入、特徴起動等の、提供されている特定の種類のサービスを利用するオブジェクトを定義する。コントローラ２２はまた、製品および製品に適用されているサービスに対応する、資産の種類を定義する。資産および製品に別個の定義を有することによって、いくつかの実施形態では、一意の製品名は、異なる種類の複数の資産が一緒に送達されることを可能にすることができる。例えば、キーを、起動される１組の特徴とともに送達することができ、またはキーおよびシリアル番号を、同時に送達し、注入することができる。これは、２つの資産が製品別ベースの送達を最適化するために制御チャネル４の同じインスタンスを利用するため、時間および帯域幅を節約する。
【００１９】
いくつかの資産が、コントローラ２２によって生成され、獲得され、または別様にインポートされ、資産は、製品に結び付けられ、それは、サービスの適用が製品に資産を注入または追加して、最終的に、その製品のために１つ以上のデバイス１４が生産されるように、資産と製品との間に関連を作成する。次いで、製品は、アプライアンス１８に結び付けられる。製品はまた、アプライアンス１８にわたって製品の資産を配布するようＡＭＳ１０を構成することができるように、１つより多くのアプライアンス１８に結び付けられることもできる。同じ種類のデバイス１４が異なる施設で生産されている場合、各場所で１つずつ、異なる種類の製品を作成することができる。例えば、デバイス１４は、異なる生産施設でアプライアンス１８をそれぞれ有する、いくつかの地理的な場所で生産され得る。次いで、製品が各施設に対して作成され、対応するアプライアンス１８に結び付けられ得る。アプライアンス１８は、１つより多くのテスター１６において１つより多くのエージェント２０にサービス提供することができ、したがって、同じアプライアンス１８に対して１つより多くの製品を定義できることが留意され得る。
【００２０】
次いで、コントローラ２２が、製品および対応する資産をアプライアンス１８に提供し、これらの資産は記憶され、したがって、製品はアプライアンス１８において準備される。その間、コントローラ２２は、製品および資産を送信するイベントの記録を取り、資産の受信および記憶の成功についてアプライアンス１８からの確認を待つ。アプライアンス１８は、少なくとも１つのエージェント２０と通信するように構成される。エージェント２０は、生産および配布段階で資産を利用するように構成される。したがって、エージェント２０は、この段階で機能する必要がある資産を要求する。アプライアンス１８は、適切な数の資産を測定して取得し、このイベントの記録を取って、特定のエージェント２０（したがって、特定のテスター１６）への資産の割当を記録する。次いで、資産は、エージェント２０に提供される。次いで、エージェント２０は、資産を適用することと、それが動作する各デバイス１４に対してこのイベントの記録を取ることとを含む、ループを開始し得る。ＡＣＣ１２が使用される場合に、ＡＣＣ１２との交換が実施されることが分かり、その詳細は以下で提供される。何らかの時点で、例えば、ログ閾値に達すると、エージェント２０は、１組のエージェントログをアプライアンス１８に提供し、アプライアンス１８は、ログを記憶する。他の実施例では、アプライアンス１８は、エージェント２０からのログを要求し得る。次いで、コントローラ２２は、何らかの以降の時点で（例えば、同期化動作中に）アプライアンス１８と関連付けられた製品のログを要求し、両方ともアプライアンス１８によって記憶されるアプライアンスログおよびエージェントログは、コントローラ２２に提供される。次いで、コントローラ２２は、ログを記憶し、監査および他の後処理またはその中に含まれるデータの分析のために、それらを利用可能にし得る。一方の方向における配布を制御し、他方の方向におけるイベントのロギングおよび同イベントの収集を施行することによって、ＡＭＳ１０は、製造過程に対する制御を提供することができる。
【００２１】
上記で論議されるように、ＡＭＳ１０は、シリアライゼーション、キー注入、および特徴起動等の種々のサービスを提供するように構成することができる。これらのサービスは、一般に図２で例示される、制御および監査チャネルを使用して実装することができる。これらの種々のサービスのためにＡＭＳ１０の構成要素を構成するために、コントローラ２２、アプライアンス１８、エージェント２０、およびＡＣＣ１２は、一定の能力を有するべきである。ここで、図３から６を参照して、これらの構成要素のさらなる詳細を説明する。
【００２２】
コントローラ２２は、図３でより詳細に示されている。コントローラ２２は、標準ウェブブラウザ１００、１００’からウェブインターフェースを通してアクセスすることができる、セキュリティ強化されたラックマウント式システムとして実装することができる。図３で見られるように、コントローラ２２は、コントローラ２２においてウェブブラウザ１００によって、または遠隔で１００’によってアクセスすることができる、ＧＵＩ８を含む。ＧＵＩ８は、アプライアンス１８と安全に通信し（Ｓによって示される）、典型的にはセッキュリティを伴わずにデータベース１１０と通信する（Ｕによって示される）ために、コントローラデーモン１０６を使用する、ウェブサーバ１０４上に位置する。報告ツール１０８もまた、関係データベース１１０に安全にアクセスして、レポートを生成する目的でロギングおよび他のデータを取得することができる。データベース１１０の中のデータにアクセスするように、報告ツール１０８または任意の同様のアプリケーションからのサービス要求を行うことができる。データベーススキーマは、ログの効率的な記憶、サービスモジュールによる要求に応じたデータの効率的な記憶、およびサービスモジュールによる要求に応じた効率的なデータの参照に利用される。全てのサービスモジュールからのカスタムログデータを、データベース１１０からエクスポートすることができる。アプライアンス１８が削除される前に、コントローラ２２は、アプライアンス１８と同期化して、全てのログが収集されていることを確実にするべきである。この実施例でのコントローラ２２はまた、コントローラデーモン１０６とともに動作する、コマンドラインインターフェース（ＣＬＩ）ユーティリティ１０２もサポートする。ＣＬＩユーティリティ１０２は、利用される場合、ＧＵＩ８と同様の機能性を提供するべきである。
【００２３】
コントローラ２２は、特定時間間隔で自動的にアプライアンス１８を同期化して、任意のサービス関連資産が、それらの特定最大量であることを確認し、すなわち、コントローラ２２は、アプライアンス１８が、意図されたように動作するために必要とする資産を有することを確実にする。いずれのクレジットもつぎ足すことなく、現在のクレジットレベルを問い合わせるように、読み出し専用同期モードを提供することができる。この同期化動作はまた、アプライアンス構成設定を送信するため、および図２に図示されるようにアプライアンス１８からログを取り出すために、使用することができる。これは、接続が一時的に失われた場合に、途切れることなく、ＡＭＳ１０が各生産現場において高速製造をサポートすることを可能にする。コントローラ２２はまた、特定のＥメールアドレスに警告を発行して、理想的には生産を停止し得る条件が生じる前に、これらの条件について操作者に知らせることができる。コントローラ２２は、コントローラ２２がアプライアンス１８にコンタクトできない時、コントローラ２２がデータをアプライアンス１８に送信する時（逆の場合も同じ）にエラーがある場合、同期化動作が失敗した時、アプライアンス１８の中の資産の数が特定警戒レベルに達する時、アプライアンス１８上の空きディスクスペースが最小値に達する時、およびエージェントＩＰアドレスがアプライアンス１８によって管理されるリストの中にないため、アプライアンス１８がエージェント２０からの接続を遮断した時等の、いくつかの状況下で警告を発行する。これらの警告の管理は、以下でより詳細に説明されるＧＵＩ８を通して実施することができる。
【００２４】
コントローラ２２はまた、同期化動作および他の長期タスク等の、ＡＭＳ１０で作動する全てのジョブを監視するために使用され、その状態を監視し、それらの進展の記録を取ることができる。ジョブ情報は、ＧＵＩ８において利用可能にすることができる。コントローラ２２はまた、操作者がユーザの役割を追加および除去することも可能にする。ユーザの役割には、ＡＭＳ１０の構成要素のそれぞれにアクセスする異なるレベルの許可を割り当てることができる。ＡＭＳ１０によって生成されるログは、関係データベース１１０に記憶される。
【００２５】
この実施例でのコントローラ２２は、サーバハードウェア、例えば、３ＧＨｚにおいて２  ｘ  Ｉｎｔｅｌ  Ｘｅｏｎクアドコア５３００プロセッサを使用するＤｅｌｌ  ２９５０  ＰｏｗｅｒＥｄｇｅ  ２Ｕラックマウントサーバ上で作動する。コントローラ２２はまた、１１０／２２０Ｖ  ７５０Ｗ冗長電力モジュール、ＤＶＤ  ＲＯＭ、デュアルギガビットＮＩＣ、およびＰＣＩｅライザを使用することもできる。コントローラ２２は、例えば、ＨＳＭおよびＳＳＬ証明書に対するエクスポートＰＫＣＳ１０要求、デバイス認証機関（ＣＡ）によって証明書に署名すること、ならびにＳＳＬおよびＨＳＭ証明書をＨＳＭ１９にインポートすることによって、初期プロビジョニングを要求する。各ＨＳＭ１９に特有のあらゆる同一性証明書も使用できることを理解することができる。コントローラ２２は、名前およびＥメール警告のためのＳＭＴＰ設定等の、一般設定が構成されることを可能にするべきである。複数のユーザアカウントのサポートが提供されるべきであり、ＡＭＳ１０の種々の部品へのアクセスが承諾または拒否されることを可能にするために、ユーザごとの許可マトリクスを使用することができる。このようにして、異なるユーザの役割を定義することができ、異なる許可をモジュールごとに各ユーザ役割に与えることができる。許可マトリクスは、顧客がそのような許可を定義し、ユーザの役割の数を定義してユーザを区別することができるように、構成されるべきである。コントローラ２２は、サービスモジュールを有効または無効にして、例えば、シリアライゼーション、キー注入、特徴起動等に対して、異なるサービス製品が定義されることを可能にする。コントローラ２２はまた、アプライアンス１８の一般設定、つまり、名前、製造業者、場所、ＩＰアドレス、ポート番号、ソケット再試行、ソケットタイムアウト、送信／受信ブロックサイズ、およびそのアプライアンス２２に対して承認されたエージェント２０のリスト等の設定を構成することもできる。
【００２６】
コントローラ２２は、構成可能な時間間隔で、例えば、３０分毎に、各アプライアンス１８と同期化する。しかしながら、コントローラ２２はまた、次の予定された同期化の前に所望される場合、操作者が同期化を即時に強行することも可能にする。コントローラ２２は、ＡＭＳ１０に対する制御を提供し、したがって、新しいアプライアンス１８が追加される前にそれを承認することができる。次いで、供給業者から出荷される時に、アプライアンス１８は、使用前にそのような承認を要求する状態となるべきである。いったん承認が成功して完了すると、コントローラ２２によるアプライアンス１８の他のプロビジョニングも実施することができる。コントローラ２２はまた、コントローラ２２がアプライアンス１８にクレジットを発行するクレジットシステムも実装する。資産をエージェント２０に提供する（図２に示されるように）ことによってアプライアンス１８が資産を消費する時はいつでも、クレジットが減少させられる。操作者は、警戒、最小、および最大レベルを定義することができ、アプライアンス１８上の現在のクレジットが警戒レベル以下であれば、コントローラ２２が警告を発行する。アプライアンス１８上の現在のクレジットが最小レベル未満であれば、コントローラ２２が最大レベルまでクレジットをつぎ足す。アプライアンス１８がクレジットを使い果たした場合は、もはや資産をエージェント２０に提供することができなくなる。クレジットは、一般に、サービスモジュールごとよりもむしろ、アプライアンス１８ごとに割り当てられるべきである。
【００２７】
上記のように、コントローラ２２は、各アプライアンス１８に対するジョブのリストを監視する。これは、各アプライアンス１８が他とは無関係にサービス提供を受けることを可能にする、マルチスレッド設計を作成する。加えて、各アプライアンス１８上のジョブも、同時に、かつ他とは無関係に実施され得る。これは、１つのエンティティとの通信が、別のエンティティとの通信を妨害せず、したがって、ＡＭＳ１０の並列性を増加させるように、複数のＵＩ要求が別個のスレッドによって処理されること、ならびに複数のアプライアンス１８の接続が別個のスレッドによって処理されることを可能にする。空いた、および使用されたハードディスクスペース、空いた、および使用されたメモリ、ＨＳＭ１９のような他のハードウェア構成要素の健全性、コントローラ２２との最後の通信の日付／時間、および各エージェント２０との最後の通信の日付／時間を含む、各アプライアンス１８の健全性も監視される。コントローラ２２は、コントローラ２２とアプライアンス１８との間の安全な通信チャネルを使用する、アプライアンス１８のネットワークライブ性をチェックするピング（ｐｉｎｇ）ユーティリティを提供する。各アプライアンス１８上の時間をコントローラ２２と同期化して、システム時間ならびにコントローラ２２およびアプライアンス１８上のＨＳＭ時間がＵＴＣにおいて特定され、かつ同じであることを確実にするように、時間同期化ユーティリティも提供される。
【００２８】
コントローラ２２はまた、サービシングエージェント２０からアプライアンス１８を無効にする過程も提供するべきである。適切な警戒および確認を提供することができ、そのようなものとして、措置が製造ラインに干渉するか、または停止さえし得る。無効である時に、アプライアンス１８は、コントローラ２２にサービス提供し続けるべきである。例えば、ピングユーティリティは、アプライアンス１８が無効である時に、依然として稼働するべきである。この機能性は、異常が検出され、是正措置が必要とされる場合に、操作者がアプライアンス１８を通して製造業者を制御することを可能にする。製造ラインを潜在的に停止し得る問題にフラグを付けるために、Ｅメール警告を生成することができ、全ての関係者および影響を受ける当事者に通知することができるように、複数のＥメールアドレスを特定することができる。コントローラ２２はまた、自動的に、および手動で、それ自体のバックアップをトリガすることも可能であるべきである。ハードウェア故障または他の災害の場合に、バックアップから新しいハードウェアに、または既存のハードウェアにコントローラ２２を復旧することが可能であるべきである。
【００２９】
ＨＳＭコードを含むアプライアンスソフトウェアに対する遠隔アップグレード、ならびにＨＳＭコードを含むコントローラソフトウェアのローカルアップグレードも、コントローラ２２によって有効にされる。コントローラ２２は、各アプライアンス１８に接続することができるようになる、エージェントＩＰアドレスおよびサブネットのリストを管理し、ＧＵＩ８およびＣＬＩユーティリティ１０２からのサービス要求を有効にする。
【００３０】
アプライアンス１８は、典型的には、検出およびフェイルオーバーのために、図１に示されるような冗長ペアで使用される。冗長アプライアンス１８、１８’の場合、各アプライアンス１８、１８’は、同様の数量の資産を与えられることができ、各組が異なる値を有する。したがって、１つのアプライアンス１８が故障した場合、エージェント２０は、特に、資産が一意でなければならい場合に、重複する資産を有する危険を伴わずに、依然として他のアプライアンス１８’から資産を取得することができる。アプライアンス１８はまた、セキュリティ強化されたラックマウント式システムとなるべきである。アプライアンス１８の例示的な構成のさらなる詳細が、図４Ａに示されている。アプライアンス１８は、安全な通信チャネルを提供するようにコントローラ２２とエージェント２０との間の通信を制御するためのアプライアンスデーモン１１２と、ログおよび他のデータを記憶するためのアプライアンス関係データベース１１４とを備える。上記で論議されるように、アプライアンス１８は、試験場所、第３者製造業者、組立工場、または任意の生産あるいは配布場所に位置することができる。１つのアプライアンス１８は、１つ以上のエージェント２０にサービス提供し、複数のアプライアンス１８は、使用される場合、１つ以上のエージェント２０を通してＡＣＣ１２と通信することができる。コントローラとアプライアンスとの通信は、例えば、ＳＳＬ接続を使用して、安全であり、保護され、相互に認証されるべきである。アプライアンス１８からエージェント２０への資産の全ての発行は、活動ログに記録される。これらのログは、コントローラ２２によって収集されると、データベース１１４に保存され、以降で論議されるようなＧＵＩのレポート表示で閲覧することができる。
【００３１】
新しいアプライアンス１８が、ＡＭＳ１０に追加されると、それはオフライン状態である。次いで、アプライアンス１８は、使用されるために起動される。いったんアプライアンス１８がアクティブになると、サービスを生産することができる前に、依然として同期化される必要がある。図４Ｂは、アプライアンス１８の種々の状態を図示する。
【００３２】
アプライアンス１８は、コントローラ２２と同様であるハードウェア上で作動することができ、全ての高信頼性計算がＨＳＭ１９の内側で行われる。アプライアンス１８は、少なくとも１つのＨＳＭ１９を有するが、いくつかの実施形態では、ＥＣＭＱＶ（ＥＣＭＱＶの使用は以降で論議される）等の暗号動作の性能をさらに向上させるように、より多くをサポートし得る。アプライアンス１８は、冗長性および高可用性のために、複数ペアで提供されるべきである。冗長ペアの両方のアプライアンス１８、１８’は、エージェント２０がいずれか一方に接続し得る際に、常にアクティブとなるべきである。両方のアプライアンス１８、１８’は、コントローラ２２上で別々に構成される。操作者は、両方のアプライアンス１８、１８’が資産に関して同様の構成を有することを確実にするべきことが留意され得る。容量計画の観点から、各ペアは、１つのアプライアンス１８と見なされるべきであり、例えば、ペアのスループットが、単一のアプライアンス１８のスループットにすぎないものであることしか期待できない。ＨＳＭ１９からのエクスポートＰＫＣＳ１０要求を、ＳＳＬ、ＨＳＭ、およびＡＣＣ証明書に対して行うことができ、証明書は、デバイスＣＡによって署名されるべきである。次いで、証明書は、ＨＳＭ１９にインポートされる。
【００３３】
アプライアンス１８がテスター１６と相互作用している時に、試験時間を最小限化するために、高性能が最重要である。したがって、可能な場合に、プロトコル最適化が行われるべきである。例えば、アプライアンスＡＣＣプロトコルで使用するために、一過性の公開キーをＨＳＭ１９で事前生成することができる。カスタムデータおよびログデータを伝えるためのコントローラ２２との通信はまた、エージェント２０との相互作用において、アプライアンス１８の性能に影響を及ぼさないよう、効率的となるべきである。アプライアンス１８は、アプライアンスデーモン１１２を使用して、コントローラ２２およびエージェント２０からのサービス要求を処理し、コントローラ２２が複数のスレッドを使用して並行して動作することができるのと同じ方法で、コントローラ２２およびエージェント２０が相互とは無関係にサービス提供されることを可能にするために、複数のスレッドを使用する。このようにして、コントローラ２２には、別個のスレッドが与えられ、各エージェント２０には、別個のスレッドが与えられる。データベース１１４のスキーマは、ログの効率的な記憶、種々のサービスモジュールによる要求に応じたデータの効率的な記憶、およびサービスモジュールによる要求に応じた効率的なデータの参照のために設計されるべきである。
【００３４】
図５に示されたエージェント２０は、ソフトウェアライブラリであり、各エージェント２０は、製造ライン上のテスター１６（デバイス１４を試験するように構成されるコンピュータ）上に搭載されるカスタムアプリケーションである、顧客の試験プログラムまたはスクリプトに統合または一体化される。利用可能である場合、エージェント２０は、ＡＣＣ１２またはソフトＡＣＣ１２’と通信する。エージェントＡＰＩ２１を利用するように構成される時に、エージェントＡＰＩ２１は、アプライアンス１８へ資産の要求を行い、安全なＳＳＬ接続を通して、使用された資産のログを返送する。エージェントＡＰＩ２１に加えて、ＡＭＳ１０は、別個の過程を引き起こすデーモンＡＰＩ２３、すなわち、アプライアンス１８から資産を取り出し、アプライアンス１８に資産を提供するデーモン２５の使用をサポートし、テスターアプリケーション１１６によって行われている作業のうちのいくつかを低減する。図６Ａは、エージェントＡＰＩ２１を利用するエージェント２０の構成を図示する。エージェントＡＰＩ２１は、テスター１６上で作動する試験アプリケーション１１６ａが、アプライアンス１８に接続すること、資産を取り出すこと、およびログをアプライアンス１８に返信することを可能にする。エージェントＡＰＩ２１は、試験アプリケーション１１６ａに直接統合され、それは、どのように、およびいつ、資産およびログがテスター１６とアプライアンス１８との間で転送されるかに対して完全な制御を与えることが分かる。図６Ａで見られるように、エージェントＡＰＩ２１は、アプライアンス１８からの資産データパッケージ１２０、ならびに任意のログ要求１２６を取得する。エージェントＡＰＩ２１はまた、資産要求１２４をアプライアンス１８に提供し、かつ要求されたログレポート１２２を提供する。
【００３５】
ここで６Ｂを参照すると、資産およびログを管理する責任を解除するために、エージェントＡＰＩ２１の代わりに、デーモンＡＰＩ２３を使用することができる。図６Ｂに示されるように、デーモンＡＰＩ２１は、それが別個の過程と通信することを可能にするように、試験アプリケーション１１６ｂに統合され、デーモン２５は、資産データパッケージ１２０、ログレポート１２２、資産要求１２４、およびログ要求１２６の交換を管理するために、試験アプリケーション１１６ｂとアプライアンス１８との間の仲介としての役割を果たす。デーモンＡＰＩ２３は、より単純なインターフェースを提供し、背景過程としてデーモン２５を実行するように構成することができる。図６Ｂに示されるように、デーモンＡＰＩ２３は、試験アプリケーション１１６ｂとのインターフェースを提供して、資産が必要とされる際に資産を取得し、ログデータ１２８が各試験中または終了時に生成されると、それを取得する。デーモンＡＰＩ２３は、試験過程中に試験アプリケーション１１６ｂがアプライアンス１８に常に接続しなければならないことを回避し、したがって、時間を節約するように、資産を取得し、ログレポート１２２をアプライアンス１８に提供する目的で、エージェントＡＰＩ２１をホストするために、別個のデーモン２５を実行する。デーモン２５は、ＡＰＩ２１を使用して、一度に資産の複数バッチを要求し、アプライアンス１８に接続する必要なく、資産が常にテスター１６上で利用可能であるように、資産が必要とされると、デーモンＡＰＩ２３を通してテスター１６に資産を送達することができる。このようにして、試験アプリケーション１１６ｂは、資産を取得するため、およびそのログデータ（次いで、デーモン２５上のエージェントＡＰＩ２３によってログレポートに盛り込まれる）を提供するために、デーモンＡＰＩ２３と相互作用し、したがって通信する必要があるのみである。デーモン２５は、必要に応じてテスター１６への後続配布のために資産の複数バッチを記憶する資産キャッシュ１３０と、試験が完了すると、試験アプリケーション１１６ｂによって出力される、ログレポート１２２の中で組織化されるべきログデータ１２８を記憶するログキャッシュ１３２とを維持する。デーモンＡＰＩ２３はまた、デーモン２５を用いてリソース管理過程を独立して実装および登録するために構成されるリソース管理サブシステム（ＲＭＳ）２７を有することもできる。このようにして、ユーザは、資産を取り出す時、ログを返送する時等を決定するように、独自のリソース管理過程（独自の指令を伴う）を実装することができ、かつこの過程を名前別に特定の製品プロファイルと関連付けることができる。
【００３６】
図６Ｂに示されるようなデーモン２５およびデーモンＡＰＩ２３の使用は、いくつかの利点を提供する。デーモン２５にアプライアンス１８との接続を維持させるか、またはキャッシュさせることによって、試験アプリケーション１１６ｂは、新しいセッションを繰り返し要求する必要がなく、したがって、時間を節約し、それは試験環境において重要である。また、デーモン２５は、資産キャッシュ１３０にどれだけ多くの資産を記憶するかを制御するために、閾値を利用することができる。例えば、低閾値は、それを超えると、試験手順を妨害することなく、かつ依然として有する資産を転送し続けながら、アプライアンス１８から資産の新しいバッチを別々に取得するために、デーモン２３にエージェントＡＰＩ２１を利用させることができる。また、複数の資産がアプライアンス１８によって試験アプリケーション１１６ａに直接提供される時、例えば、キーのバッチを送信する時に、終了時に試験アプリケーション１１６ａ上に残りの資産がある場合、これらの資産は、テスターのメモリから消去される場合があるため、損失し得ることが分かっている。この場合、ＡＭＳ１０が資産を無駄にし、１つ以上のエンティティが収益を失うか、または費用を吸収しなければならない。図６Ｂに示されるように、試験アプリケーション１１６ｂからデーモン２５を分離することによって、このような状況では、デーモン２５および資産キャッシュ１３０は、試験アプリケーション１１６ｂを抜けて生き残り、したがって、いずれの資産も、それらを回収する機会なく無駄にされない。したがって、デーモン２５がシャットダウンする場合に、残りの資産は、無駄としてマークされ得、申込者が許可すれば、残りの数量を顧客に返済できることを確実にするように、ログレポートを生成し、アプライアンス１８に返信することができる。他の実施形態では、残りの資産を単純に試験アプリケーション１１６ｂの次のインスタンスのために維持することができる。
【００３７】
デーモンＡＰＩ２３は、図６Ｂに示されるように、独立型アプリケーションを作成するために使用することができ、または他の実施形態では試験アプリケーション１１６ｂに埋め込むこともできる。デーモンＡＰＩは、試験アプリケーション１１６ｂにおける資産およびログレポート１２２の管理を解除するために使用されるべきである。デーモンＡＰＩ２３は、クライアントまたはサーバモードで作成することができる。サーバモードでは、それは、アプライアンス１８に接続し、資産の取り出しおよびログレポート１２２の送信を自動的に管理する。クライアントモードでは、それは、ＡＭＳ資産およびログに対してすでに作動しているサーバモードデーモンアプリケーションに接続する。デーモン２５の別のインスタンスがすでに作動しているか否かに応じて、デーモンＡＰＩ２３がクライアントまたはサーバモードを使用する、自動モードもあり得る。デーモンＡＰＩ２３は、ＡＭＳ製品（または資産）およびログの管理のためのテキストベースの構成指令を使用する。これらの指令は、コンパイル時間において、ファイルから、またはメモリから読み出すことができる。構成指令は、１つ以上の製品プロファイルを含む。製品プロファイルは、ＡＭＳ製品の名前、アプライアンス１８にログインするための接続証明、リソース管理過程、および過程設定を含む。リソース管理過程は、プロファイルと関連付けられた製品の資産およびログを管理するために使用される。該過程は、資産つぎ足しレベル（最小資産および最大資産）、およびログがアプライアンスに自動的に送信される閾値レベル（最大ログ）に対する構成可能な指令を含む。
【００３８】
アプライアンス１８は、典型的には、ペアで送達されるので、エージェント２０は、両方のアプライアンス１８、１８’のＩＰアドレス、ならびにアプライアンス故障の場合での一方のアプライアンス１８から他方のアプライアンス１８’へのフェイルオーバーを伴って構成されるべきである。エージェント２０は、例えば、エージェント２０がアプライアンス１８、１８’のうちの一方に接続できない場合に、エラーを報告するべきである。接続エラーの場合、他方のアプライアンス１８へのフェイルオーバーの前にエージェント２０が待つ時間が、構成可能であるべきである。
【００３９】
ＡＣＣ１２は、チップの設計に統合される小型かつ効率的な暗号セキュリティエンジンである。ＡＣＣ１２は、製造されているデバイス１４に統合され、したがって、並行であるがＡＭＳ１０とは別々に確立される。ＡＭＳ１０は、アプリケーションに応じて、ＡＣＣ１２を伴って、または伴わずに使用することができる。例えば、シリアライゼーションおよびキー注入は、ＡＣＣ１２を必要としなくてよいが、特徴起動サービスモジュールは、典型的にはそれを必要とする。しかしながら、ＡＣＣ１２は、シリアライゼーションおよびキー注入を伴うアプリケーションで使用することができる。
【００４０】
ＡＣＣ１２は、典型的には、ＳｏＣダイに組み込まれ、次いで、ＳｏＣダイは、チップに盛り込まれ、チップは、プリント基板（ＰＣＢ）上に載置され、最終的に電子デバイス１４に組み立てられる。ＡＣＣ１２を有する全チップは、ウエハ試験に合格するとすぐに、コントローラのデータベース１１０に登録し、記録を取ることができ、それは次に、ウエハ試験を受けた、製造された全チップを追跡することができる。ＡＣＣ１２は、１組の出力ポートを有し、これらの出力の集約を評価することは、どの特徴が有効にされるべきであり、どれが無効にされるべきかを示す。いったん組み立てられると、ＡＣＣ１２は、依然として最終デバイス１４上の信用の根拠の役割果たすことができる。
【００４１】
ＡＣＣ１２は、不揮発性メモリ（ＮＶＭ）へのアクセスを管理するように、および無許可エージェント２０によってアクセスされることからＮＶＭのある領域を保護するように設計されている。ＡＣＣ１２は、ＡＣＣ１２を一意的に識別するために使用される、一意のデバイスＩＤ（ＵＩＤ）の内蔵型生成を提供することができる。ＡＣＣ１２はまた、信用できるサーバとの安全な通信チャネルを開くために使用されるキーの内蔵型生成も提供することができる。ＡＣＣ１２は、特徴の有効化および無効化が、信用できるソースによって信用できる機器を使用して行われることを確実にするべきであり、ＡＣＣ１２は、デバイス１４が改ざんされていないことを確認するように、デバイス自己試験および健全性チェックを開始または無効化することが可能であるべきである。ＡＣＣ１２はまた、過剰に多くの無効コマンドが発行された時はいつでも、デバイスをロックアウトすることもできる。ＡＣＣ１２は、アプライアンス１８からのコマンドを処理するために使用され、特定数の不正コマンドを検出した場合に、自ら動作停止するようにプログラムすることができる。ＡＭＳ１０のセキュリティ特徴が、アプライアンス１８とＡＣＣ１２との間のデータリンクを信用できることに必ずしも依拠しないので、ＡＣＣ１２は、任意の電子製造試験環境で稼働するように設計されるべきである。代わりに、暗号作成法を使用して、セキュリティが通信プロトコルに組み入れられる。結果として、ＡＭＳ１０は、ウエハ製造からＯＤＭ、ＯＥＭ、ユーザの間のどこにおいても、安全かつ監査可能な方式で、プロビジョニングが生じることを可能にする能力を提供する。
【００４２】
ＡＣＣとアプライアンスとの通信チャネルを確保するために、ＡＣＣ１２は、キー交換のための非対称暗号作成スキーム、およびそれとアプライアンス１８との間でメッセージを転送するための対称キー暗号作成スキームを使用する。非対称暗号作成スキームは、秘密の非公開キーから生成される公開キーを使用する。非公開キーは秘密に保たれ、公開キーは暴露される。非公開キーが安全で高度な改ざん防止設定で保護されることは必須である。組み込みＡＣＣ１２は、秘密キーが暴露されることから保護するハードウェアおよびファームウェアの組み合わせを用いて、内部で、かつ自律的に、一意の非公開キーを生成することが可能であることによって、この要件を満たすことができる。ＡＣＣ１２は、各デバイス１４に対する一意の識別子を生成し、アプライアンス１８との暗号化されたチャネルを通して、デバイス１４のトラッキングおよびプロビジョニングに関与する。いったん両者が対称キーに合意すると、アプライアンス１８は、安全な方式で、本明細書では特徴制御チケット（ＦＣＴ）５０と呼ばれる機密メッセージをＡＣＣ１２に発行する。ＡＣＣ１２は、図５１から６６を参照して、以下でより詳細に説明される。
【００４３】
上記で論議されるようにＡＭＳ１０を実装するために、種々のセキュリティの考慮が行われるべきである。上記のように、コントローラ２２およびアプライアンス１８における高信頼性計算は、ＨＳＭ１９の内側で、特に、典型的には製造業者とエンティティとの間に種々のレベルの信用を伴って別のエンティティで作動している、アプライアンス１８上で、行われるべきである。シリアライゼーションを実施する時に、アプライアンス１８では、コントローラ２２から受信されるシリアル番号スキーマ（そのようなスキーマは以下で説明される）に基づいて、シリアル番号を生成することのみが可能であるべきである。キー注入のために、アプライアンス１８は、コントローラ２２から直接受信される、すなわち、別のアプライアンス１８からは受信されない、順序付けられたキーを解読することのみが可能であるべきである。特徴起動のために、アプライアンス１８は、コントローラ２２から直接受信される、すなわち、別のアプライアンス１８からは受信されない、ＦＣＴ５０を解読することのみが可能であるべきである。ＡＭＳ１０によって使用されるクレジットまたは測定スキームは、アプライアンス１８がコントローラ２２から直接受信されるクレジット通知のみを使用することができるように確保されるべきである。アプライアンス１８は、別のアプライアンス１８に誤って送信された資産を使用することができないことを確実にするように準備された、コントローラ２２からの資産のみを使用するべきである。アプライアンス１８が別のアプライアンス１８からのクレジット通知を使用することは可能であるべきではなく、攻撃者がアプライアンス１８上のクレジットの数を追加、除去、または変更することは可能であるべきではない。しかしながら、一意の資産が１回以上使用されないことを確実にするために、機構が定位置にある場合、高可用性／フェイルオーバー目的で、１つのアプライアンス１８上の資産が別のアプライアンス１８に複製されることを可能にするようにＡＭＳ１０を構成できることを理解することができる。コントローラ２２の管理のために、ウェブブラウザ１００は、ｈｔｔｐ上でウェブサーバ１０４にアクセスすることのみが可能であるべきであり、例えば、相互に認証される、暗号化される、完全性チェックされる、再生保護される等、通信が確保されるべきである。
【００４４】
ウェブサーバ１０４とコントローラデーモン１０６との間、およびＣＬＩユーティリティ１０２とコントローラデーモン１０６との間の通信は、例えば、ＳＳＬを使用して、図３に示されるように確保されるべきである。同様に、コントローラ２２とアプライアンス１８との間、およびアプライアンス１８とエージェント２０との間の通信は、例えば、ＳＳＬを使用して、確保されるべきである。アプライアンスＨＳＭ１９とＡＣＣ１２との間の通信は、ＡＣＣプロトコルを使用して確保されるべきであり、ＡＣＣ１２は、アプライアンス１８を認証するべきである。アプライアンス１８は、信用できる根拠と見なされる際には、ＡＣＣ１２を認証する必要がない。エージェント２０からアプライアンス１８へ、そこからコントローラ２２へのログは、暗号化され得、傍受および改ざんを防止するように完全性保護されるべきである。コントローラ２２のみが、ログを解読し、その正当性を認証することが可能であるべきである。これらのログは、生産高データ等のカスタムデータを含み得る。コントローラ２２およびアプライアンス１８は、攻撃に対して強化されるべきである。この強化は、ＨＳＭ１９上で作動するものを含む、ＯＳおよびアプリケーション（例えば、データベース１１０）に適用される。
【００４５】
全ての証明書は、好ましくは、顧客ごとのＡＭＳサブルート証明書上で署名される、信用できるデバイスＣＡによって発行される楕円曲線暗号化（ＥＣＣ）証明書である。次いで、ＥＣＣ証明書は、ウェブサーバ１０４、コントローラデーモン１０６、アプライアンス１８、およびエージェント２０のそれぞれの間のＳＳＬに使用され、つまり、ＨＳＭ証明書のために、ＡＭＳ１０の中の全ＨＳＭ１９のために、およびＡＣＣ１２とのＥＣＭＱＶネゴシエーションで使用されるＡＣＣ証明書のために使用される。顧客名は、証明書に組み込まれるべきであり、通信が同じ顧客名を伴うエンドポイントとの間でしか発生しないようにチェックされるべきである。データベース１１０に記憶されたデータは、無許可アクセスおよび修正に対して保護されるべきである。
【００４６】
（ＡＭＳ用の製品およびサービスモジュール）
本明細書で開示される実施例では、製品は、製品の名前、その識別、それが提供するサービス、どのアプライアンス１８が製品を生産しているか、および資産のリストをＡＭＳ１０に提供する、モデルである。例えば、資産は、シリアライゼーションスキーマの集合、およびスキーマ集合が適用されるアプライアンス１８のリストであり得る。同様に、資産は、キー種類の集合、およびキー種類が該当するアプライアンス１８のリストであり得る。さらに別の実施例では、資産は、ＦＣＴ５０の集合、および対応するアプライアンス１８のリストであり得る。本明細書で論議されるサービスモジュールは、ＡＭＳ構成要素のそれぞれ（コントローラ２２、アプライアンス１８、エージェント２０、およびＡＣＣ１２）が生産過程で何を提供するかを決定する。以下の実施例のＡＭＳ１０は、シリアライゼーション、キー注入、および特徴起動のためのサービスモジュールを定義することができるが、他の種類の資産を送達し、提供するように、他のサービスモジュールを適用できることが理解されるであろう。シリアライゼーション、キー注入、および特徴起動サービスモジュールの構成の実施例は、それぞれ、図７Ａ、７Ｂ、および７Ｃに示されている。
【００４７】
（シリアライゼーション）
最初に図７Ａを参照すると、シリアライゼーションサービスモジュールは、一意のシリアル番号を生成し、それをチップ（または他の電子オブジェクトあるいはデバイス）に割り当て、それを追跡する安全な手段を提供するために使用される、ＡＭＳ１０の構成である。このサービスを提供するためには、コントローラ２２が、製品モデルを定義し、次いで、各製品モデルに結び付けられる１つ以上のシリアライゼーションスキーマ１３４を定義するために使用される。各シリアライゼーションスキーマ１３４は、特定の製品（例えば、デバイス１４）に対する一連のシリアル番号を含む。シリアル番号スキーマ１３４は、同期化動作が行われる時にはいつでも、典型的には自動的に、安全な暗号化された接続上で（例えば、ＳＳＬ上で）製造業者の場所におけるアプライアンス１８に送信される。次いで、エージェント２０は、エージェントＡＰＩ２１またはデーモンＡＰＩ２３を使用して、製品名別にシリアル番号値を要求することができる。シリアル番号は、アプライアンス１８によって生成され、測定され、エージェント２０に提供される。次いで、シリアル番号は、エージェント２０を使用して、チップ製造過程において各ダイの中へ連続的に注入される。コントローラ２２は、各シリアライゼーション製品に対していくつのシリアル番号が消費されたかを追跡し、ＧＵＩ８においてこれらの結果を入手可能にする。
【００４８】
シリアライゼーションスキーマ１３４は、どのようにシリアル番号が生成されるかについての規則を定義するオブジェクトである。例えば、それは、シリアル番号の数字が１６進数で表されるか１０進数形態で表されるか、および固定文字列が含まれるかどうかを決定する。１つ以上のシリアライゼーションスキーマ１３４をシリアライゼーション製品に結び付けることができるが、特定のスキーマ１３４は１つの製品にしか結び付けられることができない。製品に結び付けられるシリアライゼーションスキーマ１３４は、重複することができず、いったん結び付けられると、スキーマ１３４は結び付きを解除されるべきではない。他の変更のために、例えば、挿入されている静的文字列を変更するために、新しいシリアライゼーションスキーマ１３４が作成されるべきである。
【００４９】
１つより多くのスキーマ１３４が同じ製品に結び付けられる場合、そのような複数のスキーマ１３４は、優先順位で割り当てられるべきである。製品に対するシリアル番号文字列を要求する時に、シリアル番号は、最高優先順位を伴うスキーマ１３４から与えられる。スキーマ１３４が使いつくされた（すなわち、スキーマ１３４からのカウント値が全て割り当てられている）場合には、次の最高優先順位を伴うスキーマが使用される。シリアライゼーション製品は、２つ以上のアプライアンス１８に結び付けることができ、各結び付きは、最小および最大在庫レベルを有する。コントローラ２２は、複数のアプライアンス１８に結び付けられる製品が一連の非重複シリアル番号を有することを確実にするために、使用することができる。製品がアプライアンス１８に結び付けられると、コントローラ２２は、特定最大レベルでシリアル番号の在庫を保つ。いったん在庫がコントローラ２２からアプライアンス１８に送信されると、シリアル番号値は、呼び戻される、または取り消されることが可能であるべきではない。
【００５０】
シリアル番号スキーマ１３４は、どのようにして基準値をシリアル番号文字列に変換するかを記述し得る。この実施例では、シリアル番号基準値という用語は、任意の正の６４ビット整数を指し、基準属性と混同されるべきではない。シリアル番号スキーマ１３４は、開始、カウント、基準、および総文字数といった、いくつかの属性を有する。開始およびカウント値は、スキーマにおいて許容される基準値の範囲を定義する。基準属性は、基準値がシリアル番号文字列に変換される時に、１０進数形式で表されるか１６進数形式で表されるかを決定する。総文字数属性は、基準値をシリアル番号文字列として表す時に、いくつの文字を使用するかを定義する。ゼロ以上の静的文字列を、シリアル番号文字列の中の任意の場所に挿入することができる。スキーマ１３４における最大値を表すために必要とされる最小数の文字より少ない数を特定することが可能であるべきではないことが留意され得る。例えば、スキーマ１３４が０から始まり、カウントが１０００である場合には、スキーマが範囲［０，９９９］を定義し、３つの文字が９９９を表すために必要とされるため、３つ以上の文字が存在するべきである。
【００５１】
所望のシリアル番号スキーマ１３４および基準値が与えられると、シリアル番号文字列は以下のように構築される。
【００５２】
ａ）基準値は、［開始値、開始値＋カウント−１］の範囲内でなければならない。
【００５３】
ｂ）次いで、基準値は、特定形式で表される。
【００５４】
ｃ）次いで、結果として生じた文字列は、総文字数属性に応じて、左または最上位端から切り捨てられ、または、左側にゼロが付け足される。
【００５５】
ｄ）次いで、任意の静的文字列が結果として生じた文字列に挿入される。
【００５６】
実施例Ａ―スキーマＡ＝（開始＝１、カウント＝１００、文字数＝４、基準＝１６）および基準値＝５５である場合、結果はシリアル番号００３７である。これは、５５が範囲内であり、５５に対する１６進数形式が３７であり、４つの文字が必要とされ、したがって、２つのゼロを付け足すためである。基準値＝３である場合、結果はシリアル番号０００３である。
【００５７】
実施例Ｂ―スキーマＢ＝（開始＝１、カウント＝１００、文字数＝３、基準＝１０、静的文字列１＝（ｐｏｓ＝３，ｓｔｒ＝Ｘ）、静的文字列２＝（ｐｏｓ＝１，ｓｔｒ＝−））であり、基準値が５６である場合、結果はシリアル番号文字列０−５６Ｘである。これは、５６が範囲内であり、５６がすでに基準１０においてであり、Ｘが位置３（すなわち、最下位位置）に挿入され、ダッシュ（−）が位置１（すなわち、最上位位置）に挿入されるためである。５６はたった２文字であるため、シリアル番号を付け足すためにゼロが使用される。基準値＝１である場合、結果は２つのゼロが付け足されたシリアル番号文字列０−０１Ｘである。
【００５８】
シリアライゼーションサービスモジュールは、シリアル番号スキーマがコントローラ２２からアプライアンス１８に送信される時（コントローラ活動ログとして記録される）、シリアル番号がアプライアンス１８によって生成され、エージェント２０に送信される時（アプライアンス活動ログとして記録される）、およびシリアル番号がエージェント２０によって使用される時（エージェント活動ログとして記録される）に、ログを作成する。全てのログは、（収集された後に）コントローラ２２上で保たれ、シリアル番号の使用を監視し、追跡するために使用することができる。シリアル番号がエージェント２０に発行される度に、発行アプライアンスのクレジットが１ずつ減らされ、その製品に対するシリアル番号在庫が減らされる。両方のレベルは、コントローラ２２とアプライアンス１８との間の同期化動作中に補充され、アプライアンス１８のシリアル番号使用を測定するために使用される。
【００５９】
図８は、図２に示された基準ＡＭＳシーケンス図に基づいてシリアライゼーションサービスモジュールを実装するためのシーケンス図を図示する。図８では、コントローラ２２がシリアライゼーションスキーマ１３４を生成し、これらを製品に結び付け、次いで、製品をアプライアンス１８に結び付け、製品およびスキーマをアプライアンス１８に送信し、それにより、シリアル番号が生成され、測定されることが分かる。
【００６０】
再び図７Ａを参照すると、シリアライゼーション製品ワークフローが示されている。この実施例では、ビジネスマネージャが、シリアライゼーションスキーマを文書化し、提案されたスキーマをＡＭＳ管理者に伝達することによって、シリアライゼーションスキーマを定義し得る。次いで、ＡＭＳ管理者は、シリアライゼーションスキーマ１３４を生成するために、コントローラＧＵＩ８を使用し得る。ビジネスマネージャはまた、シリアライゼーション製品を定義し、この製品定義を文書化し、定義をＡＭＳ管理者に伝達することもできる。次いで、ＡＭＳ管理者は、コントローラＧＵＩ８を使用して、定義ごとにシリアライゼーション製品を作成し得る。次いで、ＡＭＳ管理者は、続けて、シリアル番号スキーマを製品に結び付け、製品をアプライアンスに結び付け、シリアル番号スキーマをアプライアンス１８と同期化するためにコントローラ２２を使用する。次いで、アプライアンス１８は、例えば、図８に示されたシーケンスごとに、シリアル番号を注入するためにエージェント２０を使用する。
【００６１】
シリアライゼーション製品は、定義されると、ＡＭＳ１０によって一意の製品ＩＤが割り当てられ、他の製品から区別するために、操作者によって一意の識別名が提供される。各シリアライゼーション製品について、アプライアンス１８は、シリアル番号をエージェント２０に直接送達することができ、またはＦＣＴ５０を介してシリアル番号を送達することができる。シリアル番号がＦＣＴ５０を介して送達される場合には、操作者は、以下で提供される実施例において、シリアル番号が記憶される、ＡＣＣ１２内の２バイトメモリオフセット（１６進数）を特定し、また、８バイト記録タグ値（１６進数）も特定する必要がある。
【００６２】
アプライアンス１８は、コントローラ２２からシリアル番号製品／スキーマを受信し、シリアル番号に対するエージェント２０からの要求に応答し、シリアル番号スキーマ１３４に基づいてシリアル番号を生成し、シリアル番号を測定し、エージェント２０からログを受信し、コントローラ２２にログを返送する。アプライアンスクレジットは、エージェント２０に送達される各シリアル番号について１ずつ低減され、クレジットがゼロ（０）に達した場合、もはやシリアル番号が送達されるべきではない。シリアル番号がＦＣＴ５０を介して送達されるものである時に、直接送達されることが可能であるべきではなく、すなわち、アプライアンス１８がそのような要求を拒否するべきである。また、ＦＣＴ５０を介して送達される時に、アプライアンス１８におけるロギングは、ＡＣＣ  ＵＩＤの記録も取られるべきであることを除いて、シリアル番号が直接送達される時と同一となるべきである。構成可能な受信ブロックサイズが適応されるべきである（アプライアンス１８から単一のブロックで返信されるログの数）。シリアル番号がＦＣＴ５０を介して送達される時に、ＡＣＣフラグ、記録タグ、およびメモリアドレスデータが、アプライアンス１８上の改ざんから保護されるべきである。
【００６３】
エージェント２０は、シリアライゼーション製品名およびカウント別に、エージェントＡＰＩ２１またはデーモンＡＰＩ２３を使用して、アプライアンス１８からシリアル番号を要求することが可能であるべきである。エージェント２０はまた、送達のための２つの機構、すなわち、直接、またはＦＣＴ５０を介する機構をサポートするべきである。エージェント２０は、各シリアル番号の使用の記録を取り、ログをアプライアンス１８に返信するべきである。エージェント２０はまた、無駄として破棄されたシリアル番号の記録を取るべきである。シリアル番号がＦＣＴ５０を介して送達される時に、エージェントにおけるロギングは、ＡＣＣ  ＵＩＤの記録も取られるべきであることを除いて、シリアル番号が直接送達される時と同一となるべきである。
【００６４】
上記で論議されるように、エージェント２０は、例えば、デーモンＡＰＩ２３を使用する時に、試験アプリケーション１１６ｂからログデータ１２８を取得する。ＡＭＳ１０によって提供される監査チャネル６は、製造過程中に種々の相関が作られることを可能にすることが分かっている。例えば、シリアル番号をテスター１６の中のチップに追加する時に、テスター１６は、典型的には、ウエハ上の特定のチップの場所を知っている。この場所は、追加されたシリアル番号とともに記録を取ることができ、最終的に、この情報は、コントローラ２２によって関係データベース１１０に記憶される。このようにして、以降で、チップが製造過程中の試験で不合格になった場合、欠陥が機械内のプロセッサ場所のある部分で発生したかどうかを決定するように、不合格になったチップのシリアル番号を、チップがダイの上にあった場所と相関させるために、関係データベース１１０を使用することができる。別の実施例では、ある時のある機械での故障を追跡するために、またはチップの窃盗疑惑においてある従業員を識別するためにも、シリアル番号の追加と関連付けられたタイムスタンプを使用することができる。したがって、監査チャネル６および関係データベース１１０は、説明責任を向上させるため、および製造過程中の故障の根本原因を是正するためのデータマイニングおよび分析に利用することができる。
【００６５】
（キー注入）
ここで図７Ｂを参照すると、キー注入サービスモジュールは、製品（例えば、デバイス１４）にキーを注入する安全な手段を提供する、ＡＭＳ１０の構成である。このサービスを提供するためには、コントローラ２２が、１つ以上のキー種類１３８を定義するために使用される。キー種類１３８は、ファイルの中のキーの形式を定義する。次いで、コントローラ２２は、製品モデル１４０を定義するため、次いで、図７Ｂで一例のみとして示されるように、１つ以上のキー種類１３８を各製品モデル１４０に結び付けるために使用される。製品からキー種類を分離することなく、キーを製品定義に直接追加することによって、プロジェクト名および製品名が異なるアプリケーションで顧客によって定義される異なる方法から、混乱が発生し得ることが分かっている。例えば、複数のキー種類が「製品バケット」に追加された場合、その製品のクレジットが低くなると、キーのうちのどれが低いのかを決定し、したがって、どのキーをつぎ足すべきかを知ることが困難であり得る。図７Ｂに示されるように、製品１４０からキー種類１３８を分離することによって、典型的に顧客がどのようにして資産を利用するかをより密接に反映するように、付加的なレベルの抽象化が提供される。このようにして、コントローラ２２は、誤ったキーを不意に取り込むことを回避するために、および各キー種類１３８の実際の在庫レベルをより良好に追跡するために、１つ以上のキー種類１３８の「ブロブ」ならびに他の資産を形成することができる、製品種類１４０を定義するために使用されることができる。そのようなものとして、例えば、図７Ｂに示されるようなＤＶＤ１３６上でキーがインポートされると、その製品種類１４０に使用されるキーの数および種類との論理的相関を必ずしも伴わずに、異なる名前によって呼ばれる、ある製品にキーを直接割り当てようとするよりもむしろ、キーは、キー種類に従って明確に異なる「バケット」に分離される。代わりに、キーは、単純にキー種類１３８別に分離され、次いで、顧客定義関連性は、製品種類１４０の抽象化によって定義される。また、製品１４０を定義する時に、製品１４０が、例えば、ある配布者からのあるキー種類のみを使用するように、ある許可を確立することができる。種々の契約上の義務に従って、あるキー種類１３８が提供され得るため、キー種類１３８の分離および割当に対するより良好な制御は、そのような契約上の義務が順守されることを確実にする。
【００６６】
また、図７Ｂには、顧客特有の方法で、あるキー種類１３８を修正するために使用することができる、キー変換１３９も示されている。図７Ｂに図示されるように、キー変換１３９は、例えば、そのキー種類１３８のキーが常に、変換されたキー種類１３８が定義されるような方法で変換されるものである場合に、キーをインポートする時に適用することができる。代替として、キー変換１３９は、送達前または送達時に適用することができ、キーは、製品特有の基準で、またはアプライアンス特有の基準で変換される。さらに別の代替案では、キー変換１３９は、キーがエージェント２０に送達される前にアプライアンス１８において適用することができる。キー変換１３９が適用される場所を決定する時に、キー変換１３９が位置する場所に基づいて、セキュリティの考慮が行われるべきであり、例えば、その場所におけるより低い信頼により、アプライアンス１８にある時は、より高いセキュリティである。示されるようにキー種類１３８および製品種類１４０を分離することによって、必要とされるキー種類１３８の数を最小限化するように、変換１３９をキー種類１３８よりもむしろ製品１４０と関連付けることができることが留意され得る。言い換えれば、キー種類１３８は、インポートされたものとして別々に記憶することができ、キー変換１３９は、さらに別のキー種類１３８を追加すること、およびこれが引き起こし得る潜在的混乱を回避するように、製品種類１４０ごとに実施することができる。
【００６７】
いったんキー種類１３８が定義されると、ＧＵＩ８を使用して、その種類のキーをキーファイルから（例えば、ＤＶＤ１３６を介して）コントローラ２２上にインポートすることができる。次いで、操作者が、アプライアンス１８に送信されるキーの数を特定するためにＧＵＩ８を使用することができる。ハッシュが定義された場合には、ＡＭＳ１０がハッシュ値を検証する。キーは、同期化動作が行われる時にはいつでも、この実施例では自動的に、安全な暗号化された接続上で（例えば、ＳＳＬ上で）製造業者の場所におけるアプライアンス１８に送信される。次いで、エージェントＡＰＩ２１またはデーモンＡＰＩ２３を使用して、製品名別にキーを要求することができる。エージェント２０は、キーを取り出すと、製品およびその製品のユニット数を求める。アプライアンス１８は、この製品に結び付けられる全てのキー種類を問い合せ、各キー種類に対する特定数のキーを返信する。次いで、キーは、エージェント２０によって組立ライン上の各ダイに注入される。
【００６８】
キー注入製品は、１つ以上のアプライアンス１８に結び付けることができ、各結び付きは、最小および最大在庫レベルを有する。製品がアプライアンス１８に結び付けられると、コントローラ２２は、特定最大レベルでキーの在庫を保つ。いったん在庫がコントローラ２２からアプライアンス１８に送信されると、キーを呼び戻す、または取り消すことはできない。コントローラ２２は、各キー種類１３８に対していくつのキーが注入されたかを追跡し、ＧＵＩ８においてこれらの結果を入手可能にする。図９は、キー注入サービスを実施するための例示的なシーケンス図を図示する。シリアライゼーションと比較すると、キー注入はまた、ファイルからキーをインポートするステップも有することが分かるが、キーはまた、コントローラ２２によって生成し、キー種類を定義する時に行うことができることが理解できる。したがって、図９に示されたシーケンスは、例証目的のためにすぎない。
【００６９】
キー注入のためにＡＭＳ１０を実装する時に、キーデータは、コントローラ２２上にインポートされた後に、プレーンテキストで記憶されるべきではない。解読は、ＡＣＣ１２が使用されない限り、アプライアンス１８がキーをエージェント２０に送達する時のみに発生するべきであり、その場合、データは、ＡＣＣ１２によって（すなわち、ＦＣＴ５０内のキーを処理することによって）処理されない限り、解読されない。
【００７０】
キー種類１３８は、ファイルの中のキーの形式を定義する、いくつかの属性を有する。典型的なキー種類定義を、ＨＤＣＰ＿ＴＸキーについて、以下の表１に提供する。
【００７１】
【化１】
0005572705.tif 000002
【００７２】
【化２】
0005572705.tif 000003
【００７３】
キー注入サービスモジュールは、成功しようと、失敗しようと、無駄になろうと、キーがアプライアンス１８に送信される時（コントローラ活動ログ）、およびキーがエージェント２０によって消費される時（エージェント活動ログ）に、ログを作成するように構成される。そのようなログイベントは、図９に示されている。全てのログは、同期化動作中にアプライアンス１８によって返信された後に、コントローラ２２上に記憶され、キーの使用を監視し、追跡するために使用することができる。キーがエージェント２０に発行される度に、発行アプライアンスのクレジットが１ずつ減らされ、その製品に対するキー在庫が減らされる。両方のレベルは、コントローラ２２とアプライアンス１８との間の同期化動作中に補充され、アプライアンス１８上の使用を測定するために使用される。
【００７４】
シリアライゼーションと同様に、各キー注入生産は、ＡＭＳ１０による一意の製品ＩＤ、および操作者によって提供される一意の識別名が割り当てられる。各キー注入製品については、上記で論議される２つの機構、すなわち、キーをエージェント２０に直接提供すること、およびＦＣＴ５０を使用する送達が許容されるべきである。キーがＦＣＴ５０を介して送達される場合、操作者はまた、ＡＣＣ１２内の２バイトメモリオフセット、および８バイト記録タグ値も特定する。各キー種類１３８は、ＡＭＳ１０による一意のキー種類ＩＤ、および操作者によって提供される一意の識別名が割り当てられる。キーは、この実施例では、バイトのストリームとして扱われる。
【００７５】
順序付けられたキーのプレーンテキストバッチを、コントローラ２２のローカルにあるファイル（例えば、ＤＶＤ１３６）からインポートすることができる。各キーは、ＡＭＳ１０によって一意のキーＩＤが割り当てられる。この一意のキーＩＤは、キーの中のキー識別子と同じではないことが留意され得る。キーファイルはまた、ＧＵＩ８が作動しているリモートコンピュータからインポートすることもできる。特別な場合は、ＰＧＰに暗号化されたＨＤＣＰキーが、ＰＧＰ解読され、次いで、インポートされることを可能にすることである。これらのＨＤＣＰキーのためにサポートされる、特別なファイル形式がある。ＰＧＰ解読のために、ＧＮＵ  ＧＰＧを使用することができる。この場合、必要とされる証明書および公開キーは、すでにＧＮＵ  ＧＰＧにインポートされていると仮定される。
【００７６】
特定のキー種類１３８のインポート中に、キー識別子が使用される場合には、キーのキー識別子は、そのキー種類１３８に対する全ての以前にインポートされたキー識別子と比較される。この機構は、別のキー種類に再び使用されているキーファイルから保護せず、したがって、動作規則を使用して防止されるべきであることが留意され得る。特定のキー種類のインポート中に、ハッシュが使用される場合には、ハッシュは、全てのキーについて計算され、検証される。このハッシュ計算は、ＨＳＭ１９を使用して実施されない。操作者は、特定のキー種類のキーをインポートしているジョブがすでに作動している場合、同じキー種類のキーをインポートすることができなくなるべきである。
【００７７】
１つ以上のキーが、キー注入製品に結び付けられることを許容されるべきである。各キー種類は、複数の製品に割り当てられ得る。各製品における各キー種類については、これらのキー種類のうちのいくつかが必要とされるかが特定されるべきである。キー種類は、製品がいずれのアプライアンス１８にも結び付けられない場合にのみ、製品から結び付きを解除されることが可能であるべきである。各キー注入製品は、１つ以上のアプライアンス１８に結び付けられることを許容されるべきである。各アプライアンス１８は、それに割り当てられた複数のキー製品を有し得、アプライアンス１８からキー注入製品の結び付きを解除することが可能であるべきである。コントローラ２２は、アプライアンス１８に重複キーを送信するべきではない。いったんキーがアプライアンスに送達されると、キーはコントローラ２２から削除されるべきである。
【００７８】
シリアライゼーションと同様に、測定システムが使用されるべきであり、いったんキーがアプライアンス１８に発行されると、それらは、返信されること、呼び戻されること、または取り消されることが可能であるべきではない。キーがＦＣＴ５０を介して送達される時に、アプライアンス１８およびエージェント２０のロギングは、キーが直接送達される時と同一となるべきであるが、ＡＣＣ  ＵＩＤも含む。
【００７９】
キー注入サービスモジュールは、キーがインポートされる前に、コントローラ２２においてキーの処理をサポートすることができ、キーが恣意的に変換されることを可能にし、本明細書ではキーインポート署名オブジェクトと呼ばれる。キーインポート署名オブジェクトは、定義されることが可能であるべきであり、各署名オブジェクトは、ＡＭＳ１０によって一意の署名オブジェクトＩＤが割り当てられ、各署名オブジェクトは、操作者によって提供される一意の識別名が割り当てられる。署名オブジェクトは、コントローラ２２に存在する共有オブジェクトであり、署名を用いて暗号によって保護される。次いで、共有オブジェクトにおける機能は、操作者がキーを変換することを可能にするようにインポートされる前に、全キーについて１回呼び出される。キー識別子（例えば、ＨＤＣＰの場合はＫＳＶ）は、署名オブジェクトが潜在的にそれを難読化した後でさえも、コントローラ２２が常にそれにアクセスすることができるように、複製されるべきであることが留意され得る。キーインポート署名オブジェクトは、１つ以上のキー種類１３８に割り当てられることが可能であるべきであり、各キー種類１３８は、多くても１つのキーインポート署名オブジェクトしか有さないことが可能であるべきである。キーインポート署名オブジェクトは、キー種類１３８から割当を解除されることも可能であるべきである。
【００８０】
キー注入のために構成された時のコントローラ２２はまた、解読された後であるが、アプライアンス１８に送信される前に、コントローラ２２においてキーの処理を可能にする、キー変換プラグイン１３９をサポートすることもできる。これは、キーからアプライアンスへの変換と呼ばれ得る。キー変換プラグイン１３９は、例えば、キーに対するハードウェア特有の修正またはエンドツーエンドプロトコル特有の修正が、顧客ごとに、または製品ごとに行われることを可能にする。これは、エラー訂正のためのビット割当等の修正が行われることを可能にし、変換は、キーをインポートする時に、またはアプライアンス１８への送達の前に実施することができる。そのようなキーからアプライアンスへの変換１３９は、定義されることが可能であるべきであり、各変換は、ＡＭＳ１０によって一意の署名オブジェクトＩＤが割り当てられるべきであり、各変換は、操作者によって提供される一意の識別名が割り当てられるべきである。変換は、コントローラ２２に存在する共有オブジェクトであり、署名を用いて暗号によって保護されるべきである。次いで、共有オブジェクトにおける機能は、キーを変換するために、アプライアンス１８に送信される前に、全キーについて１回呼び出される。キー識別子は、変換が行われた後でさえも、コントローラ２２が常にそれにアクセスすることができるように、複製されるべきであることが留意され得る。キーからアプライアンスへの変換は、製品に結び付けられると、１つ以上のキー種類１３８に割り当てられることが可能であるべきである。それぞれの結び付けられたキー種類１３８は、多くても１つまでのキーからアプライアンスへの変換を割り当てられるべきである。キーからアプライアンスへの変換は、製品におけるキー種類から割当を解除されることも可能であるべきである。
【００８１】
キー注入サービスモジュールはまた、解読された後であるが、エージェント２０に送信される前に、アプライアンス１８においてキーの後処理を可能にする、アプライアンス署名オブジェクトをサポートすることもできる。アプライアンス署名オブジェクトに関して、キー通過もサポートされるべきである。キー通過が有効であるか無効であるかに応じて、アプライアンス１８がキーをエージェント２０に送信する前に、アプライアンス署名オブジェクトが存在すべきか存在すべきでないかを強制する。これは、本明細書ではキーからエージェントへの署名オブジェクトと呼ばれ得る。
【００８２】
キーからエージェントへの署名オブジェクトは、定義されることが可能であるべきであり、各署名オブジェクトは、ＡＭＳ１０によって一意の署名オブジェクトＩＤが割り当てられ、各署名オブジェクトは、操作者によって提供される一意の識別名が割り当てられる。署名オブジェクトは、コントローラ２２上に存在する共有オブジェクトであり、署名を用いて暗号によって保護される。次いで、共有オブジェクトにおける機能は、キーを変換するようにアプライアンス１８に送信される前に、全キーについて１回呼び出すことができる。キー識別子は、変換が行われた後でさえも、コントローラ２２が常にそれにアクセスすることができるように、複製されるべきであることが留意され得る。キーからエージェントへの署名オブジェクトは、１つ以上のキー種類に割り当てられることが可能であるべきである。各キー種類は、多くても１つまでの割り当てられたキーからエージェントへの署名オブジェクトを有するべきであり、キーからエージェントへの署名オブジェクトは、キー種類から割当を解除されることも可能であるべきである。キー注入サービスモジュールはまた、新しいキーを送達することなく、コントローラが現在のキーレベルのみを問い合せ、アプライアンスからログを取り出す、読み出し専用同期モードもサポートすることができる。
【００８３】
アプライアンス１８は、エージェント２０に重複キーを送信するべきではなく、いったんキーが送達されると、キーはアプライアンス１８から削除されるべきである。キーがＦＣＴ５０を介して送達される時は、直接送達されることが可能であるべきではなく、キー注入製品がアプライアンス１８から結び付きを解除される時に、その製品に属する全てのキーは、アプライアンス１８から削除されるべきである。
【００８４】
エージェント２０は、製品名およびカウント別に、アプライアンス１８からキーブロブを要求することが可能であるべきであり、各ブロブは、いくつのキー種類が製品に結び付けられるかに応じて、１つ以上のキー種類を含むべきである。例えば、製品が３つのキー種類を利用する場合、キーブロブは３つのキーを含む。エージェント２０は、テスター１６に重複キーを送信するべきではない。いったんキーがテスター１６に送達されると、エージェント２０から削除されるべきである。エージェント２０はまた、キーブロブにおける各キーの使用の記録を別々に取るべきであり、かつ、エージェント２０が破棄する意図であるあらゆるキーの記録を取るべきである。
【００８５】
（特徴起動）
ＡＭＳ１０は、図７Ｃに示されるように、特徴起動サービスモジュールを提供されるように構成されると、ＡＣＣ１２を使用して、製造後に、製品の特徴セットを動的に起動または動作停止する安全な手段を提供する。上記のように、ＡＣＣ１２はまた、シリアライゼーションおよびキー注入サービスモジュールとともに使用することもできるが、特徴起動サービスモジュールとともに使用するために特に有利である。このサービスを提供するために、コントローラ２２は、１つ以上のＦＣＴ５０を定義するために、次いで、製品モデルを定義するために使用される。次いで、ＦＣＴ５０は、各製品モデルに結び付けられ、その場合、全てのＦＣＴ５０はまた、その製品を生産するアプライアンス１８にも結び付けられる。次いで、ＦＣＴ５０は、ＡＣＣ１２を使用して、組立ライン上の各ダイに適用される。製品は、１つ以上のアプライアンス１８に結び付けることができ、各結び付きは、最小および最大在庫レベルを有する。製品がアプライアンス１８に結び付けられると、コントローラ２２は、特定最大レベルでＦＣＴ５０の在庫を保つ。いったん在庫レベルがコントローラ２２からアプライアンス１８に送信されると、ＦＣＴ５０は、呼び戻されること、または取り消されることが可能であるべきではない。コントローラ２２は、各製品に対していくつのＦＣＴ５０が適用されたかを追跡し、ＧＵＩ８においてこれらの結果を入手可能にする。
【００８６】
本明細書で説明される実施形態では、ＡＣＣ１２は、２５６ビット（３２バイト）特徴レジスタ１２０、タグレジスタ、およびＮＶＲＡＭを含む。特徴レジスタ１２０は、デバイス１４上の特徴を制御する（オンまたはオフにする、あるいは部分的にオンまたは部分的にオフにする）ために使用されるように意図されている。正確にどのようにして特徴がオンにされる、オフにされる等は、デバイス依存である。ＦＣＴ５０によって提供されるＡＣＣコマンドは、特徴レジスタ１２０、タグレジスタ、およびＮＶＲＡＭからデータを読み出すか、またはそれにデータを書き込むために使用される。ＦＣＴ５０は、特徴データおよび記録タグを含む。特徴データは、どの製品特徴を起動または動作停止するかを決定する。記録タグは、特徴データを使用して、どの特徴の記録がＡＣＣ１２によって起動されるかを提供する。特徴データは、ＡＣＣ特徴レジスタ１２０にプログラムされ、記録データは、ＡＣＣタグレジスタにプログラムされる。記録タグの値も、顧客依存である。特徴レジスタに書き込む２つのコマンド（以下でより詳細に説明される）は、ＳＥＴＦＥＡＴおよびＳＥＴＦＥＡＴ＿ＴＥＭＰである。後者を使用する時、記録データは、ＮＶＲＡＭに保存されず、電源を切った時に失われる。
【００８７】
ＡＣＣ１２はまた、この実施例では、６４ビット（８バイト）記録タグ（レジスタ）を含む。記録タグは、何がＡＣＣ１２上にプログラムされているかを記録するために使用されるように意図されている。記録タグは、ＡＣＣ１２に書き込むコマンドのうちのいずれかを使用する時に設定される（ＳＥＴＦＥＡＴ＿ＴＥＭＰを除く）。どのように記録タグが解釈されるかはアプリケーション依存である。ＡＣＣ１２はまた、実装依存量のＮＶＲＡＭも含む。ＮＶＲＡＭに書き込むコマンドは、ＷＲＡＣＣＥＳＳである。通常、書き込むことができるデータの最大量が課せられ、例えば、５００バイトである。何がＮＶＲＡＭに書き込まれるか、およびそれが書き込まれる場所は、実装依存である。
【００８８】
ＦＣＴ５０は、同期化動作が生じる時にはいつでも、自動的に、安全な暗号化された接続上で（例えば、ＳＳＬ上で）製造業者の場所におけるアプライアンス１８に送信される。次いで、ＦＣＴ５０は、エージェントＡＰＩ２１またはデーモンＡＰＩ２３を使用して、製品名別にエージェント２０によって要求することができる。エージェント２０が特徴起動製品を要求すると、その製品に個別に結び付けられた全てのＦＣＴ５０を取得する。エージェント２０がアプライアンス１８からＦＣＴ５０を取り出すと、その名前のＡＣＣ使用可能製品について全てのサービスモジュールを問い合せ、その場合、複数のＦＣＴ５０がエージェント２０に送達され得、次いで、ＡＣＣ１２に個別に送信される。エージェントＡＰＩ２１は、ＡＣＣ１２と直接連動しなくてもよく、その場合、実装依存インターフェースが必要とされる。特徴起動サービスモジュールを使用する時に、特徴データは、コントローラ２２から退出した後、およびＡＣＣ１２に進入する前に、決してプレーンテキストとなるべきではない。
【００８９】
図１０Ａで見ることができるように、特徴起動サービスモジュールは、
特徴データがアプライアンスに送信される時（コントローラログ）、特徴データがエージェント２０に送信される時（アプライアンスログ）、および特徴データがＡＣＣ２０に送信される時（エージェントログ）に、ログを作成する。全てのログは、同期化動作中にアプライアンス１８によって返信された後に、コントローラ２２上に記憶され、特徴の使用を監視し、追跡するために使用することができる。特徴データがアプライアンス１８上で使用される度に、アプライアンスクレジットが１ずつ減らされ、各アプライアンス１８はまた、特徴データが使用される度に１ずつ減らされる、特徴データ製品レベルを維持する。特徴データレベルおよびクレジットレベルは、コントローラ２２がアプライアンス１８を同期化する時に補充される。これらの機構の両方は、アプライアンス１８上の特徴データの使用を測定するために使用される。
【００９０】
図１０Ａでは、製品および特徴データの定義、ならびにＦＣＴ５０およびログ報告の送達は、シリアライゼーションおよびキー注入で使用される機構と同様である。しかしながら、ＡＣＣ１２を利用する時に、資産の注入または適用のための通常ループが、キー生成を伴うループ１、および特徴プログラミングを伴うループ１内のループ２といった、１対のループに分離されることを観察することができる。ループ１は、以下で詳細に説明されるコマンドｃｍｄ［ＳＴＡＲＴＡＣＣ］を提供することによって開始される。ループは、コマンドｃｍｄ［ＳＴＯＰＡＣＣ］を提供することによって終了される。ループは、図１０Ｂでより詳細に示されている。いったんｃｍｄ［ＳＴＡＲＴＡＣＣ］を提供すると、ＡＣＣ１２は、公開キーを生成し、しばらくした後、エージェント２０は、ＡＣＣ公開キーを取得するためにコマンドｃｍｄ［ＲＥＱＲＥＳＰ］を送信することによって、応答を要求する。エージェント２０は、これらの公開キーを次にアプライアンス１８に提供し、アプライアンス１８は、例えば、以降で例示されるようなＥＣＭＱＶプロトコルを使用して、共有キーを生成するためにこれらのキーを使用する。アプライアンス１８は、ＡＣＣ１２との安全な接続を開いており、特徴を測定および暗号化し、このイベントの記録を取ることができる。次いで、アプライアンス公開キーおよび暗号化された特徴は、エージェント２０に提供される。次いで、エージェント２０は、ＦＣＴ５０を含むコマンドｃｍｄ［ＩＮＩＴＩＡＬ  ＦＣＴ｜ＦＣＴ］を送信することによって、特徴プログラミングループを開始する。次いで、特徴は、ＡＣＣ１２によって特徴レジスタ１２０にプログラムされ、エージェントは、ｃｍｄ［ＲＥＱＲＥＳＰ］を使用して、再度応答を要求する。それに応じて、ＡＣＣ１２は、特徴プログラミングステップに関する暗号化された応答を提供し、エージェント２０は、このイベントの記録を取る。安全な特徴が確立されるため、上記のようにループが終了する前に、付加的な特徴プログラミングステップを適用することができる。
【００９１】
したがって、ＡＣＣ１２を伴うＡＭＳ１０を実装する時に、資産の一般的プロビジョニングおよび送達は、ＡＣＣ１２を必要としないサービスと同様であり、ＡＣＣ１２との安全な接続を確立するために必要とされる付加的な検討事項およびコマンドも必要とされることが分かる。これらの動作はまた、シリアル番号およびキーを運ぶためのＦＣＴ５０を利用するためにシリアライゼーションおよびキー注入サービスモジュールで使用されるように適合できることも理解することができる。そのようなものとして、ＡＭＳ１０によって提供される共通アプリケーションフレームワークを使用して、種々の実装が利用可能である。
【００９２】
本明細書で例示される他のサービスモジュールと同様に、特徴起動については、各製品は、ＡＭＳ１０による一意の製品ＩＤ、および操作者によって提供される一意の識別名が割り当てられるべきである。定義される各特徴には、ＡＭＳ１０による一意の特徴ＩＤ、および操作者による一意の識別名を割り当てることができる。各特徴は、コマンド種類を定義し、この実施例では、３２バイトデータ値を定義する。１つ以上の特徴は、特徴起動製品に結び付けられることが許容されるべきであり、各特徴は、複数の製品に結び付けられ得る。特徴は、その製品がいずれのアプライアンス１８にも結び付けられない場合にのみ、製品から結び付きを解除されることが可能であるべきである。各特徴起動製品は、１つ以上のアプライアンス１８に結び付けることができ、各アプライアンス１８は、それに割り当てられた複数の特徴起動製品を有し得る。
【００９３】
同期化動作中に、コントローラ２２がアプライアンス１８上で特徴起動製品レベルをつぎ足す場合には、測定過程を実装することができる。操作者は、本明細書で例示される他のサービスモジュールと同様に、警戒、最小、および最大レベルを定義する。特徴起動製品は、いずれのアプライアンス１８にも結び付けられない場合に、コントローラ２２上で修正／削除され得、特徴は、いずれの特徴起動製品にも割り当てられない場合に、コントローラ２２上で修正／削除され得る。アプライアンス１８は、いずれの製品もアプライアンス１８にも結び付けられない場合に、コントローラ２２上で削除することができる。特徴コマンド、記録タグ、およびデータは、アプライアンス１８上の改ざんから保護されるべきであり、より多くのＦＣＴ５０を提供することなく、クエリが行われ、ログが取得されることを可能にするように、読み出し専用同期モードがサポートされるべきである。
【００９４】
アプライアンス１８は、以下で説明される図５１から６６で定義されるプロトコルを使用して、エージェント２０を介したＡＣＣ１２への特徴の送達をサポートする。これは、コントローラ２２から特徴起動製品を受信すること、特徴起動製品に対するエージェント２０からの要求に応答すること、製品を測定すること、エージェント２０からログを受信すること、およびログをコントローラ２２に返送することを含む。アプライアンス１８は、送達された各ＦＣＴ５０に対するアプライアンスクレジットを減らし、特徴起動製品がアプライアンス１８から結び付きを解除されると、その製品に属する全ての特徴は、アプライアンス１８から削除されるべきである。
【００９５】
エージェント２０は、特徴起動製品名別にアプライアンス１８から特徴を要求することができ、上記のプロトコルを使用してＡＣＣ１２と連動することができ、製品における各特徴をＡＣＣ１２に別々に送達し、特徴の使用の記録を取り、ログをアプライアンス１８に返信することができる。特徴起動の特徴使用ログは、適切にフォーマットされた、顧客ログデータ用の単一の文字列フィールドを含むべきである。
【００９６】
（ＡＭＳ  ＧＵＩ）
図１１から５０は、図１および３に示されたＧＵＩ８の例示的なスクリーンショットを図示する。ＧＵＩ８は、この実施例では、ＡＭＳ１０に対するグラフィカルインターフェースを提供する、ウェブベースのアプリケーションである。説明されるように、ＧＵＩ８は、意図されたユーザとしてのＡＭＳシステム操作者を伴って設計されており、したがって、例えば、ユーザ名およびパスワードでログインすることによって、ＡＭＳコントローラ２２に接続する能力を提供する。ＧＵＩ８は、操作者が、製品１４、サービス、または製造業者別に状態情報を閲覧すること、現在のアラートをレビューし、コントローラ２２上で現在アクティブなジョブを管理および追跡すること、レポートを閲覧および生成すること、コントローラ２２についての情報および統計を閲覧すること、アプライアンス１８を管理し、アプライアンス１８と関連付けられた動作を実施すること、システムにおける製品１４を管理し、これらの製品１４と関連付けられた動作を実施すること、シリアライゼーションスキーマ、キー種類、およびＦＣＴ５０を管理すること、コントローラ２２およびアプライアンス１８へのアクセスを可能にする、ユーザ、パスワード、および役割を管理すること、特定のアプリケーションに対するオンラインヘルプにアクセスすること、およびアプリケーションに関係する情報（例えば、構築日、バージョン等）を決定することを可能にする。
【００９７】
ウェブベースのシステムとして実装される時に、標準ウェブブラウザを立ち上げ、ブラウザを適切なＵＲＬに向けることによって、ＧＵＩ８にアクセスすることができる。図１１に示されるように、ＧＵＩ８は、ユーザがログオフするか、または別様にコントローラ２２から「ロックアウト」された時に現れるように構成することができる、迅速状態表示２００を含むことができる。例えば、迅速状態表示２００は、ＧＵＩ８がログインしたユーザ側での非活動からタイムアウトした後に、またはユーザがロックボタンをクリックするか、あるいはメニュー（図示せず）から同様のオプションを選択した場合に、現れるように構成することができる。迅速状態表示２００はまた、ユーザログインを伴わなくても閲覧のために利用可能になる。このように、観察者がログインする必要なく、状態情報、警告、および他の重要なメッセージを閲覧することができる。例えば、アプライアンス１８がオフラインになるか、または誤動作すると、操作者または近接する別の個人さえも、最初にログインする必要なく、即時にこの状態を認識することができる。迅速状態表示２００はまた、ＧＵＩ８において活動がない状態で、規定の期間が経過した場合、迅速状態表示２００が表示され、操作者が再び継続するためにログインする必要があるように、ＧＵＩ８に対するスクリーンセーバとしても機能する。これは、「読み出し専用」で重要な状態情報を依然として提供しながら、不注意な改ざんまたは悪意のある改ざんからＡＭＳ１０を保護する。
【００９８】
迅速状態表示２００は、上部分２０２と、底部分２０４とを備える。上部分２０２では、サービスアイコン２０６が、ＡＭＳ１０によって提供されるサービスについて表示される。各アイコンは、色別に（例えば、赤または青）、特定のサービスと関連付けられたアプライアンス１８のうちのいずれかに関連する問題または警告があるかどうかを示す。底部分２０４では、製品アイコン２０８は、ＧＵＩ８において定義される製品１４について表示される。上部分２０２と同様に、各アイコン２０８は、色別に、特定の製品をサポートするシステムまたはアプリケーションにおけるアプライアンス１８のうちのいずれかに関連する問題または警告があるかどうかを示す。問題状態と対比した正常動作の異なる色の使用は、操作者が問題を迅速に識別し、その問題の原因を決定して、必要であれば是正措置を講じるようにアプライアンス１８およびアプリケーションに教え込むことを可能にする。必要であれば、底部分２０４は、例えば、多くの製品１４がある時に、複数の行（図示せず）を提供することができる。いくつかの実施形態では、操作者には、どの製品１４が迅速状態表示２００に現れるべきかを定義するためのオプションが与えられ得る。
【００９９】
迅速状態表示２００上のアイコンのうちのいずれかをクリックすることによって、ユーザログイン画面（図示せず）を立ち上げることができる。いったんログインすると、操作者には、選択したアイコンに従ってフィルタにかけられた状態表示を提示することができる。したがって、操作者は、迅速状態表示２００において特定のサービスに関連する問題を決定すると、そのサービスアイコン２０６をクリックすることができ、ログインすると、次の表示が、そのサービス、例えば、シリアライゼーションに対してフィルタにかけられる。いったん状態表示になると、操作者は、どのアプライアンスが警告を有するかを観察することができ、ダブルクリック（または他の入力）は、アプライアンス１８についての情報の詳細表示を操作者にもたらすことができ、警告の原因を決定することを可能にする。ログインする時に、ログイン画面には、迅速状態表示２００および他の画面と同様の形式を与えることができ、フィールドを区別するために、各フィールドは、異なる色でハイライトし、何が実施されているのかを示すように状態バーを提供することができる。エラーログインがあれば、フォームの最上部に赤い背景を伴って、非フィールド特有のメッセージを表示することができる。
【０１００】
いったん操作者が特定のコントローラ２２に接続し、ログオンすることに成功すると、ユーザが特定のアイコン２０６、２０８を選択した場合にフィルタにかけられ得るメインアプリケーション２１０が現れる。アプライアンス表示を提供する、一実施例が、図１２に示されている。ナビゲーションを容易にするために、ＧＵＩ８は、アプリケーションと相互作用するためのウィンドウ枠および方法の一貫した形態を提供する。
【０１０１】
この実施例でのメインアプリケーション２１０のメインナビゲーションおよび情報域は、アプリケーションメニューバー２１２と、表示ウィンドウ枠２１４と、メイン情報ウィンドウ枠２１６と、状態バー２１８と、バージョンバー２２０とを含む。図１２のアプリケーションメニューバー２１２は、５つのメニュー、すなわち、コントローラメニュー、サービスメニュー、表示メニュー、アクションメニュー、およびヘルプメニューを備える。コントローラメニューは、操作者がコントローラ２２を修正し、ＧＵＩ８からログアウトすることを可能にする。サービスメニューは、この実施例では、シリアライゼーション、キー注入、および特徴起動を含む、各サービスに対するアイテムを含む。表示メニューは、操作者が、種々の表示、例えば、状態、警告、ジョブ、レポート、コントローラ、アプライアンス、製品、シリアライゼーションスキーマ、キー種類、特徴制御チケット、ユーザ等から選択することを可能にする。アクションメニューは、選択された表示に従って変化する。ヘルプメニューは、システムヘルプ、管理者のガイド、開発者のガイド、製品概観、およびシステム概観、ユーザのガイド等の種々のヘルプリソースへのアクセスを提供することができる。
【０１０２】
表示ウィンドウ枠２１４は、ＧＵＩ８における異なる表示への迅速アクセスを提供する。そのような表示は、状態表示と、警告表示と、ジョブ表示と、レポート表示と、コントローラ表示と、アプライアンス表示と、製品表示と、シリアライゼーションスキーマ表示と、キー種類表示と、ＦＣＴ表示と、ユーザの表示とを含み得る。この実施例では、表示ウィンドウ枠２１４は、ユーザにとって表示メニューの代替案である。該当する場合、各表示アイテムの脇の数は、ＡＭＳ１０においてアクティブな関連アイテムの数（例えば、警告表示に対する警告の数、ジョブ表示に対するジョブの数等）を示す。表示の多くはまた、選択されたサービスに従って、操作者がデータの中のアイテムを迅速にフィルタにかけることを可能にする、サービスメニューを表示することもできる。例えば、アプライアンス表示がアクティブであり、シリアライゼーションアイテムがサービスメニューで選択された場合には、アプライアンス表示は、アクティブなシリアライゼーションサービスとともに全てのアプライアンスを表示することができる。フィルタにかけるためにサービスメニューを使用する時に、標準フィルタバーを無効にし、隠すことができる。付加的なサービス特有の情報が、情報ウィンドウ枠２１６の中の各アイテムについて表示され得、追加のサービス特有のアクションが、サービスメニューでサービスを選択する時に現れ得る。
【０１０３】
メイン情報ウィンドウ枠２１６は、選択された表示に従って、システムの中のオブジェクトについての情報を表示する。例えば、ジョブ表示については、データ域中の各アイテムは、システムの中のジョブである。メイン情報ウィンドウ枠２１６は、いくつかの特徴を備える。表示タイトルバー２２２は、フォームが現在表示されている場合、フォームのタイトルとともにアクティブな表示のタイトルを表示する。例えば、「アプライアンスを修正する」に対する表示タイトルバー２２２は、「アプライアンス・アプライアンスを修正する」と示し得る。表示タイトルバー２２２はまた、現在の画面に対する、その状況に応じたオンラインヘルプへのリンクを含み得る。サービスバー２２３は、関心を持っているサービスに操作者が迅速に焦点を合わせるための方法を提供する。図１２に示された実施形態でのサービスバー２２３は、水平グリッドにアイコンを表示し、全て、シリアライゼーション、キー注入、および特徴起動といったアイテムを含み得る。「全て」を選択することにより、あらゆるフィルタを除去し、フィルタリングを伴わずにアクティブな表示の結果を表示する。残りのサービスのうちのいずれかを選択することにより、選択されたサービスに従ってフィルタにかけられたアクティブな表示を表示する。例えば、選択されたサービスを使用するアプライアンス、選択されたサービスに関係するジョブ等である。このようにして、操作者は、複数のサービス、および単一のコントローラ２２によってサービス提供されるアプライアンスの間で、より容易にナビゲートすることができる。付加的なサービス特有の情報が、データ域中の各アイテムについて表示され得、追加のサービス特有のアクションが、サービスバーでサービスを選択すると現れ得る。
【０１０４】
アクションバー２２４は、現在の表示について有効である付加的なアクションを含む、プルダウンメニューを伴って、その左側に種々のボタンを含む。アクションバー２２４の右側には、検索フィールドがある。検索フィールドにテキストをタイプすることにより、表示に応じて、データ域２２６のコンテンツをフィルタにかける。例えば、アプライアンス表示について、ユーザは、アプライアンス名、製造業者、場所、または製品別に検索し得る。アクションバー２２４の中のアクションは、データ域中の選択されたアイテムに応じて、または何かが選択されているかどうかに応じて、有効または無効であり得る。アクションが無効である場合は、グレーアウトすることができる。一般に、各表示に対するアクションのリストが一貫しておりアクションが、有効または無効になることが有利である。データ域２２６は、必要に応じてフィルタにかけられる、表示のために適切な情報を提示する。この実施例では、各表示は、最大で３つのズームレベルをサポートして、トラブルシューティングするか、または種々の設定を識別することが必要な時に、ユーザが、都合良くさらなる詳細を掘り下げることを可能にし得る。ズームレベルは、１ページにつき１つのアイテム、３行につき１つのアイテム、および１行につき１つのアイテムであり得る。これらのズームのレベルの省略表現は、１行、３行、および詳細である。アクションバー２２４の中のプルダウンメニュー２２５は、操作者がズームレベルを選択することを可能にする。ページングバー２２８は、アイテムが多すぎて１つのページに合わない時に、操作者が多くのアイテムを通してページをめくることを可能にする。ズームレベルが「詳細」である場合には、各アイテムに対する１ページがあり得る。ページングバー２２８は、必要な時はいつでも自動的に現れるように構成することができる。表示する情報が単一のページに合う場合は、ページングバー２２８は現れる必要がない。
【０１０５】
ページングバー２２８の左側には、１ページあたりの表示するアイテムの数、およびそれがどのようにソートされるべきかを選択するためのプルダウンメニューを伴って、データ域２２６に提示される情報のテキスト説明がある。例えば、アイテムの数およびソートフィールドがプルダウンメニューである、「サービス別に１０アイテムを表示する」である。また、増加と減少との間でソート順を切り替えるボタンもある。ページングバー２２８の右側には、どのアイテムが表示されるかを説明するテキスト（例えば、「レポート４６のうちの１１−２０」）と、最初のページに行くボタンと、前のページに行くボタンと、ＸＸは、ユーザが特定のページに直接行くことを可能にするテキストフィールドであり、ＹＹは、ページの総数である、「ページＹＹのうちのＸＸ」というテキストと、次のページに行くボタンと、最後のページに行くボタンとを含むことができる、ページングウィジェット２３０がある。
【０１０６】
状態バー２１８は、ウィンドウの底部に位置付けられ、例えば、接続が行われていること、およびどの操作者と接続が行われているかを示すように、コントローラ２２についての基本情報を表示する。ロックおよび更新ボタンを、全ての表示について示されるように含むことができる。
【０１０７】
操作者の注意を引くために、データ域２２６は、図１３に示されるような警告バー２３２を含むように修正することができ、それは、示された実施形態では、選択された製品（データ域２２６に示される）が、「ＴｅｓｔＡｐｐ」と名付けられた特定のアプライアンス１８上で少ない在庫を有することを示す。警告バー２３２には、警告に即時の注意を引き付けるように、他の警告と一致している、赤等の明確で目立つ色を与えることができる。この実施例では、警告バー２３２は、データ域２２６の幅にわたって延在し、そのようなものとして警告をさらに識別するように、緊急関連アイコンを含む。
【０１０８】
メインアプリケーション２１０は、製品別、製造業者別、または場所別にグループ化されて、３つの方法でアプライアンス１８を表示する、図１４に示されるようなメイン状態表示２３４を立ち上げるために使用することができる。製品アイコン２０８のうちの１つをクリックすることによって、表示が迅速状態画面２００からアクセスされる場合、表示が製品１４別にフィルタにかけられる場合、または「製品別」アクションが選択される場合には、製品別にアプライアンスをグループ化する。そうでなければ、製造業者別にアプライアンス１８をグループ化する。図１４に示されたスクリーンショットは、製品別の表示を図示する。図１４に示されるように、製品別にグループ化されたアプライアンス１８を表示する場合、製品と関連付けられた各アプライアンス１８を示して、各製品が表示される。製造業者別にグループ化されたアプライアンス１８を表示する場合には、製造業者と関連付けられた各アプライアンス１８を示して、各製造業者が表示される。場所別にグループ化されたアプライアンス１８を表示する場合には、場所と関連付けられた各アプライアンス１８を示して、各場所が表示される。
【０１０９】
アプライアンスアイコン２３６は、どのサービスが特定のアプライアンス上でアクティブであるかについてのサービスインジケータ２３７を含み、ならびに、アプライアンス１８が現在アクティブな警告を有するかどうか（アイコンを赤に着色することによる）、またはアプライアンス１８が現在動作しているかどうか（アイコンを青に着色することによる）の指示を提供する。サービスインジケータ２３７は、種々の状態を示すための色分けされたスキームを利用することができる。例えば、オレンジのアイコンは、そのアプライアンス１８上のサービスに資産が少ないことを示してもよく、赤のアイコンは、そのサービスに関連する問題を示してもよく、薄暗い、または「グレーアウトした」アイコンは、サービスがアプライアンス１８に割り当てられていないことを示すことができ、緑のアイコンは、問題がないことを示すために使用することができる。状態表示２３４は、この実施例では単一のズームレベルを使用する。表示アクション（または特定のアプライアンスをダブルクリックすること）は、選択されたアプライアンス１８が表示されている、アプライアンスの１ページにつき１アイテムのズームレベルを操作者にもたらす。メイン状態表示２３４と関連付けられたアクションは、製品別、製造業者別、および場所別の表示である。
【０１１０】
操作者は、図１５に示された警告表示２３８にアクセスして、ＡＭＳ１０に存在する警告を調べることができる。図１５に示されたズームレベルは、１行ズームレベルである。警告表示２３８では、操作者は、警告を閲覧し、影響を受けたアプライアンス１８にピングを行い、影響を受けたアプライアンス１８を同期し、警告を除去することができる。コントローラ２２は、コントローラ２２がアプライアンス１８にコンタクトできない時、コントローラ２２がデータをアプライアンス１８に送信する時（逆の場合も同じ）にエラーがある場合、同期化動作が失敗した時、アプライアンス１８の資産の数が資産警戒レベルに達した時、アプライアンス１８上の空きディスクスペースが警戒レベルに達した時、コントローラ２２（または任意のアプライアンス１８）上のＨＳＭ１９が自ら動作停止した時、またはエージェントＩＰアドレスがアプライアンス１８によって管理されるリストの中にないため、アプライアンス１８がエージェント２０からの接続を遮断した時等の、いくつかの異なる状況下で警告を発行するように構成することができる。警告が発行された場合、影響を受けるアプライアンス１８が、データ域２２６中の警告表示２３８に現れる。警告表示２３８は、警告の説明を提供し、警告が発行されたサービスを識別し、警告が発行された時間を提供する。警告への適切な応答は、警告の原因に依存する。
【０１１１】
操作者は、図１６から１８に表示されたジョブ表示２４０にアクセスして、進行中のジョブをキャンセルすること、および完了したジョブを除去すること等の、ＡＭＳ１０の中のジョブと関連付けられた種々のアクションを実施することができる。この実施例のジョブ表示２４０は、図１６に示されるような３行ズームモード２４０ａ、図１７に示されるような１行ズームモード２４０ｂ、および図１８に示されるような詳細ズームモード２４０ｃをサポートする。詳細ズームモード２４０ｃがジョブごとに与える完全な一組の情報は、名前、ジョブＩＤ、システム（アプライアンス１８またはコントローラ２２）、ジョブ種類、ジョブ状態、開始時間、終了時間、または推定終了時間（入手可能であれば）、継続時間、および進捗である。ジョブの状態の図式概観を提供するように、進捗バー２４２が各ズームモード２４０ａ−ｃで提供される。ジョブ表示２４０内で、操作者は、ジョブを一時停止し、ズームモード間でズームし、ジョブを再開し、ジョブをキャンセルし、ジョブログを閲覧し、ジョブを除去し、完了したジョブを示し、完了したジョブを除去することができる。
【０１１２】
操作者は、図１９に示されたレポート表示２４４にアクセスして、ＡＭＳ１０によってサポートされるレポートを生成することができる。図１９は、レポート表示２４４に対する１行ズームモードを図示する。レポート表示２４４は、サービスアイコン、およびレポートの名前を提供する。レポート表示２４４はまた、レポートのリストを特定のサービスに限定するように、サービスバー２２３上のサービスを選択することによって、フィルタにかけることもできる。レポートを生成するアクションは、操作者がレポートを生成するために必要とされる情報を入力するために、図２０に示されたレポートを生成するフォーム２４６を表示する。いったん操作者がフォーム２４６を完成させると、レポートを表示する画面２４８で、図２１に示されるようにレポートを表示することができる。レポートを表示する画面２４８はまた、この実施例では、操作者がＰＤＦまたはＣＳＶ形式をダウンロードすることを可能にする。例えば、製品別または（シリアライゼーションに対する）スキーマ別に、コントローラ２２によって発行される資産の合計の数、特定の範囲にわたって日付別に発行される資産の数、アプライアンス１８別の資産の数（合計、日付別等）、エージェントによって受信される資産の数（合計、日付別等）、欠落しているログ、重複ログ、資産ＩＤまたは番号別のログ、特定製品／日付範囲に対するログの数等といった、種々のレポート種類を生成することができる。
【０１１３】
図２２に示されたコントローラ表示２５０は、データ域２２６で操作者が接続されるコントローラ２２の詳細を提供する。この実施例では、コントローラ表示２５０は、コントローラ名、コントローラが提供しているサービス、コントローラ２２のＩＰアドレス、コントローラ２２のポート、ＳＭＴＰ  ＩＰアドレス、ＳＭＴＰポート、ＳＭＴＰドメイン、「Ｆｒｏｍ」アドレス、「Ｔｏ」アドレス、ディスク健全性、コントローラＨＳＭ状態、ＨＳＭソフトウェアバージョン、コントローラソフトウェアバージョン、システム１０の中の警告の数、システム１０の中でアクティブなジョブの数、ジョブ削除時間、システムチェック間隔、コントローラのディスクスペース、およびコントローラ２２上で利用可能なメモリといった、情報を提供する。コントローラ表示２５０では、操作者は、コントローラ２２を修正し、Ｅメールを試験し、ログアウトすることができる。コントローラ２２を修正するためには、コントローラ表示２５０の中の修正するボタンが選択され、図２３に示されたコントローラを修正するフォーム２５２を立ち上げる。図２３から理解することができるように、コントローラを修正するフォーム２５２は、操作者が、コントローラ２２の設定および修正の変更を行い、これらの設定を適用することを可能にする。
【０１１４】
操作者は、図２４から２６に示されたアプライアンス表示２５４にアクセスして、アプライアンス１８を追加すること、修正すること、除去すること、および同期すること等の、アプライアンス１８と関連付けられた種々のアクションを実施することができる。アプライアンス表示２５４は、詳細、３行、および１行ズームモードをサポートすることができる。図２４は、全サービスモードでアプライアンス表示２５４を示す。全サービスモードでは、各アプライアンス１８は、サービスのうちの１つについてのサービス特有の情報を表示する。１つだけのサービスがアプライアンス１８上でアクティブである場合には、そのサービスが表示される。１つより多くのサービスがアクティブである場合には、定義された優先順位で、表示するサービスを選択することができる。サービスがサービスバー２２３で選択された場合には、アプライアンス表示２５４の中で全てのアプライアンス１８について、そのサービスが表示される。３行モード２５４ａは、図２４に示され、１行モード２５４ｂは、図２５に示され、詳細モード２５４ｃは、図２６に示されている。図２６で見ることができるように、この実施例で１つのアプライアンス１８につき入手可能な情報は、アプライアンス名、アプライアンス１８によって提供されるサービス、製造業者、場所、ＩＰアドレスおよびポート、状態（例えば、オンライン、オフライン、非アクティブ、準備できていない）、ＨＳＭソフトウェアバージョン、利用可能なディスクスペース、利用可能なメモリ、利用可能なクレジット、クレジットの最小量、クレジットの最大量、クレジットの警戒レベル、アプライアンスソフトウェアバージョン、警告の数、ジョブの数、接続再試行の数、接続タイムアウト期間、自動同期間隔、読み出し専用同期、資産ブロックサイズ、最終更新、許容エージェントＩＰサブネットのリスト、コントローラ２２との最終通信の日付／時間、各エージェント２０との最終通信の日付／時間、およびサービス特有の情報（例えば、シリアル番号、キー、ＦＣＴ５０）を含む。これらの詳細のうちの特定のものが、図２４および２５に示されるようなあるズームレベルで現れることができる。アプライアンス表示２５４では、操作者は、ズームモード間でズームを実施し、アプライアンス１８にピングを行い、アプライアンス１８を同期し、アプライアンス１８を追加し、アプライアンス１８を修正し、アプライアンス１８を除去し、アプライアンス１８を起動し、アプライアンス１８を動作停止することができる。
【０１１５】
アプライアンスにピングを行うアクションは、操作者が、安全なチャネル上で選択されたアプライアンス１８にピングを行って、それが活動していることを確認すること、およびそのネットワーク待ち時間を決定することを可能にする、図２７に示されるようなピング画面２５６を立ち上げる。ピングアクションは、特定のホスト（アプライアンス１８）がＩＰネットワーク上で到達可能であるかどうかを試験するため、およびＳＳＬ接続を試験し、使用されているコンピュータのネットワークインターフェースカード（ＮＩＣ）を自己試験し、または速度試験としてとして試験するために、使用される。ピングは、概してミリ秒単位で往復時間を推定し、パケット損失を記録し、完了すると統計的概要を印刷することができる。
【０１１６】
アプライアンスを同期するアクションは、図２８に示された同期画面２５８を立ち上げ、あらゆるサービス関連オブジェクトがつぎ足され（例えば、シリアル番号、キー、ＦＣＴ５０等の資産）、あらゆるアプライアンス構成変更をプッシュ配信し、アプライアンス１８からサービスログを取り出すことを操作者が確実にすることを可能にする。同期アクションは、シリアル番号、キー、ＦＣＴ５０等の、あらゆるサービス関連オブジェクトまたは資産が、それらの最大量であることを確実にする。同期アクションはまた、アプライアンスのクロックをコントローラのクロックと同期化し、アプライアンス１８からサービスログを取り出す。加えて、アプライアンス１８に行われるあらゆる構成変更は、アプライアンス１８が同期化された後に効力を生じることができる。アプライアンス１８の状態および資産情報を収集して、それが同期しているかどうかを確認するが、いずれの変更も行わない、読み出し専用同期も実施することができる。同期化はまた、アプライアンス１８からサービスログを取得するために使用することもできる。
【０１１７】
アプライアンスを修正するアクションは、図２９に示されたアプライアンスを修正する画面２６０を立ち上げる。アプライアンスを修正する画面２６０は、アプライアンス１８の詳細が操作者によって編集されることを可能にする。図２９には、操作者がアプライアンス１８に与えられたクレジットの閾値、および低レベル警戒を発行する時を設定することを可能にする、クレジット最小値、クレジット最大値、およびクレジット警戒フィールドが示されていない。コントローラ２２とアプライアンス１８とは、定期的に、自動的に同期化するべきであり、またはアプライアンス１８が同期化されると、コントローラ２２は、いくつの資産がアプライアンス１８上にあるかを確かめる。資産の数が最小値以下である場合には、コントローラ２２は、最大レベルまでアプライアンスの資産を充填する。資産の数が警戒レベル以下である場合には、コントローラ２２は、警告を発行することができる。
【０１１８】
アプライアンス１８は、最初にコントローラ２２に追加される時に、非アクティブ状態で追加される（上記で説明される図４Ｂも参照）。アクティブアプライアンスアクションは、選択されたアプライアンス１８をオンラインにする（必要であればプロビジョニングを自動的に開始する）。非アクティブアプライアンスアクションは、アプライアンス１８をオフラインにすることが関連生産ラインを停止する場合、適切な警戒を伴って選択されたアプライアンス１８をオフラインにする。図３０は、操作者にこの選択を確認させる前に、動作停止させられる選択されたアプライアンスを示す、アプライアンスを動作停止する画面２６２を図示する。アプライアンスを除去するアクションは、選択されたアプライアンスがオンラインではない場合のみに利用可能であるべきであり、そうでなければ、アクションは無効にされるべきである。図３１は、操作者による選択の確認前に、選択されたアプライアンス１８が示されるという点で、アプライアンスを動作停止する画面２６２と同様である、アプライアンスを除去する画面２６４を図示する。アプライアンス１８は、動作停止されると、例えば、上記で例示されるように色を赤に変化させることによって、これを示し、アプライアンス１８の状況に関して操作者にさらなる視覚的な手掛かりを提供するべきであることが留意され得る。
【０１１９】
ＧＵＩ８における製品は、製品の名前、製品に対する識別子、資産のリスト（例えば、サービスに応じて、シリアライゼーションスキーマ、キー種類、またはＦＣＴ５０）、資産が適用されるべきアプライアンスのリスト、および製品が提供するサービスを、ＡＭＳ１０に提供する、１つ以上の資産種類の名前を付けられたグループ化である。図３２から３４に示された製品表示２６６では、操作者は、製品を管理して、製品を追加すること、修正すること、または除去すること等の、ＡＭＳ１０の中の製品と関連付けられた種々のアクションを実施することができる。製品表示２６６は、図３２の３行ズームモード２６６ａ、図３３の１行ズームモード２６６ｂ、および図３４の詳細ズームモード２６６ｃで示される。図３４で見ることができるように、製品表示２６６は、製品名、サービス、ＩＤ、利用可能な資産（メーターとして表示され、それぞれ詳細ズームレベル２６６ｃで個別に表示される）、資産のリスト（スキーマ、キー種類、またはＦＣＴ５０）、アプライアンス１８のリスト、シリアライゼーションおよびキー注入について、注入方法（ＡＣＣまたは通常）、ＡＣＣ記録フィールド、およびＡＣＣオフセットフィールド等の、製品に関する種々の情報を含むことができる。製品表示２６６では、操作者は、ズームモード間でズームし、製品を追加し、製品を修正し、製品を除去することができる。
【０１２０】
製品を追加するフォーム２６８が、図３５に示され、シリアライゼーションについて例示されている。キー注入については、シリアライゼーションスキーマリストは、キー種類リストと置換され、特徴制御については、シリアライゼーションスキーマは、ＦＣＴリストと置換される。
【０１２１】
ＡＭＳ１０の中のシリアライゼーションスキーマは、どのようにシリアル番号が生成されるかについての規則を定義する、オブジェクトである。例えば、シリアル番号の数字が１６進数で表されるか１０進数で表されるか、および固定文字列が含まれるかどうかである。シリアルスキーマ表示２７０が、図３６から３８に示されている。これらの表示では、操作者は、シリアライゼーションスキーマを管理して、スキーマを追加すること、修正すること、または除去すること等の、ＡＭＳ１０の中のスキーマと関連付けられた種々のアクションを実施することができる。３行ズームモード２７０ａが図３６に示され、１行ズームモード２７０ｂが図３７に示され、詳細ズームモード２７０ｃが図３８に示されている。図３８で最も良く見られるように、この実施例でシリアルスキーマを定義する情報は、スキーマ名、スキーマＩＤ、全プールからの残っている（アプライアンス１８にまだ送信されていない）シリアル番号、開始値、生成するシリアル番号の総数、１０進法を使用するか１６進法を使用するか、（付け足す、または切り捨てる）シリアル番号の中の文字の総数、シリアル番号の中の位置とともに含む静的文字列のリスト、およびスキーマを例証するサンプルを含む。シリアライゼーションスキーマ表示２７０では、操作者は、ズームモード間でズームを実施し、スキーマを追加し、スキーマを修正し、スキーマを除去し、スキーマを複製する（現在の選択を修正するが、新しい名前で保存する）ことができる。シリアライゼーションスキーマを追加／修正／複製するためには、図３９に示されるようなスキーマを追加／修正／複製するフォーム２７２が立ち上げられる。
【０１２２】
ＡＭＳ１０の中のキー種類は、どのような種類の暗号キーが特定の製品に対して注入されるべきかについての規則を定義する、オブジェクトである。キー種類表示２７４が、図４０から４２に示されている。キー種類表示２７４では、操作者は、キー種類を管理して、キー種類を追加すること、修正すること、または除去すること等の、ＡＭＳ１０の中のキー種類と関連付けられた種々のアクションを実施することができる。３行ズームモード２７４ａが図４０に示され、１行ズームモード２７４ｂが図４１に示され、詳細ズームモード２７４ｃが図４２に示されている。図４２で最も良く見られるように、キー種類表示２７４が提供し得る情報は、キー種類名、ＩＤ、最終インポート以来利用可能なキー、キーの長さ、キー識別子の長さおよびオフセット、キーデータの長さおよびオフセット、ファイルヘッダの長さ、ハッシュ出力（長さおよびオフセット）、ハッシュアルゴリズム、およびハッシュ入力を含むことができる。キーの構造の視覚的表現を提供し、構造が変化する方法を示すように、パラメータが変更されるにつれて更新される、キー種類図２７６も示される。キー種類表示２７４では、操作者は、ズームし、キーをインポートし、キー種類を追加し、キー種類を修正し、キー種類を除去し、キー種類を複製する（現在の選択を修正するが、新しい名前で保存する）ことができる。詳細ズームモード２７４ｃと同様であることが分かるが、パラメータが編集されることを可能にする、キー種類を追加／修正／複製するフォーム２７８が、図４３に示されている。
【０１２３】
ＡＭＳ１０の中のＦＣＴ５０は、特定の製品に対して特定され得る、１つまたは複数の特定の特徴を定義する、オブジェクトである。ＦＣＴ５０は、特徴レジスタ２８２と呼ばれるビットのアレイを含む。特徴レジスタ２８２の中の特定のビットの状態は、デバイス１４の中の特徴にマップされ得、これらの特徴がアクティブであるか無効であるかを制御する。ＦＣＴ表示２８０が、図４４から４６に示されており、異なる色で対応するセルを充填することによって、アクティブな特徴がアクティブではない特徴と区別されている、特徴レジスタ２８２の視覚的表現を図示する。３行ズームモード２８０ａが図４４に示され、１行ズームモード２８０ｂが図４５に示され、詳細ズームモード２８０ｃが図４６に示されている。ＦＣＴ表示２８０では、操作者は、ＦＣＴ５０を管理して、チケットを追加すること、修正すること、または除去すること等の、ＡＭＳ１０の中のＦＣＴ５０と関連付けられた種々のアクションを実施することができる。図４６で最も良く見られるように、特定のＦＣＴ５０についてＦＣＴ表示２８０で提供することができる情報は、ＦＣＴ名、ＩＤ、特徴包含値、実装されたコマンド、タグ（ＡＣＣ１２上にプログラムされた特徴または１組の特徴を示す記録タグ）、および注入の総数を含み得る。ＦＣＴ表示２８０では、操作者は、ズームモード間でナビゲートし、ＦＣＴ５０を追加し、ＦＣＴ５０を修正し、ＦＣＴ５０を除去し、ＦＣＴ５０を複製することができる。
【０１２４】
管理者は、図４７に示されたユーザ表示２８４にアクセスして、ユーザを追加すること、ユーザを除去すること、およびユーザのパスワードを変更すること等の、システムの中のユーザと関連付けられた種々のアクションを実施することができる。この実施例では、ユーザ表示２８４は、１行ズームレベルである。図４７で見ることができるように、ユーザ表示２８４は、ユーザ名、コントローラ許可、アプライアンス許可、ユーザ許可、シリアライゼーション許可、キー注入許可、特徴制御許可、および最終ログイン時間等の情報を記載する。種々の許可は、どのような動作をユーザが実施することができるか、例えば、アプライアンスを追加または除去すること、シリアライゼーションスキーマを生成すること等を決定付ける。ユーザ表示２８４では、管理者は、ユーザを追加し、ユーザを複製し、ユーザを修正し、パスワードを変更し、ユーザを除去することができる。ユーザを追加するフォーム２８６が、図４８に示されており、ＡＭＳ１０が、定義されたユーザ役割に従って、そのユーザにセキュリティ許可を課することを可能にする。このようにして、管理者は、ユーザ役割を定義して、システムの特定の部分への異なるレベルのアクセスを有効にするか、または拒否することができる。異なる許可を伴う数人のユーザを作成することによって、ＧＵＩ８を操作することがさらに効果的になることを可能にするように、責務をＧＵＩ８内で区切ることができる。セキュリティ責任者（ＳＯ）、管理者（ＡＤ）、および操作者（ＯＰ）といった、例えば、３つのユーザ役割を確立することができる。各ユーザ役割について、閲覧のみ、閲覧および保存、閲覧および操作、全アクセス等といった種々の許可を、上記の役割につき設定することができる。
【０１２５】
図４９は、管理者の注意を引くように赤で示された、エラーバー２８８とともに、ユーザを追加するフォーム２８６を図示する。図５０は、この実施例では、パスワードとパスワードを確認するフィールドとの間の対応の欠如による、エラーの原因をハイライトするフィールド特有のインジケータバー２９０を用いて同様のエラーを図示する。ユーザのパスワードを変更し、ユーザを除去するために、他のフォーム（図示せず）を立ち上げることができる。
【０１２６】
例えば、ウェブブラウザによってサポートされるようにＨＴＭＬ形式で、ＡＭＳオンラインヘルプガイドにリンクする、メニューアイテムまたはヘルプアイコンあるいは両方（例えば、図１１から５０に示されるような）を備えることができる、オンラインヘルプサービスも、ＧＵＩ８に提供することができる。メニューアイテムは、ユーザをフロントページ（目次）に導くことができ、ヘルプボタンは、ユーザをデータ域２２６中の現在の表示に従って決定される記事に導くことができる（すなわち、その状況に応じたヘルプ）。
【０１２７】
（資産制御コア）
ここで図５１を参照すると、特徴起動サービスモジュールを提供するために構成されたＡＭＳ１０の実施形態のさらなる詳細が示されている。図５１に示された実施形態では、システム１０は、電子デバイス１４に組み込まれたＡＣＣ１２を準備し、ＡＣＣ１２と通信し、ＡＣＣ１２にデータを提供し、ＡＣＣ１２からデータを収集し、ＡＣＣ１２内の特徴を起動するように構成される。上記で論議されるように、デバイス１４、次にＡＣＣ１２は、加工／製造／組立過程で使用されるテスター１６に接続される。テスター１６は、テスター１６上で作動するソフトウェアモジュールである、エージェント２０を採用する。テスター１６は次に、機密データを保護し、アプライアンス１８内に安全地帯を提供するＨＳＭ１９を含む、アプライアンス１８に接続される。図１に示されるように、エージェント２０は、その間の通信を暗号によって確保するために、ＨＳＭ１９とＡＣＣ１２との間の安全な通信チャネル２９を促進する。チャネル２９上で、アプライアンス１８からＡＣＣ１２にＦＣＴ５０を送信することができる。アプライアンス１８は、以下でより詳細に説明されるように、証明機関（ＣＡ）、データベース、および１つ以上のアプライアンス１８を制御するためのコントローラ２２を提供し得る、バックエンドインフラストラクチャ１１に接続され得る。
【０１２８】
テスター１６に接続されることに加えて、ＡＣＣ１２はまた、同時に、またはしばらくして（または過程中の他の時に）、広域ネットワーク（ＷＡＮ）２４またはデバイスプログラマ２６上でユーザインターフェース（ＵＩ）に接続され得る。デバイスプログラマ２６はまた、示されるように、ＷＡＮ２４を介してＡＣＣ１２に接続し得る。デバイスプログラマ２６および／またはＷＡＮ２４は、任意の好適な接続、例えば、直列、並列、有線、無線、赤外線、ＲＦＥＤ等を使用して、デバイス１４およびＡＣＣ１２に接続することができる。この実施例では、ＡＣＣ１２は、ＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）ＩＥＥＥ−１１４９試験インターフェース等の標準試験プロトコル／接続２８上で、テスター１６に接続される。テスター１６およびアプライアンス１８は、それらの相対的場所に応じて、好適な接続３０上で接続される。以下で提供される実施例では、アプライアンス１８は、テスター１６と同じ物理的設備に位置し、したがって、接続３０は、ローカルエリアネットワーク（ＬＡＮ）であり得る。
【０１２９】
ＡＣＣ１２は、示されるように、概して、かつ集合的に、図５１の数字３４として示される、種々の種類のメモリを備えることができる。ＡＣＣ１２は、持続的に、または一過性に、種々のキーおよび証明書を記憶するために、メモリの一部分を使用する。図５１は、以下の実施例で使用される、種々のキーおよび証明書を図示する。静的非公開キーｄｓｉ、静的公開キーＱｓｉ（ＡＣＣ  ＵＩＤとも呼ばれる）、一過性の非公開キーｄｅｉ、一過性の公開キーＱｅｉ、ＣＡの証明書ＣＥＲＴ［ＣＡ］、およびアプライアンスｊの証明書ＣＥＲＴ［ＡＰＰｊ］が、図５１に示されている。一実施形態では、静的キーは、不揮発性メモリ（ＮＶＭ）に記憶されるが、ＲＯＭメモリにマスクプログラムすることができる。別の実施形態では、いずれのＮＶＭも必要とされなくてもよく、キーは、ハードディスクまたはフラッシュメモリ、あるいはＡＣＣ１２の外側の何らかの他の不揮発性バルクデータ記憶媒体上に、オフラインで記憶することができる。
【０１３０】
図５２で見ることができるように、ＡＣＣ１２は、シリコンダイ上のハードウェアベースの信用点を確立する標的システムオンチップ（ＳｏＣ）に組み込まれた小型ハードウェアコアである。ＡＣＣ１２は、機密データに対する物理的保護と、遠隔証明および検証を提供する方法とを提供する改ざん防止特徴を備えるため、消費者デバイス１４上の信用の根拠と見なすことができる。以下でより詳細に説明されるように、ＡＣＣ１２は、１つの集積回路（ＩＣ）４０に対する一意の識別子（ＵＩＤ）を生成し、アプライアンス１８との安全な認証された通信チャネル２９を通して、ＩＣ４０のトラッキングおよびプロビジョニングに関与することができる。図５２に示された実施例では、ＩＣ４０は、消費者デバイス１４に組み立てられるプリント基板（ＰＣＢ）４４上に載置される。そのようなものとして組み込まれるが、ＡＣＣ１２は、ＰＣＢ４４および／または最終デバイス１４上の信用の根拠としての機能を果たし続けることができる。
【０１３１】
ＩＣ４０はまた、当技術分野で公知であるような好適なプロトコルのために構成される通信インターフェース４８を介して、ＩＣ４０への接続３２を接続することによって、非テスター、例えば、デバイスプログラマ２６との接続を確立するために使用することができる別個のマイクロ制御ユニット（ＭＣＵ）４２を備え得る。図５２に示されるように、通信インターフェース４８はまた、ＰＣＢ４４を通したＷＡＮ２４への直接接続により、ＩＣ４０に統合され得ることが理解されるであろう。図５２に示された外部ＭＣＵ４２の役割は、通信インターフェース４８を通してＦＣＴ５０コマンドメッセージを受信し、この場合ではバイトのストリームであるかもしれない、ネッワーク接続されたデータを、ＡＣＣ１２による処理のために、ＡＣＣ１２のパラレルインターフェース６６（図５３も参照）を通して、その（ＭＣＵの）メモリマップされたインターフェース上で渡すことができるフォーマットに再フォーマットすることによって、ネットワーク（例えば、ＷＡＮ２４）上でアプライアンスとＡＣＣ１２との間のＦＣＴ５０の通信を促進することとなる。逆に、ＡＣＣ１２は、そのパラレルインターフェース６６上で、外部ＭＣＵ４２にＦＣＴ５０応答メッセージを返信し、ＭＣＵ４２が、バイトのストリームに変換し、通信インターフェース４８上でアプライアンス１２に返送する。ＡＣＣ１２は、試験インターフェース７２（例えば、ＪＴＡＧ）を介してエージェント２０に、したがって、アプライアンス１８に接続し、次に接続２８をブリッジする（図５３も参照）。
【０１３２】
アプライアンス１８は、プロビジョニングデータおよび１つ以上のエージェント２０から／への応答をキャッシュに格納し、配信し、収集するために使用される、安全なモジュールである。例えば、ＡＣＣ１２がオンラインになると、アプライアンス１８は、ＡＣＣの一意のＩＤ（ＵＩＤ）を使用して、それが接続される部分を追跡することができる。次いで、アプライアンス１８およびＡＣＣ１２は、続いて、キー情報を交換し、改ざん防止通信チャネル２９を開いてもよく、それは、ＡＣＣ１２が承認されたアプライアンス１８と通信していること確信でき、１つだけの一意のＡＣＣ１２が、送信したメッセージを解読し、それに応答できることを、アプライアンス１８が確信できるような方法で、データが転送されることを可能にする。最終的には、ＡＣＣ１２は、ＦＣＴ５０を発行されることができ、ＡＣＣ１２は、プロビジョニングコマンド、安全なデータ、キー、情報、シリアライゼーション情報、および、アプライアンス１８が、一般的にＡＣＣ１２またはデバイス１４に提供する、プッシュ配信する、アップロードする、注入する、またはそこから収集することを希望する、任意の他のデータを含む、ＦＣＴ応答を提供することができる。
【０１３３】
エージェント２０は、アプライアンス１８とＡＣＣ１２との間の下位データ伝送を管理する１つのソフトウェアと見なされ得る。各エージェント２０は、テスター１６またはデバイスプログラマ２６に連結され、アプライアンス１８とエージェント２０との間で透過的にデータを渡す責任がある。エージェント２０は、コマンドを発行し、ＡＣＣ１２から／への応答を受信するためにアプライアンス１８が使用され得る、トランスポート層ＡＰＩを備える。特に指定がない限り、アプライアンス１８によって実施される安全な動作は、好ましくは、ＨＳＭ１９内で実施されることが理解されるであろう。テスター１６またはデバイスプログラマ２６は、用途に応じて、標準ＪＴＡＧ  ＩＥＥＥ１１４９試験ポート（例えば、試験インターフェース４６および接続２８）または別のプログラミングインターフェースを通して、チップに物理的に接続することができる。エージェント２０は、いずれか一方の構成で、トランスポート層と物理層とをブリッジするために使用される。エージェント２０は、安全でないと見なされる場合があり、本明細書で説明される実施例では、単純にメッセージキャッシング機構を提供すること、およびアプライアンス１８とＡＣＣ１２との間でメッセージを渡すことの他に、いずれの暗号機能も果たさない。当然ながら、所望であれば、エージェント２０は、用途の要件に応じて、様々な程度の暗号能力を装備することもできる。
【０１３４】
バックエンドインフラストラクチャ１１は、製造業者とその顧客／エンドユーザとの間でインターフェース接続するために使用されるバックエンドインフラストラクチャ全体を指す一般用語である。概念的に、システム１０によって処理されるあらゆるデバイス、および全てのプログラミング記録は、製造された各部品の履歴を問い合わせるために製造業者が使用し得るバックエンドデータベースで保たれる。インフラストラクチャは、必要であれば、ＣＡと、データベースエンジンと、ＥＲＰアプリケーションおよびサブモジュールと、特徴制御サーバ（ＦＣＳ）と、電子商取引フロントエンドサーバとを備え得る。システム１０はまた、それをＥＲＰまたは電子商取引フロントエンドサーバに接続するように、コネクタ論理を備え得る。典型的なシステム環境は、インターネット上で、セキュアソケットレイヤー（ＳＳＬ）、トランスポート層セキュリティ（ＴＬＳ）、またはレベル２セキュリティ（ＭＡＣＳｅｃ）等のセキュリティプロトコルを介して、顧客の製造現場におけるアプライアンス１８と通信する、中心の場所に位置するバックエンドサーバを有し得る。
【０１３５】
ＡＣＣ１２に関するさらなる詳細が、図５３に示されている。図５３の濃い色の外側境界は、この境界内で実施されるあらゆる動作が信用されると推定されるように、安全な境界を表す。
【０１３６】
ＡＣＣ１２は、典型的には、読み出し専用メモリ（ＲＯＭ）５２に記憶されたカスタマイズ可能なファームウェアを伴う比較的小型のハードウェアである。図５３に示された実施例では、ＡＣＣ１２はまた、小型マイクロコントローラ５４、楕円曲線暗号（ＥＣＣ）算術ユニット５６、ハードウェアベースの乱数発生器（ＲＮＧ）５８、データ読み出し／書込みメモリ（ＲＡＭ）６０、および不揮発性メモリ（ＮＶＭ）６２も含む。ＡＣＣ１２は、Ｍｅｎｅｚｅｓ−Ｑｕ−Ｖａｎｓｔｏｎｅ（ＥＣＭＱＶ）プロトコルの楕円曲線実装、および楕円曲線デジタル署名アルゴリズム（ＥＣＤＳＡ）、ならびにＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）ベースのアルゴリズムを用いたメッセージ暗号および認証に関与する能力を有する。
【０１３７】
上記のように、ＡＣＣ１２は、テスター１６またはデバイスプログラマ２６と同様のものに接続される、アプライアンス１８と通信するように設計されている。この通信チャネル２９を確保するために、ＡＣＣ１２は、キー交換のための非対称暗号作成スキーム、およびそれとアプライアンス１８との間でメッセージを転送するための対称キー暗号作成スキームを使用し得る。
【０１３８】
非対称暗号作成については、公開キー（例えば、Ｑｓｉ）が、秘密の非公開キー（例えば、ｄｓｉ）に基づいて生成される。非公開キーが安全で高度な改ざん防止設定で保護されることは重要である。組み込みＡＣＣ１２は、秘密が暴露されることから保護するハードウェアおよびファームウェアの組み合わせを用いて、内部で、かつ自律的に、一意の非公開キーを生成することが可能であることによって、この要件を満たすことができる。非公開キーは、特定のデバイス１４に統計的に一意であり、そのデバイス１４と永久的に関連付けられる。
【０１３９】
非公開キーが秘密に保たれる一方で、公開キーは共有される。ＡＣＣ１２について、公開キーまたはその何らかの数値的派生物は、上記で論議されるように、ＩＣの一意のデバイスＩＤ（ＵＩＤ）として扱うことができる。非公開キーが公開キーとの１対１のマッピングを有するため、ＵＩＤも、特定のデバイス１４に統計的に一意であり、そのデバイス１４と永久的に関連付けられる（公開キーが静的非公開キーに由来する時）。
【０１４０】
このＩＣ識別の技法は、以下で説明されるプロビジョニングプロトコルによって提供される機密性および認証とともに、チップまたはデバイス業者に、過剰生産部品のクローン作成および再販売等の、デバイス１４の製造および配布における不正を検出および防止するために強制措置を成立させるように、データベースにあらゆる真の部分を登録する能力を与える。
【０１４１】
ＵＩＤは、相互キー合意を通して、アプライアンス１８とＡＣＣ１２との間に秘密を確立するためのセキュリティプロトコルの一部として使用することができる。キー合意中に、公開キーは、２つの当事者の間で取引され、各当事者は、公開して交換された公開キー、および秘密に保たれている独自の非公開キーのみを使用して、他方とは無関係に共有キーを生成する。キー合意の結果としては、２つの当事者が、両者の間のみで共有される秘密に到達する一方で、盗聴しようとしているあらゆる第３者は、非公開キーのコピーがないかぎり、完全に合意することができない。
【０１４２】
アプライアンス１８およびＡＣＣ１２はまた、２つの関係者のみに知られている秘密キーを生成する、ＥＣＭＱＶキー合意スキームに関与することもできる。生成された共有秘密（例えば、ｋｉｊ）は、対称キー暗号作成のための基礎および必須条件であり、つまり、それは、２つの当事者の間で、高度な改ざん防止の暗号化および認証された通信チャネル２９を確立するために使用される。
【０１４３】
いったん両方の当事者が対称キーに合意すると、アプライアンス１８は、安全な認証された方式で、ＡＣＣ１２へ／から、ＦＣＴ５０としても知られている署名入り機密メッセージを発行および受信し始めることができる。ＦＣＴ５０のコマンドは、特徴プロビジョニング、保護されたＮＶＭ６２のメモリ領域への読み出し／書き込みアクセス、または制御された安全で追跡可能な方式でＡＣＣ１２に提供される任意の他のコマンドあるいはメッセージを含む、メッセージである。ＦＣＴ５０応答は、状態、監査データ、または、安全なプロビジョニングプロトコルを確立する、維持する、または準拠するためにアプライアンス１８に提供される任意の他のコマンドあるいはメッセージを含む、メッセージである。
【０１４４】
試験および製造時に特徴を積極的に有効にするか、またはアフターマーケットにおいてサーバまたはデバイスプログラマ２６に再接続する際に特徴を有効にするために、特権を使用することができる。特権の欠如は、クローンであるか、偽造品であるか、またはそうでなければ盗難デバイスであるかどうか、疑わしいデバイスの無許可特徴を無効にするために、消極的に使用することができる。
【０１４５】
種々の暗号技法の組み合わせを通して、完全に安全な特徴プロビジョニングを達成することができ、その実施例は以下の通りである。
【０１４６】
各ＡＣＣ１２は、そのＲＯＭ５２またはＮＶＭ６２に記憶されたルートＣＡ公開キーを有し得る。次いで、各アプライアンスｊは、ルートＣＡ（図示せず）によって生成される、独自の一意の証明書ＣＥＲＴ［ＡＰＰｊ］を有し得る。証明書は、比較的小さくてもよく、証明書フィールドは、容易な構文解析のために、ビットマップ方式であり得る。アプライアンス１８は、プロトコルの一部として、証明書をＡＣＣ１２に送信することによって、自らが本物であることをＡＣＣ１２に証明する（以下でより詳細に論議される）。ＡＣＣ１２は、アプライアンス１８の同一性を検証するために、ＣＡルート証明書を使用する。
【０１４７】
各アプライアンス１８は、証明書とともに送信される、それに割り当てられた顧客ＩＤ（ＣＩＤ）を有することができる。証明書の中のＣＩＤは、ＡＣＣ１２に記憶されたＣＩＤのうちの１つに合致して、特定のアプライアンス１８が、特定のデバイス１４の適正な所有者／生産者に属し、組み込みＡＣＣ１２と通信する権限を持っていることを確実にするべきである。ＡＣＣ１２上の複数のＣＩＤは、段階的製造過程上の異なる業者が、それらが所有する特徴を準備することを可能にする。例えば、特定用途向け集積回路（ＡＳＩＣ）業者は、特定の相手先商標製品製造業者（ＯＥＭ）に対するＳｏＣを構成し、次いで、ＯＥＭは、特定の機器販売業者またはサービスプロバイダを標的にするようにデバイスを構成し、最終的に、末端顧客が、独自のサービス計画に基づいて、構成のさらに別の一部を起動できるようになる場合がある。
【０１４８】
ＡＣＣ１２は、関与する業者の安全な同一性データ（ＣＩＤ）に従って、第３者業者が所有する特徴へのアクセス制御を施行するように作製することができる。ＳｏＣの元の所有者は、潜在的に、そのプロビジョニングの一部として、ＣＩＤ／特徴セット構成テーブルを取り込むことができる。
【０１４９】
アプライアンス１８からＡＣＣ１２への各ＦＣＴ５０は、この実施形態では、暗号化され、完全性を保護され、認証され、再生およびなりすましに対して保護される。各ＦＣＴ５０は、特定のＡＣＣ１２のＵＩＤに入力され得、特徴特権は、デバイスの非公開キーによるＦＣＴ５０のロック解除の成功時に、デバイスごとのみで許可され得る。次いで、別のＵＩＤにロックされたＦＣＴ５０を傍受しようとする不正デバイスは、ＦＣＴ５０を解読できない。複製または再生されることから防止するために、ＦＣＴ５０を１回だけ使用することができるように、各ＦＣＴ５０にも、それと関連付けられたシリアル番号が提供され得る。各ＦＣＴ５０は、検出不可能な方式でＦＣＴ５０を改変することができないように、それを発行したアプライアンス１８によって署名され得る。
【０１５０】
ＡＣＣ１２からアプライアンス１８に戻る応答は、応答を改変または再生することができないように、シリアル番号およびメッセージ認証コード（ＭＡＣ）を有するように構成することができる。ＦＣＴ５０は、特定のＵＩＤにリンクされるので、アプライアンス１８は、特定のＵＩＤがプログラムされた場所およびものを示す、監査ログを保つことができる。監査ログは、バックエンド１１を通してＳｏＣ製造業者／業者に折り返し報告することができる。同じＵＩＤの複数のインスタンスが、これらのログファイルのレビューにおいて検出された場合、チップがクローン作成または偽造されているという指示になる。
【０１５１】
ＥＣＭＱＶの使用は、特定のアプライアンス１８を特定のＡＣＣ１２にリンクする、暗号化されたトンネル２９を提供する。他の当事者は、暗号化されたプログラミングセッション中に送信される、このプロトコルまたは解読コマンドに関与することはできない。特に、ＥＣＭＱＶは、示された環境では信憑性の高い脅威である、介入者攻撃に強いことが知られているため、チャネル２９を作成する技法として選択され得る。
【０１５２】
ＡＣＣ１２およびアプライアンス１８は、特定の環境に合うように、種々の方法で構成することができる。以下の考察は、そのような構成可能性を有効にする、種々の特徴について議論する。ＡＣＣ１２は、非常に小さい総シリコン面積を利用するべきであり、ＵＩＤのオンチップ（ＡＣＣ１２に内蔵される）生成と、ＥＣＣ公開・非公開キーペアのオンチップ生成および記憶とをサポートするべきである。ＡＣＣ１２のスキャン連鎖試験の有効化／無効化は、非公開キーが明かされることを防止するように、ＡＣＣＥＣＣキーペア生成の前に利用可能であるべきである。アプライアンス１８からＡＣＣ１２へのコマンドの認証／完全性保護が提供されるべきであり、セキュリティクリティカルコマンドは、特定のＡＣＣ１２に一意となるべきである。アプライアンス１８とＡＣＣ１２との間のＦＣＴ５０は、機密性のために暗号化されるべきであり、特徴は、ＡＣＣ１２に提供されるＦＣＴ５０を介して有効および無効にされ得る。
【０１５３】
ＡＣＣ１２は、プロトコルエンフォーサとして機能してもよく、受信したコマンドが無効である場合、ＡＣＣ１２は、それらを拒絶することができ、随意で、閾値の無効なコマンドが試行された場合にはシャットダウンすることができる。また、いったんＡＣＣ１２がロックアウトされると（デバイスが永久的に退役させられる時、またはデバイスが改ざんされていることをシステム１２が検出した場合）、ＡＣＣ１２を再有効化できないことを確実にする能力も存在するべきである。使用されていない時、ＡＣＣ１２は、非常に低い電流ドレインまで出力を下げることが可能であるべきであり、ＡＣＣ１２の動作は、その基本的機能を果たすのに外部（オフコア）ファームウェアまたは外部ＣＰＵに依存するべきではない。
【０１５４】
エージェント２０および／または任意の好適なインターフェース（例えば、４６、４８）は、顧客がＡＣＣ１２にカスタムプログラミングインターフェースを追加することを可能にする融通性を提供することができ、それは最終的に、顧客が、種々のデバイスプログラマ２６（例えば、ＵＳＢポート、Ｉ２Ｃシリアルインターフェース、Ｅｔｈｅｒｎｅｔ（登録商標）等）を使用してＡＣＣ１２と通信することを可能にする。同様に、ＡＣＣ１２のプログラミングは、信用できるアプライアンス２９との安全な通信チャネル２９を開くことができるならば、複数の場所で複数の時に行うことが可能であるべきである。このようにして、プログラミングは、製造サイクルの最も費用がかからない段階まで延期することができる。アプライアンス１８およびＡＣＣ１２は、デバイス識別番号（例えば、携帯電話用のＩＭＥＩ／ＥＩＮ）等の付加的な情報を安全にプログラムし、記憶するために使用することができる。
【０１５５】
（ハードウェア詳細）
ここで、図５３に示されたハードウェア実装のさらなる詳細を提供する。この実施例のＡＣＣハードウェアは、マイクロコントローラ５４と、スクラッチデータＲＡＭ６０およびＮＶＭ６２にアクセスするメモリバスコントローラ６４と、算術ユニット５６（ＥＣ演算のために構成される）、周辺コントローラ５９を通してアクセス可能なＲＮＧ５８、ならびに示されていないが随意的にＡＥＳおよびＳＨＡコア（領域／性能トレードオフが実行可能である場合）を含む、いくつかのメモリマップされた周辺機器とを備える。加えて、ＡＣＣ１２は、ＳｏＣ設計者に対する融通性を追加するように、随意的な一般パラレルバスインターフェース６６および外部アクセスＮＶＭインターフェース６８を有することができる。
【０１５６】
ＡＣＣ１２の中心には、プロビジョニングコマンドを認証および実行し、プロビジョニングを施行すること、高レベルセキュリティプロトコルを実行すること、低レベルハードウェア暗号アクセラレータ機能の順序付けを支援し、初期化、構成、電力管理等の管理タスクを実施すること、ならびに内蔵自己試験（ＭＢＩＳＴ）の維持およびウエハ試験中のＲＮＧ  ＢＩＳＴを支援することを含む、ＡＣＣ１２が達成する全てのタスクにおいて不可欠な役割を果たす、マイクロコントローラ５４がある。マイクロコントローラは、主にそのサイズに対して選択され、次いで、必要と見なされる場合、速度性能を満たすように強化されるべきである。
【０１５７】
フィールド算術ユニット５６は、低レベル暗号計算のハードウェア加速を提供する。具体的には、フィールド算術ユニット５６は、２進数フィールド乗算を効率的に実施するように構成されるべきである。フィールド算術ユニット５６は、ＥＣ点乗算の完了を比較的迅速に可能にするため、ＡＣＣ１２の重要な部分と見なされ得る。フィールド算術ユニット５６は、それぞれ認証および相互認証を提供するために使用される、ＥＣＤＳＡおよびＥＣＭＱＶ公開キープロトコルの両方を加速するために使用することができる。これらのプロトコルの詳細を以下で説明する。
【０１５８】
ハードウェアおよびファームウェアは、典型的には、面積、コードメモリ、複雑性、および性能指標に関してトレードオフする。何がハードウェアに実装されるかに基づく決定は、典型的には、主にゲートカウントおよび性能によって動かされる。ＡＣＣ１２の性能は、テスター時間に関して測定される直接的な費用の意味合いを有し、等価ゲートカウントは、シリコン面積によって測定されるような実装費用を動かす。
【０１５９】
ＲＮＧ５８は、ソフトウェア調節器（図示せず）の助けを借りて、暗号キーおよびＵＩＤとして使用される統計的乱数を生成するために使用することができる。楕円曲線公開キー暗号作成スキームでは、乱数が非公開キーとして使用され、それが、曲線パラメータの以前に合意された生成点によって、楕円曲線スカラー点乗算を使用して乗算されると、積が公開キーとなる。ＲＮＧ５８は、ＡＣＣ１２が、そのＡＣＣ１２の寿命全体を通して静的である静的非公開キーペアを生成する時に使用することができる。加えて、ＡＣＣ１２とアプライアンス１８との間のあらゆる安全なセッションのために、新しい一過性キーが作成される。ＡＣＣが、新しい静的または一過性キーが生成されることを必要とする時はいつでも、ＲＮＧ５８は、非公開静的または一過性キーを生成するためにシードとして使用される、ランダムビットストリームを提供するように求められる。ランダムビットストリームは、ＡＥＳブロック暗号器に供給されて、ＲＮＧによって生成される未加工エントロピーを調節し、静的非公開キーとして使用される、均一に分布した乱数を生成する。いくつかの実施例では、ＡＥＳブロック暗号器に供給される前に、ＲＮＧデータを調節するように、ランダムビットストリームをソフトウェアベースの線形フィードバックシフトレジスタ（ＬＦＳＲ）に供給されることができる。試験可能性（ＤＦＴ）試験のための設計の一部として、ＡＣＣ１２は、ＲＮＧ５８の健全性チェックを実施するように求められるべきである。
【０１６０】
この実施例のＡＣＣ１２は、００００ｈ〜ＦＦＦＦｈに及ぶ、１６ビットアドレスのバイトアドレス可能メモリ空間を有することができる。以下の表２は、この実施例で、どのようにしてメモリ空間が明確に異なる領域に分割され得るかを記載する。
【０１６１】
【化３】
0005572705.tif 000004
【０１６２】
上記の表のマイクロコントローラスクラッチ空間（ＸＲＡＭ）は、マイクロコントローラ５４によって一時的なデータ記憶に使用することができる。それは、高速、単一サイクルアクセス、８ビットバイトのアドレス可能３２ビットデータ静的ＲＡＭとして実装され得る。スクラッチ空間の実際の量は、ファームウェア使用量に基づいて定義されるべきである。
【０１６３】
ＡＣＣ１２は、ＯＴＰ、ＭＴＰ、ＥＰＲＯＭ、ＦＬＡＳＨ等のＮＶＭ記憶要素６２への一般インターフェースを有するように構成され得る。ＮＶＭ６２がＩＣ技術に依存するため、そのようなＮＶＭ６２に対するＮＶＭインターフェース７０は、おそらく特定のアプリケーションに従って定義される。ＮＶＭインターフェース７０は、抽象化を提供し、専有ＮＶＭインターフェースプロトコルに容易に適応される安全な方式で、ＵＩＤを書き込み、書き換え、消去する能力を有するべきである。ある種類のＮＶＭ６２は、一度だけプログラム可能であり（ＯＴＰ）、それは、いったん「焼かれる」と、消去すること、またはそのメモリ場所に書き換えることができないことを意味する。ＯＴＰメモリが使用される場合には、どのメモリ場所にすでに書き込まれているかを把握していることを確認し、最新のデータコンテンツおよび利用可能な空きスペースがある場所を見つけるために使用される機構を維持するために、ファームウェアが必要とされる。
【０１６４】
この実施形態では、３つの明確に異なるＮＶＭ許可レベルがあり、各許可レベルは、それらに課された異なる制約を有する。第１は、非公開空間許可レベルであり、ＮＶＭ６２は、専有的にＡＣＣの使用のために保留されている。ＡＣＣ１２は、読み出すことができ、かつ書き込むことができるが、他のエージェントは、この領域にアクセスすることが禁止されている。この領域に記憶されるデータは、秘密静的キー、ＵＩＤ、およびＡＣＣ１２の不揮発性状態を含み得る。第２は、保護された公開空間許可レベルであり、外部エージェントは、以下で説明されるように、ＦＣＴ５０、および認証を用いた安全なメッセージングプロトコルを使用して、この領域にデータを書き込むことのみができる。この領域は、ＲＤＡＣＣＥＳＳ型ＦＣＴ５０を用いてＪＴＡＧポート７２から可読である。この領域はまた、通常のメモリアクセスを用いて、ならびにＲＤＡＣＣＥＳＳ  ＦＣＴ５０を用いて、パラレルコマンドインターフェース６６からも可読である。典型的には、この領域は、オンチップ論理がチップの外側にデータを漏出しないと仮定して、オンチップ論理のみによってアクセス可能である、ＮＶＭ６２に顧客が保存したい秘密データを含む。第３は、ＡＣＣ１２が保護する必要のない、ＮＶＭ６２に記憶される他のデータを含む、共有メモリ空間許容レベルである。外部エージェントは、ｃｍｄ［ＳＨＡＲＥＮＶＭＷＲ］またはｃｍｄ［ＳＨＡＲＥＮＶＭＲＤ］を用いて、あるいはパラレルコマンドインターフェース６６からの直接メモリアクセスを使用して、この領域で読み書きすることができる。「ｃｍｄ」コマンドを以下でより詳細に説明する。最低でも、ＡＣＣ１２は、オンチップ秘密を記憶するように、「非公開」許可レベルを伴う十分なＮＶＭ６２空間を有するべきである。
【０１６５】
ＡＣＣ１２に対する多くの用途のうちの１つは、顧客要件に基づいて、特徴を有効または無効にする方法を提供することである。有効／無効にすることができるものを定義する正確な特徴セットは、顧客によって提供されるものであるが、以下は、特定の顧客要件に従って適応を行うことができるように、どのようにプロビジョニングインターフェース７４が使用され得るかを説明する。手短に言えば、上記のように、ＡＣＣ１２は、図５３の有効化コントローラおよびインターフェース７４によって表される、１組の出力ポートを備える。一実施形態では、有効／無効にされる必要がある特徴アイテムごとに、有効化コントローラおよびインターフェース７４上で検出される１つのイネーブル信号がある。有効化コントローラおよびインターフェース７４に出力される値を決定する未加工データは、ＮＶＭ６２から来得る。特定の特徴と単一のイネーブル信号との１対１のマッピングがないように、イネーブル信号を符号化するか、またはスクランブルをかけることが可能である。この場合、代わりに、信号の複数のビットを評価して、特定の特徴が有効にされているかどうかを決定することが必要となる。これが必要であるか実行可能であるかを決定することは、個別顧客用途次第となることが理解できる。このようにして、なんらかの付加的な論理のコストを犠牲にして、無許可特徴有効化をより困難にすることができる。しかしながら、スクランブリングが必要であるかどうかは、顧客からの実際の特徴のリスト、およびどの脅威モデルが考慮されているかに依存する。
【０１６６】
ＡＣＣ１２が損なわれている場合、以下で説明されるように、ロックアウト状態に移行され、特徴有効化は、デバッギングおよび事後分析のために必要最小限の１組の特徴のみが有効化される、なんらかの非常に原始的な値に自動的に設定される。ロックアウト状態である時の特徴有効化値は、顧客要件に応じて、新しいデバイス１４の初期特徴有効化とは異なり得る。
【０１６７】
ＡＣＣ１２がアクティブである時間量は、典型的には比較的短く、したがって、それが非アクティブである間の電力消費が、それがアクティブである間よりも重要と見なされるべきである。ＡＣＣ１２は、それが非アクティブである時の電力を低減するように、根本的なシリコン技術によって提供される電力管理回路を含むことができる。例えば、ＡＣＣ１２が非アクティブである時に電力を節約するために使用することができる技法（クロックゲーティングおよび電力ゲーティング等）が使用され得る。
【０１６８】
図５３に示されたＡＣＣ１２はまた、ＩＥＥＥ１１４９（ＪＴＡＧ）仕様で定義されるようなＪＴＡＧ試験アクセスポート（ＴＡＰ）コントローラ７２への双方向一般シリアルコマンドインターフェース７６を提供する。コントローラ７２は、単純に状態マシンであり、ＪＴＡＧユーザ定義コマンドとして特徴プロビジョニングコマンドを実装する。ＪＴＡＧ仕様は、プロビジョニングサーバからの高レベルコマンドを、テスターインターフェースを通して被試験設計（ＤＵＴ）に伝達されるテスターコマンドへ変換するために、テスターによって使用することができる、うまく定義されたテスターインターフェースを提供する。
【０１６９】
実装することができるＡＣＣ  ＤＦＴ特徴は、以下を備える。
【０１７０】
１）ＲＡＭ６０およびＮＶＭ６２のソフトウェアＭＢＩＳＴは、テスター１６によって発行されるコマンドによって開始することができる。ＲＡＭ６０およびＮＶＲＡＭに対するＭＢＩＳＴは、メモリの行および列にわたって固定パターンを伴い、次いで、それらを読み出して、予期されるものを含むことを確認する。しかしながら、ＯＴＰ  ＮＶＭ６２が使用される場合、全アドレス場所を試験することは非実用的であるため、パターンは、１つのアドレス場所のみに適用され得る。
【０１７１】
２）ＡＣＣ１２の内側のレジスタに対して挿入され、テスター１６によって開始および制御される、部分スキャン連鎖試験。機密情報を含むと見なされる、ＡＣＣ１２の中の制御および構成レジスタ７５の一部であり得るレジスタは、スキャン連鎖から除外される。Ｌｉｆｅ＿Ｃｙｃｌｅ＿ＳｔａｔｅレジスタおよびＳｙｓｔｅｍ＿Ｒｅａｄｙレジスタ、特徴有効化レジスタ、リセット有効レジスタ、クロスクロックドメイン同期化ラッチ、およびＤＦＴ有効／無効レジスタといったレジスタは、スキャン連鎖から除外され得る。
【０１７２】
３）ＪＴＡＧ境界スキャンが、ＩＣ４０の主要Ｉ／Ｏを試験するために使用される。これは、攻撃の指示となる場合がある、ＡＣＣ１２が切断されなかったことを確認するための追加セキュリティである。全てのＡＣＣ１２のＤＦＴ特徴は、ＡＣＣ独自のＴＡＰコントローラ７２によって制御され、そのようなものとして、ハードウェアは、ＡＣＣ１２の状態に基づいてＤＦＴ特徴を有効および無効にすることができるように、設計されるべきである。初期化されていないＡＣＣ１２は、試験状態になり、デフォルトで有効にされるＤＦＴ特徴を有する。ＡＣＣ１２がｃｍｄ［ＥＸＩＴＴＥＳＴ］を受信すると、次いで、ソフトウェアが試験状態から初期化状態への移行を引き起こす。この移行の結果として、ハードウェアは、それがもはや試験状態ではないことを決定することができ、再び有効にされるまでＤＦＴ特徴を無効にする。
【０１７３】
この実施形態では、アプライアンス１８のコマンドは、上記で説明されるように、ＪＴＡＧインターフェースを通してＡＣＣのＴＡＰコントローラ７２に連続的に送信される。いくつかの用途では、ＴＡＰコントローラ７２のほかに、ＡＣＣ１２にコマンドを発行する代替的な方法を有することが望ましく、したがって、送信されるコマンドに対する第２のインターフェース、すなわち、一般プログラミングインターフェースを提供できることが考えられる。そのような一般プログラミングインターフェースは、単純に、１６または３２ビットプロセッサインターフェースであると見なされる。
【０１７４】
２つのコマンドソースからの並列化された出力は、ともに多重化（ＭＵＸＥＤ）されるべきであり、１つだけのコマンドインターフェースが、いつでもアクティブとなるべきである。選択されるコマンドインターフェース７６は、第１のコマンドを発行するものである（タイ（ｔｉｅ）がある場合、ＴＡＰコントローラ７２がデフォルトとして選択され得る）。選択されたインターフェースは、ｃｍｄ［ＲＥＱＲＥＳＰ］が完了するか、または明示的なｃｍｄ［ＳＴＯＰＡＣＣ］が発行されるまで、あるいはデバイス１４がリセットした場合に、アクティブインターフェースである。ＭＣＵ５４上で作動する保護されたファームウェアで実装される、コマンド処理状態マシンの目的は、アプライアンス１８によって発行されたコマンドの予備復号およびフィルタを実施して、それらをどのようにして取り扱うかを確認することである。
【０１７５】
（ＡＣＣに対する動作のシーケンス）
図５４は、１つのライフサイクル状態から次の状態に移行するための動作のシーケンスを図示する、高レベル状態図である。そのライフサイクルの全体を通して、ＡＣＣ１２は、過去に何が発生したかに基づいて、４つの状態のうちの１つで動作することができ、したがって、それらはＡＣＣのライフサイクル状態と呼ばれる。好ましくは、ハードウェア制御論理およびファームウェアコードの組み合わせによって施行されるような、特定のライフサイクル状態のみで、あるアクションが許容される。
【０１７６】
ファームウェアは、アプライアンス１８から受信されるコマンドに基づく、状態移行の唯一の制御を有するべきである。新しい状態に移行する第１のステップは、非公開ＮＶＭ空間の中の固定場所に新しい状態値を書き込むことである。次いで、状態が保存される前に電源が切られた場合、ＡＣＣ１２が電源を入れたときにすでに移行した状態に戻らないように、確定的状態値がＮＶＭ６２に保たれる。言い換えれば、ライフサイクル状態移行およびライフサイクル状態レジスタへの更新は、原子動作（ａｔｏｍｉｃ  ｏｐｅｒａｔｉｏｎ）として実行されるべきである。ここで、図５４に示された４つのライフサイクル状態の概観を提供する。
【０１７７】
試験状態８０―ＡＣＣ１２が、まだ試験および選別に合格していない、新品の初期化されていないデバイスであるときには試験状態８０である。ＡＣＣ１２が依然としてこの状態にある場合、ＡＣＣ１２がＢＩＳＴ、スキャン、および他の試験動作を完了しておらず、したがって、まだ初期化状態８２になる準備ができていないと推定されることを暗示する。試験状態８０中に、ＡＣＣ１２は、必要であれば繰り返し、任意の数のチップ妥当性確認試験を実行することができる。これらの試験のうちのいくつかは、内部レジスタおよびメモリを破壊し得るので、行われる前に試験プログラムが複数のリセットサイクルを必要とすることが予測できる。ＡＣＣ１２は、テスターが、１つの特定のコマンド、すなわち、試験状態８０を終了する方法として指定することができるｃｍｄ［ＥＸＩＴＴＥＳＴ］コマンド（以下で説明される）を発行するまで、複数のリセットサイクルを通して試験状態８０のままであるように設計されるべきである。
【０１７８】
ｃｍｄ［ＥＸＩＴＴＥＳＴ］は、ＡＣＣ１２に全てのＤＦＴ特徴を無効にさせ、ソフトリセットを発行する前に初期化状態８０に移行させる。ＤＦＴ特徴を無効にすることにより、敵対者が承認なくＳｏＣを改ざんするためにこれらの特徴を使用することを防止する。ＤＦＴ特徴は、後に機能状態８４において認証されたアプライアンス１８によって発行されるＦＣＴ５０によって明示的に有効にされるまで、無効のままである。特徴レジスタの最下位ビットは、機能状態８４のＤＦＴを許容するように保留することができる。ＤＦＴ特徴は、ライフサイクル状態を改変することが可能であるべきではなく、ＤＦＴを再有効状態にすることにより、状態を変化させるべきではない。ソフトリセットは、ＡＣＣ１２にいずれの残留ＤＦＴデータも残っていないことを確実にするために役立つことができる。ＡＣＣファームウェアは、ＡＣＣ１２が再始動するときに、初期化手順の実施に直接進むことを確実にするために、ソフトリセットを発行する前に、ＮＶＭ６２の中のライフサイクル状態値を更新するために使用されるべきである。
【０１７９】
初期化状態８２―この状態では、ＡＣＣ１２は、その静的キーペア（例えば、ｄｓｉ、Ｑｓｉ）を生成する。次いで、公開静的キーのｘ座標が、ＡＣＣのＵＩＤとして使用され得る。これが行われると、ＡＣＣ１２は、次の起動が機能状態８４に進むように、不揮発性ライフサイクルを更新することができる。ｃｍｄ［ＥＸＩＴＴＥＳＴ］への応答は、この実施例では、ＵＩＤを含む。
【０１８０】
機能状態８４―この場合、ＡＣＣ１２は、基本的健全性チェックを実施し、特徴レジスタを更新し、次いで、休止状態になって、アプライアンス１８からのｃｍｄ［ＳＴＡＲＴＡＣＣ］および後続コマンドを待つ。ＡＣＣ１２は、アプライアンス１８からのコマンドが有効であり、安全な通信に関与していることを検証することができる。どんな理由であれ、上記の状態のうちのいずれかにおいて、ＡＣＣ１２が、限定数の無効なコマンドと見なされるものを受信した場合、ＡＣＣ１２は、自動的にロックアウト状態８６に移行することができる。特徴レジスタの最下位ビットは、機能状態８４のＤＦＴを許容する。ＤＦＴ特徴は、ライフサイクル状態を改変することが可能であるべきではなく、ＤＦＴを再有効状態にすることにより、状態を変化させるべきではない。安全な条件下でしかＤＦＴを再び有効にできないように、ＤＦＴ特徴ビット、特徴のビットゼロを設定するために、ＦＣＴ５０が必要とされ得る。この再有効状態は、典型的には、デバイスの電源が切れるとＤＦＴ能力が失われる、揮発性ＦＣＴ有効動作において発生することが留意され得る。ＤＦＴ有効の揮発性質は、有効ビットを記憶するための不揮発性メモリの使用を考慮するときでさえ、デバイスのライフサイクルにわたって複数の有効を可能にする。
【０１８１】
ロックアウト状態８６―この状態は、ＡＣＣ１２が、ｉ）ｃｍｄ［ＬＯＣＫＯＵＴ］を発行された、ｉｉ）最大数の許容エラーを検出し、それを上回った、ｉｉｉ）回復不能なエラーを検出したといった、条件のうちの１つに遭遇した場合に到達され得る。ロックアウト機構は、ＡＣＣ１２および全体としてシステム１０全体を攻撃しようとする繰り返しの試行に対する抑止力となることを目的としている。いったんＡＣＣ１２がロックアウト状態８６になると、ＡＣＣ１２は、付加的なコマンドを処理しなくなる。次いで、その後、ＡＣＣコマンドを使用して通信しようとする試行は、応答としてＬＯＣＫＥＤ状態をもたらす。加えて、ファームウェアは、事前指定された特徴セットに戻るか、または単純にそのまま特徴を維持し、特徴セットまたはＮＶＭ６２の保護された空間のさらなる変更を防止し、次いで、シャットダウンして休止状態になる。
【０１８２】
ライフサイクル状態移行は、典型的には、漸進的であり、かつ不揮発性であり、つまり、いったんＡＣＣ１２が新しい状態に移行すると、電力およびリセットサイクルを介しても、以前の状態に戻ることができない。これの例外は、揮発性となるロックアウト状態８６への移行となり得る。ＮＶＭ６２に記憶されるライフサイクル状態８６は、電力およびリセットサイクルを経過する場合にＡＣＣ１２がロック解除されるように、ロックアウト状態８６になることによって修正されるべきではない。ＡＣＣ１２の永久ロックアウトを引き起こすコマンドおよびプロトコルエラーを防止することによって、このスキーマは、不注意にＳｏＣが永久的に無効にされることを防止することができる。
【０１８３】
しかしながら、ＡＣＣ１２が正常に動作することを妨げ得るあるエラー（大部分はハードウェア欠陥による）が存在する。ＡＣＣ１２が、これらの回復不可能なエラーのうちのいずれかに遭遇した場合には、ＡＣＣ１２が永久的にロックアウト状態８６に陥ることが起こり得る。リセット以来、ＡＣＣ１２がいくつのエラー条件を観察したかを把握するために、ＲＡＭ６０に割り当てられたカウンタが使用され得る。ＡＣＣ１２は、エラー条件に遭遇する度に、エラーカウントを増やす。ＡＣＣ１２が最大数の許容エラーに達すると、ＡＣＣ１２は揮発性ロックアウト状態８６に移行する。エラーカウンタは、ＡＣＣ１２をロックアウトする前に、任意の特定数の許容エラーを許容し得る。
【０１８４】
（ファームウェア―起動シーケンス、状態移行、およびライフサイクル状態）
ファームウェアは、概して、種々の根本的演算プリミティブを含む、１組の暗号プリミティブ、１組のＢＩＳＴプリミティブ、起動および始動シーケンサ、ライフサイクル状態関数、ならびに受信コマンドおよびメッセージを解釈および処理する１組の関数といった、グループに組織化することができる。暗号プリミティブは、通信プロトコルの考察に従って以降で説明し、ＢＩＳＴプリミティブは、コマンド取扱の考察とともに論議する。したがって、以下は、起動および始動シーケンス、ライフサイクル状態関数、ならびに受信コマンドおよびメッセージを解釈および処理する１組の関数に焦点を当てる。
【０１８５】
起動／始動―図５５に示されるように、ＡＣＣ１２の再起動の度に、ＡＣＣ１２に組み込まれたマイクロコントローラ５４は、電源を入れると、またはリセットから脱すると、自動的にファームウェア起動コードを実行し始める。ファームウェアプログラムは常に、１）いくつかの必要な低レベルレジスタ初期化および構成を実施する、２）ＮＶＭ６２に記憶された特徴有効化リストを読み出し、どの特徴を有効または無効にする必要があるかを決定し、次いで、適切な特徴イネーブル信号を駆動する、３）ＮＶＭ６２を読み出して、電源を切られる／リセットされる前にＡＣＣ１２がなっていた最後の状態を得る、および４）ライフサイクル状態レジスタに書き込み、その特定の状態で行われる必要がある全てを処理するサブルーチンに飛ぶことによって、適切なライフサイクル状態に移行する、といった順番で起動シーケンスを実行し始めるべきである。
【０１８６】
状態移行を図示する略図が、図５６に提供されている。全状態移行は、以下のシーケンスで始まり得る。第１に、状態移行サブルーチンは、それが移行している新しい状態を示す入力パラメータを有し、次いで、以下を行う。１）現在の状態に対して新しい状態をチェックし、新しい状態移行が有効であることを確認する。２）新しい状態がＮＶＭ６２に記憶された最終状態とは異なる場合、新しい状態値でＮＶＭ６２を更新する。３）ライフサイクル状態レジスタに新しい状態値を書き込む。４）この状態移行が、電源投入またはハードリセット直後の最初の状態移行であるかどうかを決定する。もしそうであれば、デフォルトで自動的に休止状態モードになる。５）そうでなければ、対応する状態関数を呼出して、その特定の状態において必要な動作を実施し始める。ステップ５については、その状態で必要な動作を処理するように、各状態が独自のサブルーチンを有することが留意され得る。状態サブルーチンのそれぞれに対するサブルーチンが、図５７ａから５７ｄに示されている。
【０１８７】
試験状態サブルーチンは、図５７ａに示されており、初期化状態サブルーチンは、図５７ｂに示されており、機能状態ルーチンは、図５７ｃに示されており、ロックアウト状態サブルーチンは、図５７ｄに示されている。サブルーチンは、概して、図５４のライフサイクル図に示された高レベルブロックに従うことが分かる。
【０１８８】
ファームウェアに関する限り、特徴を有効または無効にすることは、１組のハードウェアレジスタに適切な値を書き込み、ＮＶＭ６２の中の既知の場所にその値を記憶することを伴うことが留意され得る。また、ある用途では、ＡＣＣ１２は、不揮発性データを記憶するためにＯＴＰメモリを使用し得ることが留意され得る。ＯＴＰメモリは、ファームウェアが以前に書き込まれたデータを消去することを可能にしない。典型的には、ＯＴＰメモリは、ヒューズ回路と考えることができ、あらゆるビットは、最初に「０」の値を有し、あるビット場所に「１」を書き込むと、そのヒューズが永久的に焼かれ、決して修復することはきない。これが発生するために、ファームウェアは、１つのデータが有効であるか否か、どこで最新データを探すべきか、利用可能な空きスペースがある場所、およびもはや空きスペースがない時に何が起こるか、ならびに複数の書き込みを可能にするように十分な冗長スペースを割り当てることを考慮するべきである。ＮＶＭ６２がＯＴＰではない場合、ファームウェアは、それをＲＡＭとして扱ってもよく、既存のコンテンツを自由に上書きでき得る。しかしながら、ＮＶＭ６２は、典型的には、ＳＲＡＭよりも遅いことを理解されたい。ファームウェアは、パフォーマンスインパクトを最小限化するように、一気にＮＶＭ６２にアクセスしようとするべきである。
【０１８９】
ファームウェアは、ＡＣＣ１２が電力を失うか、またはアプライアンス１８から突然切断された場合に、可能な限り早く重要な情報をＮＶＭ６２に記憶するべきである。あるＮＶＭ６２技術では、いくつかのＮＶＭ６２書き込みが１００％確実ではない場合があるので、書き込みが成功したことを確実にするために、ＮＶＭ６２に書き込まれたデータが読み返されるべきである。加えて、ファームウェアは、いくつの失敗／不正コマンドが観察されたかという実行中のカウンタを維持するべきであり、カウントが閾値に達した場合、ファームウェアは、ＡＣＣ１２をロックアウト状態８６にすべきである。また、コマンドが合理的な時間量後に適正な応答を提供できなければ、それは、ＡＣＣ１２の内側で何かが故障したか、または永久的に切断されたという指示となる場合がある。そのような場合において、アプライアンス１８は、リセットを試行することができ、またはデータベースに切断の記録を取って、このＡＣＣ１２が再び再接続される場合に最終動作を再開する必要がある。
【０１９０】
基本的に健全なアルゴリズムの詳細の実装により不注意に漏出した情報を調べることによって、敵対者が秘密情報を抽出するサイドチャネル攻撃を妨げるために、ＡＣＣのファームウェアは、これらの攻撃を軽減するように、あるファームウェア対策を含み得る。対策は、もしあれば、ファームウェア実装仕様で特定される。ある対策は、システム１０の複雑性を生じさせ、それは次に、実行時間およびエネルギー消費を増加させることが留意され得る。
【０１９１】
図５８は、受信したコマンドに対してファームウェアが行うことを概説するコマンドインタープリタサブルーチンを図示する略図を提供する。ファームウェアは、以下の表３に示された以下のコマンドを処理する責任がある。
【０１９２】
【化４】
0005572705.tif 000005
【０１９３】
ファームウェアが、表３のリスト等の所定のリストの中にないコマンド（ハードウェアによって処理される有効なコマンドでさえ）を受信した場合、ファームウェアは、そのようなコマンドをエラーとして扱い、エラーハンドラ機能を呼び出すことができる。表３において（＊ＤＦＴ）によって示されたコマンドは、シリコン上の論理が欠陥なく製造されていることを立証するために使用される。一部のＤＦＴコマンドは、独自のプロトコルを有し、正規のコマンドシーケンスとは異なるように挙動する。これらのコマンドの実際の機能性の説明は、以降で説明する。ＤＦＴコマンドは、ＦＣＴ５０を提供することと関連付けられるコマンドであるｃｍｄ［ＦＣＴ］を介した、安全な特徴プロビジョニングを介してＤＦＴ特徴が再び有効になるまで、機能状態８４において無効のままである。
【０１９４】
ＡＣＣコマンドを処理する過程は、以下の処理シーケンスにおいて説明することができる。
【０１９５】
１）新しいコマンドが利用可能であることを示すビット値「１」を検出するまでレジスタＮｅｗＣｍｄＡｖａｉｌをポーリングする。
【０１９６】
２）ＣｍｄＩｎＰｒｏｇｒｅｓｓビットを設定して、ファームウェアがコマンドを処理し始めたことをハードウェアに通知する。
【０１９７】
３）命令レジスタ（ＩＲ）を読み出して、コマンドコードを取得する。
【０１９８】
４）レジスタからデータ（該当する場合、コマンドに対するデータ）を読み出す（単語が３２ビットである場合、単語単位で）。
【０１９９】
５）データを処理し、コマンドによって要求される必要な動作を実施する。
【０２００】
６）ハードウェアへの応答ペイロードを準備し、応答ペイロードは、＜ｓｔａｔｕｓ  ｃｏｄｅ，ｄａｔａ＞という形式であり、「ｓｔａｔｕｓ  ｃｏｄｅ」は、４バイト値（ＳＵＣＣＥＳＳ、ＦＡＩＬ、またはＬＯＣＫＥＤ）を含有し、「ｄａｔａ」は、コマンドによって要求されるだけの数のバイトを含む（いくつかのコマンドについては空になり得、状態が＝ＳＵＣＣＥＳＳでなければ、常に空になるはずである）。
【０２０１】
７）ＲｓｐＲｅａｄｙビットを設定し、ＳＷＦＬＡＧＳレジスタに書き込むことによって、同時にＣｍｄＩｎＰｒｏｇｒｅｓｓビットを消去する。
【０２０２】
８）ＳｅｎｄＲｓｐＮｏｗが「１」に設定される（ハードウェアはファームウェアからの応答データを受信する準備ができているという指示）まで待ち、レジスタに応答データを書き込む（単語が３２ビットである場合、単語単位で）。
【０２０３】
９）ＳｅｎｄＲｓｐＮｏｗフラグの代わりに、ＮｅｗＣｍｄＡｖａｉｌフラグを有する場合、応答を放棄し、代わりに新しいコマンドを処理する。
【０２０４】
上記のように、図５８は、コマンドインタープリタファームウェアコードが講じ得るステップを示すフロー図を提供する。
【０２０５】
図５９は、エラー処理ルーチンにおけるステップを示すフロー図を図示する。ＡＣＣ１２が、許容された最大数のエラーに達し、ロックアウト状態８６に移行しているため、エラー処理機能に飛んで決して戻らないことが考えられる。この実施例では、上記のように、ＡＣＣ１２の全寿命の全体を通してＡＣＣ１２をロックすることなく、最大で８つの無効なコマンドが観察されることを可能にする、合計８つのエラーカウンタマーカーがある。エラー処理は、随意で、カウンタ閾値、特定レジスタへ／からまたは外部信号を介した読み書き動作等の、プログラム可能な条件によってトリガすることができる割り込みである、ＭＣＵトラップを介して実装することができる。ＭＣＵトラップを使用することのいくつかの有益性があり、ファームウェアコードの至る所からの画一的なエラー処理、および無効なＭＣＵ命令、不良アドレス等の処理例外がある（ハードウェアがこれらの例外を見つけ、それらをエラーとして扱うことができるように）。
【０２０６】
図６０は、休止状態サブルーチン中に実施されるステップを図示する、フロー図を提供する。休止状態モードは、ＭＣＵ５４を低電力モードにする、ＭＣＵ「停止」命令を介して実装することができる。この実施形態では、ファームウェアが休止状態から脱出するための唯一の方法は、ＭＣＵリセットを実施することができる。ハードウェアは、アプライアンス１８からｃｍｄ［ＳＴＡＲＴＡＣＣ］を受信すると、ＭＣＵ５４をリセットして、ファームウェアを起動させることができる。
【０２０７】
（コマンド処理）
ＡＣＣ１２の重要な側面は、アプライアンス１８によって送信されるコマンドを復号し、検証し、処理し、応答するプロトコルを組み込むことである。ＡＣＣハードウェアおよびファームウェアは、適切な場合において、設定、消去、またはポーリングされる、メモリマップしたレジスタの使用を通して、相互に通信することによって協働する必要がある。種々のコマンドが上記で紹介されているが、以下は、コマンド処理のための例示的なプロトコルを例証するように、この実施例でＡＣＣ１２が受け取る全てのコマンドのさらなる詳細を説明する。
【０２０８】
以下の表4は、ＡＣＣ１２が処理できる全てのコマンドの概要を提供する。次いで、こ
れらのコマンドのそれぞれの機能をより詳細に説明する。
【０２０９】
【化５】
0005572705.tif 000006
【０２１０】
【化６】
0005572705.tif 000007
【０２１１】
第１に、表４に関する一般的コメントである。＊ＨＷ−ｏｎｌｙとして示されたコマンドは、ハードウェアのみによって処理されるものであり、ファームウェアはこれらを認識にしていない。他の全てのコマンドは、ファームウェアに渡されて処理される。表４において＊ＤＦＴとして示されたコマンドは、シリコン上の論理が欠陥なく製造されていることを立証するために使用される。ＡＣＣ１２が試験状態８０から外に移行すると、ＤＦＴコマンドは無効にされ、無効と見なされる。それらは、ＤＦＴ特徴がＦＣＴ５０を用いた安全な特徴プロビジョニングを通して再び有効にされるまで、無効のままとなる。ＲＥＱＲＥＳＰコマンドは、別のコマンドの応答を得るために使用されるように設計されている、特殊コマンドである。ＲＥＱＲＥＳＰは、ハードウェアとファームウェアとが連携することを要求する。＊ＳＰＥＣＩＡＬとして示されたコマンドは、低レベルハードウェアコマンドである。それらは、コマンドプロトコルシーケンス（以降で説明される）に従わず、ｃｍｄ［ＲＥＱＲＥＳＰ］を使用してデータを返信しない。ＳＨＡＲＥＮＶＭＷＲおよびＳＨＡＲＥＮＶＭＲＤは、随意的であり、ある用途においてはいずれか一方または両方が省略され得る。ＴＥＳＴＭＥＭ、ＴＥＳＴＲＯＭ、ＴＥＳＴＮＶＭ、およびＳＣＡＮは、用途のＤＦＴ方策に応じて随意的である。ＳＴＯＰＡＣＣの使用も随意的であり得る。いくつかの用途では、例えば、テスター／デバイスプログラマがＡＣＣ１２から切断したい時にリセットを発行した場合、このコマンドは使用される必要がない。最終的に、いくつかのコマンドは、あるライフサイクル状態（８０〜８６）のみに制限される。ＡＣＣ１２は、現在の状態に対して発行されるコマンドの妥当性を強化し、遭遇した無効なコマンドの数を把握し、カウントが閾値を上回る場合は、ＡＣＣ１２がロックアウトされる。
【０２１２】
ｃｍｄ［ＲＥＱＲＥＳＰ］―前述のようなＲＥＱＲＥＳＰコマンドの目的は、何らかの他のコマンドの応答に対する要求を提供することであり、そのようなものとして、別のコマンドが先行するときにのみ発行されるべきである。典型的には、このコマンドに対する要求ペイロードはない。ＡＣＣ１２は、応答の準備ができるまで全ての「０」を駆動し、次いで、（Ｓｔａｒｔ−Ｏｆ−Ｐａｙｌｏａｄ  ｍａｒｋｅｒ｜｜ＳＴＡＴＵＳ｜｜＜ＲＳＰＰＡＹＬＯＡＤ＞）というメッセージを返信する。応答は、Ｓｔａｒｔ−Ｏｆ−Ｐａｙｌｏａｄマーカー、状態、および該当するときには返信データペイロードから成る。Ｓｔａｒｔ−Ｏｆ−Ｐａｙｌｏａｄマーカーは、「０」の１６連続ビットが続く「１」の１６連続ビットによって表される０ｘＦＦＦＦ００００、またはアプライアンス１８がパラレルコマンドバスを使用している場合、バスが１６ビット長であれば「０ｘ００００」が続く値「０ｘＦＦＦＦ」あるいはバスが３２ビット長であれば値「０ｘＦＦＦＦ＿００００」を含むＤＷＯＲＤといった、フォームを有し得る。応答は、ＳＵＣＣＥＳＳ、ＦＡＩＬ、ＬＯＣＫＥＤといった３つの状態値のうちの１つを含む。次いで、応答状態を指定するために、ＳＵＣＣＥＳＳ＝０ｘＦＦＦＦ０００１；ＦＡＩＬ＝０ｘＦＦＦＦ０００Ｅ；ａｎｄ  ＬＯＣＫＥＤ＝０ｘＦＦＦＦ０００Ｄといったコードが使用され得る。
【０２１３】
状態が＝ＳＵＣＣＥＳＳである場合、初期コマンド種類に基づく応答ペイロードがあり得る。応答ペイロードのサイズおよびコンテンツは、コマンドによって変化する。アプライアンス１８は、ＡＣＣ１２からの応答がどれだけ長いかを把握するべきであり、これは、発行された元のコマンドが何であったかに基づくべきである。応答がＳＵＣＣＥＳＳ以外のものである場合、いずれの付加的な情報も返信されず、代わりに、ＡＣＣ１２は、アプライアンス１８が不成功後に読み出そうとした場合に「０」の列を繰り返すことができる。次いで、アプライアンス１８は、動作を再試行または中断することを選択し得る。場合によっては、アプライアンス１８は、ｃｍｄ［ＬＯＣＫＯＵＴ］を発行することによって、ＡＣＣ１２を永久的に無効にすることを選択し得る。このコマンドは、通常、アプライアンス１８が繰り返しの攻撃試行やＡＣＣの欠陥を検出した場合、またはデバイスを退役させたい場合に、使用される。単純な状態メッセージよりも洞察力のある状態コードの欠如は、システムの内部動作についての情報を漏らし、不注意に攻撃者に利点を譲渡することを防止するために使用され得る。この実施形態でのＲＥＱＲＥＳＰコマンドは、全ての状態において有効である。
【０２１４】
ｃｍｄ［ＥＸＩＴＴＥＳＴ］―このコマンドは、全てのＤＦＴが行われたことを示すため、および試験状態８０から外に移行するために使用され得る。ＥＸＩＴＴＥＳＴは、ＤＦＴ特徴を無効にし、初期化状態８２に移行し、ソフトリセットを引き起こし、ＡＣＣ１２を再起動する。静的キーは、初期化状態８２において生成され、結果としてＵＩＤを利用可能にする。この実施例での要求ペイロードは、４バイトであり、Ｐａｙｌｏａｄ＿ｌｅｎ＝０である。次いで、コマンドが成功すれば、ＡＣＣｉの静的公開キーのｘ座標であるＵＩＤｉを備える付加的な応答ペイロードが生成される。このコマンドは、試験状態８０において有効である。テスター１６は、ＡＣＣ１２におけるＤＦＴ試験からあらゆる残留トレースを除去するために、ｃｍｄ［ＥＸＩＴＴＥＳＴ］を発行する直前に、ハードリブートを開始することが推奨される。加えて、ファームウェアは、ＲＡＭコンテンツが破壊されており、信頼できないと仮定するはずであるので、可能な限りＲＯＭ５２から実行するべきである。
【０２１５】
ｃｍｄ［ＳＴＡＲＴＡＣＣ］―このコマンドは、効率的に節電モードからＡＣＣ１２を覚醒し、再起動する、ソフトリセットを引き起こすために使用され得る。いったんＡＣＣ１２がリセットから再開すると、起動シーケンス全体を実行し始め得る。ＡＣＣ１２は、機能状態８４である場合、アプライアンス１８との新しいキーセッションを確立する準備をするために、新しい一過性のキーペアを自動的に生成する。このコマンドに対する要求ペイロードはない。成功すれば、付加的な応答ペイロードは、静的公開キー（７３バイト）であるＱｓｉと、一過性の公開キー（７３バイト）であるＱｅｉとを備える。成功した応答は、機能状態８４のみにおいて送信される（静的キーがすでに生成され、ＮＶＭ６０に正しく書き込まれたことが立証された後）。このコマンドは、全ての状態において有効である。ＳＴＡＲＴＡＣＣは、ソフトリセット起動シーケンス、エントロピー収集、および一過性のキーの生成のための時間を必要とし得ることが留意され得る。
【０２１６】
ｃｍｄ［ＳＴＯＰＡＣＣ］―このコマンドは、切断されるようにＡＣＣ１２を準備するために使用され得る。次いで、ファームウェアは、休止状態モードに移行するべきである。この実施例での要求ペイロードは、４バイトであり、Ｐａｙｌｏａｄ＿ｌｅｎ＝０である。要求が成功すれば、いずれの付加的なペイロードも提供されない。このコマンドは、試験状態８０、初期化状態８２、および機能状態８４で有効である。いずれの応答もこのコマンドに利用可能ではないことが留意され得る。ＡＣＣ１２が休止状態モードになった後にＲＥＱＲＥＳＰを発行することにより、応答を取り出そうとすると、「０」しか生じなくなる。ファームウェアは、再開するために、ハードウェアがリセットを生成し、ファームウェアにおいて起動シーケンスを引き起こすために、休止状態モードになる前にＮＶＭ６２の中の全ての必要なデータを保存するべきであり、したがって、この時点後にＮＶＭ６２の中にない全てのデータは失われる。
【０２１７】
ｃｍｄ［ＬＯＣＫＯＵＴ］―このコマンドは、ロックアウト状態８６への移行を強制するために使用され得る。この実施例での要求ペイロードは、４バイトであり、Ｐａｙｌｏａｄ＿ｌｅｎ＝０である。要求が成功すれば、いずれの付加的なペイロードも提供されない。このコマンドは、試験状態８０、初期化状態８２、および機能状態８４で有効である。このコマンドを実行することにより、ＡＣＣ１２の永久ロックアウトをもたらし、次いで、ＡＣＣ１２は、いずれの付加的なコマンドも処理することを拒絶する。この状態では、ＡＣＣ１２は、節電モードになり、ｃｍｄ［ＲＥＱＲＥＳＰ］を受けると、ＬＯＣＫＥＤ状態としか応答しない。
【０２１８】
ｃｍｄ［ＩＮＩＴＦＣＴ］―このコマンドは、典型的には、キーセッションにおける第１の特徴制御コマンドであり、ＦＣＴ５０メッセージを処理するようにファームウェアに命令するために使用される。コマンドは、セッションのための共有秘密を導出して、テスター１６およびエージェント２０を介したアプライアンス１８とＡＣＣ１２との間のトンネルを確保するために、全ての必要な情報を含む。ＡＣＣ１２が再起動されるまでキーセッションが続き、ＩＮＩＴＦＣＴコマンドは、ＡＣＣ１２再起動の間に１回だけ発行されるべきであることが留意され得る。いったんキーセッションが確立されてから別のｃｍｄ［ＩＮＩＴＦＣＴ］に遭遇した場合、それはエラーとして扱われるべきである。キーセッションが確立された後に付加的な特徴プロビジョニングコマンドを送信するために、アプライアンス１８は、後続の特徴プロビジョニングメッセージにより短いｃｍｄ［ＦＣＴ］コマンド（以下参照）を使用するべきである。ＩＮＩＴＦＣＴコマンドに対する要求ペイロードは、以下のように編成され得る。
【０２１９】
【化７】
0005572705.tif 000008
【０２２０】
この場合、以下のようである。
【０２２１】
Ｐａｙｌｏａｄ＿ｌｅｎは、ペイロードの長さである。このフィールドは、いくつの３２ビット単語が残りのペイロードの中にあるかを特定するために使用することができる（ペイロードが単語の一部で終端する場合、ｐａｙｌｏａｄ＿ｌｅｎは最も近い整数に切り上げられ得る）。
【０２２２】
Ｑｅｊは、ＡＰＰｊの一過性の公開キーである（すなわち、標準ＡＮＳＩ外部形式）。
【０２２３】
ＣＥＲＴｊは、ＣＥＲＴｊ＝ＶＥＲ｜｜ＣＩＤ｜｜Ｑｓｊ｜｜ＳＩＧｃｅｒｔｊを含む、ＡＰＰｊのミニ証明書であり、ＶＥＲは、証明書バージョン番号（１バイト）であり、ＣＩＤは、顧客ＩＤ（４バイト）であり、Ｑｓｊは、ＡＰＰｊの公開静的キー（７３バイト）であり、ＳＩＧｃｅｒｔｊは、ルートＣＡによって署名される、ＣＥＲＴｊに対する署名であり、ＳＩＧｃｅｒｔｊ＝ＥＣＤＳＡ＿ＳＩＧＮ（ＣＥＲＴｊ，ｄｓ）およびｄｓは、ルートＣＡの非公開キーである。
【０２２４】
ＥＭ＿ｌｅｎは、バイト単位でのＥＭｎｉｊの長さである（例えば、［７４〜５８４］の範囲を有する）。
【０２２５】
ＥＭｎｉｊおよびＭＡＣｎｉｊは、（ＥＭｎｉｊ，ＭＡＣｎｉｊ）＝ＡＥＳ＿ＣＣＭ＊（ＦＣＴ｜｜ＳＩＧｎｉｊ，ｎ，ｋｉｊ）である、暗号化された特徴プロビジョニングメッセージＦＣＴ５０（例えば、９０〜６００バイト）を表し、ＦＣＴは、特徴制御チケットメッセージ（２〜５１２バイト）であり、ｋｉｊは、導出された暗号化キーであり、ｎは、（ｍｓｇＩＤ｜｜４  ｚｅｒｏ  ｂｙｔｅｓ）として構築されたノンス（８バイト）であり、ｍｓｇＩＤは、例えば、あらゆるＦＣＴコマンドで常に２ずつ増分しさえする、現在のメッセージに対するメッセージカウンタ（４バイト）であり、ＳＩＧｎｉｊ＝ＥＣＤＳＡ＿ＳＩＧＮ（ＵＩＤ｜｜ｍｓｇＩＤ｜｜ｐａｄｄｉｎｇ｜｜ＦＣＴ，ｄｓｊ）（７２バイト）である。ここで、ＵＩＤは、ＡＣＣのＵＩＤ（３６バイト）であり、ｍｓｇＩＤは、上記と同じ（４バイト）であり、ｐａｄｄｉｎｇは、ゼロバイト（８バイト）を含み、ｄｓｊは、証明書ＣＥＲＴｊに対応するＡＰＰｊの非公開キーである。
【０２２６】
上記で示されるバイト数は、例証目的のためにすぎず、特定の用途による要求に応じて変化し得ることが理解されるであろう。
【０２２７】
付加的な応答ペイロードは、コマンドが成功した場合、以下のように編成され得る。
【０２２８】
【化８】
0005572705.tif 000009
【０２２９】
この場合、以下のようである。
【０２３０】
ＥＲｎｉｊおよびＭＡＣｎｉｊは、特徴コマンドへの暗号化された応答を表す。（ＥＲｎｉｊ，ＭＡＣｎｉｊ）＝ＡＥＳ＿ＣＣＭ＊（ＦＣＴＲＳＰｎｉ，ｎ，ｋｉｊ）であり、ＦＣＴＲＳＰｎｉは、ＦＣＴ５０コマンドへの応答であり、ｋｉｊは、導出された暗号化キーであり、ｎは、（ｍｓｇＩＤ｜｜４  ｚｅｒｏ  ｂｙｔｅｓ）として構築されたノンス（８バイト）であり、ｍｓｇＩＤは、現在のメッセージに対するメッセージカウンタ（４バイト）（例えば、常に奇数である、「１」を加えた要求ペイロードの中のｍｓｇＩＤの値）である。
【０２３１】
このコマンドは、機能状態８４において有効である。ファームウェアが、機能状態８４においてこのコマンドを検出した場合、このコマンドに対して以下の動作を実施することができる。
【０２３２】
１．メッセージカウンタｍｓｇＩＤを「０」にリセットし、ＡＣＣの独自のメッセージカウントが、ステップ５において特徴プロビジョニングメッセージを処理している間に伝送されたものに合致することを立証するために、それを使用する。
【０２３３】
２．ＣＥＲＴｊを認証し、証明書からＱｓｊを抽出する。
【０２３４】
３．共有秘密キーを計算し、ＥＣＭＱＶｗＫＤＦ（ｄｓｉ，ｄｅｉ，Ｑｅｉ，Ｑｓｊ，Ｑｅｊ）を伴う暗号化キーｋｉｊを導出する。
【０２３５】
４．ＥＭｎｉｊを復号し、ＳＩＧｎｉｊを検証し、次いで、特徴プロビジョニングメッセージＦＣＴ５０を処理する。
【０２３６】
５．特徴プロビジョニングメッセージへの応答（ＥＲｎｉｊ，ＭＡＣｎｉｊ）を準備する。応答を準備するときに、（ｍｓｇＩＤ＋１）がノンスｎに使用されるべきである。
【０２３７】
上記のステップの全てが成功した場合には、ファームウェアは、状態コードＳＵＣＣＥＳＳおよび（ＥＲｎｉｊ，ＭＡＣｎｉｊ）を返送し得る。そうでなければ、ファームウェアは、状態コードＦＡＩＬを送信し、またはエラーカウンタがその最大値に達した場合、ファームウェアは、ロックアウト状態８６に移行し、状態コードＬＯＣＫＥＤを送信する。
【０２３８】
ｃｍｄ［ＦＣＴ］―このコマンドは、特徴プロビジョニングメッセージを処理するようにファームウェアに命令するために使用される。それは、新しい共有キーを生成する代わりに既存の共有キーを再利用することを除いて、ＩＮＩＴＦＣＴコマンドと同様である。要求ペイロードは、以下のように編成され得る。
【０２３９】
【化９】
0005572705.tif 000010
【０２４０】
この場合、上記と同様に以下のようである。
【０２４１】
Ｐａｙｌｏａｄ＿ｌｅｎは、いくつの３２ビット単語が残りのペイロードの中にあるかを特定するペイロードの長さである（ペイロードが単語の一部で終端する場合、ｐａｙｌｏａｄ＿ｌｅｎは最も近い整数に切り上げられる）。
【０２４２】
ＥＭ＿ｌｅｎは、バイト単位でのＥＭｎｉｊの長さである（例えば、［７４〜５８４］の範囲を有する）。
【０２４３】
ＥＭｎｉｊおよびＭＡＣｎｉｊは、暗号化された特徴プロビジョニングメッセージ（９０〜６００バイト）を表す。（ＥＭｎｉｊ，ＭＡＣｎｉｊ）＝ＡＥＳ＿ＣＣＭ＊（ＦＣＴ｜｜ＳＩＧｎｉｊ，ｎ，ｋｉｊ）であり、ＦＣＴは、特徴制御チケットメッセージ（２〜５１２バイト）であり、ｎは、例えば、あらゆるＦＣＴコマンドによって常に２ずつさらに増分する（ｍｓｇＩＤ｜｜４  ｚｅｒｏ  ｂｙｔｅｓ）として構築されたノンス（８バイト）であり、ｍｓｇＩＤは、現在のメッセージに対するメッセージカウンタ（４バイト）であり、ＳＩＧｎｉｊ＝ＥＣＤＳＡ＿ＳＩＧＮ（ＵＩＤ｜｜ｍｓｇＩＤ｜｜ｐａｄｄｉｎｇ｜｜ＦＣＴ，ｄｓｊ）（７２バイト）であり、ＵＩＤは、ＡＣＣのＵＩＤ（３６バイト）であり、ｍｓｇＩＤは、上記と同じ（４バイト）であり、ｐａｄｄｉｎｇは、ゼロバイト（８バイト）を含み、ｄｓｊは、証明書ＣＥＲＴｊに対応するＡＰＰｊの非公開キーであり、ｋｉｊは、導出された暗号化キーである。
【０２４４】
付加的な応答ペイロードは、ＦＣＴコマンドが成功した場合、以下のように編成され得る。
【０２４５】
【化１０】
0005572705.tif 000011
【０２４６】
この場合、以下のようである。
【０２４７】
ＥＲｎｉｊおよびＭＡＣｎｉｊは、特徴コマンドへの暗号化された応答を表し、（ＥＲｎｉｊ，ＭＡＣｎｉｊ）＝ＡＥＳ＿ＣＣＭ＊（ＦＣＴＲＳＰｎｉ，ｎ，ｋｉｊ）であり、ＦＣＴＲＳＰｎｉは、ＦＣＴコマンドへの応答であり、ｋｉｊは、導出された暗号化キーであり、ｎは、（ｍｓｇＩＤ｜｜４  ｚｅｒｏ  ｂｙｔｅｓ）として構築されたノンス（８バイト）であり、ｍｓｇＩＤは、現在のメッセージに対するメッセージカウンタ（４バイト）（例えば、常に奇数である、「１」を加えた要求ペイロードの中のｍｓｇＩＤの値）である。
【０２４８】
ＦＣＴコマンドは、機能状態８４において有効である。ファームウェアは、このコマンドに対して以下の動作を実施し得る。
【０２４９】
１．ＦＣＴ５０が有効であるかどうかにかかわらず、メッセージカウンタｍｓｇＩＤが２ずつ増分され、ステップ２において特徴プロビジョニングメッセージを処理しながら、正当性が立証される。
【０２５０】
２．ＥＭｎｉｊを復号し、ＳＩＧｎｉｊを検証し、次いで、特徴プロビジョニングメッセージＦＣＴ５０を処理する。
【０２５１】
３．特徴プロビジョニングメッセージへの応答（ＥＲｎｉｊ，ＭＡＣｎｉｊ）を準備する。応答を準備するときに、（ｍｓｇＩＤ＋１）がノンスに使用されるべきである。
【０２５２】
全てのステップが成功した場合には、ファームウェアは、状態コードＳＵＣＣＥＳＳおよび（ＥＲｎｉｊ，ＭＡＣｎｉｊ）を返送する。そうでなければ、ファームウェアは、状態コードＦＡＩＬを送信し、またはエラーカウンタがその最大値に達した場合、ファームウェアは、ロックアウト状態８６に移行し、状態コードＬＯＣＫＥＤを送信する。いくつかの実施形態では、このコマンドは、キーセッションが利用可能であるように、ｃｍｄ［ＩＮＩＴＦＣＴ］コマンドの処理が前もって成功していることを要求することが留意され得る。それが真ではない場合には、コマンドがエラーをもたらす。
【０２５３】
ｃｍｄ［ＩＮＩＴＦＣＴ］およびｃｍｄ［ＦＣＴ］の一部としてＡＣＣ１２に送信されるＦＣＴ５０メッセージは、典型的には、定刻よりも早くアプライアンス１８によって構築され、いずれの特定のＡＣＣ１２にも特有でなく得る。いくつかの異なる種類のＦＣＴ５０があり、異なるＦＣＴ種類の書式設定の実施例は、以下のように定義され得る。
【０２５４】
【化１１】
0005572705.tif 000012
【０２５５】
【化１２】
0005572705.tif 000013
【０２５６】
注記１：全てのＦＣＴ５０のうちで最短のものは、長さが２バイトしかないＧＥＴＦＥＡＴ種類である。最長のＦＣＴ５０は、最大で５１２バイトとなり得るＷＲＡＣＣＥＳＳ種類である（さらなる詳細については注記２および３を参照）。
【０２５７】
注記２：この実施例でのＲＤＡＣＣＥＳＳおよびＷＲＡＣＣＥＳＳ  ＦＣＴ５０は、４バイトインクリメントのデータのみにアクセスすることができる。アドレスは、４バイト境界上で整合されるべきであり、アクセス可能なデータの量は、４で割られるべきである。
【０２５８】
注記３：この場合、アクセス可能なデータの最小量は、４バイトである。ＷＲＡＣＣＥＳＳがアクセスできるデータの最大量は、＝（最大ＥＭ＿ｌｅｎ）−ｌｅｎ（ｎ）−ｌｅｎ（ＴＹＰＥ）−ｌｅｎ（ＴＡＧ）−ｌｅｎ（ＡＤＤＲ）＝５１２−１−１−８−２＝５００バイトである。ＲＤＡＣＣＥＳＳ種類のＦＣＴ５０がアクセスできるデータの最大量は、この実施形態では、５１２Ｂに規定されるＥＭ＿ｌｅｎの最大長によって限定される。最大ＥＭ＿ｌｅｎおよびＥＲ＿ｌｅｎに課せられる制限は、利用可能な限定量のＲＡＭ６０内でペイロード全体を保持する能力があるべきという事実による。より多くのデータにアクセスする必要がある場合には、これらの制限内に収まるまで、それを複数のＦＣＴ５０に分ける必要がある。
【０２５９】
注記４：ＷＲＡＣＣＥＳＳおよびＲＤＡＣＣＥＳＳ  ＦＣＴ５０は、ＮＶＭ６２の保護された領域のみにアクセスできるようになるべきである。次いで、保護されたＮＶＭ６２以外のものにアクセスしようとすることは、エラーと見なされる。この規則の１つの例外は、これらのコマンドに対して許容される非公開ＮＶＭ６２に記憶された記録タグＴＡＧを読み書きとなり得る（しかし、ＷＲＡＣＣＥＳＳのユーザは、ＴＡＧおよびＤＡＴＡが非公開ＮＶＭ６２の中の同じ場所に書き込まれ、ＮＶＭ６２の中の結果として生じる値をＴＡＧおよびＤＡＴＡ値のＯＲ動作結果にさせることを認識するべきである）。
【０２６０】
注記５：ＳＥＴＦＥＡＴ  ＦＣＴ５０が永久的な特徴プロビジョニングを実施するために使用される一方で、ＳＥＴＦＥＡＴ＿ＴＥＭＰ  ＦＣＴＳ５０は一時的な特徴プロビジョニングを実施するために使用される。永久的な特徴プロビジョニングでは、ＦＥＡＴＳＥＴビットがＮＶＭ６２に書き込まれる。一時的な特徴プロビジョニングでは、ＮＶＭ６２の中のＦＥＡＴＳＥＴ値が、ＦＣＴ５０のＦＥＡＴＳＥＴフィールドでＯＲを行われ、結果として、ＡＣＣ１２の電源が入ったままである限り、実際のＦＥＡＴＳＥＴとして使用される。いったんＡＣＣ１２が電力を失う、および／または再起動すると、一時的なＦＥＡＴＳＥＴが失われ、ＮＶＭ６２に記憶されたものに戻る。
【０２６１】
ＦＣＴ  ＴＡＧ記録―プログラミングＦＣＴ５０（すなわち、ＳＥＴＦＥＡＴおよびＷＲＡＣＣＥＳＳ種類）のＴＡＧフィールドが、過去にＡＣＣ１２に起こったことの履歴記録として使用される。
【０２６２】
各プログラミングＦＣＴ５０は、製造過程中のステップを表してもよく、各ステップは、そのステップと関連付けられたＴＡＧ記録の中のビットを有する。ＦＣＴ５０が処理された後に、そのステップが起こったことを示すために、対応するビットが設定される。アプライアンス１８がＦＣＴ５０を構築するときには、何がＦＣＴ５０のコンテンツであるかを知り、適切なタグビットを設定する必要がある。次いで、ＡＣＣ１２は、ＮＶＭ６２の保護された領域の中の特別保留空間内にＴＡＧ記録を保つ。ＦＣＴ５０の処理が成功すると、次いで、ＡＣＣ１２は、以前のＴＡＧ記録を伴うＦＣＴのタグフィールドのビット単位のＯＲを行い、新しい値をＮＶＭ６２に戻して記憶し得る。単にＴＡＧ記録の個々のビットを見ることによって、講じられた（ビット＝「１」である場合）、および講じられなかった（ビット＝「０」である場合）プログラミングステップを決定することができる。この場合、真新しい初期化されていないＡＣＣ１２は、全て「０」のＴＡＧ記録を有する。ＡＣＣ１２上のＴＡＧ記録は、プログラミングＦＣＴ５０の処理の成功の結果として更新され、または代替として、ＷＲＡＣＣＥＳＳ  ＦＣＴ５０を伴うＴＡＧ記録のアドレスを知っていれば、任意の値をＴＡＧ記録に直接書き込むことができる。ＦＣＴ５０を処理している間にＡＣＣ１２がエラーに遭遇した場合、ＴＡＧ記録は更新されるべきではない。ＴＡＧ記録は、ｃｍｄ［ＳＨＡＲＥＤＮＶＭＲＤ］を使用して読み出すことができ、読み出したデータは暗号化されていない。
【０２６３】
ＴＡＧ記録に書き込まれるＷＲＡＣＣＥＳＳ  ＦＣＴ５０を発行する時に注意を払うべきであり、ＴＡＧ記録は２回書き込まれ、１回目はＦＣＴ５０を実行するとき、２回目はＴＡＧ記録を更新するときであることが留意されるべきである。このことが起こった場合、ＤＡＴＡフィールドは、ＴＡＧフィールドと同じになるべきであり、またはそれらのうちの１つは、偶発的にＴＡＧ記録を破壊することを防止するように、全て「０」から成る。
【０２６４】
ＦＣＴ応答―ＦＣＴ応答は、ｃｍｄ［ＩＮＩＴＦＣＴ］またはｃｍｄ［ＦＣＴ］を処理した後に送信される。完全な応答は、以下のように編成され得る。
【０２６５】
【化１３】
0005572705.tif 000014
【０２６６】
この場合、以下のようである。
【０２６７】
ＥＲ＝ＡＥＳ  ＣＣＭ＊（（ＳＴＡＴＵＳ｜｜ＵＩＤ｜｜＜ｄａｔａ＞），ｎ，ｋ）、ＳＴＡＴＵＳは、上記で記載される状態コードのうちの１つであり、ＵＩＤｉは、Ｑｓｉのｘ座標であるＡＣＣｉの一意のＩＤであり、＜ｄａｔａ＞は、ＦＣＴ５０コマンドによって要求されるデータであり、
ＦＣＴ種類＝ＳＥＴＦＥＡＴであれば、何もなく、
ＦＣＴ種類＝ＧＥＴＦＥＡＴであれば、デバイス上の全ての特徴に対する現在の設定（３２バイト）であり、
ＦＣＴ種類＝ＷＲＡＣＣＥＳＳであれば、何もなく、
ＦＣＴ種類＝ＲＤＡＣＣＥＳＳであれば、要求された読み出しデータの最大５１２Ｂである。
【０２６８】
ｎは、（ｍｓｇＩＤ｜｜４  ｚｅｒｏ  ｂｙｔｅｓ）として構築されたノンス（８バイト）であり、上記のように、ｍｓｇＩＤは、現在のメッセージに対するメッセージカウンタであり、常に奇数となるべきである（４バイト）。
【０２６９】
ＳＴＡＴＵＳは、暗号化されていない文章で送信されるとともに、暗号化された応答の一部分でもあることが留意され得る。たとえ暗号化されていない状態が暗号化された状態に合致しても、ＥＲを復号し、検証することによって、状態が認証されない限り、メッセージが配送中に改変された可能性があるので、暗号化されていない状態が正しいという保証はない。いくつかの用途は、単純に暗号化されていない状態を見て、ＦＣＴ５０が成功したかどうかを素早くチェックしたい場合があるが、通信チャネルを信用するつもりである場合のみにそうするべきである。成功した応答の長さｌｅｎ（ｓｔａｔｕｓ｜｜ＥＲ）は、ＦＣＴ５０コマンドを発行したときにエージェントに知られるべきであるため、エージェントは常に、ＡＣＣ１２が応答の中でそのデータの量を返信し、そのデータの量を読み返すことを仮定するべきである。
【０２７０】
Ｃｍｄ［ＴＥＳＴＭＥＭ］、ｃｍｄ［ＴＥＳＴＲＯＭ］、ｃｍｄ［ＴＥＳＴＮＶＭ］、［ＴＥＳＴＲＮＧ］：これらのコマンドは、シリコンダイに機能ＤＦＴ試験を実行して、チップに欠陥があるかどうかを決定するために、チップ製造業者によって使用することができる。Ｐａｙｌｏａｄ＿ｌｅｎによって識別される要求ペイロードは、４バイトであってもよく、ゼロに等しい。
【０２７１】
ＴＥＳＴＭＥＭ、ＴＥＳＴＲＯＭ、ＴＥＳＴＮＶＭであれば、コマンドが成功した場合、付加的な応答ペイロードは何もない。
【０２７２】
ＴＥＳＴＲＮＧであれば、コマンドが成功した場合、付加的な応答ペイロードは、オンボード乱数発生器によって収集されるようなランダムデータの３２ビット列である。これらのコマンドは、特定のＤＦＴ特徴がＦＣＴ５０を使用して再び有効にされている場合、試験状態８２および機能状態８４において有効である。有効チェックは、ファームウェアによって行われる。
【０２７３】
ＡＣＣ１２は、コマンド種類に基づいて、以下のうちの１つを実行し得る。
【０２７４】
１．メモリ試験プログラムが、メモリビットのうちのいずれかに欠陥がかるかどうかを確認するために、ＲＡＭ６０全体にわたって特定のデータパターンを調べる。
【０２７５】
２．ＮＶＭ６２を除いて、ＭｅｍＴｅｓｔと同様であるＮＶＭ６２試験プログラム。
【０２７６】
３．ＲＯＭ６０コード健全性チェックは、ＲＯＭ６０コンテンツ全体においてＣＲＣ−３２を実行し、それをハードウェアに組み込まれたチェックサムに対して比較することを伴う。これは、ＲＯＭ６０がアクセス可能であり、欠陥がないことを確認する単純なチェックであり、ＲＯＭ６０コードを改ざんされることから守るようには意図されていない。
【０２７７】
４．ＲＮＧリング発振器から受信されたエントロピーの量をチェックするＲＮＧ５８試験。これは、固定期間にわたってＲＮＧ５８からビットストリームを収集し、次いで、オフチップで後処理されるランダムデータを返信することを伴う。
【０２７８】
これらのＢＩＳＴプログラムのそれぞれは、それに関連付けられたＤＦＴコマンドを有することが留意され得る。コマンドは、これらの試験プログラムの実行をトリガし、合格／不合格の試験結果が応答状態になる。ＢＩＳＴプログラムのうちのいずれかが不合格になった場合、ＡＣＣ１２は、最初の不合格において自動的にロックアウト状態８６になる。それらには、他の無効コマンドエラー条件のように、複数の付加的な試行を受け入れる能力が与えられない。他の実施形態では、アプリケーションは、他のＤＦＴ方策を決定付けてもよく、その場合、これらのコマンドのうちの一部のみが実装され得ることを理解することができる。
【０２７９】
ｃｍｄ［ＳＨＡＲＥＮＶＭＷＲ］―これは、典型的には、アプライアンス１８または他のエージェント２０がＮＶＭ６２の「共有」領域に書き込むことを可能にする、随意的なコマンドである。これらのコマンドは、安全ではないが、ＡＣＣの制御内にあるＮＶＭ６２へのオープンアクセスを可能にする。これらのコマンドが含まれるべき典型的理由としては、ａ）ＳｏＣの設計が、複数の機能ブロック間で共有される１つだけのＮＶＭ６２を有する場合、ＡＣＣ１２は、そのＮＶＭ６２ブロックのゲートキーパーとなり、アクセス制限を施行するのに役立つ、ｂ）システムがＡＣＣ１２へ、およびそこからのメールボックスとしてＮＶＭ６２を使用する場合、およびｃ）安全なセッションを確立することができる前に、テスターが情報をＡＣＣ１２に注入する場合である。要求ペイロードは、以下のように編成され得る。
【０２８０】
【化１４】
0005572705.tif 000015
【０２８１】
この場合、以下のようである。
【０２８２】
Ｐａｙｌｏａｄ＿ｌｅｎは、上記のように、ペイロードの長さであり、
ＡＤＤＲは、４バイト境界上で整合されるべきである、コマンドがアクセスしようとしている、ＮＶＭベースアドレスからオフセットされた開始アドレスである。
【０２８３】
ＳＩＺＥは、４バイトのインクリメントのアクセスされているバイトの数である。
【０２８４】
ＷＲＤＡＴＡは、ｃｍｄ［ＳＨＡＲＥＮＶＭＷＲ］のみに適用可能である、書き込まれ、ＳＩＺＥ数のバイト長さである、データストリームである。
【０２８５】
このコマンドについては、成功すれば、いずれの付加的な応答ペイロードもない。このコマンドは、試験状態８２および機能状態８４において有効である。アクセス可能であるデータの最大量は、最大６４ＫＢである利用可能な連続共有ＮＶＭ空間の最大量によって限定される。ファームウェアは、事前にプログラムしたＮＶＭ許可テーブルに対して要求のアドレスおよびサイズをチェックし、アクセス全体が許可されていることを確認するべきである。アクセスのいずれかの部分が共有ＮＶＭ空間外にある場合には、エラーと見なされ、コマンドが失敗する。これの例外は、ＮＶＭ６２の特別な保留された保護領域の中に位置するＴＡＧ記録を読み出すときとなる。
【０２８６】
ｃｍｄ［ＳＨＡＲＥＮＶＭＲＤ］―これも、アプライアンス１８または他のエージェント２０がＮＶＭ６２の「共有」領域にアクセスすることを可能にする、随意的なコマンドとして使用され得る。これらのコマンドは、安全ではないが、ＡＣＣの制御内にあるＮＶＭ６２へのオープンアクセスを可能にする。これらのコマンドが含まれるべき典型的な理由としては、ａ）ＳｏＣの設計が、複数の機能ブロック間で共有される１つだけのＮＶＭ６２を有する場合、ＡＣＣ１２は、そのＮＶＭブロックのゲートキーパーとなり、アクセス制限を施行するのに役立つ、ｂ）システムがＡＣＣ１２へ、およびそこからのメールボックスとしてＮＶＭ６２を使用する場合、およびｃ）上記で指摘されるように、ＮＶＭ６２の特別に保留された領域の中に位置するＦＣＴ  ＴＡＧ記録を読み返すために、ｃｍｄ［ＳＨＡＲＥＮＶＭＲＤ］を使用することができることである。ＴＡＧ記録は、ｃｍｄ［ＳＨＡＲＥＮＶＭＲＤ］で、暗号化されていない文章で可読であるが、ｃｍｄ［ＳＨＡＲＥＮＶＭＷＲ］で、書き込み可能であるべきではない。要求ペイロードは、以下のように編成され得る。
【０２８７】
【化１５】
0005572705.tif 000016
【０２８８】
この場合、以下のようである。
【０２８９】
Ｐａｙｌｏａｄ＿ｌｅｎは、上記のように、ペイロードの長さであり、
ＡＤＤＲは、コマンドがアクセスしようとしている、ＮＶＭ６２ベースアドレスからオフセットされた開始アドレスであり、４バイト境界上で整合されるべきである。
【０２９０】
ＳＩＺＥは、４バイトのインクリメントのアクセスされているバイトの数である。
【０２９１】
コマンドが成功した場合、付加的な応答ペイロードは、融通性のあるサイズのＲＤＤＡＴＡを備える。ＲＤＤＡＴＡは、ｃｍｄ［ＳＨＡＲＥＮＶＭＲＤ］のみに適用可能であり、書き込まれ、ＳＩＺＥ数のバイト長さであるデータストリームである。ＡＣＣ１２と通信するエージェント２０は、事前にＲＤＤＡＴＡの長さを計算できることを想定されたい。また、コマンドを作成したアプライアンス１８は、ＳＨＡＲＥＤＮＶＭＲＤコマンドを送信するときに、どれだけのデータを取り出すべきかをエージェント２０に知らせるべきである。このコマンドは、試験状態８０および機能状態８４において有効である。アクセス可能であるデータの最大量は、最大６４ＫＢである利用可能な連続共有ＮＶＭ空間の最大量によって限定されるべきである。ファームウェアは、事前にプログラムしたＮＶＭ許可テーブルに対して要求のアドレスおよびサイズをチェックし、アクセス全体が許可されていることを確認する。アクセスのいずれかの部分が共有ＮＶＭ空間外にある場合には、エラーと見なされ、コマンドが失敗する。
【０２９２】
ｃｍｄ［ＳＣＡＮ］―このコマンドは、テスターがＡＣＣ１２のスキャン試験を開始したいことを示す。要求ペイロードは４バイトであり、Ｐａｙｌｏａｄ＿ｌｅｎ＝０である。コマンドが成功すれば、いずれの付加的な応答ペイロードも提供されない。このコマンドは、特定のＤＦＴ特徴がＦＣＴ５０を使用して再び有効にされている場合に、試験状態８０および機能状態８４において有効である。有効チェックは、ファームウェアによって行われる。ＡＣＣ１２は、ＳｃａｎＭｏｄｅビットを高く設定するべきである。
【０２９３】
ｃｍｄ［ＲＥＱＶＥＲＩＤ］―このコマンドは、ＡＣＣ１２のハードウェアおよびソフトウェアバージョンを識別するために使用されるＡＣＣのバージョンＩＤを要求するために使用され得る。このコマンドは、ＡＣＣ１２の異なるバージョンの間でプロトコルおよび特徴の違いを区別する方法が存在する必要がある場合に、有用となり得る。典型的には、このコマンドは、さらなる通信において使用する正確なプロトコルに関して、全ての当事者が合意していることを確認するように送信される第１のコマンドである。このコマンドに対する要求ペイロードはない。応答は、以下のように編成され得る。
【０２９４】
【化１６】
0005572705.tif 000017
【０２９５】
ファームウェアおよびハードウェアの両方のバージョンＩＤは、両方とも８ビットである。これらのフィールドの実際の値は、ＡＣＣ１２の設計のどのバージョンが使用中であるかに基づいて決定される。ＲＥＱＶＥＲＩＤは常に、即時に応答で返信するべきである。応答には、Ｓｔａｒｔ−ｏｆ−Ｐａｙｌｏａｄマーカーも、状態フィールドもない。ＨＷバージョンＩＤは、ハードウェアに組み込まれ、そのようなものとして、常に利用可能であるべきである。ＦＷバージョンＩＤは、ファームウェアがＲＯＭ６０から正しい値を取り込み、起動時にその値をＦＷＶＥＲＩＤレジスタに書き込むまで、最初は全て「０」である。ＦＷバージョンＩＤが「０」である場合には、ＡＣＣ１２がまだ作動し始めておらず、後に再び試行するべきであることを示す。応答が既知のＶＥＲＩＤ以外のものである場合は、致命的なエラーと見なされるべきである。このコマンドは、図５４に示された全ての状態において有効である。
【０２９６】
ｃｍｄ［ＩＤＣＯＤＥ］―このコマンドは、ＩＥＥＥ１１４９仕様によって、ＡＣＣのタップコントローラのＩＤＣＯＤＥを返信する（このコマンドのさらなる詳細をこの仕様で見出すことができる）。このコマンドに対する要求ペイロードはない。応答は、以下のように編成され得る。
【０２９７】
【化１７】
0005572705.tif 000018
【０２９８】
ＩＤＣＯＤＥは、ハードウェアに組み込まれた定数となるべきであり、したがって、常に応答を即時に返信するべきである。応答には、Ｓｔａｒｔ−ｏｆ−Ｐａｙｌｏａｄマーカーも、状態フィールドもない。ＩＤＣＯＤＥの実際の値は、典型的には、用途に特有である。このコマンドは、全ての状態において有効である。
【０２９９】
ｃｍｄ［ＢＹＰＡＳＳ］―このコマンドは、ＩＥＥＥ  １１４９仕様によって、ＡＣＣタップコントローラをバイパスモードにする。シフトインされるあらゆるビットは、１ＴＣＫクロックサイクルによって遅延され、シフトアウトされる。このコマンドは、全ての状態において有効である。
【０３００】
（通信プロトコル）
ここで、通信プロトコルの高レベルの説明を提供する。議論されているように、アプライアンス１８は、特徴制御チケットまたはＦＣＴ５０として知られているメッセージを使用して、ＡＣＣ１２と安全に通信する。システム１０では、アプライアンス１８がＡＣＣ１２と通信することができる２つのインターフェースがある。
【０３０１】
１つのインターフェースは、試験アクセスポートおよび境界スキャンアーキテクチャについてＩＥＥＥ  １１４９．１規格で定義されるようなＪＴＡＧ試験インターフェース７２である。インターフェース規格は、１組の制御およびデータ信号、試験アクセスポートコントローラ、ならびに回路の試験をサポートするように設定される機構および命令の定義を含む。ＪＴＡＧインターフェース７２は、典型的には、製造欠陥について集積回路を試験するために使用されるが、規格は、個人がユーザ定義の機能を実装するようにコマンドを拡張するための条項を含む。
【０３０２】
ＪＴＡＧインターフェース７２に加えて、この実施形態は、アフターマーケット再プログラミングを可能にする付加的な融通性を有効にするようにパラレルバスに接続するために、またはＪＴＡＧインターフェース７２へのアクセスがない場合に、２次コマンドインターフェース６６を提供する。２次コマンドインターフェース６６は、単純で一般的なメモリマップしたバスに似ているように構成することができる。２次インターフェース６６上のデータ幅は、用途の要件に応じて、８、１６、または３２ビットに構成することができる。
【０３０３】
ＪＴＡＧインターフェース７２とパラレルコマンドインターフェース６６とは、物理的に異なり、一方がシリアルインターフェースであり、他方がパラレルバスであるが、共通の１組のコマンドおよび応答を共有することが留意され得る。２つのインターフェース７２、６６は、ファームウェアへの均一なインターフェースを提示するように、（コマンドインターフェースＭＵＸ７６を介して）ハードウェアの中でともに多重化される。そのように、物理的実装における相違をファームウェアから隠すことができる。
【０３０４】
本明細書において説明される通信プロトコルに従おうとするときに、以下が留意され得る。
【０３０５】
ａ）アプライアンス１８／エージェント２０は常に、テスター１６または顧客依存のデバイスプログラマ２６を介して、ＡＣＣ１２との通信を開始するものとなるべきである。
【０３０６】
ｂ）ＡＣＣ１２は、コマンドに応答することしかできず、開始することができないように、コマンドプロトコルにおけるスレーブと見なすことができる。例えば、この構成では、ＡＣＣ１２は、そうするように促されることなく、応答データを送信することさえしない。
【０３０７】
ｃ）ＡＣＣ１２の中のマイクロコントローラ５４は、割り込みがない、単一スレッド状である。したがって、１度に１つのタスクにしか取り組むことができず、他のことを行う前に、そのタスクを完了しなければならなくなる。そのタスクが行われる前に別のコマンドが着信した場合、新しいコマンドは無視される必要がある。
【０３０８】
ｄ）ウエハテスターは、典型的には、ＡＣＣ１２がその時間がかかる計算を終了することを待つ時間を無駄にすることを望まない。その代わりに、先に進んで他のことを行い、ＡＣＣ１２がコマンドを完了する寸前であるときに戻ることを望むであろう。
【０３０９】
ｅ）ＪＴＡＧインターフェース７２の仕様は、あらゆるＪＴＡＧ実装が命令レジスタ（ＩＲ）およびデータレジスタ（ＤＲ）を有することを要求する。両方のレジスタは、テスター１６によって読取り可能および書込み可能である。この実施例では、ＩＲ／ＤＲレジスタペアの２つのバージョンがある。一方は、ＴａｐおよびＪＴＡＧインターフェース７２に位置し、他方は、パラレルインターフェース６６に位置する。ＣｍｄインターフェースＭｕｘ７６は、２つのバージョン間で仲裁し、それに応じて、周辺コントローラ５９にＩＲ／ＤＲデータを送る。テスター１６は、どのコマンドを実行するかを伝えるためにＩＲに書き込む。それは、ＤＲに書き込むことによって要求データを送信することができ、ＤＲから読み出すことによって、応答データを捕捉することができる。同様に、パラレルコマンドインターフェース６６は、同様にＩＲおよびＤＲを有するように、可能な限りこのパラダイムを再利用するが、バス上のメモリマップしたレジスタとして実装することができる。
【０３１０】
プログラムされるコマンドに応じて、書き込んだ後にＤＲを読み出すことにより、書き込まれた同じコンテンツを返さない場合がある。テスター１６は、いつでもＩＲおよびＤＲを読み書きし得るが、これが不適切なときに行われた場合、破壊したデータをもたらすか、または同期がずれる場合がある。以下で説明されるトランザクションプロトコルは、読み書きが発生し得る時、および予期される結果がどのようであるべきかを特定する。
【０３１１】
ここで図６１を参照すると、単一のコマンドシーケンスの例が示されている。テスター１６は、１ａ）において、ＡＣＣの命令レジスタ（ＩＲ）に命令コードを書き込むことによって、表４に記載されるＡＣＣ１２へのコマンドのうちの１つを開始する。新しいコマンドが発行されたことを意味して、ＩＲが更新されるとすぐに、ＡＣＣ１２は、１ｂ）において、コマンドを復号し、そのコマンドと関連付けられた正しい量のデータを吸収する準備をする。次いで、テスター１６は、２ａ）において、ＡＣＣのデータレジスタ（ＤＲ）にデータを書き込むことによって、新しいコマンドと関連付けられたデータペイロードを送信する。要求ペイロードが完全に送信されない場合、ＡＣＣ１２は、無期限に残りのデータを待ってハングアップする。ＡＣＣ１２は、テスター１６がレジスタデータを送信するのと同じくらい速く、それをサンプリングし、コマンド自体を実行する前に、２ｂ）において、ペイロード全体をスクラッチデータＲＡＭ６０に記憶する責任を負う。次いで、ＡＣＣ１２は、ＤＲに読み出しを発行し、新しいデータが到着したことを準備完了信号が示すまで読み出しサイクルを引き延ばすように、待機状態を挿入する。
【０３１２】
実際のスループット限度は、ＪＴＡＧおよびＡＣＣシステムクロック周波数、およびＤＲからそのＲＡＭ６０にデータを移動させるＡＣＣのマイクロコントローラの能力に基づいている。カスタムパラレルインターフェース６６を使用するとき、ＡＣＣ１２がコピーできるよりも速くデータが送信される可能性があり、その場合、どれだけ速くバスが書き込まれるべきであるかを制限するフロー制御がある。いずれの場合でも、ＡＣＣ１２は、受信データが見落とされないように構成されるべきである。
【０３１３】
ペイロード全体が送信され、吸収された後に、ＡＣＣ１２２は、コマンドを処理し始める。エージェント２０は、３）において、別のコマンドを発行する前にコマンドが完了するまで待ち、これは、比較的長時間かかり得る。各コマンドは、その種類のコマンドを実行するのに、最大に固定された最大数のサイクルを要し得る。アプライアンス１８がこの最大数のサイクルを待つ場合、ＡＣＣ１２がコマンドを処理し終えることを確実にすることができる。ＡＣＣ１２が３）において処理しているときに、アプライアンス１８／エージェント２０／テスター１６は、可能であれば、他のタスク、例えば、ＳｏＣの他の部分の試験を実施するために、ご都合主義的に待機期間を使用し得る。テスター１６が待たず、以前のコマンドが終了する前に新しいコマンドを発行する場合、プロトコル違反と見なされ、新しいコマンドは無視される（これの例外は、ｃｍｄ［ＲＥＱＲＥＳＰ］、およびハードウェアによって専有的に処理される、いくつかの特別なコマンドである）。
【０３１４】
アプライアンス１８は、戻って応答を求める準備ができているときに、４）においてＲｅｑｕｅｓｔ−ｆｏｒ−Ｒｅｓｐｏｎｓｅへのコマンドｃｍｄ［ＲＥＱＲＥＳＰ］を発行する。ハードウェア論理がこれを検出すると、ＳｅｎｄＲｅｓｐＮｏｗフラグを設定する。テスター１６が、最初にｃｍｄ［ＲＥＱＲＥＳＰ］を送信することなくＤＲから読み出すと、「０」を得る。いったんＡＣＣ１２がコマンドを処理し終えて、結果が準備できると、ファームウェアは、ＳｅｎｄＲｅｓｐＮｏｗフラグをチェックして、ｃｍｄ［ＲＥＱＲＥＳＰ］が発行されているかどうかを確認することができる。ＡＣＣ１２がコマンドを実行し終える前にｃｍｄ［ＲＥＱＲＥＳＰ］が発行された場合、ＡＣＣ１２は、５ａ）において、それが終了し、完全な結果が準備できるまで、「０」を送信する。ｃｍｄ［ＲＥＱＲＥＳＰ］が発行され、ＡＣＣ１２がコマンドを実行し終えて、応答の準備ができた場合、ＡＣＣ１２は、５ｂ）において、Ｓｔａｒｔ−ｏｆ−Ｐａｙｌｏａｄマーカーを備える応答を送信し始めることができ、その後に応答状態、次いで、もしあれば応答ペイロードが続く。
【０３１５】
送信される応答ペイロードがある場合、ＡＣＣ１２は、アプライアンス１８がＤＲから読み出すのと同じくらい速く、（スクラッチＲＡＭ６０の中の）応答バッファからＤＲにデータをコピーする。これは、応答ペイロード全体が送信されるまで続く。再度、実際のスループット限度は、クロック周波数、およびＲＡＭ６０からそのＤＲにデータを移動させるＡＣＣのマイクロコントローラ５４の能力に基づいている。カスタムパラレルインターフェース６６を使用するとき、ＡＣＣ１２がコピーできるよりも速くデータが読み出されるされる可能性がある。その場合、どれだけ速くバスがデータを読み出すべきかに制限を課することができる。
【０３１６】
テスター１６は、６）においてＳｔａｒｔ−ｏｆ−Ｐａｙｌｏａｄマーカーを見つけるまでＤＲを読み出し、次いで、応答全体を読み出し続けるべきである。いったんＳｔａｒｔ−ｏｆ−Ｐａｙｌｏａｄがテスターによって送信され、読み出されると、応答ペイロード全体が読み出される前に、別のコマンドを発行するべきではなく、さもないと、システム１０が、無期限にハングアップすることを含んで、予測不能な状態で挙動する場合がある。
【０３１７】
ペイロード全体が送信された後にエージェント２０が読み出し続ける場合、ＡＣＣ１２は、全ての「０」の送信を開始する。付加的なプログラミングが必要とされる場合、アプライアンス１８は、これらのステップを繰り返すことができる。いずれのプログラミングも必要とされない場合、アプライアンスは、ｃｍｄ［ＳＴＯＰＡＣＣ］を用いてＡＣＣ１２を休止モードに移行することによって終了することができる。
【０３１８】
ＲＥＱＲＥＳＰに関するいくつかの付加的なコメントが留意され得る。第１に、応答に対する明示的な要求の理由は、アプライアンス１８とＡＣＣ１２とを同期化して保つことであるが、それはまた、ＡＣＣ１２が応答するのを待つ代わりに、テスター１６が並行して他のタスクを実施することを可能にし得る。コマンドがＡＣＣ１２からのある種の応答を必要とする場合、アプライアンス１８は、次のコマンドを発行する前にｃｍｄ［ＲＥＱＲＥＳＰ］を発行し、さもなければ、応答は送信されず、破棄される。間に有効なコマンドを伴わずに、アプライアンス１８が２つのｃｍｄ［ＲＥＱＲＥＳＰ］を連続して発行する場合には、このシーケンスをプロトコル違反と見なすことができる。ＡＣＣ１２の実際の挙動は、それを第２のＲＥＱＲＥＳＰが破棄されたように見せる。トランザクションループを閉じるために、あらゆるコマンドがｃｍｄ［ＲＥＱＲＥＳＰ］に続くことが推奨されるが、アプライアンス１８が状態または返信データに関与しなければ、プロトコルは、ｃｍｄ［ＲＥＱＲＥＳＰ］を省略することを可能にする。ＡＣＣ１２は常に、ｃｍｄ［ＲＥＱＲＥＳＰ］なしで伝送することなく、何らかの時点で要求されることを仮定して、完全な応答を準備するべきである。
【０３１９】
いったんｃｍｄ［ＲＥＱＲＥＳＰ］が発行され、Ｓｔａｒｔ−ｏｆ−Ｐａｙｌｏａｄが送信されると、アプライアンス１８は、応答全体を読み出すことを確認する必要がある。全ての応答が読み出される前に、別のコマンドを発行しなくてもよく、さもなければ、システム１０が無期限にハングアップする場合がある。何らかの理由で、予期される待機時間が満了した後に、アプライアンス１８がＳｔａｒｔ−ｏｆ−Ｐａｙｌｏａｄを得ない場合は、何かに異常があり、未知の理由でＡＣＣ１２が何らかの未知の状態に陥っているという指示であり得る。それが起こると、そのようなエラーから回復しようとするときに試行すべき最も安全なことは、ＡＣＣ１２をリセットするようにＳＴＡＲＴＡＣＣコマンドを発行することによるものである。しかし、リセットは、全ての起こり得る（予測可能な）故障から回復する保証された方法ではない場合がある。
【０３２０】
図６２は、初期化および識別シーケンスを図示する。初期化シーケンスは、新たに製造されたＡＣＣ１２が、どのようにして試験状態８０から初期化状態８２を介して機能状態８４にされるかを説明する。初期化シーケンスは、製造過程中のいつのときかに、図５１に示されるように、アプライアンス（ＡＰＰｊ）１８とテスター１６上のエージェント２０とＡＣＣ１２との間で実行されるべきである。初期化シーケンスの終わりに、ＡＣＣ１２は、特定のＳｏＣダイを識別するために使用される統計的に一意のＩＤを生成しており、ＦＣＴ５０を処理する準備ができている。
【０３２１】
「サーバ」側で、アプライアンス１８は、初期化イベントを記録し、初期化シーケンスの結果として得られた情報を、バックエンドインフラストラクチャ１１の中のデータベースに中継するべきである。部品番号、ロット番号、ウエハＩＤ、時間、エージェントのＩＤ、場所、操作者ＩＤ等の情報は、参照としてＡＣＣのＵＩＤを使用して、業者が各個別ＳｏＣダイの履歴を追跡することを可能にする貴重な情報である。
【０３２２】
最初に、１組の前提条件が考慮されるべきである。新たに製造されたＡＣＣｉは、電源を入れられ、テスター１６またはデバイスプログラマ２６を介してＡＰＰｊエージェント２０に接続される。ＡＣＣｉは、依然として試験状態８０となる。ＡＣＣ１２が試験状態８０ではない場合は、以前に初期化されていることを意味する。ＡＣＣ１２が初期化状態８２である場合、図６２に示された手順は、３）に飛ぶ。ＡＣＣ１２が機能状態８４である場合、図６２に示された手順は、６）に飛ぶ。ＡＣＣ１２がロック状態８６である場合は、ＡＣＣ１２は、ロック状態８６のままであり、節電モードになり、応答が要求されるとロック（ＬＯＣＫＥＤ）状態に戻る。
【０３２３】
あるＤＦＴまたはデバッグ特徴が有効にされるか無効にされるかを制御するために、１組の特徴プロビジョニングビットが使用され得、そのようなビットは用途に特有となる。
【０３２４】
別の前提条件として、ＡＰＰｊは、通信プロトコルのどのバージョンを使用するべきかを見出すために、ハードウェアバージョン番号およびファームウェアバージョン番号から成る、ＡＣＣｉのバージョンＩＤ（ＶＥＲＩＤｉ）を取得するべきである。これがまだ行われていない場合、ＶＥＲＩＤを取得するために、ｃｍｄ［ＶＥＲＩＤ］がＡＣＣｉに送信され得る。これは、ＡＰＰｊが、ＡＣＣｉの異なる世代または進歩の間のわずかなプロトコル変動に対処することを可能にする。
【０３２５】
ＡＰＰｊはまた、利用可能な全てのＤＦＴ試験に合格していることを確認することによって、ＡＣＣｉが健全で機能的であるという確信を持ち得る。
【０３２６】
最後に、前提条件は、ＡＣＣｉには、スキャンおよびメモリＢＩＳＴ等の欠陥試験から動作に影響を及ぼす場合がある、いずれの残留アーチファクトがないことであり得る。ＤＦＴ特徴は、これを可能にするように慎重に設計される必要がある。
【０３２７】
ここで、図６２に示された手順を説明する。最初に、ＡＣＣｉは、電源を入れ、ハードリセットから起動しており、依然として試験状態８０であることを検出する。ＡＣＣ１２が依然として試験状態８０である限り、ファームウェアは、全てのＤＦＴ特徴が有効であることを確実にする。ＡＣＣｉは、前）において、あらゆるＤＦＴ試験を実施し、そのライフサイクルの後期に、安全なデータを保護する能力に影響することなく、複数のハード再起動サイクルを受けることが可能であるべきである。
【０３２８】
何らかの時点で、ＡＰＰｊは、１）において、ｃｍｄ［ＥＸＩＴＴＥＳＴ］を発行し、基本的な１組の試験が成功して終了し、ＡＣＣ１がいくつかのＤＦＴ特徴を無効にし始めるべきであることを信号伝達する。ＡＣＣｉは、［ＥＸＩＴＴＥＳＴ］を受けると、２）において、ａ）０をＦＥＡＴレジスタに書き込んでＤＦＴ特徴を無効にし、ｂ）ＮＶＭ６２の中のライフサイクル状態を初期化状態８２へと変更して、ソフトリセットを発行する。
【０３２９】
起動時に、ＡＣＣｉは、３）において、ａ）ＨＷフラグを見ることによってソフトリセットにより起動していること、ｂ）ＮＶＭ６２に記憶された状態を読み出すことによって、初期化状態８２であること、ならびにｃ）ａ）およびｂ）の両方が真であるのはこれが最初であることを見出すべきである。次いで、ＡＣＣ１２は、このＡＣＣ１２が試験状態８０を終了したことを示すために、ＮＶＭ６２にＥｘｉｔ  Ｔｅｓｔマーカーを書き込み、続いて、その通常の初期化状態８２のタスクを実施する（以下の４）参照）。次にＡＣＣｉが再起動すると、ａ）およびｂ）が真であるが、Ｅｘｉｔ  Ｔｅｓｔがすでに設定されている場合には、初期化が失敗し、デバイスが現在は信頼できないことを意味する。その場合、ＡＣＣｉは、即時にロック状態８６に移行する。
【０３３０】
初期化状態８２である間、ＡＣＣｉは、以降で論議されるＥＣキー生成関数に従って、４）において静的ＥＣＣキー（ｄｓｉ，Ｑｓｉ）を生成しようとする。キー生成が失敗した場合、ＡＣＣ１２は、ロックアウト状態８６に直接移行する。キー生成が成功した場合、ＡＣＣ１２は、（ＳＵＣＣＥＳＳ｜｜ＵＩＤ）を有する成功応答ペイロードを作成する。次いで、ＡＣＣｉは、次の再起動がＡＣＣ１２を機能状態８４において始動させるように、ＮＶＭ６２の中のライフサイクル状態を更新する。次いで、ＡＣＣ１２は、付加的なコマンドを処理することを待ち、休止状態になるべきではない。
【０３３１】
ＡＰＰｊが、この時点でｃｍｄ［ＲＥＱＲＥＳＰ］を随意に発行する場合、応答は、（ＬＯＣＫＥＤ）または（ＳＵＣＣＥＳＳ｜｜ＵＩＤ）となる。ＡＰＰｊは、典型的には、それが初期化した全てのチップのＵＩＤを収集し、５ａ）において、それらが有効な公開キーであり、ダイを追跡し、カタログに入れることを促進することに有用であると見なされる他の情報とともに、それらをバックエンドデータベースに転送する。５ｂ）では、バックエンド１１は、ＵＩＤを保存し、使用されたアプライアンス１８のＩＤを保存し、デバイス生産カウントを増分し得る。
【０３３２】
ｃｍｄ［ＳＴＡＲＴＡＣＣ］は、６）において典型的な初期化シーケンスで発行される次のコマンドである。代替として、ＡＣＣ１２は、この時点で複数回、電源を切って入れ直され得、挙動は同じであることが予期できる。ＡＣＣｉは、リセットから脱し、その起動シーケンスを実行し、機能状態８４になり得る。機能状態８４においては、ＡＣＣｉは常に、以降で論議されるＥＣキー生成関数に従って、一過性のキー（ｄｅｉ，Ｑｅｉ）を自動的に生成し始めるべきである。キー生成が成功した場合、応答は、（ＳＵＣＣＥＳＳ｜｜Ｑｓｉ｜｜Ｑｅｉ）となり、そうでなければ、応答は単に（ＦＡＩＬＵＲＥ）または（ＬＯＣＫＥＤ）となる。
【０３３３】
その一方で、テスター１６は、一過性のキーが生成されることを待ちながら、他のタスクを実施し始めるオプションを有する。テスター１６は、一過性のキーを取り出す準備ができているときに、７）においてｃｍｄ［ＲＥＱＲＥＳＰ］を発行し、ＡＣＣｉからの応答を待つ。
【０３３４】
ＡＣＣｉは、応答の準備ができ、ｃｍｄ［ＲＥＱＲＥＳＰ］を受けると、８）において、応答ペイロードが続く、Ｓｔａｒｔ−ｏｆ−ＰａｙｌｏａｄマーカーをＡＰＬｊに返送する。
【０３３５】
次いで、ＡＰＰｊは、９）において、応答から情報を抽出し、それに応じて処理することが想定される。返信状態がＦＡＩＬである場合、またはアプライアンス１８が受信されたデータを処理することができない場合、ＡＰＰｊは、ＡＣＣｉをロックアウトするようにｃｍｄ［ＬＯＣＫＯＵＴ］を発行するオプションを有する。次いで、初期化過程は、後動作を実施し得る。アプライアンス１８／エージェント２０／テスター１６は、付加的なコマンドを発行するか、または切断してもよく、ＡＣＣ１２は、機能状態８４においてそのような他のコマンドを処理し得る。
【０３３６】
初期化プロトコルに関するいくつかの付加的な特徴が留意され得る。第１に、テスター時間が非常に高価であるため、初期化過程全体を非常に迅速に完了されるように簡素化することができる。アプライアンス１８がＡＣＣのＵＩＤを有するとすぐに、アプライアンス１８は、ＡＣＣ１２にその電源を切るルーチンを実行させて、休止状態（低電力）モードにさせるために、ｃｍｄ［ＳＴＯＰＡＣＣ］を発行することができる。ＡＣＣ１２は、ｃｍｄ［ＳＴＯＰＡＣＣ］を受けると、そのスクラッチメモリから全ての機密データを明示的に上書きして、可能な限り秘密データを暴露することを防止するべきである。しかしながら、デバイスがホットプラグされなかった場合、ＡＣＣ１２は、ＳＲＡＭの中の秘密をきれいに消去し、適正にシャットダウンできなくなることを理解することができる。
【０３３７】
いったん初期化シーケンスが完了すると、ＡＣＣ１２は、後になって、おそらく、包装等の製品製造ラインのさらに先で、ボード組立中に、またはデバイスが完全に組み立てられ、最終顧客によって最終小売場所で起動された後でさえも、異なるエージェント２０を介してアプライアンス１８に再接続することができる。ＵＩＤは、この実施例では２８３ビット数である、Ｑｓｉのｘ座標と定義される。分野外の重複ＵＩＤを伴うチップを検出するために、チップのＵＩＤは、都合が付き次第登録されるべきであることが留意され得る。
【０３３８】
ここで図６３を参照すると、キー合意を使用して安全な通信セッションを確立するためのプロトコルが図示されている。本実施例では、この時点まで、ここまで説明されているアプライアンス１８とＡＣＣ１２との間の試験および初期化コマンドは、「暗号化されていない文章で」送信される。安全な通信を開始するための、２つの当事者は、キー合意プロトコルに関与する必要があり、そうするためにｃｍｄ［ＩＮＩＴＦＣＴ］を使用することができる。
【０３３９】
ｃｍｄ［ＩＮＩＴＦＣＴ］は、２つの部分に分けられ、第１の部分は、新しいキーセッションのための共有秘密を導出するためにＡＣＣ１２によって必要とされる全ての必要情報を有し、第２の部分は、処理される必要がある第１のＦＣＴ５０を含む。図６３のプロトコルについては、いくつかの前提条件が存在し得る。第１に、初期化されたＡＣＣｉは、すでにその静的および一過性キー（ｄｓｉ，Ｑｓｉ）、（ｄｅｉ，Ｑｅｉ）を生成している。また、ＡＰＰｊは、Ｑｓｉ，Ｑｅｉを受信し、正当性を立証しており、ＱｓｉからＵＩＤｉを抽出することができる。これらの最初の２つの前提条件が満たされていない場合、図６２に示された初期化シーケンスが実行され得る。アプライアンス１８は、その静的キーペア（ｄｓｊ，Ｑｓｉ）と、ルートＣＡによって署名される証明書ＣＥＲＴ［ＡＰＰｊ］とを有する。また、ＡＰＰｊは、ＡＣＣｉと通信する必要があるという何らかの指示を有する。これは、出荷前にいくつかのデフォルト特徴を事前設定したい製造業者となり得るか、またはデバイス上の新しい特徴が有効にされることを要求する顧客となり得る。別の前提条件は、ＡＣＣｉが、そのＲＯＭ６０の中のルートＣＡの公開キーＱｃａによって事前にプログラムされていることである。随意で、ＡＣＣｉは、そのＲＯＭ６０の中の顧客ＩＤ（ＣＩＤ）によって事前にプログラムされる。ＡＣＣｉは、最後に再起動された後に、別のｃｍｄ［ＩＮＩＴＦＣＴ］を受信していない。もし受信した場合は、プロトコルエラーと見なされる。最後に、前提条件は、ＡＣＣｉは新しいコマンドを処理する準備ができていることである。これは、ＡＣＣｉが機能状態８４にあり、休止状態モードではなく、全ての以前のタスクを完了しており、現在待機していることを意味する。
【０３４０】
出力は、状態ＦＡＩＬ、または状態ＳＵＣＣＥＳＳおよびＡＣＣｉの一過性の公開キーＱｅｉとなる。種々の副作用が発生し得ることが留意され得る。ＡＣＣｉのメッセージカウンタ番号ｍｓｇＩＤは、ゼロにリセットされ得、両方の当事者は、相互から独立して、共有セッションキーｋｉｊを生成した可能性がある。
【０３４１】
図６３に示された手順は、以下のように進む。アプライアンス１８は、１）において、このセッションのための一過性のキー（ｄｅｊ，Ｑｅｊ）を生成する。次いで、アプライアンス１８は、（Ｑｅｊ｜｜ＣＥＲＴｊ｜｜ＥＭ＿ｌｅｎ｜｜ＥＭｎｉｊ）である要求データを用いて、２）においてｃｍｄ［ＩＮＩＴＦＣＴ］を発行する。ＡＣＣ１２は、コマンドを受信し、３）において、それぞれ、証明書および公開キー、ＥＣＤＳＡ＿ＶＥＲＩＦＹ（ＣＥＲＴＪ，Ｑｃａ）およびｐｕｂｌｉｃ＿ｋｅｙ＿ｖａｌｉｄａｔｉｏｎ（Ｑｅｊ）の正当性を立証する。次いで、ＡＣＣ１２は、ＣＥＲＴ［ＡＰＰｊ］からＱｓｊを抽出する。プロトコルが顧客ＩＤ（ＣＩＤ）の合致を必要とする場合、ＣＥＲＴの中のＣＩＤフィールドは、ＡＣＣ１２に記憶されたＣＩＤに対して合致する必要がある。
【０３４２】
次いで、ＡＣＣ１２は、４ａ）において、ＥＣＭＱＶｗＫＤＦ（ｄｓｉ，ｄｅｉ，Ｑｓｊ，Ｑｅｊ）を用いて共有セッションキーｋｉｊを計算する。３）および４ａ）が成功した場合、ＡＣＣ１２は、引き続き、４ｂ）において、復号を処理し、残りのペイロードの中のＦＣＴ５０を認証する。そうでなければ、ＡＣＣ１２は、ここで停止し、ＦＡＩＬＵＲＥ応答を準備し得る。応答がＦＡＩＬである場合、アプライアンス１８は、シーケンスを再開するか、またはｃｍｄ［ＬＯＣＫＯＵＴ］を発行することができる。アプライアンス１８は、随意で、データベースにエラーを記録することができる。
【０３４３】
いくつかの付加的な特徴が留意され得る。第１に、全てが成功した場合、このシーケンスの終わりに計算された共有セッションキーｋｉｊは、承認されたアプライアンス１８を特定のＡＣＣ１２にリンクする対称キー暗号を使用して、暗号化トンネルの基礎を形成する。ｋｉｊは２つの承認された当事者のみに知られているので、任意の他のＡＣＣ１２またはアプライアンス１８も、２つの間の通信にこれ以上関与することはできない。このシーケンスは、ハードリセットまたはｃｍｄ［ＳＴＡＲＴＡＣＣ］を使用することによって、再起動せずに繰り返され得る。何回ＡＣＣ１２を再起動することができるかに関して、限度が存在するべきではないが、ＡＣＣ１２が再起動するために、新しい一過性のキーが再生成される必要があり、これには、数１００ミリ秒の範囲の顕著な時間量がかかり得る。ＡＣＣ１２が、キー交換プロトコルの任意のステップ中にエラーまたは失敗に遭遇した場合、上記で説明されるように、エラーハンドラサブルーチンを呼び出すべきである。
【０３４４】
ステップ３では、ＡＣＣ１２は、ＡＣＣ１２がそのＲＯＭ６０の中に有するルートＣＡの公開キーのコピーを使用して、ＣＥＲＴ［ＡＰＰｊ］を検証する。証明書の妥当性確認ステップは、ルートＣＡが、このＡＣＣ１２にコマンドを発行するように、この特定のアプライアンス１８を認証し、適格化していることをＡＣＣ１２に知らせる。これは、信用できないアプライアンス１８がＡＣＣ１２に機密コマンドを発行することを防止するものである。特定の用途がＣＩＤの使用を必要とする場合、証明書は、ＡＣＣのＲＯＭ６０の中のテーブルに記憶されたＣＩＤと合致しなければならないＣＩＤを含む。これは、特定の顧客に割り当てられたアプライアンス１８が、別の顧客のために製造された部品に接続するために使用されることを防止することが意図されている。証明書の中のＣＩＤがＣＩＤテーブルの中に見つからない場合は、エラーとして扱われる。
【０３４５】
図６４は、ここにおいて説明される認証機密メッセージングプロトコルの実施例を図示する。キー合意の実行の成功後、ＡＣＣ１２およびアプライアンス１８は、２つの間の安全なチャネルの基礎を確立し、ＦＣＴ５０の形態で認証された機密メッセージを共有することができる。以下の前提条件が必要とされ得る。第１に、ＡＰＰｊは、その独自の静的非公開キーｄｓｊを有するべきであり、ＵＩＤｉを所有するＡＣＣｉが特徴制御チケットＦＣＴ５０を受信するという、何らかの指示を取得している。第２に、ＡＣＣｉは、ＡＰＰｊの静的公開キーＱｓｊを有するべきであり、ＡＣＣｉは、新しいコマンドを処理する準備が完了しているべきである。これは、ＡＣＣｉが機能状態８４にあり、休止状態モードではなく、その以前のタスクを完了していることを意味する。
【０３４６】
ＡＰＰｊおよびＡＣＣｉは、キー合意プロトコルの結果として生成された共有セッションキーｋｉｊ、およびｃｍｄ［ＩＮＩＴＦＣＴ］で「０」から始まり、各ｃｍｄ［ＦＣＴ］に対して２ずつ増分し（常に奇数）、応答に対して「１」を加えた対応するコマンドからのｍｓｇＩＤに等しい（常に偶数）コマンドシリアルＩＤであるｍｓｇＩＤといった、変数の自身のコピーを有し、２つのコピーは合致するべきである。
【０３４７】
入力は、ＦＣＴ５０であり、出力は、状態ＦＡＩＬまたは状態ＳＵＣＣＥＳＳ、およびＦＣＴ５０によって要求されたあらゆるデータである。１つの副作用は、ＦＣＴ５０の種類に応じて、ＳｏＣ上の特徴が有効／無効になるか、または何らかのデータがＮＶＭ６２からアクセスされることである。別の副作用は、ＡＰＰｊおよびＡＣＣｉの両方が、コマンドシリアルＩＤカウントｍｓｇＩＤのコピーを増分することであり得る。
【０３４８】
図６４に図示された手順は、以下のように要約され得る。
【０３４９】
１．ＡＰＰｊがＩＮＩＴＦＣＴまたはＦＣＴペイロードを構築する。
【０３５０】
２．ＡＰＰｊがｃｍｄ［ＩＮＩＴＦＣＴ］またはｃｍｄ［ＦＣＴ］を発行し、要求されたデータペイロードを送信する。
【０３５１】
３．ＡＣＣｉが、ＥＣＤＳＡ署名検証を使用して、メッセージの真正性を検証する。
【０３５２】
４．ＡＣＣｉが、メッセージを復号してＦＣＴ５０を取得する。
【０３５３】
５．全てが正しく検証された場合、ＡＣＣｉが、ＦＣＴ５０によって要求される動作を実施し、ＦＣＴ５０応答メッセージを作成する。
【０３５４】
６．ＡＰＰｊが、何らかの時点でｃｍｄ［ＲＥＱＲＥＳＰ］を発行する。
【０３５５】
７．ＡＣＣｉが、ステップ５を完了したとき、およびｃｍｄ［ＲＥＱＲＥＳＰ］を受信した後に、作成された応答を送信する。
【０３５６】
８．ＡＰＰｊが応答を受信し、次いで、応答を復号し、検証する。アプライアンス１８がより多くのコマンドを送信することを必要とするか、または同じコマンドを再送信しようとする場合、コマンドシリアル番号が増分される限り、キー合意プロトコルを再実行することなく、その様にし得る（すなわち、別のｃｍｄ［ＩＮＩＴＩＡＬＦＣＴ］が送信されるべきではない）。
【０３５７】
次いで、ＡＰＰｊは、この処理の結果とともに、ログ記録をバックエンド１１に折り返し報告することによって終了する。
【０３５８】
種々のエラー条件が留意され得る。第１に、ＡＣＣｉが、キー交換プロトコルの任意のステップ中にエラーまたは失敗に遭遇した場合、エラーハンドラサブルーチンを呼び出すべきである（図５９参照）。ステップ８については、ＡＰＰｊがＦＡＩＬ応答を受信した場合、ＡＰＰｊは、シーケンスを再試行するか、またはｃｍｄ［ＬＯＣＫＯＵＴ］を発行することができる。アプライアンス１８は、随意で、データベースにエラーを記録することができる。
【０３５９】
このプロトコルに関するいくつかの付加的な特徴も留意され得る。第１に、コマンドシリアルＩＤ、ｍｓｇＩＤは、「０」で始まり、このセッションにおけるｃｍｄ［ＦＣＴ］ごとに２ずつ増分する。それは、キー合意プロトコルの結果として、新しいセッションの初めに「０」にリセットして戻る。しかしながら、ｃｍｄ［ＦＣＴ］への応答については、ｍｓｇＩＤは、「１」を加えた対応するコマンドにおけるｍｓｇＩＤに等しい。このＩＤの使用は、同一のコマンドおよび応答が再生型の攻撃において再利用されることを防止する。例えば、敵対者が、いくつかの特徴を有効にするために支払いをし、次いで、ＦＣＴ５０メッセージを捕捉し、特徴を無効にして返金を得ることを即時に求め、結局、身を翻して逃げて有効ＦＣＴ５０を再生する結果になることを想像されたい。代替として、敵対者が、最初に、アプライアンス１８に、ＦＡＩＬ応答を生成するように無効なコマンドを強制的に発行させ、次いで、有効化ＦＣＴ５０を発行されるように求める。コマンドが適正に処理されたかどうかＡＣＣ１２が尋ねられると、敵対者は、成功応答を記録されたＦＡＩＬ応答と置換し、それにより、うまく有効化を完了させていないふりをすることができる。
【０３６０】
ＵＩＤｉは、コマンドおよび応答を１つのＡＣＣ１２に結合し、敵対者が別のＡＣＣ１２上でこのメッセージを再生できることを防止する。キーペアｄｓｊとＱｓｊとは、セッションキーｋｉｊを作成した共有キー合意セッションに関与した特定のアプライアンス１８を一意的に識別する。それらが署名過程で使用されると、メッセージの発信者を積極的に識別するためにそれを使用することができる。さらに、キー合意プロトコル中にルートＣＡによって証明されるＣＥＲＴ［ＡＰＰｊ］の使用を介して、ＡＣＣ１２は、このアプライアンス１８がＦＣＴ５０を発行することを許可されていることを保証している。
【０３６１】
２つの起こり得る用途のシナリオがあることが留意され得る。ｉ）デバイスがすでに小売空間に到着している場合、ＦＣＴ５０メッセージは、使用毎に、ＡＣＣ１２毎にバックエンド１１によって作成される。ｉｉ）ＦＣＴ５０は、バックエンド１１がアプライアンス１８をバッチ構成するものとなり得、それは次いで、それが遭遇するＡＣＣ組み込みダイのバッチ全体に該当する。どのようにＦＣＴ５０が使用されるかに応じて、ステップ１）を実施するときに行うことができる何らかのサーバ側の最適化があり得る。
【０３６２】
（根本的な暗号アルゴリズムの考察）
ここで、本明細書で使用される根本的な暗号アルゴリズムの考察を提供する。上記のように、ＥＣ演算が有利に利用される。ＥＣＣは、任意の公開キー暗号スキームのビット毎の最大セキュリティを提供することが、広く行き渡っている。加えて、それは、極めて効率的にハードウェアに実装することができ、シリコン面積に関して非常に小型のコアにつながる。システム１０によって利用されるＥＣＣパラメータは、この実施例では、Ｓｔａｎｄａｒｄｓ  ｆｏｒ  Ｅｆｆｉｃｉｅｎｔ  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｇｒｏｕｐ（ＳＥＧＣ）によって推奨される、ｓｅｃｔ２８３ｋｌ  Ｆ２２８３  Ｋｏｂｌｉｔｚ曲線に従って設定される。この曲線は、１２８ビット強度と同等である全体的な強度を促進するように選択される。このレベルのセキュリティが特定の用途において必要とされない場合、フィールドパラメータは、より小さい数字を使用するように低減され得る。
【０３６３】
ＡＣＣ１２において使用されるように選択されるブロック暗号関数は、この実施例では、ＡＥＳ対称キーブロック暗号である。ＡＥＳ仕様について［ＦＩＰＳ  １９７］、ならびにＣＴＲおよびＣＣＭブロック暗号モードの定義について［ＳＰ８００−３８Ａ］および［ＳＰ８００−３８Ｃ］を参照することによって、さらなる詳細を見出すことができる。ＡＥＳのパラメータは、ＡＣＣ１２においてどこで使用されようと、１２８ビットキー、入力としての１２８ビットのデータのブロック、および出力としての１２８ビットのビットストリームのブロックとなる。入力データストリームが１２８ビットブロックに収まらない場合、１２８ビットを一度に中断することができる。
【０３６４】
ＡＣＣ１２のコンテキストにおいて、ブロック暗号は、ａ）ＲＮＧリング発振器から取得されるランダムビットを調節して、非公開キーとして使用されるランダム列を生成する、ｂ）ＥＣＭＱＶにおいて共有キーを生成するときに、キー導出関数（ＫＤＦ）でハッシュ関数を使用する、ｃ）ＦＣＴ５０署名の真正性を検証するときにハッシュ関数を使用する、ｄ）カウンターモードでＦＣＴ５０を復号する、およびｅ）ＦＣＴ５０への応答のメッセージ認証を暗号化し、提供するといった、いくつかの異なる方法で使用され得る。
【０３６５】
ＡＥＳ  ＣＣＭ＊モードは、ＦＣＴ５０コマンドへの応答に対する認証および暗号化を提供するために使用され得る。［ＳＰ８００−３８Ｃ］で説明されるようなＣＣＭモードは、本質的に、［ＳＰ８００−３８Ｃ］の付属書Ａにおいて説明されるような、何らかの付加的な書式設定および変換を伴ってともに組み合わせられるカウンタ（ＣＴＲ）およびＣＢＣ−ＭＡＣモードといった、［ＳＰ８００−３８Ａ］において定義される２つのＡＥＳモードである。この実施形態でのＡＣＣ１２は、Ｚｉｇｂｅｅ（登録商標）で説明されるように、ＣＣＭモードの他の現実の実装に準拠する付加的な書式設定および変換を伴うＣＣＭモード
であるＣＣＭ＊を実装する。
【０３６６】
この実施形態でのＡＥＳ  ＣＣＭ＊への入力は、以下の通りである。
【０３６７】
ａ）１２８ビットセッションキー、ｋ。
【０３６８】
ｂ）同じキーを使用する各メッセージに特有の８バイトノンス。ノンスは、その後の４つのゼロと連結される最初の４バイトにおいて、メッセージカウンタｍｓｇＩＤによって初期化される。
【０３６９】
ｃ）入力ペイロードデータｘ＝（ｘ０，ｘ１…，ｘｎ−１）。
【０３７０】
出力は、暗号化されたＭＡＣであるＣｎがその後に続く、暗号テキストＣ０｜｜Ｃ１｜｜．．．｜｜Ｃｎ−１である。暗号化されたＭＡＣまたは［ＳＰ８００−３８Ｃ］において参照されるようなタグは、１２８ビットの長さに固定される。ＣＣＭ＊仕様は、暗号化をオフにするオプションを可能にするが、ＡＣＣ１２は、常に暗号化するように構成されるべきである。仕様はまた、この実施形態では使用されないように選択される、随意的な「関連データ」入力も可能にする。そのようなものとして、関連データ列は常に、「０」の長さを有する。
【０３７１】
ここで図６５を参照すると、ＡＥＳ−１２８ブロック暗号に基づいて、この実施例ではＡＣＣ１２に配備されるハッシュスキームであるＭａｔｙａｓ−Ｍｅｙｅｒ−Ｏｓｅａｓ修正検出コード（ＭＭＯ＿ＭＤＣ）関数が示されている。入力は、入力ビットストリームｘを備え、出力は、ハッシュダイジェストである。「０」という一定値が、初期ベクトルとして使用される（ｈａｓｈ０）。入力ビットストリームの各ブロック「ｉ」について、暗号キーとしての以前のブロックのハッシュ値とともに、ビットストリームテキストＸｉが、ＡＥＳへの入力として送信される。ＡＥＳブロックの出力は、ハッシュ結果ｈａｓｈｉを形成するように、入力ｘとともにＸＯＲを受ける。これは、メッセージ全体が処理されるまで繰り返される。メッセージ全体を送信した後、最終ハッシュ値が、ダイジェストとして出力される。
【０３７２】
上記で論議されるように、この実施形態でのＡＣＣ１２は、発振器サンプル間に位相ジッターがあるという事実に依存するエントロピーのオンチップリング発振器源を有する。ＡＣＣファームウェアは、リング発振器ハードウェアから発振器出力データ値を収集し、調節のためにＡＥＳブロック暗号を使用する。ＡＣＣ  ＲＮＧハードウェア５８は、ＲＮＧハードウェア５８から読み出される各ビットに対する少なくとも１／２ビットのエントロピーを提供する。この実施例でのＡＣＣ１２は、以下のように、ＮＩＳＴ  ＳＰ８００−９０に従う。
【０３７３】
１）Ｕｐｄａｔｅ（  ）関数が、１０．２．１．２（ＮＩＳＴ  ＳＰ８００−９０）に従って定義される。
【０３７４】
２）ＡＣＣ  ＨＷ  ＲＮＧ  ５８（  ３）において使用されるｅｎｔｒｏｐｙ＿ｉｎｐｕｔ）から、少なくとも１２８ビットのエントロピーを含む、２５６ビットを取得する。
【０３７５】
３）ＣＴＲ＿ＤＲＢＧインスタンス化のための１０．２．１．３．１（ＮＩＳＴ  ＳＰ８００−９０）（「Ｔｈｅ  Ｐｒｏｃｅｓｓ  Ｓｔｅｐｓ  ｆｏｒ  Ｉｎｓｔａｎｔｉａｔｉｏｎ  Ｗｈｅｎ  Ｆｕｌｌ  Ｅｎｔｒｏｐｙ  ｉｓ  Ａｖａｉｌａｂｌｅ  ｆｏｒ  ｔｈｅ  Ｅｎｔｒｏｐｙ  Ｉｎｐｕｔ，ａｎｄ  ａ  Ｄｅｒｉｖａｔｉｏｎ  Ｆｕｎｃｔｉｏｎ  ｉｓ  Ｎｏｔ  Ｕｓｅｄ」）に従って、その場合、エントロピー入力は、２）からのランダムビットストリームであり、ｐｅｒｓｏｎａｌｉｚａｔｉｏｎ＿ｓｔｒｉｎｇは空値であり、Ｕｐｄａｔｅ（  ）関数は１）で特定される。このステップ中のＵｐｄａｔｅ（  ）の内側の以下の値、Ｂｌｏｃｋ＿Ｅｎｃｒｙｐｔ（Ｋｅｙ＝０，ＩＶ＝１）およびＢｌｏｃｋ＿Ｅｎｃｒｙｐｔ（Ｋｅｙ＝０，ＩＶ＝２）を、スピードアップのために事前計算できることが留意されたい。
【０３７６】
４）「完全」エントロピーが、３）において入力として使用されないため、１バイトのランダムデータ（  ５）参照）を生成し、それを破棄することによって、インスタンス化を終了する。
【０３７７】
５）１０．２．１．５．１（ＮＩＳＴ  ＳＰ８００−９０）（「Ｔｈｅ  Ｐｒｏｃｅｓｓ  Ｓｔｅｐｓ  ｆｏｒ  Ｇｅｎｅｒａｔｉｎｇ  Ｐｓｅｕｄｏｒａｎｄｏｍ  Ｂｉｔｓ
Ｗｈｅｎ  ａ  Ｄｅｒｉｖａｔｉｏｎ  Ｆｕｎｃｔｉｏｎ  ｉｓ  Ｎｏｔ  Ｕｓｅｄ  ｆｏｒ  ｔｈｅ  ＤＲＢＧ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ」）の通りに、ＣＴＲＤ＿ＲＢＧ＿Ｇｅｎｅｒａｔｅ＿ａｌｇｏｒｉｔｈｍ（  ）を定義する。
【０３７８】
手順は、以下のように要約され得る。ファームウェアは、ＲＮＧ５８がデータを捕捉し始めることを可能にする。ＲＮＧハードウェア５８は、ＡＣＣのシステムクロックに関して自己較正を実施し、サンプリングとリング発振器出力との間で、いくつのシステムクロックサイクルが必要とされるかを決定する。ハードウェアは、サンプル期間毎に１エントロピービットを捕捉し、Ｒｅａｄｙフラグをアサートすることによって、８エントロピービットを有するときにファームウェアに通知する。ファームウェアは、ＲＮＧＲｅａｄｙフラグについてＲＮＧ５８にポーリングし、８ビットを読み出す。ファームウェアは、ＡＣＣのＲＮＧ５８から２５６ビットを取得するまで、これを繰り返す。その一方で、ファームウェアは、ＲｎｇＥｒｒｏｒフラグをチェックすることによって、ＲＮＧハードウェア５８が健全であることを継続的に検証する。次いで、１０．２．１．５．１（ＮＩＳＴ
ＳＰ８００−９０）の通りのＴＲ＿ＤＲＢＧ＿Ｇｅｎｅｒａｔｅ＿ａｌｇｏｒｉｔｈｍ（  ）が、上記で記載されるパラメータで実行される。
【０３７９】
楕円曲線キー生成は、どのようにキーペアが乱数ストリームから作成されるかを示し得る。必須条件は、以前に合意したＥＣ曲線パラメータが選択されていることである。入力は、ランダムビットストリームであり、出力は、ＳＵＣＣＥＳＳおよびキーペア（ｄ，Ｑ）、またはＦＡＩＬである。１）上記で説明される乱数発生を実施することによって２８３ビットのビットストリームを構築し、非公開キーｄを形成する。２）ｄ＝＝０であれば、ステップ１）を繰り返す。３）ＥＣパラメータの生成点とのＥＣ点乗算を実施して、公開キーＱ＝ｄ×Ｇを作成する。４）ＱがＥＣ上の有効な点でなければ、ステップ１）を繰り返す。５）このキーペアが静的キーとして使用される場合、ＮＶＭ６２に（ｄｓｉ，Ｑｓｉ）を記憶する。６）過程の任意のステップ中にエラーが発生した場合、ＦＡＩＬを返信し、そうでなければ、成功およびキーペア（ｄ，Ｑ）を返信する。
【０３８０】
ＥＣＭＱＶ―キー合意の目標は、２つの当事者が、バルクデータ暗号化のための対称キーとして使用することができる共有秘密を独立して導出することである。これは、各当事者が、１つの静的キーおよび１つの一過性のキーといった２組のキーを使用することを要求し、各キーペアは、秘密非公開キーと、公開キーとを備える。本実施形態では、２パスＥＣＭＱＶプロトコルの変化例が利用され、明示的なキー確認ステップを省略する。メッセージを適正に復号できないときは、キーを暗黙的に確認できないことが認識されており、すなわち、ＦＣＴ５０メッセージの検証がうまくいかず失敗し始めたときに、キーが合致しないかどうかが分かる。
【０３８１】
キー導出関数（ＫＤＦ）は、共有秘密ビット列からキーを導出するために使用される。この実施例との関連で、共有キーは、ＫＤＦとしてＭＭＯハッシュ技法を使用し得る。入力は、共有秘密値ｘとしての２８３ビット列であり、出力は、共有キーｋとしての１２８ビット列である。ｋ＝ＭＭＯ＿ＭＤＣ（ｘ）である。
【０３８２】
関連値関数（ＡＶＦ）は、ＡＮＳＩ  Ｘ９．６３  ＥＣＭＱＶ  ＡＶＦに従って、楕円曲線点のｘ座標を切り捨てるために使用される。ｘ座標の上位半分が切り捨てられ、次いで、全て０を取得することを回避するために、最上位半分の最低ビットが強制的に「１」にされる。
【０３８３】
公開キーの妥当性確認ステップは、公開キーが生成され、適正に受信されたことを検証するものである。キーの妥当性確認ステップは、それが有効なキーのいくつかの基本特性を満たすかどうかを確かめる。入力は、ＥＣドメインパラメータ、および公開キー候補Ｑである。出力は、ＡＣＣＥＰＴまたはＲＥＪＥＣＴである。１）Ｑ！＝０であることを検証する。２）ｘＱおよびｙＱが基礎フィールドＦの要素であることを検証する。３）ＱがＥＣドメインパラメータによって定義されるＥＣ方程式を満たすことを検証する。４）４＊Ｑ！＝０であることを検証する。５）上記の全てを満たすならばＡＣＣＥＰＴ、さもないとＲＥＪＥＣＴを返信する。
【０３８４】
ＥＣＭＱＶ共有キー生成は、２つの当事者が共有秘密キーを導出するための方法である。各当事者が共有秘密キーを導出した後に、キー確認を提供する随意の付加的な交換がある。以下は、どのようにして当事者（１）が当事者（２）との共有キーを計算するかを説明する。入力は、ＥＣドメインパラメータ、当事者（１）によって所有される２つの確証されたＥＣ非公開キー（ｄｓ１）および（ｄｅ１）、ならびに当事者（２）によって所有される２つの確証されたＥＣ公開キーＱｓ２およびＱｅ２である。出力は、セッション非公開キーｋ１，２、および状態ＳＵＣＣＥＳＳ｜ＦＡＩＬである。手順は、以下の通りである。１）整数ｓ＝ｄｅ１＋（ａｖｆ（Ｑｅ１）×ｄｓ１）（ｍｏｄ  ｎ）を計算する。２）ＥＣ点Ｚ＝ｈ×ｓ×（Ｑｅ２＋（ａｖｆ（Ｑｅ２）×Ｑｓ２））を計算する。３）Ｚ＝０であるかどうかをチェックし、ＦＡＩＬを出力して停止する。４）ｘｚをＺのｘ座標にし、（ｋ１，２）＝ｋｄｆ（ｘｚ）を計算する。キー生成の後には、両方の当事者が同じｋｉｊに到達したことを確認するように、明示的なキー確認が続くことがあるが、性能の懸念により、省略され得る。キーが同じでなかった場合、メッセージを適正に復号できないという事実に、暗黙的に依存することもできる。
【０３８５】
楕円曲線デジタル署名アルゴリズム（ＥＣＤＳＡ）は、データ完全性、データ認証をチェックする、効率的な方法であり、否認防止を提供する。ＡＣＣ１２は、利用されるハッシュ機構が前述のＭＭＯ＿ＭＤＣである、ＥＣＤＳＡアルゴリズムを使用し得る。
【０３８６】
上記で論議されるように、ＥＣＤＳＡを使用して、ルートＣＡ証明書を署名することができ、アプライアンス１８は、ＥＣＤＳＡを使用して、ＦＣＴに署名することができ、そのようなものとして、ＥＣＤＳＡの概観を提供する。入力は、ＥＣドメインパラメータと、非公開キーｄと、メッセージＭとを備える。出力は、デジタル署名（ｒ，ｓ）である。１）［１，ｎ−１］において乱数ｋを選択する。２）一過性のキーペアＱ＝ｋ×Ｇを生成する。３）Ｑのｘ座標Ｘ１を取り、それを整数ｘ１’＝ｉｎｔ（ｘ１）に変換する。４）ｒ＝ｘ１’ｍｏｄ  ｎを計算する。５）ｅ＝ＭＭＯ＿ＭＤＣ（Ｍ）を計算する。６）ｓ＝（ｋ−１×（ｅ＋ｄ×ｒ））ｍｏｄ  ｎを計算する。７）ｓ＝＝０であれば、次いで、ステップ１に進む。８）（ｒ，ｓ）を返信する。
【０３８７】
ＡＣＣ１２がアプライアンス１８から受信する各メッセージについて、署名を検証して、メッセージが、メッセージを送信していると考えるアプライアンス１８から来ること、およびそれが送信中に改変されていないことを確認する必要がある。これが、署名検証ステップの目的である。入力は、ＥＣドメインパラメータと、公開キーＱと、メッセージＭと、署名（ｒ，ｓ）とを備える。出力は、ＡＣＣＥＰＴまたはＲＥＪＥＣＴである。ＥＣＤＳＡを使用する署名検証は、以下のように進んでもよい。１）ｒおよびｓが間隔［１，ｎ−１］の中の整数であることを検証する。いずれか一方が基準に不合格であれば、ＲＥＪＥＣＴを返信する。２）ｅ＝ＭＭＯ＿ＭＤＣ（Ｍ）を計算する。３）ｗ＝ｓ  ｍｏｄ  ｎを計算する。４）ｕ１＝（ｅ×ｗ）ｍｏｄ  ｎを計算する。５）ｕ２＝（ｒ×ｗ）ｍｏｄ  ｎを計算する。６）（ｘ１，ｙ１）＝（ｕ１×Ｇ）＋（ｕ２×Ｑ）を計算する。７）（Ｘ＝＝０）であれば、次いで、ＲＥＪＥＣＴを返信する。８）ｘ座標ｘ１を取り、それを整数ｘ１’＝ｉｎｔ（ｘ１）に変換する。９）（ｒ＝＝ｘ１’ｍｏｄ  ｎ）であればＡＣＣＥＰＴを返信し、さもないとＲＥＪＥＣＴを返信する。
【０３８８】
（動作のシーケンス例）
ここで図６６ａから６６ｆを参照すると、ＡＣＣ１２においてＦＣＴ５０を準備し、送達し、実装する際のシステム１０の使用を図示する、動作のシーケンス例が提供されている。実施例は、ＡＣＣ１２を使用して、制御された安全な特徴起動を許可することによって、仮想在庫を利用する方法を説明する。
【０３８９】
最初に図６６ａを参照すると、元の製造業者を表し得る、バックエンドインフラストラクチャ１１が、最初に製品を定義し、ＦＣＴ５０を定義し、そのようなＦＣＴ５０を製品に割り当てることが分かる（例えば、図１０Ａおよびコントローラ２２の使用を再び参照）。上記で論議されるように、システム１０は、複数の場所で複数のアプライアンス１８を備え得る。次いで、バックエンド１１は、製品をアプライアンス１８に割り当て、合意または規定された数のその製品を生産するためのクレジット、ならびに製品ＩＤ、およびアプライアンスｊへのＦＣＴ５０を提供する。この時のバックエンド１１は、イベントを記録に取って、どのアプライアンス１８がどの製品と関連づけられるか、いくつのクレジットが提供されたか、ならびにその製品に対するＦＣＴ５０の数および性質を記録し得る。アプライアンス１８は、受信時に、製品ＩＤ、ＦＣＴ５０を記憶し、それが受信したクレジットの数の記録を保持する。
【０３９０】
次いで、エージェント２０は、準備または通信されている製品と関連付けられた製品ＩＤを決定し、ＡＣＣ１２を初期化状態８２に移行するようにコマンドｃｍｄ［ＥＸＩＴＴＥＳＴ］を送信する。ＡＣＣ１２は、移行時に、その静的非公開キーｄｓｉおよび静的公開キーＱｓｉを生成し、機能状態８４に移行する。ここで、ＩＮＩＴＦＣＴまたはＦＣＴコマンドによって定義される完全特徴プロビジョニング動作を表す、アプライアンス１８、エージェント２０、およびＡＣＣ１２の間の一連のトランザクションを含む、第１のループである、ループ１が始まる。この実施例でのループ１は、ＦＣＴ５０を処理するための暗号化されたトンネル２９を開始する単一のＩＮＩＴＦＣＴコマンドに基づく外側ループである。ループ１は、各ＡＣＣ１２について（例えば、生産ラインで）、またはＡＣＣ１２とアプライアンス１８との間のＥＣＭＱＶハンドシェイクで共有秘密を導出することによって安全な２９が確立される必要がある時はいつでも繰り返される。共有秘密の導出は、ＩＮＩＴＦＣＴコマンドを必要とする。ループ１は、ＳＴＡＲＴＡＣＣコマンドをＡＣＣ１２に送信するエージェント２０から始まり、ＡＣＣ１２が機能状態８４に移行すると（ここで図６６ｂに移動する）、ＡＣＣ１２は、一過性の非公開キーｄｅｉおよび一過性の公開キーＱｅｉを生成することができる。
【０３９１】
エージェント２０は、ＡＣＣの公開キーＱｅｉおよびＱｓｉを取得するように、コマンドｃｍｄ［ＲＥＱＲＥＳＰ］をＡＣＣ１２に送信し、ＡＣＣ１２は、エージェント２０を介してそのようなキーをアプライアンス１８に提供することによって応答する。エージェント２０は、イベントを記録に取り、また、ＡＣＣ１２と関連付けられた製品ＩＤおよびその公開キーをアプライアンス１８に提供する。アプライアンス１８は、このイベントを記録に取り、その独自の一過性のキーペアｄｅｊ、Ｑｅｊを生成し、共有キーｋｉｊを生成し、ＦＣＴ１と関連付けられた特徴が、その製品で使用されることを目的とすることを確実にするために製品ＩＤ別にＦＣＴ１を検索する。次いで、アプライアンス１８は、ＶＥＲ、ＣＩＤ、Ｑｓｊ、およびＳＩＧｃｅｒｔｊの組み合わせを使用して、この場合、そのような構成要素を連結させることによって、ＣＥＲＴｊを生成する。次いで、アプライアンス１８のＵＩＤ、ｍｓｇＩＤ、何らかのパッディング、ＦＣＴ１、および静的非公開キーが組み合わせられ（例えば、連結させられ）、署名ＳＩＧｎｉｊを生成するように、ＥＣＤＳＡ＿ＳＩＧＮ関数を使用して署名される。
【０３９２】
ＦＣＴ１、共有キーｋｉｊ、ノンスｎ、およびＳＩＧｎｉｊを使用して、（Ｅｎｉｊ、ＭＡＣｎｉｊ）が、図６６ｂに示されるようなＡＥＳ＿ＣＣＭ＊＿ＥＮＣ関数を使用して生成される。次いで、ＦＣＴ５０が、１つのクレジットの消費を示すように測定され、次いで、一過性の公開キーＱｅｊ、アプライアンスの証明書ＣＥＲＴｊ、暗号化されたメッセージ／ＭＡＣペア（ＥＭｎｉｊ、ＭＡＣｎｉｊ）、およびＥＭ＿ｌｅｎが、エージェント２０を介してＡＣＣ１２に送信される（ここで図６６ｃに移動する）。エージェント２０は、このイベントを記録に取り、また、特徴起動手順を開始するように、コマンドｃｍｄ［ＩＮＩＴＦＣＴ］をＡＣＣ１２に送信する。
【０３９３】
ＡＣＣ１２は、ＣＥＲＴ［ＣＡ］を使用してＣＥＲＴｊを検証することによって始まり、したがって、それが適正なアプライアンス１８と通信していることを検証する。いったんＣＥＲＴｊが検証されると、次いで、ＡＣＣ１２が共有キーｋｉｊを生成する。次いで、ペア（ＥＭｎｉｊ、ＭＡＣｎｉｊ）および共有キーｋｉｊを使用する、ＡＥＳ＿ＣＣＭ＊＿ＤＥＣ関数を使用して、ＦＣＴ１、ＳＩＧｎｉｊ、およびノンスｎが回収される。次いで、ＣＥＲＴｊから取得されたＱｓｊを使用して、署名ＳＩＧｎｉｊが検証され、ノンスｎが検証される。次いで、ＦＣＴ１が実行され得る。次いで、ＦＣＴＲＳＰｎｉ、ノンスｎ、および共有キーｋｉｊを入力として取る、ＡＥＳ＿ＣＣＭ＊＿ＥＮＣ関数を使用して、暗号化された応答ペア（ＥＲｎｉｊ、ＭＡＣｎｉｊ）が生成される。次いで、何らかの時点で、エージェント２０は、コマンドｃｍｄ［ＲＥＱＲＥＳＰ］をＡＣＣ１２に送信し、そこからＡＣＣ１２は、ペア（ＥＲｎｉｊ、ＭＡＣｎｉｊ）を提供することによって応答する。エージェント２０は、イベントを記録に取り、（ＥＲｎｉｊ、ＭＡＣｎｉｊ）をアプライアンス１８に転送する（ここで図６６ｄに移動する）。
【０３９４】
次いで、アプライアンス１８は、ＦＣＴＲＳＰｎｉメッセージおよびノンスｎを取得するように、ＡＥＳ＿ＣＣＭ＊＿ＤＥＣ関数への入力として共有キーｋｉｊを使用して、（ＥＲｎｉｊ、ＭＡＣｎｉｊ）を復号する。次いで、アプライアンスは、ｎを検証し、イベントを記録に取る。次に、随意的な第２のループである、ループ２が、必要に応じて、付加的なＦＣＴ５０であるＦＣＴＮ＝２〜Ｍに対して実行され得る。ＩＮＩＴＦＣＴコマンドがすでに、すなわち外側ループであるループ１で作動しているため、一過性のキーおよび共有キーがすでにＡＣＣ１２およびアプライアンス１８に存在し、よって、ＦＣＴ５０コマンドまたは複数のＦＣＴ５０コマンドを用いて、さらなるプロビジョニングを行うことができる。いったん全ての５０コマンドが実行されると、ループ２は終了し、次いで、ループ１は、新しいＡＣＣ１２に対して繰り返すことができる。それぞれの付加的なＦＣＴ５０について、そのＦＣＴ５０、例えば、ＦＣＴＮが製品ＩＤ別に検索され、次いで、アプライアンス１８は、ＳＩＧｎｉｊの生成へと直接進むことができ、上記で説明される過程が繰り返され、すでに交換された種々の構成要素（例えば、Ｑｅｊ、ＣＥＲＴｊ）が再び送信される必要はないことが分かる。ループ２、次いで、ループ１は、図６６ｅで終了する。ここで図６６ｆを参照すると、次いで、エージェント２０がイベントの記録を取り、コマンドｃｍｄ［ＳＴＯＰＡＣＣ］を発行し、その時にＡＣＣ１２が一過性のキーｄｅｉ、Ｑｅｉを破壊する。次いで、エージェント２０は、その蓄積されたログをアプライアンス１８に送信する。次いで、バックエンド１１は、アプライアンス１８からログを要求することによって、エージェント２０およびアプライアンス１８のログを要求し得る。次いで、アプライアンス１８は、エージェントログおよびアプライアンスログをバックエンド１１に送信し、バックエンド１１は、このイベントの最終ログを作ることができる。
【０３９５】
（利点の要約）
したがって、ＡＣＣ１２は、シリコンダイ上のハードウェアベースの信用点を提供し、上記で説明されるシステム１０を使用して、信頼できる監査可能な様式で、製造過程の全体を通して、ならびに製品寿命全体、製造から小売販路まで、「寿命の終了」に向かった消費者の消費まで、種々のタスクを実施するために使用できることが分かる。また、ＡＣＣ１２は、ＮＶＭ６２へのアクセスを維持し、および無許可エージェントによってアクセスされることからＮＶＭ６２のある領域を保護すること、ＡＣＣ１２を一意的に識別するために使用されるＵＩＤの内蔵型生成、信用できるサーバとの安全な通信チャネルを開くために使用されるキーの内蔵型生成、特徴の有効化および無効化が、信用できるソースによって信用できる機器を使用して行われることを確実にすること、デバイスが改ざんされていないことを確認するように、デバイス自己試験および健全性チェックを開始または無効化する能力、および過剰に多くの無効コマンドが試行された時はいつでも、デバイスをロックアウトすることといった、能力を提供するように設計できることも分かる。
【０３９６】
加えて、能力を自己生成されたＵＩＤのみに限定する代わりに、アプライアンス１８にＵＩＤを注入させること、およびコード署名を通してファームウェアアップグレードを安全に起動および認証することといった、特徴を実装するようにＡＣＣ１２を拡張できることが留意され得る。
【０３９７】
論議されるように、ＡＣＣ１２は、典型的には、ＳｏＣダイに組み込まれて統合され、それは次いで、チップ４０に盛り込まれ、チップは、プリント基板（ＰＣＢ）４４上に載置され、最終的に電子デバイス１４または「製品」に組み立てられる。その中にＡＣＣ１２を有する全チップは、ウエハ試験に合格するとすぐに、バックエンドデータベースに登録し、記録を取ることができ、それは次に、ウエハ試験を受けた、製造された全チップを追跡することができる。システム１０のセキュリティ特徴は、信用されるアプライアンス１８とＡＣＣ１２との間のデータリンクに依存しないが、むしろ、セキュリティが暗号によって通信プロトコルに組み込まれるため、ＡＣＣ１２は、任意の電子機器製造試験環境で稼働するように設計され得る。
【０３９８】
さらに、最終顧客が、自分の特定のデバイスの特徴セットを再プログラムしたい場合、機器業者が適合すると見なすデバイスプログラマ２６なら何でも使用して、アプライアンス１８に接続することを可能にする、システム１０の融通性があり、アプライアンス１８は、独力で安全なチャネルを開くことができる。結果として、システム１０は、ウエハ製造からＯＤＭ、ＯＥＭ、最終ユーザの間のどこかで、完全に安全かつ監査可能な方式で、プロビジョニングが生じることを可能にする能力を提供する。
【０３９９】
工場を持たないチップ製造業者にとって、このプロビジョニング融通性は、工場を持たないチップ業者がベースチップを生産し、次いで、特定の製品構築に対して有効にされた特定の特徴を必要とするため、それらを販売業者／ＯＤＭ／ＯＥＭにおいて準備させることができることを意味する。これは、製品ラインごとの１年あたりのマスクターンの数を大いに低減し、有意な費用を節約する。これは、ＳＫＵを低減し、供給チェーン管理を単純化する。これは、ＯＥＭによるグレーマーケット仕入れ過剰を排除することができる。チップは、システム１０によってプログラムされない限り稼働しないように作製することができるため、これは、半導体製造工場による不正過剰生産を排除することができる。加えて、本明細書で説明される解決策は、エンドユーザから工場を持たないチップ業者への直接のアフターマーケット収益を可能にし、これは、従来のプログラミング解決策を使用すると、不可能ではないにしても困難なものである。システム１０では、最終顧客がチップ上に含有された特徴（例えば、ビデオカードからの強化グラフィック能力）を有効にすることを希望する場合、顧客はウェブ上でその特徴を発注することができ、チップ業者は遠隔でそれを有効にするコマンドを発行することができる。
【０４００】
デバイス業者にとって、単純化したＳＫＵおよびより効率的な供給チェーン管理といった、有益性は同様となり得る。土壇場の変更を順番に促進するために、ジャストインタイムプロビジョニングが可能である。現在の生産の必要に応じて、構成要素を準備することができるため、未加工構成要素の在庫がシステム１０で単純化される。ハッカーが無許可でデバイスを再プログラムする方法を見つけることができないため、収益も保護することができる。
【０４０１】
（セキュリティモデル）
システム１０等のセキュリティシステムの目的は、敵対者がデバイス１４を改ざんすることを防止することである。脅威が深刻に扱われるものである場合は、ＡＣＣ１２がその主要な機能を果たすことを危うくすることになる。この目的を達成するために、攻撃の費用を考慮することが道理にかなう。費用方程式には、１）１つの修正されたチップを有するために、我々の設計を精査し、研究し、分解して模倣する初期努力と、２）ａ）初期努力の結果が公表され、公になった場合、およびｂ）容易に達成可能な攻撃を実施するために必要な全ての機器にアクセスできる場合に、各逐次チップへの攻撃を繰り返す増分努力といった、２つの部分がある。
【０４０２】
攻撃を成立させる増分費用がチップの小売原価以上である場合、または攻撃が特定の特徴に限定され、次いで、その特徴の小売原価に限定される場合は、攻撃はあまりに困難で、効果がないと見なされる。したがって、＄［搾取を繰り返す費用］＞＄［デバイスの全ての特徴の価値］である場合、攻撃をあまりに困難であると考えることができる。この観点から、ＦＩＢまたは電子ビームを伴う技法を使用して、各チップを個別に修正することを必要とする破壊は、費用効果的ではないので懸案事項ではない。多くの場合において、製造業者の収益の流れに有意に影響を及ぼさないので、時折の単一の破壊は容認可能であることが理解できる。最も深刻な脅威は、多くの人々がほとんど努力せずにステップを繰り返すことを可能にする、ハッキングが公表されることを可能にする、システム全体の破壊である。しかしながら、敵対者が時間および努力を費やして、どうにかして第１のデバイス１４の打破に成功した場合、最初の試行で獲得した知識を利用し、費用効果的に連続デバイスに繰り返すことができなければ、大した懸案事項ではない。
【０４０３】
（基本仮定）
ａ）ＡＣＣ１２は、閉鎖システムであり、全ての機密動作およびデータは、非公開であり、かつダイ上の他の論理からアクセス不可能である。
【０４０４】
ｂ）システム１０の残りの部分が安全であり、改ざんを受けないので、ハッシュの衝突の発見を促進するためにそれを使用することはできない。
【０４０５】
ｃ）ＡＣＣ１２が組み込まれるシステムは、提案された／必要なセキュリティ対策を迂回しないように、適正な予防措置を講じている。
【０４０６】
ｄ）電子ビームまたはレーザおよび他の同様の技法を使用して、静的メモリ要素を読み出す、または書き込む能力が可能であるが、困難かつ高価となる。
【０４０７】
ｅ）ＡＣＣ１２プログラミング外で一過性のメモリ要素を読み出す、または書き込む能力は、我々のセキュリティモデルの範囲外である。
【０４０８】
敵対者が物理的にシステム１０を破壊するために試行しようとする場合がある、技法のリストが識別されている。敵対者は、破壊を試行するために、相互と協同して、チップ間精査（オシロスコープ、ロジックアナライザ、ウエハ／ダイテスター）、基板レベルＪＴＡＧデバッガ、ＡＣＣ  ＲＯＭ６０を修正すること（コンテンツ改ざん／マスクレベルでの差し替え）、デバイス除去および置換（ＡＣＣ１２が有するチップを、ＡＣＣ１２が持たなかったデバイスと差し替える、１つのチップを別のチップと取り換える、複数のチップを並列に接続する）、オフラインＮＶＭ６２修正、ＡＣＣ１２と通信するために偽造アプライアンス１８を使用すること、およびＡＣＣ１２が作動している間に電力およびクロック信号にグリッチを注入すること等の、複数の方法を利用する場合がある。そのような脅威が、システム１０を実装する時に考慮されるべきである。
【０４０９】
加えて、敵対者がシステムのプロトコルを破壊するために使用する場合がある、技法の別個のリストも識別されている。敵対者は、プロトコルを攻撃するために、サイドチャネル観察、メッセージ偽造、メッセージ再生、メッセージインターリービング、受動的攻撃、同一性のなりすまし、キーののぞき見、およびタイミング攻撃といった、物理的な脅威のうちの１つ以上を使用する必要がある。物理的攻撃と同様に、そのような脅威は、システム１０を実装する時に考慮されるべきである。
【０４１０】
したがって、ＡＣＣ１２は、ＣＡ公開キーの安全な改ざんのない記憶を提供するべきであり、ＡＣＣ１２は、ＡＣＣの静的キーペアの安全な改ざんのない記憶を提供するべきであり、ＡＣＣ１２はまた、特定のデバイス１４に対するＦＣＴ５０を伴わずにデフォルトの１組の特徴を有効にすることが可能であるべきであり、ＡＣＣ１２とアプライアンス１８との間に機密かつ認証されたチャネルを確立する方法が存在するべきであり、アプライアンス１８からＡＣＣ１２へのメッセージ完全性を検証する能力で、認証されたコマンドを発行する方法が存在するべきであり、ＡＣＣ１２とアプライアンス１８との間の通信プロトコルは、コマンドおよび確認の再生を防止することができるように設計されるべきであり、１つのＡＣＣ１２を破壊するために取られるステップは、費用効率的に複製することができず、また大量の部品の体系的破壊にもつながらず、デバイスは、統計的に一意的な非公開キーおよび公開識別子を有するべきである。しかしながら、非常に少数のチップ（推定＜５００部品）が複製ＵＩＤを伴う結果となる場合、依然として容認可能と見なされるべきである。これらの能力は、本明細書において開示される実施形態を実施することによって提供することができる。
【０４１１】
一般に、電子資産を管理する方法であって、該方法は、コントローラに通信可能に接続可能なアプライアンスを提供することであって、該アプライアンスは、該コントローラから電子資産を獲得するように構成されており、該アプライアンスは、複数のエージェントに通信可能な接続を提供し、該複数のエージェントは、該電子資産をデバイスに適用するように構成されている、ことと、該コントローラに対して、および、各エージェントに対して、別個のスレッドが該アプライアンス上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該アプライアンスが該コントローラから資産を獲得し、かつ、該電子資産を該エージェントに分配することを可能にすることとを含む、方法が提供される。
【０４１２】
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、コントローラに通信可能に接続可能なアプライアンスを提供することであって、該アプライアンスは、該コントローラから電子資産を獲得するように構成されており、該アプライアンスは、複数のエージェントに通信可能な接続を提供し、該複数のエージェントは、該電子資産をデバイスに適用するように構成されている、ことと、該コントローラに対して、および、各エージェントに対して、別個のスレッドが該アプライアンス上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該アプライアンスが該コントローラから資産を獲得し、かつ、該電子資産を該エージェントに分配することを可能にすることとをコンピューティングデバイスに行わせる、コンピュータ可読媒体もまた提供される。
【０４１３】
プロセッサと、メモリと、コントローラデバイスとの通信可能な接続性と、複数のエージェントとの通信可能な接続性とを含むアプライアンスデバイスであって、該アプライアンスデバイスは、コントローラに通信可能に接続し、該コントローラから電子資産を獲得し、複数のエージェントに通信可能な接続を提供することであって、該複数のエージェントは、該電子資産をデバイスに適用するように構成されている、ことと、該コントローラに対して、および、各エージェントに対して、別個のスレッドが該アプライアンス上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該アプライアンスが該コントローラから資産を獲得し、かつ、該電子資産を該エージェントに分配することを可能にすることとを行うように構成されている、アプライアンスデバイスもまた提供される。
【０４１４】
電子資産を管理する方法であって、該方法は、電子資産を獲得し、かつ、該電子資産を１つ以上のアプライアンスに提供するように構成されたコントローラを提供することであって、該コントローラは、１つ以上のユーザインターフェース（ＵＩ）を含む、ことと、各ＵＩ接続に対して、および、該１つ以上のアプライアンスのうちのそれぞれに対して、別個のスレッドが該コントローラ上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該コントローラが該資産を分配し、かつ、ＵＩ相互作用を扱うことを可能にすることとを含む、方法もまた提供される。
【０４１５】
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、電子資産を獲得し、かつ、該電子資産を１つ以上のアプライアンスに提供するように構成されたコントローラを提供することであって、該コントローラは、１つ以上のユーザインターフェース（ＵＩ）を含む、ことと、各ＵＩ接続に対して、および、該１つ以上のアプライアンスのうちのそれぞれに対して、別個のスレッドが該コントローラ上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該コントローラが該資産を分配し、かつ、ＵＩ相互作用を扱うことを可能にすることとをコンピューティングデバイスに行わせる、コンピュータ可読媒体もまた提供される。
【０４１６】
プロセッサと、メモリと、１つ以上のユーザインターフェースと、複数のアプライアンスとの通信可能な接続性とを含むコントローラデバイスであって、該コントローラデバイスは、電子資産を獲得し、かつ、該電子資産を１つ以上のアプライアンスに提供することであって、該コントローラは、１つ以上のユーザインターフェース（ＵＩ）を含む、ことと、各ＵＩ接続に対して、および、該１つ以上のアプライアンスのうちのそれぞれに対して、別個のスレッドが該コントローラ上で開始されることを可能にすることにより、パラレルなスレッドにおいて、該コントローラが該資産を分配し、かつ、ＵＩ相互作用を扱うことを可能にすることとを行うように構成されている、コントローラデバイスもまた提供される。
【０４１７】
製造過程において試験アプリケーションに対する電子資産の分配を制御する方法であって、該方法は、試験アプリケーション上のデーモンアプリケーションプログラミングインターフェース（ＡＰＩ）を提供することにより、資産に対する要求を検出した際に資産を提供し、かつ、試験中に該試験アプリケーションからログデータを獲得することと、該デーモンＡＰＩと関連してデーモンを開始することにより、該ログデータを該デーモンＡＰＩから獲得し、かつ、該資産を該デーモンＡＰＩに提供することであって、該デーモンは、該試験アプリケーションから離れたアプライアンスとの通信のために、エージェントＡＰＩをホストする、ことと、該エージェントＡＰＩを利用して、複数の資産を含むバッチを獲得し、かつ、該ログデータを含む１つ以上のログレポートを該試験アプリケーションとは別個に提供することと、該資産をキャッシュし、該デーモンＡＰＩからの要求に基づいて、該資産の一定量を該デーモンＡＰＩに提供することにより、該デーモンＡＰＩが該資産を該試験アプリケーションに提供することを可能にし、これにより、該試験アプリケーションとアプライアンスとの間の該電子資産を獲得するためのセッション確立を回避することとを含む、方法もまた提供される。
【０４１８】
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、試験アプリケーション上のデーモンアプリケーションプログラミングインターフェース（ＡＰＩ）を提供することにより、資産に対する要求を検出した際に資産を提供し、かつ、試験中に該試験アプリケーションからログデータを獲得することと、該デーモンＡＰＩと関連してデーモンを開始することにより、該ログデータを該デーモンＡＰＩから獲得し、かつ、該資産を該デーモンＡＰＩに提供することであって、該デーモンは、該試験アプリケーションから離れたアプライアンスとの通信のために、エージェントＡＰＩをホストする、ことと、該エージェントＡＰＩを利用して、複数の資産を含むバッチを獲得し、かつ、該ログデータを含む１つ以上のログレポートを該試験アプリケーションとは別個に提供することと、該資産をキャッシュし、該デーモンＡＰＩからの要求に基づいて、該資産の一定量を該デーモンＡＰＩに提供することにより、該デーモンＡＰＩが該資産を該試験アプリケーションに提供することを可能にし、これにより、該試験アプリケーションとアプライアンスとの間の該電子資産を獲得するためのセッション確立を回避することとを１つ以上のコンピューティングデバイスに行わせる、コンピュータ可読媒体もまた提供される。
【０４１９】
資産管理システムにおいて遠隔的に分離されたモジュールの間で安全に通信する方法であって、該方法は、該システムにおける各モジュールにおいて、安全な境界内の機密動作を実行するためのハードウェアセキュリティモジュール（ＨＳＭ）を提供することと、各ＨＳＭにおいて、非伝統的な動作を実施することにより、該安全な境界内の該動作を保護するためのソースコードを含む機能モジュールを提供することとを含む、方法もまた提供される。
【０４２０】
機密動作を実行するための安全な境界と、非伝統的な動作を実施することにより、該安全な境界内の該動作を保護するためのソースコードを含む機能モジュールとを含む、ハードウェアセキュリティモジュール（ＨＳＭ）もまた提供される。
【０４２１】
電子資産をデバイスに分配する方法であって、該方法は、デバイスに追加されるべき第１の資産を定義することと、該デバイスに追加されるべき第２の資産を定義することと、製品タイプを定義し、かつ、該第１の資産および該第２の資産と該製品タイプとを関連付けることと、該製品タイプに関連付けられた各デバイスに対して、該第１の資産および該第２の資産を一緒に分配することとを含む、方法もまた提供される。
【０４２２】
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、デバイスに追加されるべき第１の資産を定義することと、該デバイスに追加されるべき第２の資産を定義することと、製品タイプを定義し、かつ、該第１の資産および該第２の資産と該製品タイプとを関連付けることと、該製品タイプに関連付けられた各デバイスに対して、該第１の資産および該第２の資産を一緒に分配することとをコンピューティングデバイスに行わせる、コンピュータ可読媒体もまた提供される。
【０４２３】
命令を実行する、本明細書において例示される任意のモジュールまたは構成要素は、記憶媒体、コンピュータ記憶媒体、または、例えば、磁気ディスク、光ディスク、あるいはテープ等の他の記憶デバイス（取外し可能および／または取外し不可能）等の、コンピュータ可読媒体へのアクセスを含むか、または別様にアクセスでき得ることが理解されるであろう。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の、情報の記憶のための任意の方法および技術で実装される、揮発性および不揮発性、取外し可能および取外し不可能の媒体を含み得る。コンピュータ記憶媒体の実施例は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光学記憶、磁気カセット、磁気テープ、磁気ディスク記憶または他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、アプリケーション、モジュール、あるいは両方によってアクセスすることができる、任意の他の媒体を含む。任意のそのようなコンピュータ記憶媒体は、本明細書で示されるモジュールの一部であるか、またはそこからアクセス可能あるいは接続可能であり得る。本明細書において説明される任意のアプリケーションまたはモジュールは、そのようなコンピュータ可読媒体によって記憶または別様に保持され得るコンピュータ可読／実行可能命令を使用して実装され得る。
【０４２４】
上記のシステムは、ある具体的実施例を参照して説明されているが、ここに添付される請求項で概説されるように、その種々の修正が当業者に明白となるであろう。
【図１】
0005572705.tif 000019
【図２】
0005572705.tif 000020
【図３】
0005572705.tif 000021
【図４Ａ】
0005572705.tif 000022
【図４Ｂ】
0005572705.tif 000023
【図５】
0005572705.tif 000024
【図６Ａ】
0005572705.tif 000025
【図６Ｂ】
0005572705.tif 000026
【図７Ａ】
0005572705.tif 000027
【図７Ｂ】
0005572705.tif 000028
【図７Ｃ】
0005572705.tif 000029
【図８】
0005572705.tif 000030
【図９】
0005572705.tif 000031
【図１０Ａ】
0005572705.tif 000032
【図１０Ｂ】
0005572705.tif 000033
【図１１】
0005572705.tif 000034
【図１２】
0005572705.tif 000035
【図１３】
0005572705.tif 000036
【図１４】
0005572705.tif 000037
【図１５】
0005572705.tif 000038
【図１６】
0005572705.tif 000039
【図１７】
0005572705.tif 000040
【図１８】
0005572705.tif 000041
【図１９】
0005572705.tif 000042
【図２０】
0005572705.tif 000043
【図２１】
0005572705.tif 000044
【図２２】
0005572705.tif 000045
【図２３】
0005572705.tif 000046
【図２４】
0005572705.tif 000047
【図２５】
0005572705.tif 000048
【図２６】
0005572705.tif 000049
【図２７】
0005572705.tif 000050
【図２８】
0005572705.tif 000051
【図２９】
0005572705.tif 000052
【図３０】
0005572705.tif 000053
【図３１】
0005572705.tif 000054
【図３２】
0005572705.tif 000055
【図３３】
0005572705.tif 000056
【図３４】
0005572705.tif 000057
【図３５】
0005572705.tif 000058
【図３６】
0005572705.tif 000059
【図３７】
0005572705.tif 000060
【図３８】
0005572705.tif 000061
【図３９】
0005572705.tif 000062
【図４０】
0005572705.tif 000063
【図４１】
0005572705.tif 000064
【図４２】
0005572705.tif 000065
【図４３】
0005572705.tif 000066
【図４４】
0005572705.tif 000067
【図４５】
0005572705.tif 000068
【図４６】
0005572705.tif 000069
【図４７】
0005572705.tif 000070
【図４８】
0005572705.tif 000071
【図４９】
0005572705.tif 000072
【図５０】
0005572705.tif 000073
【図５１】
0005572705.tif 000074
【図５２】
0005572705.tif 000075
【図５３】
0005572705.tif 000076
【図５４】
0005572705.tif 000077
【図５５】
0005572705.tif 000078
【図５６】
0005572705.tif 000079
【図５７ａ】
0005572705.tif 000080
【図５７ｂ】
0005572705.tif 000081
【図５７ｃ】
0005572705.tif 000082
【図５７ｄ】
0005572705.tif 000083
【図５８】
0005572705.tif 000084
【図５９】
0005572705.tif 000085
【図６０】
0005572705.tif 000086
【図６１】
0005572705.tif 000087
【図６２】
0005572705.tif 000088
【図６３】
0005572705.tif 000089
【図６４】
0005572705.tif 000090
【図６５】
0005572705.tif 000091
【図６６ａ】
0005572705.tif 000092
【図６６ｂ】
0005572705.tif 000093
【図６６ｃ】
0005572705.tif 000094
【図６６ｄ】
0005572705.tif 000095
【図６６ｅ】
0005572705.tif 000096
【図６６ｆ】
0005572705.tif 000097