(資産管理システム(AMS))
上記の製造プラットフォームは、本明細書では資産管理システム(AMS)と呼ばれてもよく、図1に示されるように数字10によって示される。AMS10は、種々のサービスに適応するように適合することができる、カスタマイズ可能なソリューションである。例えば、以下で論議されるように、AMS10は、対応する資産の提供を制御することによって、シリアライゼーション、キー注入、および特徴起動のうちの1つ以上を実施するように構成することができる。したがって、資産とは、デバイス14に追加される、適用される、関連付けられる、または別様に結び付けられる任意のデジタルデータを指し得る。デバイス14は、そのような資産を利用することが可能である、任意の構成要素またはアイテムとなり得る。例えば、デバイス14は、チップ、回路基板、電子消費者デバイス、コンピュータ、プロセッサ、メモリ等を表し得る。AMS10は、デバイス14への資産の提供または注入を制御する制御チャネル4、およびロギングデータの収集を施行して資産の配布および使用を追跡する監査チャネル6を作成する。以下で説明されるAMS10の構成要素は、大域的に配布することができ、局所的に実装することができ、または遠隔および局所構成要素の両方を備える任意の構成となり得る。AMS10は、企業が、世界的な外注製造環境にわたって、機密製造過程を管理および制御することを可能にする。
AMS10は、メインサーバとして動作し、任意の世界的な場所で動作を遠隔制御するように、電子デバイス製造業者の本社に位置することができる、1つ以上のコントローラ22を備える。コントローラ22は、インターネットまたは他のネットワーク(図示せず)上で遠隔通信して、本明細書ではアプライアンス18と呼ばれる、1つ以上の2次または遠隔サーバを制御することができる。アプライアンス18は、異なる製造、試験、または配布現場に位置付けることができる。コントローラ22およびアプライアンス18は、高感度かつ高信頼性計算を実施し、非公開キー等の機密情報を記憶し、他の暗号動作を実施し、構成要素間の安全な接続を確立するように、ハードウェアセキュリティモジュール(HSM)19を備える。HSM19は、コントローラ22とアプライアンス18との間、およびアプライアンス18とデバイス14に組み込まれた資産制御コア(ACC)12の中の安全な信頼点との間で、安全なエンドポイントを作成するために使用される。HSM19は、付加的な安全動作を実施するソースコードを備える、機能モジュール(FM)11を追加する能力を提供する標準の既製構成要素であり得る。例えば、以下でさらに説明されるように、AMS10は、消費される資産のクレジットの測定を可能にし、HSM19は、FM11を利用する時に、HSM19によって作成される安全な境界内で、そのような測定が安全に実施されることを可能にする。FM11の使用は、例えば、暗号化および署名に加えて、信用でき、かつ安全な方式で、動作を実施することができる、より多大な融通性を提供する。FM11はまた、プロトコルを利用することができる、例えば、ACC12と通信するためにECMQVプロトコルを使用することができる(以降で論議される)、より多大な融通性も提供する。
コントローラ22はまた、管理者、操作者、および他のユーザが、コントローラ22、アプライアンス18、およびより広いAMS10と連動することを可能にするように、グラフィカルユーザインターフェース(GUI)8も提供する。アプライアンス18は、1つ以上のエージェント20と通信し、各エージェント20は、エージェントアプリケーションプログラミングインターフェース(API)21を使用して、およびいくつかの実施例では、テスター16およびそのアプリケーションの外側の別個の過程にエージェントの役割を配置するデーモンAPI23(以下で論議される図6Bを参照)を使用して、試験スクリプトまたは他の生産ルーチンに統合される。試験スクリプトまたは生産ルーチンは、典型的には、製造ライン上のテスター16上に搭載される、カスタムアプリケーションである。「テスター」という用語は、電子資産をデバイス14に注入するか、または別様に提供するために使用される、任意の製造または生産機器を表し得る。典型的には、アプライアンス18は、テスター16と同じ物理的な場所にあり得るか、または代わりに、それの遠隔にあり、LAN、WAN、または他のネットワーク(図示せず)上で接続され得る、生産現場に位置する。図1に図示されるように、1次またはマスタアプライアンス18が誤動作するか、またはオフラインになる場合に、付加的なアプライアンス18’が引き継ぎ、生産休止時間を最小限化するように準備されることを確実にするように、アプライアンス18を、冗長アーキテクチャ(すなわち、付加的なアプライアンス18’を伴う)において展開することができる。いくつかの実施形態では、AMS10は、エージェント20を通して、アプライアンス18とデバイス14との間で安全な通信を確立するために、デバイス14上に組み込まれるACC12を利用し得る。
AMS10を使用して、収益損失の削減につながることができ、かつパートナーおよび下流顧客との新しい収益共有機会をもたらすことができる、工場プロビジョニングのシステムを作成し、展開することができる。AMS10はまた、特に、利益率の高いデバイスを生産するために外注請負業者が使用される時に、製造過程の全体を通して、全体的なセキュリティおよびブランド保護を向上させることができる。製造および配布過程における、そのような収益損失削減は、半導体および他の電子デバイス14における特徴の無許可起動を防止すること、過剰生産を削減すること、在庫および供給チェーン費を削減すること、強力な組み込み収益およびブランド保護対策を確立すること、およびアフターマーケット収益の可能性から利益を得る新しい機会をもたらすことに役立つようにAMS10を使用することよって、達成することができる。
図2は、資産を定義し、デバイス14に配布し、適用するため、ならびに、監査目的で種々の段階においてログレポートを収集するために、コントローラ22、アプライアンス18、エージェント20、およびACC12をどのようにして使用することができるかを図示する。コントローラ22において、製造業者(または提供される資産の所有者)が、製品、すなわち、シリアライゼーション、キー注入、特徴起動等の、提供されている特定の種類のサービスを利用するオブジェクトを定義する。コントローラ22はまた、製品および製品に適用されているサービスに対応する、資産の種類を定義する。資産および製品に別個の定義を有することによって、いくつかの実施形態では、一意の製品名は、異なる種類の複数の資産が一緒に送達されることを可能にすることができる。例えば、キーを、起動される1組の特徴とともに送達することができ、またはキーおよびシリアル番号を、同時に送達し、注入することができる。これは、2つの資産が製品別ベースの送達を最適化するために制御チャネル4の同じインスタンスを利用するため、時間および帯域幅を節約する。
いくつかの資産が、コントローラ22によって生成され、獲得され、または別様にインポートされ、資産は、製品に結び付けられ、それは、サービスの適用が製品に資産を注入または追加して、最終的に、その製品のために1つ以上のデバイス14が生産されるように、資産と製品との間に関連を作成する。次いで、製品は、アプライアンス18に結び付けられる。製品はまた、アプライアンス18にわたって製品の資産を配布するようAMS10を構成することができるように、1つより多くのアプライアンス18に結び付けられることもできる。同じ種類のデバイス14が異なる施設で生産されている場合、各場所で1つずつ、異なる種類の製品を作成することができる。例えば、デバイス14は、異なる生産施設でアプライアンス18をそれぞれ有する、いくつかの地理的な場所で生産され得る。次いで、製品が各施設に対して作成され、対応するアプライアンス18に結び付けられ得る。アプライアンス18は、1つより多くのテスター16において1つより多くのエージェント20にサービス提供することができ、したがって、同じアプライアンス18に対して1つより多くの製品を定義できることが留意され得る。
次いで、コントローラ22が、製品および対応する資産をアプライアンス18に提供し、これらの資産は記憶され、したがって、製品はアプライアンス18において準備される。その間、コントローラ22は、製品および資産を送信するイベントの記録を取り、資産の受信および記憶の成功についてアプライアンス18からの確認を待つ。アプライアンス18は、少なくとも1つのエージェント20と通信するように構成される。エージェント20は、生産および配布段階で資産を利用するように構成される。したがって、エージェント20は、この段階で機能する必要がある資産を要求する。アプライアンス18は、適切な数の資産を測定して取得し、このイベントの記録を取って、特定のエージェント20(したがって、特定のテスター16)への資産の割当を記録する。次いで、資産は、エージェント20に提供される。次いで、エージェント20は、資産を適用することと、それが動作する各デバイス14に対してこのイベントの記録を取ることとを含む、ループを開始し得る。ACC12が使用される場合に、ACC12との交換が実施されることが分かり、その詳細は以下で提供される。何らかの時点で、例えば、ログ閾値に達すると、エージェント20は、1組のエージェントログをアプライアンス18に提供し、アプライアンス18は、ログを記憶する。他の実施例では、アプライアンス18は、エージェント20からのログを要求し得る。次いで、コントローラ22は、何らかの以降の時点で(例えば、同期化動作中に)アプライアンス18と関連付けられた製品のログを要求し、両方ともアプライアンス18によって記憶されるアプライアンスログおよびエージェントログは、コントローラ22に提供される。次いで、コントローラ22は、ログを記憶し、監査および他の後処理またはその中に含まれるデータの分析のために、それらを利用可能にし得る。一方の方向における配布を制御し、他方の方向におけるイベントのロギングおよび同イベントの収集を施行することによって、AMS10は、製造過程に対する制御を提供することができる。
上記で論議されるように、AMS10は、シリアライゼーション、キー注入、および特徴起動等の種々のサービスを提供するように構成することができる。これらのサービスは、一般に図2で例示される、制御および監査チャネルを使用して実装することができる。これらの種々のサービスのためにAMS10の構成要素を構成するために、コントローラ22、アプライアンス18、エージェント20、およびACC12は、一定の能力を有するべきである。ここで、図3から6を参照して、これらの構成要素のさらなる詳細を説明する。
コントローラ22は、図3でより詳細に示されている。コントローラ22は、標準ウェブブラウザ100、100’からウェブインターフェースを通してアクセスすることができる、セキュリティ強化されたラックマウント式システムとして実装することができる。図3で見られるように、コントローラ22は、コントローラ22においてウェブブラウザ100によって、または遠隔で100’によってアクセスすることができる、GUI8を含む。GUI8は、アプライアンス18と安全に通信し(Sによって示される)、典型的にはセッキュリティを伴わずにデータベース110と通信する(Uによって示される)ために、コントローラデーモン106を使用する、ウェブサーバ104上に位置する。報告ツール108もまた、関係データベース110に安全にアクセスして、レポートを生成する目的でロギングおよび他のデータを取得することができる。データベース110の中のデータにアクセスするように、報告ツール108または任意の同様のアプリケーションからのサービス要求を行うことができる。データベーススキーマは、ログの効率的な記憶、サービスモジュールによる要求に応じたデータの効率的な記憶、およびサービスモジュールによる要求に応じた効率的なデータの参照に利用される。全てのサービスモジュールからのカスタムログデータを、データベース110からエクスポートすることができる。アプライアンス18が削除される前に、コントローラ22は、アプライアンス18と同期化して、全てのログが収集されていることを確実にするべきである。この実施例でのコントローラ22はまた、コントローラデーモン106とともに動作する、コマンドラインインターフェース(CLI)ユーティリティ102もサポートする。CLIユーティリティ102は、利用される場合、GUI8と同様の機能性を提供するべきである。
コントローラ22は、特定時間間隔で自動的にアプライアンス18を同期化して、任意のサービス関連資産が、それらの特定最大量であることを確認し、すなわち、コントローラ22は、アプライアンス18が、意図されたように動作するために必要とする資産を有することを確実にする。いずれのクレジットもつぎ足すことなく、現在のクレジットレベルを問い合わせるように、読み出し専用同期モードを提供することができる。この同期化動作はまた、アプライアンス構成設定を送信するため、および図2に図示されるようにアプライアンス18からログを取り出すために、使用することができる。これは、接続が一時的に失われた場合に、途切れることなく、AMS10が各生産現場において高速製造をサポートすることを可能にする。コントローラ22はまた、特定のEメールアドレスに警告を発行して、理想的には生産を停止し得る条件が生じる前に、これらの条件について操作者に知らせることができる。コントローラ22は、コントローラ22がアプライアンス18にコンタクトできない時、コントローラ22がデータをアプライアンス18に送信する時(逆の場合も同じ)にエラーがある場合、同期化動作が失敗した時、アプライアンス18の中の資産の数が特定警戒レベルに達する時、アプライアンス18上の空きディスクスペースが最小値に達する時、およびエージェントIPアドレスがアプライアンス18によって管理されるリストの中にないため、アプライアンス18がエージェント20からの接続を遮断した時等の、いくつかの状況下で警告を発行する。これらの警告の管理は、以下でより詳細に説明されるGUI8を通して実施することができる。
コントローラ22はまた、同期化動作および他の長期タスク等の、AMS10で作動する全てのジョブを監視するために使用され、その状態を監視し、それらの進展の記録を取ることができる。ジョブ情報は、GUI8において利用可能にすることができる。コントローラ22はまた、操作者がユーザの役割を追加および除去することも可能にする。ユーザの役割には、AMS10の構成要素のそれぞれにアクセスする異なるレベルの許可を割り当てることができる。AMS10によって生成されるログは、関係データベース110に記憶される。
この実施例でのコントローラ22は、サーバハードウェア、例えば、3GHzにおいて2 x Intel Xeonクアドコア5300プロセッサを使用するDell 2950 PowerEdge 2Uラックマウントサーバ上で作動する。コントローラ22はまた、110/220V 750W冗長電力モジュール、DVD ROM、デュアルギガビットNIC、およびPCIeライザを使用することもできる。コントローラ22は、例えば、HSMおよびSSL証明書に対するエクスポートPKCS10要求、デバイス認証機関(CA)によって証明書に署名すること、ならびにSSLおよびHSM証明書をHSM19にインポートすることによって、初期プロビジョニングを要求する。各HSM19に特有のあらゆる同一性証明書も使用できることを理解することができる。コントローラ22は、名前およびEメール警告のためのSMTP設定等の、一般設定が構成されることを可能にするべきである。複数のユーザアカウントのサポートが提供されるべきであり、AMS10の種々の部品へのアクセスが承諾または拒否されることを可能にするために、ユーザごとの許可マトリクスを使用することができる。このようにして、異なるユーザの役割を定義することができ、異なる許可をモジュールごとに各ユーザ役割に与えることができる。許可マトリクスは、顧客がそのような許可を定義し、ユーザの役割の数を定義してユーザを区別することができるように、構成されるべきである。コントローラ22は、サービスモジュールを有効または無効にして、例えば、シリアライゼーション、キー注入、特徴起動等に対して、異なるサービス製品が定義されることを可能にする。コントローラ22はまた、アプライアンス18の一般設定、つまり、名前、製造業者、場所、IPアドレス、ポート番号、ソケット再試行、ソケットタイムアウト、送信/受信ブロックサイズ、およびそのアプライアンス22に対して承認されたエージェント20のリスト等の設定を構成することもできる。
コントローラ22は、構成可能な時間間隔で、例えば、30分毎に、各アプライアンス18と同期化する。しかしながら、コントローラ22はまた、次の予定された同期化の前に所望される場合、操作者が同期化を即時に強行することも可能にする。コントローラ22は、AMS10に対する制御を提供し、したがって、新しいアプライアンス18が追加される前にそれを承認することができる。次いで、供給業者から出荷される時に、アプライアンス18は、使用前にそのような承認を要求する状態となるべきである。いったん承認が成功して完了すると、コントローラ22によるアプライアンス18の他のプロビジョニングも実施することができる。コントローラ22はまた、コントローラ22がアプライアンス18にクレジットを発行するクレジットシステムも実装する。資産をエージェント20に提供する(図2に示されるように)ことによってアプライアンス18が資産を消費する時はいつでも、クレジットが減少させられる。操作者は、警戒、最小、および最大レベルを定義することができ、アプライアンス18上の現在のクレジットが警戒レベル以下であれば、コントローラ22が警告を発行する。アプライアンス18上の現在のクレジットが最小レベル未満であれば、コントローラ22が最大レベルまでクレジットをつぎ足す。アプライアンス18がクレジットを使い果たした場合は、もはや資産をエージェント20に提供することができなくなる。クレジットは、一般に、サービスモジュールごとよりもむしろ、アプライアンス18ごとに割り当てられるべきである。
上記のように、コントローラ22は、各アプライアンス18に対するジョブのリストを監視する。これは、各アプライアンス18が他とは無関係にサービス提供を受けることを可能にする、マルチスレッド設計を作成する。加えて、各アプライアンス18上のジョブも、同時に、かつ他とは無関係に実施され得る。これは、1つのエンティティとの通信が、別のエンティティとの通信を妨害せず、したがって、AMS10の並列性を増加させるように、複数のUI要求が別個のスレッドによって処理されること、ならびに複数のアプライアンス18の接続が別個のスレッドによって処理されることを可能にする。空いた、および使用されたハードディスクスペース、空いた、および使用されたメモリ、HSM19のような他のハードウェア構成要素の健全性、コントローラ22との最後の通信の日付/時間、および各エージェント20との最後の通信の日付/時間を含む、各アプライアンス18の健全性も監視される。コントローラ22は、コントローラ22とアプライアンス18との間の安全な通信チャネルを使用する、アプライアンス18のネットワークライブ性をチェックするピング(ping)ユーティリティを提供する。各アプライアンス18上の時間をコントローラ22と同期化して、システム時間ならびにコントローラ22およびアプライアンス18上のHSM時間がUTCにおいて特定され、かつ同じであることを確実にするように、時間同期化ユーティリティも提供される。
コントローラ22はまた、サービシングエージェント20からアプライアンス18を無効にする過程も提供するべきである。適切な警戒および確認を提供することができ、そのようなものとして、措置が製造ラインに干渉するか、または停止さえし得る。無効である時に、アプライアンス18は、コントローラ22にサービス提供し続けるべきである。例えば、ピングユーティリティは、アプライアンス18が無効である時に、依然として稼働するべきである。この機能性は、異常が検出され、是正措置が必要とされる場合に、操作者がアプライアンス18を通して製造業者を制御することを可能にする。製造ラインを潜在的に停止し得る問題にフラグを付けるために、Eメール警告を生成することができ、全ての関係者および影響を受ける当事者に通知することができるように、複数のEメールアドレスを特定することができる。コントローラ22はまた、自動的に、および手動で、それ自体のバックアップをトリガすることも可能であるべきである。ハードウェア故障または他の災害の場合に、バックアップから新しいハードウェアに、または既存のハードウェアにコントローラ22を復旧することが可能であるべきである。
HSMコードを含むアプライアンスソフトウェアに対する遠隔アップグレード、ならびにHSMコードを含むコントローラソフトウェアのローカルアップグレードも、コントローラ22によって有効にされる。コントローラ22は、各アプライアンス18に接続することができるようになる、エージェントIPアドレスおよびサブネットのリストを管理し、GUI8およびCLIユーティリティ102からのサービス要求を有効にする。
アプライアンス18は、典型的には、検出およびフェイルオーバーのために、図1に示されるような冗長ペアで使用される。冗長アプライアンス18、18’の場合、各アプライアンス18、18’は、同様の数量の資産を与えられることができ、各組が異なる値を有する。したがって、1つのアプライアンス18が故障した場合、エージェント20は、特に、資産が一意でなければならい場合に、重複する資産を有する危険を伴わずに、依然として他のアプライアンス18’から資産を取得することができる。アプライアンス18はまた、セキュリティ強化されたラックマウント式システムとなるべきである。アプライアンス18の例示的な構成のさらなる詳細が、図4Aに示されている。アプライアンス18は、安全な通信チャネルを提供するようにコントローラ22とエージェント20との間の通信を制御するためのアプライアンスデーモン112と、ログおよび他のデータを記憶するためのアプライアンス関係データベース114とを備える。上記で論議されるように、アプライアンス18は、試験場所、第3者製造業者、組立工場、または任意の生産あるいは配布場所に位置することができる。1つのアプライアンス18は、1つ以上のエージェント20にサービス提供し、複数のアプライアンス18は、使用される場合、1つ以上のエージェント20を通してACC12と通信することができる。コントローラとアプライアンスとの通信は、例えば、SSL接続を使用して、安全であり、保護され、相互に認証されるべきである。アプライアンス18からエージェント20への資産の全ての発行は、活動ログに記録される。これらのログは、コントローラ22によって収集されると、データベース114に保存され、以降で論議されるようなGUIのレポート表示で閲覧することができる。
新しいアプライアンス18が、AMS10に追加されると、それはオフライン状態である。次いで、アプライアンス18は、使用されるために起動される。いったんアプライアンス18がアクティブになると、サービスを生産することができる前に、依然として同期化される必要がある。図4Bは、アプライアンス18の種々の状態を図示する。
アプライアンス18は、コントローラ22と同様であるハードウェア上で作動することができ、全ての高信頼性計算がHSM19の内側で行われる。アプライアンス18は、少なくとも1つのHSM19を有するが、いくつかの実施形態では、ECMQV(ECMQVの使用は以降で論議される)等の暗号動作の性能をさらに向上させるように、より多くをサポートし得る。アプライアンス18は、冗長性および高可用性のために、複数ペアで提供されるべきである。冗長ペアの両方のアプライアンス18、18’は、エージェント20がいずれか一方に接続し得る際に、常にアクティブとなるべきである。両方のアプライアンス18、18’は、コントローラ22上で別々に構成される。操作者は、両方のアプライアンス18、18’が資産に関して同様の構成を有することを確実にするべきことが留意され得る。容量計画の観点から、各ペアは、1つのアプライアンス18と見なされるべきであり、例えば、ペアのスループットが、単一のアプライアンス18のスループットにすぎないものであることしか期待できない。HSM19からのエクスポートPKCS10要求を、SSL、HSM、およびACC証明書に対して行うことができ、証明書は、デバイスCAによって署名されるべきである。次いで、証明書は、HSM19にインポートされる。
アプライアンス18がテスター16と相互作用している時に、試験時間を最小限化するために、高性能が最重要である。したがって、可能な場合に、プロトコル最適化が行われるべきである。例えば、アプライアンスACCプロトコルで使用するために、一過性の公開キーをHSM19で事前生成することができる。カスタムデータおよびログデータを伝えるためのコントローラ22との通信はまた、エージェント20との相互作用において、アプライアンス18の性能に影響を及ぼさないよう、効率的となるべきである。アプライアンス18は、アプライアンスデーモン112を使用して、コントローラ22およびエージェント20からのサービス要求を処理し、コントローラ22が複数のスレッドを使用して並行して動作することができるのと同じ方法で、コントローラ22およびエージェント20が相互とは無関係にサービス提供されることを可能にするために、複数のスレッドを使用する。このようにして、コントローラ22には、別個のスレッドが与えられ、各エージェント20には、別個のスレッドが与えられる。データベース114のスキーマは、ログの効率的な記憶、種々のサービスモジュールによる要求に応じたデータの効率的な記憶、およびサービスモジュールによる要求に応じた効率的なデータの参照のために設計されるべきである。
図5に示されたエージェント20は、ソフトウェアライブラリであり、各エージェント20は、製造ライン上のテスター16(デバイス14を試験するように構成されるコンピュータ)上に搭載されるカスタムアプリケーションである、顧客の試験プログラムまたはスクリプトに統合または一体化される。利用可能である場合、エージェント20は、ACC12またはソフトACC12’と通信する。エージェントAPI21を利用するように構成される時に、エージェントAPI21は、アプライアンス18へ資産の要求を行い、安全なSSL接続を通して、使用された資産のログを返送する。エージェントAPI21に加えて、AMS10は、別個の過程を引き起こすデーモンAPI23、すなわち、アプライアンス18から資産を取り出し、アプライアンス18に資産を提供するデーモン25の使用をサポートし、テスターアプリケーション116によって行われている作業のうちのいくつかを低減する。図6Aは、エージェントAPI21を利用するエージェント20の構成を図示する。エージェントAPI21は、テスター16上で作動する試験アプリケーション116aが、アプライアンス18に接続すること、資産を取り出すこと、およびログをアプライアンス18に返信することを可能にする。エージェントAPI21は、試験アプリケーション116aに直接統合され、それは、どのように、およびいつ、資産およびログがテスター16とアプライアンス18との間で転送されるかに対して完全な制御を与えることが分かる。図6Aで見られるように、エージェントAPI21は、アプライアンス18からの資産データパッケージ120、ならびに任意のログ要求126を取得する。エージェントAPI21はまた、資産要求124をアプライアンス18に提供し、かつ要求されたログレポート122を提供する。
ここで6Bを参照すると、資産およびログを管理する責任を解除するために、エージェントAPI21の代わりに、デーモンAPI23を使用することができる。図6Bに示されるように、デーモンAPI21は、それが別個の過程と通信することを可能にするように、試験アプリケーション116bに統合され、デーモン25は、資産データパッケージ120、ログレポート122、資産要求124、およびログ要求126の交換を管理するために、試験アプリケーション116bとアプライアンス18との間の仲介としての役割を果たす。デーモンAPI23は、より単純なインターフェースを提供し、背景過程としてデーモン25を実行するように構成することができる。図6Bに示されるように、デーモンAPI23は、試験アプリケーション116bとのインターフェースを提供して、資産が必要とされる際に資産を取得し、ログデータ128が各試験中または終了時に生成されると、それを取得する。デーモンAPI23は、試験過程中に試験アプリケーション116bがアプライアンス18に常に接続しなければならないことを回避し、したがって、時間を節約するように、資産を取得し、ログレポート122をアプライアンス18に提供する目的で、エージェントAPI21をホストするために、別個のデーモン25を実行する。デーモン25は、API21を使用して、一度に資産の複数バッチを要求し、アプライアンス18に接続する必要なく、資産が常にテスター16上で利用可能であるように、資産が必要とされると、デーモンAPI23を通してテスター16に資産を送達することができる。このようにして、試験アプリケーション116bは、資産を取得するため、およびそのログデータ(次いで、デーモン25上のエージェントAPI23によってログレポートに盛り込まれる)を提供するために、デーモンAPI23と相互作用し、したがって通信する必要があるのみである。デーモン25は、必要に応じてテスター16への後続配布のために資産の複数バッチを記憶する資産キャッシュ130と、試験が完了すると、試験アプリケーション116bによって出力される、ログレポート122の中で組織化されるべきログデータ128を記憶するログキャッシュ132とを維持する。デーモンAPI23はまた、デーモン25を用いてリソース管理過程を独立して実装および登録するために構成されるリソース管理サブシステム(RMS)27を有することもできる。このようにして、ユーザは、資産を取り出す時、ログを返送する時等を決定するように、独自のリソース管理過程(独自の指令を伴う)を実装することができ、かつこの過程を名前別に特定の製品プロファイルと関連付けることができる。
図6Bに示されるようなデーモン25およびデーモンAPI23の使用は、いくつかの利点を提供する。デーモン25にアプライアンス18との接続を維持させるか、またはキャッシュさせることによって、試験アプリケーション116bは、新しいセッションを繰り返し要求する必要がなく、したがって、時間を節約し、それは試験環境において重要である。また、デーモン25は、資産キャッシュ130にどれだけ多くの資産を記憶するかを制御するために、閾値を利用することができる。例えば、低閾値は、それを超えると、試験手順を妨害することなく、かつ依然として有する資産を転送し続けながら、アプライアンス18から資産の新しいバッチを別々に取得するために、デーモン23にエージェントAPI21を利用させることができる。また、複数の資産がアプライアンス18によって試験アプリケーション116aに直接提供される時、例えば、キーのバッチを送信する時に、終了時に試験アプリケーション116a上に残りの資産がある場合、これらの資産は、テスターのメモリから消去される場合があるため、損失し得ることが分かっている。この場合、AMS10が資産を無駄にし、1つ以上のエンティティが収益を失うか、または費用を吸収しなければならない。図6Bに示されるように、試験アプリケーション116bからデーモン25を分離することによって、このような状況では、デーモン25および資産キャッシュ130は、試験アプリケーション116bを抜けて生き残り、したがって、いずれの資産も、それらを回収する機会なく無駄にされない。したがって、デーモン25がシャットダウンする場合に、残りの資産は、無駄としてマークされ得、申込者が許可すれば、残りの数量を顧客に返済できることを確実にするように、ログレポートを生成し、アプライアンス18に返信することができる。他の実施形態では、残りの資産を単純に試験アプリケーション116bの次のインスタンスのために維持することができる。
デーモンAPI23は、図6Bに示されるように、独立型アプリケーションを作成するために使用することができ、または他の実施形態では試験アプリケーション116bに埋め込むこともできる。デーモンAPIは、試験アプリケーション116bにおける資産およびログレポート122の管理を解除するために使用されるべきである。デーモンAPI23は、クライアントまたはサーバモードで作成することができる。サーバモードでは、それは、アプライアンス18に接続し、資産の取り出しおよびログレポート122の送信を自動的に管理する。クライアントモードでは、それは、AMS資産およびログに対してすでに作動しているサーバモードデーモンアプリケーションに接続する。デーモン25の別のインスタンスがすでに作動しているか否かに応じて、デーモンAPI23がクライアントまたはサーバモードを使用する、自動モードもあり得る。デーモンAPI23は、AMS製品(または資産)およびログの管理のためのテキストベースの構成指令を使用する。これらの指令は、コンパイル時間において、ファイルから、またはメモリから読み出すことができる。構成指令は、1つ以上の製品プロファイルを含む。製品プロファイルは、AMS製品の名前、アプライアンス18にログインするための接続証明、リソース管理過程、および過程設定を含む。リソース管理過程は、プロファイルと関連付けられた製品の資産およびログを管理するために使用される。該過程は、資産つぎ足しレベル(最小資産および最大資産)、およびログがアプライアンスに自動的に送信される閾値レベル(最大ログ)に対する構成可能な指令を含む。
アプライアンス18は、典型的には、ペアで送達されるので、エージェント20は、両方のアプライアンス18、18’のIPアドレス、ならびにアプライアンス故障の場合での一方のアプライアンス18から他方のアプライアンス18’へのフェイルオーバーを伴って構成されるべきである。エージェント20は、例えば、エージェント20がアプライアンス18、18’のうちの一方に接続できない場合に、エラーを報告するべきである。接続エラーの場合、他方のアプライアンス18へのフェイルオーバーの前にエージェント20が待つ時間が、構成可能であるべきである。
ACC12は、チップの設計に統合される小型かつ効率的な暗号セキュリティエンジンである。ACC12は、製造されているデバイス14に統合され、したがって、並行であるがAMS10とは別々に確立される。AMS10は、アプリケーションに応じて、ACC12を伴って、または伴わずに使用することができる。例えば、シリアライゼーションおよびキー注入は、ACC12を必要としなくてよいが、特徴起動サービスモジュールは、典型的にはそれを必要とする。しかしながら、ACC12は、シリアライゼーションおよびキー注入を伴うアプリケーションで使用することができる。
ACC12は、典型的には、SoCダイに組み込まれ、次いで、SoCダイは、チップに盛り込まれ、チップは、プリント基板(PCB)上に載置され、最終的に電子デバイス14に組み立てられる。ACC12を有する全チップは、ウエハ試験に合格するとすぐに、コントローラのデータベース110に登録し、記録を取ることができ、それは次に、ウエハ試験を受けた、製造された全チップを追跡することができる。ACC12は、1組の出力ポートを有し、これらの出力の集約を評価することは、どの特徴が有効にされるべきであり、どれが無効にされるべきかを示す。いったん組み立てられると、ACC12は、依然として最終デバイス14上の信用の根拠の役割果たすことができる。
ACC12は、不揮発性メモリ(NVM)へのアクセスを管理するように、および無許可エージェント20によってアクセスされることからNVMのある領域を保護するように設計されている。ACC12は、ACC12を一意的に識別するために使用される、一意のデバイスID(UID)の内蔵型生成を提供することができる。ACC12はまた、信用できるサーバとの安全な通信チャネルを開くために使用されるキーの内蔵型生成も提供することができる。ACC12は、特徴の有効化および無効化が、信用できるソースによって信用できる機器を使用して行われることを確実にするべきであり、ACC12は、デバイス14が改ざんされていないことを確認するように、デバイス自己試験および健全性チェックを開始または無効化することが可能であるべきである。ACC12はまた、過剰に多くの無効コマンドが発行された時はいつでも、デバイスをロックアウトすることもできる。ACC12は、アプライアンス18からのコマンドを処理するために使用され、特定数の不正コマンドを検出した場合に、自ら動作停止するようにプログラムすることができる。AMS10のセキュリティ特徴が、アプライアンス18とACC12との間のデータリンクを信用できることに必ずしも依拠しないので、ACC12は、任意の電子製造試験環境で稼働するように設計されるべきである。代わりに、暗号作成法を使用して、セキュリティが通信プロトコルに組み入れられる。結果として、AMS10は、ウエハ製造からODM、OEM、ユーザの間のどこにおいても、安全かつ監査可能な方式で、プロビジョニングが生じることを可能にする能力を提供する。
ACCとアプライアンスとの通信チャネルを確保するために、ACC12は、キー交換のための非対称暗号作成スキーム、およびそれとアプライアンス18との間でメッセージを転送するための対称キー暗号作成スキームを使用する。非対称暗号作成スキームは、秘密の非公開キーから生成される公開キーを使用する。非公開キーは秘密に保たれ、公開キーは暴露される。非公開キーが安全で高度な改ざん防止設定で保護されることは必須である。組み込みACC12は、秘密キーが暴露されることから保護するハードウェアおよびファームウェアの組み合わせを用いて、内部で、かつ自律的に、一意の非公開キーを生成することが可能であることによって、この要件を満たすことができる。ACC12は、各デバイス14に対する一意の識別子を生成し、アプライアンス18との暗号化されたチャネルを通して、デバイス14のトラッキングおよびプロビジョニングに関与する。いったん両者が対称キーに合意すると、アプライアンス18は、安全な方式で、本明細書では特徴制御チケット(FCT)50と呼ばれる機密メッセージをACC12に発行する。ACC12は、図51から66を参照して、以下でより詳細に説明される。
上記で論議されるようにAMS10を実装するために、種々のセキュリティの考慮が行われるべきである。上記のように、コントローラ22およびアプライアンス18における高信頼性計算は、HSM19の内側で、特に、典型的には製造業者とエンティティとの間に種々のレベルの信用を伴って別のエンティティで作動している、アプライアンス18上で、行われるべきである。シリアライゼーションを実施する時に、アプライアンス18では、コントローラ22から受信されるシリアル番号スキーマ(そのようなスキーマは以下で説明される)に基づいて、シリアル番号を生成することのみが可能であるべきである。キー注入のために、アプライアンス18は、コントローラ22から直接受信される、すなわち、別のアプライアンス18からは受信されない、順序付けられたキーを解読することのみが可能であるべきである。特徴起動のために、アプライアンス18は、コントローラ22から直接受信される、すなわち、別のアプライアンス18からは受信されない、FCT50を解読することのみが可能であるべきである。AMS10によって使用されるクレジットまたは測定スキームは、アプライアンス18がコントローラ22から直接受信されるクレジット通知のみを使用することができるように確保されるべきである。アプライアンス18は、別のアプライアンス18に誤って送信された資産を使用することができないことを確実にするように準備された、コントローラ22からの資産のみを使用するべきである。アプライアンス18が別のアプライアンス18からのクレジット通知を使用することは可能であるべきではなく、攻撃者がアプライアンス18上のクレジットの数を追加、除去、または変更することは可能であるべきではない。しかしながら、一意の資産が1回以上使用されないことを確実にするために、機構が定位置にある場合、高可用性/フェイルオーバー目的で、1つのアプライアンス18上の資産が別のアプライアンス18に複製されることを可能にするようにAMS10を構成できることを理解することができる。コントローラ22の管理のために、ウェブブラウザ100は、http上でウェブサーバ104にアクセスすることのみが可能であるべきであり、例えば、相互に認証される、暗号化される、完全性チェックされる、再生保護される等、通信が確保されるべきである。
ウェブサーバ104とコントローラデーモン106との間、およびCLIユーティリティ102とコントローラデーモン106との間の通信は、例えば、SSLを使用して、図3に示されるように確保されるべきである。同様に、コントローラ22とアプライアンス18との間、およびアプライアンス18とエージェント20との間の通信は、例えば、SSLを使用して、確保されるべきである。アプライアンスHSM19とACC12との間の通信は、ACCプロトコルを使用して確保されるべきであり、ACC12は、アプライアンス18を認証するべきである。アプライアンス18は、信用できる根拠と見なされる際には、ACC12を認証する必要がない。エージェント20からアプライアンス18へ、そこからコントローラ22へのログは、暗号化され得、傍受および改ざんを防止するように完全性保護されるべきである。コントローラ22のみが、ログを解読し、その正当性を認証することが可能であるべきである。これらのログは、生産高データ等のカスタムデータを含み得る。コントローラ22およびアプライアンス18は、攻撃に対して強化されるべきである。この強化は、HSM19上で作動するものを含む、OSおよびアプリケーション(例えば、データベース110)に適用される。
全ての証明書は、好ましくは、顧客ごとのAMSサブルート証明書上で署名される、信用できるデバイスCAによって発行される楕円曲線暗号化(ECC)証明書である。次いで、ECC証明書は、ウェブサーバ104、コントローラデーモン106、アプライアンス18、およびエージェント20のそれぞれの間のSSLに使用され、つまり、HSM証明書のために、AMS10の中の全HSM19のために、およびACC12とのECMQVネゴシエーションで使用されるACC証明書のために使用される。顧客名は、証明書に組み込まれるべきであり、通信が同じ顧客名を伴うエンドポイントとの間でしか発生しないようにチェックされるべきである。データベース110に記憶されたデータは、無許可アクセスおよび修正に対して保護されるべきである。
(AMS用の製品およびサービスモジュール)
本明細書で開示される実施例では、製品は、製品の名前、その識別、それが提供するサービス、どのアプライアンス18が製品を生産しているか、および資産のリストをAMS10に提供する、モデルである。例えば、資産は、シリアライゼーションスキーマの集合、およびスキーマ集合が適用されるアプライアンス18のリストであり得る。同様に、資産は、キー種類の集合、およびキー種類が該当するアプライアンス18のリストであり得る。さらに別の実施例では、資産は、FCT50の集合、および対応するアプライアンス18のリストであり得る。本明細書で論議されるサービスモジュールは、AMS構成要素のそれぞれ(コントローラ22、アプライアンス18、エージェント20、およびACC12)が生産過程で何を提供するかを決定する。以下の実施例のAMS10は、シリアライゼーション、キー注入、および特徴起動のためのサービスモジュールを定義することができるが、他の種類の資産を送達し、提供するように、他のサービスモジュールを適用できることが理解されるであろう。シリアライゼーション、キー注入、および特徴起動サービスモジュールの構成の実施例は、それぞれ、図7A、7B、および7Cに示されている。
(シリアライゼーション)
最初に図7Aを参照すると、シリアライゼーションサービスモジュールは、一意のシリアル番号を生成し、それをチップ(または他の電子オブジェクトあるいはデバイス)に割り当て、それを追跡する安全な手段を提供するために使用される、AMS10の構成である。このサービスを提供するためには、コントローラ22が、製品モデルを定義し、次いで、各製品モデルに結び付けられる1つ以上のシリアライゼーションスキーマ134を定義するために使用される。各シリアライゼーションスキーマ134は、特定の製品(例えば、デバイス14)に対する一連のシリアル番号を含む。シリアル番号スキーマ134は、同期化動作が行われる時にはいつでも、典型的には自動的に、安全な暗号化された接続上で(例えば、SSL上で)製造業者の場所におけるアプライアンス18に送信される。次いで、エージェント20は、エージェントAPI21またはデーモンAPI23を使用して、製品名別にシリアル番号値を要求することができる。シリアル番号は、アプライアンス18によって生成され、測定され、エージェント20に提供される。次いで、シリアル番号は、エージェント20を使用して、チップ製造過程において各ダイの中へ連続的に注入される。コントローラ22は、各シリアライゼーション製品に対していくつのシリアル番号が消費されたかを追跡し、GUI8においてこれらの結果を入手可能にする。
シリアライゼーションスキーマ134は、どのようにシリアル番号が生成されるかについての規則を定義するオブジェクトである。例えば、それは、シリアル番号の数字が16進数で表されるか10進数形態で表されるか、および固定文字列が含まれるかどうかを決定する。1つ以上のシリアライゼーションスキーマ134をシリアライゼーション製品に結び付けることができるが、特定のスキーマ134は1つの製品にしか結び付けられることができない。製品に結び付けられるシリアライゼーションスキーマ134は、重複することができず、いったん結び付けられると、スキーマ134は結び付きを解除されるべきではない。他の変更のために、例えば、挿入されている静的文字列を変更するために、新しいシリアライゼーションスキーマ134が作成されるべきである。
1つより多くのスキーマ134が同じ製品に結び付けられる場合、そのような複数のスキーマ134は、優先順位で割り当てられるべきである。製品に対するシリアル番号文字列を要求する時に、シリアル番号は、最高優先順位を伴うスキーマ134から与えられる。スキーマ134が使いつくされた(すなわち、スキーマ134からのカウント値が全て割り当てられている)場合には、次の最高優先順位を伴うスキーマが使用される。シリアライゼーション製品は、2つ以上のアプライアンス18に結び付けることができ、各結び付きは、最小および最大在庫レベルを有する。コントローラ22は、複数のアプライアンス18に結び付けられる製品が一連の非重複シリアル番号を有することを確実にするために、使用することができる。製品がアプライアンス18に結び付けられると、コントローラ22は、特定最大レベルでシリアル番号の在庫を保つ。いったん在庫がコントローラ22からアプライアンス18に送信されると、シリアル番号値は、呼び戻される、または取り消されることが可能であるべきではない。
シリアル番号スキーマ134は、どのようにして基準値をシリアル番号文字列に変換するかを記述し得る。この実施例では、シリアル番号基準値という用語は、任意の正の64ビット整数を指し、基準属性と混同されるべきではない。シリアル番号スキーマ134は、開始、カウント、基準、および総文字数といった、いくつかの属性を有する。開始およびカウント値は、スキーマにおいて許容される基準値の範囲を定義する。基準属性は、基準値がシリアル番号文字列に変換される時に、10進数形式で表されるか16進数形式で表されるかを決定する。総文字数属性は、基準値をシリアル番号文字列として表す時に、いくつの文字を使用するかを定義する。ゼロ以上の静的文字列を、シリアル番号文字列の中の任意の場所に挿入することができる。スキーマ134における最大値を表すために必要とされる最小数の文字より少ない数を特定することが可能であるべきではないことが留意され得る。例えば、スキーマ134が0から始まり、カウントが1000である場合には、スキーマが範囲[0,999]を定義し、3つの文字が999を表すために必要とされるため、3つ以上の文字が存在するべきである。
所望のシリアル番号スキーマ134および基準値が与えられると、シリアル番号文字列は以下のように構築される。
a)基準値は、[開始値、開始値+カウント−1]の範囲内でなければならない。
b)次いで、基準値は、特定形式で表される。
c)次いで、結果として生じた文字列は、総文字数属性に応じて、左または最上位端から切り捨てられ、または、左側にゼロが付け足される。
d)次いで、任意の静的文字列が結果として生じた文字列に挿入される。
実施例A―スキーマA=(開始=1、カウント=100、文字数=4、基準=16)および基準値=55である場合、結果はシリアル番号0037である。これは、55が範囲内であり、55に対する16進数形式が37であり、4つの文字が必要とされ、したがって、2つのゼロを付け足すためである。基準値=3である場合、結果はシリアル番号0003である。
実施例B―スキーマB=(開始=1、カウント=100、文字数=3、基準=10、静的文字列1=(pos=3,str=X)、静的文字列2=(pos=1,str=−))であり、基準値が56である場合、結果はシリアル番号文字列0−56Xである。これは、56が範囲内であり、56がすでに基準10においてであり、Xが位置3(すなわち、最下位位置)に挿入され、ダッシュ(−)が位置1(すなわち、最上位位置)に挿入されるためである。56はたった2文字であるため、シリアル番号を付け足すためにゼロが使用される。基準値=1である場合、結果は2つのゼロが付け足されたシリアル番号文字列0−01Xである。
シリアライゼーションサービスモジュールは、シリアル番号スキーマがコントローラ22からアプライアンス18に送信される時(コントローラ活動ログとして記録される)、シリアル番号がアプライアンス18によって生成され、エージェント20に送信される時(アプライアンス活動ログとして記録される)、およびシリアル番号がエージェント20によって使用される時(エージェント活動ログとして記録される)に、ログを作成する。全てのログは、(収集された後に)コントローラ22上で保たれ、シリアル番号の使用を監視し、追跡するために使用することができる。シリアル番号がエージェント20に発行される度に、発行アプライアンスのクレジットが1ずつ減らされ、その製品に対するシリアル番号在庫が減らされる。両方のレベルは、コントローラ22とアプライアンス18との間の同期化動作中に補充され、アプライアンス18のシリアル番号使用を測定するために使用される。
図8は、図2に示された基準AMSシーケンス図に基づいてシリアライゼーションサービスモジュールを実装するためのシーケンス図を図示する。図8では、コントローラ22がシリアライゼーションスキーマ134を生成し、これらを製品に結び付け、次いで、製品をアプライアンス18に結び付け、製品およびスキーマをアプライアンス18に送信し、それにより、シリアル番号が生成され、測定されることが分かる。
再び図7Aを参照すると、シリアライゼーション製品ワークフローが示されている。この実施例では、ビジネスマネージャが、シリアライゼーションスキーマを文書化し、提案されたスキーマをAMS管理者に伝達することによって、シリアライゼーションスキーマを定義し得る。次いで、AMS管理者は、シリアライゼーションスキーマ134を生成するために、コントローラGUI8を使用し得る。ビジネスマネージャはまた、シリアライゼーション製品を定義し、この製品定義を文書化し、定義をAMS管理者に伝達することもできる。次いで、AMS管理者は、コントローラGUI8を使用して、定義ごとにシリアライゼーション製品を作成し得る。次いで、AMS管理者は、続けて、シリアル番号スキーマを製品に結び付け、製品をアプライアンスに結び付け、シリアル番号スキーマをアプライアンス18と同期化するためにコントローラ22を使用する。次いで、アプライアンス18は、例えば、図8に示されたシーケンスごとに、シリアル番号を注入するためにエージェント20を使用する。
シリアライゼーション製品は、定義されると、AMS10によって一意の製品IDが割り当てられ、他の製品から区別するために、操作者によって一意の識別名が提供される。各シリアライゼーション製品について、アプライアンス18は、シリアル番号をエージェント20に直接送達することができ、またはFCT50を介してシリアル番号を送達することができる。シリアル番号がFCT50を介して送達される場合には、操作者は、以下で提供される実施例において、シリアル番号が記憶される、ACC12内の2バイトメモリオフセット(16進数)を特定し、また、8バイト記録タグ値(16進数)も特定する必要がある。
アプライアンス18は、コントローラ22からシリアル番号製品/スキーマを受信し、シリアル番号に対するエージェント20からの要求に応答し、シリアル番号スキーマ134に基づいてシリアル番号を生成し、シリアル番号を測定し、エージェント20からログを受信し、コントローラ22にログを返送する。アプライアンスクレジットは、エージェント20に送達される各シリアル番号について1ずつ低減され、クレジットがゼロ(0)に達した場合、もはやシリアル番号が送達されるべきではない。シリアル番号がFCT50を介して送達されるものである時に、直接送達されることが可能であるべきではなく、すなわち、アプライアンス18がそのような要求を拒否するべきである。また、FCT50を介して送達される時に、アプライアンス18におけるロギングは、ACC UIDの記録も取られるべきであることを除いて、シリアル番号が直接送達される時と同一となるべきである。構成可能な受信ブロックサイズが適応されるべきである(アプライアンス18から単一のブロックで返信されるログの数)。シリアル番号がFCT50を介して送達される時に、ACCフラグ、記録タグ、およびメモリアドレスデータが、アプライアンス18上の改ざんから保護されるべきである。
エージェント20は、シリアライゼーション製品名およびカウント別に、エージェントAPI21またはデーモンAPI23を使用して、アプライアンス18からシリアル番号を要求することが可能であるべきである。エージェント20はまた、送達のための2つの機構、すなわち、直接、またはFCT50を介する機構をサポートするべきである。エージェント20は、各シリアル番号の使用の記録を取り、ログをアプライアンス18に返信するべきである。エージェント20はまた、無駄として破棄されたシリアル番号の記録を取るべきである。シリアル番号がFCT50を介して送達される時に、エージェントにおけるロギングは、ACC UIDの記録も取られるべきであることを除いて、シリアル番号が直接送達される時と同一となるべきである。
上記で論議されるように、エージェント20は、例えば、デーモンAPI23を使用する時に、試験アプリケーション116bからログデータ128を取得する。AMS10によって提供される監査チャネル6は、製造過程中に種々の相関が作られることを可能にすることが分かっている。例えば、シリアル番号をテスター16の中のチップに追加する時に、テスター16は、典型的には、ウエハ上の特定のチップの場所を知っている。この場所は、追加されたシリアル番号とともに記録を取ることができ、最終的に、この情報は、コントローラ22によって関係データベース110に記憶される。このようにして、以降で、チップが製造過程中の試験で不合格になった場合、欠陥が機械内のプロセッサ場所のある部分で発生したかどうかを決定するように、不合格になったチップのシリアル番号を、チップがダイの上にあった場所と相関させるために、関係データベース110を使用することができる。別の実施例では、ある時のある機械での故障を追跡するために、またはチップの窃盗疑惑においてある従業員を識別するためにも、シリアル番号の追加と関連付けられたタイムスタンプを使用することができる。したがって、監査チャネル6および関係データベース110は、説明責任を向上させるため、および製造過程中の故障の根本原因を是正するためのデータマイニングおよび分析に利用することができる。
(キー注入)
ここで図7Bを参照すると、キー注入サービスモジュールは、製品(例えば、デバイス14)にキーを注入する安全な手段を提供する、AMS10の構成である。このサービスを提供するためには、コントローラ22が、1つ以上のキー種類138を定義するために使用される。キー種類138は、ファイルの中のキーの形式を定義する。次いで、コントローラ22は、製品モデル140を定義するため、次いで、図7Bで一例のみとして示されるように、1つ以上のキー種類138を各製品モデル140に結び付けるために使用される。製品からキー種類を分離することなく、キーを製品定義に直接追加することによって、プロジェクト名および製品名が異なるアプリケーションで顧客によって定義される異なる方法から、混乱が発生し得ることが分かっている。例えば、複数のキー種類が「製品バケット」に追加された場合、その製品のクレジットが低くなると、キーのうちのどれが低いのかを決定し、したがって、どのキーをつぎ足すべきかを知ることが困難であり得る。図7Bに示されるように、製品140からキー種類138を分離することによって、典型的に顧客がどのようにして資産を利用するかをより密接に反映するように、付加的なレベルの抽象化が提供される。このようにして、コントローラ22は、誤ったキーを不意に取り込むことを回避するために、および各キー種類138の実際の在庫レベルをより良好に追跡するために、1つ以上のキー種類138の「ブロブ」ならびに他の資産を形成することができる、製品種類140を定義するために使用されることができる。そのようなものとして、例えば、図7Bに示されるようなDVD136上でキーがインポートされると、その製品種類140に使用されるキーの数および種類との論理的相関を必ずしも伴わずに、異なる名前によって呼ばれる、ある製品にキーを直接割り当てようとするよりもむしろ、キーは、キー種類に従って明確に異なる「バケット」に分離される。代わりに、キーは、単純にキー種類138別に分離され、次いで、顧客定義関連性は、製品種類140の抽象化によって定義される。また、製品140を定義する時に、製品140が、例えば、ある配布者からのあるキー種類のみを使用するように、ある許可を確立することができる。種々の契約上の義務に従って、あるキー種類138が提供され得るため、キー種類138の分離および割当に対するより良好な制御は、そのような契約上の義務が順守されることを確実にする。
また、図7Bには、顧客特有の方法で、あるキー種類138を修正するために使用することができる、キー変換139も示されている。図7Bに図示されるように、キー変換139は、例えば、そのキー種類138のキーが常に、変換されたキー種類138が定義されるような方法で変換されるものである場合に、キーをインポートする時に適用することができる。代替として、キー変換139は、送達前または送達時に適用することができ、キーは、製品特有の基準で、またはアプライアンス特有の基準で変換される。さらに別の代替案では、キー変換139は、キーがエージェント20に送達される前にアプライアンス18において適用することができる。キー変換139が適用される場所を決定する時に、キー変換139が位置する場所に基づいて、セキュリティの考慮が行われるべきであり、例えば、その場所におけるより低い信頼により、アプライアンス18にある時は、より高いセキュリティである。示されるようにキー種類138および製品種類140を分離することによって、必要とされるキー種類138の数を最小限化するように、変換139をキー種類138よりもむしろ製品140と関連付けることができることが留意され得る。言い換えれば、キー種類138は、インポートされたものとして別々に記憶することができ、キー変換139は、さらに別のキー種類138を追加すること、およびこれが引き起こし得る潜在的混乱を回避するように、製品種類140ごとに実施することができる。
いったんキー種類138が定義されると、GUI8を使用して、その種類のキーをキーファイルから(例えば、DVD136を介して)コントローラ22上にインポートすることができる。次いで、操作者が、アプライアンス18に送信されるキーの数を特定するためにGUI8を使用することができる。ハッシュが定義された場合には、AMS10がハッシュ値を検証する。キーは、同期化動作が行われる時にはいつでも、この実施例では自動的に、安全な暗号化された接続上で(例えば、SSL上で)製造業者の場所におけるアプライアンス18に送信される。次いで、エージェントAPI21またはデーモンAPI23を使用して、製品名別にキーを要求することができる。エージェント20は、キーを取り出すと、製品およびその製品のユニット数を求める。アプライアンス18は、この製品に結び付けられる全てのキー種類を問い合せ、各キー種類に対する特定数のキーを返信する。次いで、キーは、エージェント20によって組立ライン上の各ダイに注入される。
キー注入製品は、1つ以上のアプライアンス18に結び付けることができ、各結び付きは、最小および最大在庫レベルを有する。製品がアプライアンス18に結び付けられると、コントローラ22は、特定最大レベルでキーの在庫を保つ。いったん在庫がコントローラ22からアプライアンス18に送信されると、キーを呼び戻す、または取り消すことはできない。コントローラ22は、各キー種類138に対していくつのキーが注入されたかを追跡し、GUI8においてこれらの結果を入手可能にする。図9は、キー注入サービスを実施するための例示的なシーケンス図を図示する。シリアライゼーションと比較すると、キー注入はまた、ファイルからキーをインポートするステップも有することが分かるが、キーはまた、コントローラ22によって生成し、キー種類を定義する時に行うことができることが理解できる。したがって、図9に示されたシーケンスは、例証目的のためにすぎない。
キー注入のためにAMS10を実装する時に、キーデータは、コントローラ22上にインポートされた後に、プレーンテキストで記憶されるべきではない。解読は、ACC12が使用されない限り、アプライアンス18がキーをエージェント20に送達する時のみに発生するべきであり、その場合、データは、ACC12によって(すなわち、FCT50内のキーを処理することによって)処理されない限り、解読されない。
キー種類138は、ファイルの中のキーの形式を定義する、いくつかの属性を有する。典型的なキー種類定義を、HDCP_TXキーについて、以下の表1に提供する。
キー注入サービスモジュールは、成功しようと、失敗しようと、無駄になろうと、キーがアプライアンス18に送信される時(コントローラ活動ログ)、およびキーがエージェント20によって消費される時(エージェント活動ログ)に、ログを作成するように構成される。そのようなログイベントは、図9に示されている。全てのログは、同期化動作中にアプライアンス18によって返信された後に、コントローラ22上に記憶され、キーの使用を監視し、追跡するために使用することができる。キーがエージェント20に発行される度に、発行アプライアンスのクレジットが1ずつ減らされ、その製品に対するキー在庫が減らされる。両方のレベルは、コントローラ22とアプライアンス18との間の同期化動作中に補充され、アプライアンス18上の使用を測定するために使用される。
シリアライゼーションと同様に、各キー注入生産は、AMS10による一意の製品ID、および操作者によって提供される一意の識別名が割り当てられる。各キー注入製品については、上記で論議される2つの機構、すなわち、キーをエージェント20に直接提供すること、およびFCT50を使用する送達が許容されるべきである。キーがFCT50を介して送達される場合、操作者はまた、ACC12内の2バイトメモリオフセット、および8バイト記録タグ値も特定する。各キー種類138は、AMS10による一意のキー種類ID、および操作者によって提供される一意の識別名が割り当てられる。キーは、この実施例では、バイトのストリームとして扱われる。
順序付けられたキーのプレーンテキストバッチを、コントローラ22のローカルにあるファイル(例えば、DVD136)からインポートすることができる。各キーは、AMS10によって一意のキーIDが割り当てられる。この一意のキーIDは、キーの中のキー識別子と同じではないことが留意され得る。キーファイルはまた、GUI8が作動しているリモートコンピュータからインポートすることもできる。特別な場合は、PGPに暗号化されたHDCPキーが、PGP解読され、次いで、インポートされることを可能にすることである。これらのHDCPキーのためにサポートされる、特別なファイル形式がある。PGP解読のために、GNU GPGを使用することができる。この場合、必要とされる証明書および公開キーは、すでにGNU GPGにインポートされていると仮定される。
特定のキー種類138のインポート中に、キー識別子が使用される場合には、キーのキー識別子は、そのキー種類138に対する全ての以前にインポートされたキー識別子と比較される。この機構は、別のキー種類に再び使用されているキーファイルから保護せず、したがって、動作規則を使用して防止されるべきであることが留意され得る。特定のキー種類のインポート中に、ハッシュが使用される場合には、ハッシュは、全てのキーについて計算され、検証される。このハッシュ計算は、HSM19を使用して実施されない。操作者は、特定のキー種類のキーをインポートしているジョブがすでに作動している場合、同じキー種類のキーをインポートすることができなくなるべきである。
1つ以上のキーが、キー注入製品に結び付けられることを許容されるべきである。各キー種類は、複数の製品に割り当てられ得る。各製品における各キー種類については、これらのキー種類のうちのいくつかが必要とされるかが特定されるべきである。キー種類は、製品がいずれのアプライアンス18にも結び付けられない場合にのみ、製品から結び付きを解除されることが可能であるべきである。各キー注入製品は、1つ以上のアプライアンス18に結び付けられることを許容されるべきである。各アプライアンス18は、それに割り当てられた複数のキー製品を有し得、アプライアンス18からキー注入製品の結び付きを解除することが可能であるべきである。コントローラ22は、アプライアンス18に重複キーを送信するべきではない。いったんキーがアプライアンスに送達されると、キーはコントローラ22から削除されるべきである。
シリアライゼーションと同様に、測定システムが使用されるべきであり、いったんキーがアプライアンス18に発行されると、それらは、返信されること、呼び戻されること、または取り消されることが可能であるべきではない。キーがFCT50を介して送達される時に、アプライアンス18およびエージェント20のロギングは、キーが直接送達される時と同一となるべきであるが、ACC UIDも含む。
キー注入サービスモジュールは、キーがインポートされる前に、コントローラ22においてキーの処理をサポートすることができ、キーが恣意的に変換されることを可能にし、本明細書ではキーインポート署名オブジェクトと呼ばれる。キーインポート署名オブジェクトは、定義されることが可能であるべきであり、各署名オブジェクトは、AMS10によって一意の署名オブジェクトIDが割り当てられ、各署名オブジェクトは、操作者によって提供される一意の識別名が割り当てられる。署名オブジェクトは、コントローラ22に存在する共有オブジェクトであり、署名を用いて暗号によって保護される。次いで、共有オブジェクトにおける機能は、操作者がキーを変換することを可能にするようにインポートされる前に、全キーについて1回呼び出される。キー識別子(例えば、HDCPの場合はKSV)は、署名オブジェクトが潜在的にそれを難読化した後でさえも、コントローラ22が常にそれにアクセスすることができるように、複製されるべきであることが留意され得る。キーインポート署名オブジェクトは、1つ以上のキー種類138に割り当てられることが可能であるべきであり、各キー種類138は、多くても1つのキーインポート署名オブジェクトしか有さないことが可能であるべきである。キーインポート署名オブジェクトは、キー種類138から割当を解除されることも可能であるべきである。
キー注入のために構成された時のコントローラ22はまた、解読された後であるが、アプライアンス18に送信される前に、コントローラ22においてキーの処理を可能にする、キー変換プラグイン139をサポートすることもできる。これは、キーからアプライアンスへの変換と呼ばれ得る。キー変換プラグイン139は、例えば、キーに対するハードウェア特有の修正またはエンドツーエンドプロトコル特有の修正が、顧客ごとに、または製品ごとに行われることを可能にする。これは、エラー訂正のためのビット割当等の修正が行われることを可能にし、変換は、キーをインポートする時に、またはアプライアンス18への送達の前に実施することができる。そのようなキーからアプライアンスへの変換139は、定義されることが可能であるべきであり、各変換は、AMS10によって一意の署名オブジェクトIDが割り当てられるべきであり、各変換は、操作者によって提供される一意の識別名が割り当てられるべきである。変換は、コントローラ22に存在する共有オブジェクトであり、署名を用いて暗号によって保護されるべきである。次いで、共有オブジェクトにおける機能は、キーを変換するために、アプライアンス18に送信される前に、全キーについて1回呼び出される。キー識別子は、変換が行われた後でさえも、コントローラ22が常にそれにアクセスすることができるように、複製されるべきであることが留意され得る。キーからアプライアンスへの変換は、製品に結び付けられると、1つ以上のキー種類138に割り当てられることが可能であるべきである。それぞれの結び付けられたキー種類138は、多くても1つまでのキーからアプライアンスへの変換を割り当てられるべきである。キーからアプライアンスへの変換は、製品におけるキー種類から割当を解除されることも可能であるべきである。
キー注入サービスモジュールはまた、解読された後であるが、エージェント20に送信される前に、アプライアンス18においてキーの後処理を可能にする、アプライアンス署名オブジェクトをサポートすることもできる。アプライアンス署名オブジェクトに関して、キー通過もサポートされるべきである。キー通過が有効であるか無効であるかに応じて、アプライアンス18がキーをエージェント20に送信する前に、アプライアンス署名オブジェクトが存在すべきか存在すべきでないかを強制する。これは、本明細書ではキーからエージェントへの署名オブジェクトと呼ばれ得る。
キーからエージェントへの署名オブジェクトは、定義されることが可能であるべきであり、各署名オブジェクトは、AMS10によって一意の署名オブジェクトIDが割り当てられ、各署名オブジェクトは、操作者によって提供される一意の識別名が割り当てられる。署名オブジェクトは、コントローラ22上に存在する共有オブジェクトであり、署名を用いて暗号によって保護される。次いで、共有オブジェクトにおける機能は、キーを変換するようにアプライアンス18に送信される前に、全キーについて1回呼び出すことができる。キー識別子は、変換が行われた後でさえも、コントローラ22が常にそれにアクセスすることができるように、複製されるべきであることが留意され得る。キーからエージェントへの署名オブジェクトは、1つ以上のキー種類に割り当てられることが可能であるべきである。各キー種類は、多くても1つまでの割り当てられたキーからエージェントへの署名オブジェクトを有するべきであり、キーからエージェントへの署名オブジェクトは、キー種類から割当を解除されることも可能であるべきである。キー注入サービスモジュールはまた、新しいキーを送達することなく、コントローラが現在のキーレベルのみを問い合せ、アプライアンスからログを取り出す、読み出し専用同期モードもサポートすることができる。
アプライアンス18は、エージェント20に重複キーを送信するべきではなく、いったんキーが送達されると、キーはアプライアンス18から削除されるべきである。キーがFCT50を介して送達される時は、直接送達されることが可能であるべきではなく、キー注入製品がアプライアンス18から結び付きを解除される時に、その製品に属する全てのキーは、アプライアンス18から削除されるべきである。
エージェント20は、製品名およびカウント別に、アプライアンス18からキーブロブを要求することが可能であるべきであり、各ブロブは、いくつのキー種類が製品に結び付けられるかに応じて、1つ以上のキー種類を含むべきである。例えば、製品が3つのキー種類を利用する場合、キーブロブは3つのキーを含む。エージェント20は、テスター16に重複キーを送信するべきではない。いったんキーがテスター16に送達されると、エージェント20から削除されるべきである。エージェント20はまた、キーブロブにおける各キーの使用の記録を別々に取るべきであり、かつ、エージェント20が破棄する意図であるあらゆるキーの記録を取るべきである。
(特徴起動)
AMS10は、図7Cに示されるように、特徴起動サービスモジュールを提供されるように構成されると、ACC12を使用して、製造後に、製品の特徴セットを動的に起動または動作停止する安全な手段を提供する。上記のように、ACC12はまた、シリアライゼーションおよびキー注入サービスモジュールとともに使用することもできるが、特徴起動サービスモジュールとともに使用するために特に有利である。このサービスを提供するために、コントローラ22は、1つ以上のFCT50を定義するために、次いで、製品モデルを定義するために使用される。次いで、FCT50は、各製品モデルに結び付けられ、その場合、全てのFCT50はまた、その製品を生産するアプライアンス18にも結び付けられる。次いで、FCT50は、ACC12を使用して、組立ライン上の各ダイに適用される。製品は、1つ以上のアプライアンス18に結び付けることができ、各結び付きは、最小および最大在庫レベルを有する。製品がアプライアンス18に結び付けられると、コントローラ22は、特定最大レベルでFCT50の在庫を保つ。いったん在庫レベルがコントローラ22からアプライアンス18に送信されると、FCT50は、呼び戻されること、または取り消されることが可能であるべきではない。コントローラ22は、各製品に対していくつのFCT50が適用されたかを追跡し、GUI8においてこれらの結果を入手可能にする。
本明細書で説明される実施形態では、ACC12は、256ビット(32バイト)特徴レジスタ120、タグレジスタ、およびNVRAMを含む。特徴レジスタ120は、デバイス14上の特徴を制御する(オンまたはオフにする、あるいは部分的にオンまたは部分的にオフにする)ために使用されるように意図されている。正確にどのようにして特徴がオンにされる、オフにされる等は、デバイス依存である。FCT50によって提供されるACCコマンドは、特徴レジスタ120、タグレジスタ、およびNVRAMからデータを読み出すか、またはそれにデータを書き込むために使用される。FCT50は、特徴データおよび記録タグを含む。特徴データは、どの製品特徴を起動または動作停止するかを決定する。記録タグは、特徴データを使用して、どの特徴の記録がACC12によって起動されるかを提供する。特徴データは、ACC特徴レジスタ120にプログラムされ、記録データは、ACCタグレジスタにプログラムされる。記録タグの値も、顧客依存である。特徴レジスタに書き込む2つのコマンド(以下でより詳細に説明される)は、SETFEATおよびSETFEAT_TEMPである。後者を使用する時、記録データは、NVRAMに保存されず、電源を切った時に失われる。
ACC12はまた、この実施例では、64ビット(8バイト)記録タグ(レジスタ)を含む。記録タグは、何がACC12上にプログラムされているかを記録するために使用されるように意図されている。記録タグは、ACC12に書き込むコマンドのうちのいずれかを使用する時に設定される(SETFEAT_TEMPを除く)。どのように記録タグが解釈されるかはアプリケーション依存である。ACC12はまた、実装依存量のNVRAMも含む。NVRAMに書き込むコマンドは、WRACCESSである。通常、書き込むことができるデータの最大量が課せられ、例えば、500バイトである。何がNVRAMに書き込まれるか、およびそれが書き込まれる場所は、実装依存である。
FCT50は、同期化動作が生じる時にはいつでも、自動的に、安全な暗号化された接続上で(例えば、SSL上で)製造業者の場所におけるアプライアンス18に送信される。次いで、FCT50は、エージェントAPI21またはデーモンAPI23を使用して、製品名別にエージェント20によって要求することができる。エージェント20が特徴起動製品を要求すると、その製品に個別に結び付けられた全てのFCT50を取得する。エージェント20がアプライアンス18からFCT50を取り出すと、その名前のACC使用可能製品について全てのサービスモジュールを問い合せ、その場合、複数のFCT50がエージェント20に送達され得、次いで、ACC12に個別に送信される。エージェントAPI21は、ACC12と直接連動しなくてもよく、その場合、実装依存インターフェースが必要とされる。特徴起動サービスモジュールを使用する時に、特徴データは、コントローラ22から退出した後、およびACC12に進入する前に、決してプレーンテキストとなるべきではない。
図10Aで見ることができるように、特徴起動サービスモジュールは、
特徴データがアプライアンスに送信される時(コントローラログ)、特徴データがエージェント20に送信される時(アプライアンスログ)、および特徴データがACC20に送信される時(エージェントログ)に、ログを作成する。全てのログは、同期化動作中にアプライアンス18によって返信された後に、コントローラ22上に記憶され、特徴の使用を監視し、追跡するために使用することができる。特徴データがアプライアンス18上で使用される度に、アプライアンスクレジットが1ずつ減らされ、各アプライアンス18はまた、特徴データが使用される度に1ずつ減らされる、特徴データ製品レベルを維持する。特徴データレベルおよびクレジットレベルは、コントローラ22がアプライアンス18を同期化する時に補充される。これらの機構の両方は、アプライアンス18上の特徴データの使用を測定するために使用される。
図10Aでは、製品および特徴データの定義、ならびにFCT50およびログ報告の送達は、シリアライゼーションおよびキー注入で使用される機構と同様である。しかしながら、ACC12を利用する時に、資産の注入または適用のための通常ループが、キー生成を伴うループ1、および特徴プログラミングを伴うループ1内のループ2といった、1対のループに分離されることを観察することができる。ループ1は、以下で詳細に説明されるコマンドcmd[STARTACC]を提供することによって開始される。ループは、コマンドcmd[STOPACC]を提供することによって終了される。ループは、図10Bでより詳細に示されている。いったんcmd[STARTACC]を提供すると、ACC12は、公開キーを生成し、しばらくした後、エージェント20は、ACC公開キーを取得するためにコマンドcmd[REQRESP]を送信することによって、応答を要求する。エージェント20は、これらの公開キーを次にアプライアンス18に提供し、アプライアンス18は、例えば、以降で例示されるようなECMQVプロトコルを使用して、共有キーを生成するためにこれらのキーを使用する。アプライアンス18は、ACC12との安全な接続を開いており、特徴を測定および暗号化し、このイベントの記録を取ることができる。次いで、アプライアンス公開キーおよび暗号化された特徴は、エージェント20に提供される。次いで、エージェント20は、FCT50を含むコマンドcmd[INITIAL FCT|FCT]を送信することによって、特徴プログラミングループを開始する。次いで、特徴は、ACC12によって特徴レジスタ120にプログラムされ、エージェントは、cmd[REQRESP]を使用して、再度応答を要求する。それに応じて、ACC12は、特徴プログラミングステップに関する暗号化された応答を提供し、エージェント20は、このイベントの記録を取る。安全な特徴が確立されるため、上記のようにループが終了する前に、付加的な特徴プログラミングステップを適用することができる。
したがって、ACC12を伴うAMS10を実装する時に、資産の一般的プロビジョニングおよび送達は、ACC12を必要としないサービスと同様であり、ACC12との安全な接続を確立するために必要とされる付加的な検討事項およびコマンドも必要とされることが分かる。これらの動作はまた、シリアル番号およびキーを運ぶためのFCT50を利用するためにシリアライゼーションおよびキー注入サービスモジュールで使用されるように適合できることも理解することができる。そのようなものとして、AMS10によって提供される共通アプリケーションフレームワークを使用して、種々の実装が利用可能である。
本明細書で例示される他のサービスモジュールと同様に、特徴起動については、各製品は、AMS10による一意の製品ID、および操作者によって提供される一意の識別名が割り当てられるべきである。定義される各特徴には、AMS10による一意の特徴ID、および操作者による一意の識別名を割り当てることができる。各特徴は、コマンド種類を定義し、この実施例では、32バイトデータ値を定義する。1つ以上の特徴は、特徴起動製品に結び付けられることが許容されるべきであり、各特徴は、複数の製品に結び付けられ得る。特徴は、その製品がいずれのアプライアンス18にも結び付けられない場合にのみ、製品から結び付きを解除されることが可能であるべきである。各特徴起動製品は、1つ以上のアプライアンス18に結び付けることができ、各アプライアンス18は、それに割り当てられた複数の特徴起動製品を有し得る。
同期化動作中に、コントローラ22がアプライアンス18上で特徴起動製品レベルをつぎ足す場合には、測定過程を実装することができる。操作者は、本明細書で例示される他のサービスモジュールと同様に、警戒、最小、および最大レベルを定義する。特徴起動製品は、いずれのアプライアンス18にも結び付けられない場合に、コントローラ22上で修正/削除され得、特徴は、いずれの特徴起動製品にも割り当てられない場合に、コントローラ22上で修正/削除され得る。アプライアンス18は、いずれの製品もアプライアンス18にも結び付けられない場合に、コントローラ22上で削除することができる。特徴コマンド、記録タグ、およびデータは、アプライアンス18上の改ざんから保護されるべきであり、より多くのFCT50を提供することなく、クエリが行われ、ログが取得されることを可能にするように、読み出し専用同期モードがサポートされるべきである。
アプライアンス18は、以下で説明される図51から66で定義されるプロトコルを使用して、エージェント20を介したACC12への特徴の送達をサポートする。これは、コントローラ22から特徴起動製品を受信すること、特徴起動製品に対するエージェント20からの要求に応答すること、製品を測定すること、エージェント20からログを受信すること、およびログをコントローラ22に返送することを含む。アプライアンス18は、送達された各FCT50に対するアプライアンスクレジットを減らし、特徴起動製品がアプライアンス18から結び付きを解除されると、その製品に属する全ての特徴は、アプライアンス18から削除されるべきである。
エージェント20は、特徴起動製品名別にアプライアンス18から特徴を要求することができ、上記のプロトコルを使用してACC12と連動することができ、製品における各特徴をACC12に別々に送達し、特徴の使用の記録を取り、ログをアプライアンス18に返信することができる。特徴起動の特徴使用ログは、適切にフォーマットされた、顧客ログデータ用の単一の文字列フィールドを含むべきである。
(AMS GUI)
図11から50は、図1および3に示されたGUI8の例示的なスクリーンショットを図示する。GUI8は、この実施例では、AMS10に対するグラフィカルインターフェースを提供する、ウェブベースのアプリケーションである。説明されるように、GUI8は、意図されたユーザとしてのAMSシステム操作者を伴って設計されており、したがって、例えば、ユーザ名およびパスワードでログインすることによって、AMSコントローラ22に接続する能力を提供する。GUI8は、操作者が、製品14、サービス、または製造業者別に状態情報を閲覧すること、現在のアラートをレビューし、コントローラ22上で現在アクティブなジョブを管理および追跡すること、レポートを閲覧および生成すること、コントローラ22についての情報および統計を閲覧すること、アプライアンス18を管理し、アプライアンス18と関連付けられた動作を実施すること、システムにおける製品14を管理し、これらの製品14と関連付けられた動作を実施すること、シリアライゼーションスキーマ、キー種類、およびFCT50を管理すること、コントローラ22およびアプライアンス18へのアクセスを可能にする、ユーザ、パスワード、および役割を管理すること、特定のアプリケーションに対するオンラインヘルプにアクセスすること、およびアプリケーションに関係する情報(例えば、構築日、バージョン等)を決定することを可能にする。
ウェブベースのシステムとして実装される時に、標準ウェブブラウザを立ち上げ、ブラウザを適切なURLに向けることによって、GUI8にアクセスすることができる。図11に示されるように、GUI8は、ユーザがログオフするか、または別様にコントローラ22から「ロックアウト」された時に現れるように構成することができる、迅速状態表示200を含むことができる。例えば、迅速状態表示200は、GUI8がログインしたユーザ側での非活動からタイムアウトした後に、またはユーザがロックボタンをクリックするか、あるいはメニュー(図示せず)から同様のオプションを選択した場合に、現れるように構成することができる。迅速状態表示200はまた、ユーザログインを伴わなくても閲覧のために利用可能になる。このように、観察者がログインする必要なく、状態情報、警告、および他の重要なメッセージを閲覧することができる。例えば、アプライアンス18がオフラインになるか、または誤動作すると、操作者または近接する別の個人さえも、最初にログインする必要なく、即時にこの状態を認識することができる。迅速状態表示200はまた、GUI8において活動がない状態で、規定の期間が経過した場合、迅速状態表示200が表示され、操作者が再び継続するためにログインする必要があるように、GUI8に対するスクリーンセーバとしても機能する。これは、「読み出し専用」で重要な状態情報を依然として提供しながら、不注意な改ざんまたは悪意のある改ざんからAMS10を保護する。
迅速状態表示200は、上部分202と、底部分204とを備える。上部分202では、サービスアイコン206が、AMS10によって提供されるサービスについて表示される。各アイコンは、色別に(例えば、赤または青)、特定のサービスと関連付けられたアプライアンス18のうちのいずれかに関連する問題または警告があるかどうかを示す。底部分204では、製品アイコン208は、GUI8において定義される製品14について表示される。上部分202と同様に、各アイコン208は、色別に、特定の製品をサポートするシステムまたはアプリケーションにおけるアプライアンス18のうちのいずれかに関連する問題または警告があるかどうかを示す。問題状態と対比した正常動作の異なる色の使用は、操作者が問題を迅速に識別し、その問題の原因を決定して、必要であれば是正措置を講じるようにアプライアンス18およびアプリケーションに教え込むことを可能にする。必要であれば、底部分204は、例えば、多くの製品14がある時に、複数の行(図示せず)を提供することができる。いくつかの実施形態では、操作者には、どの製品14が迅速状態表示200に現れるべきかを定義するためのオプションが与えられ得る。
迅速状態表示200上のアイコンのうちのいずれかをクリックすることによって、ユーザログイン画面(図示せず)を立ち上げることができる。いったんログインすると、操作者には、選択したアイコンに従ってフィルタにかけられた状態表示を提示することができる。したがって、操作者は、迅速状態表示200において特定のサービスに関連する問題を決定すると、そのサービスアイコン206をクリックすることができ、ログインすると、次の表示が、そのサービス、例えば、シリアライゼーションに対してフィルタにかけられる。いったん状態表示になると、操作者は、どのアプライアンスが警告を有するかを観察することができ、ダブルクリック(または他の入力)は、アプライアンス18についての情報の詳細表示を操作者にもたらすことができ、警告の原因を決定することを可能にする。ログインする時に、ログイン画面には、迅速状態表示200および他の画面と同様の形式を与えることができ、フィールドを区別するために、各フィールドは、異なる色でハイライトし、何が実施されているのかを示すように状態バーを提供することができる。エラーログインがあれば、フォームの最上部に赤い背景を伴って、非フィールド特有のメッセージを表示することができる。
いったん操作者が特定のコントローラ22に接続し、ログオンすることに成功すると、ユーザが特定のアイコン206、208を選択した場合にフィルタにかけられ得るメインアプリケーション210が現れる。アプライアンス表示を提供する、一実施例が、図12に示されている。ナビゲーションを容易にするために、GUI8は、アプリケーションと相互作用するためのウィンドウ枠および方法の一貫した形態を提供する。
この実施例でのメインアプリケーション210のメインナビゲーションおよび情報域は、アプリケーションメニューバー212と、表示ウィンドウ枠214と、メイン情報ウィンドウ枠216と、状態バー218と、バージョンバー220とを含む。図12のアプリケーションメニューバー212は、5つのメニュー、すなわち、コントローラメニュー、サービスメニュー、表示メニュー、アクションメニュー、およびヘルプメニューを備える。コントローラメニューは、操作者がコントローラ22を修正し、GUI8からログアウトすることを可能にする。サービスメニューは、この実施例では、シリアライゼーション、キー注入、および特徴起動を含む、各サービスに対するアイテムを含む。表示メニューは、操作者が、種々の表示、例えば、状態、警告、ジョブ、レポート、コントローラ、アプライアンス、製品、シリアライゼーションスキーマ、キー種類、特徴制御チケット、ユーザ等から選択することを可能にする。アクションメニューは、選択された表示に従って変化する。ヘルプメニューは、システムヘルプ、管理者のガイド、開発者のガイド、製品概観、およびシステム概観、ユーザのガイド等の種々のヘルプリソースへのアクセスを提供することができる。
表示ウィンドウ枠214は、GUI8における異なる表示への迅速アクセスを提供する。そのような表示は、状態表示と、警告表示と、ジョブ表示と、レポート表示と、コントローラ表示と、アプライアンス表示と、製品表示と、シリアライゼーションスキーマ表示と、キー種類表示と、FCT表示と、ユーザの表示とを含み得る。この実施例では、表示ウィンドウ枠214は、ユーザにとって表示メニューの代替案である。該当する場合、各表示アイテムの脇の数は、AMS10においてアクティブな関連アイテムの数(例えば、警告表示に対する警告の数、ジョブ表示に対するジョブの数等)を示す。表示の多くはまた、選択されたサービスに従って、操作者がデータの中のアイテムを迅速にフィルタにかけることを可能にする、サービスメニューを表示することもできる。例えば、アプライアンス表示がアクティブであり、シリアライゼーションアイテムがサービスメニューで選択された場合には、アプライアンス表示は、アクティブなシリアライゼーションサービスとともに全てのアプライアンスを表示することができる。フィルタにかけるためにサービスメニューを使用する時に、標準フィルタバーを無効にし、隠すことができる。付加的なサービス特有の情報が、情報ウィンドウ枠216の中の各アイテムについて表示され得、追加のサービス特有のアクションが、サービスメニューでサービスを選択する時に現れ得る。
メイン情報ウィンドウ枠216は、選択された表示に従って、システムの中のオブジェクトについての情報を表示する。例えば、ジョブ表示については、データ域中の各アイテムは、システムの中のジョブである。メイン情報ウィンドウ枠216は、いくつかの特徴を備える。表示タイトルバー222は、フォームが現在表示されている場合、フォームのタイトルとともにアクティブな表示のタイトルを表示する。例えば、「アプライアンスを修正する」に対する表示タイトルバー222は、「アプライアンス・アプライアンスを修正する」と示し得る。表示タイトルバー222はまた、現在の画面に対する、その状況に応じたオンラインヘルプへのリンクを含み得る。サービスバー223は、関心を持っているサービスに操作者が迅速に焦点を合わせるための方法を提供する。図12に示された実施形態でのサービスバー223は、水平グリッドにアイコンを表示し、全て、シリアライゼーション、キー注入、および特徴起動といったアイテムを含み得る。「全て」を選択することにより、あらゆるフィルタを除去し、フィルタリングを伴わずにアクティブな表示の結果を表示する。残りのサービスのうちのいずれかを選択することにより、選択されたサービスに従ってフィルタにかけられたアクティブな表示を表示する。例えば、選択されたサービスを使用するアプライアンス、選択されたサービスに関係するジョブ等である。このようにして、操作者は、複数のサービス、および単一のコントローラ22によってサービス提供されるアプライアンスの間で、より容易にナビゲートすることができる。付加的なサービス特有の情報が、データ域中の各アイテムについて表示され得、追加のサービス特有のアクションが、サービスバーでサービスを選択すると現れ得る。
アクションバー224は、現在の表示について有効である付加的なアクションを含む、プルダウンメニューを伴って、その左側に種々のボタンを含む。アクションバー224の右側には、検索フィールドがある。検索フィールドにテキストをタイプすることにより、表示に応じて、データ域226のコンテンツをフィルタにかける。例えば、アプライアンス表示について、ユーザは、アプライアンス名、製造業者、場所、または製品別に検索し得る。アクションバー224の中のアクションは、データ域中の選択されたアイテムに応じて、または何かが選択されているかどうかに応じて、有効または無効であり得る。アクションが無効である場合は、グレーアウトすることができる。一般に、各表示に対するアクションのリストが一貫しておりアクションが、有効または無効になることが有利である。データ域226は、必要に応じてフィルタにかけられる、表示のために適切な情報を提示する。この実施例では、各表示は、最大で3つのズームレベルをサポートして、トラブルシューティングするか、または種々の設定を識別することが必要な時に、ユーザが、都合良くさらなる詳細を掘り下げることを可能にし得る。ズームレベルは、1ページにつき1つのアイテム、3行につき1つのアイテム、および1行につき1つのアイテムであり得る。これらのズームのレベルの省略表現は、1行、3行、および詳細である。アクションバー224の中のプルダウンメニュー225は、操作者がズームレベルを選択することを可能にする。ページングバー228は、アイテムが多すぎて1つのページに合わない時に、操作者が多くのアイテムを通してページをめくることを可能にする。ズームレベルが「詳細」である場合には、各アイテムに対する1ページがあり得る。ページングバー228は、必要な時はいつでも自動的に現れるように構成することができる。表示する情報が単一のページに合う場合は、ページングバー228は現れる必要がない。
ページングバー228の左側には、1ページあたりの表示するアイテムの数、およびそれがどのようにソートされるべきかを選択するためのプルダウンメニューを伴って、データ域226に提示される情報のテキスト説明がある。例えば、アイテムの数およびソートフィールドがプルダウンメニューである、「サービス別に10アイテムを表示する」である。また、増加と減少との間でソート順を切り替えるボタンもある。ページングバー228の右側には、どのアイテムが表示されるかを説明するテキスト(例えば、「レポート46のうちの11−20」)と、最初のページに行くボタンと、前のページに行くボタンと、XXは、ユーザが特定のページに直接行くことを可能にするテキストフィールドであり、YYは、ページの総数である、「ページYYのうちのXX」というテキストと、次のページに行くボタンと、最後のページに行くボタンとを含むことができる、ページングウィジェット230がある。
状態バー218は、ウィンドウの底部に位置付けられ、例えば、接続が行われていること、およびどの操作者と接続が行われているかを示すように、コントローラ22についての基本情報を表示する。ロックおよび更新ボタンを、全ての表示について示されるように含むことができる。
操作者の注意を引くために、データ域226は、図13に示されるような警告バー232を含むように修正することができ、それは、示された実施形態では、選択された製品(データ域226に示される)が、「TestApp」と名付けられた特定のアプライアンス18上で少ない在庫を有することを示す。警告バー232には、警告に即時の注意を引き付けるように、他の警告と一致している、赤等の明確で目立つ色を与えることができる。この実施例では、警告バー232は、データ域226の幅にわたって延在し、そのようなものとして警告をさらに識別するように、緊急関連アイコンを含む。
メインアプリケーション210は、製品別、製造業者別、または場所別にグループ化されて、3つの方法でアプライアンス18を表示する、図14に示されるようなメイン状態表示234を立ち上げるために使用することができる。製品アイコン208のうちの1つをクリックすることによって、表示が迅速状態画面200からアクセスされる場合、表示が製品14別にフィルタにかけられる場合、または「製品別」アクションが選択される場合には、製品別にアプライアンスをグループ化する。そうでなければ、製造業者別にアプライアンス18をグループ化する。図14に示されたスクリーンショットは、製品別の表示を図示する。図14に示されるように、製品別にグループ化されたアプライアンス18を表示する場合、製品と関連付けられた各アプライアンス18を示して、各製品が表示される。製造業者別にグループ化されたアプライアンス18を表示する場合には、製造業者と関連付けられた各アプライアンス18を示して、各製造業者が表示される。場所別にグループ化されたアプライアンス18を表示する場合には、場所と関連付けられた各アプライアンス18を示して、各場所が表示される。
アプライアンスアイコン236は、どのサービスが特定のアプライアンス上でアクティブであるかについてのサービスインジケータ237を含み、ならびに、アプライアンス18が現在アクティブな警告を有するかどうか(アイコンを赤に着色することによる)、またはアプライアンス18が現在動作しているかどうか(アイコンを青に着色することによる)の指示を提供する。サービスインジケータ237は、種々の状態を示すための色分けされたスキームを利用することができる。例えば、オレンジのアイコンは、そのアプライアンス18上のサービスに資産が少ないことを示してもよく、赤のアイコンは、そのサービスに関連する問題を示してもよく、薄暗い、または「グレーアウトした」アイコンは、サービスがアプライアンス18に割り当てられていないことを示すことができ、緑のアイコンは、問題がないことを示すために使用することができる。状態表示234は、この実施例では単一のズームレベルを使用する。表示アクション(または特定のアプライアンスをダブルクリックすること)は、選択されたアプライアンス18が表示されている、アプライアンスの1ページにつき1アイテムのズームレベルを操作者にもたらす。メイン状態表示234と関連付けられたアクションは、製品別、製造業者別、および場所別の表示である。
操作者は、図15に示された警告表示238にアクセスして、AMS10に存在する警告を調べることができる。図15に示されたズームレベルは、1行ズームレベルである。警告表示238では、操作者は、警告を閲覧し、影響を受けたアプライアンス18にピングを行い、影響を受けたアプライアンス18を同期し、警告を除去することができる。コントローラ22は、コントローラ22がアプライアンス18にコンタクトできない時、コントローラ22がデータをアプライアンス18に送信する時(逆の場合も同じ)にエラーがある場合、同期化動作が失敗した時、アプライアンス18の資産の数が資産警戒レベルに達した時、アプライアンス18上の空きディスクスペースが警戒レベルに達した時、コントローラ22(または任意のアプライアンス18)上のHSM19が自ら動作停止した時、またはエージェントIPアドレスがアプライアンス18によって管理されるリストの中にないため、アプライアンス18がエージェント20からの接続を遮断した時等の、いくつかの異なる状況下で警告を発行するように構成することができる。警告が発行された場合、影響を受けるアプライアンス18が、データ域226中の警告表示238に現れる。警告表示238は、警告の説明を提供し、警告が発行されたサービスを識別し、警告が発行された時間を提供する。警告への適切な応答は、警告の原因に依存する。
操作者は、図16から18に表示されたジョブ表示240にアクセスして、進行中のジョブをキャンセルすること、および完了したジョブを除去すること等の、AMS10の中のジョブと関連付けられた種々のアクションを実施することができる。この実施例のジョブ表示240は、図16に示されるような3行ズームモード240a、図17に示されるような1行ズームモード240b、および図18に示されるような詳細ズームモード240cをサポートする。詳細ズームモード240cがジョブごとに与える完全な一組の情報は、名前、ジョブID、システム(アプライアンス18またはコントローラ22)、ジョブ種類、ジョブ状態、開始時間、終了時間、または推定終了時間(入手可能であれば)、継続時間、および進捗である。ジョブの状態の図式概観を提供するように、進捗バー242が各ズームモード240a−cで提供される。ジョブ表示240内で、操作者は、ジョブを一時停止し、ズームモード間でズームし、ジョブを再開し、ジョブをキャンセルし、ジョブログを閲覧し、ジョブを除去し、完了したジョブを示し、完了したジョブを除去することができる。
操作者は、図19に示されたレポート表示244にアクセスして、AMS10によってサポートされるレポートを生成することができる。図19は、レポート表示244に対する1行ズームモードを図示する。レポート表示244は、サービスアイコン、およびレポートの名前を提供する。レポート表示244はまた、レポートのリストを特定のサービスに限定するように、サービスバー223上のサービスを選択することによって、フィルタにかけることもできる。レポートを生成するアクションは、操作者がレポートを生成するために必要とされる情報を入力するために、図20に示されたレポートを生成するフォーム246を表示する。いったん操作者がフォーム246を完成させると、レポートを表示する画面248で、図21に示されるようにレポートを表示することができる。レポートを表示する画面248はまた、この実施例では、操作者がPDFまたはCSV形式をダウンロードすることを可能にする。例えば、製品別または(シリアライゼーションに対する)スキーマ別に、コントローラ22によって発行される資産の合計の数、特定の範囲にわたって日付別に発行される資産の数、アプライアンス18別の資産の数(合計、日付別等)、エージェントによって受信される資産の数(合計、日付別等)、欠落しているログ、重複ログ、資産IDまたは番号別のログ、特定製品/日付範囲に対するログの数等といった、種々のレポート種類を生成することができる。
図22に示されたコントローラ表示250は、データ域226で操作者が接続されるコントローラ22の詳細を提供する。この実施例では、コントローラ表示250は、コントローラ名、コントローラが提供しているサービス、コントローラ22のIPアドレス、コントローラ22のポート、SMTP IPアドレス、SMTPポート、SMTPドメイン、「From」アドレス、「To」アドレス、ディスク健全性、コントローラHSM状態、HSMソフトウェアバージョン、コントローラソフトウェアバージョン、システム10の中の警告の数、システム10の中でアクティブなジョブの数、ジョブ削除時間、システムチェック間隔、コントローラのディスクスペース、およびコントローラ22上で利用可能なメモリといった、情報を提供する。コントローラ表示250では、操作者は、コントローラ22を修正し、Eメールを試験し、ログアウトすることができる。コントローラ22を修正するためには、コントローラ表示250の中の修正するボタンが選択され、図23に示されたコントローラを修正するフォーム252を立ち上げる。図23から理解することができるように、コントローラを修正するフォーム252は、操作者が、コントローラ22の設定および修正の変更を行い、これらの設定を適用することを可能にする。
操作者は、図24から26に示されたアプライアンス表示254にアクセスして、アプライアンス18を追加すること、修正すること、除去すること、および同期すること等の、アプライアンス18と関連付けられた種々のアクションを実施することができる。アプライアンス表示254は、詳細、3行、および1行ズームモードをサポートすることができる。図24は、全サービスモードでアプライアンス表示254を示す。全サービスモードでは、各アプライアンス18は、サービスのうちの1つについてのサービス特有の情報を表示する。1つだけのサービスがアプライアンス18上でアクティブである場合には、そのサービスが表示される。1つより多くのサービスがアクティブである場合には、定義された優先順位で、表示するサービスを選択することができる。サービスがサービスバー223で選択された場合には、アプライアンス表示254の中で全てのアプライアンス18について、そのサービスが表示される。3行モード254aは、図24に示され、1行モード254bは、図25に示され、詳細モード254cは、図26に示されている。図26で見ることができるように、この実施例で1つのアプライアンス18につき入手可能な情報は、アプライアンス名、アプライアンス18によって提供されるサービス、製造業者、場所、IPアドレスおよびポート、状態(例えば、オンライン、オフライン、非アクティブ、準備できていない)、HSMソフトウェアバージョン、利用可能なディスクスペース、利用可能なメモリ、利用可能なクレジット、クレジットの最小量、クレジットの最大量、クレジットの警戒レベル、アプライアンスソフトウェアバージョン、警告の数、ジョブの数、接続再試行の数、接続タイムアウト期間、自動同期間隔、読み出し専用同期、資産ブロックサイズ、最終更新、許容エージェントIPサブネットのリスト、コントローラ22との最終通信の日付/時間、各エージェント20との最終通信の日付/時間、およびサービス特有の情報(例えば、シリアル番号、キー、FCT50)を含む。これらの詳細のうちの特定のものが、図24および25に示されるようなあるズームレベルで現れることができる。アプライアンス表示254では、操作者は、ズームモード間でズームを実施し、アプライアンス18にピングを行い、アプライアンス18を同期し、アプライアンス18を追加し、アプライアンス18を修正し、アプライアンス18を除去し、アプライアンス18を起動し、アプライアンス18を動作停止することができる。
アプライアンスにピングを行うアクションは、操作者が、安全なチャネル上で選択されたアプライアンス18にピングを行って、それが活動していることを確認すること、およびそのネットワーク待ち時間を決定することを可能にする、図27に示されるようなピング画面256を立ち上げる。ピングアクションは、特定のホスト(アプライアンス18)がIPネットワーク上で到達可能であるかどうかを試験するため、およびSSL接続を試験し、使用されているコンピュータのネットワークインターフェースカード(NIC)を自己試験し、または速度試験としてとして試験するために、使用される。ピングは、概してミリ秒単位で往復時間を推定し、パケット損失を記録し、完了すると統計的概要を印刷することができる。
アプライアンスを同期するアクションは、図28に示された同期画面258を立ち上げ、あらゆるサービス関連オブジェクトがつぎ足され(例えば、シリアル番号、キー、FCT50等の資産)、あらゆるアプライアンス構成変更をプッシュ配信し、アプライアンス18からサービスログを取り出すことを操作者が確実にすることを可能にする。同期アクションは、シリアル番号、キー、FCT50等の、あらゆるサービス関連オブジェクトまたは資産が、それらの最大量であることを確実にする。同期アクションはまた、アプライアンスのクロックをコントローラのクロックと同期化し、アプライアンス18からサービスログを取り出す。加えて、アプライアンス18に行われるあらゆる構成変更は、アプライアンス18が同期化された後に効力を生じることができる。アプライアンス18の状態および資産情報を収集して、それが同期しているかどうかを確認するが、いずれの変更も行わない、読み出し専用同期も実施することができる。同期化はまた、アプライアンス18からサービスログを取得するために使用することもできる。
アプライアンスを修正するアクションは、図29に示されたアプライアンスを修正する画面260を立ち上げる。アプライアンスを修正する画面260は、アプライアンス18の詳細が操作者によって編集されることを可能にする。図29には、操作者がアプライアンス18に与えられたクレジットの閾値、および低レベル警戒を発行する時を設定することを可能にする、クレジット最小値、クレジット最大値、およびクレジット警戒フィールドが示されていない。コントローラ22とアプライアンス18とは、定期的に、自動的に同期化するべきであり、またはアプライアンス18が同期化されると、コントローラ22は、いくつの資産がアプライアンス18上にあるかを確かめる。資産の数が最小値以下である場合には、コントローラ22は、最大レベルまでアプライアンスの資産を充填する。資産の数が警戒レベル以下である場合には、コントローラ22は、警告を発行することができる。
アプライアンス18は、最初にコントローラ22に追加される時に、非アクティブ状態で追加される(上記で説明される図4Bも参照)。アクティブアプライアンスアクションは、選択されたアプライアンス18をオンラインにする(必要であればプロビジョニングを自動的に開始する)。非アクティブアプライアンスアクションは、アプライアンス18をオフラインにすることが関連生産ラインを停止する場合、適切な警戒を伴って選択されたアプライアンス18をオフラインにする。図30は、操作者にこの選択を確認させる前に、動作停止させられる選択されたアプライアンスを示す、アプライアンスを動作停止する画面262を図示する。アプライアンスを除去するアクションは、選択されたアプライアンスがオンラインではない場合のみに利用可能であるべきであり、そうでなければ、アクションは無効にされるべきである。図31は、操作者による選択の確認前に、選択されたアプライアンス18が示されるという点で、アプライアンスを動作停止する画面262と同様である、アプライアンスを除去する画面264を図示する。アプライアンス18は、動作停止されると、例えば、上記で例示されるように色を赤に変化させることによって、これを示し、アプライアンス18の状況に関して操作者にさらなる視覚的な手掛かりを提供するべきであることが留意され得る。
GUI8における製品は、製品の名前、製品に対する識別子、資産のリスト(例えば、サービスに応じて、シリアライゼーションスキーマ、キー種類、またはFCT50)、資産が適用されるべきアプライアンスのリスト、および製品が提供するサービスを、AMS10に提供する、1つ以上の資産種類の名前を付けられたグループ化である。図32から34に示された製品表示266では、操作者は、製品を管理して、製品を追加すること、修正すること、または除去すること等の、AMS10の中の製品と関連付けられた種々のアクションを実施することができる。製品表示266は、図32の3行ズームモード266a、図33の1行ズームモード266b、および図34の詳細ズームモード266cで示される。図34で見ることができるように、製品表示266は、製品名、サービス、ID、利用可能な資産(メーターとして表示され、それぞれ詳細ズームレベル266cで個別に表示される)、資産のリスト(スキーマ、キー種類、またはFCT50)、アプライアンス18のリスト、シリアライゼーションおよびキー注入について、注入方法(ACCまたは通常)、ACC記録フィールド、およびACCオフセットフィールド等の、製品に関する種々の情報を含むことができる。製品表示266では、操作者は、ズームモード間でズームし、製品を追加し、製品を修正し、製品を除去することができる。
製品を追加するフォーム268が、図35に示され、シリアライゼーションについて例示されている。キー注入については、シリアライゼーションスキーマリストは、キー種類リストと置換され、特徴制御については、シリアライゼーションスキーマは、FCTリストと置換される。
AMS10の中のシリアライゼーションスキーマは、どのようにシリアル番号が生成されるかについての規則を定義する、オブジェクトである。例えば、シリアル番号の数字が16進数で表されるか10進数で表されるか、および固定文字列が含まれるかどうかである。シリアルスキーマ表示270が、図36から38に示されている。これらの表示では、操作者は、シリアライゼーションスキーマを管理して、スキーマを追加すること、修正すること、または除去すること等の、AMS10の中のスキーマと関連付けられた種々のアクションを実施することができる。3行ズームモード270aが図36に示され、1行ズームモード270bが図37に示され、詳細ズームモード270cが図38に示されている。図38で最も良く見られるように、この実施例でシリアルスキーマを定義する情報は、スキーマ名、スキーマID、全プールからの残っている(アプライアンス18にまだ送信されていない)シリアル番号、開始値、生成するシリアル番号の総数、10進法を使用するか16進法を使用するか、(付け足す、または切り捨てる)シリアル番号の中の文字の総数、シリアル番号の中の位置とともに含む静的文字列のリスト、およびスキーマを例証するサンプルを含む。シリアライゼーションスキーマ表示270では、操作者は、ズームモード間でズームを実施し、スキーマを追加し、スキーマを修正し、スキーマを除去し、スキーマを複製する(現在の選択を修正するが、新しい名前で保存する)ことができる。シリアライゼーションスキーマを追加/修正/複製するためには、図39に示されるようなスキーマを追加/修正/複製するフォーム272が立ち上げられる。
AMS10の中のキー種類は、どのような種類の暗号キーが特定の製品に対して注入されるべきかについての規則を定義する、オブジェクトである。キー種類表示274が、図40から42に示されている。キー種類表示274では、操作者は、キー種類を管理して、キー種類を追加すること、修正すること、または除去すること等の、AMS10の中のキー種類と関連付けられた種々のアクションを実施することができる。3行ズームモード274aが図40に示され、1行ズームモード274bが図41に示され、詳細ズームモード274cが図42に示されている。図42で最も良く見られるように、キー種類表示274が提供し得る情報は、キー種類名、ID、最終インポート以来利用可能なキー、キーの長さ、キー識別子の長さおよびオフセット、キーデータの長さおよびオフセット、ファイルヘッダの長さ、ハッシュ出力(長さおよびオフセット)、ハッシュアルゴリズム、およびハッシュ入力を含むことができる。キーの構造の視覚的表現を提供し、構造が変化する方法を示すように、パラメータが変更されるにつれて更新される、キー種類図276も示される。キー種類表示274では、操作者は、ズームし、キーをインポートし、キー種類を追加し、キー種類を修正し、キー種類を除去し、キー種類を複製する(現在の選択を修正するが、新しい名前で保存する)ことができる。詳細ズームモード274cと同様であることが分かるが、パラメータが編集されることを可能にする、キー種類を追加/修正/複製するフォーム278が、図43に示されている。
AMS10の中のFCT50は、特定の製品に対して特定され得る、1つまたは複数の特定の特徴を定義する、オブジェクトである。FCT50は、特徴レジスタ282と呼ばれるビットのアレイを含む。特徴レジスタ282の中の特定のビットの状態は、デバイス14の中の特徴にマップされ得、これらの特徴がアクティブであるか無効であるかを制御する。FCT表示280が、図44から46に示されており、異なる色で対応するセルを充填することによって、アクティブな特徴がアクティブではない特徴と区別されている、特徴レジスタ282の視覚的表現を図示する。3行ズームモード280aが図44に示され、1行ズームモード280bが図45に示され、詳細ズームモード280cが図46に示されている。FCT表示280では、操作者は、FCT50を管理して、チケットを追加すること、修正すること、または除去すること等の、AMS10の中のFCT50と関連付けられた種々のアクションを実施することができる。図46で最も良く見られるように、特定のFCT50についてFCT表示280で提供することができる情報は、FCT名、ID、特徴包含値、実装されたコマンド、タグ(ACC12上にプログラムされた特徴または1組の特徴を示す記録タグ)、および注入の総数を含み得る。FCT表示280では、操作者は、ズームモード間でナビゲートし、FCT50を追加し、FCT50を修正し、FCT50を除去し、FCT50を複製することができる。
管理者は、図47に示されたユーザ表示284にアクセスして、ユーザを追加すること、ユーザを除去すること、およびユーザのパスワードを変更すること等の、システムの中のユーザと関連付けられた種々のアクションを実施することができる。この実施例では、ユーザ表示284は、1行ズームレベルである。図47で見ることができるように、ユーザ表示284は、ユーザ名、コントローラ許可、アプライアンス許可、ユーザ許可、シリアライゼーション許可、キー注入許可、特徴制御許可、および最終ログイン時間等の情報を記載する。種々の許可は、どのような動作をユーザが実施することができるか、例えば、アプライアンスを追加または除去すること、シリアライゼーションスキーマを生成すること等を決定付ける。ユーザ表示284では、管理者は、ユーザを追加し、ユーザを複製し、ユーザを修正し、パスワードを変更し、ユーザを除去することができる。ユーザを追加するフォーム286が、図48に示されており、AMS10が、定義されたユーザ役割に従って、そのユーザにセキュリティ許可を課することを可能にする。このようにして、管理者は、ユーザ役割を定義して、システムの特定の部分への異なるレベルのアクセスを有効にするか、または拒否することができる。異なる許可を伴う数人のユーザを作成することによって、GUI8を操作することがさらに効果的になることを可能にするように、責務をGUI8内で区切ることができる。セキュリティ責任者(SO)、管理者(AD)、および操作者(OP)といった、例えば、3つのユーザ役割を確立することができる。各ユーザ役割について、閲覧のみ、閲覧および保存、閲覧および操作、全アクセス等といった種々の許可を、上記の役割につき設定することができる。
図49は、管理者の注意を引くように赤で示された、エラーバー288とともに、ユーザを追加するフォーム286を図示する。図50は、この実施例では、パスワードとパスワードを確認するフィールドとの間の対応の欠如による、エラーの原因をハイライトするフィールド特有のインジケータバー290を用いて同様のエラーを図示する。ユーザのパスワードを変更し、ユーザを除去するために、他のフォーム(図示せず)を立ち上げることができる。
例えば、ウェブブラウザによってサポートされるようにHTML形式で、AMSオンラインヘルプガイドにリンクする、メニューアイテムまたはヘルプアイコンあるいは両方(例えば、図11から50に示されるような)を備えることができる、オンラインヘルプサービスも、GUI8に提供することができる。メニューアイテムは、ユーザをフロントページ(目次)に導くことができ、ヘルプボタンは、ユーザをデータ域226中の現在の表示に従って決定される記事に導くことができる(すなわち、その状況に応じたヘルプ)。
(資産制御コア)
ここで図51を参照すると、特徴起動サービスモジュールを提供するために構成されたAMS10の実施形態のさらなる詳細が示されている。図51に示された実施形態では、システム10は、電子デバイス14に組み込まれたACC12を準備し、ACC12と通信し、ACC12にデータを提供し、ACC12からデータを収集し、ACC12内の特徴を起動するように構成される。上記で論議されるように、デバイス14、次にACC12は、加工/製造/組立過程で使用されるテスター16に接続される。テスター16は、テスター16上で作動するソフトウェアモジュールである、エージェント20を採用する。テスター16は次に、機密データを保護し、アプライアンス18内に安全地帯を提供するHSM19を含む、アプライアンス18に接続される。図1に示されるように、エージェント20は、その間の通信を暗号によって確保するために、HSM19とACC12との間の安全な通信チャネル29を促進する。チャネル29上で、アプライアンス18からACC12にFCT50を送信することができる。アプライアンス18は、以下でより詳細に説明されるように、証明機関(CA)、データベース、および1つ以上のアプライアンス18を制御するためのコントローラ22を提供し得る、バックエンドインフラストラクチャ11に接続され得る。
テスター16に接続されることに加えて、ACC12はまた、同時に、またはしばらくして(または過程中の他の時に)、広域ネットワーク(WAN)24またはデバイスプログラマ26上でユーザインターフェース(UI)に接続され得る。デバイスプログラマ26はまた、示されるように、WAN24を介してACC12に接続し得る。デバイスプログラマ26および/またはWAN24は、任意の好適な接続、例えば、直列、並列、有線、無線、赤外線、RFED等を使用して、デバイス14およびACC12に接続することができる。この実施例では、ACC12は、JTAG(Joint Test Action Group)IEEE−1149試験インターフェース等の標準試験プロトコル/接続28上で、テスター16に接続される。テスター16およびアプライアンス18は、それらの相対的場所に応じて、好適な接続30上で接続される。以下で提供される実施例では、アプライアンス18は、テスター16と同じ物理的設備に位置し、したがって、接続30は、ローカルエリアネットワーク(LAN)であり得る。
ACC12は、示されるように、概して、かつ集合的に、図51の数字34として示される、種々の種類のメモリを備えることができる。ACC12は、持続的に、または一過性に、種々のキーおよび証明書を記憶するために、メモリの一部分を使用する。図51は、以下の実施例で使用される、種々のキーおよび証明書を図示する。静的非公開キーdsi、静的公開キーQsi(ACC UIDとも呼ばれる)、一過性の非公開キーdei、一過性の公開キーQei、CAの証明書CERT[CA]、およびアプライアンスjの証明書CERT[APPj]が、図51に示されている。一実施形態では、静的キーは、不揮発性メモリ(NVM)に記憶されるが、ROMメモリにマスクプログラムすることができる。別の実施形態では、いずれのNVMも必要とされなくてもよく、キーは、ハードディスクまたはフラッシュメモリ、あるいはACC12の外側の何らかの他の不揮発性バルクデータ記憶媒体上に、オフラインで記憶することができる。
図52で見ることができるように、ACC12は、シリコンダイ上のハードウェアベースの信用点を確立する標的システムオンチップ(SoC)に組み込まれた小型ハードウェアコアである。ACC12は、機密データに対する物理的保護と、遠隔証明および検証を提供する方法とを提供する改ざん防止特徴を備えるため、消費者デバイス14上の信用の根拠と見なすことができる。以下でより詳細に説明されるように、ACC12は、1つの集積回路(IC)40に対する一意の識別子(UID)を生成し、アプライアンス18との安全な認証された通信チャネル29を通して、IC40のトラッキングおよびプロビジョニングに関与することができる。図52に示された実施例では、IC40は、消費者デバイス14に組み立てられるプリント基板(PCB)44上に載置される。そのようなものとして組み込まれるが、ACC12は、PCB44および/または最終デバイス14上の信用の根拠としての機能を果たし続けることができる。
IC40はまた、当技術分野で公知であるような好適なプロトコルのために構成される通信インターフェース48を介して、IC40への接続32を接続することによって、非テスター、例えば、デバイスプログラマ26との接続を確立するために使用することができる別個のマイクロ制御ユニット(MCU)42を備え得る。図52に示されるように、通信インターフェース48はまた、PCB44を通したWAN24への直接接続により、IC40に統合され得ることが理解されるであろう。図52に示された外部MCU42の役割は、通信インターフェース48を通してFCT50コマンドメッセージを受信し、この場合ではバイトのストリームであるかもしれない、ネッワーク接続されたデータを、ACC12による処理のために、ACC12のパラレルインターフェース66(図53も参照)を通して、その(MCUの)メモリマップされたインターフェース上で渡すことができるフォーマットに再フォーマットすることによって、ネットワーク(例えば、WAN24)上でアプライアンスとACC12との間のFCT50の通信を促進することとなる。逆に、ACC12は、そのパラレルインターフェース66上で、外部MCU42にFCT50応答メッセージを返信し、MCU42が、バイトのストリームに変換し、通信インターフェース48上でアプライアンス12に返送する。ACC12は、試験インターフェース72(例えば、JTAG)を介してエージェント20に、したがって、アプライアンス18に接続し、次に接続28をブリッジする(図53も参照)。
アプライアンス18は、プロビジョニングデータおよび1つ以上のエージェント20から/への応答をキャッシュに格納し、配信し、収集するために使用される、安全なモジュールである。例えば、ACC12がオンラインになると、アプライアンス18は、ACCの一意のID(UID)を使用して、それが接続される部分を追跡することができる。次いで、アプライアンス18およびACC12は、続いて、キー情報を交換し、改ざん防止通信チャネル29を開いてもよく、それは、ACC12が承認されたアプライアンス18と通信していること確信でき、1つだけの一意のACC12が、送信したメッセージを解読し、それに応答できることを、アプライアンス18が確信できるような方法で、データが転送されることを可能にする。最終的には、ACC12は、FCT50を発行されることができ、ACC12は、プロビジョニングコマンド、安全なデータ、キー、情報、シリアライゼーション情報、および、アプライアンス18が、一般的にACC12またはデバイス14に提供する、プッシュ配信する、アップロードする、注入する、またはそこから収集することを希望する、任意の他のデータを含む、FCT応答を提供することができる。
エージェント20は、アプライアンス18とACC12との間の下位データ伝送を管理する1つのソフトウェアと見なされ得る。各エージェント20は、テスター16またはデバイスプログラマ26に連結され、アプライアンス18とエージェント20との間で透過的にデータを渡す責任がある。エージェント20は、コマンドを発行し、ACC12から/への応答を受信するためにアプライアンス18が使用され得る、トランスポート層APIを備える。特に指定がない限り、アプライアンス18によって実施される安全な動作は、好ましくは、HSM19内で実施されることが理解されるであろう。テスター16またはデバイスプログラマ26は、用途に応じて、標準JTAG IEEE1149試験ポート(例えば、試験インターフェース46および接続28)または別のプログラミングインターフェースを通して、チップに物理的に接続することができる。エージェント20は、いずれか一方の構成で、トランスポート層と物理層とをブリッジするために使用される。エージェント20は、安全でないと見なされる場合があり、本明細書で説明される実施例では、単純にメッセージキャッシング機構を提供すること、およびアプライアンス18とACC12との間でメッセージを渡すことの他に、いずれの暗号機能も果たさない。当然ながら、所望であれば、エージェント20は、用途の要件に応じて、様々な程度の暗号能力を装備することもできる。
バックエンドインフラストラクチャ11は、製造業者とその顧客/エンドユーザとの間でインターフェース接続するために使用されるバックエンドインフラストラクチャ全体を指す一般用語である。概念的に、システム10によって処理されるあらゆるデバイス、および全てのプログラミング記録は、製造された各部品の履歴を問い合わせるために製造業者が使用し得るバックエンドデータベースで保たれる。インフラストラクチャは、必要であれば、CAと、データベースエンジンと、ERPアプリケーションおよびサブモジュールと、特徴制御サーバ(FCS)と、電子商取引フロントエンドサーバとを備え得る。システム10はまた、それをERPまたは電子商取引フロントエンドサーバに接続するように、コネクタ論理を備え得る。典型的なシステム環境は、インターネット上で、セキュアソケットレイヤー(SSL)、トランスポート層セキュリティ(TLS)、またはレベル2セキュリティ(MACSec)等のセキュリティプロトコルを介して、顧客の製造現場におけるアプライアンス18と通信する、中心の場所に位置するバックエンドサーバを有し得る。
ACC12に関するさらなる詳細が、図53に示されている。図53の濃い色の外側境界は、この境界内で実施されるあらゆる動作が信用されると推定されるように、安全な境界を表す。
ACC12は、典型的には、読み出し専用メモリ(ROM)52に記憶されたカスタマイズ可能なファームウェアを伴う比較的小型のハードウェアである。図53に示された実施例では、ACC12はまた、小型マイクロコントローラ54、楕円曲線暗号(ECC)算術ユニット56、ハードウェアベースの乱数発生器(RNG)58、データ読み出し/書込みメモリ(RAM)60、および不揮発性メモリ(NVM)62も含む。ACC12は、Menezes−Qu−Vanstone(ECMQV)プロトコルの楕円曲線実装、および楕円曲線デジタル署名アルゴリズム(ECDSA)、ならびにAES(Advanced Encryption Standard)ベースのアルゴリズムを用いたメッセージ暗号および認証に関与する能力を有する。
上記のように、ACC12は、テスター16またはデバイスプログラマ26と同様のものに接続される、アプライアンス18と通信するように設計されている。この通信チャネル29を確保するために、ACC12は、キー交換のための非対称暗号作成スキーム、およびそれとアプライアンス18との間でメッセージを転送するための対称キー暗号作成スキームを使用し得る。
非対称暗号作成については、公開キー(例えば、Qsi)が、秘密の非公開キー(例えば、dsi)に基づいて生成される。非公開キーが安全で高度な改ざん防止設定で保護されることは重要である。組み込みACC12は、秘密が暴露されることから保護するハードウェアおよびファームウェアの組み合わせを用いて、内部で、かつ自律的に、一意の非公開キーを生成することが可能であることによって、この要件を満たすことができる。非公開キーは、特定のデバイス14に統計的に一意であり、そのデバイス14と永久的に関連付けられる。
非公開キーが秘密に保たれる一方で、公開キーは共有される。ACC12について、公開キーまたはその何らかの数値的派生物は、上記で論議されるように、ICの一意のデバイスID(UID)として扱うことができる。非公開キーが公開キーとの1対1のマッピングを有するため、UIDも、特定のデバイス14に統計的に一意であり、そのデバイス14と永久的に関連付けられる(公開キーが静的非公開キーに由来する時)。
このIC識別の技法は、以下で説明されるプロビジョニングプロトコルによって提供される機密性および認証とともに、チップまたはデバイス業者に、過剰生産部品のクローン作成および再販売等の、デバイス14の製造および配布における不正を検出および防止するために強制措置を成立させるように、データベースにあらゆる真の部分を登録する能力を与える。
UIDは、相互キー合意を通して、アプライアンス18とACC12との間に秘密を確立するためのセキュリティプロトコルの一部として使用することができる。キー合意中に、公開キーは、2つの当事者の間で取引され、各当事者は、公開して交換された公開キー、および秘密に保たれている独自の非公開キーのみを使用して、他方とは無関係に共有キーを生成する。キー合意の結果としては、2つの当事者が、両者の間のみで共有される秘密に到達する一方で、盗聴しようとしているあらゆる第3者は、非公開キーのコピーがないかぎり、完全に合意することができない。
アプライアンス18およびACC12はまた、2つの関係者のみに知られている秘密キーを生成する、ECMQVキー合意スキームに関与することもできる。生成された共有秘密(例えば、kij)は、対称キー暗号作成のための基礎および必須条件であり、つまり、それは、2つの当事者の間で、高度な改ざん防止の暗号化および認証された通信チャネル29を確立するために使用される。
いったん両方の当事者が対称キーに合意すると、アプライアンス18は、安全な認証された方式で、ACC12へ/から、FCT50としても知られている署名入り機密メッセージを発行および受信し始めることができる。FCT50のコマンドは、特徴プロビジョニング、保護されたNVM62のメモリ領域への読み出し/書き込みアクセス、または制御された安全で追跡可能な方式でACC12に提供される任意の他のコマンドあるいはメッセージを含む、メッセージである。FCT50応答は、状態、監査データ、または、安全なプロビジョニングプロトコルを確立する、維持する、または準拠するためにアプライアンス18に提供される任意の他のコマンドあるいはメッセージを含む、メッセージである。
試験および製造時に特徴を積極的に有効にするか、またはアフターマーケットにおいてサーバまたはデバイスプログラマ26に再接続する際に特徴を有効にするために、特権を使用することができる。特権の欠如は、クローンであるか、偽造品であるか、またはそうでなければ盗難デバイスであるかどうか、疑わしいデバイスの無許可特徴を無効にするために、消極的に使用することができる。
種々の暗号技法の組み合わせを通して、完全に安全な特徴プロビジョニングを達成することができ、その実施例は以下の通りである。
各ACC12は、そのROM52またはNVM62に記憶されたルートCA公開キーを有し得る。次いで、各アプライアンスjは、ルートCA(図示せず)によって生成される、独自の一意の証明書CERT[APPj]を有し得る。証明書は、比較的小さくてもよく、証明書フィールドは、容易な構文解析のために、ビットマップ方式であり得る。アプライアンス18は、プロトコルの一部として、証明書をACC12に送信することによって、自らが本物であることをACC12に証明する(以下でより詳細に論議される)。ACC12は、アプライアンス18の同一性を検証するために、CAルート証明書を使用する。
各アプライアンス18は、証明書とともに送信される、それに割り当てられた顧客ID(CID)を有することができる。証明書の中のCIDは、ACC12に記憶されたCIDのうちの1つに合致して、特定のアプライアンス18が、特定のデバイス14の適正な所有者/生産者に属し、組み込みACC12と通信する権限を持っていることを確実にするべきである。ACC12上の複数のCIDは、段階的製造過程上の異なる業者が、それらが所有する特徴を準備することを可能にする。例えば、特定用途向け集積回路(ASIC)業者は、特定の相手先商標製品製造業者(OEM)に対するSoCを構成し、次いで、OEMは、特定の機器販売業者またはサービスプロバイダを標的にするようにデバイスを構成し、最終的に、末端顧客が、独自のサービス計画に基づいて、構成のさらに別の一部を起動できるようになる場合がある。
ACC12は、関与する業者の安全な同一性データ(CID)に従って、第3者業者が所有する特徴へのアクセス制御を施行するように作製することができる。SoCの元の所有者は、潜在的に、そのプロビジョニングの一部として、CID/特徴セット構成テーブルを取り込むことができる。
アプライアンス18からACC12への各FCT50は、この実施形態では、暗号化され、完全性を保護され、認証され、再生およびなりすましに対して保護される。各FCT50は、特定のACC12のUIDに入力され得、特徴特権は、デバイスの非公開キーによるFCT50のロック解除の成功時に、デバイスごとのみで許可され得る。次いで、別のUIDにロックされたFCT50を傍受しようとする不正デバイスは、FCT50を解読できない。複製または再生されることから防止するために、FCT50を1回だけ使用することができるように、各FCT50にも、それと関連付けられたシリアル番号が提供され得る。各FCT50は、検出不可能な方式でFCT50を改変することができないように、それを発行したアプライアンス18によって署名され得る。
ACC12からアプライアンス18に戻る応答は、応答を改変または再生することができないように、シリアル番号およびメッセージ認証コード(MAC)を有するように構成することができる。FCT50は、特定のUIDにリンクされるので、アプライアンス18は、特定のUIDがプログラムされた場所およびものを示す、監査ログを保つことができる。監査ログは、バックエンド11を通してSoC製造業者/業者に折り返し報告することができる。同じUIDの複数のインスタンスが、これらのログファイルのレビューにおいて検出された場合、チップがクローン作成または偽造されているという指示になる。
ECMQVの使用は、特定のアプライアンス18を特定のACC12にリンクする、暗号化されたトンネル29を提供する。他の当事者は、暗号化されたプログラミングセッション中に送信される、このプロトコルまたは解読コマンドに関与することはできない。特に、ECMQVは、示された環境では信憑性の高い脅威である、介入者攻撃に強いことが知られているため、チャネル29を作成する技法として選択され得る。
ACC12およびアプライアンス18は、特定の環境に合うように、種々の方法で構成することができる。以下の考察は、そのような構成可能性を有効にする、種々の特徴について議論する。ACC12は、非常に小さい総シリコン面積を利用するべきであり、UIDのオンチップ(ACC12に内蔵される)生成と、ECC公開・非公開キーペアのオンチップ生成および記憶とをサポートするべきである。ACC12のスキャン連鎖試験の有効化/無効化は、非公開キーが明かされることを防止するように、ACCECCキーペア生成の前に利用可能であるべきである。アプライアンス18からACC12へのコマンドの認証/完全性保護が提供されるべきであり、セキュリティクリティカルコマンドは、特定のACC12に一意となるべきである。アプライアンス18とACC12との間のFCT50は、機密性のために暗号化されるべきであり、特徴は、ACC12に提供されるFCT50を介して有効および無効にされ得る。
ACC12は、プロトコルエンフォーサとして機能してもよく、受信したコマンドが無効である場合、ACC12は、それらを拒絶することができ、随意で、閾値の無効なコマンドが試行された場合にはシャットダウンすることができる。また、いったんACC12がロックアウトされると(デバイスが永久的に退役させられる時、またはデバイスが改ざんされていることをシステム12が検出した場合)、ACC12を再有効化できないことを確実にする能力も存在するべきである。使用されていない時、ACC12は、非常に低い電流ドレインまで出力を下げることが可能であるべきであり、ACC12の動作は、その基本的機能を果たすのに外部(オフコア)ファームウェアまたは外部CPUに依存するべきではない。
エージェント20および/または任意の好適なインターフェース(例えば、46、48)は、顧客がACC12にカスタムプログラミングインターフェースを追加することを可能にする融通性を提供することができ、それは最終的に、顧客が、種々のデバイスプログラマ26(例えば、USBポート、I2Cシリアルインターフェース、Ethernet(登録商標)等)を使用してACC12と通信することを可能にする。同様に、ACC12のプログラミングは、信用できるアプライアンス29との安全な通信チャネル29を開くことができるならば、複数の場所で複数の時に行うことが可能であるべきである。このようにして、プログラミングは、製造サイクルの最も費用がかからない段階まで延期することができる。アプライアンス18およびACC12は、デバイス識別番号(例えば、携帯電話用のIMEI/EIN)等の付加的な情報を安全にプログラムし、記憶するために使用することができる。
(ハードウェア詳細)
ここで、図53に示されたハードウェア実装のさらなる詳細を提供する。この実施例のACCハードウェアは、マイクロコントローラ54と、スクラッチデータRAM60およびNVM62にアクセスするメモリバスコントローラ64と、算術ユニット56(EC演算のために構成される)、周辺コントローラ59を通してアクセス可能なRNG58、ならびに示されていないが随意的にAESおよびSHAコア(領域/性能トレードオフが実行可能である場合)を含む、いくつかのメモリマップされた周辺機器とを備える。加えて、ACC12は、SoC設計者に対する融通性を追加するように、随意的な一般パラレルバスインターフェース66および外部アクセスNVMインターフェース68を有することができる。
ACC12の中心には、プロビジョニングコマンドを認証および実行し、プロビジョニングを施行すること、高レベルセキュリティプロトコルを実行すること、低レベルハードウェア暗号アクセラレータ機能の順序付けを支援し、初期化、構成、電力管理等の管理タスクを実施すること、ならびに内蔵自己試験(MBIST)の維持およびウエハ試験中のRNG BISTを支援することを含む、ACC12が達成する全てのタスクにおいて不可欠な役割を果たす、マイクロコントローラ54がある。マイクロコントローラは、主にそのサイズに対して選択され、次いで、必要と見なされる場合、速度性能を満たすように強化されるべきである。
フィールド算術ユニット56は、低レベル暗号計算のハードウェア加速を提供する。具体的には、フィールド算術ユニット56は、2進数フィールド乗算を効率的に実施するように構成されるべきである。フィールド算術ユニット56は、EC点乗算の完了を比較的迅速に可能にするため、ACC12の重要な部分と見なされ得る。フィールド算術ユニット56は、それぞれ認証および相互認証を提供するために使用される、ECDSAおよびECMQV公開キープロトコルの両方を加速するために使用することができる。これらのプロトコルの詳細を以下で説明する。
ハードウェアおよびファームウェアは、典型的には、面積、コードメモリ、複雑性、および性能指標に関してトレードオフする。何がハードウェアに実装されるかに基づく決定は、典型的には、主にゲートカウントおよび性能によって動かされる。ACC12の性能は、テスター時間に関して測定される直接的な費用の意味合いを有し、等価ゲートカウントは、シリコン面積によって測定されるような実装費用を動かす。
RNG58は、ソフトウェア調節器(図示せず)の助けを借りて、暗号キーおよびUIDとして使用される統計的乱数を生成するために使用することができる。楕円曲線公開キー暗号作成スキームでは、乱数が非公開キーとして使用され、それが、曲線パラメータの以前に合意された生成点によって、楕円曲線スカラー点乗算を使用して乗算されると、積が公開キーとなる。RNG58は、ACC12が、そのACC12の寿命全体を通して静的である静的非公開キーペアを生成する時に使用することができる。加えて、ACC12とアプライアンス18との間のあらゆる安全なセッションのために、新しい一過性キーが作成される。ACCが、新しい静的または一過性キーが生成されることを必要とする時はいつでも、RNG58は、非公開静的または一過性キーを生成するためにシードとして使用される、ランダムビットストリームを提供するように求められる。ランダムビットストリームは、AESブロック暗号器に供給されて、RNGによって生成される未加工エントロピーを調節し、静的非公開キーとして使用される、均一に分布した乱数を生成する。いくつかの実施例では、AESブロック暗号器に供給される前に、RNGデータを調節するように、ランダムビットストリームをソフトウェアベースの線形フィードバックシフトレジスタ(LFSR)に供給されることができる。試験可能性(DFT)試験のための設計の一部として、ACC12は、RNG58の健全性チェックを実施するように求められるべきである。
この実施例のACC12は、0000h〜FFFFhに及ぶ、16ビットアドレスのバイトアドレス可能メモリ空間を有することができる。以下の表2は、この実施例で、どのようにしてメモリ空間が明確に異なる領域に分割され得るかを記載する。
上記の表のマイクロコントローラスクラッチ空間(XRAM)は、マイクロコントローラ54によって一時的なデータ記憶に使用することができる。それは、高速、単一サイクルアクセス、8ビットバイトのアドレス可能32ビットデータ静的RAMとして実装され得る。スクラッチ空間の実際の量は、ファームウェア使用量に基づいて定義されるべきである。
ACC12は、OTP、MTP、EPROM、FLASH等のNVM記憶要素62への一般インターフェースを有するように構成され得る。NVM62がIC技術に依存するため、そのようなNVM62に対するNVMインターフェース70は、おそらく特定のアプリケーションに従って定義される。NVMインターフェース70は、抽象化を提供し、専有NVMインターフェースプロトコルに容易に適応される安全な方式で、UIDを書き込み、書き換え、消去する能力を有するべきである。ある種類のNVM62は、一度だけプログラム可能であり(OTP)、それは、いったん「焼かれる」と、消去すること、またはそのメモリ場所に書き換えることができないことを意味する。OTPメモリが使用される場合には、どのメモリ場所にすでに書き込まれているかを把握していることを確認し、最新のデータコンテンツおよび利用可能な空きスペースがある場所を見つけるために使用される機構を維持するために、ファームウェアが必要とされる。
この実施形態では、3つの明確に異なるNVM許可レベルがあり、各許可レベルは、それらに課された異なる制約を有する。第1は、非公開空間許可レベルであり、NVM62は、専有的にACCの使用のために保留されている。ACC12は、読み出すことができ、かつ書き込むことができるが、他のエージェントは、この領域にアクセスすることが禁止されている。この領域に記憶されるデータは、秘密静的キー、UID、およびACC12の不揮発性状態を含み得る。第2は、保護された公開空間許可レベルであり、外部エージェントは、以下で説明されるように、FCT50、および認証を用いた安全なメッセージングプロトコルを使用して、この領域にデータを書き込むことのみができる。この領域は、RDACCESS型FCT50を用いてJTAGポート72から可読である。この領域はまた、通常のメモリアクセスを用いて、ならびにRDACCESS FCT50を用いて、パラレルコマンドインターフェース66からも可読である。典型的には、この領域は、オンチップ論理がチップの外側にデータを漏出しないと仮定して、オンチップ論理のみによってアクセス可能である、NVM62に顧客が保存したい秘密データを含む。第3は、ACC12が保護する必要のない、NVM62に記憶される他のデータを含む、共有メモリ空間許容レベルである。外部エージェントは、cmd[SHARENVMWR]またはcmd[SHARENVMRD]を用いて、あるいはパラレルコマンドインターフェース66からの直接メモリアクセスを使用して、この領域で読み書きすることができる。「cmd」コマンドを以下でより詳細に説明する。最低でも、ACC12は、オンチップ秘密を記憶するように、「非公開」許可レベルを伴う十分なNVM62空間を有するべきである。
ACC12に対する多くの用途のうちの1つは、顧客要件に基づいて、特徴を有効または無効にする方法を提供することである。有効/無効にすることができるものを定義する正確な特徴セットは、顧客によって提供されるものであるが、以下は、特定の顧客要件に従って適応を行うことができるように、どのようにプロビジョニングインターフェース74が使用され得るかを説明する。手短に言えば、上記のように、ACC12は、図53の有効化コントローラおよびインターフェース74によって表される、1組の出力ポートを備える。一実施形態では、有効/無効にされる必要がある特徴アイテムごとに、有効化コントローラおよびインターフェース74上で検出される1つのイネーブル信号がある。有効化コントローラおよびインターフェース74に出力される値を決定する未加工データは、NVM62から来得る。特定の特徴と単一のイネーブル信号との1対1のマッピングがないように、イネーブル信号を符号化するか、またはスクランブルをかけることが可能である。この場合、代わりに、信号の複数のビットを評価して、特定の特徴が有効にされているかどうかを決定することが必要となる。これが必要であるか実行可能であるかを決定することは、個別顧客用途次第となることが理解できる。このようにして、なんらかの付加的な論理のコストを犠牲にして、無許可特徴有効化をより困難にすることができる。しかしながら、スクランブリングが必要であるかどうかは、顧客からの実際の特徴のリスト、およびどの脅威モデルが考慮されているかに依存する。
ACC12が損なわれている場合、以下で説明されるように、ロックアウト状態に移行され、特徴有効化は、デバッギングおよび事後分析のために必要最小限の1組の特徴のみが有効化される、なんらかの非常に原始的な値に自動的に設定される。ロックアウト状態である時の特徴有効化値は、顧客要件に応じて、新しいデバイス14の初期特徴有効化とは異なり得る。
ACC12がアクティブである時間量は、典型的には比較的短く、したがって、それが非アクティブである間の電力消費が、それがアクティブである間よりも重要と見なされるべきである。ACC12は、それが非アクティブである時の電力を低減するように、根本的なシリコン技術によって提供される電力管理回路を含むことができる。例えば、ACC12が非アクティブである時に電力を節約するために使用することができる技法(クロックゲーティングおよび電力ゲーティング等)が使用され得る。
図53に示されたACC12はまた、IEEE1149(JTAG)仕様で定義されるようなJTAG試験アクセスポート(TAP)コントローラ72への双方向一般シリアルコマンドインターフェース76を提供する。コントローラ72は、単純に状態マシンであり、JTAGユーザ定義コマンドとして特徴プロビジョニングコマンドを実装する。JTAG仕様は、プロビジョニングサーバからの高レベルコマンドを、テスターインターフェースを通して被試験設計(DUT)に伝達されるテスターコマンドへ変換するために、テスターによって使用することができる、うまく定義されたテスターインターフェースを提供する。
実装することができるACC DFT特徴は、以下を備える。
1)RAM60およびNVM62のソフトウェアMBISTは、テスター16によって発行されるコマンドによって開始することができる。RAM60およびNVRAMに対するMBISTは、メモリの行および列にわたって固定パターンを伴い、次いで、それらを読み出して、予期されるものを含むことを確認する。しかしながら、OTP NVM62が使用される場合、全アドレス場所を試験することは非実用的であるため、パターンは、1つのアドレス場所のみに適用され得る。
2)ACC12の内側のレジスタに対して挿入され、テスター16によって開始および制御される、部分スキャン連鎖試験。機密情報を含むと見なされる、ACC12の中の制御および構成レジスタ75の一部であり得るレジスタは、スキャン連鎖から除外される。Life_Cycle_StateレジスタおよびSystem_Readyレジスタ、特徴有効化レジスタ、リセット有効レジスタ、クロスクロックドメイン同期化ラッチ、およびDFT有効/無効レジスタといったレジスタは、スキャン連鎖から除外され得る。
3)JTAG境界スキャンが、IC40の主要I/Oを試験するために使用される。これは、攻撃の指示となる場合がある、ACC12が切断されなかったことを確認するための追加セキュリティである。全てのACC12のDFT特徴は、ACC独自のTAPコントローラ72によって制御され、そのようなものとして、ハードウェアは、ACC12の状態に基づいてDFT特徴を有効および無効にすることができるように、設計されるべきである。初期化されていないACC12は、試験状態になり、デフォルトで有効にされるDFT特徴を有する。ACC12がcmd[EXITTEST]を受信すると、次いで、ソフトウェアが試験状態から初期化状態への移行を引き起こす。この移行の結果として、ハードウェアは、それがもはや試験状態ではないことを決定することができ、再び有効にされるまでDFT特徴を無効にする。
この実施形態では、アプライアンス18のコマンドは、上記で説明されるように、JTAGインターフェースを通してACCのTAPコントローラ72に連続的に送信される。いくつかの用途では、TAPコントローラ72のほかに、ACC12にコマンドを発行する代替的な方法を有することが望ましく、したがって、送信されるコマンドに対する第2のインターフェース、すなわち、一般プログラミングインターフェースを提供できることが考えられる。そのような一般プログラミングインターフェースは、単純に、16または32ビットプロセッサインターフェースであると見なされる。
2つのコマンドソースからの並列化された出力は、ともに多重化(MUXED)されるべきであり、1つだけのコマンドインターフェースが、いつでもアクティブとなるべきである。選択されるコマンドインターフェース76は、第1のコマンドを発行するものである(タイ(tie)がある場合、TAPコントローラ72がデフォルトとして選択され得る)。選択されたインターフェースは、cmd[REQRESP]が完了するか、または明示的なcmd[STOPACC]が発行されるまで、あるいはデバイス14がリセットした場合に、アクティブインターフェースである。MCU54上で作動する保護されたファームウェアで実装される、コマンド処理状態マシンの目的は、アプライアンス18によって発行されたコマンドの予備復号およびフィルタを実施して、それらをどのようにして取り扱うかを確認することである。
(ACCに対する動作のシーケンス)
図54は、1つのライフサイクル状態から次の状態に移行するための動作のシーケンスを図示する、高レベル状態図である。そのライフサイクルの全体を通して、ACC12は、過去に何が発生したかに基づいて、4つの状態のうちの1つで動作することができ、したがって、それらはACCのライフサイクル状態と呼ばれる。好ましくは、ハードウェア制御論理およびファームウェアコードの組み合わせによって施行されるような、特定のライフサイクル状態のみで、あるアクションが許容される。
ファームウェアは、アプライアンス18から受信されるコマンドに基づく、状態移行の唯一の制御を有するべきである。新しい状態に移行する第1のステップは、非公開NVM空間の中の固定場所に新しい状態値を書き込むことである。次いで、状態が保存される前に電源が切られた場合、ACC12が電源を入れたときにすでに移行した状態に戻らないように、確定的状態値がNVM62に保たれる。言い換えれば、ライフサイクル状態移行およびライフサイクル状態レジスタへの更新は、原子動作(atomic operation)として実行されるべきである。ここで、図54に示された4つのライフサイクル状態の概観を提供する。
試験状態80―ACC12が、まだ試験および選別に合格していない、新品の初期化されていないデバイスであるときには試験状態80である。ACC12が依然としてこの状態にある場合、ACC12がBIST、スキャン、および他の試験動作を完了しておらず、したがって、まだ初期化状態82になる準備ができていないと推定されることを暗示する。試験状態80中に、ACC12は、必要であれば繰り返し、任意の数のチップ妥当性確認試験を実行することができる。これらの試験のうちのいくつかは、内部レジスタおよびメモリを破壊し得るので、行われる前に試験プログラムが複数のリセットサイクルを必要とすることが予測できる。ACC12は、テスターが、1つの特定のコマンド、すなわち、試験状態80を終了する方法として指定することができるcmd[EXITTEST]コマンド(以下で説明される)を発行するまで、複数のリセットサイクルを通して試験状態80のままであるように設計されるべきである。
cmd[EXITTEST]は、ACC12に全てのDFT特徴を無効にさせ、ソフトリセットを発行する前に初期化状態80に移行させる。DFT特徴を無効にすることにより、敵対者が承認なくSoCを改ざんするためにこれらの特徴を使用することを防止する。DFT特徴は、後に機能状態84において認証されたアプライアンス18によって発行されるFCT50によって明示的に有効にされるまで、無効のままである。特徴レジスタの最下位ビットは、機能状態84のDFTを許容するように保留することができる。DFT特徴は、ライフサイクル状態を改変することが可能であるべきではなく、DFTを再有効状態にすることにより、状態を変化させるべきではない。ソフトリセットは、ACC12にいずれの残留DFTデータも残っていないことを確実にするために役立つことができる。ACCファームウェアは、ACC12が再始動するときに、初期化手順の実施に直接進むことを確実にするために、ソフトリセットを発行する前に、NVM62の中のライフサイクル状態値を更新するために使用されるべきである。
初期化状態82―この状態では、ACC12は、その静的キーペア(例えば、dsi、Qsi)を生成する。次いで、公開静的キーのx座標が、ACCのUIDとして使用され得る。これが行われると、ACC12は、次の起動が機能状態84に進むように、不揮発性ライフサイクルを更新することができる。cmd[EXITTEST]への応答は、この実施例では、UIDを含む。
機能状態84―この場合、ACC12は、基本的健全性チェックを実施し、特徴レジスタを更新し、次いで、休止状態になって、アプライアンス18からのcmd[STARTACC]および後続コマンドを待つ。ACC12は、アプライアンス18からのコマンドが有効であり、安全な通信に関与していることを検証することができる。どんな理由であれ、上記の状態のうちのいずれかにおいて、ACC12が、限定数の無効なコマンドと見なされるものを受信した場合、ACC12は、自動的にロックアウト状態86に移行することができる。特徴レジスタの最下位ビットは、機能状態84のDFTを許容する。DFT特徴は、ライフサイクル状態を改変することが可能であるべきではなく、DFTを再有効状態にすることにより、状態を変化させるべきではない。安全な条件下でしかDFTを再び有効にできないように、DFT特徴ビット、特徴のビットゼロを設定するために、FCT50が必要とされ得る。この再有効状態は、典型的には、デバイスの電源が切れるとDFT能力が失われる、揮発性FCT有効動作において発生することが留意され得る。DFT有効の揮発性質は、有効ビットを記憶するための不揮発性メモリの使用を考慮するときでさえ、デバイスのライフサイクルにわたって複数の有効を可能にする。
ロックアウト状態86―この状態は、ACC12が、i)cmd[LOCKOUT]を発行された、ii)最大数の許容エラーを検出し、それを上回った、iii)回復不能なエラーを検出したといった、条件のうちの1つに遭遇した場合に到達され得る。ロックアウト機構は、ACC12および全体としてシステム10全体を攻撃しようとする繰り返しの試行に対する抑止力となることを目的としている。いったんACC12がロックアウト状態86になると、ACC12は、付加的なコマンドを処理しなくなる。次いで、その後、ACCコマンドを使用して通信しようとする試行は、応答としてLOCKED状態をもたらす。加えて、ファームウェアは、事前指定された特徴セットに戻るか、または単純にそのまま特徴を維持し、特徴セットまたはNVM62の保護された空間のさらなる変更を防止し、次いで、シャットダウンして休止状態になる。
ライフサイクル状態移行は、典型的には、漸進的であり、かつ不揮発性であり、つまり、いったんACC12が新しい状態に移行すると、電力およびリセットサイクルを介しても、以前の状態に戻ることができない。これの例外は、揮発性となるロックアウト状態86への移行となり得る。NVM62に記憶されるライフサイクル状態86は、電力およびリセットサイクルを経過する場合にACC12がロック解除されるように、ロックアウト状態86になることによって修正されるべきではない。ACC12の永久ロックアウトを引き起こすコマンドおよびプロトコルエラーを防止することによって、このスキーマは、不注意にSoCが永久的に無効にされることを防止することができる。
しかしながら、ACC12が正常に動作することを妨げ得るあるエラー(大部分はハードウェア欠陥による)が存在する。ACC12が、これらの回復不可能なエラーのうちのいずれかに遭遇した場合には、ACC12が永久的にロックアウト状態86に陥ることが起こり得る。リセット以来、ACC12がいくつのエラー条件を観察したかを把握するために、RAM60に割り当てられたカウンタが使用され得る。ACC12は、エラー条件に遭遇する度に、エラーカウントを増やす。ACC12が最大数の許容エラーに達すると、ACC12は揮発性ロックアウト状態86に移行する。エラーカウンタは、ACC12をロックアウトする前に、任意の特定数の許容エラーを許容し得る。
(ファームウェア―起動シーケンス、状態移行、およびライフサイクル状態)
ファームウェアは、概して、種々の根本的演算プリミティブを含む、1組の暗号プリミティブ、1組のBISTプリミティブ、起動および始動シーケンサ、ライフサイクル状態関数、ならびに受信コマンドおよびメッセージを解釈および処理する1組の関数といった、グループに組織化することができる。暗号プリミティブは、通信プロトコルの考察に従って以降で説明し、BISTプリミティブは、コマンド取扱の考察とともに論議する。したがって、以下は、起動および始動シーケンス、ライフサイクル状態関数、ならびに受信コマンドおよびメッセージを解釈および処理する1組の関数に焦点を当てる。
起動/始動―図55に示されるように、ACC12の再起動の度に、ACC12に組み込まれたマイクロコントローラ54は、電源を入れると、またはリセットから脱すると、自動的にファームウェア起動コードを実行し始める。ファームウェアプログラムは常に、1)いくつかの必要な低レベルレジスタ初期化および構成を実施する、2)NVM62に記憶された特徴有効化リストを読み出し、どの特徴を有効または無効にする必要があるかを決定し、次いで、適切な特徴イネーブル信号を駆動する、3)NVM62を読み出して、電源を切られる/リセットされる前にACC12がなっていた最後の状態を得る、および4)ライフサイクル状態レジスタに書き込み、その特定の状態で行われる必要がある全てを処理するサブルーチンに飛ぶことによって、適切なライフサイクル状態に移行する、といった順番で起動シーケンスを実行し始めるべきである。
状態移行を図示する略図が、図56に提供されている。全状態移行は、以下のシーケンスで始まり得る。第1に、状態移行サブルーチンは、それが移行している新しい状態を示す入力パラメータを有し、次いで、以下を行う。1)現在の状態に対して新しい状態をチェックし、新しい状態移行が有効であることを確認する。2)新しい状態がNVM62に記憶された最終状態とは異なる場合、新しい状態値でNVM62を更新する。3)ライフサイクル状態レジスタに新しい状態値を書き込む。4)この状態移行が、電源投入またはハードリセット直後の最初の状態移行であるかどうかを決定する。もしそうであれば、デフォルトで自動的に休止状態モードになる。5)そうでなければ、対応する状態関数を呼出して、その特定の状態において必要な動作を実施し始める。ステップ5については、その状態で必要な動作を処理するように、各状態が独自のサブルーチンを有することが留意され得る。状態サブルーチンのそれぞれに対するサブルーチンが、図57aから57dに示されている。
試験状態サブルーチンは、図57aに示されており、初期化状態サブルーチンは、図57bに示されており、機能状態ルーチンは、図57cに示されており、ロックアウト状態サブルーチンは、図57dに示されている。サブルーチンは、概して、図54のライフサイクル図に示された高レベルブロックに従うことが分かる。
ファームウェアに関する限り、特徴を有効または無効にすることは、1組のハードウェアレジスタに適切な値を書き込み、NVM62の中の既知の場所にその値を記憶することを伴うことが留意され得る。また、ある用途では、ACC12は、不揮発性データを記憶するためにOTPメモリを使用し得ることが留意され得る。OTPメモリは、ファームウェアが以前に書き込まれたデータを消去することを可能にしない。典型的には、OTPメモリは、ヒューズ回路と考えることができ、あらゆるビットは、最初に「0」の値を有し、あるビット場所に「1」を書き込むと、そのヒューズが永久的に焼かれ、決して修復することはきない。これが発生するために、ファームウェアは、1つのデータが有効であるか否か、どこで最新データを探すべきか、利用可能な空きスペースがある場所、およびもはや空きスペースがない時に何が起こるか、ならびに複数の書き込みを可能にするように十分な冗長スペースを割り当てることを考慮するべきである。NVM62がOTPではない場合、ファームウェアは、それをRAMとして扱ってもよく、既存のコンテンツを自由に上書きでき得る。しかしながら、NVM62は、典型的には、SRAMよりも遅いことを理解されたい。ファームウェアは、パフォーマンスインパクトを最小限化するように、一気にNVM62にアクセスしようとするべきである。
ファームウェアは、ACC12が電力を失うか、またはアプライアンス18から突然切断された場合に、可能な限り早く重要な情報をNVM62に記憶するべきである。あるNVM62技術では、いくつかのNVM62書き込みが100%確実ではない場合があるので、書き込みが成功したことを確実にするために、NVM62に書き込まれたデータが読み返されるべきである。加えて、ファームウェアは、いくつの失敗/不正コマンドが観察されたかという実行中のカウンタを維持するべきであり、カウントが閾値に達した場合、ファームウェアは、ACC12をロックアウト状態86にすべきである。また、コマンドが合理的な時間量後に適正な応答を提供できなければ、それは、ACC12の内側で何かが故障したか、または永久的に切断されたという指示となる場合がある。そのような場合において、アプライアンス18は、リセットを試行することができ、またはデータベースに切断の記録を取って、このACC12が再び再接続される場合に最終動作を再開する必要がある。
基本的に健全なアルゴリズムの詳細の実装により不注意に漏出した情報を調べることによって、敵対者が秘密情報を抽出するサイドチャネル攻撃を妨げるために、ACCのファームウェアは、これらの攻撃を軽減するように、あるファームウェア対策を含み得る。対策は、もしあれば、ファームウェア実装仕様で特定される。ある対策は、システム10の複雑性を生じさせ、それは次に、実行時間およびエネルギー消費を増加させることが留意され得る。
図58は、受信したコマンドに対してファームウェアが行うことを概説するコマンドインタープリタサブルーチンを図示する略図を提供する。ファームウェアは、以下の表3に示された以下のコマンドを処理する責任がある。
ファームウェアが、表3のリスト等の所定のリストの中にないコマンド(ハードウェアによって処理される有効なコマンドでさえ)を受信した場合、ファームウェアは、そのようなコマンドをエラーとして扱い、エラーハンドラ機能を呼び出すことができる。表3において(*DFT)によって示されたコマンドは、シリコン上の論理が欠陥なく製造されていることを立証するために使用される。一部のDFTコマンドは、独自のプロトコルを有し、正規のコマンドシーケンスとは異なるように挙動する。これらのコマンドの実際の機能性の説明は、以降で説明する。DFTコマンドは、FCT50を提供することと関連付けられるコマンドであるcmd[FCT]を介した、安全な特徴プロビジョニングを介してDFT特徴が再び有効になるまで、機能状態84において無効のままである。
ACCコマンドを処理する過程は、以下の処理シーケンスにおいて説明することができる。
1)新しいコマンドが利用可能であることを示すビット値「1」を検出するまでレジスタNewCmdAvailをポーリングする。
2)CmdInProgressビットを設定して、ファームウェアがコマンドを処理し始めたことをハードウェアに通知する。
3)命令レジスタ(IR)を読み出して、コマンドコードを取得する。
4)レジスタからデータ(該当する場合、コマンドに対するデータ)を読み出す(単語が32ビットである場合、単語単位で)。
5)データを処理し、コマンドによって要求される必要な動作を実施する。
6)ハードウェアへの応答ペイロードを準備し、応答ペイロードは、<status code,data>という形式であり、「status code」は、4バイト値(SUCCESS、FAIL、またはLOCKED)を含有し、「data」は、コマンドによって要求されるだけの数のバイトを含む(いくつかのコマンドについては空になり得、状態が=SUCCESSでなければ、常に空になるはずである)。
7)RspReadyビットを設定し、SWFLAGSレジスタに書き込むことによって、同時にCmdInProgressビットを消去する。
8)SendRspNowが「1」に設定される(ハードウェアはファームウェアからの応答データを受信する準備ができているという指示)まで待ち、レジスタに応答データを書き込む(単語が32ビットである場合、単語単位で)。
9)SendRspNowフラグの代わりに、NewCmdAvailフラグを有する場合、応答を放棄し、代わりに新しいコマンドを処理する。
上記のように、図58は、コマンドインタープリタファームウェアコードが講じ得るステップを示すフロー図を提供する。
図59は、エラー処理ルーチンにおけるステップを示すフロー図を図示する。ACC12が、許容された最大数のエラーに達し、ロックアウト状態86に移行しているため、エラー処理機能に飛んで決して戻らないことが考えられる。この実施例では、上記のように、ACC12の全寿命の全体を通してACC12をロックすることなく、最大で8つの無効なコマンドが観察されることを可能にする、合計8つのエラーカウンタマーカーがある。エラー処理は、随意で、カウンタ閾値、特定レジスタへ/からまたは外部信号を介した読み書き動作等の、プログラム可能な条件によってトリガすることができる割り込みである、MCUトラップを介して実装することができる。MCUトラップを使用することのいくつかの有益性があり、ファームウェアコードの至る所からの画一的なエラー処理、および無効なMCU命令、不良アドレス等の処理例外がある(ハードウェアがこれらの例外を見つけ、それらをエラーとして扱うことができるように)。
図60は、休止状態サブルーチン中に実施されるステップを図示する、フロー図を提供する。休止状態モードは、MCU54を低電力モードにする、MCU「停止」命令を介して実装することができる。この実施形態では、ファームウェアが休止状態から脱出するための唯一の方法は、MCUリセットを実施することができる。ハードウェアは、アプライアンス18からcmd[STARTACC]を受信すると、MCU54をリセットして、ファームウェアを起動させることができる。
(コマンド処理)
ACC12の重要な側面は、アプライアンス18によって送信されるコマンドを復号し、検証し、処理し、応答するプロトコルを組み込むことである。ACCハードウェアおよびファームウェアは、適切な場合において、設定、消去、またはポーリングされる、メモリマップしたレジスタの使用を通して、相互に通信することによって協働する必要がある。種々のコマンドが上記で紹介されているが、以下は、コマンド処理のための例示的なプロトコルを例証するように、この実施例でACC12が受け取る全てのコマンドのさらなる詳細を説明する。
以下の表4は、ACC12が処理できる全てのコマンドの概要を提供する。次いで、こ
れらのコマンドのそれぞれの機能をより詳細に説明する。
第1に、表4に関する一般的コメントである。*HW−onlyとして示されたコマンドは、ハードウェアのみによって処理されるものであり、ファームウェアはこれらを認識にしていない。他の全てのコマンドは、ファームウェアに渡されて処理される。表4において*DFTとして示されたコマンドは、シリコン上の論理が欠陥なく製造されていることを立証するために使用される。ACC12が試験状態80から外に移行すると、DFTコマンドは無効にされ、無効と見なされる。それらは、DFT特徴がFCT50を用いた安全な特徴プロビジョニングを通して再び有効にされるまで、無効のままとなる。REQRESPコマンドは、別のコマンドの応答を得るために使用されるように設計されている、特殊コマンドである。REQRESPは、ハードウェアとファームウェアとが連携することを要求する。*SPECIALとして示されたコマンドは、低レベルハードウェアコマンドである。それらは、コマンドプロトコルシーケンス(以降で説明される)に従わず、cmd[REQRESP]を使用してデータを返信しない。SHARENVMWRおよびSHARENVMRDは、随意的であり、ある用途においてはいずれか一方または両方が省略され得る。TESTMEM、TESTROM、TESTNVM、およびSCANは、用途のDFT方策に応じて随意的である。STOPACCの使用も随意的であり得る。いくつかの用途では、例えば、テスター/デバイスプログラマがACC12から切断したい時にリセットを発行した場合、このコマンドは使用される必要がない。最終的に、いくつかのコマンドは、あるライフサイクル状態(80〜86)のみに制限される。ACC12は、現在の状態に対して発行されるコマンドの妥当性を強化し、遭遇した無効なコマンドの数を把握し、カウントが閾値を上回る場合は、ACC12がロックアウトされる。
cmd[REQRESP]―前述のようなREQRESPコマンドの目的は、何らかの他のコマンドの応答に対する要求を提供することであり、そのようなものとして、別のコマンドが先行するときにのみ発行されるべきである。典型的には、このコマンドに対する要求ペイロードはない。ACC12は、応答の準備ができるまで全ての「0」を駆動し、次いで、(Start−Of−Payload marker||STATUS||<RSPPAYLOAD>)というメッセージを返信する。応答は、Start−Of−Payloadマーカー、状態、および該当するときには返信データペイロードから成る。Start−Of−Payloadマーカーは、「0」の16連続ビットが続く「1」の16連続ビットによって表される0xFFFF0000、またはアプライアンス18がパラレルコマンドバスを使用している場合、バスが16ビット長であれば「0x0000」が続く値「0xFFFF」あるいはバスが32ビット長であれば値「0xFFFF_0000」を含むDWORDといった、フォームを有し得る。応答は、SUCCESS、FAIL、LOCKEDといった3つの状態値のうちの1つを含む。次いで、応答状態を指定するために、SUCCESS=0xFFFF0001;FAIL=0xFFFF000E;and LOCKED=0xFFFF000Dといったコードが使用され得る。
状態が=SUCCESSである場合、初期コマンド種類に基づく応答ペイロードがあり得る。応答ペイロードのサイズおよびコンテンツは、コマンドによって変化する。アプライアンス18は、ACC12からの応答がどれだけ長いかを把握するべきであり、これは、発行された元のコマンドが何であったかに基づくべきである。応答がSUCCESS以外のものである場合、いずれの付加的な情報も返信されず、代わりに、ACC12は、アプライアンス18が不成功後に読み出そうとした場合に「0」の列を繰り返すことができる。次いで、アプライアンス18は、動作を再試行または中断することを選択し得る。場合によっては、アプライアンス18は、cmd[LOCKOUT]を発行することによって、ACC12を永久的に無効にすることを選択し得る。このコマンドは、通常、アプライアンス18が繰り返しの攻撃試行やACCの欠陥を検出した場合、またはデバイスを退役させたい場合に、使用される。単純な状態メッセージよりも洞察力のある状態コードの欠如は、システムの内部動作についての情報を漏らし、不注意に攻撃者に利点を譲渡することを防止するために使用され得る。この実施形態でのREQRESPコマンドは、全ての状態において有効である。
cmd[EXITTEST]―このコマンドは、全てのDFTが行われたことを示すため、および試験状態80から外に移行するために使用され得る。EXITTESTは、DFT特徴を無効にし、初期化状態82に移行し、ソフトリセットを引き起こし、ACC12を再起動する。静的キーは、初期化状態82において生成され、結果としてUIDを利用可能にする。この実施例での要求ペイロードは、4バイトであり、Payload_len=0である。次いで、コマンドが成功すれば、ACCiの静的公開キーのx座標であるUIDiを備える付加的な応答ペイロードが生成される。このコマンドは、試験状態80において有効である。テスター16は、ACC12におけるDFT試験からあらゆる残留トレースを除去するために、cmd[EXITTEST]を発行する直前に、ハードリブートを開始することが推奨される。加えて、ファームウェアは、RAMコンテンツが破壊されており、信頼できないと仮定するはずであるので、可能な限りROM52から実行するべきである。
cmd[STARTACC]―このコマンドは、効率的に節電モードからACC12を覚醒し、再起動する、ソフトリセットを引き起こすために使用され得る。いったんACC12がリセットから再開すると、起動シーケンス全体を実行し始め得る。ACC12は、機能状態84である場合、アプライアンス18との新しいキーセッションを確立する準備をするために、新しい一過性のキーペアを自動的に生成する。このコマンドに対する要求ペイロードはない。成功すれば、付加的な応答ペイロードは、静的公開キー(73バイト)であるQsiと、一過性の公開キー(73バイト)であるQeiとを備える。成功した応答は、機能状態84のみにおいて送信される(静的キーがすでに生成され、NVM60に正しく書き込まれたことが立証された後)。このコマンドは、全ての状態において有効である。STARTACCは、ソフトリセット起動シーケンス、エントロピー収集、および一過性のキーの生成のための時間を必要とし得ることが留意され得る。
cmd[STOPACC]―このコマンドは、切断されるようにACC12を準備するために使用され得る。次いで、ファームウェアは、休止状態モードに移行するべきである。この実施例での要求ペイロードは、4バイトであり、Payload_len=0である。要求が成功すれば、いずれの付加的なペイロードも提供されない。このコマンドは、試験状態80、初期化状態82、および機能状態84で有効である。いずれの応答もこのコマンドに利用可能ではないことが留意され得る。ACC12が休止状態モードになった後にREQRESPを発行することにより、応答を取り出そうとすると、「0」しか生じなくなる。ファームウェアは、再開するために、ハードウェアがリセットを生成し、ファームウェアにおいて起動シーケンスを引き起こすために、休止状態モードになる前にNVM62の中の全ての必要なデータを保存するべきであり、したがって、この時点後にNVM62の中にない全てのデータは失われる。
cmd[LOCKOUT]―このコマンドは、ロックアウト状態86への移行を強制するために使用され得る。この実施例での要求ペイロードは、4バイトであり、Payload_len=0である。要求が成功すれば、いずれの付加的なペイロードも提供されない。このコマンドは、試験状態80、初期化状態82、および機能状態84で有効である。このコマンドを実行することにより、ACC12の永久ロックアウトをもたらし、次いで、ACC12は、いずれの付加的なコマンドも処理することを拒絶する。この状態では、ACC12は、節電モードになり、cmd[REQRESP]を受けると、LOCKED状態としか応答しない。
cmd[INITFCT]―このコマンドは、典型的には、キーセッションにおける第1の特徴制御コマンドであり、FCT50メッセージを処理するようにファームウェアに命令するために使用される。コマンドは、セッションのための共有秘密を導出して、テスター16およびエージェント20を介したアプライアンス18とACC12との間のトンネルを確保するために、全ての必要な情報を含む。ACC12が再起動されるまでキーセッションが続き、INITFCTコマンドは、ACC12再起動の間に1回だけ発行されるべきであることが留意され得る。いったんキーセッションが確立されてから別のcmd[INITFCT]に遭遇した場合、それはエラーとして扱われるべきである。キーセッションが確立された後に付加的な特徴プロビジョニングコマンドを送信するために、アプライアンス18は、後続の特徴プロビジョニングメッセージにより短いcmd[FCT]コマンド(以下参照)を使用するべきである。INITFCTコマンドに対する要求ペイロードは、以下のように編成され得る。
この場合、以下のようである。
Payload_lenは、ペイロードの長さである。このフィールドは、いくつの32ビット単語が残りのペイロードの中にあるかを特定するために使用することができる(ペイロードが単語の一部で終端する場合、payload_lenは最も近い整数に切り上げられ得る)。
Qejは、APPjの一過性の公開キーである(すなわち、標準ANSI外部形式)。
CERTjは、CERTj=VER||CID||Qsj||SIGcertjを含む、APPjのミニ証明書であり、VERは、証明書バージョン番号(1バイト)であり、CIDは、顧客ID(4バイト)であり、Qsjは、APPjの公開静的キー(73バイト)であり、SIGcertjは、ルートCAによって署名される、CERTjに対する署名であり、SIGcertj=ECDSA_SIGN(CERTj,ds)およびdsは、ルートCAの非公開キーである。
EM_lenは、バイト単位でのEMnijの長さである(例えば、[74〜584]の範囲を有する)。
EMnijおよびMACnijは、(EMnij,MACnij)=AES_CCM*(FCT||SIGnij,n,kij)である、暗号化された特徴プロビジョニングメッセージFCT50(例えば、90〜600バイト)を表し、FCTは、特徴制御チケットメッセージ(2〜512バイト)であり、kijは、導出された暗号化キーであり、nは、(msgID||4 zero bytes)として構築されたノンス(8バイト)であり、msgIDは、例えば、あらゆるFCTコマンドで常に2ずつ増分しさえする、現在のメッセージに対するメッセージカウンタ(4バイト)であり、SIGnij=ECDSA_SIGN(UID||msgID||padding||FCT,dsj)(72バイト)である。ここで、UIDは、ACCのUID(36バイト)であり、msgIDは、上記と同じ(4バイト)であり、paddingは、ゼロバイト(8バイト)を含み、dsjは、証明書CERTjに対応するAPPjの非公開キーである。
上記で示されるバイト数は、例証目的のためにすぎず、特定の用途による要求に応じて変化し得ることが理解されるであろう。
付加的な応答ペイロードは、コマンドが成功した場合、以下のように編成され得る。
この場合、以下のようである。
ERnijおよびMACnijは、特徴コマンドへの暗号化された応答を表す。(ERnij,MACnij)=AES_CCM*(FCTRSPni,n,kij)であり、FCTRSPniは、FCT50コマンドへの応答であり、kijは、導出された暗号化キーであり、nは、(msgID||4 zero bytes)として構築されたノンス(8バイト)であり、msgIDは、現在のメッセージに対するメッセージカウンタ(4バイト)(例えば、常に奇数である、「1」を加えた要求ペイロードの中のmsgIDの値)である。
このコマンドは、機能状態84において有効である。ファームウェアが、機能状態84においてこのコマンドを検出した場合、このコマンドに対して以下の動作を実施することができる。
1.メッセージカウンタmsgIDを「0」にリセットし、ACCの独自のメッセージカウントが、ステップ5において特徴プロビジョニングメッセージを処理している間に伝送されたものに合致することを立証するために、それを使用する。
2.CERTjを認証し、証明書からQsjを抽出する。
3.共有秘密キーを計算し、ECMQVwKDF(dsi,dei,Qei,Qsj,Qej)を伴う暗号化キーkijを導出する。
4.EMnijを復号し、SIGnijを検証し、次いで、特徴プロビジョニングメッセージFCT50を処理する。
5.特徴プロビジョニングメッセージへの応答(ERnij,MACnij)を準備する。応答を準備するときに、(msgID+1)がノンスnに使用されるべきである。
上記のステップの全てが成功した場合には、ファームウェアは、状態コードSUCCESSおよび(ERnij,MACnij)を返送し得る。そうでなければ、ファームウェアは、状態コードFAILを送信し、またはエラーカウンタがその最大値に達した場合、ファームウェアは、ロックアウト状態86に移行し、状態コードLOCKEDを送信する。
cmd[FCT]―このコマンドは、特徴プロビジョニングメッセージを処理するようにファームウェアに命令するために使用される。それは、新しい共有キーを生成する代わりに既存の共有キーを再利用することを除いて、INITFCTコマンドと同様である。要求ペイロードは、以下のように編成され得る。
この場合、上記と同様に以下のようである。
Payload_lenは、いくつの32ビット単語が残りのペイロードの中にあるかを特定するペイロードの長さである(ペイロードが単語の一部で終端する場合、payload_lenは最も近い整数に切り上げられる)。
EM_lenは、バイト単位でのEMnijの長さである(例えば、[74〜584]の範囲を有する)。
EMnijおよびMACnijは、暗号化された特徴プロビジョニングメッセージ(90〜600バイト)を表す。(EMnij,MACnij)=AES_CCM*(FCT||SIGnij,n,kij)であり、FCTは、特徴制御チケットメッセージ(2〜512バイト)であり、nは、例えば、あらゆるFCTコマンドによって常に2ずつさらに増分する(msgID||4 zero bytes)として構築されたノンス(8バイト)であり、msgIDは、現在のメッセージに対するメッセージカウンタ(4バイト)であり、SIGnij=ECDSA_SIGN(UID||msgID||padding||FCT,dsj)(72バイト)であり、UIDは、ACCのUID(36バイト)であり、msgIDは、上記と同じ(4バイト)であり、paddingは、ゼロバイト(8バイト)を含み、dsjは、証明書CERTjに対応するAPPjの非公開キーであり、kijは、導出された暗号化キーである。
付加的な応答ペイロードは、FCTコマンドが成功した場合、以下のように編成され得る。
この場合、以下のようである。
ERnijおよびMACnijは、特徴コマンドへの暗号化された応答を表し、(ERnij,MACnij)=AES_CCM*(FCTRSPni,n,kij)であり、FCTRSPniは、FCTコマンドへの応答であり、kijは、導出された暗号化キーであり、nは、(msgID||4 zero bytes)として構築されたノンス(8バイト)であり、msgIDは、現在のメッセージに対するメッセージカウンタ(4バイト)(例えば、常に奇数である、「1」を加えた要求ペイロードの中のmsgIDの値)である。
FCTコマンドは、機能状態84において有効である。ファームウェアは、このコマンドに対して以下の動作を実施し得る。
1.FCT50が有効であるかどうかにかかわらず、メッセージカウンタmsgIDが2ずつ増分され、ステップ2において特徴プロビジョニングメッセージを処理しながら、正当性が立証される。
2.EMnijを復号し、SIGnijを検証し、次いで、特徴プロビジョニングメッセージFCT50を処理する。
3.特徴プロビジョニングメッセージへの応答(ERnij,MACnij)を準備する。応答を準備するときに、(msgID+1)がノンスに使用されるべきである。
全てのステップが成功した場合には、ファームウェアは、状態コードSUCCESSおよび(ERnij,MACnij)を返送する。そうでなければ、ファームウェアは、状態コードFAILを送信し、またはエラーカウンタがその最大値に達した場合、ファームウェアは、ロックアウト状態86に移行し、状態コードLOCKEDを送信する。いくつかの実施形態では、このコマンドは、キーセッションが利用可能であるように、cmd[INITFCT]コマンドの処理が前もって成功していることを要求することが留意され得る。それが真ではない場合には、コマンドがエラーをもたらす。
cmd[INITFCT]およびcmd[FCT]の一部としてACC12に送信されるFCT50メッセージは、典型的には、定刻よりも早くアプライアンス18によって構築され、いずれの特定のACC12にも特有でなく得る。いくつかの異なる種類のFCT50があり、異なるFCT種類の書式設定の実施例は、以下のように定義され得る。
注記1:全てのFCT50のうちで最短のものは、長さが2バイトしかないGETFEAT種類である。最長のFCT50は、最大で512バイトとなり得るWRACCESS種類である(さらなる詳細については注記2および3を参照)。
注記2:この実施例でのRDACCESSおよびWRACCESS FCT50は、4バイトインクリメントのデータのみにアクセスすることができる。アドレスは、4バイト境界上で整合されるべきであり、アクセス可能なデータの量は、4で割られるべきである。
注記3:この場合、アクセス可能なデータの最小量は、4バイトである。WRACCESSがアクセスできるデータの最大量は、=(最大EM_len)−len(n)−len(TYPE)−len(TAG)−len(ADDR)=512−1−1−8−2=500バイトである。RDACCESS種類のFCT50がアクセスできるデータの最大量は、この実施形態では、512Bに規定されるEM_lenの最大長によって限定される。最大EM_lenおよびER_lenに課せられる制限は、利用可能な限定量のRAM60内でペイロード全体を保持する能力があるべきという事実による。より多くのデータにアクセスする必要がある場合には、これらの制限内に収まるまで、それを複数のFCT50に分ける必要がある。
注記4:WRACCESSおよびRDACCESS FCT50は、NVM62の保護された領域のみにアクセスできるようになるべきである。次いで、保護されたNVM62以外のものにアクセスしようとすることは、エラーと見なされる。この規則の1つの例外は、これらのコマンドに対して許容される非公開NVM62に記憶された記録タグTAGを読み書きとなり得る(しかし、WRACCESSのユーザは、TAGおよびDATAが非公開NVM62の中の同じ場所に書き込まれ、NVM62の中の結果として生じる値をTAGおよびDATA値のOR動作結果にさせることを認識するべきである)。
注記5:SETFEAT FCT50が永久的な特徴プロビジョニングを実施するために使用される一方で、SETFEAT_TEMP FCTS50は一時的な特徴プロビジョニングを実施するために使用される。永久的な特徴プロビジョニングでは、FEATSETビットがNVM62に書き込まれる。一時的な特徴プロビジョニングでは、NVM62の中のFEATSET値が、FCT50のFEATSETフィールドでORを行われ、結果として、ACC12の電源が入ったままである限り、実際のFEATSETとして使用される。いったんACC12が電力を失う、および/または再起動すると、一時的なFEATSETが失われ、NVM62に記憶されたものに戻る。
FCT TAG記録―プログラミングFCT50(すなわち、SETFEATおよびWRACCESS種類)のTAGフィールドが、過去にACC12に起こったことの履歴記録として使用される。
各プログラミングFCT50は、製造過程中のステップを表してもよく、各ステップは、そのステップと関連付けられたTAG記録の中のビットを有する。FCT50が処理された後に、そのステップが起こったことを示すために、対応するビットが設定される。アプライアンス18がFCT50を構築するときには、何がFCT50のコンテンツであるかを知り、適切なタグビットを設定する必要がある。次いで、ACC12は、NVM62の保護された領域の中の特別保留空間内にTAG記録を保つ。FCT50の処理が成功すると、次いで、ACC12は、以前のTAG記録を伴うFCTのタグフィールドのビット単位のORを行い、新しい値をNVM62に戻して記憶し得る。単にTAG記録の個々のビットを見ることによって、講じられた(ビット=「1」である場合)、および講じられなかった(ビット=「0」である場合)プログラミングステップを決定することができる。この場合、真新しい初期化されていないACC12は、全て「0」のTAG記録を有する。ACC12上のTAG記録は、プログラミングFCT50の処理の成功の結果として更新され、または代替として、WRACCESS FCT50を伴うTAG記録のアドレスを知っていれば、任意の値をTAG記録に直接書き込むことができる。FCT50を処理している間にACC12がエラーに遭遇した場合、TAG記録は更新されるべきではない。TAG記録は、cmd[SHAREDNVMRD]を使用して読み出すことができ、読み出したデータは暗号化されていない。
TAG記録に書き込まれるWRACCESS FCT50を発行する時に注意を払うべきであり、TAG記録は2回書き込まれ、1回目はFCT50を実行するとき、2回目はTAG記録を更新するときであることが留意されるべきである。このことが起こった場合、DATAフィールドは、TAGフィールドと同じになるべきであり、またはそれらのうちの1つは、偶発的にTAG記録を破壊することを防止するように、全て「0」から成る。
FCT応答―FCT応答は、cmd[INITFCT]またはcmd[FCT]を処理した後に送信される。完全な応答は、以下のように編成され得る。
この場合、以下のようである。
ER=AES CCM*((STATUS||UID||<data>),n,k)、STATUSは、上記で記載される状態コードのうちの1つであり、UIDiは、Qsiのx座標であるACCiの一意のIDであり、<data>は、FCT50コマンドによって要求されるデータであり、
FCT種類=SETFEATであれば、何もなく、
FCT種類=GETFEATであれば、デバイス上の全ての特徴に対する現在の設定(32バイト)であり、
FCT種類=WRACCESSであれば、何もなく、
FCT種類=RDACCESSであれば、要求された読み出しデータの最大512Bである。
nは、(msgID||4 zero bytes)として構築されたノンス(8バイト)であり、上記のように、msgIDは、現在のメッセージに対するメッセージカウンタであり、常に奇数となるべきである(4バイト)。
STATUSは、暗号化されていない文章で送信されるとともに、暗号化された応答の一部分でもあることが留意され得る。たとえ暗号化されていない状態が暗号化された状態に合致しても、ERを復号し、検証することによって、状態が認証されない限り、メッセージが配送中に改変された可能性があるので、暗号化されていない状態が正しいという保証はない。いくつかの用途は、単純に暗号化されていない状態を見て、FCT50が成功したかどうかを素早くチェックしたい場合があるが、通信チャネルを信用するつもりである場合のみにそうするべきである。成功した応答の長さlen(status||ER)は、FCT50コマンドを発行したときにエージェントに知られるべきであるため、エージェントは常に、ACC12が応答の中でそのデータの量を返信し、そのデータの量を読み返すことを仮定するべきである。
Cmd[TESTMEM]、cmd[TESTROM]、cmd[TESTNVM]、[TESTRNG]:これらのコマンドは、シリコンダイに機能DFT試験を実行して、チップに欠陥があるかどうかを決定するために、チップ製造業者によって使用することができる。Payload_lenによって識別される要求ペイロードは、4バイトであってもよく、ゼロに等しい。
TESTMEM、TESTROM、TESTNVMであれば、コマンドが成功した場合、付加的な応答ペイロードは何もない。
TESTRNGであれば、コマンドが成功した場合、付加的な応答ペイロードは、オンボード乱数発生器によって収集されるようなランダムデータの32ビット列である。これらのコマンドは、特定のDFT特徴がFCT50を使用して再び有効にされている場合、試験状態82および機能状態84において有効である。有効チェックは、ファームウェアによって行われる。
ACC12は、コマンド種類に基づいて、以下のうちの1つを実行し得る。
1.メモリ試験プログラムが、メモリビットのうちのいずれかに欠陥がかるかどうかを確認するために、RAM60全体にわたって特定のデータパターンを調べる。
2.NVM62を除いて、MemTestと同様であるNVM62試験プログラム。
3.ROM60コード健全性チェックは、ROM60コンテンツ全体においてCRC−32を実行し、それをハードウェアに組み込まれたチェックサムに対して比較することを伴う。これは、ROM60がアクセス可能であり、欠陥がないことを確認する単純なチェックであり、ROM60コードを改ざんされることから守るようには意図されていない。
4.RNGリング発振器から受信されたエントロピーの量をチェックするRNG58試験。これは、固定期間にわたってRNG58からビットストリームを収集し、次いで、オフチップで後処理されるランダムデータを返信することを伴う。
これらのBISTプログラムのそれぞれは、それに関連付けられたDFTコマンドを有することが留意され得る。コマンドは、これらの試験プログラムの実行をトリガし、合格/不合格の試験結果が応答状態になる。BISTプログラムのうちのいずれかが不合格になった場合、ACC12は、最初の不合格において自動的にロックアウト状態86になる。それらには、他の無効コマンドエラー条件のように、複数の付加的な試行を受け入れる能力が与えられない。他の実施形態では、アプリケーションは、他のDFT方策を決定付けてもよく、その場合、これらのコマンドのうちの一部のみが実装され得ることを理解することができる。
cmd[SHARENVMWR]―これは、典型的には、アプライアンス18または他のエージェント20がNVM62の「共有」領域に書き込むことを可能にする、随意的なコマンドである。これらのコマンドは、安全ではないが、ACCの制御内にあるNVM62へのオープンアクセスを可能にする。これらのコマンドが含まれるべき典型的理由としては、a)SoCの設計が、複数の機能ブロック間で共有される1つだけのNVM62を有する場合、ACC12は、そのNVM62ブロックのゲートキーパーとなり、アクセス制限を施行するのに役立つ、b)システムがACC12へ、およびそこからのメールボックスとしてNVM62を使用する場合、およびc)安全なセッションを確立することができる前に、テスターが情報をACC12に注入する場合である。要求ペイロードは、以下のように編成され得る。
この場合、以下のようである。
Payload_lenは、上記のように、ペイロードの長さであり、
ADDRは、4バイト境界上で整合されるべきである、コマンドがアクセスしようとしている、NVMベースアドレスからオフセットされた開始アドレスである。
SIZEは、4バイトのインクリメントのアクセスされているバイトの数である。
WRDATAは、cmd[SHARENVMWR]のみに適用可能である、書き込まれ、SIZE数のバイト長さである、データストリームである。
このコマンドについては、成功すれば、いずれの付加的な応答ペイロードもない。このコマンドは、試験状態82および機能状態84において有効である。アクセス可能であるデータの最大量は、最大64KBである利用可能な連続共有NVM空間の最大量によって限定される。ファームウェアは、事前にプログラムしたNVM許可テーブルに対して要求のアドレスおよびサイズをチェックし、アクセス全体が許可されていることを確認するべきである。アクセスのいずれかの部分が共有NVM空間外にある場合には、エラーと見なされ、コマンドが失敗する。これの例外は、NVM62の特別な保留された保護領域の中に位置するTAG記録を読み出すときとなる。
cmd[SHARENVMRD]―これも、アプライアンス18または他のエージェント20がNVM62の「共有」領域にアクセスすることを可能にする、随意的なコマンドとして使用され得る。これらのコマンドは、安全ではないが、ACCの制御内にあるNVM62へのオープンアクセスを可能にする。これらのコマンドが含まれるべき典型的な理由としては、a)SoCの設計が、複数の機能ブロック間で共有される1つだけのNVM62を有する場合、ACC12は、そのNVMブロックのゲートキーパーとなり、アクセス制限を施行するのに役立つ、b)システムがACC12へ、およびそこからのメールボックスとしてNVM62を使用する場合、およびc)上記で指摘されるように、NVM62の特別に保留された領域の中に位置するFCT TAG記録を読み返すために、cmd[SHARENVMRD]を使用することができることである。TAG記録は、cmd[SHARENVMRD]で、暗号化されていない文章で可読であるが、cmd[SHARENVMWR]で、書き込み可能であるべきではない。要求ペイロードは、以下のように編成され得る。
この場合、以下のようである。
Payload_lenは、上記のように、ペイロードの長さであり、
ADDRは、コマンドがアクセスしようとしている、NVM62ベースアドレスからオフセットされた開始アドレスであり、4バイト境界上で整合されるべきである。
SIZEは、4バイトのインクリメントのアクセスされているバイトの数である。
コマンドが成功した場合、付加的な応答ペイロードは、融通性のあるサイズのRDDATAを備える。RDDATAは、cmd[SHARENVMRD]のみに適用可能であり、書き込まれ、SIZE数のバイト長さであるデータストリームである。ACC12と通信するエージェント20は、事前にRDDATAの長さを計算できることを想定されたい。また、コマンドを作成したアプライアンス18は、SHAREDNVMRDコマンドを送信するときに、どれだけのデータを取り出すべきかをエージェント20に知らせるべきである。このコマンドは、試験状態80および機能状態84において有効である。アクセス可能であるデータの最大量は、最大64KBである利用可能な連続共有NVM空間の最大量によって限定されるべきである。ファームウェアは、事前にプログラムしたNVM許可テーブルに対して要求のアドレスおよびサイズをチェックし、アクセス全体が許可されていることを確認する。アクセスのいずれかの部分が共有NVM空間外にある場合には、エラーと見なされ、コマンドが失敗する。
cmd[SCAN]―このコマンドは、テスターがACC12のスキャン試験を開始したいことを示す。要求ペイロードは4バイトであり、Payload_len=0である。コマンドが成功すれば、いずれの付加的な応答ペイロードも提供されない。このコマンドは、特定のDFT特徴がFCT50を使用して再び有効にされている場合に、試験状態80および機能状態84において有効である。有効チェックは、ファームウェアによって行われる。ACC12は、ScanModeビットを高く設定するべきである。
cmd[REQVERID]―このコマンドは、ACC12のハードウェアおよびソフトウェアバージョンを識別するために使用されるACCのバージョンIDを要求するために使用され得る。このコマンドは、ACC12の異なるバージョンの間でプロトコルおよび特徴の違いを区別する方法が存在する必要がある場合に、有用となり得る。典型的には、このコマンドは、さらなる通信において使用する正確なプロトコルに関して、全ての当事者が合意していることを確認するように送信される第1のコマンドである。このコマンドに対する要求ペイロードはない。応答は、以下のように編成され得る。
ファームウェアおよびハードウェアの両方のバージョンIDは、両方とも8ビットである。これらのフィールドの実際の値は、ACC12の設計のどのバージョンが使用中であるかに基づいて決定される。REQVERIDは常に、即時に応答で返信するべきである。応答には、Start−of−Payloadマーカーも、状態フィールドもない。HWバージョンIDは、ハードウェアに組み込まれ、そのようなものとして、常に利用可能であるべきである。FWバージョンIDは、ファームウェアがROM60から正しい値を取り込み、起動時にその値をFWVERIDレジスタに書き込むまで、最初は全て「0」である。FWバージョンIDが「0」である場合には、ACC12がまだ作動し始めておらず、後に再び試行するべきであることを示す。応答が既知のVERID以外のものである場合は、致命的なエラーと見なされるべきである。このコマンドは、図54に示された全ての状態において有効である。
cmd[IDCODE]―このコマンドは、IEEE1149仕様によって、ACCのタップコントローラのIDCODEを返信する(このコマンドのさらなる詳細をこの仕様で見出すことができる)。このコマンドに対する要求ペイロードはない。応答は、以下のように編成され得る。
IDCODEは、ハードウェアに組み込まれた定数となるべきであり、したがって、常に応答を即時に返信するべきである。応答には、Start−of−Payloadマーカーも、状態フィールドもない。IDCODEの実際の値は、典型的には、用途に特有である。このコマンドは、全ての状態において有効である。
cmd[BYPASS]―このコマンドは、IEEE 1149仕様によって、ACCタップコントローラをバイパスモードにする。シフトインされるあらゆるビットは、1TCKクロックサイクルによって遅延され、シフトアウトされる。このコマンドは、全ての状態において有効である。
(通信プロトコル)
ここで、通信プロトコルの高レベルの説明を提供する。議論されているように、アプライアンス18は、特徴制御チケットまたはFCT50として知られているメッセージを使用して、ACC12と安全に通信する。システム10では、アプライアンス18がACC12と通信することができる2つのインターフェースがある。
1つのインターフェースは、試験アクセスポートおよび境界スキャンアーキテクチャについてIEEE 1149.1規格で定義されるようなJTAG試験インターフェース72である。インターフェース規格は、1組の制御およびデータ信号、試験アクセスポートコントローラ、ならびに回路の試験をサポートするように設定される機構および命令の定義を含む。JTAGインターフェース72は、典型的には、製造欠陥について集積回路を試験するために使用されるが、規格は、個人がユーザ定義の機能を実装するようにコマンドを拡張するための条項を含む。
JTAGインターフェース72に加えて、この実施形態は、アフターマーケット再プログラミングを可能にする付加的な融通性を有効にするようにパラレルバスに接続するために、またはJTAGインターフェース72へのアクセスがない場合に、2次コマンドインターフェース66を提供する。2次コマンドインターフェース66は、単純で一般的なメモリマップしたバスに似ているように構成することができる。2次インターフェース66上のデータ幅は、用途の要件に応じて、8、16、または32ビットに構成することができる。
JTAGインターフェース72とパラレルコマンドインターフェース66とは、物理的に異なり、一方がシリアルインターフェースであり、他方がパラレルバスであるが、共通の1組のコマンドおよび応答を共有することが留意され得る。2つのインターフェース72、66は、ファームウェアへの均一なインターフェースを提示するように、(コマンドインターフェースMUX76を介して)ハードウェアの中でともに多重化される。そのように、物理的実装における相違をファームウェアから隠すことができる。
本明細書において説明される通信プロトコルに従おうとするときに、以下が留意され得る。
a)アプライアンス18/エージェント20は常に、テスター16または顧客依存のデバイスプログラマ26を介して、ACC12との通信を開始するものとなるべきである。
b)ACC12は、コマンドに応答することしかできず、開始することができないように、コマンドプロトコルにおけるスレーブと見なすことができる。例えば、この構成では、ACC12は、そうするように促されることなく、応答データを送信することさえしない。
c)ACC12の中のマイクロコントローラ54は、割り込みがない、単一スレッド状である。したがって、1度に1つのタスクにしか取り組むことができず、他のことを行う前に、そのタスクを完了しなければならなくなる。そのタスクが行われる前に別のコマンドが着信した場合、新しいコマンドは無視される必要がある。
d)ウエハテスターは、典型的には、ACC12がその時間がかかる計算を終了することを待つ時間を無駄にすることを望まない。その代わりに、先に進んで他のことを行い、ACC12がコマンドを完了する寸前であるときに戻ることを望むであろう。
e)JTAGインターフェース72の仕様は、あらゆるJTAG実装が命令レジスタ(IR)およびデータレジスタ(DR)を有することを要求する。両方のレジスタは、テスター16によって読取り可能および書込み可能である。この実施例では、IR/DRレジスタペアの2つのバージョンがある。一方は、TapおよびJTAGインターフェース72に位置し、他方は、パラレルインターフェース66に位置する。CmdインターフェースMux76は、2つのバージョン間で仲裁し、それに応じて、周辺コントローラ59にIR/DRデータを送る。テスター16は、どのコマンドを実行するかを伝えるためにIRに書き込む。それは、DRに書き込むことによって要求データを送信することができ、DRから読み出すことによって、応答データを捕捉することができる。同様に、パラレルコマンドインターフェース66は、同様にIRおよびDRを有するように、可能な限りこのパラダイムを再利用するが、バス上のメモリマップしたレジスタとして実装することができる。
プログラムされるコマンドに応じて、書き込んだ後にDRを読み出すことにより、書き込まれた同じコンテンツを返さない場合がある。テスター16は、いつでもIRおよびDRを読み書きし得るが、これが不適切なときに行われた場合、破壊したデータをもたらすか、または同期がずれる場合がある。以下で説明されるトランザクションプロトコルは、読み書きが発生し得る時、および予期される結果がどのようであるべきかを特定する。
ここで図61を参照すると、単一のコマンドシーケンスの例が示されている。テスター16は、1a)において、ACCの命令レジスタ(IR)に命令コードを書き込むことによって、表4に記載されるACC12へのコマンドのうちの1つを開始する。新しいコマンドが発行されたことを意味して、IRが更新されるとすぐに、ACC12は、1b)において、コマンドを復号し、そのコマンドと関連付けられた正しい量のデータを吸収する準備をする。次いで、テスター16は、2a)において、ACCのデータレジスタ(DR)にデータを書き込むことによって、新しいコマンドと関連付けられたデータペイロードを送信する。要求ペイロードが完全に送信されない場合、ACC12は、無期限に残りのデータを待ってハングアップする。ACC12は、テスター16がレジスタデータを送信するのと同じくらい速く、それをサンプリングし、コマンド自体を実行する前に、2b)において、ペイロード全体をスクラッチデータRAM60に記憶する責任を負う。次いで、ACC12は、DRに読み出しを発行し、新しいデータが到着したことを準備完了信号が示すまで読み出しサイクルを引き延ばすように、待機状態を挿入する。
実際のスループット限度は、JTAGおよびACCシステムクロック周波数、およびDRからそのRAM60にデータを移動させるACCのマイクロコントローラの能力に基づいている。カスタムパラレルインターフェース66を使用するとき、ACC12がコピーできるよりも速くデータが送信される可能性があり、その場合、どれだけ速くバスが書き込まれるべきであるかを制限するフロー制御がある。いずれの場合でも、ACC12は、受信データが見落とされないように構成されるべきである。
ペイロード全体が送信され、吸収された後に、ACC122は、コマンドを処理し始める。エージェント20は、3)において、別のコマンドを発行する前にコマンドが完了するまで待ち、これは、比較的長時間かかり得る。各コマンドは、その種類のコマンドを実行するのに、最大に固定された最大数のサイクルを要し得る。アプライアンス18がこの最大数のサイクルを待つ場合、ACC12がコマンドを処理し終えることを確実にすることができる。ACC12が3)において処理しているときに、アプライアンス18/エージェント20/テスター16は、可能であれば、他のタスク、例えば、SoCの他の部分の試験を実施するために、ご都合主義的に待機期間を使用し得る。テスター16が待たず、以前のコマンドが終了する前に新しいコマンドを発行する場合、プロトコル違反と見なされ、新しいコマンドは無視される(これの例外は、cmd[REQRESP]、およびハードウェアによって専有的に処理される、いくつかの特別なコマンドである)。
アプライアンス18は、戻って応答を求める準備ができているときに、4)においてRequest−for−Responseへのコマンドcmd[REQRESP]を発行する。ハードウェア論理がこれを検出すると、SendRespNowフラグを設定する。テスター16が、最初にcmd[REQRESP]を送信することなくDRから読み出すと、「0」を得る。いったんACC12がコマンドを処理し終えて、結果が準備できると、ファームウェアは、SendRespNowフラグをチェックして、cmd[REQRESP]が発行されているかどうかを確認することができる。ACC12がコマンドを実行し終える前にcmd[REQRESP]が発行された場合、ACC12は、5a)において、それが終了し、完全な結果が準備できるまで、「0」を送信する。cmd[REQRESP]が発行され、ACC12がコマンドを実行し終えて、応答の準備ができた場合、ACC12は、5b)において、Start−of−Payloadマーカーを備える応答を送信し始めることができ、その後に応答状態、次いで、もしあれば応答ペイロードが続く。
送信される応答ペイロードがある場合、ACC12は、アプライアンス18がDRから読み出すのと同じくらい速く、(スクラッチRAM60の中の)応答バッファからDRにデータをコピーする。これは、応答ペイロード全体が送信されるまで続く。再度、実際のスループット限度は、クロック周波数、およびRAM60からそのDRにデータを移動させるACCのマイクロコントローラ54の能力に基づいている。カスタムパラレルインターフェース66を使用するとき、ACC12がコピーできるよりも速くデータが読み出されるされる可能性がある。その場合、どれだけ速くバスがデータを読み出すべきかに制限を課することができる。
テスター16は、6)においてStart−of−Payloadマーカーを見つけるまでDRを読み出し、次いで、応答全体を読み出し続けるべきである。いったんStart−of−Payloadがテスターによって送信され、読み出されると、応答ペイロード全体が読み出される前に、別のコマンドを発行するべきではなく、さもないと、システム10が、無期限にハングアップすることを含んで、予測不能な状態で挙動する場合がある。
ペイロード全体が送信された後にエージェント20が読み出し続ける場合、ACC12は、全ての「0」の送信を開始する。付加的なプログラミングが必要とされる場合、アプライアンス18は、これらのステップを繰り返すことができる。いずれのプログラミングも必要とされない場合、アプライアンスは、cmd[STOPACC]を用いてACC12を休止モードに移行することによって終了することができる。
REQRESPに関するいくつかの付加的なコメントが留意され得る。第1に、応答に対する明示的な要求の理由は、アプライアンス18とACC12とを同期化して保つことであるが、それはまた、ACC12が応答するのを待つ代わりに、テスター16が並行して他のタスクを実施することを可能にし得る。コマンドがACC12からのある種の応答を必要とする場合、アプライアンス18は、次のコマンドを発行する前にcmd[REQRESP]を発行し、さもなければ、応答は送信されず、破棄される。間に有効なコマンドを伴わずに、アプライアンス18が2つのcmd[REQRESP]を連続して発行する場合には、このシーケンスをプロトコル違反と見なすことができる。ACC12の実際の挙動は、それを第2のREQRESPが破棄されたように見せる。トランザクションループを閉じるために、あらゆるコマンドがcmd[REQRESP]に続くことが推奨されるが、アプライアンス18が状態または返信データに関与しなければ、プロトコルは、cmd[REQRESP]を省略することを可能にする。ACC12は常に、cmd[REQRESP]なしで伝送することなく、何らかの時点で要求されることを仮定して、完全な応答を準備するべきである。
いったんcmd[REQRESP]が発行され、Start−of−Payloadが送信されると、アプライアンス18は、応答全体を読み出すことを確認する必要がある。全ての応答が読み出される前に、別のコマンドを発行しなくてもよく、さもなければ、システム10が無期限にハングアップする場合がある。何らかの理由で、予期される待機時間が満了した後に、アプライアンス18がStart−of−Payloadを得ない場合は、何かに異常があり、未知の理由でACC12が何らかの未知の状態に陥っているという指示であり得る。それが起こると、そのようなエラーから回復しようとするときに試行すべき最も安全なことは、ACC12をリセットするようにSTARTACCコマンドを発行することによるものである。しかし、リセットは、全ての起こり得る(予測可能な)故障から回復する保証された方法ではない場合がある。
図62は、初期化および識別シーケンスを図示する。初期化シーケンスは、新たに製造されたACC12が、どのようにして試験状態80から初期化状態82を介して機能状態84にされるかを説明する。初期化シーケンスは、製造過程中のいつのときかに、図51に示されるように、アプライアンス(APPj)18とテスター16上のエージェント20とACC12との間で実行されるべきである。初期化シーケンスの終わりに、ACC12は、特定のSoCダイを識別するために使用される統計的に一意のIDを生成しており、FCT50を処理する準備ができている。
「サーバ」側で、アプライアンス18は、初期化イベントを記録し、初期化シーケンスの結果として得られた情報を、バックエンドインフラストラクチャ11の中のデータベースに中継するべきである。部品番号、ロット番号、ウエハID、時間、エージェントのID、場所、操作者ID等の情報は、参照としてACCのUIDを使用して、業者が各個別SoCダイの履歴を追跡することを可能にする貴重な情報である。
最初に、1組の前提条件が考慮されるべきである。新たに製造されたACCiは、電源を入れられ、テスター16またはデバイスプログラマ26を介してAPPjエージェント20に接続される。ACCiは、依然として試験状態80となる。ACC12が試験状態80ではない場合は、以前に初期化されていることを意味する。ACC12が初期化状態82である場合、図62に示された手順は、3)に飛ぶ。ACC12が機能状態84である場合、図62に示された手順は、6)に飛ぶ。ACC12がロック状態86である場合は、ACC12は、ロック状態86のままであり、節電モードになり、応答が要求されるとロック(LOCKED)状態に戻る。
あるDFTまたはデバッグ特徴が有効にされるか無効にされるかを制御するために、1組の特徴プロビジョニングビットが使用され得、そのようなビットは用途に特有となる。
別の前提条件として、APPjは、通信プロトコルのどのバージョンを使用するべきかを見出すために、ハードウェアバージョン番号およびファームウェアバージョン番号から成る、ACCiのバージョンID(VERIDi)を取得するべきである。これがまだ行われていない場合、VERIDを取得するために、cmd[VERID]がACCiに送信され得る。これは、APPjが、ACCiの異なる世代または進歩の間のわずかなプロトコル変動に対処することを可能にする。
APPjはまた、利用可能な全てのDFT試験に合格していることを確認することによって、ACCiが健全で機能的であるという確信を持ち得る。
最後に、前提条件は、ACCiには、スキャンおよびメモリBIST等の欠陥試験から動作に影響を及ぼす場合がある、いずれの残留アーチファクトがないことであり得る。DFT特徴は、これを可能にするように慎重に設計される必要がある。
ここで、図62に示された手順を説明する。最初に、ACCiは、電源を入れ、ハードリセットから起動しており、依然として試験状態80であることを検出する。ACC12が依然として試験状態80である限り、ファームウェアは、全てのDFT特徴が有効であることを確実にする。ACCiは、前)において、あらゆるDFT試験を実施し、そのライフサイクルの後期に、安全なデータを保護する能力に影響することなく、複数のハード再起動サイクルを受けることが可能であるべきである。
何らかの時点で、APPjは、1)において、cmd[EXITTEST]を発行し、基本的な1組の試験が成功して終了し、ACC1がいくつかのDFT特徴を無効にし始めるべきであることを信号伝達する。ACCiは、[EXITTEST]を受けると、2)において、a)0をFEATレジスタに書き込んでDFT特徴を無効にし、b)NVM62の中のライフサイクル状態を初期化状態82へと変更して、ソフトリセットを発行する。
起動時に、ACCiは、3)において、a)HWフラグを見ることによってソフトリセットにより起動していること、b)NVM62に記憶された状態を読み出すことによって、初期化状態82であること、ならびにc)a)およびb)の両方が真であるのはこれが最初であることを見出すべきである。次いで、ACC12は、このACC12が試験状態80を終了したことを示すために、NVM62にExit Testマーカーを書き込み、続いて、その通常の初期化状態82のタスクを実施する(以下の4)参照)。次にACCiが再起動すると、a)およびb)が真であるが、Exit Testがすでに設定されている場合には、初期化が失敗し、デバイスが現在は信頼できないことを意味する。その場合、ACCiは、即時にロック状態86に移行する。
初期化状態82である間、ACCiは、以降で論議されるECキー生成関数に従って、4)において静的ECCキー(dsi,Qsi)を生成しようとする。キー生成が失敗した場合、ACC12は、ロックアウト状態86に直接移行する。キー生成が成功した場合、ACC12は、(SUCCESS||UID)を有する成功応答ペイロードを作成する。次いで、ACCiは、次の再起動がACC12を機能状態84において始動させるように、NVM62の中のライフサイクル状態を更新する。次いで、ACC12は、付加的なコマンドを処理することを待ち、休止状態になるべきではない。
APPjが、この時点でcmd[REQRESP]を随意に発行する場合、応答は、(LOCKED)または(SUCCESS||UID)となる。APPjは、典型的には、それが初期化した全てのチップのUIDを収集し、5a)において、それらが有効な公開キーであり、ダイを追跡し、カタログに入れることを促進することに有用であると見なされる他の情報とともに、それらをバックエンドデータベースに転送する。5b)では、バックエンド11は、UIDを保存し、使用されたアプライアンス18のIDを保存し、デバイス生産カウントを増分し得る。
cmd[STARTACC]は、6)において典型的な初期化シーケンスで発行される次のコマンドである。代替として、ACC12は、この時点で複数回、電源を切って入れ直され得、挙動は同じであることが予期できる。ACCiは、リセットから脱し、その起動シーケンスを実行し、機能状態84になり得る。機能状態84においては、ACCiは常に、以降で論議されるECキー生成関数に従って、一過性のキー(dei,Qei)を自動的に生成し始めるべきである。キー生成が成功した場合、応答は、(SUCCESS||Qsi||Qei)となり、そうでなければ、応答は単に(FAILURE)または(LOCKED)となる。
その一方で、テスター16は、一過性のキーが生成されることを待ちながら、他のタスクを実施し始めるオプションを有する。テスター16は、一過性のキーを取り出す準備ができているときに、7)においてcmd[REQRESP]を発行し、ACCiからの応答を待つ。
ACCiは、応答の準備ができ、cmd[REQRESP]を受けると、8)において、応答ペイロードが続く、Start−of−PayloadマーカーをAPLjに返送する。
次いで、APPjは、9)において、応答から情報を抽出し、それに応じて処理することが想定される。返信状態がFAILである場合、またはアプライアンス18が受信されたデータを処理することができない場合、APPjは、ACCiをロックアウトするようにcmd[LOCKOUT]を発行するオプションを有する。次いで、初期化過程は、後動作を実施し得る。アプライアンス18/エージェント20/テスター16は、付加的なコマンドを発行するか、または切断してもよく、ACC12は、機能状態84においてそのような他のコマンドを処理し得る。
初期化プロトコルに関するいくつかの付加的な特徴が留意され得る。第1に、テスター時間が非常に高価であるため、初期化過程全体を非常に迅速に完了されるように簡素化することができる。アプライアンス18がACCのUIDを有するとすぐに、アプライアンス18は、ACC12にその電源を切るルーチンを実行させて、休止状態(低電力)モードにさせるために、cmd[STOPACC]を発行することができる。ACC12は、cmd[STOPACC]を受けると、そのスクラッチメモリから全ての機密データを明示的に上書きして、可能な限り秘密データを暴露することを防止するべきである。しかしながら、デバイスがホットプラグされなかった場合、ACC12は、SRAMの中の秘密をきれいに消去し、適正にシャットダウンできなくなることを理解することができる。
いったん初期化シーケンスが完了すると、ACC12は、後になって、おそらく、包装等の製品製造ラインのさらに先で、ボード組立中に、またはデバイスが完全に組み立てられ、最終顧客によって最終小売場所で起動された後でさえも、異なるエージェント20を介してアプライアンス18に再接続することができる。UIDは、この実施例では283ビット数である、Qsiのx座標と定義される。分野外の重複UIDを伴うチップを検出するために、チップのUIDは、都合が付き次第登録されるべきであることが留意され得る。
ここで図63を参照すると、キー合意を使用して安全な通信セッションを確立するためのプロトコルが図示されている。本実施例では、この時点まで、ここまで説明されているアプライアンス18とACC12との間の試験および初期化コマンドは、「暗号化されていない文章で」送信される。安全な通信を開始するための、2つの当事者は、キー合意プロトコルに関与する必要があり、そうするためにcmd[INITFCT]を使用することができる。
cmd[INITFCT]は、2つの部分に分けられ、第1の部分は、新しいキーセッションのための共有秘密を導出するためにACC12によって必要とされる全ての必要情報を有し、第2の部分は、処理される必要がある第1のFCT50を含む。図63のプロトコルについては、いくつかの前提条件が存在し得る。第1に、初期化されたACCiは、すでにその静的および一過性キー(dsi,Qsi)、(dei,Qei)を生成している。また、APPjは、Qsi,Qeiを受信し、正当性を立証しており、QsiからUIDiを抽出することができる。これらの最初の2つの前提条件が満たされていない場合、図62に示された初期化シーケンスが実行され得る。アプライアンス18は、その静的キーペア(dsj,Qsi)と、ルートCAによって署名される証明書CERT[APPj]とを有する。また、APPjは、ACCiと通信する必要があるという何らかの指示を有する。これは、出荷前にいくつかのデフォルト特徴を事前設定したい製造業者となり得るか、またはデバイス上の新しい特徴が有効にされることを要求する顧客となり得る。別の前提条件は、ACCiが、そのROM60の中のルートCAの公開キーQcaによって事前にプログラムされていることである。随意で、ACCiは、そのROM60の中の顧客ID(CID)によって事前にプログラムされる。ACCiは、最後に再起動された後に、別のcmd[INITFCT]を受信していない。もし受信した場合は、プロトコルエラーと見なされる。最後に、前提条件は、ACCiは新しいコマンドを処理する準備ができていることである。これは、ACCiが機能状態84にあり、休止状態モードではなく、全ての以前のタスクを完了しており、現在待機していることを意味する。
出力は、状態FAIL、または状態SUCCESSおよびACCiの一過性の公開キーQeiとなる。種々の副作用が発生し得ることが留意され得る。ACCiのメッセージカウンタ番号msgIDは、ゼロにリセットされ得、両方の当事者は、相互から独立して、共有セッションキーkijを生成した可能性がある。
図63に示された手順は、以下のように進む。アプライアンス18は、1)において、このセッションのための一過性のキー(dej,Qej)を生成する。次いで、アプライアンス18は、(Qej||CERTj||EM_len||EMnij)である要求データを用いて、2)においてcmd[INITFCT]を発行する。ACC12は、コマンドを受信し、3)において、それぞれ、証明書および公開キー、ECDSA_VERIFY(CERTJ,Qca)およびpublic_key_validation(Qej)の正当性を立証する。次いで、ACC12は、CERT[APPj]からQsjを抽出する。プロトコルが顧客ID(CID)の合致を必要とする場合、CERTの中のCIDフィールドは、ACC12に記憶されたCIDに対して合致する必要がある。
次いで、ACC12は、4a)において、ECMQVwKDF(dsi,dei,Qsj,Qej)を用いて共有セッションキーkijを計算する。3)および4a)が成功した場合、ACC12は、引き続き、4b)において、復号を処理し、残りのペイロードの中のFCT50を認証する。そうでなければ、ACC12は、ここで停止し、FAILURE応答を準備し得る。応答がFAILである場合、アプライアンス18は、シーケンスを再開するか、またはcmd[LOCKOUT]を発行することができる。アプライアンス18は、随意で、データベースにエラーを記録することができる。
いくつかの付加的な特徴が留意され得る。第1に、全てが成功した場合、このシーケンスの終わりに計算された共有セッションキーkijは、承認されたアプライアンス18を特定のACC12にリンクする対称キー暗号を使用して、暗号化トンネルの基礎を形成する。kijは2つの承認された当事者のみに知られているので、任意の他のACC12またはアプライアンス18も、2つの間の通信にこれ以上関与することはできない。このシーケンスは、ハードリセットまたはcmd[STARTACC]を使用することによって、再起動せずに繰り返され得る。何回ACC12を再起動することができるかに関して、限度が存在するべきではないが、ACC12が再起動するために、新しい一過性のキーが再生成される必要があり、これには、数100ミリ秒の範囲の顕著な時間量がかかり得る。ACC12が、キー交換プロトコルの任意のステップ中にエラーまたは失敗に遭遇した場合、上記で説明されるように、エラーハンドラサブルーチンを呼び出すべきである。
ステップ3では、ACC12は、ACC12がそのROM60の中に有するルートCAの公開キーのコピーを使用して、CERT[APPj]を検証する。証明書の妥当性確認ステップは、ルートCAが、このACC12にコマンドを発行するように、この特定のアプライアンス18を認証し、適格化していることをACC12に知らせる。これは、信用できないアプライアンス18がACC12に機密コマンドを発行することを防止するものである。特定の用途がCIDの使用を必要とする場合、証明書は、ACCのROM60の中のテーブルに記憶されたCIDと合致しなければならないCIDを含む。これは、特定の顧客に割り当てられたアプライアンス18が、別の顧客のために製造された部品に接続するために使用されることを防止することが意図されている。証明書の中のCIDがCIDテーブルの中に見つからない場合は、エラーとして扱われる。
図64は、ここにおいて説明される認証機密メッセージングプロトコルの実施例を図示する。キー合意の実行の成功後、ACC12およびアプライアンス18は、2つの間の安全なチャネルの基礎を確立し、FCT50の形態で認証された機密メッセージを共有することができる。以下の前提条件が必要とされ得る。第1に、APPjは、その独自の静的非公開キーdsjを有するべきであり、UIDiを所有するACCiが特徴制御チケットFCT50を受信するという、何らかの指示を取得している。第2に、ACCiは、APPjの静的公開キーQsjを有するべきであり、ACCiは、新しいコマンドを処理する準備が完了しているべきである。これは、ACCiが機能状態84にあり、休止状態モードではなく、その以前のタスクを完了していることを意味する。
APPjおよびACCiは、キー合意プロトコルの結果として生成された共有セッションキーkij、およびcmd[INITFCT]で「0」から始まり、各cmd[FCT]に対して2ずつ増分し(常に奇数)、応答に対して「1」を加えた対応するコマンドからのmsgIDに等しい(常に偶数)コマンドシリアルIDであるmsgIDといった、変数の自身のコピーを有し、2つのコピーは合致するべきである。
入力は、FCT50であり、出力は、状態FAILまたは状態SUCCESS、およびFCT50によって要求されたあらゆるデータである。1つの副作用は、FCT50の種類に応じて、SoC上の特徴が有効/無効になるか、または何らかのデータがNVM62からアクセスされることである。別の副作用は、APPjおよびACCiの両方が、コマンドシリアルIDカウントmsgIDのコピーを増分することであり得る。
図64に図示された手順は、以下のように要約され得る。
1.APPjがINITFCTまたはFCTペイロードを構築する。
2.APPjがcmd[INITFCT]またはcmd[FCT]を発行し、要求されたデータペイロードを送信する。
3.ACCiが、ECDSA署名検証を使用して、メッセージの真正性を検証する。
4.ACCiが、メッセージを復号してFCT50を取得する。
5.全てが正しく検証された場合、ACCiが、FCT50によって要求される動作を実施し、FCT50応答メッセージを作成する。
6.APPjが、何らかの時点でcmd[REQRESP]を発行する。
7.ACCiが、ステップ5を完了したとき、およびcmd[REQRESP]を受信した後に、作成された応答を送信する。
8.APPjが応答を受信し、次いで、応答を復号し、検証する。アプライアンス18がより多くのコマンドを送信することを必要とするか、または同じコマンドを再送信しようとする場合、コマンドシリアル番号が増分される限り、キー合意プロトコルを再実行することなく、その様にし得る(すなわち、別のcmd[INITIALFCT]が送信されるべきではない)。
次いで、APPjは、この処理の結果とともに、ログ記録をバックエンド11に折り返し報告することによって終了する。
種々のエラー条件が留意され得る。第1に、ACCiが、キー交換プロトコルの任意のステップ中にエラーまたは失敗に遭遇した場合、エラーハンドラサブルーチンを呼び出すべきである(図59参照)。ステップ8については、APPjがFAIL応答を受信した場合、APPjは、シーケンスを再試行するか、またはcmd[LOCKOUT]を発行することができる。アプライアンス18は、随意で、データベースにエラーを記録することができる。
このプロトコルに関するいくつかの付加的な特徴も留意され得る。第1に、コマンドシリアルID、msgIDは、「0」で始まり、このセッションにおけるcmd[FCT]ごとに2ずつ増分する。それは、キー合意プロトコルの結果として、新しいセッションの初めに「0」にリセットして戻る。しかしながら、cmd[FCT]への応答については、msgIDは、「1」を加えた対応するコマンドにおけるmsgIDに等しい。このIDの使用は、同一のコマンドおよび応答が再生型の攻撃において再利用されることを防止する。例えば、敵対者が、いくつかの特徴を有効にするために支払いをし、次いで、FCT50メッセージを捕捉し、特徴を無効にして返金を得ることを即時に求め、結局、身を翻して逃げて有効FCT50を再生する結果になることを想像されたい。代替として、敵対者が、最初に、アプライアンス18に、FAIL応答を生成するように無効なコマンドを強制的に発行させ、次いで、有効化FCT50を発行されるように求める。コマンドが適正に処理されたかどうかACC12が尋ねられると、敵対者は、成功応答を記録されたFAIL応答と置換し、それにより、うまく有効化を完了させていないふりをすることができる。
UIDiは、コマンドおよび応答を1つのACC12に結合し、敵対者が別のACC12上でこのメッセージを再生できることを防止する。キーペアdsjとQsjとは、セッションキーkijを作成した共有キー合意セッションに関与した特定のアプライアンス18を一意的に識別する。それらが署名過程で使用されると、メッセージの発信者を積極的に識別するためにそれを使用することができる。さらに、キー合意プロトコル中にルートCAによって証明されるCERT[APPj]の使用を介して、ACC12は、このアプライアンス18がFCT50を発行することを許可されていることを保証している。
2つの起こり得る用途のシナリオがあることが留意され得る。i)デバイスがすでに小売空間に到着している場合、FCT50メッセージは、使用毎に、ACC12毎にバックエンド11によって作成される。ii)FCT50は、バックエンド11がアプライアンス18をバッチ構成するものとなり得、それは次いで、それが遭遇するACC組み込みダイのバッチ全体に該当する。どのようにFCT50が使用されるかに応じて、ステップ1)を実施するときに行うことができる何らかのサーバ側の最適化があり得る。
(根本的な暗号アルゴリズムの考察)
ここで、本明細書で使用される根本的な暗号アルゴリズムの考察を提供する。上記のように、EC演算が有利に利用される。ECCは、任意の公開キー暗号スキームのビット毎の最大セキュリティを提供することが、広く行き渡っている。加えて、それは、極めて効率的にハードウェアに実装することができ、シリコン面積に関して非常に小型のコアにつながる。システム10によって利用されるECCパラメータは、この実施例では、Standards for Efficient Cryptography Group(SEGC)によって推奨される、sect283kl F2 283 Koblitz曲線に従って設定される。この曲線は、128ビット強度と同等である全体的な強度を促進するように選択される。このレベルのセキュリティが特定の用途において必要とされない場合、フィールドパラメータは、より小さい数字を使用するように低減され得る。
ACC12において使用されるように選択されるブロック暗号関数は、この実施例では、AES対称キーブロック暗号である。AES仕様について[FIPS 197]、ならびにCTRおよびCCMブロック暗号モードの定義について[SP800−38A]および[SP800−38C]を参照することによって、さらなる詳細を見出すことができる。AESのパラメータは、ACC12においてどこで使用されようと、128ビットキー、入力としての128ビットのデータのブロック、および出力としての128ビットのビットストリームのブロックとなる。入力データストリームが128ビットブロックに収まらない場合、128ビットを一度に中断することができる。
ACC12のコンテキストにおいて、ブロック暗号は、a)RNGリング発振器から取得されるランダムビットを調節して、非公開キーとして使用されるランダム列を生成する、b)ECMQVにおいて共有キーを生成するときに、キー導出関数(KDF)でハッシュ関数を使用する、c)FCT50署名の真正性を検証するときにハッシュ関数を使用する、d)カウンターモードでFCT50を復号する、およびe)FCT50への応答のメッセージ認証を暗号化し、提供するといった、いくつかの異なる方法で使用され得る。
AES CCM*モードは、FCT50コマンドへの応答に対する認証および暗号化を提供するために使用され得る。[SP800−38C]で説明されるようなCCMモードは、本質的に、[SP800−38C]の付属書Aにおいて説明されるような、何らかの付加的な書式設定および変換を伴ってともに組み合わせられるカウンタ(CTR)およびCBC−MACモードといった、[SP800−38A]において定義される2つのAESモードである。この実施形態でのACC12は、Zigbee(登録商標)で説明されるように、CCMモードの他の現実の実装に準拠する付加的な書式設定および変換を伴うCCMモード
であるCCM*を実装する。
この実施形態でのAES CCM*への入力は、以下の通りである。
a)128ビットセッションキー、k。
b)同じキーを使用する各メッセージに特有の8バイトノンス。ノンスは、その後の4つのゼロと連結される最初の4バイトにおいて、メッセージカウンタmsgIDによって初期化される。
c)入力ペイロードデータx=(x0,x1…,xn−1)。
出力は、暗号化されたMACであるCnがその後に続く、暗号テキストC0||C1||...||Cn−1である。暗号化されたMACまたは[SP800−38C]において参照されるようなタグは、128ビットの長さに固定される。CCM*仕様は、暗号化をオフにするオプションを可能にするが、ACC12は、常に暗号化するように構成されるべきである。仕様はまた、この実施形態では使用されないように選択される、随意的な「関連データ」入力も可能にする。そのようなものとして、関連データ列は常に、「0」の長さを有する。
ここで図65を参照すると、AES−128ブロック暗号に基づいて、この実施例ではACC12に配備されるハッシュスキームであるMatyas−Meyer−Oseas修正検出コード(MMO_MDC)関数が示されている。入力は、入力ビットストリームxを備え、出力は、ハッシュダイジェストである。「0」という一定値が、初期ベクトルとして使用される(hash0)。入力ビットストリームの各ブロック「i」について、暗号キーとしての以前のブロックのハッシュ値とともに、ビットストリームテキストXiが、AESへの入力として送信される。AESブロックの出力は、ハッシュ結果hashiを形成するように、入力xとともにXORを受ける。これは、メッセージ全体が処理されるまで繰り返される。メッセージ全体を送信した後、最終ハッシュ値が、ダイジェストとして出力される。
上記で論議されるように、この実施形態でのACC12は、発振器サンプル間に位相ジッターがあるという事実に依存するエントロピーのオンチップリング発振器源を有する。ACCファームウェアは、リング発振器ハードウェアから発振器出力データ値を収集し、調節のためにAESブロック暗号を使用する。ACC RNGハードウェア58は、RNGハードウェア58から読み出される各ビットに対する少なくとも1/2ビットのエントロピーを提供する。この実施例でのACC12は、以下のように、NIST SP800−90に従う。
1)Update( )関数が、10.2.1.2(NIST SP800−90)に従って定義される。
2)ACC HW RNG 58( 3)において使用されるentropy_input)から、少なくとも128ビットのエントロピーを含む、256ビットを取得する。
3)CTR_DRBGインスタンス化のための10.2.1.3.1(NIST SP800−90)(「The Process Steps for Instantiation When Full Entropy is Available for the Entropy Input,and a Derivation Function is Not Used」)に従って、その場合、エントロピー入力は、2)からのランダムビットストリームであり、personalization_stringは空値であり、Update( )関数は1)で特定される。このステップ中のUpdate( )の内側の以下の値、Block_Encrypt(Key=0,IV=1)およびBlock_Encrypt(Key=0,IV=2)を、スピードアップのために事前計算できることが留意されたい。
4)「完全」エントロピーが、3)において入力として使用されないため、1バイトのランダムデータ( 5)参照)を生成し、それを破棄することによって、インスタンス化を終了する。
5)10.2.1.5.1(NIST SP800−90)(「The Process Steps for Generating Pseudorandom Bits
When a Derivation Function is Not Used for the DRBG Implementation」)の通りに、CTRD_RBG_Generate_algorithm( )を定義する。
手順は、以下のように要約され得る。ファームウェアは、RNG58がデータを捕捉し始めることを可能にする。RNGハードウェア58は、ACCのシステムクロックに関して自己較正を実施し、サンプリングとリング発振器出力との間で、いくつのシステムクロックサイクルが必要とされるかを決定する。ハードウェアは、サンプル期間毎に1エントロピービットを捕捉し、Readyフラグをアサートすることによって、8エントロピービットを有するときにファームウェアに通知する。ファームウェアは、RNGReadyフラグについてRNG58にポーリングし、8ビットを読み出す。ファームウェアは、ACCのRNG58から256ビットを取得するまで、これを繰り返す。その一方で、ファームウェアは、RngErrorフラグをチェックすることによって、RNGハードウェア58が健全であることを継続的に検証する。次いで、10.2.1.5.1(NIST
SP800−90)の通りのTR_DRBG_Generate_algorithm( )が、上記で記載されるパラメータで実行される。
楕円曲線キー生成は、どのようにキーペアが乱数ストリームから作成されるかを示し得る。必須条件は、以前に合意したEC曲線パラメータが選択されていることである。入力は、ランダムビットストリームであり、出力は、SUCCESSおよびキーペア(d,Q)、またはFAILである。1)上記で説明される乱数発生を実施することによって283ビットのビットストリームを構築し、非公開キーdを形成する。2)d==0であれば、ステップ1)を繰り返す。3)ECパラメータの生成点とのEC点乗算を実施して、公開キーQ=d×Gを作成する。4)QがEC上の有効な点でなければ、ステップ1)を繰り返す。5)このキーペアが静的キーとして使用される場合、NVM62に(dsi,Qsi)を記憶する。6)過程の任意のステップ中にエラーが発生した場合、FAILを返信し、そうでなければ、成功およびキーペア(d,Q)を返信する。
ECMQV―キー合意の目標は、2つの当事者が、バルクデータ暗号化のための対称キーとして使用することができる共有秘密を独立して導出することである。これは、各当事者が、1つの静的キーおよび1つの一過性のキーといった2組のキーを使用することを要求し、各キーペアは、秘密非公開キーと、公開キーとを備える。本実施形態では、2パスECMQVプロトコルの変化例が利用され、明示的なキー確認ステップを省略する。メッセージを適正に復号できないときは、キーを暗黙的に確認できないことが認識されており、すなわち、FCT50メッセージの検証がうまくいかず失敗し始めたときに、キーが合致しないかどうかが分かる。
キー導出関数(KDF)は、共有秘密ビット列からキーを導出するために使用される。この実施例との関連で、共有キーは、KDFとしてMMOハッシュ技法を使用し得る。入力は、共有秘密値xとしての283ビット列であり、出力は、共有キーkとしての128ビット列である。k=MMO_MDC(x)である。
関連値関数(AVF)は、ANSI X9.63 ECMQV AVFに従って、楕円曲線点のx座標を切り捨てるために使用される。x座標の上位半分が切り捨てられ、次いで、全て0を取得することを回避するために、最上位半分の最低ビットが強制的に「1」にされる。
公開キーの妥当性確認ステップは、公開キーが生成され、適正に受信されたことを検証するものである。キーの妥当性確認ステップは、それが有効なキーのいくつかの基本特性を満たすかどうかを確かめる。入力は、ECドメインパラメータ、および公開キー候補Qである。出力は、ACCEPTまたはREJECTである。1)Q!=0であることを検証する。2)xQおよびyQが基礎フィールドFの要素であることを検証する。3)QがECドメインパラメータによって定義されるEC方程式を満たすことを検証する。4)4*Q!=0であることを検証する。5)上記の全てを満たすならばACCEPT、さもないとREJECTを返信する。
ECMQV共有キー生成は、2つの当事者が共有秘密キーを導出するための方法である。各当事者が共有秘密キーを導出した後に、キー確認を提供する随意の付加的な交換がある。以下は、どのようにして当事者(1)が当事者(2)との共有キーを計算するかを説明する。入力は、ECドメインパラメータ、当事者(1)によって所有される2つの確証されたEC非公開キー(ds1)および(de1)、ならびに当事者(2)によって所有される2つの確証されたEC公開キーQs2およびQe2である。出力は、セッション非公開キーk1,2、および状態SUCCESS|FAILである。手順は、以下の通りである。1)整数s=de1+(avf(Qe1)×ds1)(mod n)を計算する。2)EC点Z=h×s×(Qe2+(avf(Qe2)×Qs2))を計算する。3)Z=0であるかどうかをチェックし、FAILを出力して停止する。4)xzをZのx座標にし、(k1,2)=kdf(xz)を計算する。キー生成の後には、両方の当事者が同じkijに到達したことを確認するように、明示的なキー確認が続くことがあるが、性能の懸念により、省略され得る。キーが同じでなかった場合、メッセージを適正に復号できないという事実に、暗黙的に依存することもできる。
楕円曲線デジタル署名アルゴリズム(ECDSA)は、データ完全性、データ認証をチェックする、効率的な方法であり、否認防止を提供する。ACC12は、利用されるハッシュ機構が前述のMMO_MDCである、ECDSAアルゴリズムを使用し得る。
上記で論議されるように、ECDSAを使用して、ルートCA証明書を署名することができ、アプライアンス18は、ECDSAを使用して、FCTに署名することができ、そのようなものとして、ECDSAの概観を提供する。入力は、ECドメインパラメータと、非公開キーdと、メッセージMとを備える。出力は、デジタル署名(r,s)である。1)[1,n−1]において乱数kを選択する。2)一過性のキーペアQ=k×Gを生成する。3)Qのx座標X1を取り、それを整数x1’=int(x1)に変換する。4)r=x1’mod nを計算する。5)e=MMO_MDC(M)を計算する。6)s=(k−1×(e+d×r))mod nを計算する。7)s==0であれば、次いで、ステップ1に進む。8)(r,s)を返信する。
ACC12がアプライアンス18から受信する各メッセージについて、署名を検証して、メッセージが、メッセージを送信していると考えるアプライアンス18から来ること、およびそれが送信中に改変されていないことを確認する必要がある。これが、署名検証ステップの目的である。入力は、ECドメインパラメータと、公開キーQと、メッセージMと、署名(r,s)とを備える。出力は、ACCEPTまたはREJECTである。ECDSAを使用する署名検証は、以下のように進んでもよい。1)rおよびsが間隔[1,n−1]の中の整数であることを検証する。いずれか一方が基準に不合格であれば、REJECTを返信する。2)e=MMO_MDC(M)を計算する。3)w=s mod nを計算する。4)u1=(e×w)mod nを計算する。5)u2=(r×w)mod nを計算する。6)(x1,y1)=(u1×G)+(u2×Q)を計算する。7)(X==0)であれば、次いで、REJECTを返信する。8)x座標x1を取り、それを整数x1’=int(x1)に変換する。9)(r==x1’mod n)であればACCEPTを返信し、さもないとREJECTを返信する。
(動作のシーケンス例)
ここで図66aから66fを参照すると、ACC12においてFCT50を準備し、送達し、実装する際のシステム10の使用を図示する、動作のシーケンス例が提供されている。実施例は、ACC12を使用して、制御された安全な特徴起動を許可することによって、仮想在庫を利用する方法を説明する。
最初に図66aを参照すると、元の製造業者を表し得る、バックエンドインフラストラクチャ11が、最初に製品を定義し、FCT50を定義し、そのようなFCT50を製品に割り当てることが分かる(例えば、図10Aおよびコントローラ22の使用を再び参照)。上記で論議されるように、システム10は、複数の場所で複数のアプライアンス18を備え得る。次いで、バックエンド11は、製品をアプライアンス18に割り当て、合意または規定された数のその製品を生産するためのクレジット、ならびに製品ID、およびアプライアンスjへのFCT50を提供する。この時のバックエンド11は、イベントを記録に取って、どのアプライアンス18がどの製品と関連づけられるか、いくつのクレジットが提供されたか、ならびにその製品に対するFCT50の数および性質を記録し得る。アプライアンス18は、受信時に、製品ID、FCT50を記憶し、それが受信したクレジットの数の記録を保持する。
次いで、エージェント20は、準備または通信されている製品と関連付けられた製品IDを決定し、ACC12を初期化状態82に移行するようにコマンドcmd[EXITTEST]を送信する。ACC12は、移行時に、その静的非公開キーdsiおよび静的公開キーQsiを生成し、機能状態84に移行する。ここで、INITFCTまたはFCTコマンドによって定義される完全特徴プロビジョニング動作を表す、アプライアンス18、エージェント20、およびACC12の間の一連のトランザクションを含む、第1のループである、ループ1が始まる。この実施例でのループ1は、FCT50を処理するための暗号化されたトンネル29を開始する単一のINITFCTコマンドに基づく外側ループである。ループ1は、各ACC12について(例えば、生産ラインで)、またはACC12とアプライアンス18との間のECMQVハンドシェイクで共有秘密を導出することによって安全な29が確立される必要がある時はいつでも繰り返される。共有秘密の導出は、INITFCTコマンドを必要とする。ループ1は、STARTACCコマンドをACC12に送信するエージェント20から始まり、ACC12が機能状態84に移行すると(ここで図66bに移動する)、ACC12は、一過性の非公開キーdeiおよび一過性の公開キーQeiを生成することができる。
エージェント20は、ACCの公開キーQeiおよびQsiを取得するように、コマンドcmd[REQRESP]をACC12に送信し、ACC12は、エージェント20を介してそのようなキーをアプライアンス18に提供することによって応答する。エージェント20は、イベントを記録に取り、また、ACC12と関連付けられた製品IDおよびその公開キーをアプライアンス18に提供する。アプライアンス18は、このイベントを記録に取り、その独自の一過性のキーペアdej、Qejを生成し、共有キーkijを生成し、FCT1と関連付けられた特徴が、その製品で使用されることを目的とすることを確実にするために製品ID別にFCT1を検索する。次いで、アプライアンス18は、VER、CID、Qsj、およびSIGcertjの組み合わせを使用して、この場合、そのような構成要素を連結させることによって、CERTjを生成する。次いで、アプライアンス18のUID、msgID、何らかのパッディング、FCT1、および静的非公開キーが組み合わせられ(例えば、連結させられ)、署名SIGnijを生成するように、ECDSA_SIGN関数を使用して署名される。
FCT1、共有キーkij、ノンスn、およびSIGnijを使用して、(Enij、MACnij)が、図66bに示されるようなAES_CCM*_ENC関数を使用して生成される。次いで、FCT50が、1つのクレジットの消費を示すように測定され、次いで、一過性の公開キーQej、アプライアンスの証明書CERTj、暗号化されたメッセージ/MACペア(EMnij、MACnij)、およびEM_lenが、エージェント20を介してACC12に送信される(ここで図66cに移動する)。エージェント20は、このイベントを記録に取り、また、特徴起動手順を開始するように、コマンドcmd[INITFCT]をACC12に送信する。
ACC12は、CERT[CA]を使用してCERTjを検証することによって始まり、したがって、それが適正なアプライアンス18と通信していることを検証する。いったんCERTjが検証されると、次いで、ACC12が共有キーkijを生成する。次いで、ペア(EMnij、MACnij)および共有キーkijを使用する、AES_CCM*_DEC関数を使用して、FCT1、SIGnij、およびノンスnが回収される。次いで、CERTjから取得されたQsjを使用して、署名SIGnijが検証され、ノンスnが検証される。次いで、FCT1が実行され得る。次いで、FCTRSPni、ノンスn、および共有キーkijを入力として取る、AES_CCM*_ENC関数を使用して、暗号化された応答ペア(ERnij、MACnij)が生成される。次いで、何らかの時点で、エージェント20は、コマンドcmd[REQRESP]をACC12に送信し、そこからACC12は、ペア(ERnij、MACnij)を提供することによって応答する。エージェント20は、イベントを記録に取り、(ERnij、MACnij)をアプライアンス18に転送する(ここで図66dに移動する)。
次いで、アプライアンス18は、FCTRSPniメッセージおよびノンスnを取得するように、AES_CCM*_DEC関数への入力として共有キーkijを使用して、(ERnij、MACnij)を復号する。次いで、アプライアンスは、nを検証し、イベントを記録に取る。次に、随意的な第2のループである、ループ2が、必要に応じて、付加的なFCT50であるFCTN=2〜Mに対して実行され得る。INITFCTコマンドがすでに、すなわち外側ループであるループ1で作動しているため、一過性のキーおよび共有キーがすでにACC12およびアプライアンス18に存在し、よって、FCT50コマンドまたは複数のFCT50コマンドを用いて、さらなるプロビジョニングを行うことができる。いったん全ての50コマンドが実行されると、ループ2は終了し、次いで、ループ1は、新しいACC12に対して繰り返すことができる。それぞれの付加的なFCT50について、そのFCT50、例えば、FCTNが製品ID別に検索され、次いで、アプライアンス18は、SIGnijの生成へと直接進むことができ、上記で説明される過程が繰り返され、すでに交換された種々の構成要素(例えば、Qej、CERTj)が再び送信される必要はないことが分かる。ループ2、次いで、ループ1は、図66eで終了する。ここで図66fを参照すると、次いで、エージェント20がイベントの記録を取り、コマンドcmd[STOPACC]を発行し、その時にACC12が一過性のキーdei、Qeiを破壊する。次いで、エージェント20は、その蓄積されたログをアプライアンス18に送信する。次いで、バックエンド11は、アプライアンス18からログを要求することによって、エージェント20およびアプライアンス18のログを要求し得る。次いで、アプライアンス18は、エージェントログおよびアプライアンスログをバックエンド11に送信し、バックエンド11は、このイベントの最終ログを作ることができる。
(利点の要約)
したがって、ACC12は、シリコンダイ上のハードウェアベースの信用点を提供し、上記で説明されるシステム10を使用して、信頼できる監査可能な様式で、製造過程の全体を通して、ならびに製品寿命全体、製造から小売販路まで、「寿命の終了」に向かった消費者の消費まで、種々のタスクを実施するために使用できることが分かる。また、ACC12は、NVM62へのアクセスを維持し、および無許可エージェントによってアクセスされることからNVM62のある領域を保護すること、ACC12を一意的に識別するために使用されるUIDの内蔵型生成、信用できるサーバとの安全な通信チャネルを開くために使用されるキーの内蔵型生成、特徴の有効化および無効化が、信用できるソースによって信用できる機器を使用して行われることを確実にすること、デバイスが改ざんされていないことを確認するように、デバイス自己試験および健全性チェックを開始または無効化する能力、および過剰に多くの無効コマンドが試行された時はいつでも、デバイスをロックアウトすることといった、能力を提供するように設計できることも分かる。
加えて、能力を自己生成されたUIDのみに限定する代わりに、アプライアンス18にUIDを注入させること、およびコード署名を通してファームウェアアップグレードを安全に起動および認証することといった、特徴を実装するようにACC12を拡張できることが留意され得る。
論議されるように、ACC12は、典型的には、SoCダイに組み込まれて統合され、それは次いで、チップ40に盛り込まれ、チップは、プリント基板(PCB)44上に載置され、最終的に電子デバイス14または「製品」に組み立てられる。その中にACC12を有する全チップは、ウエハ試験に合格するとすぐに、バックエンドデータベースに登録し、記録を取ることができ、それは次に、ウエハ試験を受けた、製造された全チップを追跡することができる。システム10のセキュリティ特徴は、信用されるアプライアンス18とACC12との間のデータリンクに依存しないが、むしろ、セキュリティが暗号によって通信プロトコルに組み込まれるため、ACC12は、任意の電子機器製造試験環境で稼働するように設計され得る。
さらに、最終顧客が、自分の特定のデバイスの特徴セットを再プログラムしたい場合、機器業者が適合すると見なすデバイスプログラマ26なら何でも使用して、アプライアンス18に接続することを可能にする、システム10の融通性があり、アプライアンス18は、独力で安全なチャネルを開くことができる。結果として、システム10は、ウエハ製造からODM、OEM、最終ユーザの間のどこかで、完全に安全かつ監査可能な方式で、プロビジョニングが生じることを可能にする能力を提供する。
工場を持たないチップ製造業者にとって、このプロビジョニング融通性は、工場を持たないチップ業者がベースチップを生産し、次いで、特定の製品構築に対して有効にされた特定の特徴を必要とするため、それらを販売業者/ODM/OEMにおいて準備させることができることを意味する。これは、製品ラインごとの1年あたりのマスクターンの数を大いに低減し、有意な費用を節約する。これは、SKUを低減し、供給チェーン管理を単純化する。これは、OEMによるグレーマーケット仕入れ過剰を排除することができる。チップは、システム10によってプログラムされない限り稼働しないように作製することができるため、これは、半導体製造工場による不正過剰生産を排除することができる。加えて、本明細書で説明される解決策は、エンドユーザから工場を持たないチップ業者への直接のアフターマーケット収益を可能にし、これは、従来のプログラミング解決策を使用すると、不可能ではないにしても困難なものである。システム10では、最終顧客がチップ上に含有された特徴(例えば、ビデオカードからの強化グラフィック能力)を有効にすることを希望する場合、顧客はウェブ上でその特徴を発注することができ、チップ業者は遠隔でそれを有効にするコマンドを発行することができる。
デバイス業者にとって、単純化したSKUおよびより効率的な供給チェーン管理といった、有益性は同様となり得る。土壇場の変更を順番に促進するために、ジャストインタイムプロビジョニングが可能である。現在の生産の必要に応じて、構成要素を準備することができるため、未加工構成要素の在庫がシステム10で単純化される。ハッカーが無許可でデバイスを再プログラムする方法を見つけることができないため、収益も保護することができる。
(セキュリティモデル)
システム10等のセキュリティシステムの目的は、敵対者がデバイス14を改ざんすることを防止することである。脅威が深刻に扱われるものである場合は、ACC12がその主要な機能を果たすことを危うくすることになる。この目的を達成するために、攻撃の費用を考慮することが道理にかなう。費用方程式には、1)1つの修正されたチップを有するために、我々の設計を精査し、研究し、分解して模倣する初期努力と、2)a)初期努力の結果が公表され、公になった場合、およびb)容易に達成可能な攻撃を実施するために必要な全ての機器にアクセスできる場合に、各逐次チップへの攻撃を繰り返す増分努力といった、2つの部分がある。
攻撃を成立させる増分費用がチップの小売原価以上である場合、または攻撃が特定の特徴に限定され、次いで、その特徴の小売原価に限定される場合は、攻撃はあまりに困難で、効果がないと見なされる。したがって、$[搾取を繰り返す費用]>$[デバイスの全ての特徴の価値]である場合、攻撃をあまりに困難であると考えることができる。この観点から、FIBまたは電子ビームを伴う技法を使用して、各チップを個別に修正することを必要とする破壊は、費用効果的ではないので懸案事項ではない。多くの場合において、製造業者の収益の流れに有意に影響を及ぼさないので、時折の単一の破壊は容認可能であることが理解できる。最も深刻な脅威は、多くの人々がほとんど努力せずにステップを繰り返すことを可能にする、ハッキングが公表されることを可能にする、システム全体の破壊である。しかしながら、敵対者が時間および努力を費やして、どうにかして第1のデバイス14の打破に成功した場合、最初の試行で獲得した知識を利用し、費用効果的に連続デバイスに繰り返すことができなければ、大した懸案事項ではない。
(基本仮定)
a)ACC12は、閉鎖システムであり、全ての機密動作およびデータは、非公開であり、かつダイ上の他の論理からアクセス不可能である。
b)システム10の残りの部分が安全であり、改ざんを受けないので、ハッシュの衝突の発見を促進するためにそれを使用することはできない。
c)ACC12が組み込まれるシステムは、提案された/必要なセキュリティ対策を迂回しないように、適正な予防措置を講じている。
d)電子ビームまたはレーザおよび他の同様の技法を使用して、静的メモリ要素を読み出す、または書き込む能力が可能であるが、困難かつ高価となる。
e)ACC12プログラミング外で一過性のメモリ要素を読み出す、または書き込む能力は、我々のセキュリティモデルの範囲外である。
敵対者が物理的にシステム10を破壊するために試行しようとする場合がある、技法のリストが識別されている。敵対者は、破壊を試行するために、相互と協同して、チップ間精査(オシロスコープ、ロジックアナライザ、ウエハ/ダイテスター)、基板レベルJTAGデバッガ、ACC ROM60を修正すること(コンテンツ改ざん/マスクレベルでの差し替え)、デバイス除去および置換(ACC12が有するチップを、ACC12が持たなかったデバイスと差し替える、1つのチップを別のチップと取り換える、複数のチップを並列に接続する)、オフラインNVM62修正、ACC12と通信するために偽造アプライアンス18を使用すること、およびACC12が作動している間に電力およびクロック信号にグリッチを注入すること等の、複数の方法を利用する場合がある。そのような脅威が、システム10を実装する時に考慮されるべきである。
加えて、敵対者がシステムのプロトコルを破壊するために使用する場合がある、技法の別個のリストも識別されている。敵対者は、プロトコルを攻撃するために、サイドチャネル観察、メッセージ偽造、メッセージ再生、メッセージインターリービング、受動的攻撃、同一性のなりすまし、キーののぞき見、およびタイミング攻撃といった、物理的な脅威のうちの1つ以上を使用する必要がある。物理的攻撃と同様に、そのような脅威は、システム10を実装する時に考慮されるべきである。
したがって、ACC12は、CA公開キーの安全な改ざんのない記憶を提供するべきであり、ACC12は、ACCの静的キーペアの安全な改ざんのない記憶を提供するべきであり、ACC12はまた、特定のデバイス14に対するFCT50を伴わずにデフォルトの1組の特徴を有効にすることが可能であるべきであり、ACC12とアプライアンス18との間に機密かつ認証されたチャネルを確立する方法が存在するべきであり、アプライアンス18からACC12へのメッセージ完全性を検証する能力で、認証されたコマンドを発行する方法が存在するべきであり、ACC12とアプライアンス18との間の通信プロトコルは、コマンドおよび確認の再生を防止することができるように設計されるべきであり、1つのACC12を破壊するために取られるステップは、費用効率的に複製することができず、また大量の部品の体系的破壊にもつながらず、デバイスは、統計的に一意的な非公開キーおよび公開識別子を有するべきである。しかしながら、非常に少数のチップ(推定<500部品)が複製UIDを伴う結果となる場合、依然として容認可能と見なされるべきである。これらの能力は、本明細書において開示される実施形態を実施することによって提供することができる。
一般に、コントローラに通信可能に接続可能なアプライアンスを提供することであって、該アプライアンスは、該コントローラから電子資産を獲得するように構成されている、ことと、1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該アプライアンスを該1つ以上のエージェントに通信可能に接続することにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にすることと、該コントローラからシリアライゼーションスキーマを獲得することであって、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのように生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられている、ことと、該シリアライゼーションスキーマを用いて、該範囲内のシリアル番号を生成し、該シリアル番号と該特定のタイプのデバイスとを関連付けることと、要求エージェントから該特定のデバイスに対する1つ以上のシリアル番号の要求を受信すると、該1つ以上のシリアル番号を該要求エージェントに提供することとを含む、方法が提供される。
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、コントローラに通信可能に接続可能なアプライアンスを提供することであって、該アプライアンスは、該コントローラから電子資産を獲得するように構成されている、ことと、1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該アプライアンスを該1つ以上のエージェントに通信可能に接続することにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にすることと、該コントローラからシリアライゼーションスキーマを獲得することであって、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのようにして生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられている、ことと、該シリアライゼーションスキーマを用いて、該範囲内の該シリアル番号を生成し、該シリアル番号と該特定のタイプのデバイスとを関連付けることと、要求エージェントから該特定のタイプのデバイスに対する1つ以上のシリアル番号の要求を受信すると、該1つ以上のシリアル番号を該要求エージェントに提供することとをコンピューティングデバイスに行わせる、コンピュータ可読媒体もまた提供される。
プロセッサおよびメモリを含み、かつ、コントローラおよび1つ以上のエージェントと通信可能に接続可能なアプライアンスデバイスであって、該プロセッサは、該コントローラに通信可能に接続するように構成されており、該アプライアンスは、該コントローラから電子資産を獲得するように構成されており、該プロセッサは、該1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該1つ以上のエージェントに通信可能に接続することにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にするように構成されており、該プロセッサは、該コントローラからシリアライゼーションスキーマを獲得するように構成されており、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのようにして生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられており、該プロセッサは、該シリアライゼーションスキーマを用いて、該範囲内の該シリアル番号を生成し、該シリアル番号と該特定のタイプのデバイスとを関連付けるように構成されており、該プロセッサは、要求エージェントから該特定のタイプのデバイスに対する1つ以上のシリアル番号の要求を受信すると、該1つ以上のシリアル番号を該要求エージェントに提供するように構成されている、アプライアンスデバイスもまた提供される。
コントローラをアプライアンスに通信可能に接続することであって、該コントローラは、電子資産を該アプライアンスに提供するように構成されており、該アプライアンスに通信可能に接続することは、1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該電子資産が該アプライアンスによって該1つ以上のエージェントに提供されることを可能にすることにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にする、ことと、シリアライゼーションスキーマを生成することであって、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのようにして生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられている、ことと、該シリアライゼーションスキーマを該アプライアンスに提供することにより、該アプライアンスが該範囲内の該シリアル番号を生成し、該シリアル番号と該特定のタイプのデバイスとを関連付けることを可能にすることであって、その結果、要求エージェントから該特定のタイプのデバイスに対する1つ以上のシリアル番号の要求を受信すると、該アプライアンスは、該1つ以上のシリアル番号を該要求エージェントに提供することが可能である、こととを含む、方法もまた提供される。
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、コントローラをアプライアンスに通信可能に接続することであって、該コントローラは、該アプライアンスに電子資産を提供するように構成されており、該アプライアンスに通信可能に接続することは、1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該電子資産が該アプライアンスによって該1つ以上のエージェントに提供されることを可能にすることにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にする、ことと、シリアライゼーションスキーマを生成することであって、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのようにして生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられている、ことと、該シリアライゼーションスキーマを該アプライアンスに提供することにより、該アプライアンスが該範囲内の該シリアル番号を生成し、該シリアル番号と該特定のタイプのデバイスとを関連付けることを可能にすることであって、その結果、要求エージェントから該特定のタイプのデバイスに対する1つ以上のシリアル番号の要求を受信すると、該アプライアンスは、該1つ以上のシリアル番号を該要求エージェントに提供することが可能である、こととをコンピューティングデバイスに行わせる、コンピュータ可読媒体もまた提供される。
プロセッサおよびメモリを含み、かつ、1つ以上のアプライアンスに通信可能に接続可能なコントローラデバイスであって、該プロセッサは、アプライアンスに通信可能に接続するように構成されており、該コントローラは、電子資産を該アプライアンスに提供するように構成されており、該アプライアンスに通信可能に接続することは、1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該電子資産が該アプライアンスによって該1つ以上のエージェントに提供されることを可能にすることにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にし、該プロセッサは、シリアライゼーションスキーマを生成するように構成されており、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのようにして生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられており、該プロセッサは、該シリアライゼーションスキーマを該アプライアンスに提供することにより、該アプライアンスが該範囲内の該シリアル番号を生成し、該シリアル番号と該特定のタイプのデバイスとを関連付けることを可能にするように構成されており、その結果、要求エージェントから該特定のタイプのデバイスに対する1つ以上のシリアル番号の要求を受信すると、該アプライアンスは、該1つ以上のシリアル番号を該要求エージェントに提供することが可能である、コントローラデバイスもまた提供される。
シリアル番号の範囲を定義するシリアライゼーションスキーマを生成することであって、該シリアライゼーションスキーマを生成することは、該スキーマ内で許容される基本値の範囲を定義することと、該基本値に対するフォーマットを定義することと、各シリアル番号に対する文字の総数を定義することと、該基本値から生成される結果として生じた文字列に固定文字列が挿入されるべきであるかどうかを決定することとにより行われる、ことと、該スキーマに従って該シリアル番号を生成するために、該シリアライゼーションスキーマを遠隔アプライアンスに提供することとを含む、方法もまた提供される。
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、シリアル番号の範囲を定義するシリアライゼーションスキーマを生成することであって、該シリアライゼーションスキーマを生成することは、該スキーマ内で許容される基本値の範囲を定義することと、該基本値に対するフォーマットを定義することと、各シリアル番号に対する文字の総数を定義することと、該基本値から生成される結果として生じた文字列に固定文字列が挿入されるべきであるかどうかを決定することとにより行われる、ことと、該スキーマに従って該シリアル番号を生成するために、該シリアライゼーションスキーマを遠隔アプライアンスに提供することとをコンピューティングデバイスに行わせる、コンピュータ可読媒体もまた提供される。
シリアル番号の範囲を定義するシリアライゼーションスキーマを獲得することであって、該シリアライゼーションスキーマを獲得することは、該スキーマ内で許容される基本値の範囲を定義することと、該基本値に対するフォーマットを定義することと、各シリアル番号に対する文字の総数を定義することと、該基本値から生成される結果として生じた文字列に固定文字列が挿入されるべきであるかどうかを決定することとにより行われる、ことと、各基本値に対して、該基本値が該範囲内にあるかどうかを決定することと、該基本値を該フォーマットで表すことと、文字の総数に従って結果として生じた文字列を切り捨てるかまたは付け足すことであって、該固定文字列が定義された場合に、該結果として生じた文字列に該固定文字列を挿入することにより、該シリアル番号を獲得することとを含む、方法もまた提供される。
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、シリアル番号の範囲を定義するシリアライゼーションスキーマを獲得することであって、該シリアライゼーションスキーマを獲得することは、該スキーマ内で許容される基本値の範囲を定義することと、該基本値に対するフォーマットを定義することと、各シリアル番号に対する文字の総数を定義することと、該基本値から生成される結果として生じた文字列に固定文字列が挿入されるべきであるかどうかを決定することとにより行われる、ことと、各基本値に対して、該基本値が該範囲内にあるかどうかを決定することと、該基本値を該フォーマットで表すことと、文字の総数に従って結果として生じた文字列を切り捨てるかまたは付け足すことであって、該固定文字列が定義された場合に、該結果として生じた文字列に該固定文字列を挿入することにより、該シリアル番号を獲得することとをコンピューティングデバイスに行わせる、コンピュータ可読媒体もまた提供される。
命令を実行する、本明細書において例示される任意のモジュールまたは構成要素は、記憶媒体、コンピュータ記憶媒体、または、例えば、磁気ディスク、光ディスク、あるいはテープ等の他の記憶デバイス(取外し可能および/または取外し不可能)等の、コンピュータ可読媒体へのアクセスを含むか、または別様にアクセスでき得ることが理解されるであろう。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の、情報の記憶のための任意の方法および技術で実装される、揮発性および不揮発性、取外し可能および取外し不可能の媒体を含み得る。コンピュータ記憶媒体の実施例は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光学記憶、磁気カセット、磁気テープ、磁気ディスク記憶または他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、アプリケーション、モジュール、あるいは両方によってアクセスすることができる、任意の他の媒体を含む。任意のそのようなコンピュータ記憶媒体は、本明細書で示されるモジュールの一部であるか、またはそこからアクセス可能あるいは接続可能であり得る。本明細書において説明される任意のアプリケーションまたはモジュールは、そのようなコンピュータ可読媒体によって記憶または別様に保持され得るコンピュータ可読/実行可能命令を使用して実装され得る。
上記のシステムは、ある具体的実施例を参照して説明されているが、ここに添付される請求項で概説されるように、その種々の修正が当業者に明白となるであろう。
所与の製造過程における収益を増加させる機会は、デジタル資産の安全な管理を通して競争上の利点を取得することによって存在し得る。以下では、上記の無駄を削減し、種々の用途で競争上の利点を取得するために使用され得る、ソリューションフレームワークを提供するシステムが説明される。説明されるシステムは、複数の物理的な場所にわたって展開され、製造過程に統合される、ソフトウェアおよびハードウェア構成要素を備える。このようにして、総合的なインフラストラクチャソリューションを提供することができる、製造プラットフォームが作成される。
(項目1)
コントローラに通信可能に接続可能なアプライアンスを提供することであって、該アプライアンスは、該コントローラから電子資産を獲得するように構成されている、ことと、
1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該アプライアンスを該1つ以上のエージェントに通信可能に接続することにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にすることと、
該コントローラからシリアライゼーションスキーマを獲得することであって、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのようにして生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられている、ことと、
該シリアライゼーションスキーマを用いて、該範囲内の該シリアル番号を生成し、該シリアル番号と該特定のタイプのデバイスとを関連付けることと、
要求エージェントから該特定のタイプのデバイスに対する1つ以上のシリアル番号の要求を受信すると、該1つ以上のシリアル番号を該要求エージェントに提供することと
を含む、方法。
(項目2)
上記特定のタイプのデバイスに対するシリアル番号の適用を示すログデータを上記要求エージェントから獲得することをさらに含む、項目1に記載の方法。
(項目3)
上記ログデータを上記コントローラに提供することにより、上記提供することを該コントローラが監視することを可能にすることをさらに含む、項目2に記載の方法。
(項目4)
上記ログデータは、上記シリアル番号に関連付けられたダイ上の位置、または、該シリアル番号が上記デバイスに追加された時間に関連付けられたタイムスタンプを含む、項目2または3に記載の方法。
(項目5)
上記シリアライゼーションスキーマの受信を示すログレポートを上記コントローラに送信することをさらに含む、項目1〜4のいずれか一項に記載の方法。
(項目6)
上記シリアライゼーションスキーマは、シリアル番号の範囲を定義し、
該範囲を定義することは、
該スキーマ内で許容される基本値の範囲を定義することと、
該基本値に対するフォーマットを定義することと、
各シリアル番号に対する文字の総数を定義することと、
該基本値から生成される結果として生じた文字列に固定文字列が挿入されるべきであるかどうかを決定することと
により行われる、項目1〜5のいずれか一項に記載の方法。
(項目7)
上記シリアル番号は、
各基本値に対して、
該基本値が上記範囲内にあるかどうかを決定することと、
該基本値を上記フォーマットで表すことと、
文字の上記総数に従って、結果として生じた文字列を切り捨てるかまたは付け足すことと、
上記固定文字列が定義された場合に、該結果として生じた文字列に該固定文字列を挿入することにより、該シリアル番号を獲得することと
によって生成される、項目6に記載の方法。
(項目8)
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、
コントローラに通信可能に接続可能なアプライアンスを提供することであって、該アプライアンスは、該コントローラから電子資産を獲得するように構成されている、ことと、
1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該アプライアンスを該1つ以上のエージェントに通信可能に接続することにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にすることと、
該コントローラからシリアライゼーションスキーマを獲得することであって、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのようにして生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられている、ことと、
該シリアライゼーションスキーマを用いて、該範囲内の該シリアル番号を生成し、該シリアル番号と該特定のタイプのデバイスとを関連付けることと、
要求エージェントから該特定のタイプのデバイスに対する1つ以上のシリアル番号の要求を受信すると、該1つ以上のシリアル番号を該要求エージェントに提供することと
をコンピューティングデバイスに行わせる、コンピュータ可読媒体。
(項目9)
上記特定のタイプのデバイスに対するシリアル番号の適用を示すログデータを上記要求エージェントから獲得するための命令をさらに含む、項目8に記載のコンピュータ可読媒体。
(項目10)
上記ログデータを上記コントローラに提供することにより、上記1つ以上のシリアル番号を提供することを該コントローラが監視することを可能にするための命令をさらに含む、項目9に記載のコンピュータ可読媒体。
(項目11)
上記ログデータは、上記シリアル番号に関連付けられたダイ上の位置、または、該シリアル番号が上記デバイスに追加された時間に関連付けられたタイムスタンプを含む、項目9または10に記載のコンピュータ可読媒体。
(項目12)
上記シリアライゼーションスキーマの受信を示すログレポートを上記コントローラに送信するための命令をさらに含む、項目8〜11のいずれか一項に記載のコンピュータ可読媒体。
(項目13)
上記シリアライゼーションスキーマは、シリアル番号の範囲を定義し、
該範囲を定義することは、
該スキーマ内で許容される基本値の範囲を定義することと、
該基本値に対するフォーマットを定義することと、
各シリアル番号に対する文字の総数を定義することと、
該基本値から生成される結果として生じた文字列に固定文字列が挿入されるべきであるかどうかを決定することと
により行われる、項目8〜12のいずれか一項に記載のコンピュータ可読媒体。
(項目14)
上記シリアル番号は、
各基本値に対して、
該基本値が上記範囲内にあるかどうかを決定することと、
該基本値を上記フォーマットで表すことと、
文字の上記総数に従って、結果として生じた文字列を切り捨てるかまたは付け足すことと、
上記固定文字列が定義された場合に、該結果として生じた文字列に該固定文字列を挿入することにより、該シリアル番号を獲得することと
によって生成される、項目13に記載のコンピュータ可読媒体。
(項目15)
プロセッサおよびメモリを含み、かつ、コントローラおよび1つ以上のエージェントと通信可能に接続可能なアプライアンスデバイスであって、
該プロセッサは、
該コントローラに通信可能に接続することであって、該アプライアンスは、該コントローラから電子資産を獲得するように構成されている、ことと
該1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該1つ以上のエージェントに通信可能に接続することにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にすることと、
該コントローラからシリアライゼーションスキーマを獲得することであって、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのようにして生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられている、ことと、
該シリアライゼーションスキーマを用いて、該範囲内の該シリアル番号を生成し、該シリアル番号と該特定のタイプのデバイスとを関連付けることと、
要求エージェントから該特定のタイプのデバイスに対する1つ以上のシリアル番号の要求を受信すると、該1つ以上のシリアル番号を該要求エージェントに提供することと
を行うように構成されている、アプライアンスデバイス。
(項目16)
コントローラをアプライアンスに通信可能に接続することであって、該コントローラは、電子資産を該アプライアンスに提供するように構成されており、該アプライアンスに通信可能に接続することは、1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該電子資産が該アプライアンスによって該1つ以上のエージェントに提供されることを可能にすることにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にする、ことと、
シリアライゼーションスキーマを生成することであって、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのようにして生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられている、ことと、
該シリアライゼーションスキーマを該アプライアンスに提供することにより、該アプライアンスが該範囲内の該シリアル番号を生成し、該シリアル番号を該特定のタイプのデバイスに関連付けることを可能にすることであって、その結果、要求エージェントから該特定のタイプのデバイスに対する1つ以上のシリアル番号の要求を受信すると、該アプライアンスは、該1つ以上のシリアル番号を該要求エージェントに提供することが可能である、ことと
を含む、方法。
(項目17)
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、
コントローラをアプライアンスに通信可能に接続することであって、該コントローラは、該アプライアンスに電子資産を提供するように構成されており、該アプライアンスに通信可能に接続することは、1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該電子資産が該アプライアンスによって該1つ以上のエージェントに提供されることを可能にすることにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にする、ことと、
シリアライゼーションスキーマを生成することであって、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのようにして生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられている、ことと、
該シリアライゼーションスキーマを該アプライアンスに提供することにより、該アプライアンスが該範囲内の該シリアル番号を生成し、該シリアル番号を該特定のタイプのデバイスに関連付けることを可能にすることであって、その結果、要求エージェントから該特定のタイプのデバイスに対する1つ以上のシリアル番号の要求を受信すると、該アプライアンスは、該1つ以上のシリアル番号を該要求エージェントに提供することが可能である、ことと
をコンピューティングデバイスに行わせる、コンピュータ可読媒体。
(項目18)
プロセッサおよびメモリを含み、かつ、1つ以上のアプライアンスに通信可能に接続可能なコントローラデバイスであって、
該プロセッサは、
アプライアンスに通信可能に接続することであって、該コントローラは、電子資産を該アプライアンスに提供するように構成されており、該アプライアンスに通信可能に接続することは、1つ以上のエージェントが該電子資産をデバイスに適用することを可能にするために、該電子資産が該アプライアンスによって該1つ以上のエージェントに提供されることを可能にすることにより、該アプライアンスが該電子資産を該1つ以上のエージェントに提供することを可能にする、ことと、
シリアライゼーションスキーマを生成することであって、該シリアライゼーションスキーマは、シリアル番号の一意的な範囲を定義し、かつ、シリアル番号の該範囲内の一意的なシリアル番号をどのようにして生成するかを定義し、該シリアライゼーションスキーマは、特定のタイプのデバイスに結び付けられている、ことと、
該シリアライゼーションスキーマを該アプライアンスに提供することにより、該アプライアンスが該範囲内の該シリアル番号を生成し、該シリアル番号と該特定のタイプのデバイスとを関連付けることを可能にすることであって、その結果、要求エージェントから該特定のタイプのデバイスに対する1つ以上のシリアル番号の要求を受信すると、該アプライアンスは、該1つ以上のシリアル番号を該要求エージェントに提供することが可能であることと
を行うように構成されている、コントローラデバイス。
(項目19)
シリアル番号の範囲を定義するシリアライゼーションスキーマを生成することであって、該シリアライゼーションスキーマを生成することは、
該スキーマ内で許容される基本値の範囲を定義することと、
該基本値に対するフォーマットを定義することと、
各シリアル番号に対する文字の総数を定義することと、
該基本値から生成される結果として生じた文字列に固定文字列が挿入されるべきであるかどうかを決定することと
により行われる、ことと、
該スキーマに従って該シリアル番号を生成するために、該シリアライゼーションスキーマを遠隔アプライアンスに提供することと
を含む、方法。
(項目20)
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、
シリアル番号の範囲を定義するシリアライゼーションスキーマを生成することであって、該シリアライゼーションスキーマを生成することは、
該スキーマ内で許容される基本値の範囲を定義することと、
該基本値に対するフォーマットを定義することと、
各シリアル番号に対する文字の総数を定義することと、
該基本値から生成される結果として生じた文字列に固定文字列が挿入されるべきであるかどうかを決定することと
により行われる、ことと、
該スキーマに従って該シリアル番号を生成するために、該シリアライゼーションスキーマを遠隔アプライアンスに提供することと
をコンピューティングデバイスに行わせる、コンピュータ可読媒体。
(項目21)
シリアル番号の範囲を定義するシリアライゼーションスキーマを獲得することであって、
該シリアライゼーションスキーマを獲得することは、
該スキーマ内で許容される基本値の範囲を定義することと、
該基本値に対するフォーマットを定義することと、
各シリアル番号に対する文字の総数を定義することと、
該基本値から生成される結果として生じた文字列に固定文字列が挿入されるべきであるかどうかを決定することと
により行われる、ことと、
各基本値に対して、
該基本値が該範囲内にあるかどうかを決定することと、
該基本値を該フォーマットで表すことと、
文字の総数に従って結果として生じた文字列を切り捨てるかまたは付け足すことであって、該固定文字列が定義された場合に、該結果として生じた文字列に該固定文字列を挿入することにより、該シリアル番号を獲得することと
を含む、方法。
(項目22)
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行された場合に、
シリアル番号の範囲を定義するシリアライゼーションスキーマを獲得することであって、該シリアライゼーションスキーマを獲得することは、
該スキーマ内で許容される基本値の範囲を定義することと、
該基本値に対するフォーマットを定義することと、
各シリアル番号に対する文字の総数を定義することと、
該基本値から生成される結果として生じた文字列に固定文字列が挿入されるべきであるかどうかを決定することと
により行われる、ことと、
各基本値に対して、
該基本値が該範囲内にあるかどうかを決定することと、
該基本値を該フォーマットで表すことと、
文字の総数に従って結果として生じた文字列を切り捨てるかまたは付け足すことであって、該固定文字列が定義された場合に、該結果として生じた文字列に該固定文字列を挿入することにより、該シリアル番号を獲得することと
をコンピューティングデバイスに行わせる、コンピュータ可読媒体。