本開示の様々な実施形態及び態様は、以下で論じられる詳細を参照しながら説明され、図面には、上記様々な実施形態が示される。以下の説明及び図面は、本開示を例示するためのものであり、限定するものとして解釈されるべきではない。本開示の様々な実施形態を全面的に理解するために、多くの特定の詳細を説明する。ところが、いくつかの場合には、本開示の実施形態に対する簡単な説明を提供するために、周知又は従来技術の詳細について説明していない。
本明細書において、「一実施形態」又は「実施形態」とは、当該実施形態に組み合わせて説明された特定の特徴、構造又は特性が本願の少なくとも一実施形態に含まれてもよいと意味する。「一実施形態において」という表現は、本明細書全体において同一の実施形態を指すとは限らない。
本開示の第1の態様によると、データ処理システムは、ホストシステムのセキュリティモジュール(例えば、信頼できるプラットフォームモジュール(TPM))を利用して、セキュアブートを実行する。システムは、オペレーティングシステム(OS)と、データ処理(DP)アクセラレータに関連付けられているアクセラレーター・ドライバーを含む1つまたは複数のドライバーが、信頼できるソースによって提供されるか否かを検証する。システムは、OS内でアクセラレーター・ドライバーを起動する。システムは、ホストシステムの1つまたは複数のプロセッサに関連付けられている信頼できる実行環境(TEE)を作成する。システムは、TEEでアプリケーションとランタイムライブラリを起動する。ここで、アプリケーションは、ランタイムライブラリとアクセラレーター・ドライバーを介してDPアクセラレータと通信する。
第2の態様によると、システムは、バスを介してホストシステムとデータ処理( DP)アクセラレータの間で安全な接続(1つまたは複数のセキュアチャネルを持つ)を作成し、前記安全な接続は、1つまたは複数のコマンドチャネルおよび/またはデータチャネルを含む。一実施形態において、1つまたは複数のコマンドチャネルは、セキュリティ対策が施されていない可能性がある。前記システムは、前記コマンドチャネルを介して第1の命令をホストシステムからDPアクセラレータに送信する。前記第1の命令は、前記DPアクセラレータにデータ準備オペレーションを実行させるように請求する命令である。前記システムは、前記第1の命令に応じて、ホストシステムの第1のメモリ位置から第1のデータを読み出すための第1の請求を、データチャネルを介してDPアクセラレータから受信する。前記システムは、前記請求に応じて、前記ホストシステムの第1のメモリ位置から読み出した前記第1のデータをデータチャネルを介してDPアクセラレータに転送する。ここで、前記第1のデータは、計算またはコンフィギュレーションのオペレーションに使用される。前記システムは、前記コマンドチャネルを介して第2の命令を、ホストシステムから前記DPアクセラレータへ送信する。前記第2の命令は、前記DPアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。
一実施形態において、システムは、バスによってホストシステムとデータ処理(DP)アクセラレータの間で安全な接続を作成する。前記安全な接続は、1つまたは複数のコマンドチャネルおよび/またはデータチャネルを含む。前記コマンドチャネルは、セキュリティ対策が施されていない可能性がある。前記システムは、前記DPアクセラレータでコマンドチャネルを介して前記ホストシステムから第1の命令を受信する。前記第1の命令は、前記DPアクセラレータにデータ準備オペレーションを実行させるように請求する命令である。前記システムは、前記第1の命令に応じて、データチャネルを介して第1の請求を前記DPアクセラレータから前記ホストシステムに送信して、前記ホストシステムの第1のメモリ位置から第1のデータを読み出す。前記システムは、前記データチャネルを介して前記ホストシステムから前記第1のデータを受信する。ここで、前記第1のデータは、前記ホストシステムによって前記ホストシステムの前記第1のメモリ位置から読み出されるデータである。前記システムは、前記コマンドチャネルを介して前記ホストシステムから第2の命令を受信し、前記第2の命令は、前記DPアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。前記システムは、少なくとも前記第1のデータに基づいて、計算またはコンフィギュレーションのオペレーションを実行する。
第3の態様によると、システムは、ホストシステムのホストチャネルマネージャ(HCM)のアプリケーションから請求を受信して、データ処理(DP)アクセラレータとのセキュアチャネルを作成する。ここで、前記DPアクセラレータは、バスを介して前記ホストシステムに接続される。前記請求に応じて、前記システムは、前記HCMに関連付けられている第1のキーペアの第1のプライベートキー、及び前記DPアクセラレータに関連付けられている第2のキーペアの第2のパブリックキーに基づいて、前記セキュアチャネルに対する第1のセッションキーを生成する。前記DPアクセラレータに送信される前記アプリケーションに関連付けられている第1のデータに応じて、前記システムは、前記第1のセッションキーを利用して前記第1のデータを暗号化する。その後、前記システムは、バスを介して前記セキュアチャネルを介して、前記暗号化された第1のデータを前記DPアクセラレータに送信する。
一実施形態において、システムは、データ処理(DP)アクセラレータのアクセラレータチャネルマネージャ(ACM)で、ホストシステムのホストチャネルマネージャ(HCM)のアプリケーションから請求を受信して、前記ホストシステムと前記DPアクセラレータの間でセキュアチャネルを作成する。ここで、前記DPアクセラレータは、バスを介して前記ホストシステムに接続される。前記請求に応じて、前記システムは、前記セキュアチャネルのための第2のセッションキーを生成し、前記暗号化された第2のセッションキーをHCMに送信する前に、前記DPアクセラレータに関連付けられている第2のキーペアの第2のプライベートキー及びHCMに関連付けられている第1のキーペアの第1のパブリックキーに基づいて、第2のセッションキーを暗号化する。前記ホストシステムに送信される第1のデータに応じて、前記システムは、前記第2のセッションキーを利用して前記第1のデータを暗号化する。その後、前記システムは、前記セキュアチャネルを介して、前記暗号化された第1のデータを前記ホストシステムの前記HCMに送信する。
第4の態様によると、データ処理(DP)アクセラレータから一時的なパブリックキー(PK_d)を受信したことに応じて、システムは、前記ホストシステムで第1のノンス(nc)を生成する。ここで、前記DPアクセラレータは、バスを介して前記ホストシステムに接続される。前記システムは、セッションキーを生成するための請求を前記ホストシステムから前記DPアクセラレータに送信し、前記請求は、ホストのパブリックキー(PK_O)及び第1のノンスを含む。前記システムは、前記DPアクセラレータから第2のノンス(ns)を受信し、ここで、前記第2のノンスは、前記ホストのパブリックキーと前記一時的なパブリックキーに対応する一時的なプライベートキー(SK_d)を利用して暗号化される。前記システムは、前記第1のノンス及び前記第2のノンスに基づいて第1のセッションキーを生成し、これは、前記ホストシステムと前記DPアクセラレータの間のその後のデータ交換を暗号化または復号化するために使用される。
一実施形態において、ホストシステムから受信された請求に応じて、システムは、データ処理(DP)アクセラレータで一時的なプライベートキーと一時的なパブリックキーを生成する。ここで、前記DPアクセラレータは、バスを介して前記ホストシステムに接続される。前記システムは、前記DPアクセラレータに関連付けられているアクセラレータのプライベートルートキーを利用して、一時的なパブリックキーを暗号化する。前記システムは、暗号化されていない形式の一時的なパブリックキーと暗号化された一時的なパブリックキーとを前記ホストシステムに送信して、前記ホストシステムに前記一時的なパブリックキーを検証させるようにする。前記システムは、前記ホストシステムから第1のノンスを受信する。ここで、前記第1のノンスは、前記一時的なパブリックキーが検証された後に前記ホストシステムによって生成される。前記システムは、前記第1のノンスと前記DPアクセラレータでローカルに生成された第2のノンスとに基づいてセッションキーを生成する。
第5の態様によると、システムは、ホストシステムのセキュリティモジュール(例えば、信頼できるプラットフォームモジュール(TPM))を利用して、セキュアブートを実行する。前記システムは、前記ホストシステムの1つまたは複数のプロセッサに関連付けられている信頼できる実行環境(TEE)を作成する。前記システムは、TEE内でメモリマネージャを起動して、ここで、前記メモリマネージャは、バスを介して前記ホストシステムに接続されたデータ処理(DP)アクセラレータのメモリリソースを管理するように構成されるものであり、前記DPアクセラレータのグローバルメモリのメモリ利用情報を保持することを含む。前記DPアクセラレータのメモリ位置にアクセスするためにTEE内で実行されるアプリケーションから受信された請求に応じて、前記システムは、前記メモリ利用情報に基づいて前記請求を許可または拒否する。
第6の態様によると、DPアクセラレータは、バスを介して接続されたホストシステムから受信された命令に応じてデータ処理オペレーションを実行するように構成された1つまたは複数の実行ユニット(EU)を含む。前記DPアクセラレータは、セキュリティユニット(SU)は、前記ホストシステムとのセキュアチャネルを作成し維持して、データ処理オペレーションに関連するコマンドとデータを交換するように構成されているセキュリティユニット(SU)を含む。前記DPアクセラレータは、前記セキュリティユニットに接続されてセキュリティユニットにタイムスタンプサービスを提供するためのタイムユニット(TU)を含む。ここで、前記タイムユニットは、外部のソースからのクロック信号を導出するせずに、クロック信号をローカルに生成するクロック生成手段を含む。前記TUは、前記クロック生成手段に接続されて前記クロック信号に基づいてタイムスタンプを生成するタイムスタンプ生成手段と、前記クロック生成手段及び前記タイムスタンプ生成手段に電力を提供する給電手段を含む。
一実施形態において、前記TUは、前記クロック生成手段に接続されて前記クロック生成手段から生成された前記クロック信号に基づいてカウント値をカウントするカウンタと、前記カウント値を格納する永続性記憶装置とをさらに含む。ここで、前記カウント値は、前記タイムスタンプ生成手段によって使用されて前記タイムスタンプを生成する。他の一実施形態において、前記カウンタは、前記クロック信号のそれぞれに応じて前記カウント値を増加させる。ここで、前記永続性記憶装置は、32ビットの変数を含む。しかし、前記永続性記憶装置は、8ビット、16ビット、64ビットなどのサイズの変数を含んでもいい。
一実施形態において、前記タイムユニットは、前記クロック生成手段に接続されて正確なパルス信号を提供するローカルオシレーターをさらに含む。一実施形態において、前記給電手段は、外部の電源から電力を引き込むことなく電力を提供するバッテリを含む。一実施形態において、前記クロック信号は、外部のクロックソースと通信せずに生成される。一実施形態において、前記タイムユニットは、前記クロック生成手段をキャリブレートするように構成されたクロックキャリブレーター(clock calibrator)をさらに含む。
一実施形態において、前記タイムスタンプは、前記セキュリティユニットによって使用されて、前記DPアクセラレータと前記ホストシステムとの間の交換されたデータを暗号化するためのセッションキーにタイムスタンプ付けることができる。他の一実施形態において、前記タイムスタンプは、前記DPアクセラレータに対する情報交換にタイムスタンプを付けるのに使用され、前記タイムスタンプは、前記情報交換の鮮度を確定するのに使用することができる。他の一実施形態において、前記セッションキーの前記タイムスタンプは、前記セッションキーの期限が切れたか否かを判定するのに使用される。
第7の態様によると、DPアクセラレータは、バスを介して接続されたホストシステムから受信された命令に応じてデータ処理オペレーションを実行するように構成された1つまたは複数の実行ユニット(EU)を含む。前記DPアクセラレータは、前記セキュリティユニットに接続されてタイムスタンプサービスを提供するタイムユニット(TU)を含む。前記DPアクセラレータは、前記ホストシステムとともにセキュアチャネルを作成し維持して、データ処理オペレーションに関連するコマンドとデータを交換するように構成されたセキュリティユニット(SU)を含む。ここで、前記セキュリティユニットは、前記DPアクセラレータに関連付けられているプライベートルートキーを格納する安全なストレージエリアを含む。ここで、プライベートルートキーは、認証(authentication)に使用される。前記SUは、乱数(random number)を生成する乱数生成手段と、前記乱数に基づいて導出されたセッションキーを使用して、前記バスを介して前記ホストシステムと交換されたデータに対して暗号化オペレーションを実行する暗号化エンジン(cryptographic engine)とを含む。
一実施形態において、プライベートルートキーは、前記DPアクセラレータの製造中に安全なストレージエリアに予め設定されて記憶されている。一実施形態において、前記セキュリティユニットは、前記ホストシステムから請求を受信して前記DPアクセラレータとの安全な接続を作成し、前記請求に応じて前記乱数生成手段によって生成された前記乱数に基づいて前記セッションキーを生成する。ここで、前記セッションキーは、安全な接続によって前記ホストシステムと交換された前記データを暗号化または復号化するのに使用される。
他の一実施形態において、前記乱数生成手段は、シード値に基づいて前記乱数を生成することができる。他の一実施形態において、前記タイムスタンプは、前記セッションキーの期限が切れたか否かをさらに判定するものであり、ここで、新しいセッションキーを生成することができる。
他の一実施形態において、前記乱数に基づいて前記セッションキーを生成する時、前記セキュリティユニットは、一時的なプライベートキーと一時的なパブリックキーを備える一時的なキーペアを生成し、一時的なパブリックキーとサインされた(signed)一時的なパブリックキーを前記ホストに送信する。ここで、前記サインされた一時的なパブリックキーは、前記プライベートルートキーによってサインされて前記ホストシステムに前記DPアクセラレータを認証させ、前記ホストシステムから第1のノンスを受信し、前記DPアクセラレータでローカルに生成された前記第1のノンス及び第2のノンスに基づいて、第1のセッションキーを生成することができる。他の一実施形態において、前記セキュリティユニットは、さらに前記プライベートルートキー(例えば、前記DPアクセラレータのプライベートルートキー)によってサインされて、前記ホストシステムに関連付けられているパブリックキーによって暗号化された前記第1のノンス及び前記第2のノンスを送信するように構成されている。
他の一実施形態において、前記ホストシステムは、前記プライベートルートキーに対応するパブリックルートキー(例えば、DPアクセラレータのパブリックルートキー)と前記ホストシステムのプライベートルートキーとを利用した前記暗号化された第1のノンス及び前記第2のノンスを復号化して、前記第1のノンス及び前記第2のノンスを復元するように構成されている。他の一実施形態において、前記ホストシステムは、前記復元された第1のノンス及び前記第2のノンスに基づいて、第2のセッションキーを生成するように構成されている。ここで、前記第2のセッションキーは、前記ホストシステムによって使用されて暗号化と復号化を行う。
一実施形態において、前記タイムユニットは、外部のソースから前記クロック信号を導出せずにクロック信号をローカルに生成するクロック生成手段と、前記クロック生成手段に接続されて前記クロック信号に基づいてタイムスタンプを生成するタイムスタンプ生成手段と、外部電源から電力を引き込むことなく前記クロック生成手段と前記タイムスタンプ生成手段に電力を提供する給電手段とを含む。
第8の態様によると、システムは、ホストシステムの信頼できる実行環境(TEE)内で実行されるランタイムライブラリにおいて、アプリケーションから所定の機能を呼び出すための請求を受信して、予め定義されたオペレーションを実行する。前記請求に応じて、前記システムは、前記所定の機能に関連付けられているカーネルオブジェクトを識別する。前記システムは、前記カーネルオブジェクトの実行可能なイメージにサインするのに使用されたプライベートキーに対応するパブリックキーを利用して、前記カーネルオブジェクトの実行可能なイメージを検証する。前記カーネルオブジェクトの前記実行可能なイメージが正常に検証されたことに応じて、前記システムは、前記カーネルオブジェクトの検証された実行可能なイメージが前記データ処理(DP)アクセラレータによって実行されて予め定義されたオペレーションを実行するように、バスを介して前記カーネルオブジェクトの検証された実行可能なイメージをデータ処理(DP)アクセラレータに送信する。
第9の態様によると、システムは、ホストシステムにおいてバスを介してデータ処理(DP)アクセラレータからパブリック認証キー(PK_ATT)またはサインされたPK_ATTを受信する。前記システムは、前記DPアクセラレータに関連付けられているパブリックルートキー(PK_RK)を利用して前記PK_ATTを検証する。前記PK_ATTを正常に検証したことに応じて、前記システムは、カーネル識別子(ID)を前記DPアクセラレータに送信して、前記DPアクセラレータに記憶されたカーネルオブジェクトの認証を請求する。前記DPアクセラレータを形成する前記カーネルオブジェクトに対応するカーネルダイジェストまたはサインされたカーネルダイジェストを受信したことに応じて、前記システムは、前記PK_ATTを利用して前記カーネルダイジェストを検証する。前記システムは、検証結果を前記DPアクセラレータに送信して、前記DPアクセラレータに前記検証結果に基づいて前記カーネルオブジェクトへアクセスさせるようにする。
一実施形態において、ホストシステムから受信された認証請求に応じて、システムは、データ処理(DP)アクセラレータにおいてパブリック認証キー(PK_ATT)とプライベート認証キー(SK_ATT)を含む認証キーペアを生成する。前記システムは、前記PK_ATTまたはサインされたPK_ATTを前記DPアクセラレータから前記ホストシステムに送信し、ここで、前記DPアクセラレータは、バスを介して前記ホストシステムに接続される。前記システムは、前記ホストシステムからカーネルオブジェクトを識別するためのカーネル識別子(ID)を受信する。ここで、前記カーネルIDは、PK_ATTの検証成功に応じて受信される。前記システムは、前記カーネルIDに応じて、前記カーネルオブジェクトの実行可能なイメージをハッシュすることにより、カーネルダイジェストを生成する。前記システムは、前記カーネルダイジェストまたはサインされたカーネルダイジェストを前記ホストシステムに送信して、前記DPアクセラレータ内で実行される前記カーネルオブジェクトにアクセスする前に、前記ホストシステムに前記カーネルオブジェクトを検証し認証させるようにする。
第10の態様によると、システムは、ホストシステムにおいて、データ処理(DP)アクセラレータから前記DPアクセラレータを一意に識別するためのアクセラレータ識別子(ID)を受信する。ここで、前記ホストシステムは、バスを介して前記DPアクセラレータに接続される。前記システムは、ネットワークを介して前記アクセラレータIDを所定の信頼できるサーバーに送信する。前記システムは、ネットワークを介して所定の信頼できるサーバーから認証書(certificate)を受信し、前記認証書は前記DPアクセラレータを認証する。選択的に、前記システムは、例えば、前記信頼できるサーバーのための認証書チェーンを検証することなどにより、前記認証書が前記信頼できるサーバーに関連付けられていることを検証する。前記システムは、前記認証書からパブリックルートキー(PK_RK)を抽出し、前記PK_RKは前記DPアクセラレータに関連付けられているプライベートルートキー(SK_RK)に対応する。前記システムは、前記PK_RKを利用して、前記DPアクセラレータとのセキュアチャネルを作成して、前記ホストシステムと前記DPアクセラレータの間でデータを安全に交換する。
図1は、いくつかの実施形態に係るホストとデータ処理(DP)アクセラレータの間の通信を保護するためのシステムコンフィギュレーションの一例を示すブロック図である。図1を参照すると、システムコンフィギュレーション100は、ネットワーク103を介してDPサーバー104に通信可能に接続されている1つまたは複数のクライアントデバイス101~102を含むが、これらに限定されない。クライアントデバイス101~102は、例えば、パーソナルコンピュータ(例えば、デスクトップ、ラップトップ、タブレット)、「シーン(thin)」クライアント、個人向け携帯情報端末(PDA)、ウェブ対応機器(Web enabled appliance)、スマートウォッチ、または携帯電話(例えば、スマートフォン)など、任意のタイプのクライアントデバイスであってもよい。選択的に、クライアントデバイス101~102は、他のデバイスであってもよい。ネットワーク103は、任意のタイプのネットワークであってもよく、例えば、有線または無線のローカルエリアネットワーク(LAN)、インターネットのような広域ネットワーク(WAN)、またはこれらの組み合わせであってもよい。
サーバー104(例えば、ホスト)は、任意の種類のサーバーまたはサーバークラスタであってもよく、例えば、Webまたはクラウドサーバー、アプリケーションサーバー、バックエンドサーバー、またはこれらの組み合わせであってもよい。サーバー104は、クライアントデバイス101~102などのクライアントがサーバー104によって提供されるリソースやサービス(例えば、サーバー104を介してDPアクセラレータによって提供されるリソースとサービス)にアクセスすることができるようにインターフェース(図示せず)をさらに含む。例えば、サーバー104は、クラウドサーバーであってもよく、あるいはクライアントに様々なクラウドサービス(例えば、クラウドストレージ、クラウドコンピューティングサービス、機械学習トレーニングサービス、データマイニングサービスなどのクラウドサービス)を提供するデータセンターのサーバーであってもよい。サーバー104は、クラウド(プライベートクラウド、パブリッククラウドやハイブリッドクラウドであってもよい)上のSaaS(Software-as-a-Service)またはPaaS(Platform-as-a-Service)システムの一部で構成されてもよい。インタフェースは、Webインタフェース、API(Application Programming Interface)および/またはCLI(Command Line Interface)を含んでもよい。
例えば、クライアントである本例示のクライアントデバイス101のユーザアプリケーション(例えば、ウェブブラウザ、アプリケーション)は、サーバー104で実行される命令(例えば、人工知能(AI)トレーニング、推論命令など)を送受信することができ、当該命令は、ネットワーク103によってインタフェースを介してサーバー104によって受信される。当該命令に応じて、サーバー104は、DPアクセラレータ105-107と通信して命令の実行を完了する。いくつかの実施形態において、前記命令は、機械学習タイプの命令であり、ここで、DPアクセラレータは、専用機械や専用プロセッサとして、サーバー104による実行よりも数倍速い速度で命令を実行することができる。したがって、サーバー104は、分散方式で1つまたは複数のDPアクセラレータの実行オペレーションを制御/管理することができる。その後、サーバー104は、実行結果をクライアントデバイス101~102に戻る。DPアクセラレータまたはAIアクセラレータは、バイドウ社からのBaidu人工知能(AI)のチップセットのような1つまたは複数の専用プロセッサを含んでもよく、または、DPアクセラレータは、NVIDIA、Intelまたはその他のAIチップセットプロバイダーのAIチップセットであってもよい。
一実施形態によると、DPアクセラレータ105~107のいずれかにアクセスしてDPサーバー104(ホストとしても呼ばれる)によってホストされるアプリケーションのそれぞれは、前記アプリケーションが信頼できるソースまたはベンダーによって提供されるアプリケーションであることを検証することができる。各アプリケーションは、ホスト104の中央処理装置(CPU)によって特別に構成されて実行されるTEE(Trusted Execution Environment)内で起動されて実行することができる。アプリケーションがDPアクセラレータ105~107のいずれかにアクセスするように構成される場合、ホスト104とDPアクセラレータ105~107のうちの対応するDPアクセラレータとの間で安全な接続が作成されて、ホスト104とDPアクセラレータ105~107のそれぞれとの間で交換されるデータは、マルウェアの攻撃から保護される。
図2は、いくつかの実施形態に係るホストシステムとデータ処理(DP)アクセラレータとの間の通信を保護するためのマルチレイヤ保護ソリューションの一例を示すブロック図である。一実施形態において、システム200は、DPアクセラレータに対するハードウェアを変更するか否かに関係なく、ホストと前記DPアクセラレータとの間の通信を保護するための保護策を提供する。図2を参照すると、ホストマシンまたはサーバー104は、侵入から保護される1つまたは複数の層(例えば、ユーザアプリケーション203、ランタイムライブラリ205、ドライバー209、オペレーティングシステム211およびハードウェア213(例えば、セキュリティモジュール(TPM;Trusted Platform Module))/CPU(Central Processing Unit))を有するシステムで説明することができる。ホストマシン104は、通常、前記ホストシステムまたはDPアクセラレータ105~107で実行されるタスクを制御し管理できるCPUシステムである。前記DPアクセラレータと前記ホストマシンとの間の通信チャネルのセキュリティのために、データ侵入や攻撃の影響を受けやすい前記ホストシステムのさまざまな層を保護するためのさまざまな構成要素が必要になる場合がある。例えば、信頼できる実行環境(TEE)は、データの侵入からユーザアプリケーション層とランタイムライブラリ層を保護することができる。
図2を参照すると、システム200は、いくつかの実施形態に係るホストシステム104とDPアクセラレータ105~107を含む。DPアクセラレータは、BaiduAIチップセットまたはAI集約コンピューティングタスクを実行することができるNVIDIAグラフィックスプロセッシングユニット(GPU)のような他のAIチップセットを含む。一実施形態において、ホストシステム104は、ホストマシン104内のセキュリティモジュール(例えば、信頼できるプラットフォームモジュール(TPM))が装着された1つまたは複数のCPU213を備えるハードウェアを含まなければならない。TPMは、ホストシステムに特化されたハードウェア認証用の暗号化キー(例えば、RSA暗号化キー)を格納するエンドポイントデバイス上の専用チップである。各TPMチップは、インドールスメントキー(EK;endorsement keys)またはインドールスメントクレデンシャル(EC;endorsement credentials)、即ち、ルートキーと呼ばれる、1つまたは複数のRSAキーペア(key pairs;例えば、パブリックキー及びプライベートキーペア)を含んでもよい。前記キーペアは、TPMチップ内部に保持され、ソフトウェアによってアクセスすることができない。その後、ファームウェアおよびソフトウェアの重要なセクションは、システムを無断ファームウェアおよびソフトウェアの変更から保護するために実行される前にEKまたはECによってハッシュされることができる。前記ホストマシン上のTPMチップは、セキュアブートのための信頼のルートとして機能することができる。
また、TPMチップは、前記DPアクセラレータと通信するために、作業カーネル空間においてドライバー209と、オペレーティングシステム(OS)211を保護する。ここで、ドライバー209は、DPアクセラレータベンダーによって提供されて、ホストとDPアクセラレータとの間の通信チャネルを制御するユーザアプリケーションのドライバーの役割を果たすことができる。TPMチップとセキュアブートは、OSとドライバーをそれらのカーネル空間で保護するので、TPMは、ドライバー209とオペレーティングシステム211を効果的に保護することもできる。
DPアクセラレータ105~107の通信チャネルは、OSやドライバーによって排他的に占有され得るので、前記通信チャネルは前記TPMチップによっても保護される。
一実施形態において、ホストマシン104は、TPM/CPU213によって保護されるように実施される信頼できる実行環境(TEE)201を含む。TEEは、安全な環境である。TEEは、機密性と完全性に関して保護されるTEE内部にロードされたコードとデータを保証できる。TEEの例示は、SGX(Intel software guard extensions)またはAMD SEV(secure encrypted virtualization)であり得る。Intel SGXおよび/またはAMD SEVは、ユーザレベルのコードにより高い権限レベルで実行されるプロセスから保護されるCPUのメモリのプライベート領域を割り当てるように許可する中央処理装置(CPU)の命令コードのセットを含んでもよい。ここで、TEE201は、ユーザアプリケーション203とランタイムライブラリ205を保護することができ、ユーザアプリケーション203とランタイムライブラリ205は、それぞれエンドユーザとDPアクセラレータベンダーによって提供されてもよい。ここで、ランタイムライブラリ205は、API呼び出しを前記DPアクセラレータの実行、コンフィギュレーション、および/または制御のためのコマンドに変換することができる。一実施形態において、ランタイムライブラリ205は、ユーザアプリケーションによって実行される事前決定された(例えば、予め定義された)カーネルのセットを提供する。
他の一実施形態において、ホストマシン104は、Rust、GoLangなどのメモリセーフ言語を用いて実現される1つまたは複数のメモリセーフアプリケーション207を含む。MesaLock LinuxのようなメモリセーフLinuxリリース(memory safe Linux releases)上で実行されるこれらのメモリセーフアプリケーションは、データの機密性と整合性の攻撃からシステム200をさらに保護することができる。しかし、オペレーティングシステムは、あらゆるLinuxディストリビューション、UNIX、およびWindows OSやMac OSであり得る。
一実施形態において、システムは、次のように設定することができる。メモリセーフLinuxディストリビューションは、TPMセキュアブートが搭載されたシステム(例えば、図2のホストシステム104)上にインストールされる。前記インストールは、製造または準備の段階の間に、オフラインで実行することができる。前記インストールは、前記ホストシステムのユーザ空間のアプリケーションがメモリセーフプログラミング言語を利用してプログラミングされるように確保することができる。ホストシステム104上で実行される他のアプリケーションがメモリセーフアプリケーション(memory-safe applications)になるように確保するのは、ホストシステム104に対する潜在的な機密性と整合性の攻撃をさらに軽減することができる。
インストール後、前記システムは、続いてTPMに基づくセキュアブートを使用して起動することができる。TPMセキュアブートは、アクセラレータサービスを提供するカーネル空間で、サインされた/認証されたオペレーティングシステムおよびアクセラレーター・ドライバーのみを起動するように確保する。一実施形態において、オペレーティングシステムは、ハイパーバイザ(hypervisor)を使用してロードすることができる。ハイパーバイザまたは仮想マシンマネージャは、仮想マシンを作成して実行するコンピュータソフトウェア、ファームウェア、またはハードウェアである。カーネル空間は、ユーザアプリケーションに機能とサービスを提供するように、カーネル(即ち、実行のための所定の(例えば、予め定義された)機能セット)が識別される宣言型領域または範囲であることを留意しなければならない。システムの整合性が損なわれる場合、TPMセキュアブートは起動されずに、代わりにシステムがシャットダウンされる可能性がある。
セキュアブート後、ランタイムライブラリ205は、TEE201を実行して作成し、TEE201は、CPU213に関連付けられてる信頼できるメモリ空間にランタイムライブラリ205を配置する。その後、ユーザアプリケーション203は、TEE201で立ち上げる。一実施形態において、ユーザアプリケーション203とランタイムライブラリ205は、静的にリンクされて一緒に立ち上げる。他の一実施形態において、ランタイム205が、まずTEEで立ち上げた後、ユーザアプリケーション205がTEE201で動的にロードされる。他の一実施形態において、ユーザアプリケーション205が、まずTEEで立ち上げた後、ランタイム205がTEE201で動的にロードされる。静的にリンクされたライブラリは、コンパイルタイムでアプリケーションにリンクされたライブラリであることを留意しなければならない。動的ロードは、動的リンカによって実行されてもよい。動的リンカは、ランタイムにユーザアプリケーションを実行するための共有ライブラリをロードしリンクする。ここで、TEE201内のユーザアプリケーション203とランタイムライブラリ205は、ランタイムに互いに可視である。例えば、すべてのプロセスデータは、互いに可視である。しかし、TEEに対する外部アクセスは拒否される。
他の一実施形態において、ユーザアプリケーションは、ランタイムライブラリ205によって事前決定されたようなカーネルセットからカーネルを呼び出すことができる。他の一実施形態において、ユーザアプリケーション203とランタイムライブラリ205は、キャッシュベースのサイドチャネル攻撃のようなサイドチャネル攻撃を防御するためにサイドチャネルフリーアルゴリズムによって強化される。サイドチャネル攻撃は、実現されたアルゴリズム自体の脆弱性(例えば、暗号化分析、ソフトウェアのバグ)でなく、コンピュータシステムの実現から得られた情報に基づく攻撃である。サイドチャネル攻撃の例示として、仮想化された環境やクラウド環境で攻撃者が共有物理システムのキャッシュを監視する能力を基にする攻撃であるキャッシュ攻撃を含む。強化は、キャッシュに対するマスキング、およびアルゴリズムによって生成されキャッシュに配置される出力を含んでもよい。次に、ユーザアプリケーションの実行が完了されると、ユーザアプリケーションは、実行を終了してTEEを終了する。
要約すると、システム200は、データの機密性と整合性の損失からDPアクセラレータ(例えば、機械学習モデル、トレーニングデータおよび推論出力のようなデータの通信)を保護するために、複数の保護層を提供する。システム200は、TPMに基づくセキュアブート保護層、TEE保護層、カーネル確認/検証層を含んでもよい。また、システム200は、ホストマシン上の他のアプリケーションがメモリセーフなプログラミング言語を用いて実現されるようにすることで、メモリセーフなユーザ空間を提供することができ、これは潜在的なメモリ破損/脆弱性を排除することで、攻撃をさらに削除することができる。また、システム200は、サイドチャネルフリーアルゴリズムを使用して、キャッシュによるサイドチャネル攻撃のようなサイドチャネル攻撃を防御するアプリケーションを含んでもよい。
図3は、一実施形態による方法の一例を示すフローチャートである。プロセス300は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含み得る処理ロジックによって実行されることができる。例えば、プロセス300は、図1のホストシステム104のようなホストシステムによって実行されることができる。図3を参照すると、ブロック301において、処理ロジックは、ホストシステムのセキュリティモジュール(例えば、信頼できるプラットフォームモジュール(TPM))を利用して、セキュアブートを実行する。ブロック302において、処理ロジックは、オペレーティングシステム(OS)とデータ処理(DP)アクセラレータに関連付けられるアクセラレーター・ドライバーが信頼できるソースにより提供されたか否かを検証する。ブロック303において、処理ロジックは、OS内でアクセラレーター・ドライバーを立ち上げる。ブロック304において、処理ロジックは、ホストシステムのCPUに関連付けられている信頼できる実行環境(TEE)を生成する。ブロック305において、処理ロジックは、TEEでアプリケーションとランタイムライブラリを立ち上げ、ここで、前記アプリケーションは、前記ランタイムライブラリと前記アクセラレーター・ドライバーを介して前記DPアクセラレータと通信する。
一実施形態において、アプリケーションおよびランタイムライブラリは、静的にリンクされて一緒に立ち上がる。他の一実施形態において、ランタイムライブラリはTEEで立ち上げ、アプリケーションはランタイムライブラリが立ち上がった後に起動するために動的にロードされる。一実施形態において、処理ロジックは、ホストマシン上で他のアプリケーション(即ち、メモリセーフなアプリケーション)を立ち上げる。他の一実施形態において、メモリセーフなアプリケーションは、1つまたは複数のメモリセーフなプログラミング言語で実現される。一実施形態において、ランタイムライブラリは、アプリケーションによって起動される所定のカーネルのセットを提供し、DPアクセラレータによってタスクを実行する。一実施形態において、処理ロジックは、キャッシュベースのサイドチャネル攻撃を防御するためにサイドチャネルフリーアルゴリズムを利用して、TEEで実行されるアプリケーションとランタイムライブラリをさらに強化させる。
図4は、一実施形態によるI/Oマネージャを備えるホストの一例を示すブロック図である。システム400は、前記ホストとDPアクセラレータとの間の通信を保護するための保護策を提供する、図2のシステム200を表すことができる。図4を参照すると、一実施形態において、ホストシステム104のTEE201は、I/Oマネージャ401を含む。一実施形態において、DPアクセラレータ405~407は、I/Oインターフェース415~417を含む。I/Oインタフェース415~417は、それぞれのホストがDPアクセラレータのメモリに直接アクセスすることを遮断、禁止または拒否する。一方、I/Oマネージャ401は、DPアクセラレータがホストシステム104のいくつかの特定のメモリブロックのみにアクセスするように許可する。
従来のDPアクセラレータは、ホストマシンにDPアクセラレータの全部のメモリへのアクセスを許可させるI/Oインタフェースを含む。実際に、悪意のあるアプリケーションは、DPアクセラレータのグローバルメモリ中のメモリバッファを盗んだり変更するために、これらの権限を乱用する可能性がある。これらの技術的な問題を解決するために、本開示の実施形態は、DPアクセラレータのメモリシステムに対するアクセスを禁止する通信プロトコルを実施する。例えば、ホストシステムは、コマンドを送信するためにコマンドチャネルを介してDPアクセラレータとのみ通信することができ、DPアクセラレータは、データチャネルを介して通信し、ホストマシンのI/Oマネージャを介してホストシステムからデータを読み出したり、データをホストシステムに書き込んだりすることができる。したがって、I/Oマネージャは、DPアクセラレータによるデータのアクセスをさらに特徴付けることができ、DPアクセラレータにホストシステムの限られたメモリ範囲だけにアクセスさせるようにすることができる。
説明のために、DPによって実行される例示的な演算は、加算演算(例えば、1+2=3)であってもよい。この場合、DPアクセラレータのメモリアドレスにアクセスすることができるホストシステムは、複数のデータ準備命令をリモートに送信して、加算演算が実行される前に、データをDPアクセラレータのメモリバッファにロードすることができる。
しかし、DPアクセラレータへのメモリアクセスがないホストシステムは、アクセラレータのメモリアドレスを参照することができず、データ準備オペレーションのための別のセットのプロセッサ命令を送信しなければならない。続いて、DPアクセラレータは、ホストマシンからのデータ読み出しを行い、データ(例えば、加算命令のオペランド)を取得するための後続の命令を送信する。ここで、前記DPアクセラレータの前記メモリアドレスは、前記ホストシステムには見えない。
図5は、いくつかの実施形態に係るDPアクセラレータと通信するI/Oマネージャの一例をさらに示すブロック図である。システム500は、図4のシステム400の詳細図であってもよい。図5を参照すると、一実施形態において、I/Oマネージャ401は、コマンド生成手段(command generator)501、マップドメモリ503(mapped memory)およびアクセス制御リスト(ACL)モジュール505を含む。I/Oマネージャ401は、ドライバー209に通信可能に接続することができ、ドライバー209は、ACLマップ507(例えば、IO MMU)を含んでもよい。コマンド生成手段501は、DPアクセラレータへ送信されるコマンドを生成することができる。マップドメモリ503は、ホストサーバー104の複数のメモリ領域を含むことができ、前記メモリ領域は、各DPアクセラレータにマップされる。マップドメモリ503は、ホストサーバー104のメモリ(例えば、図4のハードウェア213の一部分)であってもよい。ACLモジュール505は、対応するDPアクセラレータのロジックテーブルに基づいて、ホストサーバー104の対応するマップドメモリ領域へのアクセスを制御(例えば、許可または拒否)することができる。ACLマップ507は、図6に示すように、メモリ503の異なるメモリ領域をDPアクセラレータにマップするマッピングテーブルを含むことができる。ここで、図6は、一実施形態に基づいてDPアクセラレータ1が1つ以上の領域(例えば、領域1、...、領域11)にマップされ、DPアクセラレータ2が領域12にマップされることを示す。例えば、各DPアクセラレータは、複数のメモリ領域にマップすることができる。
例えば、一実施形態において、DPアクセラレータは、ホストサーバーのメモリ位置(例えば、マップドメモリ503)に直接アクセスすることが許可されない。しかし、ACLマップ507がアクセスされる(複数の)メモリ領域にマップされたDPアクセラレータのエントリを含む場合、DPアクセラレータは(ACLモジュール505を介して)ホストサーバーのメモリ領域にアクセスすることができる。一実施形態において、DPアクセラレータがホストシステム104に追加される場合、例えば、ホストシステム104が、新しいDPアクセラレータが接続されていることを見つけた場合、ACLモジュール505は、DPアクセラレータに識別子を割り当て、DPアクセラレータに対応するACLマップ507上にエントリを挿入し、および/または、DPアクセラレータのために、メモリ503(例えば、図4のハードウェア213の一部のようなホストサーバー104のメモリなど)から利用可能なメモリブロックをリザーブ(reserve)するかまたは割り当てる。一実施形態において、ACLモジュール505は、DPアクセラレータに通知を送信してDPアクセラレータに利用可能なメモリブロックを通知することができる。一実施形態において、DPアクセラレータ識別子は、生成されたGUID/UUID(汎用一意識別子;universally unique identifier)、MACアドレス、DPアクセラレータに関連付けられているIPアドレス、またはそれらの組み合わせであってもよい。いくつかの実施形態において、ホストシステムは、複数のDPアクセラレータに接続される。一実施形態において、DPアクセラレータがホストシステム104から取り外された場合、例えば、ホストシステム104が、既存のDPアクセラレータがホストサーバー104に接続されていないことを見つけた場合、ACLモジュールは、DPアクセラレータに対応するACLマップ507からエントリを削除し、および/またはDPアクセラレータに対応するメモリ503からメモリブロックの割り当てを解除することができる。
図5を参照すると、一実施形態において、DPアクセラレータ405のI/Oインタフェース415は、制御レジスタ511とコマンドデコーダ513のようなモジュールを含む。制御レジスタ511は、実行ユニット517および/またはグローバルメモリの動きを制御することができる。コマンドデコーダ513は、DPアクセラレータ405によって受信されたコマンドをデコードすることができる。一実施形態において、DPアクセラレータ405は、I/Oマネージャ401からデータを取得するためのコマンドを読み出して、上記のコマンドをI/Oマネージャ401に書き込むためのコマンドなどの後続のコマンドを送信して、請求されたコマンドを完了することができる。
図7は、一実施形態に係るホストとDPアクセラレータの間の例示的な通信を示すブロック図である。オペレーション700は、ホストサーバー104および/またはDPアクセラレータ405によって実行されることができる。図7を参照すると、オペレーション701において、ホストサーバー104は、コマンドチャネルを介してDPアクセラレータによって処理されるために、データ準備コマンド請求(例えば、データ準備オペレーションを実行するためのデータ準備命令)をDPアクセラレータ405に送信する。オペレーション702において、DPアクセラレータ405は、請求されたコマンドをデコードして、データ準備オペレーションコマンドとなるコマンドの種類を確定する。
請求されたコマンドを完了するために、ホストサーバー104からのデータが必要であると判定された場合、オペレーション703において、DPアクセラレータ405は、ホストメモリからのデータの読み出しアクセス(例えば、読み出しオペレーション)を請求する。ここで、前記データは、ホストシステムの第1のメモリ位置(例えば、図5のマップドメモリ503)に存在することができる。オペレーション704において、読み出しアクセス請求を受信したことに応じて、ホストサーバー104は、請求するDPアクセラレータと請求されるホストサーバー104上のメモリ領域(例えば、第1のメモリ位置)を識別し、ACLマップをクエリーして、前記DPアクセラレータが要求されたメモリ領域へのアクセス権限を持っているか否かを判定する。
例えば、ホストサーバー104は、DPアクセラレータに関連付けられている識別子によって前記DPアクセラレータのACLマップをクエリーすることができる。クエリー結果エントリが存在する場合、ホストサーバー104は、前記結果エントリから、請求されたメモリ位置がメモリ領域内にあるか否かを判定することができる。メモリ領域内にあることが判定された場合、DPアクセラレータ405は、読み出し/書き込みアクセス権限を持っている。DPアクセラレータがメモリ領域への読み出しアクセス権限を持っていることが判定された場合、オペレーション705において、ホストサーバー104は、データチャネルを介して、請求されたデータを返す。DPアクセラレータが読み出しアクセス権限を持っていないことが判定された場合、ホストサーバー104は、読み出しエラーの通知をDPアクセラレータ405に送信することができる。
オペレーション706において、ホストサーバー104は、DPコマンドや計算またはコンフィギュレーションコマンドまたはDP命令を送信する。オペレーション707において、DPアクセラレータ405は、DPコマンドまたはDPオペレーションを処理する。オペレーション708において、請求されたコマンドが完了されると、DPアクセラレータ405は、完了結果をDPアクセラレータ405のグローバルメモリ(例えば、図5のグローバルメモリ515)に格納する。DPアクセラレータ405は、続いてデータチャネルを介して完了結果を書き込み請求としてホストサーバー104に送信する。オペレーション709において、ホストサーバー104は、DPアクセラレータと書き込みアクセスのために請求されたメモリ領域(例えば、第2のメモリ位置)を識別しACLマップをクエリーして、DPアクセラレータ405が請求されたメモリ領域への書き込みアクセス権限を持っているか否かを判定する。
DPアクセラレータが書き込みアクセス権限を持っていることが判定された場合、オペレーション710において、ホストサーバー104は、前記結果を請求されたメモリ位置に格納する。オペレーション711において、ホストサーバー104は、前記結果が正常に受信されると、その後確認応答を送り出すことができる。DP/コンピューティングコマンドは、DPアクセラレータによって処理される(複数の)データ処理オペレーションに対するコマンドを意味することに留意しなければならない。コンフィギュレーションコマンドは、DPアクセラレータのコンフィギュレーションのためのコマンドを意味する。データ準備コマンドは、(例えば、ホストサーバーからDPコマンドのためのオペランドのようなデータをフェッチする)データ準備オペレーションのためのコマンドを意味する。
図8A及び図8Bは、いくつかの実施形態による例示的な方法を示すフローチャートである。プロセス800とプロセス820は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含み得る処理ロジックによって実行されることができる。例えば、プロセス800は、図4のホストシステム(例えば、I/Oマネージャ401)によって実行されることができ、プロセス820は、図4のDPアクセラレータ(例えば、I/Oインタフェース415)によって実行されることができる。図8Aを参照すると、ブロック801において、処理ロジックは、バスを介してホストシステムとデータ処理(DP)アクセラレータの間で安全な接続を作成し、前記安全な接続は、1つまたは複数のデータチャネルを含む。他の一実施形態において、安全な接続は、1つまたは複数のコマンドチャネルを含む。ブロック802において、処理ロジックは、一つのコマンドチャネルを介して第1の命令をホストシステムからDPアクセラレータに送信し、前記第1の命令は、DPアクセラレータがデータ準備オペレーションを実行するように請求する命令である。ブロック803において、処理ロジックは、前記第1の命令に応じて、一つのデータチャネルを介してDPアクセラレータから、ホストシステムの第1のメモリ位置から第1のデータを読み出すための第1の請求を受信する。ブロック804において、前記第1の請求に応じて、処理ロジックは、前記データチャネルを介してホストシステムの第1のメモリ位置から検索された第1のデータを前記DPアクセラレータに送信し、ここで、前記第1のデータは、計算やコンフィギュレーションのオペレーションに使用される。ブロック805において、処理ロジックは、コマンドチャネルを介して第2の命令を前記ホストシステムから前記DPアクセラレータに送信し、前記第2の命令は、DPアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。
一実施形態において、処理ロジックは、前記第1の請求をさらにチェックして、前記DPアクセラレータに前記ホストシステムの前記第1のメモリ位置から読み出す権限があるか否かを判定し、前記DPアクセラレータが前記第1のメモリ位置から読み出し権限があると判断されると、前記DPアクセラレータが前記第1のメモリ位置から読み出すように許可する。一実施形態において、DPアクセラレータは、前記ホストシステムの前記第1のメモリ位置への直接アクセスが許可されない。一実施形態において、前記DPアクセラレータは、前記ホストシステムに接続された複数のDPアクセラレータの一つである。
一実施形態において、処理ロジックは、前記データチャネルを介して前記DPアクセラレータから第2のデータを書き込むための第2の請求をさらに受信する。ここで、前記第2のデータは、前記ホストシステムの第2のメモリ位置に書き込まれる。前記第2の請求に応じて、処理ロジックは、前記ホストシステムの前記第2のメモリ位置で前記第2のデータを格納する。他の一実施形態において、処理ロジックは、前記第2の請求をさらにチェックして、前記DPアクセラレータに前記ホストシステムの前記第2のメモリ位置に書き込む権限があるか否かを判定する。DPアクセラレータに第2のメモリ位置に書き込む権限があると判断されると、処理ロジックは、前記DPアクセラレータに前記第2のメモリ位置に書き込むように許可する。他の一実施形態において、前記第2のデータは、前記命令に応じた計算またはコンフィギュレーションのオペレーションの結果の少なくとも一部を表す。
図8Bを参照すると、一実施形態において、ブロック821において、処理ロジックは、バスを介してホストシステムとデータ処理(DP)アクセラレータの間で安全な接続を作成し、前記安全な接続は、1つまたは複数のコマンドチャネルおよび/または1つまたは複数のデータチャネルを含む。ブロック821において、処理ロジックは、前記DPアクセラレータにおいて、コマンドチャネルを介して前記ホストシステムから第1の命令を受信し、前記第1の命令は、前記DPアクセラレータがデータ準備オペレーションを実行するように要請する命令である。ブロック823において、前記第1の命令に応じて、処理ロジックは、データチャネルを介して前記DPアクセラレータから前記ホストシステムに、前記ホストシステムの第1のメモリ位置から第1のデータを読み出すための第1の請求を送信する。ブロック824において、処理ロジックは、前記データチャネルを介して前記ホストシステムから前記第1のデータを受信し、ここで、前記第1のデータは、前記ホストシステムによって前記ホストシステムの前記第1のメモリ位置から検索される。ブロック825において、処理ロジックは、前記コマンドチャネルを介して前記ホストシステムから第2の命令を受信し、前記第2の命令は、前記DPアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。ブロック826において、処理ロジックは、少なくとも前記第1のデータに基づいて計算またはコンフィギュレーションのオペレーションを実行する。
一実施形態において、前記ホストシステムは、前記第1の請求をチェックして、前記DPアクセラレータに前記ホストシステムの前記第1のメモリ位置から読み出す権限があるか否かを判定することができる。ここで、前記ホストシステムは、前記DPアクセラレータに前記第1のメモリ位置から読み出す権限があると判断されると、前記DPアクセラレータが前記第1のメモリ位置から読み出すように許可する。他の一実施形態において、前記DPアクセラレータは、前記ホストシステムの前記第1のメモリ位置への直接アクセスが許可されない。他の一実施形態において、前記DPアクセラレータは、前記ホストシステムに接続された複数のDPアクセラレータの一つである。
他の一実施形態において、処理ロジックはさらに、前記データチャネルを介して第2の請求を前記DPアクセラレータから前記ホストシステムに送信し、第2のデータを前記ホストシステムの第2のメモリ位置に書き込み、ここで、前記第2のデータは、計算またはコンフィギュレーションオペレーションの結果の少なくとも一部を表す。他の一実施形態において、前記ホストシステムは、前記第2の請求をチェックして、前記DPアクセラレータに前記ホストシステムの前記第2のメモリ位置へ書き込み権限があるか否かを判定することができる。ここで、前記ホストシステムは、前記DPアクセラレータに前記第2のメモリ位置へ書き込み権限があると判断されると、前記DPアクセラレータが前記第2のメモリ位置に書き込むように許可する。
図9は、一実施形態に係るホストチャネルマネージャを備えるホストの一例を示すブロック図である。システム900は、図2のシステム200を表すことができ、ホストと1つまたは複数のDPアクセラレータとの間の情報交換チャネルを確保する保護策を提供することができる。図9を参照すると、一実施形態において、ホストシステム104は、ホストチャネルマネージャ(HCM)901を含むランタイムライブラリ205を含む。対応的に、DPアクセラレータ405~407のそれぞれは、アクセラレータチャネルマネージャ(ACMs)915~917を含む。HCMとACMsは、暗号化キーの生成をサポートして、ホストシステム104とDPアクセラレータ405~407との間の非対称(例えば、RSA)および/または対称(例えば、AES)暗号化による情報交換チャネルを設定する。ここで、DPアクセラレータ405~407は、図2のDPアクセラレータ205~207であってもよい。
図10は、いくつかの実施形態に係る1つまたは複数のアクセラレータチャネルマネージャ(ACMs)に通信可能に接続されているホストチャネルマネージャ(HCM)の一例を示すブロック図である。システム1000は、図9のシステム900の詳細図であってもよい。図10を参照すると、一実施形態において、HCM901は、認証モジュール1001、終了モジュール1003、キーマネージャ1005、キー・ストア1007、暗号化エンジン1009を含む。認証モジュール1001は、ホストサーバー104上で実行されるユーザアプリケーションを認証してDPアクセラレータのリソースにアクセスしたり、DPアクセラレータのリソースを利用したりするように認証することができる。終了モジュール1003は、接続を終了することができ、例えば、前記接続に関連付けられるチャネルを終了することができる。キーマネージャ1005は、異なるセキュアデータ交換チャネルのための1つまたは複数のデータパケットを暗号化/復号化するために、非対称キーペアまたは対称キーを管理(例えば、作成または破壊)することができる。ここで、各ユーザアプリケーション(図9のユーザアプリケーション203の一部として)は、一対多の関係で異なるセキュアデータ交換チャネルに対応するか、またはマップすることができ、各データ交換チャネルはDPアクセラレータに対応することができる。一実施形態によると、チャネル/セッションキーを利用して、チャネルにマップされるユーザアプリケーションの例示は、図11で表すことができる。ここで、アプリケーション1はチャネルセッションキー1-11にマップされ、ここで、各セッションキーはDPアクセラレータ(例えば、11個のDPアクセラレータ)に対応するセキュアチャネルのためのものであり、アプリケーション2は、チャネルセッションキー12にマップされ、キー12は、特定のDPアクセラレータに対応される。キー・ストア1007は、暗号化非対称キーペアまたは対称キーを格納することができる。暗号化エンジン1009は、セキュアチャネルのいずれかによって交換された前記データのためのデータパケットを暗号化または復号化することができる。これらのモジュールの一部は、より少ないモジュールに統合されることができることに留意しなければならない。
図10を参照すると、一実施形態において、DPアクセラレータ405は、ACM915およびセキュリティユニット(SU)1020を含む。セキュリティユニット1020は、キーマネージャ1025、キー・ストア1027、暗号化エンジン1029を含んでもよい。キーマネージャ1025は、非対称キーペアまたは対称キーを管理(例えば、生成、安全に保持、および/または破棄)することができる。キー・ストア1027は、暗号化非対称キーペアまたは対称キーを格納することができる。暗号化エンジン1029は、データ交換のためのキー情報またはデータパケットを暗号化または復号化することができる。いくつかの実施形態において、ACM915とSU1020は、統合されたモジュールである。
図12A及び図12Bは、一実施形態に係るホストとDPアクセラレータとの間のセキュア情報交換の一例を示すブロック図である。例示1200は、図10のシステム1000によって実行されることができる。図10、図12A及び図12Bを参照すると、一実施形態において、任意のデータ通信がDPアクセラレータ(例えば、DPアクセラレータ405)とホストサーバー104上にホストされてDPアクセラレータ・リソースを請求するアプリケーションの間で行われる前に、安全な情報交換チャネルは、ホストサーバー104とDPアクセラレータの間で設定され、または作成される。情報交換チャネルの設定は、ホストサーバー104のユーザアプリケーションによって起動することができる。例えば、ユーザアプリケーション(例えば、図9のアプリケーション203のユーザアプリケーション)は、HCM901がセキュアデータ交換チャネルを設定するように請求することができる。認証モジュール1001は、前記請求を受信し、ユーザアプリケーションが信頼できるアプリケーションであることを認証することができる。一実施形態において、認証モジュール1001は、ユーザアプリケーションまたはクライアントがユーザアプリケーションにアクセスする権限を検証し、例えば、ユーザアプリケーションまたはクライアントが請求されたDPアクセラレータからのリソースを利用する権限を備えるか否かを検証する。ユーザアプリケーションまたはクライアントが許可されている場合、情報は前記情報交換を暗号化および復号化するセッションキーを経由して、セキュアチャネルを介してユーザアプリケーションとDPアクセラレータの間で交換されることができる。
一実施形態において、セッションキーを生成するために、HCM901は、アプリケーションおよび/またはチャネルに関連付けられる第1のパブリック/プライベートキーペアを生成することができる。または、前記第1のパブリック/プライベートキーペアは、HCM901に関連付けられたキーペアであり得る。前記第1のパブリック/プライベートキーペアは、キー・ストア1007に記憶されることができ、前記第1のパブリックキーは、DPアクセラレータ405またはACM915)に送信される(例えば、オペレーション1201)。その後、ACM915は、セッションのためのユニークなセッションキー(例えば、第2のセッションキー)を生成し(例えば、オペレーション1202)、ここで、前記セッションキーは、前記ホストサーバー104と通信するデータパケットを暗号化/復号化するために使用することができる(例えば、オペレーション1205~1216)。一実施形態において、セッションキーは、巡回冗長検査、チェックサム、または暗号化ハッシュ関数またはランダムハッシュ/乱数生成手段のようなハッシュ関数に基づいて導出された(または生成された)対称キーである。
一実施形態において、ACM915が前記第1のパブリックキーを受信する場合、ACM915は、前記チャネルのための第2のパブリック/プライベートキーペアを作成し、ここで、前記第2のパブリック/プライベートキーペアの前記第2のプライベートキー及び前記第1のパブリックキーは、セッションキーまたはセッションキーの構成要素を暗号化するために使用される。他の一実施形態において、前記第2のパブリック/プライベートキーペアは、DPアクセラレータ405に関連付けられているキーペアである。一実施形態において、前記第1のパブリックキー、第2のパブリックキー、第2のプライベートキーおよび/または前記セッションキーは、キー・ストア1027に記憶されることができる。その後、前記セッションキー(またはその構成要素)は、前記第1のパブリックキーによって暗号化され、暗号化されたセッションキーは、前記第2のプライベートキーによってより暗号化(例えば、二重暗号化)され、二重暗号化されたセッションキー情報は、前記第2のパブリックキーと一緒にHCM901に送信することができる(例えば、オペレーション1203)。
その後、HCM901のキーマネージャ1005は、前記第2のパブリックキーと前記第1のプライベートキー(例えば、オペレーション1204)に基づいて、前記暗号化されたセッションキーを復号化して、前記セッションキーを導出(例えば、第1のセッションキーを生成)することができる。その後、前記DPアクセラレータから前記ホストサーバー104に伝送されたデータ、またはその逆(例えば、オペレーション1205~1216)は、対称セッションキーを使用して、通信のための前記データを暗号化および復号化することができる。例えば、データは暗号化され、次に、発信者によって情報交換チャネルを介して送信される。受信されたデータは、受信者によって解読される。ここで、ホストサーバー104とDPアクセラレータ405が前記データパケットを暗号化および復号化するための対称セッションキーと同じものを備えるので、ホストサーバー104とDPアクセラレータ405は、これらのデータパケットを読み出すことができる。
一実施形態において、ホストサーバー104(例えば、HCM901)は、DPアクセラレータ405(例えば、ACM915)のメモリバッファに直接アクセスすることはできないが、DPアクセラレータは、ホストサーバー104のメモリバッファにアクセスすることができる。したがって、オペレーション1205~1211は、暗号化されたデータパケットをホストサーバー104からDPアクセラレータ405に送信するオペレーションであり、オペレーション1212~1216は、暗号化されたデータパケットをDPアクセラレータ405からホストサーバー104に送信するオペレーションである。ここで、オペレーション1206~1210は、前記ホストサーバー104がデータパケットをDPアクセラレータ405に提供する図7のオペレーション701~705と類似する。
最後に、前記アプリケーションが前記セッションの終了をシグナリングする場合、アプリケーションは、HCM901にセッションを終了させるように請求することができる。その後、終了モジュール1003は、キーマネージャ1005がオペレーション1215の一部である前記セッションに関連付けられたセッションキー(例えば、前記第1のセッションキー)を破壊するように請求し、DPアクセラレータ405のACM915に終了通知(例えば、オペレーション1216)を送信して、キーマネージャ1025に前記セッションに関連付けられた対称セッションキー(例えば、前記第2のセッションキー)を破壊させるように要請することができる。HCM901はACM915のみと通信することに図示しているが、HCM901は、複数のDCアクセラレータに対応する複数のACMsと通信して、同時に複数のデータ交換接続を作成することができる。
図13A及び図13Bは、いくつかの実施形態に係る例示的な方法を示すフローチャートである。プロセス1300とプロセス1320は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含み得る処理ロジックによって実行されることができる。例えば、プロセス1300は、図9のホストシステム(例えば、HCM901)によって実行され、プロセス1320は、図9のDPアクセラレータ(例えば、ACM915)によって実行されることができる。図13Aを参照すると、ブロック1301において、処理ロジックは、ホストシステムのホストチャネルマネージャ(HCM)で、アプリケーションから請求を受信してデータ処理(DP)アクセラレータとのセキュアチャネルを作成し、ここで、前記DPアクセラレータは、バスを介して前記ホストシステムに接続される。ブロック1302において、前記請求に応じて、処理ロジックは、HCMに関連付けられる第1のキーペアの第1のプライベートキー、及び前記DPアクセラレータに関連付けられる第2のキーペアの第2のパブリックキーに基づいて、セキュアチャネルのための第1のセッションキーを生成する。ブロック1303において、前記DPアクセラレータに送信される前記アプリケーションに関連付けられる第1のデータに応じて、処理ロジックは、前記第1のセッションキーを利用して、前記第1のデータを暗号化する。ブロック1304において、処理ロジックは、バスを介してセキュアチャネルを経由して、暗号化された第1のデータを前記DPアクセラレータに送信する。
一実施形態において、前記請求に応じて、処理ロジックはさらに、前記HCMに関連付けられる前記第1のキーペアの第1のパブリックキーを前記DPアクセラレータに送信する。その後、処理ロジックは、前記第1のパブリックキーの送信に応じて、前記DPアクセラレータのアクセラレータチャネルマネージャ(ACM)から前記DPアクセラレータに関連付けられる前記第2のキーペアの前記第2のパブリックキーを受信する。他の一実施形態において、前記ACMは、第2のセッションキーを導出し、暗号化された第2のセッションキーを前記HCMに送信する前に、前記第1のパブリックキーと前記第2のキーペアの第2のプライベートキーに基づいて、前記第2のセッションキーを暗号化するように構成される。ここで、前記第1のセッションキーと前記第2のセッションキーは、同様の対称キーである。他の一実施形態において、前記ACMは、前記第2のセッションキーを用いて暗号化された第1のデータを復号化して前記第1のデータを復元するように構成される。
一実施形態において、処理ロジックはさらに、前記DPアクセラレータの前記ACMから暗号化された第2のデータを受信し、ここで、前記第2のデータは、前記第2のセッションキーを用いて暗号化される。その後、処理ロジックは、前記第1のセッションキーを用いて暗号化された第2のデータを復号化して第2のデータを復元する。一実施形態において、前記請求に応じて、処理ロジックは、前記アプリケーションのアプリケーション識別子(ID)をさらにチェックして、前記アプリケーションが前記DPアクセラレータへのアクセス権利があるか否かを判定する。ここで、前記第1のセッションキーは、前記アプリケーションが前記DPアクセラレータへのアクセス権利がある場合のみに生成される。一実施形態において、処理ロジックはさらに、前記アプリケーションから前記セキュアチャネルを終了する請求を受信する。前記請求に応じて、処理ロジックは、前記第2のセッションキーを破壊することにより、前記ACMに安全な接続を終了させるように指示する命令を前記ACMに送信する。その後、処理ロジックは、前記HCMによって前記第1のセッションキーを破壊する。
図13Bを参照すると、一実施形態において、ブロック1321において、処理ロジックは、データ処理(DP)アクセラレータのアクセラレータチャネルマネージャ(ACM)で、ホストシステムのホストチャネルマネージャ(HCM)のアプリケーションから請求を受信して、前記ホストシステムと前記DPアクセラレータの間でセキュアチャネルを作成し、ここで、前記DPアクセラレータは、バスを介して前記ホストシステムに接続される。ブロック1322において、前記請求に応じて、処理ロジックは、前記セキュアチャネルのための第2のセッションキーを生成し、前記暗号化された第2のセッションキー情報を前記HCMに送信する前に、前記DPアクセラレータに関連付けられる第2のキーペアの第2のプライベートキー、及び前記HCMに関連付けられている第1のキーペアの第1のパブリックキーに基づいて、前記第2のセッションキーの情報を暗号化する。ブロック1323において、前記ホストシステムに送信される第1のデータに応じて、処理ロジックは、前記第2のセッションキーを利用して前記第1のデータを暗号化する。ブロック1324において、処理ロジックは、前記セキュアチャネルを介して、前記暗号化された第1のデータを前記ホストシステムの前記HCMに送信する。
一実施形態において、請求に応じて、処理ロジックはさらに、DPアクセラレータに関連付けられる第2のキーペアの第2のパブリックキーを、ホストシステムのHCMに転送し、前記HCMから前記HCMに関連付けられる第1のキーペアの第1のパブリックキーを受信する。他の一実施形態において、HCMは、HCMに関連付けられる第1のキーペアの第1のプライベートキー、及びDPアクセラレータに関連付けられている第2のキーペアの第2のパブリックキーに基づいて、第1のセッションキーを導出するように構成される。他の一実施形態において、HCMは、第1のセッションキーを用いて、暗号化された第1のデータを復号化して第1のデータを復元するように構成される。
他の一実施形態において、処理ロジックは、ホストシステムのHCMから暗号化された第2のデータをさらに受信し、ここで、前記第2のデータは、第1のセッションキーを用いて暗号化される。その後、処理ロジックは、第2のセッションキーを用いて暗号化された第2のデータを復号化して第2のデータを復元し、ここで、前記第1のセッションキーと前記第2のセッションキーは、同じ対称キーである。一実施形態において、処理ロジックは、ホストシステムのHCMからセキュアチャネルを終了する請求をさらに受信し、前記請求に応じて、処理ロジックは、ACMによって前記第1のセッションキーを破壊する。
図14は、一実施形態によるホストチャネルマネージャ(HCM)とアクセラレータチャネルマネージャ(ACM)の間でセキュアな情報交換チャネルを作成するための例示的なシステムを示すブロック図である。システム1400は、図9のシステム900の詳細図であり得る。図14を参照すると、一実施形態において、HCM901は、キーPK_O1401、キーSK_O1403およびキーPK_RK(s)1411を含む。キーPK_O1401、およびキーSK_O1403は、それぞれホストサーバー104のHCM901および/またはアプリケーション/ランタイムに関連付けられる非対称の暗号化キーペアのパブリックキーとプライベートキーであり、キーPK_RK(s)1411は、DPアクセラレータ405および/またはその他のDPアクセラレータのACM915に関連付けられる1つまたは複数のパブリックキーである。HCM901は、キーマネージャ1005をさらに含んでもよい。DPアクセラレータ405は、ACM915に接続されたセキュリティユニット1020を含んでもよく、ここで、前記セキュリティユニット1020は、キーPK_RK1413、およびキーSK_RK1415を含んでもよく、PK_RK1413とSK_RK1415は、それぞれACM915および/またはDPアクセラレータ405に関連付けられる非対称の暗号化キーペアのパブリックキーとプライベートキーである。ACM915は、キーマネージャ1025をさらに含む。キーマネージャ1005、およびキーマネージャ1025は、対称アルゴリズム(例えば、AES)、および/または非対称アルゴリズム(例えば、ディフィー・ヘルマン鍵交換プロトコル、RSAなど)を利用して暗号化/復号化キーを生成することができる。
図15は、一実施形態に係るホストとDPアクセラレータとの間のセッションキーを導出するための例示的な情報交換を示すブロック図である。例示1550は、セッションキーを導出するために、図14のシステム1400によって実行され得る複数のオペレーションを含む。図14及び図15を参照すると、一実施形態において、オペレーション1551において、HCM901は、コマンド「CMD_パブリックキー取得(CMD_get public key)」をACM915に送信して、セッションキーを導出するためにプロセスを起動する。オペレーション1552において、請求コマンド受信時、ACM915は、セッションキーの導出のために、一時的(または導出された)パブリック/プライベートキーペア(例えば、PK_dとSK_d)を生成する。ACM915は、DPアクセラレータに関連付けられるプライベートルートキー(例えば、SK_RK)を利用して、一時的にパブリックキー(PK_d)を暗号化する。オペレーション1553において、暗号化された一時的なパブリックキーのコピーと一時的なパブリックキーのコピーは、ACM915によってHCM901に送信される。オペレーション1554において、HCM901は、上記キーのコピーを受信し、PK_RKを利用して暗号化された一時的なパブリックキーを解読する。ここで、PK_RKは、HCM901によって予め受信され、図14のHCM901のPK_RK(s)1411に記憶され、復号化された一時的なパブリックキーは、オペレーション1553から受信された一時的なパブリックキーPK_dのコピーと比較する。解読されたキーが一時的なパブリックキーとマッチングする場合には、HCM901は、メッセージが予想当事者からのメッセージであると検証した。PK_RK(s)1411は、複数のDPアクセラレータ405~407のための複数のパブリックキーを含むことができることに留意しなければならない。
オペレーション1555において、HCM901は、第1のランダムノンス(nc)を生成する。オペレーション1556において、HCM901は、コマンド「CM_セッションキー生成(CM_generate session key)」、HCMに関連付けられるパブリックキー(例えば、PK_O)およびノンス(nc)をACM915に送信する。オペレーション1557において、コマンド「CM_セッションキー生成(CM_generate session key)」受信時、ACM915は、第2のランダムノンス(ns)を生成する。オペレーション1558において、ACM915は、前記第1のランダムノンス(nc)及び前記第2のランダムノンス(ns)に基づいて、セッションキーを導出する。一実施形態において、セッションキーは、ランダムノンス(ns)に連結されたランダムノンス(nc)のハッシュ関数によって導出される。他の一実施形態において、セッションキーは、nsが添加されたncを基にする値のハッシュ関数によって導出される。その後、セッションキーは、ACM915とHCM901との間で交換されたデータを暗号化および復号化するのに利用される。
オペレーション1559において、ACM915は、一時的なプライベートキー(例えば、SK_d)を利用して、ノンスncとノンスnsを二重暗号化し、続いてHCMに関連付けられるパブリックキー(例えば、PK_O)を二重暗号化する。その後、ACM915は、二重暗号化されたノンスncとノンスnsをHCM901に送信する。オペレーション1560において、HCM901は、HCMに関連付けられたプライベートキー(例えば、SK_O)と一時的なパブリックキー(例えば、PK_d)に基づいて、二重暗号化されたノンスncとノンスnsを解読する。オペレーション1561において、HCM901は、ランダムノンスncとHCM901によって最初に生成されたランダムノンスncのコピーとが実際に同じか否かを検証することにより、セッションキーの鮮度を検証する。同じであると、オペレーション1562において、HCM901は、第1のランダムノンス及び第2のランダムノンス(例えば、ncとns)に基づいて、セッションキーを導出する。一実施形態において、セッションキーは、ランダムノンスnsに連結されたランダムノンスncのハッシュ関数によって導出される。他の一実施形態において、セッションキーは、nsが添加されたncを基にする値のハッシュ関数によって導出される。その後、セッションキーは、HCM901とACM915との間で交換されたデータを暗号化および復号化するのに利用される。前記セッションキーは、対称暗号化アルゴリズムに基づく暗号化キーとして説明されているが、前記セッションキーは、パブリック/プライベートキーペアであってもよい。
図16A及び図16Bは、いくつかの実施形態による例示的な方法を示すフローチャートである。プロセス1600とプロセス1620は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行され得る。例えば、プロセス1600は、図14のホストサーバー(例えば、HCM901)によって実行され得、プロセス1620は、図14のDPアクセラレータ(例えば、ACM915)によって実行され得る。図16Aを参照すると、ブロック1601において、一時的なパブリックキーPK_dをデータ処理(DP)アクセラレータから受信したことに応じて、処理ロジックは、ホストシステムで第1のノンス(nc)を生成し、ここで、DPアクセラレータは、バスを介してホストシステムに接続される。ブロック1602において、処理ロジックは、セッションキーを生成するための請求をホストシステムからDPアクセラレータに送信し、前記請求は、ホストパブリックキー(PK_O)及び第1のノンスを含む。ブロック1603において、処理ロジックは、DPアクセラレータから第2のノンス(ns)を受信し、ここで、前記第2のノンスは、ホストパブリックキーと一時的なパブリックキーに対応する一時的なプライベートキー(SK_d)を利用して暗号化される。ブロック1604において、処理ロジックは、第1のノンス及び第2のノンスに基づいて第1のセッションキーを生成し、前記第1のセッションキーは、ホストシステムとDPアクセラレータの間の後続データ交換を暗号化または復号化するのに使用される。
一実施形態において、処理ロジックは、DPアクセラレータに対して一時的なパブリックキーと、一時的なプライベートキーを含む導出されたり一時的なキーペアを生成するように請求するための請求をホストシステムからDPアクセラレータに送信し、ここで、DPアクセラレータは、前記請求に応じて、一時的なキーペアを生成する。一時的なキーは、DPアクセラレータによる実現に基づいて所定の期間(例えば、数日、数週間あるいは数ヶ月)に亘って一回または複数回に使用され得る。他の一実施形態において、DPアクセラレータからの一時的なパブリックキーは、第1の一時的なパブリックキーであり、処理ロジックはさらに暗号化された第2の一時的なパブリックキーを受信し、前記第2の一時的なパブリックキーは、すでにDPアクセラレータによってアクセラレータプライベートルートキー(SK_RK)を利用して暗号化されている。他の一実施形態において、処理ロジックはさらに、アクセラレータプライベートルートキーに対応するアクセラレータパブリックルートキー(PK_RK)を用いて、暗号化された第2の一時的なパブリックキーを解読して、第2の一時的なパブリックキーを復元する。その後、処理ロジックは、第1の一時的なパブリックキーと第2の一時的なパブリックキーが同じであるか否かを検証し、ここで、第1のノンスは、前記第1の一時的なパブリックキーと第2の一時的なパブリックキーが同じである時に生成される。
一実施形態において、DPアクセラレータから第2のノンスを受信することは、一時的なパブリックキーに対応する一時的なプライベートキーを用いて暗号化された第1のノンス及び第2のノンスを受信することを含む。他の一実施形態において、処理ロジックはさらに、ホストシステムで第1の一時的なパブリックキーまたは第2の一時的なパブリックキーを用いて暗号化された第1のノンス及び第2のノンスを解読して、第1のノンス及び第2のノンスを復元する。他の一実施形態において、一時的なプライベートキーによって暗号化された第1のノンス及び第2のノンスはさらに、DPアクセラレータによってホストのパブリックキーを利用して暗号化される。他の一実施形態において、処理ロジックは、ホストのパブリックキーに対応するホストプライベートキーを用いて暗号化された第1のノンス及び第2のノンスを解読して、前記第1のノンス及び前記第2のノンスを復元する。
図16Bを参照すると、一実施形態において、ブロック1621において、ホストシステムから受信された請求に応じて、処理ロジックは、データ処理(DP)アクセラレータで一時的なプライベートキーと一時的なパブリックキーを生成し、ここで、DPアクセラレータは、バスを介してホストシステムに接続される。ブロック1622において、処理ロジックは、DPアクセラレータに関連付けられるアクセラレータプライベートルートキーを利用して、一時的なパブリックキーを暗号化する。ブロック1623において、処理ロジックは、暗号化されていない形式の一時的なパブリックキーと暗号化された一時的なパブリックキーをホストシステムに送信して、ホストシステムに一時的なパブリックキーを検証するように許可する。ブロック1624において、処理ロジックは、ホストシステムから第1のノンスを受信し、ここで、前記第1のノンスは、一時的なパブリックキーが検証された後にホストシステムによって生成される。ブロック1625において、処理ロジックは、前記第1のノンス及び前記第2のノンスに基づいてセッションキーを生成し、ここで、前記第2のノンスは、すでにDPアクセラレータでローカルに生成されている。
一実施形態において、暗号化された第1のノンス及び第2のノンスを生成するために、処理ロジックはさらに、一時的なプライベートキーを利用して第1のノンス及び第2のノンスを暗号化する。その後、処理ロジックはさらに、暗号化された第1のノンス及び第2のノンスをホストシステムに送信し、ホストシステムに対応するホストセッションキーを生成させるようにする。他の一実施形態において、処理ロジックはさらに、暗号化された第1のノンス及び第2のノンスを送信する前に、ホストシステムに関連付けられるホストのパブリックキーを用いて、暗号化された第1のノンス及び第2のノンスを暗号化する。他の一実施形態において、ホストシステムは、一時的なパブリックキーとホストシステムに関連付けられるホストプライベートキーを用いて、暗号化された第1のノンス及び第2のノンスを解読して、前記第1のノンス及び前記第2のノンスを復元するように構成される。他の一実施形態において、ホストシステムは、第1のノンスの鮮度を検証するように構成され、ここで、ホストセッションキーは、前記第1のノンスが所定の期間内に生成された場合のみに生成される。
DPアクセラレータのメモリバッファは、DPアクセラレータを実行するのに必要なプログラム、プログラムへの入力データ、およびプログラムからの出力結果を含むことができる。DPアクセラレータのセキュリティ対策が施されていないメモリバッファは、全体のホストサーバー-DPアクセラレータシステムアーキテクチャにおけるセキュリティー侵害をもたらす可能性がある。DPアクセラレータのメモリバッファは、上述したように、ホストサーバーに対してこれらのDPアクセラレータへのアクセスを許可しないことを保護することができる。ホストサーバーがDPアクセラレータのメモリバッファにアクセスすることができないシナリオに対して、ホストサーバーは、DPアクセラレータのためのメモリ利用情報を保持することができる。前記メモリ利用情報は、データの機密性と整合性を確保することができる信頼できる実行環境(TEE)に保持することができる。
図17は、一実施形態に係るDPアクセラレータのメモリバッファを保護するためのセキュアメモリマネージャ(MM)を備えるホストの一例を示すブロック図である。システム1700は、図9のシステム900を表し、DPアクセラレータのメモリを管理するために、ホストサーバー104上にセキュアメモリマネージャを提供する。図17を参照すると、一実施形態において、ホストサーバー104は、MM1701を含むランタイムライブラリ205を含む。対応的に、DPアクセラレータ405は、メモリ1703と、メモリユニット(MU)1705を含んでもよいが、DPアクセラレータ407がメモリ1707とMU1709を含んでもよい。メモリマネージャは、DPアクセラレータのメモリを管理することができる。メモリ1703とメモリ1707は、DPアクセラレータのグローバルメモリであってもよい。グローバルメモリは、DPアクセラレータ上で実行されるプログラムコード、プログラムコードへの入力およびプログラムの実行からの出力結果などの情報を格納するためのアクセラレータの中の構成要素であってもよい。MU1705とMU1709のそれぞれは、DPアクセラレータのメモリ1703とメモリ1707のメモリレイアウトとメモリ利用に関してMM1701と通信して協働することができる。
図18は、いくつかの実施形態に係るメモリマネージャMMの一例を示すブロック図である。図18を参照すると、メモリマネージャ1701は、メモリ割り当て手段1801、メモリ割り当て解除手段1803およびメモリ利用レジストリテーブル1811を含んでもよい。メモリ割り当て手段1801は、DPアクセラレータのグローバルメモリ(例えば、DPアクセラレータ405のメモリ1703)からメモリブロックを割り当てることができる。メモリ割り当て解除手段1803は、DPアクセラレータのグローバルメモリからメモリブロックを割り当て解除することができる。メモリ利用レジストリテーブル1811は、ホストサーバーのDPアクセラレータに関連付けられるメモリブロックのためのメモリレイアウトと利用情報を記録することができる。一実施形態において、各テーブル(レジストリテーブル1811の一部として)は、DPアクセラレータに関連付けられることができ、前記テーブルは、複数のユーザアプリケーションのための複数のエントリを備えることができる。例えば、ユーザアプリケーションは、DPアクセラレータの2つのメモリブロックを予定するための2つのエントリを備えることができる。その後、レジストリテーブルは参照として利用されてDPアクセラレータのためのメモリブロックを割り当てたり、割り当てを解除したりすることができる。メモリ利用レジストリテーブル1811は、1つまたは複数のメモリマネージャテーブルを含んでもよい。メモリマネージャテーブルは、コンピュータのオペレーティングシステムのうちのシステムによって使用され、ユーザアプリケーションと物理アドレスおよび/または仮想アドレスの間のマッピングを格納するためのデータ構造である。DPアクセラレータの例示的なメモリ利用レジストリテーブルは、アプリケーションID、開始アドレスおよびサイズなどのフィールドを備えることができる。ここで、アプリケーションIDは、どのユーザアプリケーションにメモリブロックが割り当てられたかを示し、開始アドレスとサイズは、メモリブロックのアドレスとサイズを示す。いくつかの実施形態において、レジストリテーブルは、、読み出しアクセスまたは書き込みアクセスなど、対応するメモリブロックが割り当てられているかどうか、仮想アドレスメモリへの物理アドレスがマップされているかどうか、読み取りまたは書き込みアクセスなどを示すフラグのような追加のフィールドを含むことができる。多くのメモリ利用レジストリテーブルは存在し、各DPアクセラレータは、1つのメモリ利用レジストリテーブルを備えることに留意しなければならない。
図17~図18を参照すると、一例として、リモートクライアントは、ホストサーバー104上で(ユーザアプリケーション203の一部分としての)特定のアプリケーションを実行するためのコマンドを発行することができる。アプリケーションは、ランタイムライブラリ205によって提供されるAPIへの呼び出しによって、DPアクセラレータ(405~407)からのリソースを利用するように請求することができる。前記リソースは、メモリリソースやプロセッサのリソースであってもよい。メモリリソースの例示に対して、請求の受信時、ランタイムライブラリ205は、MM1701のインスタンスを起動することができる。その後、ランタイムライブラリ205は、DPアクセラレータ405がインスタンスのメモリ割り当て手段1801によって、DPアクセラレータ405のメモリ703から指定されたサイズのメモリブロックを割り当てるようにDPアクセラレータ405に命令して、アプリケーションを実行することができる。
一実施形態において、リソースブロックが請求される前に、MM1701は、メモリ利用レジストリテーブル1811をクエリーして、リソースブロックが既に割り当てられているか否かを判定することができる。その後、MM1701は、第1のメモリブロックが割り当てられていないことが判定されたことに応じて、割り当てコマンドをDPアクセラレータ405に送信して、グローバルメモリの第1のメモリブロックをアプリケーションに割り当てる。他の一実施形態において、MM1701は、請求メモリブロックが既に割り当てられていることが判定されたことに応じて、第1の請求を拒否する。
MU1705は、コマンドを受信しメモリの割り当てを実行する。一実施形態において、MU1705は、割り当てられる前記請求のメモリブロックのサイズを備える連続メモリブロックを見つけるためにメモリ1703をトラバースすることができる。ここで、MU1705は、MU1705のために、DPアクセラレータ405のために同様のメモリ利用のレジストリテーブル(例えば、メモリ利用のデータ構造)を保持してDPアクセラレータ405のためのメモリ1703をトラバースすることもできる。他の一実施形態において、MM1701は、割り当てコマンドとメモリ利用レジストリテーブルのコピーをDPアクセラレータ405に送信する。このようにして、MU1705は、すでに割り当てられたメモリに気付いている。その後、MU1705は、メモリ利用情報に基づいて、メモリブロックを割り当て、新たに割り当てられたメモリブロックのための新しいメモリ利用情報をMM1701に返すことができる。その後、MM1701は、メモリブロックを請求するアプリケーションに対応するアプリケーション識別子、開始アドレスおよび割り当てられたメモリブロックのサイズをメモリ利用レジストリテーブル1811上に記録する。メモリの割り当て後、TEE内で実行されるアプリケーションがDPアクセラレータ405~407のメモリ位置にアクセスしようとする場合、MM1701は、レジストリテーブル1811を検索し、メモリ位置がアプリケーションに割り当てられているか否かを検証することができる。割り当てられていると、アプリケーションは、メモリ位置にアクセスすることが許可される。そうでなければ、アプリケーションは、メモリ位置にアクセスすることを拒否する。メモリブロックが割り当てられると、前記メモリブロックは、暇なときまでに続いて割り当てることができないことに留意しなければならない。
他の一実施形態において、MU1705が通信チャネルを介した物理アドレスの送信を避けるために、メモリブロックの割り当て時にメモリ利用情報を取得する場合、MU1705は、代わりに仮想メモリアドレスをMU1701に返すことができる。ここで、MU1705は、物理メモリアドレスから仮想メモリアドレスへのマッピングテーブルを含むことができる。マッピングテーブルは、DPアクセラレータ405のメモリ1703に対して仮想メモリアドレスから物理メモリアドレスへマッピングすることができる。このようにして、MU1705は、仮想メモリアドレスだけを開示し、その結果、メモリ1703の物理アドレスは、通信チャネルを介して開示されていない。
ユーザアプリケーションの実行が完了するか、またはクライアントが完了コマンドを発する場合、一実施形態において、ユーザアプリケーションは、ユーザアプリケーションに関連付けられたメモリブロックのためのメモリの割り当て解除コマンドをDPアクセラレータ405に送信することができる。他の一実施形態において、レジストリテーブルのコピーもDPアクセラレータ405に送信される。一実施形態において、メモリの割り当て解除コマンドが送信される前に、MM1701は、メモリブロックがメモリ利用データ構造に格納されたメモリ利用情報に基づいて、アプリケーションに割り当てられているか否かを判定する。割り当てられていると、割り当て解除コマンドは送信される。そうでなければ、割り当て解除コマンドは送信されず、例えば、割り当て解除請求は拒否され得る。
MU1705は、割り当て解除コマンドを受信して、メモリの割り当て解除を行う。一実施形態において、MU1705は、メモリ1703をトラバースして、メモリブロックのためのメモリバッファをリセットするようにメモリブロックを位置させる。その後、MU1705は、状態完了、および/または新しいメモリ利用情報をMM1701に返す。その後、MM1701は、状態完了、および/または新しいメモリ利用情報に応じて、メモリ利用のレジストリテーブル1811をアップデート(例えば、エントリを削除)する。
図19は、一実施形態による方法の一例を示すフローチャートである。プロセス1900は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行されることができる。例えば、プロセス1900は、図17のホスト104のようなホストシステムによって実行されることができる。図19を参照すると、ブロック1901において、処理ロジックは、ホストシステムの信頼できるプラットフォームモジュール(TPM))のようなセキュリティモジュールを利用して、セキュアブートを実行する。ブロック1902において、処理ロジックは、ホストシステムの1つまたは複数のプロセッサに関連付けられる信頼できる実行環境(TEE)を作成する。ブロック1903において、処理ロジックは、TEE内のメモリマネージャを起動し、ここで、メモリマネージャは、バスを介してホストシステムに接続されたデータ処理(DP)アクセラレータのメモリリソースを管理するように構成され、したがって、DPアクセラレータのグローバルメモリのメモリ利用情報を維持することを含む。ブロック1904において、DPアクセラレータのメモリ位置にアクセスするためにTEE内で実行されるアプリケーションから受信された請求に応じて、処理ロジックは、メモリ利用情報に基づいて請求を許可または拒否する。
一実施形態において、メモリマネージャは、DPアクセラレータに関連付けられるランタイムライブラリの一部として実現され、これは、ホストシステムのTEE内で実行される。一実施形態において、DPアクセラレータのグローバルメモリのメモリ利用情報を維持することは、DPアクセラレータのグローバルメモリのメモリブロックのメモリ割り当てを記録するようにメモリ利用のデータ構造を維持することを含む。他の一実施形態において、メモリ利用のデータ構造は、複数のエントリを含み、各エントリは、すでに割り当てられているDPアクセラレータのグローバルメモリのメモリブロックを記録する。他の一実施形態において、各エントリは、対応するメモリブロックの開始メモリアドレス、対応するメモリブロックのサイズ、および対応するメモリブロックが割り当てられているか否かを示すフラグを格納する。
他の一実施形態において、処理ロジックはさらに、アプリケーションから第1の請求を受信し、DPアクセラレータのグローバルメモリから第1のメモリブロックを割り当てている。前記第1の請求に応じて、処理ロジックは、DPアクセラレータに連絡する必要がなく、メモリ利用データ構造に格納されたメモリ利用情報に基づいて、第1のメモリブロックが既に割り当てられているか否かを判定する。その後、処理ロジックは、第1のメモリブロックが割り当てられていないことが判定されたことに応じて、グローバルメモリの第1のメモリブロックをアプリケーションに割り当てる。
他の一実施形態において、処理ロジックはさらに、第1のメモリブロックが既に割り当てられていることが判定されたことに応じて、第1の請求を拒否する。他の一実施形態において、処理ロジックはさらに、アプリケーションから第2の請求を受信し、DPアクセラレータのグローバルメモリから第2のメモリブロックに対して割り当てを解除する。前記第2の請求に応じて、処理ロジックは、メモリ利用のデータ構造に格納されたメモリ利用情報に基づいて、第2のメモリブロックが既にアプリケーションに割り当てられているか否かを判定する。処理ロジックは、第2のメモリブロックがアプリケーションに割り当てられていることが判定されたことに応じて、グローバルメモリから第2のメモリブロックに対して割り当てを解除し、それ以外の場合、前記第2の請求を拒否する。
図20は、一実施形態に係るDPアクセラレータに通信可能に接続されているホストの一例を示すブロック図である。システム2000は、信頼ルートサービスとタイムスタンプ生成サービスをDPアクセラレータ405~407に提供することができることを除いて、図9のシステム900を表すことができる。図20を参照すると、一実施形態において、DPアクセラレータ405は、セキュリティユニット1020とタイムユニット2003を含む。セキュリティユニット1020は、多数の暗号化スキームを使用してDPアクセラレータの他のモジュール/ユニットに信頼ルートサービスを提供でき、タイムユニット2003は、暗号化キーの認証用のタイムスタンプを生成して、異なる暗号化スキームをサポートできる。なお、タイムユニット2003は、スタンドアロンのユニットであってもよく、あるいはセキュリティユニット1020と統合されることもできる。
一実施形態において、セキュリティユニット1020は、暗号化キーが認証されたとき、またはセッションキーの期限が切れたときに、追跡するためにセキュアタイムソースを必要とする。セキュリティユニット1020のために、外部ソースからのクロック信号を利用することは、安全でない可能性がある。例えば、意図された時間を超えるようにセッションキーを延長するために、外部ソースのクロックのクロック周波数を調整するか、またはクロックの給電手段を変調することができる。
図21は、一実施形態に係るタイムユニットの一例を示すブロック図である。図21を参照すると、タイムユニット2003は、スタンドアロンクロック生成、およびセキュアクロック信号のためのスタンドアロンの給電手段を備えてもよい。タイムユニット2003は、クロック生成手段2101、ローカルオシレータ2103、カウンタ2105、給電手段2107、クロックキャリブレータ2109およびタイムスタンプ生成手段2111を含んでもよい。クロック生成手段2101は、外部ソースからのクロック信号を導出する必要がなく、クロック信号をローカルに生成することができる。ローカルオシレーター2103は、クロック生成手段2101に接続されて、正確なパルス信号を提供することができる。例えば、ローカルオシレータ2103は、特定の閾値(例えば、マイクロ秒毎に1カウント)よりも大きい精度を備えるパルス信号を提供することができるクリスタルオシレータを含んでもよい。カウンター2105は、クロック生成手段2101に接続されて、クロック生成手段2101から生成されたクロック信号に基づいて、1つまたは複数のカウント値をカウントすることができる。給電手段2107は、電力をクロック生成手段2101とタイムスタンプ生成手段2111に提供することができる。クロックキャリブレータ2109は、クロック生成手段2101をキャリブレートすることができる。タイムスタンプ生成手段2111は、クロック生成手段に接続されて、クロック信号に基づいてタイムスタンプを生成することができる。
例えば、給電手段2107は、ダイムバッテリーのようなバッテリーを使用して安定的で持続的な電力を提供することができる。ここで、ダイムバッテリーは、セキュリティユニット1020の外部のボード上に位置することができる。他の一実施形態において、給電手段2107の回路は、セキュリティユニット1020の外部に配置される。ローカルオシレータ2103は、高性能のクリスタルオシレータを含んでもよい。カウンターは、不揮発性記憶装置において1つまたは複数の可変カウンタ(例えば、8ビット、16ビット、32ビットまたは64ビットなどの可変カウンタ)を含んでもよい。不揮発性記憶装置またはメモリは、給電手段が切っても記憶されたデータを保持する能力を備えるタイプのメモリである。揮発性記憶装置とは異なり、不揮発性記憶装置は、メモリデータを定期的にリフレッシュする必要がない。一実施形態において、不揮発性記憶装置は、ローカルオシレータ2103の単一信号パルスごとに1ずつ増加することができる第1のカウンタを含むことができる。第1のカウンタは、特定の値までカウントすることができ、その値は、外部ソースまたはクロックキャリブレータ2109によって変更され、したがって、その値は、クロック信号のマイクロ秒の信号を示すように調節される。その後、マイクロ秒は、第2のカウンタによって累算されて秒の信号を生成することができる。第3カウンタ、第4カウンターなどは、分、時、日、月の信号などを累算するために使用することができる。その後、クロック生成手段2101は、累算された信号に基づいてクロックを生成することができる。クロック信号に基づいて、タイムスタンプ生成手段はタイムスタンプを生成することができる。その後、タイムスタンプは、様々な目的のためにフォーマットされることができる。いくつかの例示的なタイムスタンプフォーマットは、yyyy-MM-dd HH:mm:ss.SSS、yyyyMMdd.HHmmssSSS、およびyyyy/MM/dd HH:mm:ssであり得る。一実施形態において、コンバータは、タイムスタンプを一つのフォーマットから別のフォーマットに変換することができる。他の一実施形態において、クロックキャリブレータ2109は、DPアクセラレータの製造段階で、外部ソース(例えば、原子時計)とマッチングするようにクロック生成信号を初期にキャリブレートする。
その後、DPアクセラレータのセキュリティユニット1020のようなセキュリティユニットは、タイムユニット2003が需要に応じてタイムスタンプを生成するように請求することができる。その後、タイムスタンプは、セキュリティユニット1020によって使用されて、暗号化キーの認証、キー生成および/またはキーの有効期限にタイムスタンプを付けることができる。例えば、セッションキーが生成されるときに関連付けられるタイムスタンプに基づいて有効期限が切れたと確定された場合、セッションキーに関連付けられるチャネルセッションを終了することができる。続いて、セッションキーが自動的に延長されるように構成されるか、または延長認証がユーザアプリケーションを介して取得される場合、新しいセッションキーが生成され得る。
図22は、一実施形態によるセキュリティユニットの一例を示すブロック図である。セキュリティユニット1020は、DPアクセラレータによって使用されて、コマンドおよびデータを交換するようにホストサーバー/システムとのセキュアチャネルを作成し維持することができる。図22を参照すると、セキュリティユニット1020は、キーマネージャ1025、暗号化エンジン1029、インドールスメントキー(EK)2209を含んでもよいキー・ストア1027、揮発性記憶装置2207、不揮発性記憶装置2205、プロセッサ2203および乱数生成手段2201を含んでもよい。乱数生成手段2201は、ノンスのような乱数を生成することができる。一実施形態において、乱数生成手段2201は、シード入力(例えば、タイムスタンプ)に基づいて乱数を生成することができる。暗号化エンジン1029は、暗号化オペレーション(例えば、暗号化と復号化)を行うことができる。不揮発性記憶装置2205と揮発性記憶装置2207は、セキュリティユニット1020の記憶領域であってもよい。キー・ストア1027は、ユニークなインドールスメントクレデンシャル(EC)またはインドールスメントキー(EK)2209を安全に保持できるセキュリティユニット1020のキー記憶領域であってもよい。ここで、ECまたはEKは、製造時のセキュリティユニット1020においてランダムに生成され、内蔵されたパブリック/プライベート暗号化ルートキーペア(例えば、PK_RKとSK_RK)のパブリックキー(例えば、PK_RK)を意味する。EKに対応するプライベートルートキー(例えば、SK_RK)は、不揮発性記憶装置2205においても内蔵されるが、プライベートルートキーは、セキュリティユニット1020の外部からリリースされない。例示的なキーペアは2048ビットのRSA暗号化キーペアであってもよい。
製造/テスト段階において、DPアクセラレータは、内部でテストして構成することができ、EK2209は、セキュリティユニット1020に生成され埋め込まれる。一実施形態において、EK2209は、信頼できる認証サーバー上にアップロードすることができ、信頼できる認証サーバーでパブリックキーまたはEKはサインされ、EKのサインされた認証書は、EKが本物であるか否かを検証するのに使用することができる。ここで、認証サーバーは、政府承認サーバー、第三者の信頼できる認証サーバー、またはローカルサーバーであってもよい。
デプロイメント段階において、DPアクセラレータの電源投入後に、EK2209は、セキュリティユニット1020から読み出すことができ、EK2209は、ローカルで、または認証サーバーを使用して本物として検証することができる。EK検証に成功すると、DPアクセラレータは本物であると考えられる。その後、検証されたEKとセキュリティユニット1020の内部のプライベートルートキーは、上記で説明したチャネルセッションキーまたは一時的なパブリック/プライベートキーペア(例えば、PK_dとSK_d)などのその他の暗号化キーを導出するために使用することができる。
ランタイムカーネルまたはカーネル(またはカーネルオブジェクト)は、DPアクセラレータのオペレーションをサポートするために利用される数学的または計算関数を意味する。カーネルは、ユーザアプリケーションによって呼び出される数学関数であってもよい。いくつかの実施形態において、カーネルは、DPアクセラレータによって実行されるように、ホストサーバーまたは他のサーバーからDPアクセラレータにアップロードすることができる。例示的なカーネルは、DPアクセラレータによって実行される行列乗算オペレーションをサポートする行列乗算カーネルであってもよい。DPアクセラレータによって実行される他の数学的または計算関数をサポートするために、それぞれ専用されている数百のカーネルが存在することができることに留意しなければならない。カーネルのソース、DPアクセラレーターにアップロードされたカーネル、および変更されたカーネルを追跡することは、困難な場合がある。したがって、カーネルの確認(または検証)とカーネル認証プロトコルまたはスキームは、カーネルの本物のソースと整合性を確保するために必要である。
図23は、一実施形態によるDPアクセラレータに通信可能に接続されてカーネルオブジェクトを確認するホストサーバーの一例を示すブロック図である。システム2300は、図9のシステム900であってもよい。図23を参照すると、一実施形態において、ホストサーバー104は、ユーザアプリケーション203とランタイムライブラリ205を含むTEE201を含む。ランタイムライブラリ205は、カーネル検証装置モジュール2301とカーネル認証書ストア2303を含んでもよい。カーネル認証書ストア2303は、カーネル識別子によって記載されたカーネル(または単にパブリックキーリスト)の認証書を格納することができ、ここで、前記認証書は、信頼できる認証機関(CA)またはローカルの信頼できるサーバーによってサインされることができる。カーネル検証装置モジュール2301は、カーネル認証書ストア2303からのカーネル認証書情報に基づいて、サインされたカーネルオブジェクトを検証することができる。
ホストサーバー104は、永続性記憶装置(例えば、ストレージディスク)2305とDPアクセラレータ405~407に通信可能に接続することができる。永続性記憶装置2305は、ホストサーバー104の一部またはリモートストレージユニットであることに留意しなければならない。永続性記憶装置2305は、カーネルオブジェクト2307を含んでもよい。カーネルオブジェクト2307は、リモートソースに由来してもよいので、カーネルオブジェクトにサインされているのは、オブジェクトが信頼できるソースからのものであることを保証する。カーネルオブジェクトは、カーネルのバイナリファイルを含むオブジェクトを意味することができる。一実施形態において、カーネルオブジェクト2307の各カーネルオブジェクトは、カーネルの実行可能なイメージと対応するサインを含む。また、カーネルの実行可能なイメージは、暗号化され得る。サインは、カーネルオブジェクトに対応するパブリックキー/プライベートカーネルキーペアのプライベートキーを使用してサインされたカーネルのハッシュである。前記サインは、カーネルにサインするために使用されたプライベートキーに対応するパブリックキーを利用して検証することができる。例えば、パブリックキーは、カーネルオブジェクトのためのカーネル認証書から取得することができる。いくつかの実施形態において、カーネル開発者が最初にカーネルを作成するときに、カーネルオブジェクトは(カーネル開発者のプライベートキーを用いて)サインされる。その後、サインされたカーネルは、カーネルが本物であるか否かを保証するために検証(または[確認])のための対応するカーネル認証書(例えば、パブリックキー)を含むことができる。
図24は、一実施形態による例示的なカーネルオブジェクトの検証プロトコルを示すフローチャートである。カーネルオブジェクトの検証は、カーネルオブジェクト2307がホストサーバー104および/またはDPアクセラレータ405のTEE(201)に導入される前に、カーネルオブジェクト2307が本物であることに対する確認を意味する。例示2400は、図23のシステム2300によって実行されることができる。一実施形態において、検証前に、ユーザアプリケーション203(またはランタイムライブラリ205)は、信頼できる認証機関または信頼できるサイン者の認証書からパブリックキー(例えば、PK_i、PK_j、...PK_n)リストを取得し、ここで、対応するプライベートキー(例えば、SK_i、SK_j、...SK_n)は、カーネルオブジェクト2307にサインするのに使用されたカーネルの開発者のプライベートキーである。一実施形態において、ユーザアプリケーション203(またはランタイムライブラリ205)がDPアクセラレータ405(または、他のあらゆるDPアクセラレータ)によって実行されるカーネル(カーネル識別子によって識別されたカーネル)を呼び出す場合、ユーザアプリケーション203(または、ランタイムライブラリ205)は、カーネルがDPアクセラレータ405にアップデートされたか否かを判定する。そうでなければ、一実施形態によると、ホストサーバー104は、オペレーション2400を実行して、カーネルをDPアクセラレータ405にアップロードする前に、カーネルを検証する。なお、1つのカーネルを呼び出すと他のカーネルが呼び出される場合、ランタイムライブラリ205は、一連のカーネルを呼び出すことができる。
オペレーション2401において、TEE201の一部であるユーザアプリケーション203(または、ランタイムライブラリ205)は、カーネル識別子(ID)に基づいて、カーネルオブジェクト2307の一部であるカーネルに、OS211にロードされるように請求する。一実施形態において、カーネルIDは、グローバル一意識別子(例えば、GUIDまたはUUID)であることができる。一実施形態において、カーネルオブジェクトは、カーネル(例えば、実行可能なイメージ)、カーネルIDおよびカーネルに対するサインを含む。サインは、カーネルの暗号化されたハッシュであってもよい。他の一実施形態において、カーネルオブジェクトは、暗号化されたカーネル(例えば、暗号化された実行可能なイメージ)を含む。オペレーション2402において、OS211は、カーネルIDによって、永続性記憶装置2305からカーネルオブジェクトを検索する。オペレーション2403において、OS211は、カーネルオブジェクトをホストサーバー104のTEE201に返す。オペレーション2404において、カーネル検証装置モジュール2301は、カーネルIDに対応するカーネル認証書ストア2303からカーネル認証書を検索し、カーネルオブジェクトが本物であるか否かを検証する。一実施形態において、カーネルを検証することは、カーネルオブジェクトのサインにパブリックキーを適用してサインを解読して、所望のハッシュ値を生成することを含む。その後、カーネル検証装置モジュール2301は、カーネルのハッシュ値を生成し、所望のハッシュ値と生成されたハッシュ値を比較して、所望のハッシュ値と生成されたハッシュ値との差を確定する。違いがない場合、サインは有効である。サインが利用できる場合、カーネルの整合性が検証され、カーネルオブジェクトは本物で、信頼できる開発者によって取得されると見なされる。他の一実施形態において、カーネルが暗号化される場合、カーネルを検証することは、パブリックキーをカーネルの暗号化された実行可能なイメージに適用して、カーネルを解読して取得することを含む。
オペレーション2405において、カーネル(例えば、実行可能なイメージ)が信頼されるものであると確認される場合、オペレーション2406において、カーネルオブジェクトは、ホストサーバー104のTEE201によってDPアクセラレータ405に送信される。その後、呼び出されたカーネルは、DPアクセラレータ405の1つまたは複数の実行ユニットによって実行される。
図25は、一実施形態による方法の一例を示すフローチャートである。プロセス2500は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行される。例えば、プロセス2500は、図23のホスト104のようなホストシステムによって実行される。図25を参照すると、ブロック2501において、処理ロジックは、ホストシステムの信頼できる実行環境(TEE)内で実行されるランタイムライブラリにおいて、予め定義されたオペレーションを実行するための所定の機能を呼び出す請求をアプリケーションから受信する。ブロック2502において、前記請求に応じて、処理ロジックは、所定の機能に関連付けられるカーネルオブジェクトを識別する。ブロック2503において、処理ロジックは、カーネルオブジェクトの実行可能なイメージにサインされるのに使用されたプライベートキーに対応するパブリックキーを利用して、カーネルオブジェクトの実行可能なイメージを検証する。ブロック2504において、カーネルオブジェクトの実行可能なイメージの検証に成功したことに応じて、処理ロジックは、DPアクセラレータによって実行されるようにバスを介してカーネルオブジェクトの検証された実行可能なイメージをデータ処理(DP)アクセラレータに送信して、予め定義されたオペレーションを実行する。
一実施形態において、ランタイムライブラリは、プライベートキーに対応するパブリックキーを利用して、カーネルオブジェクトのサインを解読することにより、カーネルオブジェクトを検証するように構成される。ここで、カーネルオブジェクトは、暗号化されていない形式でDPアクセラレータに送信される。他の一実施形態において、処理ロジックはさらに、所定のハッシュ関数を利用して、カーネルオブジェクトの実行可能なイメージをハッシュすることにより、カーネルオブジェクトの整合性を検証する。
一実施形態において、カーネルオブジェクトは、永続性記憶装置の非安全な場所に記憶される。他の一実施形態において、カーネルオブジェクトは、永続性記憶装置に記憶された多くのカーネルオブジェクトのうちの一つであり、ここで、前記ランタイムライブラリは、カーネルオブジェクトにそれぞれ関連付けられるパブリックキーのリストを維持し、パブリックキーは、カーネルオブジェクトを検証するのに使用される。
一実施形態において、DPアクセラレータは、アプリケーションを代表して分散方式でカーネルオブジェクトの実行可能なイメージを実行するように構成された1つまたは複数の実行ユニットを含む。一実施形態において、パブリックキーは、信頼できるサーバーから取得され、パブリックキーは、カーネルオブジェクトのプロバイダによって提供され、ここで、前記カーネルオブジェクトはプロバイダがプライベートキーを使用してサインしたサインを含む。
図26は、一実施形態によるカーネル認証のためにDPアクセラレータに通信可能に接続されているホストサーバーの一例を示すブロック図である。カーネル認証は、DPアクセラレータにアップロードされたカーネルの整合性を検証することを含み、カーネルが転送中にいくつかの第三者によって変更されないことを確保する。カーネルの整合性は、カーネルのサインを検証することにより検証することができる。システム2600は、図9のシステム900であってもよい。図26を参照すると、一実施形態において、ホストサーバー104は、ユーザアプリケーション203、ランタイムライブラリ205、認証モジュール2601およびカーネルダイジェストストア2603を含むTEE201を含む。カーネルダイジェストストア2603は、他のDPアクセラレータにアップロードされたカーネルに対応する複数のカーネルダイジェストを記憶することができる。一実施形態において、カーネルダイジェストは、カーネルの非暗号化ハッシュまたはカーネルの任意のタイプの関数(例えば、チェックサム、CRCなど)を意味する。カーネルダイジェストストア2603は、カーネルダイジェストのためにカーネルIDのマッピングとDPアクセラレータIDのマッピングをさらに記憶することができる。前記マッピングは、いくつかのカーネルがどのDPアクセラレータにアップロードされているかを識別することができる。カーネルダイジェストストア2603からのカーネルダイジェスト情報に基づいて、認証モジュール2601は、カーネルダイジェストストア2603からのカーネルダイジェスト情報に基づいて、カーネルを認証することができる。
図26を参照すると、DPアクセラレータ405は、セキュリティユニット1020、認証ユニット2605、実行ユニット2607および記憶装置2609を含んでもよい。記憶装置2609は、カーネルオブジェクト2611を含んでもよい。認証ユニット2605は、認証プロトコルを介して認証モジュールと通信することができる。記憶装置2609は、カーネルオブジェクト2611を格納する1つまたは複数の記憶装置であってもよい。カーネルオブジェクト2611は、DPアクセラレータ405に予めアップロードされた1つまたは複数のカーネル(及び、対応するカーネルID)を含んでもよい。実行ユニット2607は、カーネルオブジェクト2611から1つまたは複数の呼び出されたカーネルを実行することができる。
一実施形態において、ユーザアプリケーション203(または、ランタイムライブラリ205)は、カーネルダイジェストを生成することにより、カーネルオブジェクトがDPアクセラレータ405上にすでにアップデートされているか否かを判定して、生成されたカーネルダイジェストがカーネルダイジェストストア2603からのカーネルダイジェスト情報の中から見つけられるか否かをクエリーして、カーネルがDPアクセラレータ上に存在しているか否かを判定することができる。選択的に、カーネルIDをクエリーして、カーネルがDPアクセラレータ上に存在しているか否かを判定することができる。見つけられると、認証を開始し、そうでなければ、ユーザアプリケーション203(または、ランタイムライブラリ205)は、上述したように、カーネルオブジェクトを検証し、カーネルダイジェストがカーネルダイジェストストア2603に記憶されるように、カーネルのカーネルダイジェストを生成する。その後、ユーザアプリケーション203(または、ランタイムライブラリ205)は、カーネルのバイナリファイルのコピーをDPアクセラレータ上にアップロードする。後続の実行セッションにおいて、カーネルは、カーネルの呼び出しに応じて、ユーザアプリケーション(またはランタイムライブラリ)によって認証される。
図27は、一実施形態による例示的な認証プロトコルを示すフローチャートである。一実施形態において、例示2700は、図26のホストサーバー104の認証モジュール261とDPアクセラレータ405の認証ユニット2605との間で行われる。図27を参照すると、オペレーション2701において、ホストサーバー104は、DPアクセラレータ405から認証キーを請求する。オペレーション2702において、前記請求に応じて、DPアクセラレータ405は、パブリック/プライベート認証キーペア(例えば、PK_ATTとSK_ATT)を生成し、DPアクセラレータ405に関連付けられるプライベートルートキー(例えば、SK_RK)を利用して、PK_ATTにサインする。
オペレーション2703において、DPアクセラレータ405は、PK_ATTとサインされたPK_ATTを備えるメッセージをホストサーバー104に返す。オペレーション2704において、ホストサーバー104は、メッセージを受信し、DPアクセラレータ405に関連付けられるパブリックルートキー(例えば、PK_RK)を利用して、サインされたPK_ATTを解読し、受信されたPK_ATTと解読されたPK_ATTを比較して、サインされたPK_ATTを検証する。一実施形態において、ホストシステムは、ネットワークを介してDPアクセラレータから、または信頼できるサーバーからDPアクセラレータに関連付けられるPK_RKを予め受信する。受信されたPK_ATTが解読されたPK_ATTとマッチングする場合、ホストサーバー104は、PK_ATTが実際にDPアクセラレータ405によって生成されたことを検証した。なお、オペレーション2701~2704は、オペレーション2705前の任意の時間に、認証のために実行されることができる。つまり、同じ認証キーは、予定期間(例えば、一週間)の間に使用することができ、認証キーは、いずれの認証されたカーネルと関連されず、例えば、認証キーは、多くのカーネルに使用されることができる。
オペレーション2705において、ホストサーバー104は、引用符を請求するためのコマンド「CMD_認証_実行(CMD_DO_ATTESTATION)」をカーネルのカーネルIDと共にDPアクセラレータ405に送信する。オペレーション2706において、前記コマンドの請求を受信したことに応じて、DPアクセラレータ405は、カーネルのカーネル整合性を測定する。一実施形態において、カーネルの実行可能なイメージは、(カーネルオブジェクト2611の一部として)ハッシュされ、カーネルダイジェストを生成する。その後、カーネルダイジェストは、タイムスタンプと一緒にSK_ATTを利用してサインされる。ここで、タイムスタンプは、図20のタイムユニット2003のようなタイムユニットによって生成される。
オペレーション2707において、DPアクセラレータ405は、サインされたカーネルのダイジェストを備えるメッセージをタイムスタンプと一緒にホストサーバー104に送信する。オペレーション2708において、メッセージを受信したことに応じて、ホストサーバー104は、PK_ATTを利用して、サインされたカーネルダイジェストをタイムスタンプと一緒に解読する。その後、ホストサーバー104は、タイムスタンプをチェックして、メッセージが所定の期間(例えば、一日)よりも多くの期間を経過していないか否かを検証する。その後、ホストサーバー104は、カーネルダイジェストがDPアクセラレータに予めアップロードされたカーネルに属するか否かを検証する。一実施形態において、ホストサーバー104は、カーネルダイジェストストア2603からのカーネルダイジェスト情報から受信されたカーネルダイジェストをクエリーする。DPアクセラレータ405のDPアクセラレータIDとマッチングするエントリが見つけられた場合、カーネル認証は成功した。そうでなければ、認証は失敗した。オペレーション2709において、ホストサーバー104は、認証または検証の結果をDPアクセラレータ405に送信することができる。前記結果に基づいて、カーネルは、DPアクセラレータ405の実行ユニットによって実行されることを許可または拒否する。
図28A及び図28Bは、いくつかの実施形態による例示的な方法を示すフローチャートである。プロセス2800とプロセス2820は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行されることができる。例えば、プロセス2800は、ホストサーバー104によって実行され得、プロセス2820は、図26のDPアクセラレータ405によって実行され得る。図28Aを参照すると、ブロック2801において、処理ロジックは、ホストシステムにおいて、バスを介してデータ処理(DP)アクセラレータからパブリック認証キー(PK_ATT)またはサインされたPK_ATTを受信する。ブロック2802において、処理ロジックは、DPアクセラレータに関連付けられるパブリックルートキー(PK_RK)を利用してPK_ATTを検証する。ブロック2803において、PK_ATTの検証に成功したことに応じて、処理ロジックは、カーネル識別子(ID)をDPアクセラレータに送信して、DPアクセラレータに記憶されたカーネルオブジェクトの認証を請求する。ブロック2804において、DPアクセラレータからカーネルオブジェクトに対応するカーネルダイジェストまたはサインされたカーネルのダイジェストが受信されたことに応じて、処理ロジックは、PK_ATTを利用して、カーネルのダイジェストを検証する。ブロック2805において、処理ロジックは、DPアクセラレータが前記検証結果に基づいてカーネルオブジェクトにアクセスするように、前記検証結果をDPアクセラレータに送信する。
一実施形態において、処理ロジックはさらに、認証に対する請求をDPアクセラレータに送信し、ここで、DPアクセラレータは、認証に対する請求に応じてPK_ATTとプライベート認証キー(SK_ATT)を具備する認証キーペアを生成する。その後、処理ロジックは、DPアクセラレータからDPアクセラレータのプライベートルートキー(SK_RK)を利用してサインされた暗号化PK_ATTを受信する。他の一実施形態において、処理ロジックはさらに、ホストシステムにおいてDPアクセラレータに関連付けられるパブリックルートキー(PK_RK)を利用して暗号化PK_ATTを解読し、DPアクセラレータから受信されたPK_ATTが、解読されたPK_ATTと同じか否かを検証する。一実施形態において、DPアクセラレータに関連付けられるパブリックルートキー(PK_RK)は、ネットワークを介して信頼できるサーバーに由来するホストサーバー104によって受信することができる。
一実施形態において、カーネルダイジェストは、DPアクセラレータによってカーネルオブジェクトの実行可能なイメージをハッシュすることで生成される。他の一実施形態において、カーネルダイジェストは、PK_ATTに対応するプライベート認証キー(SK_ATT)を利用してサインされる。他の一実施形態において、カーネルダイジェストは、ある時点で生成されたタイムスタンプと一緒にサインされ、ここで、前記タイムスタンプは、ホストシステムによって使用されて、カーネルダイジェストが所定の期間内に生成されたか否かを検証する。一実施形態において、ホストシステムは、ネットワークを介して所定の信頼できるサーバーからDPアクセラレータに関連付けられるPK_RKを受信する。
図28Bを参照すると、ブロック2821において、ホストシステムから受信された認証請求に応じて、処理ロジックは、データ処理(DP)アクセラレータでパブリック認証キー(PK_ATT)とプライベート認証キー(SK_ATT)を具備する認証キーペアを生成する。ブロック2822において、処理ロジックは、PK_ATTまたはサインされたPK_ATTをDPアクセラレータからホストシステムに送信し、ここで、DPアクセラレータは、バスを介してホストシステムに接続される。ブロック2823において、処理ロジックは、ホストシステムからカーネルオブジェクトを識別するためのカーネル識別子(ID)を受信し、ここで、カーネルIDはPK_ATTの検証に成功したことに応じて受信される。ブロック2824において、処理ロジックは、カーネルIDに応じて、カーネルオブジェクトの実行可能なイメージをハッシュすることにより、カーネルダイジェストを生成する。ブロック2825において、処理ロジックは、カーネルダイジェストまたはサインされたカーネルダイジェストをホストシステムに送信して、ホストシステムがDPアクセラレータ内で実行されるカーネルオブジェクトにアクセスする前に、カーネルオブジェクトを検証、認証することを許可する。
一実施形態において、処理ロジックはさらに、DPアクセラレータに関連付けられるプライベートルートキー(SK_RK)を利用して、PK_ATTにサインして、サインされたPK_ATTをホストシステムに送信して、ホストシステムにPK_ATTがDPアクセラレータに由来するか否かを検証させる。他の一実施形態において、ホストシステムは、SK_RKに対応するパブリックルートキー(PK_RK)を利用して、サインされたPK_ATTを解読し、DPアクセラレータから受信されたPK_ATTと解読されたPK_ATTを比較することにより、PK_ATTを検証するように構成される。
一実施形態において、処理ロジックはさらに、SK_ATTを利用して、カーネルダイジェストにサインし、サインされたカーネルダイジェストをホストシステムに送信して、ホストシステムにカーネルダイジェストがDPアクセラレータによって送信されたか否かを検証するように許可する。他の一実施形態において、ホストシステムは、PK_ATTを利用して、サインされたカーネルダイジェストを解読し、DPアクセラレータから受信されたカーネルダイジェストと解読されたカーネルダイジェストを比較することにより、カーネルダイジェストを検証するように構成される。他の一実施形態において、処理ロジックはさらに、タイムスタンプを作成し、タイムスタンプと一緒にカーネルダイジェストにサインし、ここで、タイムスタンプは、ホストシステムによって使用されてカーネルダイジェストの鮮度を検証する。
ホストサーバーに通信可能に接続されるDPアクセラレータはさらに、ホストサーバーによって予想されるDPアクセラレータであることを認証することができる。保証は、第三者の信頼できるサーバーおよび/または認証機関を介して達成することができる。
図29は、一実施形態によるDPアクセラレータおよび信頼できるサーバーに通信可能に接続されているホストサーバーの一例を示すブロック図である。DPアクセラレータの確認(validation)は、信頼できるサーバーからのDPアクセラレータの認証書を検証することを意味する。信頼できるサーバーは、第三者認証機関またはローカルサーバーであってもよい。システム2900は、図9のシステム900であってもよい。図29を参照すると、一実施形態において、ホストサーバー104は、キー検証モジュール2901とPK_RK(s)2903を含むTEE201を含む。PK_RK(s)2903は、DPアクセラレータに関連付けられるパブリックキーを記憶することができる。キー検証モジュール2901は、信頼できるサーバー2921のような信頼できるサーバーを介してDPアクセラレータのためのパブリックキーを検証することができる。信頼できるサーバー2921は、DPアクセラレータ認証書2923を含んでもよい。
図29を参照すると、DPアクセラレータは、キー検証ユニット2905と記憶装置2913を含むセキュリティユニット1020を含んでもよい。記憶装置2913は、SK_RK2907、アクセラレータID(例えば、シリアル番号、および/またはUUID)2909およびバージョン番号2911を含んでもよい。バージョン番号は、DPアクセラレータ405のファームウェアのバージョンを示すことができ、バージョン番号は、DPアクセラレータ405のファームウェアのバージョンに応じてアップデートされることができる。キー検証ユニット2905は、ホストサーバー104のキー検証モジュール2901のようなキー検証モジュールと通信してDPアクセラレータ(例えば、アクセラレータID2909、および/またはバージョン番号2911)に関する情報をホストサーバー104に提供することができる。
予備事項として、一実施形態において、ホストサーバー104は、DPアクセラレータ405に関連付けられるPK_RKのコピーを備えることができる。しかし、DPアクセラレータ405が最初にホストサーバー104に導入されるか、またはDPアクセラレータ405が再導入される場合、DPアクセラレータ405のPK_RKは、ホストサーバー104に対して確認されるか、または再確認される必要がある可能性がある。
図30は、一実施形態による例示的なDPアクセラレータ確認プロトコルを示すフローチャートである。プロトコル3000は、DPアクセラレータ405のPK_RKを確認する例示的な実施例であってもよい。図29~図30を参照すると、プロトコル3000は、ホストサーバー104のキー検証モジュール2901とDPアクセラレータ405のキー検証ユニット2905との間で行われる。
図30を参照すると、オペレーション3001において、ホストサーバー104は、アクセラレータ405からアクセラレータIDを請求する。オペレーション3002において、前記請求に応じて、DPアクセラレータ405は、アクセラレータID2909(例えば、DPアクセラレータのシリアル番号またはUUID)をホストサーバー104に返す。オペレーション3003において、ホストサーバー104は、受信されたアクセラレータIDを信頼できるサーバー2921に送信する。ここで、信頼できるサーバー2921は、DPアクセラレータ405に関する認証書情報を有する認証機関、第三者の信頼できるサーバーまたはローカルの信頼できるサーバーであってもよい。オペレーション3004において、前記請求に応じて、信頼できるサーバー2921は、DPアクセラレータ405のアクセラレータIDに関連付けられる認証書をホストサーバー104に送信する。
オペレーション3005において、ホストサーバー104は、アクセラレータIDに関連付けられる認証書から認証書情報(例えば、パブリックキーPK_RK)を抽出し、認証書情報をアクセラレータIDと一緒にローカル記憶装置(例えば、PK_RK(s)2903)に記憶する。一実施形態において、抽出されたPK_RKは、DPアクセラレータ405のために事前に取得されたかもしれないDPアクセラレータ405のための既存のPK_RK(例えば、PK_RK(s)2903の一部である既存のPK_RK)に対して検証され得る。選択的に、認証書情報は、信頼できるサーバー2921の認証書チェーンを検証することにより、検証されることができる。認証書チェーンは、送信者と信頼されたサーバー(認証機関など)が信頼できることを受信者が確認できるようにする認証書の順序付きリストである。オペレーション3006において、検証および/または認証書情報(例えば、PK_RK)に基づいて、ホストサーバー104は、DPアクセラレータ405との作成される安全な接続(例えば、1つまたは複数のセキュアチャネル)を請求する。
なお、その後、ホストサーバー104は、PK_RKを利用して、DPアクセラレータ405によって送信されたセキュアメッセージを解読することができ、ここで、セキュアメッセージはSK_RKによって暗号化される。これらのメッセージは、上述したように、認証キーペア(例えば、PK_ATTとSK_ATT)に関連付けられる検証メッセージを含むことができ、パブリック認証キーのサインを検証し、DPアクセラレータに記憶されたカーネルオブジェクトを認証することができる。このメッセージは、上述したように、一時的なパブリック/プライベートキーペア(例えば、PK_d、SK_d)のための検証メッセージと、DPアクセラレータ405のセッションキーをさらに含んでもよい。いくつかの実施形態において、ランダムに生成された数字は、図29のバージョン番号2911と一緒に認証キーペアと一時的なパブリック/プライベートキーペアを生成するのに使用することができる。この場合、バージョン番号2911がアップデートされると(例えば、ファームウェアのアップグレードによってアップデートされる場合)、セッションのための認証キーペアと一時的なパブリック/プライベートキーペアは、期限切れになる。
DPアクセラレータはさらに、アクセラレータのバージョン番号(図29のバージョン番号2911)、および/または乱数生成手段によって生成された乱数に基づいて、パブリック/プライベート認証キーペア(例えば、PK_ATTとSK_ATT)を生成することができる。同様に、一時的なパブリック/プライベートキーペア(例えば、PK_d及び、ホストシステムとDPアクセラレータとの間の通信セッションに関連付けられるセッションキーを作成するのに利用されるSK_d)はさらに、アクセラレータのバージョン番号(図29のバージョン番号2911)および/または乱数生成手段によって生成された乱数に基づいて生成されることができる。
図31は、一実施形態による方法の一例を示すフローチャートである。プロセス3100は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行されることができる。例えば、プロセス3100は、図29のホスト104のようなホストシステムによって実行されることができる。図31を参照すると、ブロック3101において、処理ロジックは、ホストシステムにおいて、DPアクセラレータからDPアクセラレータを一意に識別するためのアクセラレータIDを受信し、ここで、ホストシステムは、バスを介してDPアクセラレータに接続される。ブロック3102において、処理ロジックは、ネットワークを介してアクセラレータIDを所定の信頼できるサーバーに送信する。ブロック3103において、処理ロジックは、ネットワークを介して所定の信頼できるサーバーから認証書を受信し、ここで、認証書は、DPアクセラレータに関連付けられるパブリックキー(PK_RK)を含む。ブロック3104において、選択的に、一実施形態において、処理ロジックは、(例えば、信頼できるサーバーの認証書チェーンを検証することにより、)認証書が所定の信頼できるサーバーに関連付けられるか否かを検証する。ブロック3105において、処理ロジックは、認証書からパブリックルートキー(PK_RK)を抽出し、DPアクセラレータにより送信されたPK_RKを利用して、抽出されたPK_RKを検証して、DPアクセラレータが本当に主張されたDPアクセラレータであることを認証する。ブロック3106において、処理ロジックは、検証に基づいてPK_RKを利用して、DPアクセラレータとのセキュアチャネルを作成し、ホストシステムとDPアクセラレータの間でデータを安全に交換する。
一実施形態において、DPアクセラレータは、ホストシステム内でホストされたアプリケーションを代表してデータ処理オペレーションを実行するように動作することができる1つまたは複数の実行ユニットを含む。一実施形態において、所定の信頼できるサーバーは、アプリケーションのプロバイダに関連付けられる。一実施形態において、所定の信頼できるサーバーは、DPアクセラレータのプロバイダに関連付けられる。一実施形態において、PK_RKはさらに、DPアクセラレータに対して生成されたサインを検証するのに利用される。
他の一実施形態において、PK_RKは、ホストシステムによって使用されて、ホストシステムとDPアクセラレータとの間の通信セッションに関連付けられたセッションキーを作成する。他の一実施形態において、PK_RKは、ホストシステムによって使用され、パブリック認証キーのサインを検証し、DPアクセラレータに記憶されたカーネルオブジェクトを認証する。
なお、以上に例示及び説明された構成要素の一部又は全ては、ソフトウェア、ハードウェア、又はそれらの組み合わせで実現されることができる。例えば、このような構成要素は、永続性記憶装置にインストールされるとともに格納されるソフトウェアとして実現されてもよく、前記ソフトウェアは、本開示にわたって記載されたプロセス又はオペレーションを実施するように、プロセッサ(図示せず)によってメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路(例えば、特定用途向け集積回路又はASIC)、デジタルシグナルプロセッサ(DSP)、又はフィールドプログラマブルゲートアレイ(FPGA)のような専用ハードウェアにプログラミングされたか又は埋め込まれた実行可能なコードとして実現されてもよく、前記実行可能なコードはアプリケーションからの対応するドライバ及び/又はオペレーティングシステムを介してアクセスすることができる。更に、このような構成要素は、ソフトウェアコンポーネントが1つ又は複数の特定の命令によってアクセス可能な命令セットの一部として、プロセッサ又はプロセッサコアにおける特定のハードウェアロジックとして実現されることができる。
図32は、本開示の一実施形態と組み合わせて使用可能なデータ処理システムの一例を示すブロック図である。例えば、システム1500は、上記の任意のプロセスまたは方法を実行する上記のいずれのデータ処理システムを表すことができる。例えば、上記のようなクライアントデバイスまたはサーバー、および例えば、クライアント101~102、およびサーバー104などが挙げられる。
システム1500は、いくつかの異なる構成要素を備えていてもよい。これらの構成要素は、集積回路(IC)、集積回路の一部、ディスクリート型電子デバイス、又は回路基板(例えば、コンピュータシステムのマザーボード又はアドインカード)に適するその他のモジュールとして実現されることができ、又は、他の形態でコンピュータシステムのシャーシ内に組み込まれた構成要素として実現されることができる。
なお、システム1500は、コンピュータシステムのいくつかの構成要素の高レベルビューを示すことを意図している。しかしながら、いくつかの実施形態において付加的構成要素が存在してもよく、また、その他の実施形態において示された構成要素を異なる構成にすることが可能であることを理解されたい。システム1500は、デスクトップコンピュータ、ノードパソコン、タブレットコンピュータ、サーバー、モバイルフォン、メディアプレーヤ、パーソナルデジタルアシスタント(PDA)、スマート腕時計、パーソナル通信機、ゲーミングデバイス、ネットワークルータ又はハブ、ワイヤレスアクセスポイント(AP)又はリピータ、セットトップボックス或いはそれらの組み合わせを示すことができる。また、単一の機械又はシステムのみが示されたが、「マシン」又は「システム」という用語は、本明細書で説明されるいずれか1つ又は複数の方法を実行するための、1つ(又は複数)の命令セットを単独で又は共同で実行する機械又はシステムの任意の組み合わせも含まれることを理解されたい。
一実施形態において、システム1500は、バス又はインターコネクト1510を介して接続される、プロセッサ1501と、メモリ1503と、デバイス1505~1508とを含む。プロセッサ1501は、単一のプロセッサコア又は複数のプロセッサコアが含まれる単一のプロセッサ又は複数のプロセッサを表すことが可能である。プロセッサ1501は、マイクロプロセッサ、中央処理装置(CPU)などのような、1つ又は複数の汎用プロセッサを表すことができる。より具体的には、プロセッサ1501は、複雑命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、又はその他の命令セットを実行するプロセッサ、又は命令セットの組み合わせを実行するプロセッサであってもよい。プロセッサ1501は更に1つ又は複数の専用プロセッサであってもよい。例えば、特定用途向け集積回路(ASIC)、セルラー若しくはベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、グラフィックプロセッサ、ネットワークプロセッサ、通信プロセッサ、暗号化プロセッサ、コプロセッサ、組込みプロセッサ、又は命令を処理可能な任意の他の種類のロジックが挙げられる。
プロセッサ1501は、超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよく、前記システムの様々な構成要素と通信するための主処理ユニット及び中央ハブとして機能することができる。このようなプロセッサは、システムオンチップ(SoC)として実装されてもよい。プロセッサ1501は、本明細書で説明されるオペレーション及びステップを実行するための命令を実行するように構成される。システム1500は、更に任意選択グラフィックサブシステム1504と通信するグラフィックインターフェースを含むことができ、グラフィックサブシステム1504は、表示コントローラ、グラフィックプロセッサ及び/又は表示装置を含んでいてもよい。
プロセッサ1501は、メモリ1503と通信することができ、一実施形態において、メモリ1503は、所定量のシステムメモリを提供するための複数のメモリデバイスによって実現されることができる。メモリ1503は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、又はその他のタイプの記憶装置のような、1つ又は複数の揮発性記憶(又はメモリ)装置を含むことができる。メモリ1503は、プロセッサ1501又はその他の任意のデバイスにより実行される命令シーケンスを含む情報を格納することができる。例えば、様々なオペレーティングシステム、デバイスドライバ、ファームウェア(例えば、ベーシックインプット/アウトプットシステム又はBIOS)、及び/又はアプリケーションの実行可能なコード及び/又はデータは、メモリ1503にロードされ、プロセッサ1501により実行されることができる。オペレーティングシステムは、例えば、Microsoft(R)社のWindows(R)オペレーティングシステム、アップル社のMacOS(R)/iOS(R)、Google(R)社のAndroid(R)、LINUX(R)、UNIX(R)、又はその他のリアルタイム若しくは組込みオペレーティングシステム(例えば、VxWorks)のような、任意の種類のオペレーティングシステムであってもよい。
システム1500は、更にデバイス1505~1508のようなI/Oデバイスを含むことができ、I/Oデバイスは、ネットワークインターフェースデバイス1505、任意選択入力装置1506、及びその他の任意選択I/Oデバイス1507を含む。ネットワークインターフェースデバイス1505は、無線送受信機及び/又はネットワークインターフェースカード(NIC)を含むことができる。無線送受信機は、WiFi送受信機、赤外線送受信機、ブルートゥース送受信機、WiMax送受信機、無線携帯電話送受信機、衛星送受信機(例えば、全地球測位システム(GPS)送受信機)、又はその他の無線周波数(RF)送受信機、又はそれらの組み合わせであってもよい。NICは、イーサネットカードであってもよい。
入力装置1506は、マウス、タッチパッド、タッチスクリーン(表示装置1504と統合されてもよい)、ポインターデバイス(例えば、スタイラス)、及び/又はキーボード(例えば、物理キーボード又はタッチスクリーンの一部として表示された仮想キーボード)を含むことができる。例えば、入力装置1506は、タッチスクリーンと接続されるタッチスクリーンコントローラを含むことができる。タッチスクリーン及びタッチスクリーンコントローラは、例えば、様々なタッチ感応技術(コンデンサ、抵抗、赤外線、及び表面弾性波の技術を含むが、それらに限定されない)のいずれか、並びにその他の近接センサアレイ、又は、タッチスクリーンと接触する1つ又は複数の点を確定するためのその他の素子を用いて、それらの接触、移動又は中断を検出することができる。
I/Oデバイス1507は、音声装置を含むことができる。音声装置は、音声認識、音声複製、デジタル記録、及び/又は電話機能のような音声サポート機能を促進するために、スピーカ及び/又はマイクロホンを含んでもよい。その他のI/Oデバイス1507は、更に、ユニバーサルシリアルバス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ(例えば、PCI-PCIブリッジ)、センサ(例えば、加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなどのモーションセンサ)、又はそれらの組み合わせを含むことができる。デバイス1507は、結像処理サブシステム(例えば、カメラ)を更に含むことができ、前記結像処理サブシステムは、写真及びビデオ断片を記録することなどのカメラ機能を実現するための、電荷接続素子(CCD)又は相補型金属酸化物半導体(CMOS)光学センサのような光学センサを含むことができる。特定のセンサは、センサハブ(図示せず)を介してインターコネクト1510に接続されることができ、キーボード又はサーマルセンサのようなその他のデバイスはシステム1500の具体的なコンフィギュレーション又は設計により、組込みコントローラ(図示せず)により制御されることができる。
データ、アプリケーション、1つ又は複数のオペレーティングシステムなどの情報の永続性記憶を提供するために、プロセッサ1501には、大容量記憶デバイス(図示せず)が接続されることができる。様々な実施形態において、より薄くてより軽量なシステム設計を可能にしながら、システムの応答性を向上するために、このような大容量記憶装置は、ソリッドステート装置(SSD)によって実現されることができる。しかしながら、その他の実施形態において、大容量記憶デバイスは、主にハードディスクドライブ(HDD)を使用して実現することができ、より小さい容量のSSD記憶デバイスをSSDキャッシュとして機能することで、停電イベントの間にコンテキスト状態及び他のそのような情報の不揮発性記憶を可能にし、それによりシステムオペレーションが再開するときに通電を速く実現することができる。また、フラッシュデバイスは、例えば、シリアルペリフェラルインターフェース(SPI)を介してプロセッサ1501に接続されることができる。このようなフラッシュデバイスは、前記システムのベーシックインプット/アウトプットソフトウェア(BIOS)及びその他のファームウェアを含むシステムソフトウェアの不揮発性記憶のために機能することができる。
記憶デバイス1508は、本明細書に記載の方法又は機能のいずれか1つ又は複数を具現化する1つ又は複数の命令セット又はソフトウェア(例えば、モジュール、ユニット及び/又はロジック1528)が格納されているコンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体又はコンピュータ可読媒体とも呼ばれる)を備えてもよい。処理モジュール/ユニット/ロジック(1528)は、上述したように、前述した構成要素のうち、任意の一つを表示することができ、例えば、図2のホストサーバー104、図2のランタイムライブラリ205、図4のDPアクセラレータ405、図4のI/Oマネージャ401またはI/Oインターフェース415、図9及び図14のHCM901またはACM915、及び図17のMM1701、図20のセキュリティユニット1020およびタイムユニット2003を表すことができる。処理モジュール/ユニット/ロジック1528は、更に、データ処理システム1500、メモリ1503、及びプロセッサ1501による実行中に、メモリ1503内及び/又はプロセッサ1501内に完全的に又は少なくとも部分的に存在してもよく、データ処理システム1500、メモリ1503及びプロセッサ1501も機械アクセス可能な記憶媒体を構成する。処理モジュール/ユニット/ロジック1528は、更に、ネットワークを介してネットワークインターフェースデバイス1505を介して送受信されてもよい。
コンピュータ可読記憶媒体1509は、以上に説明されたいくつかのソフトウェア機能を永続的に格納するために用いることができる。コンピュータ可読記憶媒体1509は、例示的な実施形態において単一の媒体として示されるが、「コンピュータ可読記憶媒体」という用語は、前記1つ又は複数の命令セットが格納される単一の媒体又は複数の媒体(例えば、集中型又は分散型データベース及び/又は関連するキャッシュとサーバー)を含むと解釈されるものとする。「コンピュータ可読記憶媒体」という用語は、更に、命令セットを格納又は符号化できる任意の媒体を含むと解釈されるものであり、前記命令セットは機械により実行され、本開示のいずれか1種又は複数種の方法を機械に実行させるためのものである。それゆえに、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体及び磁気媒体、又はその他の任意の非一時的機械可読媒体を含むが、それらに限定されないと解釈されるものとする。
本明細書に記載された処理モジュール/ユニット/ロジック1528、構成要素及びその他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、又はASICS、FPGA、DSP又は類似の装置のようなハードウェア構成要素の機能に統合されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェア装置におけるファームウェア又は機能性回路として実現されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェア装置とソフトウェア構成要素の任意の組み合わせで実現されてもよい。
なお、システム1500は、データ処理システムの様々な構成要素を有するものとして示されているが、構成要素を相互接続する任意の特定のアーキテクチャ又は方式を表すことを意図するものではなく、そのような詳細は、本開示の実施形態とは密接な関係がない。また、より少ない構成要素又はより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバー及び/又はその他のデータ処理システムは、本開示の実施形態と共に使用することも可能であることを理解されたい。
上述した具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現により示された。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらのオペレーションは、物理量の物理的処置が必要とされるものである。
しかしながら、念頭に置くべきなのは、これらの用語及び類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解すべきなのは、用語(例えば、添付された特許請求の範囲に記載のもの)による説明とは、コンピュータシステム、又は類似の電子式計算装置の動作及び処理を指し、前記コンピュータシステム又は電子式計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理(電子)量として示されたデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示された別のデータに変換する。
図に示される技術は、1つ又は複数の電子機器に格納され実行されるコード及びデータを使用して実施することができる。そのような電子機器は、コンピュータ可読媒体(例えば、非一時的コンピュータ可読記憶媒体(例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み取り専用メモリ、フラッシュメモリ装置、相変化メモリ)及び一時的コンピュータ可読伝送媒体(例えば、電気的、光学的、音響的、又は他の形態の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号など)など)を使用して、コード及びデータを格納及び伝送する(内部に伝送され、及び/又はネットワークを介して他の電子装置に伝送される)。
上述した図面において説明されたプロセス又は方法は、ハードウェア(例えば、回路、専用ロジックなど)、ファームウェア、ソフトウェア(例えば、非一時的コンピュータ可読媒体に具現化されるもの)、又はそれらの組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記オペレーションの一部が異なる順序で実行されてもよいことを理解されたい。また、一部のオペレーションは、順番ではなく並行して実行されてもよい。
本明細書において、本開示の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本開示のより広い趣旨及び範囲を逸脱しない限り、本開示に対して様々な変更を行うことができる。それゆえに、本明細書及び図面は、限定的な意味でなく、例示的な意味で理解されるべきである。