(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2019-532559(P2019-532559A)
(43)【公表日】2019年11月7日
(54)【発明の名称】ハードウェアアクアクセラレーテッド暗号法のためのキーのスレッド所有権
(51)【国際特許分類】
H04L 9/10 20060101AFI20191011BHJP
G06F 21/71 20130101ALI20191011BHJP
H04L 9/14 20060101ALI20191011BHJP
【FI】
H04L9/00 621A
G06F21/71
H04L9/00 641
【審査請求】未請求
【予備審査請求】未請求
【全頁数】18
(21)【出願番号】特願2019-511471(P2019-511471)
(86)(22)【出願日】2017年8月22日
(85)【翻訳文提出日】2019年4月23日
(86)【国際出願番号】US2017047886
(87)【国際公開番号】WO2018039152
(87)【国際公開日】20180301
(31)【優先権主張番号】15/244,208
(32)【優先日】2016年8月23日
(33)【優先権主張国】US
(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JO,JP,KE,KG,KH,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
(71)【出願人】
【識別番号】390020248
【氏名又は名称】日本テキサス・インスツルメンツ合同会社
(71)【出願人】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【1名の代理人】
【識別番号】100098497
【弁理士】
【氏名又は名称】片寄 恭三
(72)【発明者】
【氏名】エリック ティエリ ペーテルス
(72)【発明者】
【氏名】グレゴリー アレン ノース
(57)【要約】
説明する例では暗号コプロセッサ(15)を有する埋込みプロセッサが暗号動作のためスレッド間セキュリティを用いマルチスレッド環境で動作する。コプロセッサによりアクセスされ得るセキュアメモリブロック(16)が複数のキーエントリ(25
x)をストアし各キーエントリは暗号キーに対応するデータと実行スレッドがキーに関連するのを識別するスレッド所有者フィールドとをストアする。中央処理ユニット(12)が、用いられるキーに対するキー識別子とカレント実行スレッドを示すスレッド識別子と共に暗号動作を実行するためコールをコプロセッサに発行する。コプロセッサは中央処理ユニットから受取ったスレッド識別子をキー識別子に対応するキーエントリのスレッド所有者フィールドと比較する。スレッド識別子がキーエントリのスレッド所有者にマッチする場合、キーは暗号動作のためコプロセッサによる使用のためセキュアメモリブロックから検索される。
【特許請求の範囲】
【請求項1】
プロセッサであって、
中央処理ユニット、
前記中央処理ユニットに結合される第1のバス、
複数のキーエントリをストアするためのセキュアメモリであって、各キーエントリが、キー識別子に関連付けられ、スレッド所有者フィールドと、暗号キーに対応するキーデータとを含む、前記セキュアメモリ、及び
前記第1のバスを介して前記中央処理ユニットに結合され、且つ前記セキュアメモリに結合されるコプロセッサであって、複数の動作を実行するように適合されるロジック回路要素を含む、前記コプロセッサ、
を含み、
前記複数の動作が、
前記中央処理ユニットによって実行されているカレントスレッドに対するスレッド識別子値との組み合わせで、前記中央処理ユニットから前記第1のバスを介してコマンド及びキー識別子値を受け取ることに応答して、前記キー識別子値に対応する前記セキュアメモリにおけるキーエントリにアクセスすること、及び
前記アクセスされたキーエントリにおける前記スレッド所有者フィールドにマッチする前記スレッド識別子値に応答して、前記アクセスされたキーエントリに関連付けられる前記キーデータを用いて前記受け取ったコマンドに対応する暗号動作を実行すること、
を含む、
プロセッサ。
【請求項2】
請求項1に記載のプロセッサであって、前記中央処理ユニットを前記コプロセッサに結合するサイドバンド通信経路を更に含み、前記コプロセッサが、前記サイドバンド通信経路を介して前記中央処理ユニットから前記スレッド識別子値を受け取る、プロセッサ。
【請求項3】
請求項2に記載のプロセッサであって、前記中央処理ユニットが、
プログラマブルロジック、及び
前記プログラマブルロジックによって実行されている前記カレントスレッドを示す前記スレッド識別子値をストアするためのスレッドIDレジスタ、
を含む、プロセッサ。
【請求項4】
請求項1に記載のプロセッサであって、前記コプロセッサが、前記中央処理ユニットによって実行されている前記カレントスレッドを示す前記スレッド識別子値をストアするためのスレッドIDレジスタを更に含み、前記中央処理ユニットが、前記スレッド識別子値を第1のバスを介して前記コプロセッサに通信する、プロセッサ。
【請求項5】
請求項1に記載のプロセッサであって、前記セキュアメモリが、前記第1のバスを介して前記コプロセッサに結合され、前記セキュアメモリが、前記セキュアメモリへのアクセスを制限するファイアウォール機能を更に含み、前記ファイアウォール機能を介して前記コプロセッサが前記セキュアメモリに結合される、プロセッサ。
【請求項6】
請求項1に記載のプロセッサであって、前記コプロセッサを前記セキュアメモリに結合する第2のバスを更に含む、プロセッサ。
【請求項7】
請求項1に記載のプロセッサであって、前記中央処理ユニットと、前記セキュアメモリと、前記コプロセッサとが、単一の集積回路において実現される、プロセッサ。
【請求項8】
請求項1に記載のプロセッサであって、各キーエントリにストアされた前記キーデータが、前記セキュアメモリにおけるメモリアドレスを含み、前記セキュアメモリがまた、複数の暗号キーを、前記複数のキーエントリの各々における前記キーデータに対応する前記セキュアメモリにおけるメモリアドレスにおいてストアするためである、プロセッサ。
【請求項9】
請求項1に記載のプロセッサであって、各キーエントリにストアされた前記キーデータが暗号キーを含む、プロセッサ。
【請求項10】
請求項1に記載のプロセッサであって、前記中央処理ユニットが複数のプロセッサコアを含み、前記スレッド識別子値が、前記カレントスレッドを実行する前記複数のプロセッサコアのうちの1つのプロセッサコアの識別子を含む、プロセッサ。
【請求項11】
中央処理ユニットと、コプロセッサと、セキュアメモリとを含むプロセッサにおいて暗号動作を実行する方法であって、前記方法が、
複数のキーエントリを前記セキュアメモリにストアすることであって、各キーエントリが、キー識別子に関連付けられ、各キーエントリが、スレッド所有者フィールドと、暗号キーに対応するデータをストアするキーデータフィールドとを含むこと、
前記中央処理ユニットにおけるカレント実行スレッドにおいて、前記カレント実行スレッドに対応するキー識別子及びスレッド識別子と連携して、コマンドを前記コプロセッサに発行すること、
前記キー識別子に対応するキーエントリを前記セキュアメモリから検索するように、前記コプロセッサを動作させること、
前記検索されたキーエントリにおける前記スレッド所有者フィールドのコンテンツを、前記コマンドに対する前記スレッド識別子と比較すること、
前記比較に応答して、前記検索されたキーエントリにおける前記スレッド所有者フィールドが前記コマンドに対する前記スレッド識別子にマッチすると判定し、前記検索されたキーエントリに対応する前記暗号キーを前記セキュアメモリから検索すること、及び
前記検索された暗号キーを用いて暗号動作を実行するように前記コプロセッサを動作させること、
を含む、方法。
【請求項12】
請求項11に記載の方法であって、コマンドを前記コプロセッサに発行することが、
前記コマンド及び前記キー識別子を、前記プロセッサにおける第1のバスを介して前記中央処理ユニットから前記コプロセッサに通信すること、及び
前記第1のバスとは別のサイドバンド信号通信経路として、前記スレッド識別子を前記中央処理ユニットから前記コプロセッサに通信すること、
を含む、方法。
【請求項13】
請求項12に記載の方法であって、前記カレント実行スレッドが、前記中央処理ユニットにおけるオペレーティングシステム下の複数の実行スレッドの1つに対応し、前記スレッド識別子を通信することが前記オペレーティングシステム下で実施される、方法。
【請求項14】
請求項11に記載の方法であって、
前記スレッド識別子を前記コプロセッサにおけるレジスタにストアすることを更に含み、
コマンドを前記コプロセッサに発行することが、前記コマンド及び前記キー識別子を、前記プロセッサにおける第1のバスを介して通信し、
前記比較することが、前記検索されたキーエントリにおける前記スレッド所有者フィールドのコンテンツを前記レジスタの前記コンテンツと比較する、
方法。
【請求項15】
請求項14に記載の方法であって、前記カレント実行スレッドが、前記中央処理ユニットにおけるオペレーティングシステム下の複数の実行スレッドの1つに対応し、
前記スレッド識別子をストアすることが、
前記オペレーティングシステム下で、前記第1のバスを介して前記スレッド識別子を前記コプロセッサに通信すること、及び
前記オペレーティングシステム下で、前記通信されたスレッド識別子を前記レジスタに書き込むこと、
を含む、方法。
【請求項16】
請求項11に記載の方法であって、
コマンドを前記コプロセッサに発行することが、前記プロセッサにおける第1のバスを介して、前記コマンド及び前記キー識別子を前記中央処理ユニットから前記コプロセッサに通信し、
前記キーエントリを検索するように前記コプロセッサを動作させること及び前記暗号キーを検索することが、前記コプロセッサを前記セキュアメモリに結合する第2のバスを介して実施される、
方法。
【請求項17】
請求項11に記載の方法であって、前記暗号キーを検索することが、前記検索されたキーエントリのキーアドレスポインタフィールドにストアされたメモリアドレスにおいて前記セキュアメモリにアクセスすることを含む、方法。
【請求項18】
請求項11に記載の方法であって、前記暗号キーを検索することが、前記検索されたキーエントリのキーデータフィールドの前記コンテンツを検索することを含む、方法。
【請求項19】
請求項11に記載の方法であって、前記比較に応答して、前記検索されたキーエントリにおける前記スレッド所有者フィールドが前記コマンドに対する前記スレッド識別子にマッチしないと判定し、エラーメッセージを前記コプロセッサから前記中央処理ユニットに発行することを更に含む、方法。
【請求項20】
請求項11に記載の方法であって、前記中央処理ユニットが複数のプロセッサコアを含み、前記スレッド識別子値が、前記カレント実行スレッドを実行する前記複数のプロセッサコアの前記1つの識別子を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、全般的に、データセキュリティに関し、特に、プロセッサアーキテクチャ内の計算セキュリティ
【背景技術】
【0002】
データ通信のセキュリティは、スーパーコンピュータ等の大規模システムから埋め込みプロセッサ等の最小規模のシステムに至るまで、実質的にあらゆるタイプの電子システムに対して重大な問題である。実際に、セキュリティは、IoT(Internet of Things)における配備を想定したセンサーやアクチュエータ等の小規模システムに対する主要な問題となりつつある。幅広い範囲のサービス及び用途にわたって大量に実装されるこれらの高度に分散したIoT対象物は、それらの比較的小さい計算容量及び遠隔実装を考慮すると、攻撃やセキュリティ侵害(compromise)に対して特に脆弱であり得る。しかしながら、これらのセンサー及びアクチュエータのネットワークによって果たされる機能の重要性はセキュリティ危険度を増大させている。
【0003】
デジタルデータ暗号法の分野において、データ通信、データ保存及び検索、及び、埋め込みプロセッサによって実施され得るものを含むその他の用途に用いられ得るような、様々なアプローチが知られている。概して、暗号法の分野は、データ暗号化及び解読、デジタル認証(例えば、署名/検証方式)等を含む。公開キー暗号法は非対称暗号法とも呼ばれ、一般的に用いられるタイプの暗号法である。このアプローチに従って、各キーがデータ又は情報のブロックである「キー」の公開/秘密ペアが、特定のアルゴリズムに従って生成される。公開キー及び秘密キーは、生成多項式に基づいて互いに逆の関係を有し、そのため、送信ノードがペアのキーの一方を用いて通信を確保し、受信ノードが他方のキーを用いて通信を解読又は検証する。より具体的には、データ暗号化のコンテキストにおいて、公開キーを用いて暗号化されたデータのブロックが秘密キーを用いて解読され得る。認証のコンテキストにおいて、秘密キーを用いて生成されたデジタル署名が公開キーを用いて検証され得る。公開キー及び秘密キーは、難解な数学的問題(通常「トラップドア関数」と称される)を介して互いに関係しているため、その対応する既知の公開キーの知識から秘密キーを判定することは計算上困難である。従って、秘密キーの保持者と公開キーを取得する人との間のデータ通信データを可能にするために、セキュアでない通信によって送られる又は公開レジストリにリストされる等、公開キーは公開され得、秘密キーが攻撃者によって計算され得る現実的なリスクは無い。公開/秘密キーアプローチは、秘密キーの保持者が、そのキーを任意の他の当事者と共有することを要求されないので、概して好ましい。これに対して、対称キーアプローチは、双方が同一の暗号化キーを知ることを必要とする。
【0004】
特定の公開キー方式によって提供されるセキュリティのレベルは、概してキーの長さに対応する。つまり、キーの長さが長くなると、公開キーから秘密キーを導出する難度が増加する。「DH」、「DSA」、及び「RSA」等の暗号法アルゴリズムの下では、公開キー及び秘密キー双方に対する従来のビット長は、1024ビットの規模から15360ビットの範囲である。キーの長さは、所望のセキュリティレベル及び暗号化及び解読ノードの利用可能な計算容量に応じて、広範囲に変動し得る。より具体的には、電子システムにおいて実装されるセキュリティのレベルを上げることは、一層高いセキュリティレベルに関連する一層長いキーに対してマシンサイクル数の増加及びメモリスペースの増加が必要となるので、対価としてシステム性能が概して低下する。
【0005】
このトレードオフは、システムプロセッサにおける暗号処理専用のハードウェアベースのアクセラレータの実装によって大きく緩和され得る。テキサス・インスツルメンツ・インコーポレイテッドから入手可能なSITARA AM335xプロセッサは、IoT応用例に用いられ得るような、そのような専用ハードウェアベースのセキュリティアクセラレータが実装される埋め込みプロセッサの例である。このタイプのアーキテクチャにおいて、暗号化、解読、及びその他の暗号法機能に関連する計算集約的動作は、中央処理ユニットによってセキュリティアクセラレータにオフロードされる。これによって、中央処理ユニットは、その処理帯域幅をエンドユーザ応用例に使うことが可能になり、暗号動作によってシステムスループットが大きく影響されることはない。
【0006】
図1は、ハードウェアベースのセキュリティアクセラレータを備える例示の従来の埋め込みプロセッサの一般的な機能アーキテクチャ及び動作を図示する。この例において、中央処理ユニット(CPU)2は、上述のSITARA AM335xプロセッサに用いられるようなARM CORTEX−A8 CPU等の従来のマルチコアプロセッサである。CPU2は、そのアプリケーションをLINUX等の従来のオペレーティングシステム下でマルチスレッド環境において実行する。図1において、CPU2はオペレーティングシステム4の下で3つのスレッドT1、T2、T3を走らせている。種々のスレッドT1、T2、T3は、オペレーティングシステム4におけるスケジューラ機能に従ってCPU2によって実行され、その際、オペレーティングシステム4は、図1に示すように、実行されているカレントスレッドの識別子をCPU2のスレッドIDレジスタ9に書き込む。このスレッドIDは、あるスレッドの別のスレッドによる成りすましを防止するため、オペレーティングシステム4の制御下でCPU2のハードウェアによって管理される。
【0007】
図1の従来のプロセッサは暗号コプロセッサ5を含み、暗号コプロセッサ5は、バスSYS_BUSを介するCPU2との通信においてハードウェアベースのセキュリティアクセラレータとして動作し、データブロックの暗号化及び解読等の暗号動作の実行専用である。このアーキテクチャにおいて、暗号コプロセッサ5は、セキュアメモリブロック6と連携してこれらの動作を実施し、セキュアメモリブロック6は、専用バスDED_BUSを介してコプロセッサ5がアクセス可能なメモリリソースの一部又は全部である。典型的には、セキュアメモリブロック6へのアクセスは、CPU2及び埋め込みプロセッサにおけるその他の汎用ロジック及びI/O機能を除外して、コプロセッサ5に制限されている。
【0008】
この従来のアーキテクチャにおいて、暗号コプロセッサ5及びセキュアメモリブロック6は、CPU2によって実行されている種々のスレッドT1〜T3に共通の共有リソースとして働く。1つのスレッドから別のスレッドへの実行の切り替えは、マルチスレッド環境においてよく実施されるが、そのスレッドの実行の再開の際に後に検索するため、一時停止されているスレッドから実行「コンテキスト」のストアを必要とする。このコンテキストは、レジスタコンテンツ、実行状態、設定、及び、ロジック回路要素にスレッドの実行を、あたかもその間に介在するスレッドが扱われなかったかのように、それが停止された同じ場所において再開させるためのその他の情報を含む。暗号動作に関し、このコンテキストは、特定のスレッドにおいて用いられている暗号キーを含む。この従来のアーキテクチャにおいて、セキュアメモリブロック6は、暗号法コンテキストの、具体的には、コプロセッサ5による暗号動作において用いられるキーの、ローカルストレージを提供することによって、前回の動作とは異なる実行スレッド下で暗号動作を実行するためのコマンドを受け取る際に、コプロセッサ5による高速コンテキスト切り替えを可能にする。
【0009】
図1に示されるように、複数の暗号キー(即ち、複数のスレッドコンテキスト)をストアするために、セキュアメモリブロック6において複数のキーエントリ8が利用可能であり、それにより、コプロセッサが、各々がそれら独自の秘密キー、公開キー、又は対称(共有)キーを有する、複数の動作及び通信チャネルを実行できる。この典型的な従来の配置において、各キーエントリ8
xは、キー「タグ」、又は、特定のキーを識別及び参照するその他の識別子KEY IDと呼ばれ得る。エントリ8のコンテンツは各々、キーそのものをストアするための、又はキーがストアされるセキュアメモリブロック6内の別の位置を参照するアドレスポインタをストアするためのKEYフィールドを含む。幾つかの従来のアーキテクチャにおいて、KEY ATTRフィールドは、そのキーが用いられることが許可されている暗号動作のタイプ(即ち、暗号化、解読、認証、署名)、及びそのキーの暗号法のタイプ(AES、PKA等)を示す。図1に4つのキーエントリ8
1〜8
4が示されているが、セキュアメモリブロック6は、適宜、これより多い又は少ないエントリを含み得る。
【0010】
このアーキテクチャにおいて、CPU2は、バスSYS_BUSによって暗号コプロセッサ5と通信する。カレント実行スレッドにおいて暗号動作を呼び出すために、CPU2は、実施されるべき動作のタイプを示すコマンド、それらの動作が実施されるべきデータ、及びその動作において用いられるべき暗号キーに対するキーエントリ8
xを示すキー識別子KEY IDの値を含んで、コールをバスSYS_BUSを介してコプロセッサ5に発行する。そのキーがコプロセッサ5によって現在用いられているキーと異なる場合、これはオペレーティングシステム4がCPU2において実行を1つのスレッドから別のスレッドに切り替えた場合に典型的に起こるが、コプロセッサ5は、その前回のキーに対するセキュアメモリブロック6内のキーエントリ8
xにおいてカレントキー及び他のコンテキストをストアし、CPU2から新たに受け取ったKEY ID値に対応するキーエントリ8
xに対するキーを検索することによって、コンテキスト切り替えを実施する。所望の暗号動作を完了すると、暗号コプロセッサ5はバスSYS_BUSを介して結果をCPU2に通信する。
【0011】
幾つかの従来のプロセッサアーキテクチャにおいて、暗号コプロセッサは、「公開」又は「秘密」モードのいずれかで動作し得る。これらのアーキテクチャにおいて、公開モードは、このモードにおいて複数のスレッド間で共有され得る1つの暗号キーに関連付けられ得、一方、秘密モードは、このモードにおいて、同じく複数のスレッド間で共有され得る異なる暗号キーに関連付けられ得る。
【0012】
更なる背景として、幾つかの従来のプロセッサアーキテクチャは、暗号コプロセッサの外でコンテキスト切り替えを実施する。これらのアーキテクチャにおいて、オペレーティングシステムは、CPU又はコプロセッサを呼び出す他のプロセッサにおいてコンテキスト切り替えを実施し、コプロセッサにおける前回のスレッドのコンテキストを現在まで「クリーンアップ」する。このアプローチにおいて、コプロセッサは、所望される場合、次のスレッドによりそのキーをリライトさせること以外、コンテキスト切り替えに関与しない。
【0013】
更なる背景として、幾つかの従来のプロセッサアーキテクチャでは、暗号コプロセッサにおいて公開及び秘密モードに対して別個のレジスタが提供される。これらの論理的に分割されたレジスタは、秘密ドメインにおいてコプロセッサによって用いられる暗号キー及びその他の設定及び情報を、公開ドメインにおいて用いられるものから隔離し、逆もまた同様である。この配置において、1つのドメインから他のドメインへのコンテキスト切り替えにおいてクリーンアップは必要とされない。
【発明の概要】
【0014】
説明される例において、中央処理ユニット(CPU)が、マルチスレッド環境において動作する。CPUは、キーを用いて暗号化及び解読等の暗号動作を実行するように、暗号コプロセッサにコールを発行する。コプロセッサによりアクセス可能なセキュアメモリブロックが、複数のキーエントリをストアし、各キーエントリは、実行スレッドがそのキーに関連付けられる(そのキーを所有する)ことを識別するスレッド識別子に関連付けられる暗号キーをストアする。暗号動作のためのコプロセッサコールが発行されると、CPUは、用いられるべきキーのキー識別子及びスレッド識別子をコプロセッサに通信する。コプロセッサは、CPUから受け取ったスレッド識別子を、所望のキーを備えてセキュアメモリにストアされたスレッド識別子と比較して、コールしているスレッドがキーを所有しているか否かを判定し、そうであれば、コプロセッサが暗号動作に用いるために、そのキーがセキュアメモリブロックから検索される。スレッド識別子がマッチしない場合、リクエストされた動作は実施されない。
【図面の簡単な説明】
【0015】
【図1】従来の埋め込みプロセッサのアーキテクチャの一部のブロック形式での電気回路図である。
【0016】
【図2】実施形態に従って構成された埋め込みプロセッサのブロック形式での電気回路図である。
【0017】
【図3】実施形態に従った図2のプロセッサの、中央処理ユニット、暗号コプロセッサ、及びセキュアメモリブロックのアーキテクチャのブロック形式での電気回路図である。
【0018】
【図4】実施形態に従った図3のアーキテクチャの動作を図示するフローチャートである。
【0019】
【図5】別の実施形態に従った図2のプロセッサの、中央処理ユニット、暗号コプロセッサ、及びセキュアメモリブロックのアーキテクチャのブロック形式での電気回路図である。
【発明を実施するための形態】
【0020】
プロセッサ及び動作方法の例示の実施形態において、暗号動作が、マルチスレッド環境におけるハードウェアベースのセキュリティアクセラレータにおいて、システム性能を低下させることなく、より高いレベルのセキュリティで実施される。そのようなプロセッサ及び方法は、暗号動作の目的に対して、スレッド間の改善された隔離を提供する。また、このようなプロセッサ及び方法は、セキュリティアクセラレータにおいて高速コンテキスト切り替えを達成する。
【0021】
本明細書において説明する1つ又は複数の電子システムにおけるマイクロコントローラ等の埋め込みプロセッサの中に実装され、そのような実装は、そのコンテキストにおいて特に有利である。しかしながら、例示のスマートフォン、タブレットコンピュータ、ノートブック、及びその他、パーソナルコンピュータ、サーバー等を含む大規模プロセッサ及びシステム等の他の応用例において有益に適用され得る。
【0022】
従来の埋め込みプロセッサは、暗号コプロセッサによって実施されるような暗号動作に関連して、「攻撃」に対して脆弱であり得る。例えば、図1に関して上述された従来のアーキテクチャを参照すると、第1の実行スレッドが、第1のキーを用いてデータのブロックを暗号化するために、コールをコプロセッサ5に発行し得る。コンテキスト切り替えに続き、その第1のキーはセキュアメモリブロック6にストアされる。セキュアメモリブロック6は、複数のCPUスレッドに対する暗号動作のためのコンテキストデータをローカルにストアする。このタイプの攻撃では、異なるスレッドで実行している悪意のあるソフトウェアが、暗号化されたデータを取得するためにCPU2とコプロセッサ5との間のバスSYS_BUSを監視する。その後、セキュアメモリブロック6に現在ストアされている第1のキー、即ち、それを用いてデータが暗号化されたキー、を用いてデータのそのブロックを解読するために、コールをコプロセッサ5に発行する。即ち、図1に関連して上述された従来のコプロセッサアーキテクチャは、スレッド間の暗号キーに対するセキュリティを提供しない。
【0023】
これらの実施形態に従って、コプロセッサシステムのセキュアメモリにおける各キーエントリを特定のスレッドに結び付けることによりこの脆弱性は排除される。一実施形態において、キーエントリは、そのスレッドがキーエントリに関連付けられるキーを「所有」していること、即ち、それがそのキーをプロセッサに提供したスレッドであることを識別するフィールドを含む。コプロセッサによりアクセスされるべきキーに関し、そのキーを動作に用いるためにコプロセッサをコールしているスレッドは、そのキーに対するキーエントリにおいて識別されるスレッド所有者にマッチしなければならない。
【0024】
図2は、これらの実施形態に従った、センサー、コントローラ、又はIoTのコンテキストにおける配備に適したその他の電子システムに実装され得るような埋め込みプロセッサ10の全体のアーキテクチャを図示する。上述したように、これらの広範な応用例のための様々な規模の電子システムに配備される種々のアーキテクチャのプロセッサ回路要素に実装され得る。この実施形態における埋め込みプロセッサ10のアーキテクチャは、テキサス・インスツルメンツ・インコーポレイテッドから入手可能なSITARA AM335x ARMプロセッサのようなデバイスの全体的なアーキテクチャに従うが、これ以降に説明する実施形態の1つに従って付加的に構成される。このアーキテクチャに従ったプロセッサ10は、通常、単一の集積回路として実現され得るが、代替的に、複数の集積回路として(例えば、「チップセット」又はマルチモジュールデバイスとして)実現され得る。また、本明細書において説明される機能ユニットより多くの又はより少ない機能ユニットが、これらの実施形態に従ったプロセッサ10に含まれ得る。
【0025】
図2に示されるように、プロセッサ10は複数の異なる機能ユニットを含む。明確にするため図2にはバス接続は示されていない。中央処理ユニット(CPU)12が、プロセッサ10のメインプログラマブルロジックとして働き、上述のSITARA AM335xプロセッサファミリーにおけるような、例えば、ARM CORTEX−A8等のマルチコアプロセッサとし得る。この実施形態において、CPU12は、そのアプリケーションプログラム等をマルチスレッド環境において実行するのに適している。CPU12は、メインシステムバス(図示されない)を介する等、システムメモリ14に関連して動作する。システムメモリ14は、CPU12、及びプロセッサ10における他の機能に対して有用な、適切なプログラム及びデータメモリを含み、SRAM等の揮発性メモリ、及びEEPROM又はフラッシュメモリ等の不揮発性メモリを含む、異なるタイプのメモリの複数のブロック又はアレイとして実現され得る。
【0026】
この実施形態に従ったプロセッサ10に提供されるその他の機能ユニットとしては、プロセッサ10内のグラフィックコプロセッサ(図示されない)を含み得るか又はグラフィックコプロセッサとともに働き得るディスプレイコントローラ18、及び、例えば、EtherCAT、PROFIBUS、PROFINET、及びEtherNet/IPプロトコル等の1つ又は複数の従来のプロトコルを介して、プロセッサ10とIoTにおける他のデバイスとの間の通信をサポートする種々のプログラマブルリアルタイムユニット20が含まれる。プロセッサ10は、レベル3/4相互接続バス22を介してCPU12にアクセス可能である付加的なインタフェースを含み、それらにはシリアルインタフェース24(例えば、USB及びEMACインタフェース)、パラレルインタフェース26(例えば、SDIO及びGPIOインタフェース)、及び、DRAM又はプロセッサ10外部のその他のメモリとインタフェースするために用いられ得るようなメモリインタフェース28が含まれる。例えば、タイマー、オシレータ、DMA機能、アナログデジタルコンバータ(ADC)及びデジタルアナログコンバータ(DAC)等の広範なシステム周辺機器26もプロセッサ10内に含まれ得る。
【0027】
これらの実施形態に従って、プロセッサ10は、例えば、データ暗号化、データ解読、認証等の動作を含む種々の暗号動作を安全に実行することができる。通常、これらの暗号動作は、計算集約的であり、多数のプロセッササイクル及びかなりのメモリリソースを消費する。特にそのCPU12に関連して、その全体的な性能及び帯域を改善するため、この実施形態に従ったプロセッサ10は、暗号動作のためのソフトウェアルーティンの実行専用であるプロセッサコア等のプログラマブルロジック機能である暗号コプロセッサ15を含む。このアーキテクチャにおいて、コプロセッサ15はセキュアキーメモリ16と連携して動作する。これ以降に更に説明するように、セキュアキーメモリ16は、コプロセッサ15による暗号動作の実行に用いられる暗号キーをストアするための適切なメモリスペース及び機構を含む。セキュアキーメモリ16は、それに対するアクセスがコプロセッサ15と、おそらくプロセッサ10におけるその他の特定の回路機能とに制限され得、他の回路機能は除外するという意味で、「セキュア」であると考えられる。この意味において、セキュアキーメモリ16は、セキュアキーメモリ16とコプロセッサ15との間に走る専用メモリバスを用いて、システムメモリ14及びプロセッサ10における他のメモリリソースとは物理的に分離し得る。或いは代替として、セキュアキーメモリ16は、それに対するアクセスが「ファイアウォール」又は他のセキュリティ動作によって制限されるシステムメモリ14の一部として実現され得る。セキュアキーメモリ16の他に、コプロセッサ15によって実行され得る暗号ソフトウェアルーティン及び他のプログラムコードをストアするプログラムメモリがプロセッサ10に提供されている。このプログラムメモリは、セキュアキーメモリ16の一部又はシステムメモリ14の一部とし得、或いは代替として、コプロセッサ15内の又はコプロセッサ15にアクセスし得る別のメモリリソースとし得る。
【0028】
本明細書で説明する実施形態及び他の代替プロセッサアーキテクチャは、特定の応用例に適している。
【0029】
図3を参照し、一実施形態に従った暗号コプロセッサ15の動作に関して、プロセッサ10のアーキテクチャを説明する。上述したように、この実施形態におけるCPU12は、オペレーティングシステム13をサポートするマルチコアプロセッサであり、マルチスレッド環境において動作可能であり、図3に示される例では、n個のスレッドT1〜Tnを走らせている。CPU12は、スレッドIDレジスタ11を含み、スレッドIDレジスタ11は、CPU12によって実行されているカレントスレッドの識別子をストアする。このスレッド識別子は、実装に応じて種々の形式を取り得る。例えば、マルチコアアーキテクチャにおいて、スレッド識別子は、そのスレッドを実行するコアとは関係なく実行スレッドの各々にアサインされているラベルで構成され得、或いは代替として、そのコア上のスレッド間で区別するスレッド識別子との組み合わせでそのスレッドを実行するCPUコアの識別子で構成され得る。オペレーティングシステム13は、スレッドIDの形式に関係なく、種々の実行スレッドT1〜Tnのスケジューリング及び切り替えを制御し、それ自体が、スレッドIDレジスタ11のコンテンツを、カレントスレッド識別子と共に書き込む。この実施形態において、オペレーティングシステム13は、アプリケーションソフトウェア等の他のソフトウェアルーティンよりも高い特権レベルを有し、そのため、オペレーティングシステム13は、より低い特権ソフトウェアルーティンの実施を除外して、スレッドIDレジスタ11のコンテンツを書き込むことができる。カレントスレッド及びスレッドIDレジスタ11のこの「ハードウェア」設定は、このマルチスレッド環境において1つのスレッドが別のスレッドに「成りすますこと」を防止する。
【0030】
この実施形態において、CPU12は、プロセッサ10のメインデバイスバスファブリック32を介して、コプロセッサ15に結合され、コプロセッサ15と通信する。デバイスバスファブリック32は、システムメモリ14、及び図3に関連して上述したようなプロセッサ10の他の機能等を含む、プロセッサ10の種々の機能間で、メモリアドレス、データ、及び制御情報を通信するための適切な導体を含む。
【0031】
デバイスバスファブリック32に加えて、CPU12は、「サイドバンド」信号を介して暗号コプロセッサ15にも結合される。これらの実施形態において、サイドバンド信号とは、デバイスバスファブリック32とは別個のハードウェア通信経路(サイドバンド経路)SCを介してCPU12からコプロセッサ15に通信されるデータ及び制御情報信号を指す。例えば、サイドバンド経路SCは、プロセッサ10を実装する集積回路において、1つ又は複数の導体によって実現され得、それらは、デバイスバスファブリック32とは別個であり、そのため、デバイスバスファブリック32上にある機能によってアクセスされることはない。従って、サイドバンド経路SCを介して送信されるサイドバンド信号は、デバイスバスファブリック32を「スヌーピングする」回路又は機能から見えない又は理解され得ない。この実施形態において、これらのサイドバンド信号は、暗号動作に対するコールと関連して、スレッドIDレジスタ11のコンテンツ、即ち、CPU12による現在実行されているスレッドの識別子を、CPU12からコプロセッサ15に安全に通信する。
【0032】
この実施形態において、コプロセッサ15は、デバイスバスファブリック32及びサイドバンド経路SCを介したCPU12からのコールに応答した暗号動作をコプロセッサ15が実行する際に有用な機能回路要素を含む。この機能回路要素はキーアクセス状態機械34を含み、キーアクセス状態機械34は、CPU12によってコールされたタスクに関連付けられる暗号キーを検索するためにセキュアメモリブロック16と通信するようにコプロセッサ15において実装されるシーケンシャルロジックである。コプロセッサ15はアクティブキーストア36も含み、アクティブキーストア36は、状態機械34によってセキュアメモリブロック16から検索された暗号キーをストアするためのメモリブロック又はレジスタ位置である。この実施形態において、キーアクセス状態機械34は、プロセッサ10のメインデバイスバスファブリック32を介して、セキュアメモリブロック16から暗号キーを検索する。その部分に関し、セキュアメモリブロック16は、ファイアウォール35を介してデバイスバスファブリック32とインタフェースし、ファイアウォール35は、暗号キー及び関連する情報をストアするセキュアメモリブロック16のそれらの部分へのアクセスを、プロセッサ10の通常動作の間の他の機能を除外して、暗号コプロセッサ15のみに制限するロジック回路要素によって構成される。幾つかの実施形態において、ファイアウォール35は、CPU12それ自体等の他の機能にも、「セキュア」プロセスの範囲内で、セキュアメモリブロック16にアクセスさせるように配置され得る。例えば、セキュアメモリブロック16に暗号キーをロードするために、セキュアプロセスがCPU12によって実行され得る。
【0033】
或いは、コプロセッサ15は、図3に点線で示されるバス33によって示唆されるように専用バスを介して、セキュアメモリブロック16に結合され得る。この代替アプローチにおいて、セキュアメモリブロック16は、デバイスバスファブリック32に結合されない場合があり得る。その場合、セキュアメモリブロック16は、暗号コプロセッサ15によって又は暗号コプロセッサ15を介してのみアクセスされ得る。この代替構造は、セキュアメモリブロック16がキーストレージにのみ専用であり、その他のセキュア機能に対して利用可能な他のメモリスペースを含まない応用例において有用であり得る。
【0034】
この実施形態において、セキュアメモリブロック16の全て又は一部が、暗号コプロセッサ15に対する専用キーストレージ管理メモリとして働く。図3に示されるように、セキュアメモリブロック16の或る領域が、CPU12によってコールされた暗号動作においてコプロセッサ15によって用いられるための複数の暗号キー40
1〜40
4(総称してキー40)をストアする。これらの暗号キー40は、互いに異なるタイプ及びサイズであり得る。例えば、キー40
1及び40
4は各々、AES128キーであり得、キー40
2はPKAキーであり得、キー40
3はAES256キーであり得る。特に、サイズが相対的に大きいこと及びキーのタイプ及びサイズが変化することに起因して、これらのキー40は、これ以降に説明するように、間接的なアドレスを用いてアクセスされる。
【0035】
この実施形態において、セキュアメモリブロック16は、複数のキーエントリ25
1〜25
4(総称して、エントリ25)がストアされる領域を含む。4つのキーエントリ25
1〜25
4が、この例について図3に示されているが、セキュアメモリブロック16は、適宜これより多くの又はこれより少ないキーエントリ25を含み得る。これに関し、各キーエントリ25
xは、対応する暗号キー40
xに関連する複数のフィールドを含む。上述のようにキー40に間接的にアクセスする目的のため、この実施形態における各キーエントリ25
xは、キーアドレスポインタフィールド38
xであり、キーアドレスポインタフィールド38
xは、その対応するキー40
xがストアされているセキュアメモリブロック16のメモリアドレスをストアする。図3に示される間接的アドレス配置の代替として、各エントリ25
xにおけるフィールドが、キーアドレスポインタフィールド38
xの代わり等に実際のキー40
x自体をストアし得る。この配置は、タイプ及びサイズが類似のショートキーに適し得る。また図3に示すように、各キーエントリ25
xは、その対応するキー40
xの暗号法のタイプ(例えば、PKA、AES等)を識別するキー属性フィールド39
xを含み、また、そのキー40
xが用いられ得る動作のタイプ(暗号化/解読、署名/認証等)等の許可も含み得る。
【0036】
この実施形態に従って、各キーエントリ25
xは、図3にキー識別子フィールド37
xとして示されるタグ又は識別子に関連付けられ、それによって、コプロセッサ15は、その特定のキーエントリ25
xにアクセスする。例えば、CPU12によるコプロセッサ15に対するコールは、その動作において用いられるべき暗号キー40
xに対応するキー識別子フィールド37
xのコンテンツに対応するキー識別子値を含み得る。CPU12からこのキー識別子値を受け取るキーアクセス状態機械34は、その後、対応するキー40
xに対するキーアドレスポインタ38
xを検索するため、コンテンツアドレス可能メモリ又はキャッシュタグアレイに類似する方式で、その値を用いてセキュアメモリブロック16におけるキーエントリ25
xにアクセスし得る。或いは、キーアクセス状態機械34は、CPU12によって通信されるキー識別子値を、セキュアメモリブロック16における対応するキーエントリ25
xに対するメモリアドレスに変換するためにルックアップテーブルを用いること等により、メモリアドレスを用いてセキュアメモリブロック16からキー40
xを検索し得る。
【0037】
この実施形態に従って、各キーエントリ25
xはスレッド所有者フィールド30
xを含む。スレッド所有者フィールド30
xはスレッド識別子値をストアし、スレッド識別子値は、キーエントリ25
xに関連付けられる暗号キー40
xを「所有する」、CPU12におけるスレッドT1〜Tnの1つを識別する。より具体的には、このスレッド所有者フィールド30
xのコンテンツは、もともとその暗号キー40
xをコプロセッサ15に提供した実行スレッドであって、従って、キー40
xが関連付けられ、コンテキスト切り替えに関連してセキュアメモリブロック16にストアされるスレッドに対するスレッド識別子である。実行スレッドがCPU12において設定されると、これらのスレッド識別子値は、オペレーティングシステム13によってアサインされ、マルチスレッド環境において動作する従来のプロセッサと同様に、実行中のカレントスレッドとしてCPU12のスレッドIDレジスタ11にストアされる。他の基準又は動作が、その特定のキーをどのCPUスレッドが所有していると考えられるかを判定し得る。
【0038】
図4を参照し、一実施形態に従ったプロセッサ10における暗号動作の実行を説明する。プロセス42において、コプロセッサ15及びセキュアメモリブロック16に、CPU12によって1つ又は複数の暗号キーが「供給される」。例えば、CPU12によって実行されているカレントスレッド(例えば、スレッドT1)が「store key(キーをストアする)」命令を含み得、それによって、サイドバンド経路SCを介するカレントスレッドT1に対するスレッドIDとともに、暗号キーがデバイスバスファブリック32を介してコプロセッサ15に転送される。或いは代替として、提供プロセス42は、特定のキーを用いてコプロセッサ15によって実施されるべき暗号動作(例えば、データのブロックの暗号化)に対するコマンドを発行するCPU12によって実施され得る。いずれの場合においても、関連するコマンドが、用いられるべきキー及びその動作が実施されるべきデータとともにデバイスバスファブリック32を介してCPU12によって転送され、カレント実行スレッドに対するスレッドID(例えば、T1)がサイドバンド経路SCを介してCPU12によって転送される。プロセス44において、コプロセッサ15はキーをセキュアメモリブロック16にストアする。このプロセス44は、コプロセッサ15におけるコンテキスト切り替え時に(異なるスレッド、例えばスレッドT3が暗号動作をコールするときに)、又は明示的な「store key」命令に対する即時の応答として、実施され得る。図3に示されるメモリ配置に関し、プロセス44のメモリ書き込みは、キー識別子(フィールド37
x)、及びフィールド39
xにおける適切な属性を参照して、エントリ25
xを生成すること、キーアドレスポインタ38
xにストアされるメモリアドレスにおいてキー40
x自体をストアすること、及び、このキーを提供するカレントスレッドに対するスレッドID値をこのキーエントリ25
xのスレッド所有者フィールド30
xにストアすることを含む。図3のプロセッサ10のアーキテクチャにおいて、これらのメモリ書き込み動作は、キーアクセス状態機械34によって、デバイスバスファブリック32を介して、ファイアウォール35によって許可されたセキュアメモリブロック16に対して行われる。
【0039】
この提供プロセス42及びストアプロセス44は、コプロセッサ15による後の使用のためにセキュアメモリブロック16において複数の暗号キーを設定する際に、CPU12により所望とされるように繰り返され得る。しかしながら通常は、これらのプロセス42、44は、セットのキー提供動作において実施されるのではなく、プロセッサ10によって実行されているアプリケーションプログラムの通常のプログラムフローにおいて必要とされるときに実施される。いずれの場合においても、プロセス44におけるキーのストアに続いて、コプロセッサ15は、プロセス45において待機状態に入り、CPU12からのコマンドを待つ。
【0040】
プロセス46において、CPU12は暗号動作を実行するためにコールをコプロセッサ15に発行する。図3のアーキテクチャにおいて、このコールは、所望の暗号動作に対応するコマンドとして、動作が実施されるべきデータ(又は、例えば、そのデータがストアされているシステムメモリ14のアドレス)、及びセキュアメモリブロック16にストアされているどの暗号キーが用いられるべきかを示すキー識別子値とともに、発行され得る。このキー識別子値は、キー識別子37
xに対応するタグであり得、それによってコプロセッサ15のキーアクセス状態機械34は、対応するキー40
xを検索するために、セキュアメモリブロック16における対応するエントリ25
xにアクセスし得る。或いは、このキー識別子値は、キー識別子37
xに到達するために、状態機械34が変換する値であり得る。上述したように、CPU12は、コマンド、データ(又はアドレス)、及びキー識別子値を、デバイスバスファブリック32を介してコプロセッサ15に転送する。また、プロセス46において、この実施形態に従って、CPU12はまた、そのスレッドIDレジスタ11にストアされているカレントスレッド識別子を、経路SCを介して通信されるサイドバンド信号によってキーアクセス状態機械34に転送する。上述のように、カレント実行スレッドのスレッドIDは、コンテキスト切り替えを実施する間などに、オペレーティングシステム13下でスレッドIDレジスタ11にストアされ、また、オペレーティングシステム13によってサイドバンド経路SCを介して「ハードウェアにおいて」通信される。スレッドIDレジスタ11の書き込み、及びサイドバンド経路を介するそのコンテンツの通信は、1つのスレッドにおいて実行されている悪意のあるアプリケーションプログラムソフトウェアコードが別のスレッドに成りすますことを防止するため、アプリケーションソフトウェア等の一層低い特権プロセスを除外して、オペレーティングシステム13の高い特権レベルに制限され得る。従って、プロセス46においてコマンド及びキー識別子とともに通信されたスレッドIDは、CPU12において実行される真のカレント実行スレッドを識別する。
【0041】
プロセス48において、このアーキテクチャに従ったCPU12におけるキーアクセス状態機械34は、プロセス46のこの例においてCPU12によって通信されたキー識別子値が対応するキーエントリ25
xにアクセスし、それに応答して、セキュアメモリブロック16が、そのキーエントリ25
xに対するスレッド所有者フィールド30
xのコンテンツを状態機械34に戻す。状態機械34は、その後、キーエントリ25
xからの、スレッド所有者フィールド30
xの検索されたコンテンツを、プロセス46においてサイドチャネル34を介してCPU12によって通信されたスレッドID値と比較することによって、判定49を実行する。判定49のこの比較は、特定のキー40
xを用いるためのコールを発行するカレント実行スレッドのスレッドIDを、もともとコプロセッサ15にそのキー40
xを提供した実行スレッド、即ち、そのキー40
xの「所有者」であるスレッド、のスレッドIDと比較する。CPU12からの、サイドバンド経路SCを介したスレッドID値が、アクセスされたキーエントリ25
xにおけるスレッド所有者フィールド30
xのコンテンツにマッチしない場合(即ち、判定49が「NO」の結果を戻す場合)、状態機械34は、カレントスレッドがプロセス46においてキー識別子によって識別された暗号キーを用いるための許可を持たないので、コプロセッサ15に対するそのコールが失敗したことをCPU12に示すエラーメッセージを、プロセス50においてデバイスバスファブリック32を介して発行する。その後、制御は、コプロセッサ15に対する次のコールを待つために待機状態45に移る。
【0042】
サイドバンド経路SCを介して状態機械34に通信されたスレッドIDが、プロセス48においてセキュアメモリブロック16から検索されたキーエントリ25
xにおけるスレッド所有者フィールド30
xのコンテンツにマッチする場合(判定49が「YES」の結果を戻す場合)、プロセス46においてコールされた暗号動作が進行し得る。プロセス54において、状態機械34は、キーエントリ25xのキーアドレスポインタフィールド38
xにストアされたセキュアメモリブロック16におけるメモリアドレスにアクセスすることによって、又は、キー40
xがキーエントリ25
x自体にストアされる場合にキーエントリ25
xの対応するフィールドを読み出すことによって、実際のキー40
xを検索し、キー40
xをコプロセッサ15のアクティブキーストア36にストアする。キー40
xがこの特定の動作に対して用いられ得ることを確実にするために、検索されたキーエントリ25
xのキー属性フィールド39
xにおける許可もチェックされ得る。そうであると仮定し、そのストアされたキー40
xは、その後、プロセス56において、所望の暗号動作を実行する際にコプロセッサ15によって用いられる。プロセス56のその動作が完了し、CPU12に結果が返送された後、コプロセッサ15は、次のコールを待つために待機状態45に戻る。
【0043】
よって、この実施形態に従って、マルチスレッド環境における1つの実行スレッドにおいて用いられる暗号キーに対するアクセスが、他の実行スレッドに使用されないように制限され得る。このようにキーを個々のスレッドに結び付けることで、別個のスレッドにおいて実行している悪意あるソフトウェアによる攻撃を排除することによって、セキュリティが主要な関心事であるIoTコンテキストにおいて実装されるもの等を含み、暗号コプロセッサを含むプロセッサベースのシステムにおける一層強化されたセキュリティが可能となる。この改善されたセキュリティは、暗号コプロセッサにおける高速コンテキスト切り替えを可能にし、メインプロセッサロジックを、コプロセッサコンテキスト切り替えを管理すること及び外部メモリにアクセスして、全体のシステム性能を劣化させることから解放することによって、達成される。
【0044】
図3に示される実施形態に関して説明したように、コールをコプロセッサ15に発行する実行スレッドに対するスレッドIDは、CPU12におけるスレッドIDレジスタ11からサイドバンド経路SCを介してコプロセッサ15に通信される。図5に示されるように、別の実施形態に従って、カレントスレッドIDレジスタ51が暗号コプロセッサ15’内に提供される。この実施形態において、オペレーティングシステム13は、たとえソフトウェアルーティンにコプロセッサ15’が関与していない場合でも、CPU12に、CPU12において実施されるスレッドコンテキスト切り替えの一部等として、カレントスレッドID値をデバイスバスファブリック32を介してコプロセッサ15’に転送させる。図3の実施形態におけるように、オペレーティングシステム13は、実行中のアプリケーションソフトウェア等の他のソフトウェアルーティンの特権レベルより高い、充分に高い特権レベルを持ち得、そのため、カレントスレッドIDレジスタ51のコンテンツを書き込むことができ、より低い特権レベルのソフトウェアルーティンはそうすることを禁じられる。そのため、この実施形態に従って、カレントスレッドIDは、コプロセッサ15’自体におけるレジスタ51にストアされる。動作において、カレント実行スレッドが、示された暗号キー40
xの所有者であるか否かを判定するための判定49(図4)における比較は、キーアクセス状態機械34によって、それ自体のスレッドIDレジスタ51のコンテンツを、検索されたキーエントリ25
xのスレッド所有者フィールド30
xのコンテンツと比較することによって実施される。図5のこの実施形態に従ったコプロセッサ15’の動作は、それ以外は図4に関連して上述された方法に従う。
【0045】
また代替例において、キーエントリのコンテンツは、特定の暗号キーを提供した(即ち「所有する」)スレッド以外のスレッドに、同じキーを用いる権限を与えられ得るように配され得る。この代替的な実装において、図4の判定49は、CPU12によって通信されるような又はオペレーティングシステム13によってコプロセッサ15自体にストアされるようなカレント実行スレッドに、そのキーを用いる権限を与えられているか否かを判定するためにキーエントリの対応するフィールドを評価し得る。権限が与えられていない場合はエラーメッセージが発行され得、権限が与えられている場合はカレントスレッド内で所望の動作が実行され得る。
【0046】
特許請求の範囲内で、説明された実施形態における変更が可能であり、他の実施形態が可能である。
【国際調査報告】