(57)【要約】  説明する例では暗号コプロセッサ（１５）を有する埋込みプロセッサが暗号動作のためスレッド間セキュリティを用いマルチスレッド環境で動作する。コプロセッサによりアクセスされ得るセキュアメモリブロック（１６）が複数のキーエントリ（２５ｘ）をストアし各キーエントリは暗号キーに対応するデータと実行スレッドがキーに関連するのを識別するスレッド所有者フィールドとをストアする。中央処理ユニット（１２）が、用いられるキーに対するキー識別子とカレント実行スレッドを示すスレッド識別子と共に暗号動作を実行するためコールをコプロセッサに発行する。コプロセッサは中央処理ユニットから受取ったスレッド識別子をキー識別子に対応するキーエントリのスレッド所有者フィールドと比較する。スレッド識別子がキーエントリのスレッド所有者にマッチする場合、キーは暗号動作のためコプロセッサによる使用のためセキュアメモリブロックから検索される。
2019532559.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
中央処理ユニット、
前記中央処理ユニットに結合される第１のバス、
複数のキーエントリをストアするためのセキュアメモリであって、各キーエントリが、キー識別子に関連付けられ、スレッド所有者フィールドと、暗号キーに対応するキーデータとを含む、前記セキュアメモリ、及び
前記第１のバスを介して前記中央処理ユニットに結合され、且つ前記セキュアメモリに結合されるコプロセッサであって、複数の動作を実行するように適合されるロジック回路要素を含む、前記コプロセッサ、
を含み、
前記複数の動作が、
前記中央処理ユニットによって実行されているカレントスレッドに対するスレッド識別子値との組み合わせで、前記中央処理ユニットから前記第１のバスを介してコマンド及びキー識別子値を受け取ることに応答して、前記キー識別子値に対応する前記セキュアメモリにおけるキーエントリにアクセスすること、及び
前記アクセスされたキーエントリにおける前記スレッド所有者フィールドにマッチする前記スレッド識別子値に応答して、前記アクセスされたキーエントリに関連付けられる前記キーデータを用いて前記受け取ったコマンドに対応する暗号動作を実行すること、
を含む、
プロセッサ。
【請求項２】
請求項１に記載のプロセッサであって、前記中央処理ユニットを前記コプロセッサに結合するサイドバンド通信経路を更に含み、前記コプロセッサが、前記サイドバンド通信経路を介して前記中央処理ユニットから前記スレッド識別子値を受け取る、プロセッサ。
【請求項３】
請求項２に記載のプロセッサであって、前記中央処理ユニットが、
プログラマブルロジック、及び
前記プログラマブルロジックによって実行されている前記カレントスレッドを示す前記スレッド識別子値をストアするためのスレッドＩＤレジスタ、
を含む、プロセッサ。
【請求項４】
請求項１に記載のプロセッサであって、前記コプロセッサが、前記中央処理ユニットによって実行されている前記カレントスレッドを示す前記スレッド識別子値をストアするためのスレッドＩＤレジスタを更に含み、前記中央処理ユニットが、前記スレッド識別子値を第１のバスを介して前記コプロセッサに通信する、プロセッサ。
【請求項５】
請求項１に記載のプロセッサであって、前記セキュアメモリが、前記第１のバスを介して前記コプロセッサに結合され、前記セキュアメモリが、前記セキュアメモリへのアクセスを制限するファイアウォール機能を更に含み、前記ファイアウォール機能を介して前記コプロセッサが前記セキュアメモリに結合される、プロセッサ。
【請求項６】
請求項１に記載のプロセッサであって、前記コプロセッサを前記セキュアメモリに結合する第２のバスを更に含む、プロセッサ。
【請求項７】
請求項１に記載のプロセッサであって、前記中央処理ユニットと、前記セキュアメモリと、前記コプロセッサとが、単一の集積回路において実現される、プロセッサ。
【請求項８】
請求項１に記載のプロセッサであって、各キーエントリにストアされた前記キーデータが、前記セキュアメモリにおけるメモリアドレスを含み、前記セキュアメモリがまた、複数の暗号キーを、前記複数のキーエントリの各々における前記キーデータに対応する前記セキュアメモリにおけるメモリアドレスにおいてストアするためである、プロセッサ。
【請求項９】
請求項１に記載のプロセッサであって、各キーエントリにストアされた前記キーデータが暗号キーを含む、プロセッサ。
【請求項１０】
請求項１に記載のプロセッサであって、前記中央処理ユニットが複数のプロセッサコアを含み、前記スレッド識別子値が、前記カレントスレッドを実行する前記複数のプロセッサコアのうちの１つのプロセッサコアの識別子を含む、プロセッサ。
【請求項１１】
中央処理ユニットと、コプロセッサと、セキュアメモリとを含むプロセッサにおいて暗号動作を実行する方法であって、前記方法が、
複数のキーエントリを前記セキュアメモリにストアすることであって、各キーエントリが、キー識別子に関連付けられ、各キーエントリが、スレッド所有者フィールドと、暗号キーに対応するデータをストアするキーデータフィールドとを含むこと、
前記中央処理ユニットにおけるカレント実行スレッドにおいて、前記カレント実行スレッドに対応するキー識別子及びスレッド識別子と連携して、コマンドを前記コプロセッサに発行すること、
前記キー識別子に対応するキーエントリを前記セキュアメモリから検索するように、前記コプロセッサを動作させること、
前記検索されたキーエントリにおける前記スレッド所有者フィールドのコンテンツを、前記コマンドに対する前記スレッド識別子と比較すること、
前記比較に応答して、前記検索されたキーエントリにおける前記スレッド所有者フィールドが前記コマンドに対する前記スレッド識別子にマッチすると判定し、前記検索されたキーエントリに対応する前記暗号キーを前記セキュアメモリから検索すること、及び
前記検索された暗号キーを用いて暗号動作を実行するように前記コプロセッサを動作させること、
を含む、方法。
【請求項１２】
請求項１１に記載の方法であって、コマンドを前記コプロセッサに発行することが、
前記コマンド及び前記キー識別子を、前記プロセッサにおける第１のバスを介して前記中央処理ユニットから前記コプロセッサに通信すること、及び
前記第１のバスとは別のサイドバンド信号通信経路として、前記スレッド識別子を前記中央処理ユニットから前記コプロセッサに通信すること、
を含む、方法。
【請求項１３】
請求項１２に記載の方法であって、前記カレント実行スレッドが、前記中央処理ユニットにおけるオペレーティングシステム下の複数の実行スレッドの１つに対応し、前記スレッド識別子を通信することが前記オペレーティングシステム下で実施される、方法。
【請求項１４】
請求項１１に記載の方法であって、
前記スレッド識別子を前記コプロセッサにおけるレジスタにストアすることを更に含み、
コマンドを前記コプロセッサに発行することが、前記コマンド及び前記キー識別子を、前記プロセッサにおける第１のバスを介して通信し、
前記比較することが、前記検索されたキーエントリにおける前記スレッド所有者フィールドのコンテンツを前記レジスタの前記コンテンツと比較する、
方法。
【請求項１５】
請求項１４に記載の方法であって、前記カレント実行スレッドが、前記中央処理ユニットにおけるオペレーティングシステム下の複数の実行スレッドの１つに対応し、
前記スレッド識別子をストアすることが、
前記オペレーティングシステム下で、前記第１のバスを介して前記スレッド識別子を前記コプロセッサに通信すること、及び
前記オペレーティングシステム下で、前記通信されたスレッド識別子を前記レジスタに書き込むこと、
を含む、方法。
【請求項１６】
請求項１１に記載の方法であって、
コマンドを前記コプロセッサに発行することが、前記プロセッサにおける第１のバスを介して、前記コマンド及び前記キー識別子を前記中央処理ユニットから前記コプロセッサに通信し、
前記キーエントリを検索するように前記コプロセッサを動作させること及び前記暗号キーを検索することが、前記コプロセッサを前記セキュアメモリに結合する第２のバスを介して実施される、
方法。
【請求項１７】
請求項１１に記載の方法であって、前記暗号キーを検索することが、前記検索されたキーエントリのキーアドレスポインタフィールドにストアされたメモリアドレスにおいて前記セキュアメモリにアクセスすることを含む、方法。
【請求項１８】
請求項１１に記載の方法であって、前記暗号キーを検索することが、前記検索されたキーエントリのキーデータフィールドの前記コンテンツを検索することを含む、方法。
【請求項１９】
請求項１１に記載の方法であって、前記比較に応答して、前記検索されたキーエントリにおける前記スレッド所有者フィールドが前記コマンドに対する前記スレッド識別子にマッチしないと判定し、エラーメッセージを前記コプロセッサから前記中央処理ユニットに発行することを更に含む、方法。
【請求項２０】
請求項１１に記載の方法であって、前記中央処理ユニットが複数のプロセッサコアを含み、前記スレッド識別子値が、前記カレント実行スレッドを実行する前記複数のプロセッサコアの前記１つの識別子を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、全般的に、データセキュリティに関し、特に、プロセッサアーキテクチャ内の計算セキュリティに関する。
【背景技術】
【０００２】
データ通信のセキュリティは、スーパーコンピュータ等の大規模システムから埋め込みプロセッサ等の最小規模のシステムに至るまで、実質的にあらゆるタイプの電子システムに対して重大な問題である。実際に、セキュリティは、ＩｏＴ（Internet of Things）における配備を想定したセンサーやアクチュエータ等の小規模システムに対する主要な問題となりつつある。幅広い範囲のサービス及び用途にわたって大量に実装されるこれらの高度に分散したＩｏＴ対象物は、それらの比較的小さい計算容量及び遠隔実装を考慮すると、攻撃やセキュリティ侵害（compromise）に対して特に脆弱であり得る。しかしながら、これらのセンサー及びアクチュエータのネットワークによって果たされる機能の重要性はセキュリティ危険度を増大させている。
【０００３】
デジタルデータ暗号法の分野において、データ通信、データ保存及び検索、及び、埋め込みプロセッサによって実施され得るものを含むその他の用途に用いられ得るような、様々なアプローチが知られている。概して、暗号法の分野は、データ暗号化及び解読、デジタル認証（例えば、署名／検証方式）等を含む。公開キー暗号法は非対称暗号法とも呼ばれ、一般的に用いられるタイプの暗号法である。このアプローチに従って、各キーがデータ又は情報のブロックである「キー」の公開／秘密ペアが、特定のアルゴリズムに従って生成される。公開キー及び秘密キーは、生成多項式に基づいて互いに逆の関係を有し、そのため、送信ノードがペアのキーの一方を用いて通信を確保し、受信ノードが他方のキーを用いて通信を解読又は検証する。より具体的には、データ暗号化のコンテキストにおいて、公開キーを用いて暗号化されたデータのブロックが秘密キーを用いて解読され得る。認証のコンテキストにおいて、秘密キーを用いて生成されたデジタル署名が公開キーを用いて検証され得る。公開キー及び秘密キーは、難解な数学的問題（通常「トラップドア関数」と称される）を介して互いに関係しているため、その対応する既知の公開キーの知識から秘密キーを判定することは計算上困難である。従って、秘密キーの保持者と公開キーを取得する人との間のデータ通信データを可能にするために、セキュアでない通信によって送られる又は公開レジストリにリストされる等、公開キーは公開され得、秘密キーが攻撃者によって計算され得る現実的なリスクは無い。公開／秘密キーアプローチは、秘密キーの保持者が、そのキーを任意の他の当事者と共有することを要求されないので、概して好ましい。これに対して、対称キーアプローチは、双方が同一の暗号化キーを知ることを必要とする。
【０００４】
特定の公開キー方式によって提供されるセキュリティのレベルは、概してキーの長さに対応する。つまり、キーの長さが長くなると、公開キーから秘密キーを導出する難度が増加する。「ＤＨ」、「ＤＳＡ」、及び「ＲＳＡ」等の暗号法アルゴリズムの下では、公開キー及び秘密キー双方に対する従来のビット長は、１０２４ビットの規模から１５３６０ビットの範囲である。キーの長さは、所望のセキュリティレベル及び暗号化及び解読ノードの利用可能な計算容量に応じて、広範囲に変動し得る。より具体的には、電子システムにおいて実装されるセキュリティのレベルを上げることは、一層高いセキュリティレベルに関連する一層長いキーに対してマシンサイクル数の増加及びメモリスペースの増加が必要となるので、対価としてシステム性能が概して低下する。
【０００５】
このトレードオフは、システムプロセッサにおける暗号処理専用のハードウェアベースのアクセラレータの実装によって大きく緩和され得る。テキサス・インスツルメンツ・インコーポレイテッドから入手可能なＳＩＴＡＲＡ  ＡＭ３３５ｘプロセッサは、ＩｏＴ応用例に用いられ得るような、そのような専用ハードウェアベースのセキュリティアクセラレータが実装される埋め込みプロセッサの例である。このタイプのアーキテクチャにおいて、暗号化、解読、及びその他の暗号法機能に関連する計算集約的動作は、中央処理ユニットによってセキュリティアクセラレータにオフロードされる。これによって、中央処理ユニットは、その処理帯域幅をエンドユーザ応用例に使うことが可能になり、暗号動作によってシステムスループットが大きく影響されることはない。
【０００６】
図１は、ハードウェアベースのセキュリティアクセラレータを備える例示の従来の埋め込みプロセッサの一般的な機能アーキテクチャ及び動作を図示する。この例において、中央処理ユニット（ＣＰＵ）２は、上述のＳＩＴＡＲＡ  ＡＭ３３５ｘプロセッサに用いられるようなＡＲＭ  ＣＯＲＴＥＸ−Ａ８  ＣＰＵ等の従来のマルチコアプロセッサである。ＣＰＵ２は、そのアプリケーションをＬＩＮＵＸ等の従来のオペレーティングシステム下でマルチスレッド環境において実行する。図１において、ＣＰＵ２はオペレーティングシステム４の下で３つのスレッドＴ１、Ｔ２、Ｔ３を走らせている。種々のスレッドＴ１、Ｔ２、Ｔ３は、オペレーティングシステム４におけるスケジューラ機能に従ってＣＰＵ２によって実行され、その際、オペレーティングシステム４は、図１に示すように、実行されているカレントスレッドの識別子をＣＰＵ２のスレッドＩＤレジスタ９に書き込む。このスレッドＩＤは、あるスレッドの別のスレッドによる成りすましを防止するため、オペレーティングシステム４の制御下でＣＰＵ２のハードウェアによって管理される。
【０００７】
図１の従来のプロセッサは暗号コプロセッサ５を含み、暗号コプロセッサ５は、バスＳＹＳ＿ＢＵＳを介するＣＰＵ２との通信においてハードウェアベースのセキュリティアクセラレータとして動作し、データブロックの暗号化及び解読等の暗号動作の実行専用である。このアーキテクチャにおいて、暗号コプロセッサ５は、セキュアメモリブロック６と連携してこれらの動作を実施し、セキュアメモリブロック６は、専用バスＤＥＤ＿ＢＵＳを介してコプロセッサ５がアクセス可能なメモリリソースの一部又は全部である。典型的には、セキュアメモリブロック６へのアクセスは、ＣＰＵ２及び埋め込みプロセッサにおけるその他の汎用ロジック及びＩ／Ｏ機能を除外して、コプロセッサ５に制限されている。
【０００８】
この従来のアーキテクチャにおいて、暗号コプロセッサ５及びセキュアメモリブロック６は、ＣＰＵ２によって実行されている種々のスレッドＴ１〜Ｔ３に共通の共有リソースとして働く。１つのスレッドから別のスレッドへの実行の切り替えは、マルチスレッド環境においてよく実施されるが、そのスレッドの実行の再開の際に後に検索するため、一時停止されているスレッドから実行「コンテキスト」のストアを必要とする。このコンテキストは、レジスタコンテンツ、実行状態、設定、及び、ロジック回路要素にスレッドの実行を、あたかもその間に介在するスレッドが扱われなかったかのように、それが停止された同じ場所において再開させるためのその他の情報を含む。暗号動作に関し、このコンテキストは、特定のスレッドにおいて用いられている暗号キーを含む。この従来のアーキテクチャにおいて、セキュアメモリブロック６は、暗号法コンテキストの、具体的には、コプロセッサ５による暗号動作において用いられるキーの、ローカルストレージを提供することによって、前回の動作とは異なる実行スレッド下で暗号動作を実行するためのコマンドを受け取る際に、コプロセッサ５による高速コンテキスト切り替えを可能にする。
【０００９】
図１に示されるように、複数の暗号キー（即ち、複数のスレッドコンテキスト）をストアするために、セキュアメモリブロック６において複数のキーエントリ８が利用可能であり、それにより、コプロセッサが、各々がそれら独自の秘密キー、公開キー、又は対称（共有）キーを有する、複数の動作及び通信チャネルを実行できる。この典型的な従来の配置において、各キーエントリ８ｘは、キー「タグ」、又は、特定のキーを識別及び参照するその他の識別子ＫＥＹ  ＩＤと呼ばれ得る。エントリ８のコンテンツは各々、キーそのものをストアするための、又はキーがストアされるセキュアメモリブロック６内の別の位置を参照するアドレスポインタをストアするためのＫＥＹフィールドを含む。幾つかの従来のアーキテクチャにおいて、ＫＥＹ  ＡＴＴＲフィールドは、そのキーが用いられることが許可されている暗号動作のタイプ（即ち、暗号化、解読、認証、署名）、及びそのキーの暗号法のタイプ（ＡＥＳ、ＰＫＡ等）を示す。図１に４つのキーエントリ８１〜８４が示されているが、セキュアメモリブロック６は、適宜、これより多い又は少ないエントリを含み得る。
【００１０】
このアーキテクチャにおいて、ＣＰＵ２は、バスＳＹＳ＿ＢＵＳによって暗号コプロセッサ５と通信する。カレント実行スレッドにおいて暗号動作を呼び出すために、ＣＰＵ２は、実施されるべき動作のタイプを示すコマンド、それらの動作が実施されるべきデータ、及びその動作において用いられるべき暗号キーに対するキーエントリ８ｘを示すキー識別子ＫＥＹ  ＩＤの値を含んで、コールをバスＳＹＳ＿ＢＵＳを介してコプロセッサ５に発行する。そのキーがコプロセッサ５によって現在用いられているキーと異なる場合、これはオペレーティングシステム４がＣＰＵ２において実行を１つのスレッドから別のスレッドに切り替えた場合に典型的に起こるが、コプロセッサ５は、その前回のキーに対するセキュアメモリブロック６内のキーエントリ８ｘにおいてカレントキー及び他のコンテキストをストアし、ＣＰＵ２から新たに受け取ったＫＥＹ  ＩＤ値に対応するキーエントリ８ｘに対するキーを検索することによって、コンテキスト切り替えを実施する。所望の暗号動作を完了すると、暗号コプロセッサ５はバスＳＹＳ＿ＢＵＳを介して結果をＣＰＵ２に通信する。
【００１１】
幾つかの従来のプロセッサアーキテクチャにおいて、暗号コプロセッサは、「公開」又は「秘密」モードのいずれかで動作し得る。これらのアーキテクチャにおいて、公開モードは、このモードにおいて複数のスレッド間で共有され得る１つの暗号キーに関連付けられ得、一方、秘密モードは、このモードにおいて、同じく複数のスレッド間で共有され得る異なる暗号キーに関連付けられ得る。
【００１２】
更なる背景として、幾つかの従来のプロセッサアーキテクチャは、暗号コプロセッサの外でコンテキスト切り替えを実施する。これらのアーキテクチャにおいて、オペレーティングシステムは、ＣＰＵ又はコプロセッサを呼び出す他のプロセッサにおいてコンテキスト切り替えを実施し、コプロセッサにおける前回のスレッドのコンテキストを現在まで「クリーンアップ」する。このアプローチにおいて、コプロセッサは、所望される場合、次のスレッドによりそのキーをリライトさせること以外、コンテキスト切り替えに関与しない。
【００１３】
更なる背景として、幾つかの従来のプロセッサアーキテクチャでは、暗号コプロセッサにおいて公開及び秘密モードに対して別個のレジスタが提供される。これらの論理的に分割されたレジスタは、秘密ドメインにおいてコプロセッサによって用いられる暗号キー及びその他の設定及び情報を、公開ドメインにおいて用いられるものから隔離し、逆もまた同様である。この配置において、１つのドメインから他のドメインへのコンテキスト切り替えにおいてクリーンアップは必要とされない。
【発明の概要】
【００１４】
説明される例において、中央処理ユニット（ＣＰＵ）が、マルチスレッド環境において動作する。ＣＰＵは、キーを用いて暗号化及び解読等の暗号動作を実行するように、暗号コプロセッサにコールを発行する。コプロセッサによりアクセス可能なセキュアメモリブロックが、複数のキーエントリをストアし、各キーエントリは、実行スレッドがそのキーに関連付けられる（そのキーを所有する）ことを識別するスレッド識別子に関連付けられる暗号キーをストアする。暗号動作のためのコプロセッサコールが発行されると、ＣＰＵは、用いられるべきキーのキー識別子及びスレッド識別子をコプロセッサに通信する。コプロセッサは、ＣＰＵから受け取ったスレッド識別子を、所望のキーを備えてセキュアメモリにストアされたスレッド識別子と比較して、コールしているスレッドがキーを所有しているか否かを判定し、そうであれば、コプロセッサが暗号動作に用いるために、そのキーがセキュアメモリブロックから検索される。スレッド識別子がマッチしない場合、リクエストされた動作は実施されない。
【図面の簡単な説明】
【００１５】
【図１】従来の埋め込みプロセッサのアーキテクチャの一部のブロック形式での電気回路図である。
【００１６】
【図２】実施形態に従って構成された埋め込みプロセッサのブロック形式での電気回路図である。
【００１７】
【図３】実施形態に従った図２のプロセッサの、中央処理ユニット、暗号コプロセッサ、及びセキュアメモリブロックのアーキテクチャのブロック形式での電気回路図である。
【００１８】
【図４】実施形態に従った図３のアーキテクチャの動作を図示するフローチャートである。
【００１９】
【図５】別の実施形態に従った図２のプロセッサの、中央処理ユニット、暗号コプロセッサ、及びセキュアメモリブロックのアーキテクチャのブロック形式での電気回路図である。
【発明を実施するための形態】
【００２０】
プロセッサ及び動作方法の例示の実施形態において、暗号動作が、マルチスレッド環境におけるハードウェアベースのセキュリティアクセラレータにおいて、システム性能を低下させることなく、より高いレベルのセキュリティで実施される。そのようなプロセッサ及び方法は、暗号動作の目的に対して、スレッド間の改善された隔離を提供する。また、このようなプロセッサ及び方法は、セキュリティアクセラレータにおいて高速コンテキスト切り替えを達成する。
【００２１】
本明細書において説明する１つ又は複数の実施形態は、電子システムにおけるマイクロコントローラ等の埋め込みプロセッサの中に実装され、そのような実装は、そのコンテキストにおいて特に有利である。しかしながら、例示の実施形態は、スマートフォン、タブレットコンピュータ、ノートブック、及びその他、パーソナルコンピュータ、サーバー等を含む大規模プロセッサ及びシステム等の他の応用例において有益に適用され得る。
【００２２】
従来の埋め込みプロセッサは、暗号コプロセッサによって実施されるような暗号動作に関連して、「攻撃」に対して脆弱であり得る。例えば、図１に関して上述された従来のアーキテクチャを参照すると、第１の実行スレッドが、第１のキーを用いてデータのブロックを暗号化するために、コールをコプロセッサ５に発行し得る。コンテキスト切り替えに続き、その第１のキーはセキュアメモリブロック６にストアされる。セキュアメモリブロック６は、複数のＣＰＵスレッドに対する暗号動作のためのコンテキストデータをローカルにストアする。このタイプの攻撃では、異なるスレッドで実行している悪意のあるソフトウェアが、暗号化されたデータを取得するためにＣＰＵ２とコプロセッサ５との間のバスＳＹＳ＿ＢＵＳを監視する。その後、セキュアメモリブロック６に現在ストアされている第１のキー、即ち、それを用いてデータが暗号化されたキー、を用いてデータのそのブロックを解読するために、コールをコプロセッサ５に発行する。即ち、図１に関連して上述された従来のコプロセッサアーキテクチャは、スレッド間の暗号キーに対するセキュリティを提供しない。
【００２３】
これらの実施形態に従って、コプロセッサシステムのセキュアメモリにおける各キーエントリを特定のスレッドに結び付けることによりこの脆弱性は排除される。一実施形態において、キーエントリは、そのスレッドがキーエントリに関連付けられるキーを「所有」していること、即ち、それがそのキーをプロセッサに提供したスレッドであることを識別するフィールドを含む。コプロセッサによりアクセスされるべきキーに関し、そのキーを動作に用いるためにコプロセッサをコールしているスレッドは、そのキーに対するキーエントリにおいて識別されるスレッド所有者にマッチしなければならない。
【００２４】
図２は、これらの実施形態に従った、センサー、コントローラ、又はＩｏＴのコンテキストにおける配備に適したその他の電子システムに実装され得るような埋め込みプロセッサ１０の全体のアーキテクチャを図示する。上述したように、これらの実施形態は、広範な応用例のための様々な規模の電子システムに配備される種々のアーキテクチャのプロセッサ回路要素に実装され得る。この実施形態における埋め込みプロセッサ１０のアーキテクチャは、テキサス・インスツルメンツ・インコーポレイテッドから入手可能なＳＩＴＡＲＡ  ＡＭ３３５ｘ  ＡＲＭプロセッサのようなデバイスの全体的なアーキテクチャに従うが、これ以降に説明する実施形態の１つに従って付加的に構成される。このアーキテクチャに従ったプロセッサ１０は、通常、単一の集積回路として実現され得るが、代替的に、複数の集積回路として（例えば、「チップセット」又はマルチモジュールデバイスとして）実現され得る。また、本明細書において説明される機能ユニットより多くの又はより少ない機能ユニットが、これらの実施形態に従ったプロセッサ１０に含まれ得る。
【００２５】
図２に示されるように、プロセッサ１０は複数の異なる機能ユニットを含む。明確にするため図２にはバス接続は示されていない。中央処理ユニット（ＣＰＵ）１２が、プロセッサ１０のメインプログラマブルロジックとして働き、上述のＳＩＴＡＲＡ  ＡＭ３３５ｘプロセッサファミリーにおけるような、例えば、ＡＲＭ  ＣＯＲＴＥＸ−Ａ８等のマルチコアプロセッサとし得る。この実施形態において、ＣＰＵ１２は、そのアプリケーションプログラム等をマルチスレッド環境において実行するのに適している。ＣＰＵ１２は、メインシステムバス（図示されない）を介する等、システムメモリ１４に関連して動作する。システムメモリ１４は、ＣＰＵ１２、及びプロセッサ１０における他の機能に対して有用な、適切なプログラム及びデータメモリを含み、ＳＲＡＭ等の揮発性メモリ、及びＥＥＰＲＯＭ又はフラッシュメモリ等の不揮発性メモリを含む、異なるタイプのメモリの複数のブロック又はアレイとして実現され得る。
【００２６】
この実施形態に従ったプロセッサ１０に提供されるその他の機能ユニットとしては、プロセッサ１０内のグラフィックコプロセッサ（図示されない）を含み得るか又はグラフィックコプロセッサとともに働き得るディスプレイコントローラ１８、及び、例えば、ＥｔｈｅｒＣＡＴ、ＰＲＯＦＩＢＵＳ、ＰＲＯＦＩＮＥＴ、及びＥｔｈｅｒＮｅｔ／ＩＰプロトコル等の１つ又は複数の従来のプロトコルを介して、プロセッサ１０とＩｏＴにおける他のデバイスとの間の通信をサポートする種々のプログラマブルリアルタイムユニット２０が含まれる。プロセッサ１０は、レベル３／４相互接続バス２２を介してＣＰＵ１２にアクセス可能である付加的なインタフェースを含み、それらにはシリアルインタフェース２４（例えば、ＵＳＢ及びＥＭＡＣインタフェース）、パラレルインタフェース２６（例えば、ＳＤＩＯ及びＧＰＩＯインタフェース）、及び、ＤＲＡＭ又はプロセッサ１０外部のその他のメモリとインタフェースするために用いられ得るようなメモリインタフェース２８が含まれる。例えば、タイマー、オシレータ、ＤＭＡ機能、アナログデジタルコンバータ（ＡＤＣ）及びデジタルアナログコンバータ（ＤＡＣ）等の広範なシステム周辺機器２６もプロセッサ１０内に含まれ得る。
【００２７】
これらの実施形態に従って、プロセッサ１０は、例えば、データ暗号化、データ解読、認証等の動作を含む種々の暗号動作を安全に実行することができる。通常、これらの暗号動作は、計算集約的であり、多数のプロセッササイクル及びかなりのメモリリソースを消費する。特にそのＣＰＵ１２に関連して、その全体的な性能及び帯域を改善するため、この実施形態に従ったプロセッサ１０は、暗号動作のためのソフトウェアルーティンの実行専用であるプロセッサコア等のプログラマブルロジック機能である暗号コプロセッサ１５を含む。このアーキテクチャにおいて、コプロセッサ１５はセキュアキーメモリ１６と連携して動作する。これ以降に更に説明するように、セキュアキーメモリ１６は、コプロセッサ１５による暗号動作の実行に用いられる暗号キーをストアするための適切なメモリスペース及び機構を含む。セキュアキーメモリ１６は、それに対するアクセスがコプロセッサ１５と、おそらくプロセッサ１０におけるその他の特定の回路機能とに制限され得、他の回路機能は除外するという意味で、「セキュア」であると考えられる。この意味において、セキュアキーメモリ１６は、セキュアキーメモリ１６とコプロセッサ１５との間に走る専用メモリバスを用いて、システムメモリ１４及びプロセッサ１０における他のメモリリソースとは物理的に分離し得る。或いは代替として、セキュアキーメモリ１６は、それに対するアクセスが「ファイアウォール」又は他のセキュリティ動作によって制限されるシステムメモリ１４の一部として実現され得る。セキュアキーメモリ１６の他に、コプロセッサ１５によって実行され得る暗号ソフトウェアルーティン及び他のプログラムコードをストアするプログラムメモリがプロセッサ１０に提供されている。このプログラムメモリは、セキュアキーメモリ１６の一部又はシステムメモリ１４の一部とし得、或いは代替として、コプロセッサ１５内の又はコプロセッサ１５にアクセスし得る別のメモリリソースとし得る。
【００２８】
本明細書で説明する実施形態及び他の代替プロセッサアーキテクチャは、特定の応用例に適している。
【００２９】
図３を参照し、一実施形態に従った暗号コプロセッサ１５の動作に関して、プロセッサ１０のアーキテクチャを説明する。上述したように、この実施形態におけるＣＰＵ１２は、オペレーティングシステム１３をサポートするマルチコアプロセッサであり、マルチスレッド環境において動作可能であり、図３に示される例では、ｎ個のスレッドＴ１〜Ｔｎを走らせている。ＣＰＵ１２は、スレッドＩＤレジスタ１１を含み、スレッドＩＤレジスタ１１は、ＣＰＵ１２によって実行されているカレントスレッドの識別子をストアする。このスレッド識別子は、実装に応じて種々の形式を取り得る。例えば、マルチコアアーキテクチャにおいて、スレッド識別子は、そのスレッドを実行するコアとは関係なく実行スレッドの各々にアサインされているラベルで構成され得、或いは代替として、そのコア上のスレッド間で区別するスレッド識別子との組み合わせでそのスレッドを実行するＣＰＵコアの識別子で構成され得る。オペレーティングシステム１３は、スレッドＩＤの形式に関係なく、種々の実行スレッドＴ１〜Ｔｎのスケジューリング及び切り替えを制御し、それ自体が、スレッドＩＤレジスタ１１のコンテンツを、カレントスレッド識別子と共に書き込む。この実施形態において、オペレーティングシステム１３は、アプリケーションソフトウェア等の他のソフトウェアルーティンよりも高い特権レベルを有し、そのため、オペレーティングシステム１３は、より低い特権ソフトウェアルーティンの実施を除外して、スレッドＩＤレジスタ１１のコンテンツを書き込むことができる。カレントスレッド及びスレッドＩＤレジスタ１１のこの「ハードウェア」設定は、このマルチスレッド環境において１つのスレッドが別のスレッドに「成りすますこと」を防止する。
【００３０】
この実施形態において、ＣＰＵ１２は、プロセッサ１０のメインデバイスバスファブリック３２を介して、コプロセッサ１５に結合され、コプロセッサ１５と通信する。デバイスバスファブリック３２は、システムメモリ１４、及び図３に関連して上述したようなプロセッサ１０の他の機能等を含む、プロセッサ１０の種々の機能間で、メモリアドレス、データ、及び制御情報を通信するための適切な導体を含む。
【００３１】
デバイスバスファブリック３２に加えて、ＣＰＵ１２は、「サイドバンド」信号を介して暗号コプロセッサ１５にも結合される。これらの実施形態において、サイドバンド信号とは、デバイスバスファブリック３２とは別個のハードウェア通信経路（サイドバンド経路）ＳＣを介してＣＰＵ１２からコプロセッサ１５に通信されるデータ及び制御情報信号を指す。例えば、サイドバンド経路ＳＣは、プロセッサ１０を実装する集積回路において、１つ又は複数の導体によって実現され得、それらは、デバイスバスファブリック３２とは別個であり、そのため、デバイスバスファブリック３２上にある機能によってアクセスされることはない。従って、サイドバンド経路ＳＣを介して送信されるサイドバンド信号は、デバイスバスファブリック３２を「スヌーピングする」回路又は機能から見えない又は理解され得ない。この実施形態において、これらのサイドバンド信号は、暗号動作に対するコールと関連して、スレッドＩＤレジスタ１１のコンテンツ、即ち、ＣＰＵ１２による現在実行されているスレッドの識別子を、ＣＰＵ１２からコプロセッサ１５に安全に通信する。
【００３２】
この実施形態において、コプロセッサ１５は、デバイスバスファブリック３２及びサイドバンド経路ＳＣを介したＣＰＵ１２からのコールに応答した暗号動作をコプロセッサ１５が実行する際に有用な機能回路要素を含む。この機能回路要素はキーアクセス状態機械３４を含み、キーアクセス状態機械３４は、ＣＰＵ１２によってコールされたタスクに関連付けられる暗号キーを検索するためにセキュアメモリブロック１６と通信するようにコプロセッサ１５において実装されるシーケンシャルロジックである。コプロセッサ１５はアクティブキーストア３６も含み、アクティブキーストア３６は、状態機械３４によってセキュアメモリブロック１６から検索された暗号キーをストアするためのメモリブロック又はレジスタ位置である。この実施形態において、キーアクセス状態機械３４は、プロセッサ１０のメインデバイスバスファブリック３２を介して、セキュアメモリブロック１６から暗号キーを検索する。その部分に関し、セキュアメモリブロック１６は、ファイアウォール３５を介してデバイスバスファブリック３２とインタフェースし、ファイアウォール３５は、暗号キー及び関連する情報をストアするセキュアメモリブロック１６のそれらの部分へのアクセスを、プロセッサ１０の通常動作の間の他の機能を除外して、暗号コプロセッサ１５のみに制限するロジック回路要素によって構成される。幾つかの実施形態において、ファイアウォール３５は、ＣＰＵ１２それ自体等の他の機能にも、「セキュア」プロセスの範囲内で、セキュアメモリブロック１６にアクセスさせるように配置され得る。例えば、セキュアメモリブロック１６に暗号キーをロードするために、セキュアプロセスがＣＰＵ１２によって実行され得る。
【００３３】
或いは、コプロセッサ１５は、図３に点線で示されるバス３３によって示唆されるように専用バスを介して、セキュアメモリブロック１６に結合され得る。この代替アプローチにおいて、セキュアメモリブロック１６は、デバイスバスファブリック３２に結合されない場合があり得る。その場合、セキュアメモリブロック１６は、暗号コプロセッサ１５によって又は暗号コプロセッサ１５を介してのみアクセスされ得る。この代替構造は、セキュアメモリブロック１６がキーストレージにのみ専用であり、その他のセキュア機能に対して利用可能な他のメモリスペースを含まない応用例において有用であり得る。
【００３４】
この実施形態において、セキュアメモリブロック１６の全て又は一部が、暗号コプロセッサ１５に対する専用キーストレージ管理メモリとして働く。図３に示されるように、セキュアメモリブロック１６の或る領域が、ＣＰＵ１２によってコールされた暗号動作においてコプロセッサ１５によって用いられるための複数の暗号キー４０１〜４０４（総称してキー４０）をストアする。これらの暗号キー４０は、互いに異なるタイプ及びサイズであり得る。例えば、キー４０１及び４０４は各々、ＡＥＳ１２８キーであり得、キー４０２はＰＫＡキーであり得、キー４０３はＡＥＳ２５６キーであり得る。特に、サイズが相対的に大きいこと及びキーのタイプ及びサイズが変化することに起因して、これらのキー４０は、これ以降に説明するように、間接的なアドレスを用いてアクセスされる。
【００３５】
この実施形態において、セキュアメモリブロック１６は、複数のキーエントリ２５１〜２５４（総称して、エントリ２５）がストアされる領域を含む。４つのキーエントリ２５１〜２５４が、この例について図３に示されているが、セキュアメモリブロック１６は、適宜これより多くの又はこれより少ないキーエントリ２５を含み得る。これに関し、各キーエントリ２５ｘは、対応する暗号キー４０ｘに関連する複数のフィールドを含む。上述のようにキー４０に間接的にアクセスする目的のため、この実施形態における各キーエントリ２５ｘは、キーアドレスポインタフィールド３８ｘであり、キーアドレスポインタフィールド３８ｘは、その対応するキー４０ｘがストアされているセキュアメモリブロック１６のメモリアドレスをストアする。図３に示される間接的アドレス配置の代替として、各エントリ２５ｘにおけるフィールドが、キーアドレスポインタフィールド３８ｘの代わり等に実際のキー４０ｘ自体をストアし得る。この配置は、タイプ及びサイズが類似のショートキーに適し得る。また図３に示すように、各キーエントリ２５ｘは、その対応するキー４０ｘの暗号法のタイプ（例えば、ＰＫＡ、ＡＥＳ等）を識別するキー属性フィールド３９ｘを含み、また、そのキー４０ｘが用いられ得る動作のタイプ（暗号化／解読、署名／認証等）等の許可も含み得る。
【００３６】
この実施形態に従って、各キーエントリ２５ｘは、図３にキー識別子フィールド３７ｘとして示されるタグ又は識別子に関連付けられ、それによって、コプロセッサ１５は、その特定のキーエントリ２５ｘにアクセスする。例えば、ＣＰＵ１２によるコプロセッサ１５に対するコールは、その動作において用いられるべき暗号キー４０ｘに対応するキー識別子フィールド３７ｘのコンテンツに対応するキー識別子値を含み得る。ＣＰＵ１２からこのキー識別子値を受け取るキーアクセス状態機械３４は、その後、対応するキー４０ｘに対するキーアドレスポインタ３８ｘを検索するため、コンテンツアドレス可能メモリ又はキャッシュタグアレイに類似する方式で、その値を用いてセキュアメモリブロック１６におけるキーエントリ２５ｘにアクセスし得る。或いは、キーアクセス状態機械３４は、ＣＰＵ１２によって通信されるキー識別子値を、セキュアメモリブロック１６における対応するキーエントリ２５ｘに対するメモリアドレスに変換するためにルックアップテーブルを用いること等により、メモリアドレスを用いてセキュアメモリブロック１６からキー４０ｘを検索し得る。
【００３７】
この実施形態に従って、各キーエントリ２５ｘはスレッド所有者フィールド３０ｘを含む。スレッド所有者フィールド３０ｘはスレッド識別子値をストアし、スレッド識別子値は、キーエントリ２５ｘに関連付けられる暗号キー４０ｘを「所有する」、ＣＰＵ１２におけるスレッドＴ１〜Ｔｎの１つを識別する。より具体的には、このスレッド所有者フィールド３０ｘのコンテンツは、もともとその暗号キー４０ｘをコプロセッサ１５に提供した実行スレッドであって、従って、キー４０ｘが関連付けられ、コンテキスト切り替えに関連してセキュアメモリブロック１６にストアされるスレッドに対するスレッド識別子である。実行スレッドがＣＰＵ１２において設定されると、これらのスレッド識別子値は、オペレーティングシステム１３によってアサインされ、マルチスレッド環境において動作する従来のプロセッサと同様に、実行中のカレントスレッドとしてＣＰＵ１２のスレッドＩＤレジスタ１１にストアされる。他の基準又は動作が、その特定のキーをどのＣＰＵスレッドが所有していると考えられるかを判定し得る。
【００３８】
図４を参照し、一実施形態に従ったプロセッサ１０における暗号動作の実行を説明する。プロセス４２において、コプロセッサ１５及びセキュアメモリブロック１６に、ＣＰＵ１２によって１つ又は複数の暗号キーが「供給される」。例えば、ＣＰＵ１２によって実行されているカレントスレッド（例えば、スレッドＴ１）が「ｓｔｏｒｅ  ｋｅｙ（キーをストアする）」命令を含み得、それによって、サイドバンド経路ＳＣを介するカレントスレッドＴ１に対するスレッドＩＤとともに、暗号キーがデバイスバスファブリック３２を介してコプロセッサ１５に転送される。或いは代替として、提供プロセス４２は、特定のキーを用いてコプロセッサ１５によって実施されるべき暗号動作（例えば、データのブロックの暗号化）に対するコマンドを発行するＣＰＵ１２によって実施され得る。いずれの場合においても、関連するコマンドが、用いられるべきキー及びその動作が実施されるべきデータとともにデバイスバスファブリック３２を介してＣＰＵ１２によって転送され、カレント実行スレッドに対するスレッドＩＤ（例えば、Ｔ１）がサイドバンド経路ＳＣを介してＣＰＵ１２によって転送される。プロセス４４において、コプロセッサ１５はキーをセキュアメモリブロック１６にストアする。このプロセス４４は、コプロセッサ１５におけるコンテキスト切り替え時に（異なるスレッド、例えばスレッドＴ３が暗号動作をコールするときに）、又は明示的な「ｓｔｏｒｅ  ｋｅｙ」命令に対する即時の応答として、実施され得る。図３に示されるメモリ配置に関し、プロセス４４のメモリ書き込みは、キー識別子（フィールド３７ｘ）、及びフィールド３９ｘにおける適切な属性を参照して、エントリ２５ｘを生成すること、キーアドレスポインタ３８ｘにストアされるメモリアドレスにおいてキー４０ｘ自体をストアすること、及び、このキーを提供するカレントスレッドに対するスレッドＩＤ値をこのキーエントリ２５ｘのスレッド所有者フィールド３０ｘにストアすることを含む。図３のプロセッサ１０のアーキテクチャにおいて、これらのメモリ書き込み動作は、キーアクセス状態機械３４によって、デバイスバスファブリック３２を介して、ファイアウォール３５によって許可されたセキュアメモリブロック１６に対して行われる。
【００３９】
この提供プロセス４２及びストアプロセス４４は、コプロセッサ１５による後の使用のためにセキュアメモリブロック１６において複数の暗号キーを設定する際に、ＣＰＵ１２により所望とされるように繰り返され得る。しかしながら通常は、これらのプロセス４２、４４は、セットのキー提供動作において実施されるのではなく、プロセッサ１０によって実行されているアプリケーションプログラムの通常のプログラムフローにおいて必要とされるときに実施される。いずれの場合においても、プロセス４４におけるキーのストアに続いて、コプロセッサ１５は、プロセス４５において待機状態に入り、ＣＰＵ１２からのコマンドを待つ。
【００４０】
プロセス４６において、ＣＰＵ１２は暗号動作を実行するためにコールをコプロセッサ１５に発行する。図３のアーキテクチャにおいて、このコールは、所望の暗号動作に対応するコマンドとして、動作が実施されるべきデータ（又は、例えば、そのデータがストアされているシステムメモリ１４のアドレス）、及びセキュアメモリブロック１６にストアされているどの暗号キーが用いられるべきかを示すキー識別子値とともに、発行され得る。このキー識別子値は、キー識別子３７ｘに対応するタグであり得、それによってコプロセッサ１５のキーアクセス状態機械３４は、対応するキー４０ｘを検索するために、セキュアメモリブロック１６における対応するエントリ２５ｘにアクセスし得る。或いは、このキー識別子値は、キー識別子３７ｘに到達するために、状態機械３４が変換する値であり得る。上述したように、ＣＰＵ１２は、コマンド、データ（又はアドレス）、及びキー識別子値を、デバイスバスファブリック３２を介してコプロセッサ１５に転送する。また、プロセス４６において、この実施形態に従って、ＣＰＵ１２はまた、そのスレッドＩＤレジスタ１１にストアされているカレントスレッド識別子を、経路ＳＣを介して通信されるサイドバンド信号によってキーアクセス状態機械３４に転送する。上述のように、カレント実行スレッドのスレッドＩＤは、コンテキスト切り替えを実施する間などに、オペレーティングシステム１３下でスレッドＩＤレジスタ１１にストアされ、また、オペレーティングシステム１３によってサイドバンド経路ＳＣを介して「ハードウェアにおいて」通信される。スレッドＩＤレジスタ１１の書き込み、及びサイドバンド経路を介するそのコンテンツの通信は、１つのスレッドにおいて実行されている悪意のあるアプリケーションプログラムソフトウェアコードが別のスレッドに成りすますことを防止するため、アプリケーションソフトウェア等の一層低い特権プロセスを除外して、オペレーティングシステム１３の高い特権レベルに制限され得る。従って、プロセス４６においてコマンド及びキー識別子とともに通信されたスレッドＩＤは、ＣＰＵ１２において実行される真のカレント実行スレッドを識別する。
【００４１】
プロセス４８において、このアーキテクチャに従ったＣＰＵ１２におけるキーアクセス状態機械３４は、プロセス４６のこの例においてＣＰＵ１２によって通信されたキー識別子値が対応するキーエントリ２５ｘにアクセスし、それに応答して、セキュアメモリブロック１６が、そのキーエントリ２５ｘに対するスレッド所有者フィールド３０ｘのコンテンツを状態機械３４に戻す。状態機械３４は、その後、キーエントリ２５ｘからの、スレッド所有者フィールド３０ｘの検索されたコンテンツを、プロセス４６においてサイドチャネル３４を介してＣＰＵ１２によって通信されたスレッドＩＤ値と比較することによって、判定４９を実行する。判定４９のこの比較は、特定のキー４０ｘを用いるためのコールを発行するカレント実行スレッドのスレッドＩＤを、もともとコプロセッサ１５にそのキー４０ｘを提供した実行スレッド、即ち、そのキー４０ｘの「所有者」であるスレッド、のスレッドＩＤと比較する。ＣＰＵ１２からの、サイドバンド経路ＳＣを介したスレッドＩＤ値が、アクセスされたキーエントリ２５ｘにおけるスレッド所有者フィールド３０ｘのコンテンツにマッチしない場合（即ち、判定４９が「ＮＯ」の結果を戻す場合）、状態機械３４は、カレントスレッドがプロセス４６においてキー識別子によって識別された暗号キーを用いるための許可を持たないので、コプロセッサ１５に対するそのコールが失敗したことをＣＰＵ１２に示すエラーメッセージを、プロセス５０においてデバイスバスファブリック３２を介して発行する。その後、制御は、コプロセッサ１５に対する次のコールを待つために待機状態４５に移る。
【００４２】
サイドバンド経路ＳＣを介して状態機械３４に通信されたスレッドＩＤが、プロセス４８においてセキュアメモリブロック１６から検索されたキーエントリ２５ｘにおけるスレッド所有者フィールド３０ｘのコンテンツにマッチする場合（判定４９が「ＹＥＳ」の結果を戻す場合）、プロセス４６においてコールされた暗号動作が進行し得る。プロセス５４において、状態機械３４は、キーエントリ２５ｘのキーアドレスポインタフィールド３８ｘにストアされたセキュアメモリブロック１６におけるメモリアドレスにアクセスすることによって、又は、キー４０ｘがキーエントリ２５ｘ自体にストアされる場合にキーエントリ２５ｘの対応するフィールドを読み出すことによって、実際のキー４０ｘを検索し、キー４０ｘをコプロセッサ１５のアクティブキーストア３６にストアする。キー４０ｘがこの特定の動作に対して用いられ得ることを確実にするために、検索されたキーエントリ２５ｘのキー属性フィールド３９ｘにおける許可もチェックされ得る。そうであると仮定し、そのストアされたキー４０ｘは、その後、プロセス５６において、所望の暗号動作を実行する際にコプロセッサ１５によって用いられる。プロセス５６のその動作が完了し、ＣＰＵ１２に結果が返送された後、コプロセッサ１５は、次のコールを待つために待機状態４５に戻る。
【００４３】
よって、この実施形態に従って、マルチスレッド環境における１つの実行スレッドにおいて用いられる暗号キーに対するアクセスが、他の実行スレッドに使用されないように制限され得る。このようにキーを個々のスレッドに結び付けることで、別個のスレッドにおいて実行している悪意あるソフトウェアによる攻撃を排除することによって、セキュリティが主要な関心事であるＩｏＴコンテキストにおいて実装されるもの等を含み、暗号コプロセッサを含むプロセッサベースのシステムにおける一層強化されたセキュリティが可能となる。この改善されたセキュリティは、暗号コプロセッサにおける高速コンテキスト切り替えを可能にし、メインプロセッサロジックを、コプロセッサコンテキスト切り替えを管理すること及び外部メモリにアクセスして、全体のシステム性能を劣化させることから解放することによって、達成される。
【００４４】
図３に示される実施形態に関して説明したように、コールをコプロセッサ１５に発行する実行スレッドに対するスレッドＩＤは、ＣＰＵ１２におけるスレッドＩＤレジスタ１１からサイドバンド経路ＳＣを介してコプロセッサ１５に通信される。図５に示されるように、別の実施形態に従って、カレントスレッドＩＤレジスタ５１が暗号コプロセッサ１５’内に提供される。この実施形態において、オペレーティングシステム１３は、たとえソフトウェアルーティンにコプロセッサ１５’が関与していない場合でも、ＣＰＵ１２に、ＣＰＵ１２において実施されるスレッドコンテキスト切り替えの一部等として、カレントスレッドＩＤ値をデバイスバスファブリック３２を介してコプロセッサ１５’に転送させる。図３の実施形態におけるように、オペレーティングシステム１３は、実行中のアプリケーションソフトウェア等の他のソフトウェアルーティンの特権レベルより高い、充分に高い特権レベルを持ち得、そのため、カレントスレッドＩＤレジスタ５１のコンテンツを書き込むことができ、より低い特権レベルのソフトウェアルーティンはそうすることを禁じられる。そのため、この実施形態に従って、カレントスレッドＩＤは、コプロセッサ１５’自体におけるレジスタ５１にストアされる。動作において、カレント実行スレッドが、示された暗号キー４０ｘの所有者であるか否かを判定するための判定４９（図４）における比較は、キーアクセス状態機械３４によって、それ自体のスレッドＩＤレジスタ５１のコンテンツを、検索されたキーエントリ２５ｘのスレッド所有者フィールド３０ｘのコンテンツと比較することによって実施される。図５のこの実施形態に従ったコプロセッサ１５’の動作は、それ以外は図４に関連して上述された方法に従う。
【００４５】
また代替例において、キーエントリのコンテンツは、特定の暗号キーを提供した（即ち「所有する」）スレッド以外のスレッドに、同じキーを用いる権限を与えられ得るように配され得る。この代替的な実装において、図４の判定４９は、ＣＰＵ１２によって通信されるような又はオペレーティングシステム１３によってコプロセッサ１５自体にストアされるようなカレント実行スレッドに、そのキーを用いる権限を与えられているか否かを判定するためにキーエントリの対応するフィールドを評価し得る。権限が与えられていない場合はエラーメッセージが発行され得、権限が与えられている場合はカレントスレッド内で所望の動作が実行され得る。
【００４６】
特許請求の範囲内で、説明された実施形態における変更が可能であり、他の実施形態が可能である。
【図１】
2019532559.tif 000003
【図２】
2019532559.tif 000004
【図３】
2019532559.tif 000005
【図４】
2019532559.tif 000006
【図５】
2019532559.tif 000007
【国際調査報告】
2019532559.tif 000008