(57)【要約】  セキュアＰＬＤをプロビジョニングするシステム及び方法を開示する。セキュアＰＬＤプロビジョニングシステムの一例は、プロセッサ及びメモリを含み、セキュアＰＬＤのＩ／Ｏを介してセキュアＰＬＤに結合するように構成された外部システムを含む。外部システムは、セキュアＰＬＤ顧客の要求に少なくとも部分的に基づいて、セキュアＰＬＤを含むロックされたＰＬＤを生成する。セキュアＰＬＤ顧客の要求は顧客公開鍵を含み、かつ、ロックされたセキュアＰＬＤのセキュアロック解除パッケージを提供するように構成される。外部システムはまた、顧客プログラミングキートークンと、ロックされたセキュアＰＬＤに関連付けられた対応するプログラミング公開鍵とを含む認証可能なキーマニフェストを提供する。認証可能な鍵マニフェストは、ロックされたセキュアＰＬＤによって生成されたプログラミング秘密鍵を使用して署名されるように構成され得る。
2021528793.tif 000002
【特許請求の範囲】
【請求項１】
セキュアプログラマブルロジックデバイス（ＰＬＤ：Programmable Logic Device）プロビジョニングシステムであって、
プロセッサとメモリとを有し、セキュアＰＬＤに前記セキュアＰＬＤの構成入出力（Ｉ／Ｏ：Input/Output）を介して結合されるように構成された外部システムを備え、
前記メモリは、
セキュアＰＬＤ顧客からの要求に少なくとも部分的に基づいて、前記セキュアＰＬＤを含むロックされたＰＬＤを生成するステップであって、前記セキュアＰＬＤ顧客からの前記要求が、顧客公開鍵を含むステップと、
前記ロックされたセキュアＰＬＤのためのセキュアロック解除パッケージを提供するステップと、
を含むコンピュータ実装方法を、前記外部システムの前記プロセッサによって実行されたときに、前記外部システムに実行させるように構成された機械可読命令を含む、
システム。
【請求項２】
前記ロックされたＰＬＤを生成する前記ステップが、
前記要求内の前記顧客公開鍵を前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）に提供し、前記ＨＳＭによって生成された顧客プログラミングキートークンを受信することによって、前記セキュアＰＬＤ顧客又は前記セキュアＰＬＤ顧客からの前記要求に対応する顧客プログラミングキートークンを生成するステップを含む、
請求項１に記載のシステム。
【請求項３】
前記ロックされたＰＬＤを生成する前記ステップが、
前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）に、前記セキュアＰＬＤ顧客からの前記要求内の前記顧客公開鍵を提供するステップであって、前記ＨＳＭは、前記顧客公開鍵を受信することに応じて、顧客プログラミングキートークン、プログラミング公開鍵／秘密鍵ペア、及びプログラミングシークレットを生成するように構成されるステップと、
前記プログラミング秘密鍵、前記プログラミングシークレット、及び暗号化されたプログラミングパケットを前記ＨＳＭから受信するステップであって、前記暗号化されたプログラミングパケットは、前記顧客公開鍵を使用して暗号化され、前記プログラミング秘密鍵を使用して署名された前記プログラミングシークレットを含み、前記セキュアロック解除パッケージは、前記暗号化されたプログラミングパケットを含むステップと、
前記プログラミング秘密鍵と前記プログラミングシークレットとを前記セキュアＰＬＤに提供するステップと、を含む、
請求項１に記載のシステム。
【請求項４】
前記ロックされたセキュアＰＬＤの前記セキュアロック解除パッケージを提供するステップが、
前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）によって生成された暗号化されたプログラミングパケットを、セキュアＰＬＤ顧客に提供するステップであって、前記暗号化されたプログラミングパケットは、前記顧客公開鍵を使用して前記ＨＳＭによって暗号化され、前記ＨＳＭによって生成されたプログラミング秘密鍵を使用して前記ＨＳＭによって署名される、前記ＨＳＭによって生成されたプログラミングシークレットを含むステップと、
前記ＨＳＭによって生成されたプログラミング公開鍵をセキュアＰＬＤ顧客に提供するステップと、を含む、
請求項１に記載のシステム。
【請求項５】
前記コンピュータ実装方法が、
トレースＩＤと、前記ロックされたセキュアＰＬＤに関連付けられた対応するデバイス公開鍵とを含む認証可能なロックされたＰＬＤマニフェストを提供するステップであって、前記認証可能なロックされたＰＬＤマニフェストは、前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）によって生成されたプログラミング秘密鍵を使用して署名されるステップ、をさらに含む、
請求項１に記載のシステム。
【請求項６】
前記ロックされたＰＬＤを生成する前記ステップが、
前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Harden Security Module）に顧客プログラミングキートークンを提供するステップと、
前記ＨＳＭからプログラミング秘密鍵とプログラミングシークレットとを受信し、前記セキュアＰＬＤからデバイス公開鍵を受信するステップと、
前記セキュアＰＬＤに初期プログラミングイメージ（ＩＰＩ：Initial Programming Image）構成を提供するステップと、
前記ＩＰＩ構成に従って、前記セキュアＰＬＤのＰＬＤファブリックをプログラムするステップと、を含む、
請求項１に記載のシステム。
【請求項７】
前記コンピュータ実装方法が、
前記ロックされたセキュアＰＬＤの保護された構成を生成又は受信するステップと、
前記保護された構成に従って、前記ロックされたセキュアＰＬＤをプログラムするステップと、をさらに含み、
前記保護された構成は、各々が、前記セキュアＰＬＤ顧客に関連付けられたアプリケーション秘密鍵によって署名され、前記セキュアＰＬＤ顧客に関連付けられたアプリケーション暗号化鍵によって暗号化されたアプリケーション構成及び機能構成と、アプリケーション公開鍵、前記アプリケーション暗号化鍵、及び前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ）によって生成されたプログラミングシークレットの暗号化及び署名された組み合わせを含むプログラミングキーダイジェストと、を含む、
請求項１に記載のシステム。
【請求項８】
前記セキュアＰＬＤのＰＬＤファブリックに配置される複数のプログラマブル論理ブロック（ＰＬＢ：Programmable Logic Block）と、前記セキュアＰＬＤの不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）に格納された、及び／又は前記構成入出力（Ｉ／Ｏ：Input/Output）を介して前記構成エンジンに結合された構成イメージに従って前記ＰＬＤファブリックをプログラムするように構成された構成エンジンと、前記ＰＬＤファブリック及び／又は前記構成エンジンに複数のセキュリティ機能を提供するように構成されたセキュリティエンジンと、を含む前記セキュアＰＬＤをさらに備え、
前記セキュアＰＬＤが、
前記ＮＶＭに格納され、前記ＰＬＤファブリックにプログラムされた初期プログラミングイメージ（ＩＰＩ：Initial Programming Image）構成に従って起動するステップと、
前記構成Ｉ／Ｏを介して保護された構成を受信するステップであって、前記保護された構成は、各々が、前記セキュアＰＬＤのセキュアＰＬＤ顧客に関連付けられたアプリケーション秘密鍵によって署名され、前記セキュアＰＬＤ顧客に関連付けられたアプリケーション暗号化鍵によって暗号化されたアプリケーション構成及び機能構成と、アプリケーション公開鍵、前記アプリケーション暗号化鍵、及び前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）によって生成されたプログラミングシークレットの暗号化及び署名された組み合わせを含むプログラミングキーダイジェストと、を含むステップと、
前記ＮＶＭに格納されているプログラミング秘密鍵と復号化されたアプリケーション公開鍵とを使用して前記プログラミングキーダイジェストを復号化及び認証するステップと、
前記プログラミングキーダイジェストからの前記プログラミングシークレットが前記ＮＶＭに格納されているプログラミングシークレットと一致するかどうかを確認するステップと、
前記キーダイジェストから前記アプリケーション暗号化鍵と前記アプリケーション公開鍵とを使用して前記アプリケーション構成及び前記機能構成を復号化及び認証するステップと、
前記ＰＬＤファブリックからの前記ＩＰＩ構成を消去するステップと、
前記復号化及び認証されたアプリケーション構成に従って前記ＰＬＤファブリックをプログラミングし、前記復号化及び認証された機能構成に従って前記ＮＶＭの１つ以上の部分をプログラミングするステップと、
を含むセキュアＰＬＤ実装方法を実行するように構成されている、
請求項１に記載のシステム。
【請求項９】
セキュアプログラマブルロジックデバイス（ＰＬＤ：Programmable Logic Device）プロビジョニングシステムであって、
セキュアＰＬＤを備え、
前記セキュアＰＬＤは、前記セキュアＰＬＤのＰＬＤファブリックに配置された複数のプログラマブル論理ブロック（ＰＬＢ：Programmable Logic Block）と、前記セキュアＰＬＤの不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）に格納された、及び／又は前記セキュアＰＬＤの構成入出力（Ｉ／Ｏ：Input/Output）を介して構成エンジンに結合された構成イメージに従って前記ＰＬＤファブリックをプログラムするように構成された前記構成エンジンと、前記ＰＬＤファブリック及び／又は前記構成エンジンに複数のセキュリティ機能を提供するように構成されたセキュリティエンジンと、を含み、
前記セキュアＰＬＤが、
前記ＮＶＭに格納され、前記ＰＬＤファブリックにプログラムされた初期プログラミングイメージ（ＩＰＩ：Initial Programming Image）構成に従って起動するステップと、
前記構成Ｉ／Ｏを介して保護された構成を受信するステップであって、前記保護された構成は、各々が、前記セキュアＰＬＤのセキュアＰＬＤ顧客に関連付けられたアプリケーション秘密鍵によって署名され、前記セキュアＰＬＤ顧客に関連付けられたアプリケーション暗号化鍵によって暗号化されたアプリケーション構成及び機能構成と、アプリケーション公開鍵、前記アプリケーション暗号化鍵、及び強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）によって生成されたプログラミングシークレットの暗号化及び署名された組み合わせを含むプログラミングキーダイジェストとを含むステップと、
前記ＮＶＭに格納されているプログラミング秘密鍵と復号化されたアプリケーション公開鍵とを使用して前記プログラミングキーダイジェストを復号化及び認証するステップと、
前記キーダイジェストから前記アプリケーション暗号化鍵と前記アプリケーション公開鍵とを使用して前記アプリケーション構成及び前記機能構成を復号化及び認証するステップと、
前記復号化及び認証されたアプリケーション構成に従って前記ＰＬＤファブリックをプログラミングし、前記復号化及び認証された機能構成に従って前記ＮＶＭの１つ以上の部分をプログラミングするステップと、
を含むセキュアＰＬＤ実装方法を実行するように構成されている、
システム。
【請求項１０】
プロセッサとメモリとを有し、前記構成入出力（Ｉ／Ｏ：Input/Output）を介して前記セキュアＰＬＤに結合されるように構成された外部システムを更に備え、
前記メモリは、
前記セキュアＰＬＤに関連付けられたプログラミング公開鍵を使用して、前記セキュアＰＬＤ及び対応するデバイス公開鍵を識別する、認証可能なロックされたＰＬＤマニフェストを認証するステップと、
前記セキュアＰＬＤの前記デバイス公開鍵を照会し、前記照会に対する応答を認証済みのロックされたＰＬＤマニフェスト内の対応するデバイス公開鍵と比較するステップと、
前記デバイス公開鍵に従って暗号化された乱数を前記セキュアＰＬＤに提供し、返されたチャレンジ応答を前記乱数と比較することによって、前記セキュアＰＬＤにチャレンジするステップと、
を含むコンピュータ実装方法を、前記外部システムの前記プロセッサによって実行されたときに、前記外部システムに実行させるように構成された機械可読命令を含む、
請求項９に記載のシステム。
【請求項１１】
セキュアＰＬＤ顧客からの要求に少なくとも部分的に基づいて、セキュアＰＬＤを含むロックされたＰＬＤを生成するステップであって、前記セキュアＰＬＤ顧客からの前記要求は、顧客公開鍵を含み、かつ、前記セキュアＰＬＤは、外部システム及び／又は機械可読メモリに結合されるように構成された構成入出力（Ｉ／Ｏ：Input/Output）を含むステップと、
前記ロックされたセキュアＰＬＤのセキュアロック解除パッケージを提供するステップと、
を含む方法。
【請求項１２】
前記ロックされたＰＬＤを生成する前記ステップが、
前記要求内の前記顧客公開鍵を前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）に提供し、前記ＨＳＭによって生成された顧客プログラミングキートークンを受信することによって、前記セキュアＰＬＤ顧客又は前記セキュアＰＬＤ顧客からの前記要求に対応する前記顧客プログラミングキートークンを生成するステップを含む、
請求項１１に記載の方法。
【請求項１３】
前記ロックされたＰＬＤを生成する前記ステップが、
前記セキュアＰＬＤ顧客からの前記要求内の前記顧客公開鍵を前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）によって受信するステップであって、前記ＨＳＭは、前記顧客公開鍵を受信することに応じて、プログラミング公開鍵／秘密鍵ペア、及びプログラミングシークレットを生成するように構成されるステップと、
暗号化されたプログラミングパケットを前記ＨＳＭによって生成するステップであって、前記暗号化されたプログラミングパケットは、前記顧客公開鍵を使用して暗号化され、前記プログラミング秘密鍵を使用して署名された前記プログラミングシークレットを含むステップと、を含む、
請求項１１に記載の方法。
【請求項１４】
前記ＨＳＭは、前記顧客公開鍵の受信に応じて顧客プログラミングキートークンを生成するように構成され、
前記ロックされたＰＬＤを生成する前記ステップは、
前記セキュアＰＬＤによって生成されたデバイス公開鍵を受信するステップと、
前記セキュアＰＬＤからの前記デバイス公開鍵、前記プログラミング公開鍵／秘密鍵ペア、及び前記プログラミングシークレットを、前記顧客プログラミングキートークンによって参照されるデータベースに格納するステップと、を含む、
請求項１３に記載の方法。
【請求項１５】
前記セキュアＰＬＤは、前記外部システムからのトレースＩＤの受信に応じてデバイス公開鍵／秘密鍵ペアを生成するように構成され、
前記ロックされたＰＬＤを生成する前記ステップは、
前記デバイス公開鍵／秘密鍵ペアを前記セキュアＰＬＤの不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）に格納するステップ、を含む、
請求項１３に記載の方法。
【請求項１６】
前記ロックされたセキュアＰＬＤの前記セキュアロック解除パッケージを提供する前記ステップが、
前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）によって生成された暗号化されたプログラミングパケットをセキュアＰＬＤ顧客に提供するステップであって、前記暗号化されたプログラミングパケットは、前記顧客公開鍵を使用して前記ＨＳＭによって暗号化され、前記ＨＳＭによって生成されたプログラミング秘密鍵を使用して前記ＨＳＭによって署名される、前記ＨＳＭによって生成されたプログラミングシークレットを含むステップと、
前記ＨＳＭによって生成されたプログラミング公開鍵を前記セキュアＰＬＤ顧客に提供するステップと、
を含む請求項１１に記載の方法。
【請求項１７】
トレースＩＤと、前記ロックされたセキュアＰＬＤに関連付けられた対応するデバイス公開鍵と、を含む認証可能なロックされたＰＬＤマニフェストを提供するステップであって、前記認証可能なロックされたＰＬＤマニフェストは、前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）によって生成されたプログラミング秘密鍵を使用して署名されるステップ、をさらに含む、
請求項１１に記載の方法。
【請求項１８】
前記ロックされたＰＬＤを生成する前記ステップが、
前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）に顧客プログラミングキートークンを提供するステップと、
前記ＨＳＭからプログラミング秘密鍵とプログラミングシークレットとを受信し、前記セキュアＰＬＤからデバイス公開鍵を受信するステップと、
前記セキュアＰＬＤに初期プログラミングイメージ（ＩＰＩ：Initial Programming Image）構成を提供するステップと、
前記ＩＰＩ構成に従って、前記セキュアＰＬＤのＰＬＤファブリックをプログラムするステップと、を含む、
請求項１１に記載の方法。
【請求項１９】
前記ロックされたセキュアＰＬＤの保護された構成を生成又は受信するステップと、
前記保護された構成に従って、前記ロックされたセキュアＰＬＤをプログラムするステップと、をさらに含み、
前記保護された構成は、各々が、前記セキュアＰＬＤ顧客に関連付けられたアプリケーション秘密鍵によって署名され、前記セキュアＰＬＤ顧客に関連付けられたアプリケーション暗号化鍵によって暗号化されたアプリケーション構成及び機能構成と、アプリケーション公開鍵、前記アプリケーション暗号化鍵、及び前記外部システムに結合された強化セキュリティモジュール（ＨＳＭ：Hardened Security Module）によって生成されたプログラミングシークレットの暗号化及び署名された組み合わせを含むプログラミングキーダイジェストと、を含む、
請求項１１に記載の方法。
【請求項２０】
前記構成Ｉ／Ｏを介して保護された構成を、前記セキュアＰＬＤによって受信するステップであって、前記保護された構成は、各々が、前記セキュアＰＬＤ顧客に関連付けられたアプリケーション暗号化鍵によって暗号化されたアプリケーション構成及び機能構成と、アプリケーション公開鍵、前記アプリケーション暗号化鍵、及びプログラミングシークレットの暗号化及び署名された組み合わせを含むプログラミングキーダイジェストと、を含むステップと、
前記ＰＬＤの不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）に格納されているプログラミング秘密鍵及び復号化されたアプリケーション公開鍵を使用して前記プログラミングキーダイジェストを復号化及び認証するステップと、
前記キーダイジェストから前記アプリケーション暗号化鍵と前記アプリケーション公開鍵とを使用して前記アプリケーション構成及び前記機能構成を復号化及び認証するステップと、
前記復号化及び認証されたアプリケーション構成に従って前記ＰＬＤファブリックをプログラミングし、前記復号化及び認証された機能構成に従って前記ＮＶＭの１つ以上の部分をプログラムするステップと、をさらに含む、
請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
＜関連出願の相互参照＞
この特許出願は、その全体が参照により本明細書に組み込まれている、「ＳＥＣＵＲＥ  ＢＯＯＴ  ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＦＯＲ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＬＯＧＩＣ  ＤＥＶＩＣＥＳ」と題する２０１９年５月１０日に出願された米国仮特許出願第６２／８４６，３６５号に対する優先権及びその利益を主張するものである。
【０００２】
この特許出願は、その全体が参照により本明細書に組み込まれている、「ＡＳＳＥＴ  ＭＡＮＡＧＥＭＥＮＴ  ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＦＯＲ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＬＯＧＩＣ  ＤＥＶＩＣＥＳ」と題する２０１８年１１月５日に出願された米国仮特許出願第６２／７５６，０２１号に対する優先権及びその利益を主張するものである。
【０００３】
この特許出願は、その全体が参照により本明細書に組み込まれている、「ＫＥＹ  ＰＲＯＶＩＳＩＯＮＩＮＧ  ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＦＯＲ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＬＯＧＩＣ  ＤＥＶＩＣＥＳ」と題する２０１８年１１月５日に出願された米国仮特許出願第６２／７５６，００１号に対する優先権及びその利益を主張するものである。
【０００４】
この特許出願は、その全体が参照により本明細書に組み込まれている、「ＦＡＩＬＵＲＥ  ＣＨＡＲＡＣＴＥＲＩＺＡＴＩＯＮ  ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＦＯＲ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＬＯＧＩＣ  ＤＥＶＩＣＥＳ」と題する２０１８年１１月５日に出願された米国仮特許出願第６２／７５６，０１５号に対する優先権及びその利益を主張するものである。
【０００５】
この特許出願は、その全体が参照により本明細書に組み込まれている、「ＤＥＶＩＣＥＳ  ＷＩＴＨ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＬＯＧＩＣ  ＡＮＤ  ＳＥＣＵＲＩＴＹ  ＦＥＡＴＵＲＥＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＯＦ  ＵＳＩＮＧ」と題する２０１８年５月１１日に出願された米国仮特許出願第６２／６７０，４８７号に対する優先権及びその利益を主張するものである。
【０００６】
本発明は、概して、プログラマブルロジックデバイス、より具体的には、そのようなデバイスのセキュアな構成及び／又は動作を容易にするためのセキュリティ資産のプロビジョニングに関する。
【背景技術】
【０００７】
プログラマブルロジックデバイス（ＰＬＤ）（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）、フィールドプログラマブルシステムオンチップ（ＦＰＳＣ）、又はその他のタイプのプログラマブルデバイス）は、所望の機能性を実現するために、様々なユーザ設計で構成することができる。通常、ユーザ設計は合成され、構成可能なリソース（例えば、プログラマブルロジックゲート、ルックアップテーブル（ＬＵＴ）、組み込みハードウェア、又はその他のタイプのリソース）及び特定のＰＬＤで利用可能な相互接続にマッピングされる。そして、合成及びマッピングされたユーザ設計の物理的配置及びルーティングを決定して、特定のＰＬＤの構成データが生成される。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＰＬＤの顧客は、多くの場合、選択したＰＬＤタイプ及び／又は能力のための構成を開発するのに多大なリソースを費やしており、構成データを保護し、かつ、選択したＰＬＤ及び／又は開発した構成に関連付けられた所望の動作又は能力の破壊から保護することは、ＰＬＤの多くの顧客にとって極めて重要になっている。したがって、特にトラステッド・コンピューティングアプリケーション及びトラステッド・コンピューティングアーキテクチャのコンテキストにおいて、ＰＬＤ及びＰＬＤ構成を製造、保護、配布、及び／又はアップグレードするためのシステム及び方法に対する必要性が当該技術分野に存在する。
【図面の簡単な説明】
【０００９】
【図１】図１は、本開示の一実施形態による、プログラマブルロジックデバイス（ＰＬＤ）のブロック図を例示している。
【００１０】
【図２】図２は、本開示の一実施形態による、ＰＬＤの論理ブロックのブロック図を例示している。
【００１１】
【図３】図３は、本開示の一実施形態による、ＰＬＤの設計プロセスを例示している。
【００１２】
【図４】図４は、本開示の一実施形態による、セキュアＰＬＤのブロック図を例示している。
【００１３】
【図５Ａ】図５Ａは、本開示の一実施形態による、セキュアＰＬＤプロビジョニングシステムのブロック図を例示している。
【００１４】
【図５Ｂ】図５Ｂは、本開示の一実施形態による、セキュアＰＬＤプロビジョニングシステムのブロック図を例示している。
【００１５】
【図６】図６は、本開示の一実施形態による、セキュアＰＬＤを含むユーザデバイスのブロック図を例示している。
【００１６】
【図７】図７は、本開示の一実施形態による、ロックされたセキュアＰＬＤのプロビジョニングプロセスを例示している。
【００１７】
本開示の実施形態及びそれらの利点は、以下の詳細な説明を参照することによって最もよく理解される。図に示される１つ以上の同様の要素を識別するために同様の参照番号が使用されるが、それらは、本開示の実施形態を説明する目的のためのものであり、それを限定する目的のためではないことを理解されたい。
【発明を実施するための形態】
【００１８】
本開示は、本明細書に記載されるように、トラステッド・コンピューティングアプリケーション及びアーキテクチャで使用するためのロックされたセキュアプログラマブルロジックデバイス（ＰＬＤ）を提供するためのシステム及び方法を提供する。例えば、実施形態は、ロックされたセキュアＰＬＤを顧客定義の構成及び／又は動作コンテキストに提供することに関連するキープロビジョニングのシステム及び方法を提供する。ロックされたセキュアＰＬＤは、例えば、本明細書に記載されるように、プラットフォーム／ユーザデバイスを安全に構成及び／又は起動することを含む、トラステッド・プラットフォームの様々なセキュリティ動作を実行するために使用され得る。
【００１９】
本明細書に記載の実施形態によれば、プログラマブルロジックデバイス（ＰＬＤ）にユーザ設計を安全に実装するための技術が提供される。様々な実施形態において、ユーザ設計は、（例えば、論理、算術、又は他のハードウェア機能のために構成された）ＰＬＤコンポーネントのセット及びＰＬＤで利用可能なそれらの関連する相互接続によって変換及び／又は表され得る。例えば、ＰＬＤは、いくつかのプログラマブル論理ブロック（ＰＬＢ）を含み得る。また、各ＰＬＢは、多数の論理セル、並びにＰＬＢ及び／又は論理セルを相互接続するために使用され得る構成可能なルーティングリソースを含み得る。いくつかの実施形態において、各ＰＬＢは、２から１６の間、又は２から３２の間の論理セルで実装され得る。
【００２０】
一般に、ＰＬＤ（例えば、ＦＰＧＡ）ファブリックは、１つ以上のルーティング構造と、プログラマブル機能ブロック（例えば、ＰＦＢ及び／又はＰＬＢ）内に配置された類似配置の論理セルのアレイとを含む。ルーティング構造の目的は、目的の機能を実現するために必要な組み合わせで、論理セル／ＰＬＢのポートを相互にプログラム可能に接続することである。セキュアＰＬＤは、構成可能なトラステッド・コンピューティング機能及び／又はアーキテクチャを提供するためにＰＬＤファブリックの動作にリンクされ得る様々なセキュリティ機能を提供するように構成された、様々な追加の「ハード」エンジン又はモジュールを含み得る。ルーティングの柔軟性及び構成可能な機能の埋め込み（ｒｏｕｔｉｎｇ  ｆｌｅｘｉｂｉｌｉｔｙ  ａｎｄ  ｃｏｎｆｉｇｕｒａｂｌｅ  ｆｕｎｃｔｉｏｎ  ｅｍｂｅｄｄｉｎｇ）は、ユーザ設計を合成、マッピング、配置、及び／又は多数のＰＬＤコンポーネントにルーティングする際に使用され得る。多くの設計時間及びコストを要し得る様々なユーザ設計最適化プロセスの結果として、ユーザ設計を比較的効率的に実装することができ、それによって、追加の動作及びルーティングリソースによって占有されるであろう構成可能なＰＬＤコンポーネントを解放する。いくつかの実施形態において、最適化されたユーザ設計は、ＰＬＤ及びそれらに関連する信号によって提供される様々なタイプのコンポーネントを識別するネットリストによって表され得る。変換されたユーザ設計のネットリストを生成する実施形態において、最適化プロセスは、そのようなネットリストに対して実行され得る。一旦最適化されると、そのような構成は、セキュアＰＬＤへの配布のために暗号化、署名、及び／又は他の方法によって保護され得る。そのようなプロセスは、本明細書に記載されるように、１つ以上のキープロビジョニングプロセスを含み得る。
【００２１】
ここで図面を参照すると、図１は、本開示の一実施形態によるＰＬＤ１００のブロック図を例示している。ＰＬＤ１００（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ））、複合プログラマブルロジックデバイス（ＣＰＬＤ）、フィールドプログラマブルシステムオンチップ（ＦＰＳＣ）、又は他のタイプのプログラマブルデバイス）は、一般に入力／出力（Ｉ／Ｏ）ブロック１０２及び論理ブロック１０４（例えば、プログラマブル論理ブロック（ＰＬＢ）、プログラマブル機能ユニット（ＰＦＵ）、又はプログラマブル論理セル（ＰＬＣ）とも呼ばれる）を含む。より一般的には、ＰＬＤ１００の個々の要素は、ＰＬＤファブリックと呼ばれ得る。
【００２２】
Ｉ／Ｏブロック１０２は、（例えば、１つ以上のＩ／Ｏ及び／又はメモリインターフェース標準規格をサポートするため）ＰＬＤ１００のＩ／Ｏ機能を提供する。一方、プログラマブル論理ブロック１０４は、ＰＬＤ１００の論理機能（例えば、ＬＵＴベースの論理又は論理ゲートアレイベースの論理）を提供する。追加のＩ／Ｏ機能は、シリアライザ／デシリアライザ（ＳＥＲＤＥＳ）ブロック１５０及び物理符号化副層（ＰＣＳ）ブロック１５２によって提供され得る。ＰＬＤ１００はまた、ハードＩＰ（intellectual property）コアブロック１６０を含み、追加の機能（例えば、論理ブロック１０４よりも少ないプログラミングで構成され得るハードウェアにおいて提供される実質的に所定の機能）を提供し得る。
【００２３】
ＰＬＤ１００はまた、メモリ１０６のブロック（例えば、ＥＥＰＲＯＭのブロック、ブロックＳＲＡＭ、及び／又はフラッシュメモリ）、クロック関連回路１０８（例えば、クロックソース、ＰＬＬ回路、及び／又はＤＬＬ回路）、及び／又は様々なルーティングリソース１８０（ＰＬＤ１００全体で、例えば、クロック信号、データ信号、又はその他の信号などをルーティングするための経路を提供する相互接続及び適切なスイッチング論理）を適宜含み得る。一般に、ＰＬＤ１００の様々な要素は、当業者によって理解されるように、所望の用途のために意図された機能を実行するために使用され得る。
【００２４】
例えば、特定のＩ／Ｏブロック１０２は、メモリ１０６をプログラミングするため、又は情報（例えば、様々なタイプのユーザデータ及び／又は制御信号）をＰＬＤ１００との間で転送するために使用され得る。他のＩ／Ｏブロック１０２は、（中央処理装置（ＣＰＵ）ポート、周辺データポート、ＳＰＩインターフェース、及び／又はｓｙｓＣＯＮＦＩＧプログラミングポートを表し得る）第１のプログラミングポート及び／又は（例えば、米国電気電子学会（ＩＥＥＥ）１１４９．１又は１５３２標準規格などの標準規格を採用することによって）ジョイントテストアクショングループ（ｊｏｉｎｔ  ｔｅｓｔ  ａｃｔｉｏｎ  ｇｒｏｕｐ，ＪＴＡＧ）ポートなどの第２のプログラミングポートを含む。様々な実施形態において、Ｉ／Ｏブロック１０２は、（例えば、１つ以上の接続１４０を介して）構成データ及びコマンドを受信して、ＰＬＤ１００をその意図された使用目的のために構成し、シリアル又はパラレルのデバイス構成及び情報転送を、ＳＥＲＤＥＳブロック１５０、ＰＣＳブロック１５２、ハードＩＰブロック１６０、及び／又は論理ブロック１０４を適宜用いてサポートするために含まれ得る。
【００２５】
様々な要素の数及び配置は限定的ではなく、所望の用途に依存し得ることを理解されたい。例えば、様々な要素は、所望の用途又は設計仕様（例えば、選択されたプログラマブルデバイスのタイプ）に対して要求されないことがある。
【００２６】
さらに、要素は、明確にするためにブロック形式で示されており、様々な要素は、通常、ＰＬＤ１００全体にわたって、例えば、論理ブロック１０４、ハードＩＰブロック１６０、及びルーティングリソース（例えば、図２のルーティングリソース１８０）内及びそれらの間に、それらの従来の機能（例えば、ＰＬＤ１００を構成する構成データを格納すること、又はＰＬＤ１００内に相互接続構造を提供すること）を実行するために、分散され得ることを理解されたい。本明細書に開示される様々な実施形態は、ＰＬＤ１００などのプログラマブルロジックデバイスに限定されず、当業者によって理解されるであろう、様々な他のタイプのプログラマブルデバイスに適用され得ることも理解されたい。
【００２７】
外部システム１３０は、ＰＬＤ１００の所望のユーザ構成又は設計を創作し、また、対応する構成データを生成して、ＰＬＤ１００をプログラムする（例えば、構成する）ために使用することができる。例えば、システム１３０は、そのような構成データを、１つ以上のＩ／Ｏブロック１０２、ＳＥＲＤＥＳブロック１５０、及び／又はＰＬＤ１００の他の部分に提供することができる。結果として、プログラマブル論理ブロック１０４、様々なルーティングリソース、及びＰＬＤ１００の他の適切なコンポーネントは、ユーザ指定のアプリケーションに従って動作するように構成され得る。
【００２８】
図示の実施形態において、システム１３０は、コンピュータシステムとして実装されている。これに関して、システム１３０は、例えば、１つ以上のメモリ１３４内に提供される、及び／又は（例えば、システム１３０の内部にあっても外部にあってもよい）１つ以上の非一時的な機械可読媒体１３６内に非一時的な形式で格納される、ソフトウェア命令などの命令を実行するように構成され得る１つ以上のプロセッサ１３２を含む。例えば、いくつかの実施形態において、システム１３０は、Ｌａｔｔｉｃｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＬａｔｔｉｃｅ  Ｄｉａｍｏｎｄ  Ｓｙｓｔｅｍ  ＰｌａｎｎｅｒソフトウェアなどのＰＬＤ構成ソフトウェアを実行して、ユーザが所望の構成を作成し、対応する構成データを生成してＰＬＤ１００をプログラムできるようにし得る。
【００２９】
システム１３０はまた、例えば、ユーザに情報を表示するためのユーザインターフェース１３５（例えば、スクリーン又はディスプレイ）と、ユーザコマンド又は設計エントリを受信してＰＬＤ１００の所望の構成を準備するための１つ以上のユーザ入力デバイス１３７（例えば、キーボード、マウス、トラックボール、タッチスクリーン、及び／又は他のデバイス）とを含む。
【００３０】
図２は、本開示の一実施形態による、ＰＬＤ１００の論理ブロック１０４のブロック図を例示している。説明したように、ＰＬＤ１００は、論理及び算術機能を提供するための様々なコンポーネントを含む複数の論理ブロック１０４を含む。図２に示される例示的な実施形態において、論理ブロック１０４は、論理ブロック１０４内で内部的に、及び／又はルーティングリソース１８０を使用して外部で相互接続され得る複数の論理セル２００を含む。例えば、各論理セル２００は、ルックアップテーブル（ＬＵＴ）２０２、モード論理回路２０４、レジスタ２０６（例えば、フリップフロップ又はラッチ）、及び、論理セル２００の及び／又は論理セル２００間の所望の信号経路を選択するための様々なプログラマブルマルチプレクサ（例えば、プログラマブルマルチプレクサ２１２及び２１４）などの様々なコンポーネントを含み得る。この例では、ＬＵＴ２０２は、４つの入力２２０Ａ〜２２０Ｄを受け入れ、４つ以下の入力を有する任意の適切な論理演算を実装するためにＰＬＤ１００の構成データによってプログラム可能な４入力ＬＵＴ（「４−ＬＵＴ」又は「ＬＵＴ４」と略されることがある）となる。モード論理２０４は、本明細書に記載されるように、様々な論理要素及び／又は入力２２０Ｅなどの追加の入力を含み、様々なモードの機能をサポートすることができる。他の例のＬＵＴ２０２は、ＰＬＤの特定の実装のための他の適切な数の入力を有する他の適切なサイズのものであり得る。いくつかの実施形態において、異なるサイズのＬＵＴが、異なる論理ブロック１０４及び／又は異なる論理セル２００に対して提供され得る。
【００３１】
ＬＵＴ２０２及び／又はモード論理２０４からの出力信号２２２は、いくつかの実施形態において、論理セル２００の出力信号２３３を提供するために、レジスタ２０６を通過してもよい。様々な実施形態において、ＬＵＴ２０２及び／又はモード論理２０４からの出力信号２２３は、図示のように、出力２２３に直接渡されてもよい。マルチプレクサ２１０〜２１４及び／又はモード論理２０４の構成に応じて、出力信号２２２は、制御信号２３０に従って、ラッチ２０６に一時的に格納され得る（例えば、ラッチされる）。いくつかの実施形態において、ＰＬＤ１００の構成データは、論理セル２００の出力２２３及び／又は２３３を、別の論理セル２００（例えば、別の論理ブロック又は同じ論理ブロック内）の１つ以上の入力として、ステージング又はカスケード構成（例えば、複数のレベルを含む）で提供されるように構成して、単一の論理セル２００では実装できない論理演算（例えば、単一のＬＵＴ２０２によって実装されるにはあまりにも多くの入力を有する論理演算）を構成することができる。さらに、論理セル２００は、本明細書で記載されるように、選択可能な動作モードを容易にするために、複数の出力及び／又は相互接続で実装され得る。
【００３２】
モード論理回路２０４は、加算器、減算器、比較器、カウンタ、又は他の演算などの算術演算を効率的に実装するため、拡張論理演算（例えば、より高次のＬＵＴ、複数ビットデータの処理）を効率的に形成するため、比較的小さいＲＡＭを効率的に実装するため、及び／又は論理、算術、拡張論理、及び／又は他の選択可能な動作モード間の選択を可能にするため、ＰＬＤ１００のいくつかの構成に利用されてもよい。これに関して、モード論理回路２０４は、本明細書に記載されるように、複数の論理セル２０２にわたって、キャリーイン信号２０５及びキャリーアウト信号２０７、及び／又は他の信号（例えば、出力信号２２２）を隣接する論理セル２０２間で通過させるために一緒に連鎖され得る。図２の例では、キャリーイン信号２０５は、例えば、モード論理回路２０４に直接渡されてもよいし、又は本明細書で記載されるように、１つ以上のプログラマブルマルチプレクサを構成することによってモード論理回路２０４に渡されてもよい。いくつかの実施形態において、モード論理回路２０４は、複数の論理ブロック１０４にまたがって連鎖され得る。
【００３３】
図２に示される論理セル２００は単なる例であり、異なる実施形態による論理セル２００は、ＰＬＤコンポーネントの異なる組み合わせ及び配置を含み得る。また、図２は、８つの論理セル２００を有する論理ブロック１０４を例示しているが、他の実施形態による論理ブロック１０４は、より少ない論理セル２００又はより多い論理セル２００を含んでいてもよい。論理ブロック１０４の各論理セル２００は、ＰＬＤ１００によって実装されるユーザ設計の一部を実装するために使用され得る。これに関して、ＰＬＤ１００は、多くの論理ブロック１０４を含んでいてもよく、それらのそれぞれは、論理セル２００及び／又はユーザ設計を集合的に実装するために使用される他のコンポーネントを含み得る。
【００３４】
本明細書でさらに記載するように、ユーザ設計の一部は、ＰＬＤ１００がユーザ設計を実装するように構成される際、より少ない論理セル２００、より少ない論理ブロック１０４を占有するように、及び／又はルーティングリソース１８０への負担が少なくなるように調整することができる。様々な実施形態によるそのような調整は、論理セル２００及び／又は論理ブロック１０４の複数の実施形態を占める配置において実装される特定の論理、算術、及び／又は拡張論理演算を識別し得る。本明細書でさらに記載するように、最適化プロセスは、論理、リップル算術、又は拡張論理演算を、先行する算術／論理演算に関連する１つ以上の論理セル２００及び／又は論理ブロック１０４に実装できるように、本明細書に記載する算術／論理演算に関連する様々な信号接続をルーティングすることができる。
【００３５】
図３は、本開示の一実施形態による、ＰＬＤの設計プロセス３００を例示している。例えば、図３のプロセスは、ＰＬＤ１００を構成するためにＬａｔｔｉｃｅ  Ｄｉａｍｏｎｄソフトウェアを実行するシステム１３０によって実行され得る。いくつかの実施形態において、図３で参照される様々なファイル及び情報は、例えば、メモリ１３４、機械可読媒体１３６、及び／又はその他の１つ以上のデータベース及び／又は他のデータ構造に格納され得る。様々な実施形態において、そのようなファイル及び／又は情報は、格納されるとき、及び／又は、ＰＬＤ１００及び／又は他のデバイス又はシステムに伝達されるときに、暗号化又は他の方法で保護され得る。
【００３６】
動作３１０において、システム１３０は、ＰＬＤ１００の所望の機能を指定するユーザ設計を受信する。例えば、ユーザは、システム１３０と相互作用して（例えば、ユーザ入力デバイス１３７及び設計を表すハードウェア記述言語（ＨＤＬ）コードを介して）、ユーザ設計の様々な特徴（例えば、高レベルの論理演算、ハードウェア構成、及び／又は他の機能）を識別することができる。いくつかの実施形態において、ユーザ設計は、レジスタ転送レベル（ＲＴＬ）記述（例えば、ゲートレベル記述）で提供され得る。システム１３０は、１つ以上のルールチェックを実行して、ユーザ設計がＰＬＤ１００の有効な構成を記述していることを確認することができる。例えば、システム１３０は、無効な構成を拒否し、及び／又は適宜新しい設計情報を提供するようにユーザに要求することができる。
【００３７】
動作３２０において、システム１３０は、ユーザ設計の抽象的な論理実装を複数の論理コンポーネント（例えば、ネットリストコンポーネントとも呼ばれる）として識別するネットリスト（例えば、合成されたＲＴＬ記述）を作成するために設計を合成する。このネットリストは、ＰＬＤ１００のプログラマブルコンポーネント及びハードＩＰコンポーネントの両方を含み得る。いくつかの実施形態において、ネットリストは、ネイティブジェネリックデータベース（ＮＧＤ）ファイル内の電子設計交換フォーマット（ＥＤＩＦ）で格納され得る。
【００３８】
いくつかの実施形態において、動作３２０において設計をネットリストに合成することは、論理演算、ハードウェア構成、及び／又はユーザ設計における他の特徴の高レベルの記述を、ＰＬＤコンポーネントのセット（例えば、論理ブロック１０４、論理セル２００、及びユーザ設計を実装するために論理、算術、又は他のハードウェア機能のために構成されたＰＬＤ１００の他の構成要素）及びそれらに関連する相互接続又は信号に変換する（例えば、翻訳する）ことを含み得る。実施形態に応じて、変換されたユーザ設計は、ネットリストとして表され得る。
【００３９】
いくつかの実施形態において、動作３２０において設計をネットリストに合成することは、伝搬遅延、ＰＬＤリソース及びルーティングリソースの消費を低減するために、及び／又はユーザ設計を実施するように構成されるときに、ＰＬＤの性能を最適化するために、ユーザ設計（例えば、ＰＬＤコンポーネントのセット及びそれらに関連する相互接続又は信号に変換／翻訳されたユーザ設計）に対して最適化プロセスを実行することをさらに含み得る。実施形態に応じて、最適化プロセスは、変換／翻訳されたユーザ設計を表すネットリストに対して実行され得る。実施形態に応じて、最適化プロセスは、（例えば、最適化されたネットリストを作成するための）ネットリスト内の最適化されたユーザ設計を表すことができる。
【００４０】
いくつかの実施形態において、最適化プロセスは、ＰＬＤがユーザ設計を実装するように構成される場合に複数の構成可能なＰＬＤコンポーネント（例えば、論理セル２００、論理ブロック１０４、及び／又はルーティングリソース１８０）を占有することになるであろう、論理関数演算、リップル算術演算、及び／又は拡張論理関数演算の特定のインスタンスを最適化することを含んでいてもよい。例えば、最適化プロセスは、論理関数演算、リップル算術演算、拡張論理関数演算、及び／又はユーザ設計における対応するルーティングリソースを実装する複数のモード又は構成可能な論理セルを検出すること、様々な動作を実装する論理セルの動作モードを入れ替えて、動作を実装するために使用されるＰＬＤコンポーネント及び／又はルーティングリソースの数を低減すること、及び／又は動作に関連する伝搬遅延を低減すること、及び／又は入れ替えた動作モードを考慮するために対応するＬＵＴ及び／又はモード論理を再プログラミングすることを含み得る。
【００４１】
別の例では、最適化プロセスは、拡張論理関数演算及び／又はユーザ設計における対応するルーティングリソースを検出し、拡張論理演算を単一の物理論理セル出力を有する複数のモード又は変換可能論理セルに実装し、論理セルの第１のセットの論理セル出力を論理セルの第２のセットの入力にルーティング又は結合して、拡張論理演算及び／又はルーティングリソースを実装するために使用されるＰＬＤコンポーネントの数を低減すること、及び／又は拡張論理演算に関連する伝搬遅延を低減すること、及び／又は対応するＬＵＴ及び／又はモード論理をプログラミングして、少なくとも第１及び第２の論理セルのセットを有する拡張論理関数演算を実装することを含むことができる。
【００４２】
別の例では、最適化プロセスは、論理関数演算、リップル算術演算、拡張論理関数演算、及び／又はユーザ設計における対応するルーティングリソースを実装する複数のモード又は構成可能な論理セルを検出し、様々な演算を実装する論理セルの動作モードを入れ替えて、ＰＬＤ内の信号経路に沿ってプログラマブルレジスタを提供し、当該信号経路に関連する伝搬遅延を低減し、対応するＬＵＴ、モード論理、及び／又は他の論理セル制御ビット／レジスタを再プログラミングして、入れ替えられた動作モードを考慮し、及び／又はプログラマブルレジスタをプログラムして、当該信号経路に信号を格納又はラッチすることを含み得る。
【００４３】
動作３３０において、システム１３０は、ユーザ設計を実装するために使用され得るＰＬＤ１００のコンポーネントを識別するマッピングプロセスを実行する。これに関して、システム１３０は、最適化された（例えば、最適化プロセスの結果として動作３２０において格納された）ネットリストを、ＰＬＤ１００によって提供される様々なタイプのコンポーネント（例えば、論理ブロック１０４、論理セル２００、組み込みハードウェア、及び／又はＰＬＤ１００の他の部分）及びそれらに関連する（例えば、配置又はルーティングをまだ指定していない論理的な様式の）信号にマッピングすることができる。いくつかの実施形態において、マッピングは、１つ以上の以前に保存されたＮＧＤファイルに対して実行され得る。マッピング結果は、（例えば、ＮＣＤファイルとも呼ばれる）物理的設計ファイルとして保存される。いくつかの実施形態において、マッピングプロセスは、動作３２０の合成プロセスの一部として実行され、ＰＬＤコンポーネントにマッピングされるネットリストを生成することができる。
【００４４】
動作３４０において、システム１３０は、配置プロセスを実行して、マッピングされたネットリストコンポーネントを、（例えば、特定の論理セル２００、論理ブロック１０４、ルーティングリソース１８０、及び／又はＰＬＤ１００の他の物理コンポーネントに割り当てられる）ＰＬＤ１００の特定の物理的位置に存在する特定の物理的コンポーネントに割り当て、これにより、ＰＬＤ１００のレイアウトを決定する。いくつかの実施形態において、配置は、１つ以上の以前に保存されたＮＣＤファイルに対して実行され得る。配置結果は、別の物理的設計ファイルとして保存される。
【００４５】
動作３５０において、システム１３０は、配置されたコンポーネント間の物理的相互接続を実現するために、動作３４０で決定された配置レイアウトに基づいて、ＰＬＤ１００のコンポーネント間で接続をルーティングする（例えば、ルーティングリソース１８０を使用する）ルーティングプロセスを実行する。いくつかの実施形態において、ルーティングは、１つ以上の以前に保存されたＮＣＤファイルに対して実行され得る。ルーティング結果は、別の物理的設計ファイルとして保存される。
【００４６】
様々な実施形態では、動作３５０における接続のルーティングは、伝搬遅延、ＰＬＤリソース及び／又はルーティングリソースの消費を低減するために、及び／又はユーザ設計を実施するように構成されている場合に、ＰＬＤの性能を最適化するために、ユーザ設計に対して最適化プロセスを実行することをさらに含み得る。いくつかの実施形態において、最適化プロセスは、変換／翻訳されたユーザ設計を表す物理設計ファイルに対して実行され、最適化プロセスは、（例えば、最適化された物理設計ファイルを生成するため）物理設計ファイル内の最適化されたユーザ設計を表すことができる。
【００４７】
いくつかの実施形態において、最適化プロセスは、ＰＬＤがユーザ設計を実装するように構成される場合に複数の構成可能なＰＬＤコンポーネント（例えば、論理セル２００、論理ブロック１０４、及び／又はルーティングリソース１８０）を占有することになるであろう、論理関数演算、リップル算術演算、及び／又は拡張論理関数演算の特定のインスタンスを最適化することを含んでいてもよい。例えば、最適化プロセスは、論理関数演算、リップル算術演算、拡張論理関数演算、及び／又はユーザ設計における対応するルーティングリソースを実装する複数のモード又は構成可能な論理セルを検出すること、様々な動作を実装する論理セルの動作モードを入れ替えて、動作を実装するために使用されるＰＬＤコンポーネント及び／又はルーティングリソースの数を低減すること、及び／又は動作に関連する伝搬遅延を低減すること、及び／又は入れ替えた動作モードを考慮するために対応するＬＵＴ及び／又はモード論理を再プログラミングすることを含み得る。
【００４８】
別の例では、最適化プロセスは、拡張論理関数演算及び／又はユーザ設計における対応するルーティングリソースを検出し、拡張論理演算を単一の物理論理セル出力を有する複数のモード又は変換可能論理セルに実装し、論理セルの第１のセットの論理セル出力を論理セルの第２のセットの入力にルーティング又は結合して、拡張論理演算及び／又はルーティングリソースを実装するために使用されるＰＬＤコンポーネントの数を低減すること、及び／又は拡張論理演算に関連する伝搬遅延を低減すること、及び／又は対応するＬＵＴ及び／又はモード論理をプログラミングして、少なくとも第１及び第２の論理セルのセットを有する拡張論理関数演算を実装することを含むことができる。
【００４９】
別の例では、最適化プロセスは、論理関数演算、リップル算術演算、拡張論理関数演算、及び／又はユーザ設計における対応するルーティングリソースを実装する複数のモード又は構成可能な論理セルを検出し、様々な演算を実装する論理セルの動作モードを入れ替えて、ＰＬＤ内の信号経路に沿ってプログラマブルレジスタを提供し、当該信号経路に関連する伝搬遅延を低減し、対応するＬＵＴ、モード論理、及び／又は他の論理セル制御ビット／レジスタを再プログラミングして、入れ替えられた動作モードを考慮し、及び／又はプログラマブルレジスタをプログラムして、当該信号経路に信号を格納又はラッチすることを含み得る。
【００５０】
ルーティングの変更は、合成、マッピング、および／または配置などの以前の動作に伝播して、ユーザ設計の様々な側面を最適化することができる。
【００５１】
したがって、動作３５０に続いて、（例えば、対応する前の動作の結果を組み合わせることによって）ＰＬＤ１００のために合成（例えば、変換及び最適化）、マッピング、配置、及びルーティング（例えば、さらなる最適化）された後のユーザ設計を指定する１つ以上の物理設計ファイルが提供され得る。動作３６０において、システム１３０は、合成され、マッピングされ、配置され、そしてルーティングされたユーザ設計のための構成データを生成する。様々な実施形態において、そのような構成データは、本明細書でより詳しく説明されるように、そのような生成プロセスの一部として暗号化及び／又は他の方法で保護され得る。動作３７０において、システム１３０は、例えば、接続１４０を介して構成データビットストリーム（例えば、「構成」）をＰＬＤ１００にロードすることによって、構成データを用いてＰＬＤ１００を構成する。そのような構成は、例えば、暗号化された、署名された、又は保護されていない／認証されていない形式で提供され得る。そして、ＰＬＤ１００は、本明細書に記載されるように、保護された構成と保護されていない構成を異なる方法で扱うように構成され得る。
【００５２】
図４は、本開示の一実施形態による、セキュアＰＬＤ４１０のブロック図を例示している。様々な実施形態において、セキュアＰＬＤ４１０は、図１のＰＬＤ１００に関連して説明したものと同様の要素によって実装されてもよいが、本明細書で説明するように、トラステッド・コンピューティングアプリケーション及び／又はアーキテクチャにおけるセキュアＰＬＤ４１０の動作を容易にするように構成された追加の構成可能な、及び／又はハードＩＰ要素によって実装されてもよい。特に、セキュアＰＬＤ４１０は、様々なバスによってセキュリティエンジン４２０にリンクされたＰＬＤファブリック４００、構成エンジン４４０、不揮発性メモリ（ＮＶＭ）４５０、プログラマブルＩ／Ｏ４０４、及び／又は他の集積回路（ＩＣ）モジュール４８０を含んでいてもよく、これらはすべて図示のようにモノリシックＩＣ上に実装される。一般に、ＰＬＤファブリック４００は、ＰＬＤ１００に関して説明された様々な要素のいずれかによって実装することができ、図３に関連して説明されたプロセス３００と同様の設計プロセスを使用して、所望の構成に従ってＰＬＤファブリック４００を生成及びプログラムするように構成され得る。より具体的には、セキュアＰＬＤ４００は、受信された構成に従ってＰＬＤファブリック４００をプログラムする前に、受信された構成を受信、復号化、認証、及び／又は検証するために、図４で識別される様々な識別されたハードＩＰ要素を使用するように構成され得る。
【００５３】
セキュリティエンジン４２０は、ＰＬＤファブリック４００及び／又は構成エンジン４４０によって使用するための様々なセキュリティ機能を提供するように構成されたハードＩＰリソースとして実装され得る。図４に示す実施形態では、セキュリティエンジン４２０は、デバイスＩＤ４２２（例えば、６４ビットの一意かつデバイス固有のＩＤ）、真の乱数発生器４２４、セキュアハッシュアルゴリズム（ＳＨＡ）サービス４２６（例えば、ＳＨＡ２５６、ＳＨＡ−２、及び／またはＳＨＡ−３サービス）、高度暗号化標準（ＡＥＳ）サービス４２８（例えば、ＡＥＳ１２８／２５６暗号化／復号化サービス）、公開鍵／秘密鍵ペア発生器（Ｐ／ＰＫＧ）４３０、楕円曲線デジタル署名アルゴリズム（ＥＣＤＳＡ）認証サービス４３２（例えばＥＣＤＳＡ２５６サービス）、及び／又は他のセキュリティサービス４３４を含む。図４に更に示されるように、セキュリティエンジン４２０は、制限されたバス４０６を介してＰＬＤファブリック４００に、及び、セキュアなバス４４６を介して構成エンジン４４０に通信可能にリンクされ得る。一般に、制限されたバス４０６は、ＰＬＤファブリック４００が、セキュリティエンジン４２０によってホストされたセキュリティ機能の限定されたセットにアクセスすること、及び／又は、セキュリティエンジン４２０によってホストされたセキュリティ機能のいずれか１つ又はすべての設定を禁止する、デバイスＩＤ４２２へのアクセスを禁止する、及び／又はＰ／ＰＫＧ４３０によって生成された公開鍵／秘密鍵ペアの秘密鍵へのアクセスを禁止するなど、限定された方法で、そのようなセキュリティ機能にアクセスすることを可能にするように構成され得る。対照的に、セキュアなバス４４６は、構成エンジン４４０がセキュリティエンジン４２０のすべてのセキュリティ機能、データ、及び／又は構成にアクセス及び／又は変更することを可能にするように構成され得る。一般に、制限されたバス４０６及びセキュアなバス４４６のいずれか又は両方は、セキュリティエンジン４２０とセキュアＰＬＤ４１０の他の要素との間に暗号化及び／又は他の方法で保護された通信を提供するように構成され得る。
【００５４】
構成エンジン４４０は、セキュアＰＬＤ４１０の様々な要素間の構成及び／又は通信を管理するように構成されたハードＩＰリソースとして実装され得る。例えば、構成エンジン４４０は、ＰＬＤファブリック４００の暗号化／保護された構成を外部システム１３０／機械可読媒体１３６から構成Ｉ／Ｏ４４８を介して受信し、セキュリティエンジン４２０のセキュリティ機能を使用してそのような構成を認証及び／又は復号化し、認証及び／又は復号化された構成をＮＶＭ４５０に格納し、格納された構成に対応するＮＶＭ４５０の部分をソフト又はハードロックし、格納された構成を認証及び／又は検証済み起動可能としてタグ付けし、及び／又は、本明細書に記載されるように、認証、復号化、検証及び／又はロックされた構成に従ってＰＬＤファブリック４００をプログラムするように構成することができる。さらなる実施形態において、構成エンジン４４０は、示されるように、構成ポート４４４を介してプログラマブルＩ／Ｏ４０４の少なくとも一部を構成するように（例えば、プログラマブルＩ／Ｏ４０４の少なくとも一部を有効及び／又は無効にするように）構成され得る。
【００５５】
より一般的には、構成エンジン４４０は、セキュアＰＬＤ４１０の要素の構成、セキュアＰＬＤ４１０の要素のロック状態、ＰＬＤファブリック４００の起動、及びセキュアＰＬＤ４１０全体にわたるフロー制御を管理又は制御するように構成され得る。例えば、構成エンジン４４０は、バス４０８、４４２、４４３、４４６などのいずれか１つ又は一部をソフトロック又はロック解除又はハードロックするように、及び／又は、ＮＶＭ４５０のいずれかの部分又はセクタをソフトロック又はロック解除又はハードロックするように構成され得る。デフォルトのロック解除構成では、バス４０８、４４２、及び４４６は、セキュアなバス４４６と機能が類似したセキュアなバスとして実装され得る。構成Ｉ／Ｏ４４８への外部アクセスバス４４３は、ＪＴＡＧ、Ｉ２Ｃ、ＳＰＩ、及び／又は他の外部アクセスバス又はプロトコルのうちの１つ以上に従って実装され得る。例えば、外部システム１３０／機械可読媒体１３６への及び／又は外部システム１３０／機械可読媒体１３６からのロック可能／ロック解除可能なアクセスを提供するように構成され得る。特定の実施形態において、セキュアなバス４０８は、ウィッシュボーンバス／インターフェースに従って実装され得る。
【００５６】
ＮＶＭ４５０は、セキュアＰＬＤ４１０のセキュアな動作を容易にするために使用されるデータのセキュリティ保護可能な不揮発性ストレージを提供するように構成されたハードＩＰリソースとして実装され得る。例えば、ＮＶＭ４５０は、ＮＶＭ４５０に格納されたデータのロック状態を示す、ＮＶＭ４６０内のメモリ位置に対応するロックポリシー４６０を含み得る。ロックポリシー４６０の内容は、構成エンジン４４０内のシャドーレジスタにセキュアＰＬＤ４１０の電源投入時に転送され、例えば、そのような内容が構成エンジン４４０及び／又はＰＬＤファブリック４００によって、ロックポリシー４６０内の設定／ロック状態に応じて動的に修正されることを可能にする。一般に、特定のリソースのロック状態は、ＰＬＤファブリック４００、構成Ｉ／Ｏ４４８／外部アクセスバス４４３、及び／又はセキュアＰＬＤ４１０の他の要素に対して、そのリソースに対する読み出し、書き込み／プログラム、及び／又は消去アクセスを示す。
【００５７】
本明細書に記載するように、「ソフト」ロックとは、ＮＶＭ４５０内のバス／ポート又はメモリ位置の読み出し、書き込み、及び／又は消去アクセスステータスを指し、対応するリソースへの読み出し、書き込み、及び／又は消去アクセスを細分的に許可又は禁止するために、ＰＬＤファブリック４００によって、及び／又は外部アクセスバス４４３を介して、プログラム的にイネーブル又はディセーブルにすることができる。「ハード」ロックとは、ＮＶＭ４５０内のバス／ポート又はメモリ位置の読み出し、書き込み、及び／又は消去アクセスステータスを指し、外部アクセスバス４４３を介してプログラム的に有効にすることができるが、ＰＬＤファブリック４００によってイネーブル又はディセーブルにすることはできず、外部アクセスバス４４３を介して無効にすることはできない。様々な実施形態において、ハードロックのアサートは一般に一方向であり、ＰＬＤファブリック４００及び／又は外部アクセスバス４４３がセキュアＰＬＤ４１０内のすべての保護されているリソースのロックステータスをさらに変更する能力を排除する。いくつかの実施形態では、このようなロックスキームは、各リソース（例えば、ＮＶＭ４５０内のバスポート又はメモリのセクタ）の４つのビット、ハードロックのイネーブル、読み出しロックのイネーブル、書き込みロックのイネーブル、及び消去ロックのイネーブルそれぞれの１つのビットによって実装することができる。
【００５８】
図４によって例示される実施形態に示されるように、ＮＶＭ４５０は、複数の区別されたロック可能なセクタを含み得る。それらのセクタのそれぞれは、それ自身のロック状態を有し得る。このようなロック可能なセクタは、例えば、図示されるように、第１の構成イメージセクタ４５２、第２の構成イメージセクタ４５４、製造業者指定トリムセクタ４５６、デバイスキーセクタ４５８（例えば、ＡＥＳキーセクタおよび別個の公開鍵／鍵ペアセクタ）、ロックポリシーセクタ４６０、ユーザフラッシュメモリ（ＵＦＭ）セクタ４６２、及び／又は他の規定されたセキュリティ保護可能なストレージセクタ４６４のうちの１つ以上を含むことができる。いくつかの実施形態において、ＵＦＭセクタ４６２は、それぞれがそれ自身のロック状態を有し得るサブセクタにさらに区別され得る。ロックポリシーセクタ４６０は、例えば、それ自体のロック状態を含む、ＮＶＭ４５０の各セクタのロックステータスを格納することができる。第１及び第２の構成イメージセクタ４５２、４５４は、それぞれ、例えば、ＰＬＤファブリック４００の構成を格納することができ、さらに、（例えば、バージョン又は日付に基づいて）それらが選択され、認証プロセスを実行することなくＰＬＤファブリックをプログラムするために使用されることができるように、バージョン及び／又は日付によってタグ付けされ、事前認証されることができる。トリムセクタ４５６は、本明細書に記載されるように、例えば、デバイスＩＤ４２２から導出される修正可能な顧客固有の注文部品番号及び生成された顧客ＩＤ番号のような、特定のセキュアＰＬＤ４１０に固有の製造業者トリム及び／又は他のデータを格納するために使用され得る。デバイスキーセクタ４５８は、暗号化／復号化鍵、公開鍵／秘密鍵、及び／又は特定のセキュアＰＬＤ４１０に固有の他のセキュリティキーを格納するために使用され得る。ロックポリシーセクタ４６０は、ＮＶＭ４５０、構成エンジン４４０、構成Ｉ／Ｏ４４８、及び／又はセキュアＰＬＤ４１０の他の要素のリソースに対するロックステータスを格納するように構成することができる。ＵＦＭセクタ４６２は、構成又はアプリケーション固有のセキュリティキー、証明書、及び／又は他のセキュアなユーザデータなど、ＰＬＤファブリック４００によって一般的にアクセス可能なユーザデータを格納するために使用され得る。他の保護可能なストレージセクタ４６４は、他のデバイス固有のセキュアなデータを格納するために使用され得る。ＮＶＭ４５０の任意の１つ以上の個々の要素、部分、又はセクタは、本明細書で記載されるように、例えば構成可能なメモリ、又はワンタイムプログラマブル（ＯＴＰ）メモリとして実装され得る。
【００５９】
プログラマブルＩ／Ｏ４０４は、ＰＬＤファブリック４００と外部コントローラ、メモリ、及び／又は他のデバイスとの間の通信リンク、例えば、バス４０２（例えば、ＰＬＤファブリック４００の一部をプログラマブルＩ／Ｏ４０４にリンクするように構成されたバス）を介した通信リンクを提供又はサポートするように構成された、少なくとも部分的に構成可能なリソースとして実装され得る。いくつかの実施形態において、バス４０２及び／又はプログラマブルＩ／Ｏ４０４は、ＰＬＤファブリック４００と統合され得る。構成Ｉ／Ｏ４４８は、本明細書で記載されるように、外部システム１３０／機械可読媒体１３６との通信をサポートするために、１つ以上の外部バスインターフェース及び／又はプロトコル４４９をサポートするように構成されたハードＩＰリソースとして実装され得る。いくつかの実施形態において、構成Ｉ／Ｏ４４８及び／又はバス４４３は、構成エンジン４４０と統合され得る。より一般的には、図４に別個に示されているセキュアＰＬＤ４１０の１つ以上の要素は、互いに統合されていてもよく、及び／又はその中に組み込まれていてもよい。他のＩＣモジュール４８０は、セキュアＰＬＤ４１０の動作を容易にするように構成されたハード及び／又は構成可能なＩＰリソースとして実装され得る。
【００６０】
図５Ａは、本開示の一実施形態による、セキュアＰＬＤプロビジョニングシステム５００のブロック図を例示している。例えば、プロビジョニングシステム５００の１つ以上の要素は、図７に関連して説明されるプロビジョニングプロセスの少なくとも一部を実行するように構成され得る。図５Ａに示される実施形態において、セキュアＰＬＤプロビジョニングシステム５００は、通信リンク５１２及び通信ネットワーク５１４を介して互いに通信するように構成されたセキュアＰＬＤ顧客５１０及びセキュアＰＬＤ製造業者５２０を含む。一般に、通信リンク５１２は、通信ネットワーク５１４との間のデータ通信をサポートするように構成された１つ以上の有線及び／又は無線通信リンクによって実装され得る。また、通信ネットワーク５１４は、データ通信を一般的にサポートするように構成された１つ以上のローカル及び／又は広域ネットワーク（例えば、インターネットサービスプロバイダ、セルラーネットワーク、及び／又はインターネット）によって実装され得る。セキュアＰＬＤプロビジョニングシステム５００の残りの各要素は、例えば、セキュアＰＬＤ４１０の製造及び配信チェーン内のエンティティを表し、一般に、各々が図１の外部システム１３０に範囲が類似し、通信リンク５１２及び通信ネットワーク５１４を介して通信するように構成されたネットワーク通信デバイスによって実装され得る。様々な実施形態において、セキュアＰＬＤプロビジョニングシステム５００は、セキュアＰＬＤ４１０と同様のセキュアＰＬＤのためのキー及び／又は他のセキュアな通信要素及び／又はメカニズムをプロビジョニングするように構成され得る。
【００６１】
図５Ａに示されるように、セキュアＰＬＤ顧客５１０及びセキュアＰＬＤ製造業者５２０は、プロビジョニングシステム５００内の信頼されたエンティティと考えられ得る。また、プロビジョニングシステム５００の他のすべての要素は、信頼されていないエンティティと考えられ得る。その結果、顧客及び／又は製造業者のソフトウェア及び／又はハードウェアは、一般に、下流の顧客５５０及び／又は任意のセキュアＰＬＤプログラマ５３０及びユーザデバイスアセンブラ５４０による望ましくないアクセス又は操作から保護されるか、又は他の方法で保証され得る。例えば、一般的な動作では、セキュアＰＬＤ顧客５１０は、セキュアＰＬＤ製造業者５２０に１つ以上のセキュアＰＬＤ４１０を要求し、セキュアＰＬＤ４１０のＰＬＤファブリック４００にプログラムされる独自の構成を生成する。セキュアＰＬＤ製造業者５２０は、個々のＩＣを製造し、それらをセキュリティ機構でプログラミングすること（例えば、それらをロックすること）によって１つ以上の要求されたセキュアＰＬＤ４１０を準備し、セキュアＰＬＤ顧客５１０及び／又はセキュアＰＬＤ製造業者５２０によって提供されない構成によるさらなるプログラミングを禁止する。セキュアＰＬＤ顧客５１０は、デバイス固有の暗号化された構成を任意選択のセキュアＰＬＤプログラマ５３０に提供することができる。また、セキュアＰＬＤ製造業者５２０は、ロックされたセキュアＰＬＤ４１０をセキュアＰＬＤプログラマ５３０に提供することができる。その結果、セキュアＰＬＤプログラマ５３０は、ロックされたセキュアＰＬＤ４１０の各々をそのデバイス固有の暗号化された構成でプログラムすることのみ可能となり、デバイス固有の暗号化された構成の暗号化されていない内容を容易に決定することができなくなる。
【００６２】
セキュアＰＬＤプログラマ５３０は、プログラムされかつロックされたセキュアＰＬＤ４１０を任意のユーザデバイスアセンブラ５４０（例えば、マザーボードアセンブラ、スマートフォンアセンブラ、及び／又は他のユーザデバイス／組み込みデバイスアセンブラ／製造業者）に供給することができる。これは、プログラムされかつロックされたセキュアＰＬＤ４１０をユーザデバイスと統合し、統合されたユーザデバイスを下流の顧客５５０に提供するが、セキュアＰＬＤプログラマ５３０及び下流の顧客５５０が、デバイス固有の暗号化構成の暗号化されていない内容を決定したり、ロックされたセキュアＰＬＤを代替の構成で再プログラムしたりすることができなくさせる。次に、セキュアＰＬＤ顧客５１０は、デバイス固有の暗号化構成の暗号化されていない内容を漏らしたり、セキュアＰＬＤ４１０のロックを解除したりすることなく、下流の顧客５５０において対応するユーザデバイス内のプログラム及びロックされたセキュアＰＬＤ４１０を監査することができる。別個のエンティティとして図５Ａに示されているが、セキュアＰＬＤプログラマ５３０及びユーザデバイスアセンブラは、セキュアＰＬＤ顧客５１０、セキュアＰＬＤ製造業者５２０、及び／又は下流の顧客５５０と一緒に組み合わされ、及び／又は個別に統合され得る。
【００６３】
図５Ｂは、本開示の一実施形態による、セキュアＰＬＤプロビジョニングシステム５０２のブロック図を示している。例えば、プロビジョニングシステム５０２の１つ以上の要素は、図７に関連して説明されたプロビジョニングプロセスの少なくとも一部を実行するように構成され得る。一実施形態において、セキュアＰＬＤプロビジョニングシステム５０２は、図５ＡのセキュアＰＬＤ製造業者５２０にほぼ対応し得る。より一般的には、セキュアＰＬＤプロビジョニングシステム５０２と同様の、又はその要素を含むシステムを使用して、図５Ａに示されるセキュアＰＬＤプロビジョニングシステム５００の任意の１つ又は複数の要素を実装することができる。
【００６４】
図５Ｂに示される実施形態において、セキュアＰＬＤプロビジョニングシステム５０２は、セキュアＰＬＤ顧客５１０によって発行された要求に従って、セキュアＰＬＤストック５２４から供給されるいくつかのセキュアＰＬＤ４１０（例えば、ロック解除／ブランクのセキュアＰＬＤ４１０及び／又は別のセキュアＰＬＤ顧客又は要求に再標的化することが予定されている以前にロックされたセキュアＰＬＤ４１０）をロック及び／又は再標的化するように構成されたセキュアＰＬＤロックシステム５２２を含む。セキュアＰＬＤロックシステム５２２によってロックされると、ロックされたセキュアＰＬＤは、本明細書に記載されるように、セキュアＰＬＤ顧客５１０によって提供される構成で、例えばロックシステム５２２によって又はより一般的にはセキュアＰＬＤプログラマ５３０によってプログラムされ得る。様々な実施形態では、セキュアＰＬＤロックシステム５２２は、例えば、セキュアＰＬＤ顧客５１０から、保護されていない通信リンク５１２を介して顧客公開鍵を受け取り、セキュア通信リンク５２７を介して外部システム１３０を制御して、デバイス配信リンク５２５（例えば、外部バスインターフェース４４９を介して外部システム１３０を用いて、セキュアＰＬＤ４２０をＰＬＤストック／ストレージ領域５２４及びセキュアＰＬＤ４１０のインターフェース構成Ｉ／Ｏ４４８から取り出すように構成された機械的及び／又は電子的な配信リンク）を介して提供されるセキュアＰＬＤ４１０をロックするように構成された、強化セキュリティモジュール（ＨＳＭ）５２６を含むことができる。そして、ロックされたセキュアＰＬＤ４１０は、同様のデバイス配信リンク５２８を介してセキュアＰＬＤプログラマ５３０に物理的に配信され得る。ＨＳＭ５２６は、例えば、一般的に外部システム１３０と同様に実装され得るが、外部操作及び／又はＨＳＭ５２６の監視のリスクを排除するための、監視および制限された物理的アクセスを備えた安全な工場の場所に配置される。いくつかの実施形態において、外部システム１３０及びＨＳＭ５２６及び／又はそれらの機能は、単一の外部システム１３０に統合され得る。
【００６５】
一般的な動作において、セキュアＰＬＤ顧客５１０は、（例えば、セキュアＰＬＤ顧客５１０内で、自身のＨＳＭによって生成される）顧客の公開鍵／秘密鍵ペアの顧客の公開鍵を含む、いくつかのロックされたセキュアＰＬＤ４１０の要求をＨＳＭ５２６に提供することができる。ＨＳＭ５２６は、（例えば、プログラミングのためにセキュアＰＬＤ４１０をロックおよびロック解除するなど、ロックされたセキュアＰＬＤ４１０の構成を暗号化、復号化、及び／又は認証するために使用される）顧客固有のプログラミング公開鍵／秘密鍵ペア及びプログラミングシークレット（例えば、提供された構成をさらに認証するための２５６ビットの乱数ワード）を生成し、ブランクの又はロック解除されたセキュアＰＬＤ４１０にロードしてロックするために、プログラミング秘密鍵、プログラミングシークレット、及び工場公開鍵を外部システム１３０に提供することができる。ＨＳＭ５２６は、例えば、工場公開鍵／秘密鍵ペアをローカルで生成するように、及び／又はそのような工場鍵をメモリ１３４から取得するように構成され得る。そのような工場鍵は、工場固有及び／又は顧客固有であり得る。構成エンジン４４０は、（例えば、セキュアＰＬＤ４１０のための製造プロセスに対応する製造バッチ、ウェハ、及びウェハ位置を識別することができる）デバイス固有トレースＩＤ、プログラミング秘密鍵、プログラミングシークレット、工場公開鍵、及びＰＬＤファブリック４００の初期プログラミングイメージ（ＩＰＩ）構成を受信することができる。これらはすべて、セキュアＰＬＤ４１０をロックするために、ＮＶＭ４５０の１つ以上のセクタに格納される。
【００６６】
そして、構成エンジン４４０は、トレースＩＤをＮＶＭ４５０のＭＦＧトリム４５６内及び／又はセキュリティエンジン４２０のデバイスＩＤ４２２内に格納し、（例えば、ＴＲＮＧ４２４によって生成される）乱数を当該トレースＩＤの最後に付加することによってデバイス固有シードを生成してもよい。このようなデバイス固有シードは、ＭＦＧトリム４５６内に格納され、及び／又は（例えば、セキュリティエンジン４２０のＰ／ＰＫＧ４３０によって生成される）デバイス公開鍵／秘密鍵ペアのシード生成に使用され得る。このシードは、ＮＶＭ４５０のデバイスキーセクタ４５８内に格納してもよい。そして、構成エンジン４４０は、得られたデバイス公開鍵及びトレースＩＤを外部システム１３０に提供してもよい。外部システム１３０は、デバイス公開鍵及びトレースＩＤをＨＳＭ５２６に中継して、セキュアＰＬＤ顧客５１０によって要求された各ロックされたセキュアＰＬＤ４１０についてのラインアイテムを含むロックされたＰＬＤマニフェストに追加することができる。各ラインアイテムは、デバイス固有のトレースＩＤ及びデバイス公開鍵を含む。そして、ＨＳＭ５２６は、顧客公開鍵及びプログラミング秘密鍵を使用してプログラミングシークレットを暗号化及び署名することができる。その結果得られる暗号化されたプログラミングパケットは、（例えば、セキュアＰＬＤ４１０のＰＬＤファブリック４００のための暗号化され署名された構成を生成するのを助けるために）プログラミング公開鍵を伴ってセキュアＰＬＤ顧客５１０に提供され得る。セキュアＰＬＤ顧客５１０によって要求されたすべてのロックされたセキュアＰＬＤ４１０のエントリが完了すると、ＨＳＭ５２６は、プログラミング秘密鍵を使用してロックされたＰＬＤマニフェストに署名し、その署名済みのロックされたＰＬＤマニフェストをセキュアＰＬＤ顧客５１０に提供することができ、その後、ロックされたＰＬＤマニフェスト、プログラミングシークレット、及びプログラミング公開鍵を使用して、本明細書に記載されるように、セキュアＰＬＤプログラマ５３０によるロックされたセキュアＰＬＤ４１０のプログラミングを管理することができる。
【００６７】
いくつかの実施形態において、ＨＳＭ５２６は、特定のセキュアＰＬＤ顧客５１０及び／又はセキュアＰＬＤ顧客５１０から受信したロックされたセキュアＰＬＤ４１０に対する特定の要求に対応する顧客プログラミングキートークンを生成するように構成され得る。そのような顧客プログラミングキートークンは、セキュアＰＬＤ顧客５１０に関して格納されたすべての情報及び／又はセキュアＰＬＤ顧客５１０から受信したロックされたセキュアＰＬＤ４１０の要求を（例えば、ＨＳＭ５２６に格納された顧客データベース内で）参照するために使用され得る。そのような格納情報は、プログラミング公開鍵／秘密鍵ペア、プログラミングシークレット、工場公開鍵／秘密鍵ペア、ロックされたＰＬＤマニフェスト、及び／又はセキュアＰＬＤプロビジョニングシステム５０２及び／又は５００の動作に関連付けられた他の情報又は情報のサブセットを含み得る。ＰＬＤストック５２４がリターゲティングのために予定された１つ以上の以前にロックされたセキュアＰＬＤ４１０（例えば、別のセキュアＰＬＤ顧客へのロック、又は別のセキュアＰＬＤ要求）を含む実施形態では、ＨＳＭ５２６は、以前の顧客プログラミングキートークンを使用して、当該ロックされたセキュアＰＬＤをロックするために使用される情報を検索し、以前の工場秘密鍵を使用して署名されたセキュアＰＬＤ４１０に新しい情報を（例えば、外部システム１３０を介して）提供し、セキュアＰＬＤ４１０に（例えば、セキュアＰＬＤ４１０によって実行される）リターゲティングコマンドを提供するように構成することができる。ここで、リターゲティングコマンドは、ＮＶＭ４５０に格納された以前の工場公開鍵で新しい情報を認証して当該ＮＶＭ４５０に格納された以前の情報（例えば、デバイス公開鍵／秘密鍵ペア、プログラミング秘密鍵、プログラミングシークレット、工場公開鍵、及び／又はＩＰＩ）を対応する新しい又は更新された情報で置き換えるために、ＰＬＤファブリック４００及び／又は構成エンジン４４０によって実行される。
【００６８】
図６は、本開示の一実施形態による、セキュアＰＬＤ４１０を含むユーザデバイス６１０のブロック図を例示している。一実施形態において、セキュアＰＬＤ４１０は、ユーザデバイス６１０（例えば、マザーボード、スマートフォン、及び／又は他のユーザ／組み込みデバイス）にセキュアブートメカニズムを提供するように構成され得る。例えば、ユーザデバイス６１０の電源投入時に、セキュアＰＬＤ４１０は、セキュリティエンジン４２０のＰ／ＰＫＧ４３０を使用して一時的な公開鍵／秘密鍵ペアを生成し、当該一時的な公開鍵及びコントローラブートローダ６６２（例えば、ＮＶＭ４５０のＵＦＭ４６２に事前認証及び／又は格納され得る）を、バス６０４（例えば、プログラマブルＩ／Ｏ４０４によってサポートされるバス）を介してコントローラ６２０に提供するように構成され得る。コントローラ６２０の実行エンジン６２４は、コントローラブートローダ６６２をセキュアＰＬＤ４１０から受信したときに実行するように構成されてもよく、この場合、実行エンジン６２４は、（例えば、揮発性メモリ（ＶＭ）６１２の電源投入状態から導出された電源投入ＲＡＭ値を使用して）一時セッションキーを生成し、セキュアＰＬＤ４１０及び暗号ソルトによって提供される一時公開鍵を使用して一時セッションキーを暗号化し、その結果得られる第１の暗号化パッケージをセキュアＰＬＤ４１０にバス６０４を介して提供するように構成され得る。
【００６９】
セキュアＰＬＤ４１０は、（例えば、一時秘密鍵を使用して）コントローラ６２０によって提供される第１の暗号化されたパッケージから一時セッションキーを抽出し、当該セッションキーを使用してコントローラアプリケーションイメージ復号器６６３を暗号化し、得られた第２の暗号化されたパッケージをコントローラ６２０にバス６０４を介して提供するように構成され得る。コントローラ６２０の実行エンジン６２４は、セキュアＰＬＤ４１０から第２の暗号化されたパッケージを受信すると、当該第２の暗号化されたパッケージからコントローラアプリケーションイメージ復号器６６３を抽出するように構成されてもよく、実行エンジン６２４は、（例えば、バス６０２及び６０４を介して）ＮＶＭ６３０に格納されたコントローラアプリケーションイメージ６３２を検索、認証及び復号化し、認証及び復号化されたコントローラアプリケーションイメージ６３２をＶＭ６２２に格納し、認証及び復号化されたコントローラアプリケーションイメージ６３２を実行するように構成されてもよい。さらに、セキュアＰＬＤ４１０及びコントローラ６２０は、保護された通信経路を互いに登録するように構成され得る。
【００７０】
別の実施形態において、セキュアＰＬＤ４１０は、コントローラ６２０を使用して、セキュアＰＬＤ４１０のＰＬＤファブリック４００をプログラムするために使用される構成を検証するように構成され得る。例えば、セキュアＰＬＤ４１０は、セキュリティエンジン４２０のＰ／ＰＫＧ４３０を使用して一時的な公開鍵／秘密鍵ペアを生成し、一時的な公開鍵をコントローラ６２０に提供するように構成され得る。コントローラ６２０の実行エンジン６２４は、一時セッションキーを生成し、セキュアＰＬＤ４１０によって提供される一時公開鍵及び暗号ソルトを使用して一時セッションキーを暗号化し、その結果得られる第３の暗号化されたパッケージをセキュアＰＬＤ４１０にバス６０４を介して提供するように構成され得る。コントローラ６２０はまた、例えば、セキュアＰＬＤ４１０のＮＶＭ４５０に格納された１つ以上の構成イメージから識別データを抽出する要求を暗号化するために当該セッションキーを使用し、その結果得られる第４の暗号化されたパッケージをセキュアＰＬＤ４１０にバス６０４を介して送信するように構成され得る。
【００７１】
セキュアＰＬＤ４１０は、コントローラ６２０によって提供される第３の暗号化されたパッケージから一時セッションキーを抽出し、当該一時セッションキーを使用して第四の暗号化されたパッケージから要求を抽出し、要求された識別データをセキュアＰＬＤ４１０のＮＶＭ４５０内に格納された１つ以上の構成イメージから抽出し、一時セッションキーを使用して当該要求された識別データを暗号化し、結果として得られる第５の暗号化されたパッケージをコントローラ６２０にバス６０４を介して提供するように構成することができる。受信時に、コントローラ６２０は、ＮＶＭ４５０に格納された１つ以上の構成イメージのバージョン、リリース日、及び／又は他の特性を、ユーザデバイス６１０に（例えば、ＮＶＭ６３０又はＶＭ６２２に）存在する及び／又はネットワーク（例えば、ネットワークインターフェースデバイスを含み得る他のユーザデバイスモジュール６８０を介してアクセスされる通信ネットワーク５１４）を介してアクセス可能な若しくは当該ネットワークから取得される、そのような特性のデータベースと比較することによって、検証するように構成され得る。さらなる代替の実施形態において、セキュアＰＬＤ４１０は、コントローラ６２０の代わりに、ユーザデバイス６００の動作を制御するために使用され得る。
【００７２】
図７は、本開示の一実施形態による、ロックされたセキュアＰＬＤのプロビジョニングプロセスを例示している。いくつかの実施形態において、図７の動作は、図１から図６に示される対応する電子デバイス、モジュール、及び／又は構造に関連付けられた１つ以上の論理デバイスによって実行されるソフトウェア命令として実装され得る。より一般的には、図７の動作は、ソフトウェア命令及び／又は電子ハードウェア（例えば、インダクタ、キャパシタ、増幅器、アクチュエータ、又は他のアナログ及び／又はデジタルコンポーネント）の任意の組み合わせで実装され得る。プロセス７００の任意のステップ、サブステップ、サブプロセス、又はブロックは、図７に示される実施形態とは異なる順序又は配置で実施されてもよいことを理解されたい。例えば、他の実施形態において、１つ以上のブロックをプロセス７００から省略することができ、他のブロックを含めることができる。さらに、ブロック入力、ブロック出力、様々なセンサ信号、センサ情報、キャリブレーションパラメータ、及び／又は他の動作パラメータは、プロセス７００の次の部分に移動する前に、１つ以上のメモリに格納され得る。プロセス７００は、図１〜図７のシステム、装置、及び要素を参照して説明されているが、プロセス７００は、他のシステム、デバイス、及び要素によって実行されてもよく、また、電子システム、デバイス、要素、アセンブリ、及び／又は配置の異なる選択を含んでいてもよい。プロセス７００の開始時に、様々なシステムパラメータは、例えば、プロセス７００に類似したプロセスの事前の実行によって移入されてもよく、又は本明細書に記載されているように、プロセス７００の過去の動作から導出された典型的な、格納された、及び／又は学習された値に対応する、０及び／又は１つ以上の値に初期化されてもよい。
【００７３】
ブロック７１０において、論理デバイスは、ロックされたＰＬＤの要求を受信する。例えば、セキュアＰＬＤ製造業者５２０のネットワーク通信デバイス（例えば、外部システム１３０、ＨＳＭ５２６）は、セキュアＰＬＤ顧客５１０のネットワーク通信デバイス（例えば、外部システム１３０、ＨＳＭ５２６）からロックされたセキュアＰＬＤ４１０の要求を受信するように構成され得る。このような要求は、例えば、通信リンク５１２を介して、及び／又は通信ネットワーク５１４を介して送信することができ、要求されるデバイスの数、及び特定の所望のセキュアＰＬＤ４１０に関連付けられた任意の特定のモデル又は他の識別情報と共に、対応する顧客公開鍵／秘密鍵ペアの顧客公開鍵を含むことができる。
【００７４】
ブロック７２０において、論理デバイスは、ロックされたＰＬＤを生成する。例えば、セキュアＰＬＤ製造業者５２０は、ロックされたセキュアＰＬＤ４１０を生成するように構成され得る。いくつかの実施形態において、セキュアＰＬＤ製造業者５２０は、ＩＣ製造システムを使用して、例えば、セキュリティエンジン４２０及び／又はＮＶＭ４５０のＭＦＧトリム４５６にデバイスＩＤ４２２をプログラミング又は格納又は他の方法で埋め込むことを含み得るセキュアＰＬＤ４１０を製造することができる。セキュアＰＬＤ製造業者５２０はまた、本明細書に記載されるように、外部システム１３０を使用して、セキュアＰＬＤ４１０をロックすることができる。一実施形態では、セキュアＰＬＤ製造業者５２０のセキュアＰＬＤロックシステム５２２は、顧客ＩＤをセキュアＰＬＤ顧客５１０に割り当てるように、及び／又はブロック７１０で受信した要求を割り当てるように構成することができ、次いで、デバイスＩＤ４２２及び／又は（例えば、製造時に生成される）デバイス発注部品番号と組み合わせて、ＨＳＭ５２６に格納された暗号化されていないデータベースなどにおいて、セキュアＰＬＤ４１０を参照又は識別するために使用することができる顧客固有の発注部品番号を提供するように構成することができる。
【００７５】
ＨＳＭ５２６はまた、対応するランダムかつ一意の顧客プログラミングキートークン及び／又は顧客固有の注文部品番号を生成し、そのようなトークン又は番号に参照されるロックされたセキュアＰＬＤの生成に関連する全ての格納された情報を参照することによって、ブロック７１０で受信された要求におけるセキュアＰＬＤ顧客５１０及び／又は顧客公開鍵に対応する顧客プログラミングキートークンを生成するように構成され得る。ＨＳＭ５２６はまた、プログラミング公開鍵／秘密鍵ペア及びプログラミングシークレットを生成するように構成されてもよく、これらはすべて、セキュアＰＬＤ顧客５１０及び／又はブロック７１０で受信された要求に固有であり、これらはすべてＨＳＭ５２６に格納され得る。ＨＳＭ５２６はさらに、セキュアＰＬＤ製造業者５２０、セキュアＰＬＤ顧客５１０、及び／又はブロック７１０で受信された要求に固有となり得る、工場公開鍵／秘密鍵ペアを生成するように構成されてもよく、これもＨＳＭ５２６に格納され得る。
【００７６】
ＨＳＭ５２６は、例えば、セキュアＰＬＤ４１０のプログラミング／ロックのために、工場公開鍵、プログラミング秘密鍵、及びプログラミングシークレットを外部システム１３０に提供し、その代わりにデバイス固有のトレースＩＤ及びデバイス公開鍵を受信するように構成され得る。ＨＳＭ５２６はまた、顧客公開鍵及びプログラミング秘密鍵を使用してプログラミングシークレットを暗号化及び署名するように構成されてもよく、結果として生じる暗号化されたプログラミングパケットは、（例えば、セキュアＰＬＤ顧客５１０がセキュアＰＬＤ４１０のＰＬＤファブリック４００のために暗号化および署名された構成を生成するのを助けるために）プログラミング公開鍵を伴ってセキュアＰＬＤ顧客５１０に提供されてもよい。セキュアＰＬＤ４１０は、セキュリティエンジン４２０のＴＲＮＧ４２４を使用して、ＭＦＧトリム４５６及び／又はデバイスＩＤ４２２に格納されたトレースＩＤに基づいてデバイス固有シードを生成し、当該デバイス固有シード及び／又はセキュリティエンジン４２０のＰ／ＰＫＧ４３０を使用して、すべてセキュアＰＬＤ４１０に固有のデバイス公開鍵／秘密鍵ペアを生成し、そのすべてを（例えば、プログラミング秘密鍵、プログラミングシークレット、工場公開鍵、及び／又は外部システム１３０及び／又はＨＳＭ５２６によって提供されるＩＰＩ構成と共に）ＮＶＭ４５０に格納するように構成することができる。
【００７７】
別の実施形態において、ＨＳＭ５２６は、顧客プログラミングキートークンを使用して、セキュアな状態で格納されたデータベースからプログラミング秘密鍵、プログラミングシークレット、及びデバイス公開鍵を取得し、それらを外部システム１３０に提供するように構成され得る。そして、外部システム１３０は、プログラミング秘密鍵、プログラミングシークレット、及び／又はデバイス公開鍵を使用して、セキュアＰＬＤ４１０にＩＰＩ構成を提供し、ＰＬＤファブリック４００をそのＩＰＩを用いてプログラムするように構成され得る。このプログラミングは、保護されていない書き込み操作を構成する可能性があり、したがって、セキュアな環境（例えば、セキュアなＰＬＤ製造業者５２０内で完全に行うなど）を必要とする可能性がある。さらなる実施形態では、ＨＳＭ５２６は、外部システム１３０から、セキュアＰＬＤ４１０に対応するトレースＩＤ及び対応するデバイス公開鍵を含むロックされたＰＬＤマニフェストエントリを受信し、ブロック７１０で受信した要求に対応する完全なロックされたＰＬＤマニフェストを生成し、当該ロックされたＰＬＤマニフェストにプログラミング秘密鍵で署名し、当該署名済みのロックされたＰＬＤマニフェストをセキュアＰＬＤ顧客５１０に提供するように構成することができる。
【００７８】
追加の実施形態において、既にプログラムおよびロックされたセキュアＰＬＤを異なる顧客又はアプリケーションに（例えば、異なるプログラミングキーペア、プログラミングシークレット、及び公開デバイスキーを使用して）再ターゲットすることが有用であり得る。通常、既にプログラムされたＩＰＩは再プログラムする必要はない（例えば、ＰＬＤファブリック４００に対して同じＩＰＩ構成を使用することができる）。例えば、ＨＳＭ５２６は、顧客プログラミングキートークン及び／又はトレースＩＤを使用して、セキュアＰＬＤ４１０をロックするために使用される以前の情報（例えば、ＨＳＭ５２６に格納された元のプログラミング秘密鍵、プログラミングシークレット、及びデバイス公開鍵）を検索するように構成され得る。そして、ＨＳＭ５２６は、外部システム１３０を使用して、以前の工場秘密鍵を使用して署名されたセキュアＰＬＤ４１０に新しい情報を提供し、セキュアＰＬＤ４１０に（例えば、セキュアＰＬＤ４１０によって実行される）リターゲティングコマンドを提供するように構成されてもよい。ここで、リターゲティングコマンドは、ＰＬＤファブリック４００及び／又は構成エンジン４４０によって実行されて、ＮＶＭ４５０に格納された以前の工場公開鍵で新しい情報を認証し、ＮＶＭ４５０に格納された以前の情報（例えば、デバイス公開鍵／秘密鍵ペア、プログラミング秘密鍵、プログラミングシークレット、工場公開鍵、及び／又はＩＰＩ）を、本明細書に記載されるように、対応する新しい又は更新された又はリターゲットされた情報で置き換えることができる。
【００７９】
ブロック７３０において、論理デバイスは、ロックされたＰＬＤのためのセキュアロック解除パッケージを提供する。例えば、セキュアＰＬＤ製造業者５２０のＨＳＭ５２６は、ブロック７２０で生成されたロックされたセキュアＰＬＤ４１０のためのセキュアロック解除パッケージをセキュアＰＬＤ顧客５１０に提供するように構成され得る。一実施形態において、ＨＳＭ５２６は、暗号化されたプログラミングパケット、プログラミング公開鍵、及び／又はブロック７２０で生成された顧客プログラミングキートークンをセキュアＰＬＤ顧客５１０に提供するように構成され得る。そのような情報は、ブロック７２０にロックされているように、セキュアＰＬＤ顧客５１０によってセキュアＰＬＤ４１０の保護された構成を生成するために使用され得る。
【００８０】
ブロック７４０において、論理デバイスは、ロックされたＰＬＤを識別する認証可能なマニフェストを提供する。例えば、セキュアＰＬＤ製造業者５２０は、ブロック７２０で生成されたロックされたセキュアＰＬＤ４１０を識別する認証可能なロックされたＰＬＤマニフェストを提供するように構成され得る。一実施形態では、ＨＳＭ５２６は、トレースＩＤ及びデバイス公開鍵のマニフェスト（例えば、トレースＩＤによって参照されるデバイス公開鍵のマニフェスト）を生成し、ブロック７２０で生成されたプログラミング秘密鍵を使用してロックされたＰＬＤマニフェストに署名し、署名済みのロックされたＰＬＤマニフェストをセキュアＰＬＤ顧客５１０に提供するように構成されてもよい。そのような情報は、セキュアＰＬＤ顧客５１０によって、展開及び／又はロックされたセキュアＰＬＤ４１０の選択を監査するために使用され得る。
【００８１】
ブロック７５０において、論理デバイスは、ロックされたＰＬＤのための保護された構成を生成する。例えば、セキュアＰＬＤ顧客５１０の外部システム１３０は、ブロック７２０で生成されたロックされたセキュアＰＬＤ４１０の保護された構成を生成するように構成され得る。一実施形態において、外部システム１３０は、図３を参照して説明したプロセス３００と同様のプロセスを使用して、セキュアＰＬＤ４１０のＰＬＤファブリック４００の保護されていない構成を生成するように構成され得る。このような構成は、例えば、ＰＬＤファブリック４００に主にロードされ構成されるアプリケーションビットストリーム／構成と、ロックポリシーセクタ４６０、ＵＦＭセクタ４６２、及び／又は他の規定されたセキュリティ保護可能なストレージセクタ４６４に主にロードされ構成されるフィーチャビットストリーム／構成とを含み得る。そのような機能ビットストリーム／構成は、本明細書に記載のプロセスのいずれかを実装するために構成エンジン４４０によって実装及び／又は他の方法で使用され得るセキュリティ鍵、機能、及び／又は他の機能を含み得る。
【００８２】
様々な実施形態では、外部システム１３０及び／又はセキュアＰＬＤ顧客５１０のＨＳＭ５２６は、アプリケーション公開鍵／秘密鍵ペア、アプリケーション暗号化鍵（ＡＥＳ暗号化鍵など）、及びプログラミングパケット公開鍵／秘密鍵ペアを生成するように構成することができる。外部システム１３０は、アプリケーション秘密鍵を使用してアプリケーション及び機能構成に署名し、署名されたアプリケーション及び機能構成をアプリケーション暗号化鍵を使用して暗号化するように構成され得る。外部システム１３０はまた、（例えば、ブロック７３０で提供されるセキュアロック解除パッケージの暗号化されたプログラミングパケットから抽出される）アプリケーション公開鍵、アプリケーション暗号化鍵、及びプログラミング秘密の組み合わせ／リストにアプリケーション秘密鍵で署名し、（例えば、楕円曲線Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ鍵導出関数を使用して）プログラミング公開鍵及びプログラミングパケット秘密鍵に基づいて暗号化鍵を導出し、導出された暗号化鍵を使用して署名された鍵の組み合わせを暗号化し、暗号化及び署名された鍵の組み合わせをプログラミングパケット公開鍵と組み合わせて（例えば、暗号化及び署名された鍵の組み合わせにプログラミングパケット公開鍵を付加して）プログラミングキーダイジェストを作成することによって、プログラミングキーダイジェストを生成するように構成され得る。外部システム１３０はまた、（例えば、ブロック７４０で受信される）ロックされたＰＬＤマニフェストに、下流のセキュアＰＬＤプログラマ５３０、ユーザデバイスアセンブラ５４０、及び／又は下流の顧客５５０への認証された配信のためのパケット秘密鍵で署名するように構成され得る。外部システム１３０は、暗号化されたアプリケーション及び機能構成をプログラミングキーダイジェストと組み合わせて単一の保護された情報パケットを作成することによって、セキュアＰＬＤ４１０のための保護された構成を生成するように構成され得る。
【００８３】
ブロック７６０において、論理デバイスは、ロックされたＰＬＤを構成プログラマに提供する。例えば、セキュアＰＬＤ製造業者５２０は、本明細書で記載されるように、ブロック７２０で生成されたロックされたセキュアＰＬＤ４１０を、セキュアＰＬＤプログラマ５３０に提供するように構成され得る。
【００８４】
ブロック７７０において、論理デバイスは、保護された構成に従って、ロックされたＰＬＤをプログラムする。例えば、セキュアＰＬＤプログラマ５３０の外部デバイス１３０は、ブロック７５０で生成され、セキュアＰＬＤ顧客５１０によって提供される保護された構成に従って、ブロック７２０で生成されたロックされたセキュアＰＬＤ４１０をプログラムするように構成され得る。一実施形態において、セキュアＰＬＤプログラマ５３０の外部システム１３０は、ブロック７５０で生成された保護された構成／パケットをセキュアＰＬＤ４１０に提供するように構成されてもよく、ブロック７２０でセキュアＰＬＤ４１０に提供されたＩＰＩに従って起動するように構成され得る。そして、セキュアＰＬＤ４１０は、セキュアＰＬＤ４１０の１つ以上のバスを介して、ＰＬＤファブリック４００及びＮＶＭ４５０の一部を含む、セキュアＰＬＤ４１０の保護された構成及びプログラム要素を検証することができる。より具体的には、セキュアＰＬＤ４１０は、ブロック７２０においてＮＶＭ４５０に格納されたプログラミング秘密鍵及びブロック７５０において生成されたパケット公開鍵を使用して、プログラミングキーダイジェスト内の暗号化された鍵を復号化するように構成され得る。セキュアＰＬＤ４１０はまた、復号化されたキーダイジェストをアプリケーション公開鍵で認証し、プログラミングキーダイジェスト内のプログラミングシークレットがブロック７２０においてＮＶＭ４５０に格納されたプログラミングシークレットと一致することを検証するように構成され得る。両方のチェックに合格した場合、セキュアＰＬＤ４１０は、キーダイジェストからのアプリケーション公開鍵及びアプリケーション暗号化鍵をＮＶＭ４５０に格納することができる。
【００８５】
キーダイジェストからのアプリケーション公開鍵及びアプリケーション暗号化鍵がＮＶＭ４５０に格納されると、セキュアＰＬＤ４１０は、アプリケーション及び機能構成を復号化し、復号化されたアプリケーション及び機能構成を認証することができる。例えば、アプリケーションと機能構成は、ビットストリームがアプリケーション暗号化鍵とアプリケーション公開鍵とを使用して正常に復号化及び認証された場合にのみ、セキュアＰＬＤ４１０にプログラムできる。アプリケーション構成が正常に認証される場合、セキュアＰＬＤ４１０は、当該アプリケーション構成を構成イメージセクタ４５２又は４５４のいずれかにプログラム／格納し、適切なイメージに事前認証ビットを設定し、ＰＬＤファブリック４００からＩＰＩを消去し、及び／又は格納されたアプリケーション構成に従ってＰＬＤファブリック４００をプログラムするように構成され得る。機能構成は、ＮＶＭ４５０の１つ以上の部分にプログラムすることができる。セキュアＰＬＤ４１０をプログラミングする前に実行されるべき他のセキュリティチェックは、本明細書に記載されるように、ロックされたＰＬＤマニフェストの検証、ロックされたＰＬＤマニフェスト内のトレースＩＤマッチングのチェック、及び／又は他のセキュリティチェックを含み得る。
【００８６】
ブロック７８０において、論理デバイスは、ロック及びプログラムされたＰＬＤを含むユーザデバイスを組み立てる。例えば、ユーザデバイスアセンブラ５４０のピックアンドプレースシステムは、ブロック７２０で生成され、かつ、ブロック７７０でプログラムされたロックされたセキュアＰＬＤ４１０を含むユーザデバイス６１０を組み立てるように構成され得る。
【００８７】
ブロック７９０において、論理デバイスは、認証可能なマニフェストに基づいて、ロック及びプログラムされたＰＬＤを監査する。例えば、セキュアＰＬＤ顧客５１０は、ブロック７２０で生成され、かつ、ブロック７４０で提供される認証可能なロックされたＰＬＤマニフェストに基づいてブロック７７０でプログラムされる、ロックされたセキュアＰＬＤを監査するように構成され得る。一実施形態では、セキュアＰＬＤ顧客５１０又は下流顧客５５０の外部システム１３０は、ブロック７４０においてセキュアＰＬＤ製造業者５２０又はセキュアＰＬＤ顧客５１０により提供されたロックされたＰＬＤマニフェストを認証し、そのトレースＩＤ及び／又はデバイス公開鍵についてセキュアＰＬＤ４１０を照会し、例えば、デバイス公開鍵を使用して乱数を暗号化すること、その結果得られる暗号化されたパッケージをデバイスキーチャレンジにおいてセキュアＰＬＤ４１０に提供すること、および、返された結果を元の乱数と比較する（例えば、マッチング結果が、動作中のセキュアＰＬＤ４１０の監査が成功したことを示す）ことなどによって、ロックされたＰＬＤマニフェスト内のトレースＩＤ及びデバイス公開鍵と比較し、デバイス公開鍵を使用してセキュアＰＬＤ４１０にチャレンジするように構成され得る。そのような監査は、いくつかの実施形態において、ブロック７７０内のＩＰＩ構成を消去する前に行われ得る。監査の成功は、ロックされたセキュアＰＬＤ４１０が機能していることを示す。
【００８８】
このように、本明細書に記載のシステム及び方法を採用することにより、本開示の実施形態は、セキュアＰＬＤの顧客の注文全体にわたってセキュアＰＬＤの柔軟かつセキュアなキープロビジョニング及び構成を提供することができる。ある顧客の保護された構成は、別の顧客にパーソナライズされたセキュアＰＬＤ又はブランクのセキュアＰＬＤをプログラムするために使用できない。保護された構成は、システム内又は外部デバイスを使用してプログラムできる。アプリケーションのキーは、セキュアＰＬＤ内でのみ復号化できる。顧客は、デバイス及び／またはアプリケーションのなりすましや過剰な構築を防ぐために、キーマニフェストを使用できる。様々な実施形態において、プログラミングキー及びマニフェストは、セキュアＰＬＤ４１０のセキュリティエンジン４２０によって管理される。
【００８９】
本開示によって提供される様々な実施形態は、適用可能な場合、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組み合わせを使用して実装することができる。また、本明細書に記載の様々なハードウェアコンポーネント及び／又はソフトウェアコンポーネントは、適用可能な場合、本開示の趣旨から逸脱することなく、ソフトウェア、ハードウェア、及び／又は両方を含む複合コンポーネントに組み合わせることができる。本明細書に記載の様々なハードウェアコンポーネント及び／又はソフトウェアコンポーネントは、適用可能な場合、本開示の趣旨から逸脱することなく、ソフトウェア、ハードウェア、又はその両方を含むサブコンポーネントに分離することができる。さらに、適用可能な場合、ソフトウェアコンポーネントをハードウェアコンポーネントとして実装することができ、その逆も可能であると考えられる。
【００９０】
非一時的な命令、プログラムコード、及び／又はデータなどの本開示によるソフトウェアは、１つ以上の非一時的な機械可読媒体に格納することができる。本明細書で識別されるソフトウェアは、１つ以上の汎用又は特定目的のコンピュータ及び／又はコンピュータシステム、ネットワーク化された及び／又は他の方法を使用して実装できることも企図される。適用可能な場合、本明細書に記載の様々なステップの順序を変更し、複合ステップに組み合わせ、及び／又はサブステップに分離して、本明細書に記載の特徴を提供することができる。
【００９１】
上記の実施形態は、本発明を例示するが、限定するものではない。本発明の原理に従って、多数の修正及び変形が可能であることも理解されたい。したがって、本発明の範囲は、以下の特許請求の範囲によってのみ定義される。
【図１】
2021528793.tif 000003
【図２】
2021528793.tif 000004
【図３】
2021528793.tif 000005
【図４】
2021528793.tif 000006
【図５Ａ】
2021528793.tif 000007
【図５Ｂ】
2021528793.tif 000008
【図６】
2021528793.tif 000009
【図７】
2021528793.tif 000010
【国際調査報告】
2021528793.tif 000011
2021528793.tif 000012