(57)【要約】本開示の一実施形態によると、システムは、バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で、１つまたは複数のデータチャネルを含む安全な接続を作成する。上記システムは、コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第１の命令を送信し、上記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である。上記システムは、上記データチャネルを介して上記ＤＰアクセラレータから、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を受信する。上記請求に応じて、上記システムは、上記データチャネルを介して上記第１のデータを上記ＤＰアクセラレータに送信し、前記第１のデータは、計算またはコンフィギュレーションのオペレーションに用いられるデータである。上記システムは、上記コマンドチャネルを介して上記ホストシステムから上記ＤＰアクセラレータへ第２の命令を送信して、上記計算またはコンフィギュレーションのオペレーションを実行する。【選択図】図８Ａ
2021513691.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムとデータ処理アクセラレータの間の通信を保護するためのコンピュータ実施方法であって、
バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で、データチャネルを含む安全な接続を作成するステップと、
コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第１の命令を送信するステップであって、前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である、ステップと、
前記第１の命令に応じて、前記データチャネルを介して前記ＤＰアクセラレータから、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を受信するステップと、
前記第１の請求に応じて、前記ホストシステムの前記第１のメモリ位置から読み出された前記第１のデータを、前記データチャネルを介して前記ＤＰアクセラレータへ送信するステップであって、前記第１のデータは、計算またはコンフィギュレーションのオペレーションに用いられるデータである、ステップと、
前記コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第２の命令を送信するステップであって、前記第２の命令は、前記ＤＰアクセラレータに前記計算または前記コンフィギュレーションのオペレーションを実行させるように請求する命令である、ステップと、を含む
ことを特徴とするコンピュータ実施方法。
【請求項２】
前記第１の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第１のメモリ位置からの読み出し権限があるか否かを判定するステップと、
前記ＤＰアクセラレータが前記第１のメモリ位置からの読み出し権限があると判定されたことに応じて、前記ＤＰアクセラレータに対して前記第１のメモリ位置からの読み出しを許可するステップと、をさらに含む
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記ＤＰアクセラレータは、前記ホストシステムの前記第１のメモリ位置への直接アクセスが許可されていない
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記ＤＰアクセラレータは、前記ホストシステムに接続された複数のＤＰアクセラレータのうちの一つである
ことを特徴とする請求項２に記載の方法。
【請求項５】
前記ＤＰアクセラレータから第２のデータを書き込むための第２の請求を前記データチャネルを介して受信するステップであって、前記第２のデータは、前記ホストシステムの第２のメモリ位置に書き込まれるデータである、ステップと、
前記第２の請求に応じて、前記ホストシステムの前記第２のメモリ位置に前記第２のデータを格納するステップと、をさらに含む
ことを特徴とする請求項１に記載の方法。
【請求項６】
前記第２の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第２のメモリ位置への書き込み権限があるか否かを判定するステップと、
前記ＤＰアクセラレータが前記第２のメモリ位置への書き込み権限があると判定されたことに応じて、前記ＤＰアクセラレータに対して前記第２のメモリ位置への書き込みを許可するステップと、をさらに含む
ことを特徴とする請求項５に記載の方法。
【請求項７】
前記第２のデータは、前記命令に応じて実行される前記計算または前記コンフィギュレーションのオペレーションの結果の少なくとも一部を示す
ことを特徴とする請求項５に記載の方法。
【請求項８】
命令が記憶されている非一時的機械可読媒体であって、
前記命令がプロセッサによって実行されると、前記プロセッサにオペレーションを実行させ、前記オペレーションは、
バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で、データチャネルを含む安全な接続を作成するステップと、
コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第１の命令を送信するステップであって、前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である、ステップと、
前記第１の命令に応じて、前記データチャネルを介して前記ＤＰアクセラレータから、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を受信するステップと、
前記第１の請求に応じて、前記ホストシステムの前記第１のメモリ位置から読み出された前記第１のデータを、前記データチャネルを介して前記ＤＰアクセラレータへ送信するステップであって、前記第１のデータは、計算またはコンフィギュレーションのオペレーションに用いられるデータである、ステップと、
前記コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第２の命令を送信するステップであって、前記第２の命令は、前記ＤＰアクセラレータに前記計算または前記コンフィギュレーションのオペレーションを実行させるように請求する命令である、ステップと、を含む
ことを特徴とする非一時的機械可読媒体。
【請求項９】
前記オペレーションは、
前記第１の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第１のメモリ位置からの読み出し権限があるか否かを判定するステップと、
前記ＤＰアクセラレータが前記第１のメモリ位置からの読み出し権限があると判定されたことに応じて、前記ＤＰアクセラレータに前記第１のメモリ位置からの読み出しを許可するステップと、をさらに含む
ことを特徴とする請求項８に記載の非一時的機械可読媒体。
【請求項１０】
前記ＤＰアクセラレータは、前記ホストシステムの前記第１のメモリ位置への直接アクセスが許可されていない
ことを特徴とする請求項９に記載の非一時的機械可読媒体。
【請求項１１】
前記ＤＰアクセラレータは、前記ホストシステムに接続された複数のＤＰアクセラレータのうちの一つである
ことを特徴とする請求項９に記載の非一時的機械可読媒体。
【請求項１２】
前記オペレーションは、
前記ＤＰアクセラレータから第２のデータを書き込むための第２の請求を前記データチャネルを介して受信するステップであって、前記第２のデータは、前記ホストシステムの第２のメモリ位置に書き込まれるデータである、ステップと、
前記第２の請求に応じて、前記ホストシステムの前記第２のメモリ位置に前記第２のデータを格納するステップと、をさらに含む
ことを特徴とする請求項８に記載の非一時的機械可読媒体。
【請求項１３】
前記オペレーションは、
前記第２の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第２のメモリ位置への書き込み権限があるか否かを判定するステップと、
前記ＤＰアクセラレータが前記第２のメモリ位置への書き込み権限があると判定されたことに応じて、前記ＤＰアクセラレータに前記第２のメモリ位置への書き込みを許可するステップと、をさらに含む
ことを特徴とする請求項１２に記載の非一時的機械可読媒体。
【請求項１４】
前記第２のデータは、前記命令に応じて実行される前記計算または前記コンフィギュレーションのオペレーションの結果の少なくとも一部を示す
ことを特徴とする請求項１２に記載の非一時的機械可読媒体。
【請求項１５】
ホストシステムとデータ処理アクセラレータの間の通信を保護するためのコンピュータ実施方法であって、
バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で、データチャネルを含む安全な接続を作成するステップと、
前記ＤＰアクセラレータにおいて、コマンドチャネルを介して前記ホストシステムから第１の命令を受信するステップであって、前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である、ステップと、
前記第１の命令に応じて、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すために、前記データチャネルを介して前記ＤＰアクセラレータから前記ホストシステムへ第１の請求を送信し、前記データチャネルを介して前記ホストシステムから前記第１のデータを受信するステップであって、前記第１のデータは、前記ホストシステムの前記第１のメモリ位置から前記ホストシステムによって読み出されるデータである、ステップと、
前記コマンドチャネルを介して前記ホストシステムから第２の命令を受信するステップであって、前記第２の命令は、前記ＤＰアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である、ステップと、
少なくとも前記第１のデータに基づいて、前記計算または前記コンフィギュレーションのオペレーションを実行するステップと、を含む
ことを特徴とするコンピュータ実施方法。
【請求項１６】
前記ホストシステムは、前記第１の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第１のメモリ位置からの読み出し権限があるか否かを判定するステップと、
前記ホストシステムは、前記ＤＰアクセラレータが前記第１のメモリ位置からの読み出し権限があると判定されたことに応じて、前記ＤＰアクセラレータに対して前記第１のメモリ位置からの読み出しを許可するステップと、をさらに含む
ことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記ＤＰアクセラレータは、前記ホストシステムの前記第１のメモリ位置への直接アクセスが許可されていない
ことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記ＤＰアクセラレータは、前記ホストシステムに接続された複数のＤＰアクセラレータのうちの一つである
ことを特徴とする請求項１６に記載の方法。
【請求項１９】
前記ホストシステムの第２のメモリ位置に第２のデータを書き込むために、前記データチャネルを介して前記ＤＰアクセラレータから前記ホストシステムへ第２の請求を送信するステップであって、前記第２のデータは、前記計算または前記コンフィギュレーションのオペレーションの結果の少なくとも一部を表す、ステップをさらに含む
ことを特徴とする請求項１５に記載の方法。
【請求項２０】
前記ホストシステムは、前記第２の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第２のメモリ位置への書き込み権限があるか否かを判定するステップと、
前記ホストシステムは、前記ＤＰアクセラレータが前記第２のメモリ位置への書き込み権限があると判定されたことに応じて、前記ＤＰアクセラレータに対して前記第２のメモリ位置への書き込みを許可するステップとをさらに含む
ことを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、大体的にコンテンツの検索に関する。より具体的に、本開示の実施形態は、ホストシステムとデータ処理（ＤＰ）アクセラレータの間の通信を保護するための方法およびシステムに関する。
【背景技術】
【０００２】
敏感なトランザクションは、人工知能（ＡＩ）アクセラレータまたはコプロセッサ（ｃｏ−ｐｒｏｃｅｓｓｏｒ）のようなデータ処理（ＤＰ）アクセラレータによって行われている。これにより、ＤＰアクセラレータの通信チャネルを保護しホストシステムの環境を保護してホストシステムを不正なアクセスから保護する必要性が高まれる。
【０００３】
例えば、ＡＩトレーニングデータ、モデル、推論出力は保護されずに、信頼できない当事者に漏洩する可能性がある。したがって、データ処理アクセラレータによって処理されたデータを保護することができるシステムが必要である。
【図面の簡単な説明】
【０００４】
本開示の実施形態は、図面の各図において限定的ではなく例示的な形態で示され、図面における同じ図面符号は類似する素子を示す。
【図１】いくつかの実施形態に係るホストとデータ処理（ＤＰ）アクセラレータとの間の通信を保護するためのシステムコンフィギュレーションの一例を示すブロック図である。
【図２】いくつかの実施形態に係るホストとデータ処理（ＤＰ）アクセラレータとの間の通信を保護するためのマルチレイヤ保護ソリューションの一例を示すブロック図である。
【図３】一実施形態に係る方法の一例を示すフローチャートである。
【図４】一実施形態に係るＩ／Ｏマネージャを備えるホストの一例を示すブロック図である。
【図５】いくつかの実施形態に係るＤＰアクセラレータと通信するＩ／Ｏマネージャの一例をさらに示すブロック図である。
【図６】一実施形態に係る複数のＤＰアクセラレータに割り当てられたメモリの領域を示すブロック図である。
【図７】一実施形態に係るホストとＤＰアクセラレータとの間の例示的な通信を示すブロック図である。
【図８Ａ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図８Ｂ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図９】一実施形態に係るホストチャネルマネージャ（ＨＣＭ）を備えるホストの一例を示すブロック図である。
【図１０】いくつかの実施形態に係る１つまたは複数のアクセラレータチャネルマネージャ（ＡＣＭ）に通信可能に接続されているホストチャネルマネージャ（ＨＣＭ）の一例を示すブロック図である。
【図１１】一実施形態に係るチャネル／セッションキーを使用してユーザアプリケーション―チャネルマッピングを示すブロック図である。
【図１２Ａ】一実施形態に係るホストとＤＰアクセラレータとの間の安全な情報交換（ｓｅｃｕｒｅ  ｉｎｆｏｒｍａｔｉｏｎ  ｅｘｃｈａｎｇｅ）の一例を示すブロック図である。
【図１２Ｂ】一実施形態に係るホストとＤＰアクセラレータとの間の安全な情報交換の一例を示すブロック図である。
【図１３Ａ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図１３Ｂ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図１４】一実施形態に係るホストチャネルマネージャ（ＨＣＭ）とアクセラレータチャネルマネージャ（ＡＣＭ）の間で安全な情報交換チャネルを作成するための例示的なシステムを示すブロック図である。
【図１５】一実施形態に係るホストとＤＰアクセラレータとの間のセッションキーを導出するための例示的な情報交換を示すブロック図である。
【図１６Ａ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図１６Ｂ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図１７】一実施形態に係るＤＰアクセラレータのメモリバッファを保護するための安全なメモリマネージャ（ＭＭ）を備えるホストの一例を示すブロック図である。
【図１８】いくつかの実施形態に係るメモリマネージャ（ＭＭ）の一例を示すブロック図である。
【図１９】一実施形態に係る方法の一例を示すフローチャートである。
【図２０】一実施形態に係るＤＰアクセラレータに通信可能に接続されているホストサーバーの一例を示すブロック図である。
【図２１】一実施形態に係るタイムユニットの一例を示すブロック図である。
【図２２】一実施形態に係るセキュリティユニットの一例を示すブロック図である。
【図２３】一実施形態に係る、カーネルオブジェクトを検証するためにＤＰアクセラレータに通信可能に接続されるホストサーバーの一例を示すブロック図である。
【図２４】一実施形態に係る例示的なカーネルオブジェクトの検証プロトコル（ｖｅｒｉｆｉｃａｔｉｏｎ  ｐｒｏｔｏｃｏｌ）を示すフローチャートである。
【図２５】一実施形態に係る方法の一例を示すフローチャートである。
【図２６】一実施形態に係るカーネル認証（ｋｅｒｎｅｌｓ  ａｔｔｅｓｔａｔｉｏｎ）のためにＤＰアクセラレータに通信可能に接続されているホストサーバーの一例を示すブロック図である。
【図２７】一実施形態に係る例示的な認証プロトコル（ａｔｔｅｓｔａｔｉｏｎ  ｐｒｏｔｏｃｏｌ）を示すフローチャートである。
【図２８Ａ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図２８Ｂ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図２９】一実施形態に係るＤＰアクセラレータおよび信頼できるサーバーに通信可能に接続されているホストサーバーの一例を示すブロック図である。
【図３０】一実施形態に係る例示的なＤＰアクセラレータ検証プロトコル（ｖａｌｉｄａｔｉｏｎ  ｐｒｏｔｏｃｏｌ）を示すフローチャートである。
【図３１】一実施形態に係る方法の一例を示すフローチャートである。
【図３２】一実施形態に係るデータ処理システムを示すブロック図である。
【発明を実施するための形態】
【０００５】
本開示の様々な実施形態及び態様は、以下で論じられる詳細を参照しながら説明され、図面には、上記様々な実施形態が示される。以下の説明及び図面は、本開示を例示するためのものであり、限定するものとして解釈されるべきではない。本開示の様々な実施形態を全面的に理解するために、多くの特定の詳細を説明する。ところが、いくつかの場合には、本開示の実施形態に対する簡単な説明を提供するために、周知又は従来技術の詳細について説明していない。
【０００６】
本明細書において、「一実施形態」又は「実施形態」とは、当該実施形態に組み合わせて説明された特定の特徴、構造又は特性が本願の少なくとも一実施形態に含まれてもよいと意味する。「一実施形態において」という表現は、本明細書全体において同一の実施形態を指すとは限らない。
【０００７】
本開示の第１の態様によると、データ処理システムは、ホストシステムのセキュリティモジュール（例えば、信頼できるプラットフォームモジュール（ＴＰＭ））を利用して、セキュアブートを実行する。システムは、オペレーティングシステム（ＯＳ）と、データ処理（ＤＰ）アクセラレータに関連付けられているアクセラレーター・ドライバーを含む１つまたは複数のドライバーが、信頼できるソースによって提供されるか否かを検証する。システムは、ＯＳ内でアクセラレーター・ドライバーを起動する。システムは、ホストシステムの１つまたは複数のプロセッサに関連付けられている信頼できる実行環境（ＴＥＥ）を作成する。システムは、ＴＥＥでアプリケーションとランタイムライブラリを起動する。ここで、アプリケーションは、ランタイムライブラリとアクセラレーター・ドライバーを介してＤＰアクセラレータと通信する。
【０００８】
第２の態様によると、システムは、バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で安全な接続（１つまたは複数のセキュアチャネルを持つ）を作成し、前記安全な接続は、１つまたは複数のコマンドチャネルおよび／またはデータチャネルを含む。一実施形態において、１つまたは複数のコマンドチャネルは、セキュリティ対策が施されていない可能性がある。前記システムは、前記コマンドチャネルを介して第１の命令をホストシステムからＤＰアクセラレータに送信する。前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である。前記システムは、前記第１の命令に応じて、ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を、データチャネルを介してＤＰアクセラレータから受信する。前記システムは、前記請求に応じて、前記ホストシステムの第１のメモリ位置から読み出した前記第１のデータをデータチャネルを介してＤＰアクセラレータに転送する。ここで、前記第１のデータは、計算またはコンフィギュレーションのオペレーションに使用される。前記システムは、前記コマンドチャネルを介して第２の命令を、ホストシステムから前記ＤＰアクセラレータへ送信する。前記第２の命令は、前記ＤＰアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。
【０００９】
一実施形態において、システムは、バスによってホストシステムとデータ処理（ＤＰ）アクセラレータの間で安全な接続を作成する。前記安全な接続は、１つまたは複数のコマンドチャネルおよび／またはデータチャネルを含む。前記コマンドチャネルは、セキュリティ対策が施されていない可能性がある。前記システムは、前記ＤＰアクセラレータでコマンドチャネルを介して前記ホストシステムから第１の命令を受信する。前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である。前記システムは、前記第１の命令に応じて、データチャネルを介して第１の請求を前記ＤＰアクセラレータから前記ホストシステムに送信して、前記ホストシステムの第１のメモリ位置から第１のデータを読み出す。前記システムは、前記データチャネルを介して前記ホストシステムから前記第１のデータを受信する。ここで、前記第１のデータは、前記ホストシステムによって前記ホストシステムの前記第１のメモリ位置から読み出されるデータである。前記システムは、前記コマンドチャネルを介して前記ホストシステムから第２の命令を受信し、前記第２の命令は、前記ＤＰアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。前記システムは、少なくとも前記第１のデータに基づいて、計算またはコンフィギュレーションのオペレーションを実行する。
【００１０】
第３の態様によると、システムは、ホストシステムのホストチャネルマネージャ（ＨＣＭ）のアプリケーションから請求を受信して、データ処理（ＤＰ）アクセラレータとのセキュアチャネルを作成する。ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。前記請求に応じて、前記システムは、前記ＨＣＭに関連付けられている第１のキーペアの第１のプライベートキー、及び前記ＤＰアクセラレータに関連付けられている第２のキーペアの第２のパブリックキーに基づいて、前記セキュアチャネルに対する第１のセッションキーを生成する。前記ＤＰアクセラレータに送信される前記アプリケーションに関連付けられている第１のデータに応じて、前記システムは、前記第１のセッションキーを利用して前記第１のデータを暗号化する。その後、前記システムは、バスを介して前記セキュアチャネルを介して、前記暗号化された第１のデータを前記ＤＰアクセラレータに送信する。
【００１１】
一実施形態において、システムは、データ処理（ＤＰ）アクセラレータのアクセラレータチャネルマネージャ（ＡＣＭ）で、ホストシステムのホストチャネルマネージャ（ＨＣＭ）のアプリケーションから請求を受信して、前記ホストシステムと前記ＤＰアクセラレータの間でセキュアチャネルを作成する。ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。前記請求に応じて、前記システムは、前記セキュアチャネルのための第２のセッションキーを生成し、前記暗号化された第２のセッションキーをＨＣＭに送信する前に、前記ＤＰアクセラレータに関連付けられている第２のキーペアの第２のプライベートキー及びＨＣＭに関連付けられている第１のキーペアの第１のパブリックキーに基づいて、第２のセッションキーを暗号化する。前記ホストシステムに送信される第１のデータに応じて、前記システムは、前記第２のセッションキーを利用して前記第１のデータを暗号化する。その後、前記システムは、前記セキュアチャネルを介して、前記暗号化された第１のデータを前記ホストシステムの前記ＨＣＭに送信する。
【００１２】
第４の態様によると、データ処理（ＤＰ）アクセラレータから一時的なパブリックキー（ＰＫ＿ｄ）を受信したことに応じて、システムは、前記ホストシステムで第１のノンス（ｎｃ）を生成する。ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。前記システムは、セッションキーを生成するための請求を前記ホストシステムから前記ＤＰアクセラレータに送信し、前記請求は、ホストのパブリックキー（ＰＫ＿Ｏ）及び第１のノンスを含む。前記システムは、前記ＤＰアクセラレータから第２のノンス（ｎｓ）を受信し、ここで、前記第２のノンスは、前記ホストのパブリックキーと前記一時的なパブリックキーに対応する一時的なプライベートキー（ＳＫ＿ｄ）を利用して暗号化される。前記システムは、前記第１のノンス及び前記第２のノンスに基づいて第１のセッションキーを生成し、これは、前記ホストシステムと前記ＤＰアクセラレータの間のその後のデータ交換を暗号化または復号化するために使用される。
【００１３】
一実施形態において、ホストシステムから受信された請求に応じて、システムは、データ処理（ＤＰ）アクセラレータで一時的なプライベートキーと一時的なパブリックキーを生成する。ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。前記システムは、前記ＤＰアクセラレータに関連付けられているアクセラレータのプライベートルートキーを利用して、一時的なパブリックキーを暗号化する。前記システムは、暗号化されていない形式の一時的なパブリックキーと暗号化された一時的なパブリックキーとを前記ホストシステムに送信して、前記ホストシステムに前記一時的なパブリックキーを検証させるようにする。前記システムは、前記ホストシステムから第１のノンスを受信する。ここで、前記第１のノンスは、前記一時的なパブリックキーが検証された後に前記ホストシステムによって生成される。前記システムは、前記第１のノンスと前記ＤＰアクセラレータでローカルに生成された第２のノンスとに基づいてセッションキーを生成する。
【００１４】
第５の態様によると、システムは、ホストシステムのセキュリティモジュール（例えば、信頼できるプラットフォームモジュール（ＴＰＭ））を利用して、セキュアブートを実行する。前記システムは、前記ホストシステムの１つまたは複数のプロセッサに関連付けられている信頼できる実行環境（ＴＥＥ）を作成する。前記システムは、ＴＥＥ内でメモリマネージャを起動して、ここで、前記メモリマネージャは、バスを介して前記ホストシステムに接続されたデータ処理（ＤＰ）アクセラレータのメモリリソースを管理するように構成されるものであり、前記ＤＰアクセラレータのグローバルメモリのメモリ利用情報を保持することを含む。前記ＤＰアクセラレータのメモリ位置にアクセスするためにＴＥＥ内で実行されるアプリケーションから受信された請求に応じて、前記システムは、前記メモリ利用情報に基づいて前記請求を許可または拒否する。
【００１５】
第６の態様によると、ＤＰアクセラレータは、バスを介して接続されたホストシステムから受信された命令に応じてデータ処理オペレーションを実行するように構成された１つまたは複数の実行ユニット（ＥＵ）を含む。前記ＤＰアクセラレータは、セキュリティユニット（ＳＵ）は、前記ホストシステムとのセキュアチャネルを作成し維持して、データ処理オペレーションに関連するコマンドとデータを交換するように構成されているセキュリティユニット（ＳＵ）を含む。前記ＤＰアクセラレータは、前記セキュリティユニットに接続されてセキュリティユニットにタイムスタンプサービスを提供するためのタイムユニット（ＴＵ）を含む。ここで、前記タイムユニットは、外部のソースからのクロック信号を導出するせずに、クロック信号をローカルに生成するクロック生成手段を含む。前記ＴＵは、前記クロック生成手段に接続されて前記クロック信号に基づいてタイムスタンプを生成するタイムスタンプ生成手段と、前記クロック生成手段及び前記タイムスタンプ生成手段に電力を提供する給電手段を含む。
【００１６】
一実施形態において、前記ＴＵは、前記クロック生成手段に接続されて前記クロック生成手段から生成された前記クロック信号に基づいてカウント値をカウントするカウンタと、前記カウント値を格納する永続性記憶装置とをさらに含む。ここで、前記カウント値は、前記タイムスタンプ生成手段によって使用されて前記タイムスタンプを生成する。他の一実施形態において、前記カウンタは、前記クロック信号のそれぞれに応じて前記カウント値を増加させる。ここで、前記永続性記憶装置は、３２ビットの変数を含む。しかし、前記永続性記憶装置は、８ビット、１６ビット、６４ビットなどのサイズの変数を含んでもいい。
【００１７】
一実施形態において、前記タイムユニットは、前記クロック生成手段に接続されて正確なパルス信号を提供するローカルオシレーターをさらに含む。一実施形態において、前記給電手段は、外部の電源から電力を引き込むことなく電力を提供するバッテリを含む。一実施形態において、前記クロック信号は、外部のクロックソースと通信せずに生成される。一実施形態において、前記タイムユニットは、前記クロック生成手段をキャリブレートするように構成されたクロックキャリブレーター（ｃｌｏｃｋ  ｃａｌｉｂｒａｔｏｒ）をさらに含む。
【００１８】
一実施形態において、前記タイムスタンプは、前記セキュリティユニットによって使用されて、前記ＤＰアクセラレータと前記ホストシステムとの間の交換されたデータを暗号化するためのセッションキーにタイムスタンプ付けることができる。他の一実施形態において、前記タイムスタンプは、前記ＤＰアクセラレータに対する情報交換にタイムスタンプを付けるのに使用され、前記タイムスタンプは、前記情報交換の鮮度を確定するのに使用することができる。他の一実施形態において、前記セッションキーの前記タイムスタンプは、前記セッションキーの期限が切れたか否かを判定するのに使用される。
【００１９】
第７の態様によると、ＤＰアクセラレータは、バスを介して接続されたホストシステムから受信された命令に応じてデータ処理オペレーションを実行するように構成された１つまたは複数の実行ユニット（ＥＵ）を含む。前記ＤＰアクセラレータは、前記セキュリティユニットに接続されてタイムスタンプサービスを提供するタイムユニット（ＴＵ）を含む。前記ＤＰアクセラレータは、前記ホストシステムとともにセキュアチャネルを作成し維持して、データ処理オペレーションに関連するコマンドとデータを交換するように構成されたセキュリティユニット（ＳＵ）を含む。ここで、前記セキュリティユニットは、前記ＤＰアクセラレータに関連付けられているプライベートルートキーを格納する安全なストレージエリアを含む。ここで、プライベートルートキーは、認証（ａｕｔｈｅｎｔｉｃａｔｉｏｎ）に使用される。前記ＳＵは、乱数（ｒａｎｄｏｍ  ｎｕｍｂｅｒ）を生成する乱数生成手段と、前記乱数に基づいて導出されたセッションキーを使用して、前記バスを介して前記ホストシステムと交換されたデータに対して暗号化オペレーションを実行する暗号化エンジン（ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｅｎｇｉｎｅ）とを含む。
【００２０】
一実施形態において、プライベートルートキーは、前記ＤＰアクセラレータの製造中に安全なストレージエリアに予め設定されて記憶されている。一実施形態において、前記セキュリティユニットは、前記ホストシステムから請求を受信して前記ＤＰアクセラレータとの安全な接続を作成し、前記請求に応じて前記乱数生成手段によって生成された前記乱数に基づいて前記セッションキーを生成する。ここで、前記セッションキーは、安全な接続によって前記ホストシステムと交換された前記データを暗号化または復号化するのに使用される。
【００２１】
他の一実施形態において、前記乱数生成手段は、シード値に基づいて前記乱数を生成することができる。他の一実施形態において、前記タイムスタンプは、前記セッションキーの期限が切れたか否かをさらに判定するものであり、ここで、新しいセッションキーを生成することができる。
【００２２】
他の一実施形態において、前記乱数に基づいて前記セッションキーを生成する時、前記セキュリティユニットは、一時的なプライベートキーと一時的なパブリックキーを備える一時的なキーペアを生成し、一時的なパブリックキーとサインされた（ｓｉｇｎｅｄ）一時的なパブリックキーを前記ホストに送信する。ここで、前記サインされた一時的なパブリックキーは、前記プライベートルートキーによってサインされて前記ホストシステムに前記ＤＰアクセラレータを認証させ、前記ホストシステムから第１のノンスを受信し、前記ＤＰアクセラレータでローカルに生成された前記第１のノンス及び第２のノンスに基づいて、第１のセッションキーを生成することができる。他の一実施形態において、前記セキュリティユニットは、さらに前記プライベートルートキー（例えば、前記ＤＰアクセラレータのプライベートルートキー）によってサインされて、前記ホストシステムに関連付けられているパブリックキーによって暗号化された前記第１のノンス及び前記第２のノンスを送信するように構成されている。
【００２３】
他の一実施形態において、前記ホストシステムは、前記プライベートルートキーに対応するパブリックルートキー（例えば、ＤＰアクセラレータのパブリックルートキー）と前記ホストシステムのプライベートルートキーとを利用した前記暗号化された第１のノンス及び前記第２のノンスを復号化して、前記第１のノンス及び前記第２のノンスを復元するように構成されている。他の一実施形態において、前記ホストシステムは、前記復元された第１のノンス及び前記第２のノンスに基づいて、第２のセッションキーを生成するように構成されている。ここで、前記第２のセッションキーは、前記ホストシステムによって使用されて暗号化と復号化を行う。
【００２４】
一実施形態において、前記タイムユニットは、外部のソースから前記クロック信号を導出せずにクロック信号をローカルに生成するクロック生成手段と、前記クロック生成手段に接続されて前記クロック信号に基づいてタイムスタンプを生成するタイムスタンプ生成手段と、外部電源から電力を引き込むことなく前記クロック生成手段と前記タイムスタンプ生成手段に電力を提供する給電手段とを含む。
【００２５】
第８の態様によると、システムは、ホストシステムの信頼できる実行環境（ＴＥＥ）内で実行されるランタイムライブラリにおいて、アプリケーションから所定の機能を呼び出すための請求を受信して、予め定義されたオペレーションを実行する。前記請求に応じて、前記システムは、前記所定の機能に関連付けられているカーネルオブジェクトを識別する。前記システムは、前記カーネルオブジェクトの実行可能なイメージにサインするのに使用されたプライベートキーに対応するパブリックキーを利用して、前記カーネルオブジェクトの実行可能なイメージを検証する。前記カーネルオブジェクトの前記実行可能なイメージが正常に検証されたことに応じて、前記システムは、前記カーネルオブジェクトの検証された実行可能なイメージが前記データ処理（ＤＰ）アクセラレータによって実行されて予め定義されたオペレーションを実行するように、バスを介して前記カーネルオブジェクトの検証された実行可能なイメージをデータ処理（ＤＰ）アクセラレータに送信する。
【００２６】
第９の態様によると、システムは、ホストシステムにおいてバスを介してデータ処理（ＤＰ）アクセラレータからパブリック認証キー（ＰＫ＿ＡＴＴ）またはサインされたＰＫ＿ＡＴＴを受信する。前記システムは、前記ＤＰアクセラレータに関連付けられているパブリックルートキー（ＰＫ＿ＲＫ）を利用して前記ＰＫ＿ＡＴＴを検証する。前記ＰＫ＿ＡＴＴを正常に検証したことに応じて、前記システムは、カーネル識別子（ＩＤ）を前記ＤＰアクセラレータに送信して、前記ＤＰアクセラレータに記憶されたカーネルオブジェクトの認証を請求する。前記ＤＰアクセラレータを形成する前記カーネルオブジェクトに対応するカーネルダイジェストまたはサインされたカーネルダイジェストを受信したことに応じて、前記システムは、前記ＰＫ＿ＡＴＴを利用して前記カーネルダイジェストを検証する。前記システムは、検証結果を前記ＤＰアクセラレータに送信して、前記ＤＰアクセラレータに前記検証結果に基づいて前記カーネルオブジェクトへアクセスさせるようにする。
【００２７】
一実施形態において、ホストシステムから受信された認証請求に応じて、システムは、データ処理（ＤＰ）アクセラレータにおいてパブリック認証キー（ＰＫ＿ＡＴＴ）とプライベート認証キー（ＳＫ＿ＡＴＴ）を含む認証キーペアを生成する。前記システムは、前記ＰＫ＿ＡＴＴまたはサインされたＰＫ＿ＡＴＴを前記ＤＰアクセラレータから前記ホストシステムに送信し、ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。前記システムは、前記ホストシステムからカーネルオブジェクトを識別するためのカーネル識別子（ＩＤ）を受信する。ここで、前記カーネルＩＤは、ＰＫ＿ＡＴＴの検証成功に応じて受信される。前記システムは、前記カーネルＩＤに応じて、前記カーネルオブジェクトの実行可能なイメージをハッシュすることにより、カーネルダイジェストを生成する。前記システムは、前記カーネルダイジェストまたはサインされたカーネルダイジェストを前記ホストシステムに送信して、前記ＤＰアクセラレータ内で実行される前記カーネルオブジェクトにアクセスする前に、前記ホストシステムに前記カーネルオブジェクトを検証し認証させるようにする。
【００２８】
第１０の態様によると、システムは、ホストシステムにおいて、データ処理（ＤＰ）アクセラレータから前記ＤＰアクセラレータを一意に識別するためのアクセラレータ識別子（ＩＤ）を受信する。ここで、前記ホストシステムは、バスを介して前記ＤＰアクセラレータに接続される。前記システムは、ネットワークを介して前記アクセラレータＩＤを所定の信頼できるサーバーに送信する。前記システムは、ネットワークを介して所定の信頼できるサーバーから認証書（ｃｅｒｔｉｆｉｃａｔｅ）を受信し、前記認証書は前記ＤＰアクセラレータを認証する。選択的に、前記システムは、例えば、前記信頼できるサーバーのための認証書チェーンを検証することなどにより、前記認証書が前記信頼できるサーバーに関連付けられていることを検証する。前記システムは、前記認証書からパブリックルートキー（ＰＫ＿ＲＫ）を抽出し、前記ＰＫ＿ＲＫは前記ＤＰアクセラレータに関連付けられているプライベートルートキー（ＳＫ＿ＲＫ）に対応する。前記システムは、前記ＰＫ＿ＲＫを利用して、前記ＤＰアクセラレータとのセキュアチャネルを作成して、前記ホストシステムと前記ＤＰアクセラレータの間でデータを安全に交換する。
【００２９】
図１は、いくつかの実施形態に係るホストとデータ処理（ＤＰ）アクセラレータの間の通信を保護するためのシステムコンフィギュレーションの一例を示すブロック図である。図１を参照すると、システムコンフィギュレーション１００は、ネットワーク１０３を介してＤＰサーバー１０４に通信可能に接続されている１つまたは複数のクライアントデバイス１０１〜１０２を含むが、これらに限定されない。クライアントデバイス１０１〜１０２は、例えば、パーソナルコンピュータ（例えば、デスクトップ、ラップトップ、タブレット）、「シーン（ｔｈｉｎ）」クライアント、個人向け携帯情報端末（ＰＤＡ）、ウェブ対応機器（Ｗｅｂ  ｅｎａｂｌｅｄ  ａｐｐｌｉａｎｃｅ）、スマートウォッチ、または携帯電話（例えば、スマートフォン）など、任意のタイプのクライアントデバイスであってもよい。選択的に、クライアントデバイス１０１〜１０２は、他のデバイスであってもよい。ネットワーク１０３は、任意のタイプのネットワークであってもよく、例えば、有線または無線のローカルエリアネットワーク（ＬＡＮ）、インターネットのような広域ネットワーク（ＷＡＮ）、またはこれらの組み合わせであってもよい。
【００３０】
サーバー１０４（例えば、ホスト）は、任意の種類のサーバーまたはサーバークラスタであってもよく、例えば、Ｗｅｂまたはクラウドサーバー、アプリケーションサーバー、バックエンドサーバー、またはこれらの組み合わせであってもよい。サーバー１０４は、クライアントデバイス１０１〜１０２などのクライアントがサーバー１０４によって提供されるリソースやサービス（例えば、サーバー１０４を介してＤＰアクセラレータによって提供されるリソースとサービス）にアクセスすることができるようにインターフェース（図示せず）をさらに含む。例えば、サーバー１０４は、クラウドサーバーであってもよく、あるいはクライアントに様々なクラウドサービス（例えば、クラウドストレージ、クラウドコンピューティングサービス、機械学習トレーニングサービス、データマイニングサービスなどのクラウドサービス）を提供するデータセンターのサーバーであってもよい。サーバー１０４は、クラウド（プライベートクラウド、パブリッククラウドやハイブリッドクラウドであってもよい）上のＳａａＳ（Ｓｏｆｔｗａｒｅ−ａｓ−ａ−Ｓｅｒｖｉｃｅ）またはＰａａＳ（Ｐｌａｔｆｏｒｍ−ａｓ−ａ−Ｓｅｒｖｉｃｅ）システムの一部で構成されてもよい。インタフェースは、Ｗｅｂインタフェース、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）および／またはＣＬＩ（Ｃｏｍｍａｎｄ  Ｌｉｎｅ  Ｉｎｔｅｒｆａｃｅ）を含んでもよい。
【００３１】
例えば、クライアントである本例示のクライアントデバイス１０１のユーザアプリケーション（例えば、ウェブブラウザ、アプリケーション）は、サーバー１０４で実行される命令（例えば、人工知能（ＡＩ）トレーニング、推論命令など）を送受信することができ、当該命令は、ネットワーク１０３によってインタフェースを介してサーバー１０４によって受信される。当該命令に応じて、サーバー１０４は、ＤＰアクセラレータ１０５−１０７と通信して命令の実行を完了する。いくつかの実施形態において、前記命令は、機械学習タイプの命令であり、ここで、ＤＰアクセラレータは、専用機械や専用プロセッサとして、サーバー１０４による実行よりも数倍速い速度で命令を実行することができる。したがって、サーバー１０４は、分散方式で１つまたは複数のＤＰアクセラレータの実行オペレーションを制御／管理することができる。その後、サーバー１０４は、実行結果をクライアントデバイス１０１〜１０２に戻る。ＤＰアクセラレータまたはＡＩアクセラレータは、バイドウ社からのＢａｉｄｕ人工知能（ＡＩ）のチップセットのような１つまたは複数の専用プロセッサを含んでもよく、または、ＤＰアクセラレータは、ＮＶＩＤＩＡ、Ｉｎｔｅｌまたはその他のＡＩチップセットプロバイダーのＡＩチップセットであってもよい。
【００３２】
一実施形態によると、ＤＰアクセラレータ１０５〜１０７のいずれかにアクセスしてＤＰサーバー１０４（ホストとしても呼ばれる）によってホストされるアプリケーションのそれぞれは、前記アプリケーションが信頼できるソースまたはベンダーによって提供されるアプリケーションであることを検証することができる。各アプリケーションは、ホスト１０４の中央処理装置（ＣＰＵ）によって特別に構成されて実行されるＴＥＥ（Ｔｒｕｓｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ）内で起動されて実行することができる。アプリケーションがＤＰアクセラレータ１０５〜１０７のいずれかにアクセスするように構成される場合、ホスト１０４とＤＰアクセラレータ１０５〜１０７のうちの対応するＤＰアクセラレータとの間で安全な接続が作成されて、ホスト１０４とＤＰアクセラレータ１０５〜１０７のそれぞれとの間で交換されるデータは、マルウェアの攻撃から保護される。
【００３３】
図２は、いくつかの実施形態に係るホストシステムとデータ処理（ＤＰ）アクセラレータとの間の通信を保護するためのマルチレイヤ保護ソリューションの一例を示すブロック図である。一実施形態において、システム２００は、ＤＰアクセラレータに対するハードウェアを変更するか否かに関係なく、ホストと前記ＤＰアクセラレータとの間の通信を保護するための保護策を提供する。図２を参照すると、ホストマシンまたはサーバー１０４は、侵入から保護される１つまたは複数の層（例えば、ユーザアプリケーション２０３、ランタイムライブラリ２０５、ドライバー２０９、オペレーティングシステム２１１およびハードウェア２１３（例えば、セキュリティモジュール（ＴＰＭ；Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ））／ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））を有するシステムで説明することができる。ホストマシン１０４は、通常、前記ホストシステムまたはＤＰアクセラレータ１０５〜１０７で実行されるタスクを制御し管理できるＣＰＵシステムである。前記ＤＰアクセラレータと前記ホストマシンとの間の通信チャネルのセキュリティのために、データ侵入や攻撃の影響を受けやすい前記ホストシステムのさまざまな層を保護するためのさまざまな構成要素が必要になる場合がある。例えば、信頼できる実行環境（ＴＥＥ）は、データの侵入からユーザアプリケーション層とランタイムライブラリ層を保護することができる。
【００３４】
図２を参照すると、システム２００は、いくつかの実施形態に係るホストシステム１０４とＤＰアクセラレータ１０５〜１０７を含む。ＤＰアクセラレータは、ＢａｉｄｕＡＩチップセットまたはＡＩ集約コンピューティングタスクを実行することができるＮＶＩＤＩＡグラフィックスプロセッシングユニット（ＧＰＵ）のような他のＡＩチップセットを含む。一実施形態において、ホストシステム１０４は、ホストマシン１０４内のセキュリティモジュール（例えば、信頼できるプラットフォームモジュール（ＴＰＭ））が装着された１つまたは複数のＣＰＵ２１３を備えるハードウェアを含まなければならない。ＴＰＭは、ホストシステムに特化されたハードウェア認証用の暗号化キー（例えば、ＲＳＡ暗号化キー）を格納するエンドポイントデバイス上の専用チップである。各ＴＰＭチップは、インドールスメントキー（ＥＫ；ｅｎｄｏｒｓｅｍｅｎｔ  ｋｅｙｓ）またはインドールスメントクレデンシャル（ＥＣ；ｅｎｄｏｒｓｅｍｅｎｔ  ｃｒｅｄｅｎｔｉａｌｓ）、即ち、ルートキーと呼ばれる、１つまたは複数のＲＳＡキーペア（ｋｅｙ  ｐａｉｒｓ；例えば、パブリックキー及びプライベートキーペア）を含んでもよい。前記キーペアは、ＴＰＭチップ内部に保持され、ソフトウェアによってアクセスすることができない。その後、ファームウェアおよびソフトウェアの重要なセクションは、システムを無断ファームウェアおよびソフトウェアの変更から保護するために実行される前にＥＫまたはＥＣによってハッシュされることができる。前記ホストマシン上のＴＰＭチップは、セキュアブートのための信頼のルートとして機能することができる。
【００３５】
また、ＴＰＭチップは、前記ＤＰアクセラレータと通信するために、作業カーネル空間においてドライバー２０９と、オペレーティングシステム（ＯＳ）２１１を保護する。ここで、ドライバー２０９は、ＤＰアクセラレータベンダーによって提供されて、ホストとＤＰアクセラレータとの間の通信チャネルを制御するユーザアプリケーションのドライバーの役割を果たすことができる。ＴＰＭチップとセキュアブートは、ＯＳとドライバーをそれらのカーネル空間で保護するので、ＴＰＭは、ドライバー２０９とオペレーティングシステム２１１を効果的に保護することもできる。
【００３６】
ＤＰアクセラレータ１０５〜１０７の通信チャネルは、ＯＳやドライバーによって排他的に占有され得るので、前記通信チャネルは前記ＴＰＭチップによっても保護される。
【００３７】
一実施形態において、ホストマシン１０４は、ＴＰＭ／ＣＰＵ２１３によって保護されるように実施される信頼できる実行環境（ＴＥＥ）２０１を含む。ＴＥＥは、安全な環境である。ＴＥＥは、機密性と完全性に関して保護されるＴＥＥ内部にロードされたコードとデータを保証できる。ＴＥＥの例示は、ＳＧＸ（Ｉｎｔｅｌ  ｓｏｆｔｗａｒｅ  ｇｕａｒｄ  ｅｘｔｅｎｓｉｏｎｓ）またはＡＭＤ  ＳＥＶ（ｓｅｃｕｒｅ  ｅｎｃｒｙｐｔｅｄ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ）であり得る。Ｉｎｔｅｌ  ＳＧＸおよび／またはＡＭＤ  ＳＥＶは、ユーザレベルのコードにより高い権限レベルで実行されるプロセスから保護されるＣＰＵのメモリのプライベート領域を割り当てるように許可する中央処理装置（ＣＰＵ）の命令コードのセットを含んでもよい。ここで、ＴＥＥ２０１は、ユーザアプリケーション２０３とランタイムライブラリ２０５を保護することができ、ユーザアプリケーション２０３とランタイムライブラリ２０５は、それぞれエンドユーザとＤＰアクセラレータベンダーによって提供されてもよい。ここで、ランタイムライブラリ２０５は、ＡＰＩ呼び出しを前記ＤＰアクセラレータの実行、コンフィギュレーション、および／または制御のためのコマンドに変換することができる。一実施形態において、ランタイムライブラリ２０５は、ユーザアプリケーションによって実行される事前決定された（例えば、予め定義された）カーネルのセットを提供する。
【００３８】
他の一実施形態において、ホストマシン１０４は、Ｒｕｓｔ、ＧｏＬａｎｇなどのメモリセーフ言語を用いて実現される１つまたは複数のメモリセーフアプリケーション２０７を含む。ＭｅｓａＬｏｃｋ  ＬｉｎｕｘのようなメモリセーフＬｉｎｕｘリリース（ｍｅｍｏｒｙ  ｓａｆｅ  Ｌｉｎｕｘ  ｒｅｌｅａｓｅｓ）上で実行されるこれらのメモリセーフアプリケーションは、データの機密性と整合性の攻撃からシステム２００をさらに保護することができる。しかし、オペレーティングシステムは、あらゆるＬｉｎｕｘディストリビューション、ＵＮＩＸ、およびＷｉｎｄｏｗｓ  ＯＳやＭａｃ  ＯＳであり得る。
【００３９】
一実施形態において、システムは、次のように設定することができる。メモリセーフＬｉｎｕｘディストリビューションは、ＴＰＭセキュアブートが搭載されたシステム（例えば、図２のホストシステム１０４）上にインストールされる。前記インストールは、製造または準備の段階の間に、オフラインで実行することができる。前記インストールは、前記ホストシステムのユーザ空間のアプリケーションがメモリセーフプログラミング言語を利用してプログラミングされるように確保することができる。ホストシステム１０４上で実行される他のアプリケーションがメモリセーフアプリケーション（ｍｅｍｏｒｙ−ｓａｆｅ  ａｐｐｌｉｃａｔｉｏｎｓ）になるように確保するのは、ホストシステム１０４に対する潜在的な機密性と整合性の攻撃をさらに軽減することができる。
【００４０】
インストール後、前記システムは、続いてＴＰＭに基づくセキュアブートを使用して起動することができる。ＴＰＭセキュアブートは、アクセラレータサービスを提供するカーネル空間で、サインされた／認証されたオペレーティングシステムおよびアクセラレーター・ドライバーのみを起動するように確保する。一実施形態において、オペレーティングシステムは、ハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）を使用してロードすることができる。ハイパーバイザまたは仮想マシンマネージャは、仮想マシンを作成して実行するコンピュータソフトウェア、ファームウェア、またはハードウェアである。カーネル空間は、ユーザアプリケーションに機能とサービスを提供するように、カーネル（即ち、実行のための所定の（例えば、予め定義された）機能セット）が識別される宣言型領域または範囲であることを留意しなければならない。システムの整合性が損なわれる場合、ＴＰＭセキュアブートは起動されずに、代わりにシステムがシャットダウンされる可能性がある。
【００４１】
セキュアブート後、ランタイムライブラリ２０５は、ＴＥＥ２０１を実行して作成し、ＴＥＥ２０１は、ＣＰＵ２１３に関連付けられてる信頼できるメモリ空間にランタイムライブラリ２０５を配置する。その後、ユーザアプリケーション２０３は、ＴＥＥ２０１で立ち上げる。一実施形態において、ユーザアプリケーション２０３とランタイムライブラリ２０５は、静的にリンクされて一緒に立ち上げる。他の一実施形態において、ランタイム２０５が、まずＴＥＥで立ち上げた後、ユーザアプリケーション２０５がＴＥＥ２０１で動的にロードされる。他の一実施形態において、ユーザアプリケーション２０５が、まずＴＥＥで立ち上げた後、ランタイム２０５がＴＥＥ２０１で動的にロードされる。静的にリンクされたライブラリは、コンパイルタイムでアプリケーションにリンクされたライブラリであることを留意しなければならない。動的ロードは、動的リンカによって実行されてもよい。動的リンカは、ランタイムにユーザアプリケーションを実行するための共有ライブラリをロードしリンクする。ここで、ＴＥＥ２０１内のユーザアプリケーション２０３とランタイムライブラリ２０５は、ランタイムに互いに可視である。例えば、すべてのプロセスデータは、互いに可視である。しかし、ＴＥＥに対する外部アクセスは拒否される。
【００４２】
他の一実施形態において、ユーザアプリケーションは、ランタイムライブラリ２０５によって事前決定されたようなカーネルセットからカーネルを呼び出すことができる。他の一実施形態において、ユーザアプリケーション２０３とランタイムライブラリ２０５は、キャッシュベースのサイドチャネル攻撃のようなサイドチャネル攻撃を防御するためにサイドチャネルフリーアルゴリズムによって強化される。サイドチャネル攻撃は、実現されたアルゴリズム自体の脆弱性（例えば、暗号化分析、ソフトウェアのバグ）でなく、コンピュータシステムの実現から得られた情報に基づく攻撃である。サイドチャネル攻撃の例示として、仮想化された環境やクラウド環境で攻撃者が共有物理システムのキャッシュを監視する能力を基にする攻撃であるキャッシュ攻撃を含む。強化は、キャッシュに対するマスキング、およびアルゴリズムによって生成されキャッシュに配置される出力を含んでもよい。次に、ユーザアプリケーションの実行が完了されると、ユーザアプリケーションは、実行を終了してＴＥＥを終了する。
【００４３】
要約すると、システム２００は、データの機密性と整合性の損失からＤＰアクセラレータ（例えば、機械学習モデル、トレーニングデータおよび推論出力のようなデータの通信）を保護するために、複数の保護層を提供する。システム２００は、ＴＰＭに基づくセキュアブート保護層、ＴＥＥ保護層、カーネル確認／検証層を含んでもよい。また、システム２００は、ホストマシン上の他のアプリケーションがメモリセーフなプログラミング言語を用いて実現されるようにすることで、メモリセーフなユーザ空間を提供することができ、これは潜在的なメモリ破損／脆弱性を排除することで、攻撃をさらに削除することができる。また、システム２００は、サイドチャネルフリーアルゴリズムを使用して、キャッシュによるサイドチャネル攻撃のようなサイドチャネル攻撃を防御するアプリケーションを含んでもよい。
【００４４】
図３は、一実施形態による方法の一例を示すフローチャートである。プロセス３００は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含み得る処理ロジックによって実行されることができる。例えば、プロセス３００は、図１のホストシステム１０４のようなホストシステムによって実行されることができる。図３を参照すると、ブロック３０１において、処理ロジックは、ホストシステムのセキュリティモジュール（例えば、信頼できるプラットフォームモジュール（ＴＰＭ））を利用して、セキュアブートを実行する。ブロック３０２において、処理ロジックは、オペレーティングシステム（ＯＳ）とデータ処理（ＤＰ）アクセラレータに関連付けられるアクセラレーター・ドライバーが信頼できるソースにより提供されたか否かを検証する。ブロック３０３において、処理ロジックは、ＯＳ内でアクセラレーター・ドライバーを立ち上げる。ブロック３０４において、処理ロジックは、ホストシステムのＣＰＵに関連付けられている信頼できる実行環境（ＴＥＥ）を生成する。ブロック３０５において、処理ロジックは、ＴＥＥでアプリケーションとランタイムライブラリを立ち上げ、ここで、前記アプリケーションは、前記ランタイムライブラリと前記アクセラレーター・ドライバーを介して前記ＤＰアクセラレータと通信する。
【００４５】
一実施形態において、アプリケーションおよびランタイムライブラリは、静的にリンクされて一緒に立ち上がる。他の一実施形態において、ランタイムライブラリはＴＥＥで立ち上げ、アプリケーションはランタイムライブラリが立ち上がった後に起動するために動的にロードされる。一実施形態において、処理ロジックは、ホストマシン上で他のアプリケーション（即ち、メモリセーフなアプリケーション）を立ち上げる。他の一実施形態において、メモリセーフなアプリケーションは、１つまたは複数のメモリセーフなプログラミング言語で実現される。一実施形態において、ランタイムライブラリは、アプリケーションによって起動される所定のカーネルのセットを提供し、ＤＰアクセラレータによってタスクを実行する。一実施形態において、処理ロジックは、キャッシュベースのサイドチャネル攻撃を防御するためにサイドチャネルフリーアルゴリズムを利用して、ＴＥＥで実行されるアプリケーションとランタイムライブラリをさらに強化させる。
【００４６】
図４は、一実施形態によるＩ／Ｏマネージャを備えるホストの一例を示すブロック図である。システム４００は、前記ホストとＤＰアクセラレータとの間の通信を保護するための保護策を提供する、図２のシステム２００を表すことができる。図４を参照すると、一実施形態において、ホストシステム１０４のＴＥＥ２０１は、Ｉ／Ｏマネージャ４０１を含む。一実施形態において、ＤＰアクセラレータ４０５〜４０７は、Ｉ／Ｏインターフェース４１５〜４１７を含む。Ｉ／Ｏインタフェース４１５〜４１７は、それぞれのホストがＤＰアクセラレータのメモリに直接アクセスすることを遮断、禁止または拒否する。一方、Ｉ／Ｏマネージャ４０１は、ＤＰアクセラレータがホストシステム１０４のいくつかの特定のメモリブロックのみにアクセスするように許可する。
【００４７】
従来のＤＰアクセラレータは、ホストマシンにＤＰアクセラレータの全部のメモリへのアクセスを許可させるＩ／Ｏインタフェースを含む。実際に、悪意のあるアプリケーションは、ＤＰアクセラレータのグローバルメモリ中のメモリバッファを盗んだり変更するために、これらの権限を乱用する可能性がある。これらの技術的な問題を解決するために、本開示の実施形態は、ＤＰアクセラレータのメモリシステムに対するアクセスを禁止する通信プロトコルを実施する。例えば、ホストシステムは、コマンドを送信するためにコマンドチャネルを介してＤＰアクセラレータとのみ通信することができ、ＤＰアクセラレータは、データチャネルを介して通信し、ホストマシンのＩ／Ｏマネージャを介してホストシステムからデータを読み出したり、データをホストシステムに書き込んだりすることができる。したがって、Ｉ／Ｏマネージャは、ＤＰアクセラレータによるデータのアクセスをさらに特徴付けることができ、ＤＰアクセラレータにホストシステムの限られたメモリ範囲だけにアクセスさせるようにすることができる。
【００４８】
説明のために、ＤＰによって実行される例示的な演算は、加算演算（例えば、１＋２＝３）であってもよい。この場合、ＤＰアクセラレータのメモリアドレスにアクセスすることができるホストシステムは、複数のデータ準備命令をリモートに送信して、加算演算が実行される前に、データをＤＰアクセラレータのメモリバッファにロードすることができる。
【００４９】
しかし、ＤＰアクセラレータへのメモリアクセスがないホストシステムは、アクセラレータのメモリアドレスを参照することができず、データ準備オペレーションのための別のセットのプロセッサ命令を送信しなければならない。続いて、ＤＰアクセラレータは、ホストマシンからのデータ読み出しを行い、データ（例えば、加算命令のオペランド）を取得するための後続の命令を送信する。ここで、前記ＤＰアクセラレータの前記メモリアドレスは、前記ホストシステムには見えない。
【００５０】
図５は、いくつかの実施形態に係るＤＰアクセラレータと通信するＩ／Ｏマネージャの一例をさらに示すブロック図である。システム５００は、図４のシステム４００の詳細図であってもよい。図５を参照すると、一実施形態において、Ｉ／Ｏマネージャ４０１は、コマンド生成手段（ｃｏｍｍａｎｄ  ｇｅｎｅｒａｔｏｒ）５０１、マップドメモリ５０３（ｍａｐｐｅｄ  ｍｅｍｏｒｙ）およびアクセス制御リスト（ＡＣＬ）モジュール５０５を含む。Ｉ／Ｏマネージャ４０１は、ドライバー２０９に通信可能に接続することができ、ドライバー２０９は、ＡＣＬマップ５０７（例えば、ＩＯ  ＭＭＵ）を含んでもよい。コマンド生成手段５０１は、ＤＰアクセラレータへ送信されるコマンドを生成することができる。マップドメモリ５０３は、ホストサーバー１０４の複数のメモリ領域を含むことができ、前記メモリ領域は、各ＤＰアクセラレータにマップされる。マップドメモリ５０３は、ホストサーバー１０４のメモリ（例えば、図４のハードウェア２１３の一部分）であってもよい。ＡＣＬモジュール５０５は、対応するＤＰアクセラレータのロジックテーブルに基づいて、ホストサーバー１０４の対応するマップドメモリ領域へのアクセスを制御（例えば、許可または拒否）することができる。ＡＣＬマップ５０７は、図６に示すように、メモリ５０３の異なるメモリ領域をＤＰアクセラレータにマップするマッピングテーブルを含むことができる。ここで、図６は、一実施形態に基づいてＤＰアクセラレータ１が１つ以上の領域（例えば、領域１、．．．、領域１１）にマップされ、ＤＰアクセラレータ２が領域１２にマップされることを示す。例えば、各ＤＰアクセラレータは、複数のメモリ領域にマップすることができる。
【００５１】
例えば、一実施形態において、ＤＰアクセラレータは、ホストサーバーのメモリ位置（例えば、マップドメモリ５０３）に直接アクセスすることが許可されない。しかし、ＡＣＬマップ５０７がアクセスされる（複数の）メモリ領域にマップされたＤＰアクセラレータのエントリを含む場合、ＤＰアクセラレータは（ＡＣＬモジュール５０５を介して）ホストサーバーのメモリ領域にアクセスすることができる。一実施形態において、ＤＰアクセラレータがホストシステム１０４に追加される場合、例えば、ホストシステム１０４が、新しいＤＰアクセラレータが接続されていることを見つけた場合、ＡＣＬモジュール５０５は、ＤＰアクセラレータに識別子を割り当て、ＤＰアクセラレータに対応するＡＣＬマップ５０７上にエントリを挿入し、および／または、ＤＰアクセラレータのために、メモリ５０３（例えば、図４のハードウェア２１３の一部のようなホストサーバー１０４のメモリなど）から利用可能なメモリブロックをリザーブ（ｒｅｓｅｒｖｅ）するかまたは割り当てる。一実施形態において、ＡＣＬモジュール５０５は、ＤＰアクセラレータに通知を送信してＤＰアクセラレータに利用可能なメモリブロックを通知することができる。一実施形態において、ＤＰアクセラレータ識別子は、生成されたＧＵＩＤ／ＵＵＩＤ（汎用一意識別子；ｕｎｉｖｅｒｓａｌｌｙ  ｕｎｉｑｕｅ  ｉｄｅｎｔｉｆｉｅｒ）、ＭＡＣアドレス、ＤＰアクセラレータに関連付けられているＩＰアドレス、またはそれらの組み合わせであってもよい。いくつかの実施形態において、ホストシステムは、複数のＤＰアクセラレータに接続される。一実施形態において、ＤＰアクセラレータがホストシステム１０４から取り外された場合、例えば、ホストシステム１０４が、既存のＤＰアクセラレータがホストサーバー１０４に接続されていないことを見つけた場合、ＡＣＬモジュールは、ＤＰアクセラレータに対応するＡＣＬマップ５０７からエントリを削除し、および／またはＤＰアクセラレータに対応するメモリ５０３からメモリブロックの割り当てを解除することができる。
【００５２】
図５を参照すると、一実施形態において、ＤＰアクセラレータ４０５のＩ／Ｏインタフェース４１５は、制御レジスタ５１１とコマンドデコーダ５１３のようなモジュールを含む。制御レジスタ５１１は、実行ユニット５１７および／またはグローバルメモリの動きを制御することができる。コマンドデコーダ５１３は、ＤＰアクセラレータ４０５によって受信されたコマンドをデコードすることができる。一実施形態において、ＤＰアクセラレータ４０５は、Ｉ／Ｏマネージャ４０１からデータを取得するためのコマンドを読み出して、上記のコマンドをＩ／Ｏマネージャ４０１に書き込むためのコマンドなどの後続のコマンドを送信して、請求されたコマンドを完了することができる。
【００５３】
図７は、一実施形態に係るホストとＤＰアクセラレータの間の例示的な通信を示すブロック図である。オペレーション７００は、ホストサーバー１０４および／またはＤＰアクセラレータ４０５によって実行されることができる。図７を参照すると、オペレーション７０１において、ホストサーバー１０４は、コマンドチャネルを介してＤＰアクセラレータによって処理されるために、データ準備コマンド請求（例えば、データ準備オペレーションを実行するためのデータ準備命令）をＤＰアクセラレータ４０５に送信する。オペレーション７０２において、ＤＰアクセラレータ４０５は、請求されたコマンドをデコードして、データ準備オペレーションコマンドとなるコマンドの種類を確定する。
【００５４】
請求されたコマンドを完了するために、ホストサーバー１０４からのデータが必要であると判定された場合、オペレーション７０３において、ＤＰアクセラレータ４０５は、ホストメモリからのデータの読み出しアクセス（例えば、読み出しオペレーション）を請求する。ここで、前記データは、ホストシステムの第１のメモリ位置（例えば、図５のマップドメモリ５０３）に存在することができる。オペレーション７０４において、読み出しアクセス請求を受信したことに応じて、ホストサーバー１０４は、請求するＤＰアクセラレータと請求されるホストサーバー１０４上のメモリ領域（例えば、第１のメモリ位置）を識別し、ＡＣＬマップをクエリーして、前記ＤＰアクセラレータが要求されたメモリ領域へのアクセス権限を持っているか否かを判定する。
【００５５】
例えば、ホストサーバー１０４は、ＤＰアクセラレータに関連付けられている識別子によって前記ＤＰアクセラレータのＡＣＬマップをクエリーすることができる。クエリー結果エントリが存在する場合、ホストサーバー１０４は、前記結果エントリから、請求されたメモリ位置がメモリ領域内にあるか否かを判定することができる。メモリ領域内にあることが判定された場合、ＤＰアクセラレータ４０５は、読み出し／書き込みアクセス権限を持っている。ＤＰアクセラレータがメモリ領域への読み出しアクセス権限を持っていることが判定された場合、オペレーション７０５において、ホストサーバー１０４は、データチャネルを介して、請求されたデータを返す。ＤＰアクセラレータが読み出しアクセス権限を持っていないことが判定された場合、ホストサーバー１０４は、読み出しエラーの通知をＤＰアクセラレータ４０５に送信することができる。
【００５６】
オペレーション７０６において、ホストサーバー１０４は、ＤＰコマンドや計算またはコンフィギュレーションコマンドまたはＤＰ命令を送信する。オペレーション７０７において、ＤＰアクセラレータ４０５は、ＤＰコマンドまたはＤＰオペレーションを処理する。オペレーション７０８において、請求されたコマンドが完了されると、ＤＰアクセラレータ４０５は、完了結果をＤＰアクセラレータ４０５のグローバルメモリ（例えば、図５のグローバルメモリ５１５）に格納する。ＤＰアクセラレータ４０５は、続いてデータチャネルを介して完了結果を書き込み請求としてホストサーバー１０４に送信する。オペレーション７０９において、ホストサーバー１０４は、ＤＰアクセラレータと書き込みアクセスのために請求されたメモリ領域（例えば、第２のメモリ位置）を識別しＡＣＬマップをクエリーして、ＤＰアクセラレータ４０５が請求されたメモリ領域への書き込みアクセス権限を持っているか否かを判定する。
【００５７】
ＤＰアクセラレータが書き込みアクセス権限を持っていることが判定された場合、オペレーション７１０において、ホストサーバー１０４は、前記結果を請求されたメモリ位置に格納する。オペレーション７１１において、ホストサーバー１０４は、前記結果が正常に受信されると、その後確認応答を送り出すことができる。ＤＰ／コンピューティングコマンドは、ＤＰアクセラレータによって処理される（複数の）データ処理オペレーションに対するコマンドを意味することに留意しなければならない。コンフィギュレーションコマンドは、ＤＰアクセラレータのコンフィギュレーションのためのコマンドを意味する。データ準備コマンドは、（例えば、ホストサーバーからＤＰコマンドのためのオペランドのようなデータをフェッチする）データ準備オペレーションのためのコマンドを意味する。
【００５８】
図８Ａ及び図８Ｂは、いくつかの実施形態による例示的な方法を示すフローチャートである。プロセス８００とプロセス８２０は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含み得る処理ロジックによって実行されることができる。例えば、プロセス８００は、図４のホストシステム（例えば、Ｉ／Ｏマネージャ４０１）によって実行されることができ、プロセス８２０は、図４のＤＰアクセラレータ（例えば、Ｉ／Ｏインタフェース４１５）によって実行されることができる。図８Ａを参照すると、ブロック８０１において、処理ロジックは、バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で安全な接続を作成し、前記安全な接続は、１つまたは複数のデータチャネルを含む。他の一実施形態において、安全な接続は、１つまたは複数のコマンドチャネルを含む。ブロック８０２において、処理ロジックは、一つのコマンドチャネルを介して第１の命令をホストシステムからＤＰアクセラレータに送信し、前記第１の命令は、ＤＰアクセラレータがデータ準備オペレーションを実行するように請求する命令である。ブロック８０３において、処理ロジックは、前記第１の命令に応じて、一つのデータチャネルを介してＤＰアクセラレータから、ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を受信する。ブロック８０４において、前記第１の請求に応じて、処理ロジックは、前記データチャネルを介してホストシステムの第１のメモリ位置から検索された第１のデータを前記ＤＰアクセラレータに送信し、ここで、前記第１のデータは、計算やコンフィギュレーションのオペレーションに使用される。ブロック８０５において、処理ロジックは、コマンドチャネルを介して第２の命令を前記ホストシステムから前記ＤＰアクセラレータに送信し、前記第２の命令は、ＤＰアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。
【００５９】
一実施形態において、処理ロジックは、前記第１の請求をさらにチェックして、前記ＤＰアクセラレータに前記ホストシステムの前記第１のメモリ位置から読み出す権限があるか否かを判定し、前記ＤＰアクセラレータが前記第１のメモリ位置から読み出し権限があると判断されると、前記ＤＰアクセラレータが前記第１のメモリ位置から読み出すように許可する。一実施形態において、ＤＰアクセラレータは、前記ホストシステムの前記第１のメモリ位置への直接アクセスが許可されない。一実施形態において、前記ＤＰアクセラレータは、前記ホストシステムに接続された複数のＤＰアクセラレータの一つである。
【００６０】
一実施形態において、処理ロジックは、前記データチャネルを介して前記ＤＰアクセラレータから第２のデータを書き込むための第２の請求をさらに受信する。ここで、前記第２のデータは、前記ホストシステムの第２のメモリ位置に書き込まれる。前記第２の請求に応じて、処理ロジックは、前記ホストシステムの前記第２のメモリ位置で前記第２のデータを格納する。他の一実施形態において、処理ロジックは、前記第２の請求をさらにチェックして、前記ＤＰアクセラレータに前記ホストシステムの前記第２のメモリ位置に書き込む権限があるか否かを判定する。ＤＰアクセラレータに第２のメモリ位置に書き込む権限があると判断されると、処理ロジックは、前記ＤＰアクセラレータに前記第２のメモリ位置に書き込むように許可する。他の一実施形態において、前記第２のデータは、前記命令に応じた計算またはコンフィギュレーションのオペレーションの結果の少なくとも一部を表す。
【００６１】
図８Ｂを参照すると、一実施形態において、ブロック８２１において、処理ロジックは、バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で安全な接続を作成し、前記安全な接続は、１つまたは複数のコマンドチャネルおよび／または１つまたは複数のデータチャネルを含む。ブロック８２１において、処理ロジックは、前記ＤＰアクセラレータにおいて、コマンドチャネルを介して前記ホストシステムから第１の命令を受信し、前記第１の命令は、前記ＤＰアクセラレータがデータ準備オペレーションを実行するように要請する命令である。ブロック８２３において、前記第１の命令に応じて、処理ロジックは、データチャネルを介して前記ＤＰアクセラレータから前記ホストシステムに、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を送信する。ブロック８２４において、処理ロジックは、前記データチャネルを介して前記ホストシステムから前記第１のデータを受信し、ここで、前記第１のデータは、前記ホストシステムによって前記ホストシステムの前記第１のメモリ位置から検索される。ブロック８２５において、処理ロジックは、前記コマンドチャネルを介して前記ホストシステムから第２の命令を受信し、前記第２の命令は、前記ＤＰアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。ブロック８２６において、処理ロジックは、少なくとも前記第１のデータに基づいて計算またはコンフィギュレーションのオペレーションを実行する。
【００６２】
一実施形態において、前記ホストシステムは、前記第１の請求をチェックして、前記ＤＰアクセラレータに前記ホストシステムの前記第１のメモリ位置から読み出す権限があるか否かを判定することができる。ここで、前記ホストシステムは、前記ＤＰアクセラレータに前記第１のメモリ位置から読み出す権限があると判断されると、前記ＤＰアクセラレータが前記第１のメモリ位置から読み出すように許可する。他の一実施形態において、前記ＤＰアクセラレータは、前記ホストシステムの前記第１のメモリ位置への直接アクセスが許可されない。他の一実施形態において、前記ＤＰアクセラレータは、前記ホストシステムに接続された複数のＤＰアクセラレータの一つである。
【００６３】
他の一実施形態において、処理ロジックはさらに、前記データチャネルを介して第２の請求を前記ＤＰアクセラレータから前記ホストシステムに送信し、第２のデータを前記ホストシステムの第２のメモリ位置に書き込み、ここで、前記第２のデータは、計算またはコンフィギュレーションオペレーションの結果の少なくとも一部を表す。他の一実施形態において、前記ホストシステムは、前記第２の請求をチェックして、前記ＤＰアクセラレータに前記ホストシステムの前記第２のメモリ位置へ書き込み権限があるか否かを判定することができる。ここで、前記ホストシステムは、前記ＤＰアクセラレータに前記第２のメモリ位置へ書き込み権限があると判断されると、前記ＤＰアクセラレータが前記第２のメモリ位置に書き込むように許可する。
【００６４】
図９は、一実施形態に係るホストチャネルマネージャを備えるホストの一例を示すブロック図である。システム９００は、図２のシステム２００を表すことができ、ホストと１つまたは複数のＤＰアクセラレータとの間の情報交換チャネルを確保する保護策を提供することができる。図９を参照すると、一実施形態において、ホストシステム１０４は、ホストチャネルマネージャ（ＨＣＭ）９０１を含むランタイムライブラリ２０５を含む。対応的に、ＤＰアクセラレータ４０５〜４０７のそれぞれは、アクセラレータチャネルマネージャ（ＡＣＭｓ）９１５〜９１７を含む。ＨＣＭとＡＣＭｓは、暗号化キーの生成をサポートして、ホストシステム１０４とＤＰアクセラレータ４０５〜４０７との間の非対称（例えば、ＲＳＡ）および／または対称（例えば、ＡＥＳ）暗号化による情報交換チャネルを設定する。ここで、ＤＰアクセラレータ４０５〜４０７は、図２のＤＰアクセラレータ２０５〜２０７であってもよい。
【００６５】
図１０は、いくつかの実施形態に係る１つまたは複数のアクセラレータチャネルマネージャ（ＡＣＭｓ）に通信可能に接続されているホストチャネルマネージャ（ＨＣＭ）の一例を示すブロック図である。システム１０００は、図９のシステム９００の詳細図であってもよい。図１０を参照すると、一実施形態において、ＨＣＭ９０１は、認証モジュール１００１、終了モジュール１００３、キーマネージャ１００５、キー・ストア１００７、暗号化エンジン１００９を含む。認証モジュール１００１は、ホストサーバー１０４上で実行されるユーザアプリケーションを認証してＤＰアクセラレータのリソースにアクセスしたり、ＤＰアクセラレータのリソースを利用したりするように認証することができる。終了モジュール１００３は、接続を終了することができ、例えば、前記接続に関連付けられるチャネルを終了することができる。キーマネージャ１００５は、異なるセキュアデータ交換チャネルのための１つまたは複数のデータパケットを暗号化／復号化するために、非対称キーペアまたは対称キーを管理（例えば、作成または破壊）することができる。ここで、各ユーザアプリケーション（図９のユーザアプリケーション２０３の一部として）は、一対多の関係で異なるセキュアデータ交換チャネルに対応するか、またはマップすることができ、各データ交換チャネルはＤＰアクセラレータに対応することができる。一実施形態によると、チャネル／セッションキーを利用して、チャネルにマップされるユーザアプリケーションの例示は、図１１で表すことができる。ここで、アプリケーション１はチャネルセッションキー１−１１にマップされ、ここで、各セッションキーはＤＰアクセラレータ（例えば、１１個のＤＰアクセラレータ）に対応するセキュアチャネルのためのものであり、アプリケーション２は、チャネルセッションキー１２にマップされ、キー１２は、特定のＤＰアクセラレータに対応される。キー・ストア１００７は、暗号化非対称キーペアまたは対称キーを格納することができる。暗号化エンジン１００９は、セキュアチャネルのいずれかによって交換された前記データのためのデータパケットを暗号化または復号化することができる。これらのモジュールの一部は、より少ないモジュールに統合されることができることに留意しなければならない。
【００６６】
図１０を参照すると、一実施形態において、ＤＰアクセラレータ４０５は、ＡＣＭ９１５およびセキュリティユニット（ＳＵ）１０２０を含む。セキュリティユニット１０２０は、キーマネージャ１０２５、キー・ストア１０２７、暗号化エンジン１０２９を含んでもよい。キーマネージャ１０２５は、非対称キーペアまたは対称キーを管理（例えば、生成、安全に保持、および／または破棄）することができる。キー・ストア１０２７は、暗号化非対称キーペアまたは対称キーを格納することができる。暗号化エンジン１０２９は、データ交換のためのキー情報またはデータパケットを暗号化または復号化することができる。いくつかの実施形態において、ＡＣＭ９１５とＳＵ１０２０は、統合されたモジュールである。
【００６７】
図１２Ａ及び図１２Ｂは、一実施形態に係るホストとＤＰアクセラレータとの間のセキュア情報交換の一例を示すブロック図である。例示１２００は、図１０のシステム１０００によって実行されることができる。図１０、図１２Ａ及び図１２Ｂを参照すると、一実施形態において、任意のデータ通信がＤＰアクセラレータ（例えば、ＤＰアクセラレータ４０５）とホストサーバー１０４上にホストされてＤＰアクセラレータ・リソースを請求するアプリケーションの間で行われる前に、安全な情報交換チャネルは、ホストサーバー１０４とＤＰアクセラレータの間で設定され、または作成される。情報交換チャネルの設定は、ホストサーバー１０４のユーザアプリケーションによって起動することができる。例えば、ユーザアプリケーション（例えば、図９のアプリケーション２０３のユーザアプリケーション）は、ＨＣＭ９０１がセキュアデータ交換チャネルを設定するように請求することができる。認証モジュール１００１は、前記請求を受信し、ユーザアプリケーションが信頼できるアプリケーションであることを認証することができる。一実施形態において、認証モジュール１００１は、ユーザアプリケーションまたはクライアントがユーザアプリケーションにアクセスする権限を検証し、例えば、ユーザアプリケーションまたはクライアントが請求されたＤＰアクセラレータからのリソースを利用する権限を備えるか否かを検証する。ユーザアプリケーションまたはクライアントが許可されている場合、情報は前記情報交換を暗号化および復号化するセッションキーを経由して、セキュアチャネルを介してユーザアプリケーションとＤＰアクセラレータの間で交換されることができる。
【００６８】
一実施形態において、セッションキーを生成するために、ＨＣＭ９０１は、アプリケーションおよび／またはチャネルに関連付けられる第１のパブリック／プライベートキーペアを生成することができる。または、前記第１のパブリック／プライベートキーペアは、ＨＣＭ９０１に関連付けられたキーペアであり得る。前記第１のパブリック／プライベートキーペアは、キー・ストア１００７に記憶されることができ、前記第１のパブリックキーは、ＤＰアクセラレータ４０５またはＡＣＭ９１５）に送信される（例えば、オペレーション１２０１）。その後、ＡＣＭ９１５は、セッションのためのユニークなセッションキー（例えば、第２のセッションキー）を生成し（例えば、オペレーション１２０２）、ここで、前記セッションキーは、前記ホストサーバー１０４と通信するデータパケットを暗号化／復号化するために使用することができる（例えば、オペレーション１２０５〜１２１６）。一実施形態において、セッションキーは、巡回冗長検査、チェックサム、または暗号化ハッシュ関数またはランダムハッシュ／乱数生成手段のようなハッシュ関数に基づいて導出された（または生成された）対称キーである。
【００６９】
一実施形態において、ＡＣＭ９１５が前記第１のパブリックキーを受信する場合、ＡＣＭ９１５は、前記チャネルのための第２のパブリック／プライベートキーペアを作成し、ここで、前記第２のパブリック／プライベートキーペアの前記第２のプライベートキー及び前記第１のパブリックキーは、セッションキーまたはセッションキーの構成要素を暗号化するために使用される。他の一実施形態において、前記第２のパブリック／プライベートキーペアは、ＤＰアクセラレータ４０５に関連付けられているキーペアである。一実施形態において、前記第１のパブリックキー、第２のパブリックキー、第２のプライベートキーおよび／または前記セッションキーは、キー・ストア１０２７に記憶されることができる。その後、前記セッションキー（またはその構成要素）は、前記第１のパブリックキーによって暗号化され、暗号化されたセッションキーは、前記第２のプライベートキーによってより暗号化（例えば、二重暗号化）され、二重暗号化されたセッションキー情報は、前記第２のパブリックキーと一緒にＨＣＭ９０１に送信することができる（例えば、オペレーション１２０３）。
【００７０】
その後、ＨＣＭ９０１のキーマネージャ１００５は、前記第２のパブリックキーと前記第１のプライベートキー（例えば、オペレーション１２０４）に基づいて、前記暗号化されたセッションキーを復号化して、前記セッションキーを導出（例えば、第１のセッションキーを生成）することができる。その後、前記ＤＰアクセラレータから前記ホストサーバー１０４に伝送されたデータ、またはその逆（例えば、オペレーション１２０５〜１２１６）は、対称セッションキーを使用して、通信のための前記データを暗号化および復号化することができる。例えば、データは暗号化され、次に、発信者によって情報交換チャネルを介して送信される。受信されたデータは、受信者によって解読される。ここで、ホストサーバー１０４とＤＰアクセラレータ４０５が前記データパケットを暗号化および復号化するための対称セッションキーと同じものを備えるので、ホストサーバー１０４とＤＰアクセラレータ４０５は、これらのデータパケットを読み出すことができる。
【００７１】
一実施形態において、ホストサーバー１０４（例えば、ＨＣＭ９０１）は、ＤＰアクセラレータ４０５（例えば、ＡＣＭ９１５）のメモリバッファに直接アクセスすることはできないが、ＤＰアクセラレータは、ホストサーバー１０４のメモリバッファにアクセスすることができる。したがって、オペレーション１２０５〜１２１１は、暗号化されたデータパケットをホストサーバー１０４からＤＰアクセラレータ４０５に送信するオペレーションであり、オペレーション１２１２〜１２１６は、暗号化されたデータパケットをＤＰアクセラレータ４０５からホストサーバー１０４に送信するオペレーションである。ここで、オペレーション１２０６〜１２１０は、前記ホストサーバー１０４がデータパケットをＤＰアクセラレータ４０５に提供する図７のオペレーション７０１〜７０５と類似する。
【００７２】
最後に、前記アプリケーションが前記セッションの終了をシグナリングする場合、アプリケーションは、ＨＣＭ９０１にセッションを終了させるように請求することができる。その後、終了モジュール１００３は、キーマネージャ１００５がオペレーション１２１５の一部である前記セッションに関連付けられたセッションキー（例えば、前記第１のセッションキー）を破壊するように請求し、ＤＰアクセラレータ４０５のＡＣＭ９１５に終了通知（例えば、オペレーション１２１６）を送信して、キーマネージャ１０２５に前記セッションに関連付けられた対称セッションキー（例えば、前記第２のセッションキー）を破壊させるように要請することができる。ＨＣＭ９０１はＡＣＭ９１５のみと通信することに図示しているが、ＨＣＭ９０１は、複数のＤＣアクセラレータに対応する複数のＡＣＭｓと通信して、同時に複数のデータ交換接続を作成することができる。
【００７３】
図１３Ａ及び図１３Ｂは、いくつかの実施形態に係る例示的な方法を示すフローチャートである。プロセス１３００とプロセス１３２０は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含み得る処理ロジックによって実行されることができる。例えば、プロセス１３００は、図９のホストシステム（例えば、ＨＣＭ９０１）によって実行され、プロセス１３２０は、図９のＤＰアクセラレータ（例えば、ＡＣＭ９１５）によって実行されることができる。図１３Ａを参照すると、ブロック１３０１において、処理ロジックは、ホストシステムのホストチャネルマネージャ（ＨＣＭ）で、アプリケーションから請求を受信してデータ処理（ＤＰ）アクセラレータとのセキュアチャネルを作成し、ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。ブロック１３０２において、前記請求に応じて、処理ロジックは、ＨＣＭに関連付けられる第１のキーペアの第１のプライベートキー、及び前記ＤＰアクセラレータに関連付けられる第２のキーペアの第２のパブリックキーに基づいて、セキュアチャネルのための第１のセッションキーを生成する。ブロック１３０３において、前記ＤＰアクセラレータに送信される前記アプリケーションに関連付けられる第１のデータに応じて、処理ロジックは、前記第１のセッションキーを利用して、前記第１のデータを暗号化する。ブロック１３０４において、処理ロジックは、バスを介してセキュアチャネルを経由して、暗号化された第１のデータを前記ＤＰアクセラレータに送信する。
【００７４】
一実施形態において、前記請求に応じて、処理ロジックはさらに、前記ＨＣＭに関連付けられる前記第１のキーペアの第１のパブリックキーを前記ＤＰアクセラレータに送信する。その後、処理ロジックは、前記第１のパブリックキーの送信に応じて、前記ＤＰアクセラレータのアクセラレータチャネルマネージャ（ＡＣＭ）から前記ＤＰアクセラレータに関連付けられる前記第２のキーペアの前記第２のパブリックキーを受信する。他の一実施形態において、前記ＡＣＭは、第２のセッションキーを導出し、暗号化された第２のセッションキーを前記ＨＣＭに送信する前に、前記第１のパブリックキーと前記第２のキーペアの第２のプライベートキーに基づいて、前記第２のセッションキーを暗号化するように構成される。ここで、前記第１のセッションキーと前記第２のセッションキーは、同様の対称キーである。他の一実施形態において、前記ＡＣＭは、前記第２のセッションキーを用いて暗号化された第１のデータを復号化して前記第１のデータを復元するように構成される。
【００７５】
一実施形態において、処理ロジックはさらに、前記ＤＰアクセラレータの前記ＡＣＭから暗号化された第２のデータを受信し、ここで、前記第２のデータは、前記第２のセッションキーを用いて暗号化される。その後、処理ロジックは、前記第１のセッションキーを用いて暗号化された第２のデータを復号化して第２のデータを復元する。一実施形態において、前記請求に応じて、処理ロジックは、前記アプリケーションのアプリケーション識別子（ＩＤ）をさらにチェックして、前記アプリケーションが前記ＤＰアクセラレータへのアクセス権利があるか否かを判定する。ここで、前記第１のセッションキーは、前記アプリケーションが前記ＤＰアクセラレータへのアクセス権利がある場合のみに生成される。一実施形態において、処理ロジックはさらに、前記アプリケーションから前記セキュアチャネルを終了する請求を受信する。前記請求に応じて、処理ロジックは、前記第２のセッションキーを破壊することにより、前記ＡＣＭに安全な接続を終了させるように指示する命令を前記ＡＣＭに送信する。その後、処理ロジックは、前記ＨＣＭによって前記第１のセッションキーを破壊する。
【００７６】
図１３Ｂを参照すると、一実施形態において、ブロック１３２１において、処理ロジックは、データ処理（ＤＰ）アクセラレータのアクセラレータチャネルマネージャ（ＡＣＭ）で、ホストシステムのホストチャネルマネージャ（ＨＣＭ）のアプリケーションから請求を受信して、前記ホストシステムと前記ＤＰアクセラレータの間でセキュアチャネルを作成し、ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。ブロック１３２２において、前記請求に応じて、処理ロジックは、前記セキュアチャネルのための第２のセッションキーを生成し、前記暗号化された第２のセッションキー情報を前記ＨＣＭに送信する前に、前記ＤＰアクセラレータに関連付けられる第２のキーペアの第２のプライベートキー、及び前記ＨＣＭに関連付けられている第１のキーペアの第１のパブリックキーに基づいて、前記第２のセッションキーの情報を暗号化する。ブロック１３２３において、前記ホストシステムに送信される第１のデータに応じて、処理ロジックは、前記第２のセッションキーを利用して前記第１のデータを暗号化する。ブロック１３２４において、処理ロジックは、前記セキュアチャネルを介して、前記暗号化された第１のデータを前記ホストシステムの前記ＨＣＭに送信する。
【００７７】
一実施形態において、請求に応じて、処理ロジックはさらに、ＤＰアクセラレータに関連付けられる第２のキーペアの第２のパブリックキーを、ホストシステムのＨＣＭに転送し、前記ＨＣＭから前記ＨＣＭに関連付けられる第１のキーペアの第１のパブリックキーを受信する。他の一実施形態において、ＨＣＭは、ＨＣＭに関連付けられる第１のキーペアの第１のプライベートキー、及びＤＰアクセラレータに関連付けられている第２のキーペアの第２のパブリックキーに基づいて、第１のセッションキーを導出するように構成される。他の一実施形態において、ＨＣＭは、第１のセッションキーを用いて、暗号化された第１のデータを復号化して第１のデータを復元するように構成される。
【００７８】
他の一実施形態において、処理ロジックは、ホストシステムのＨＣＭから暗号化された第２のデータをさらに受信し、ここで、前記第２のデータは、第１のセッションキーを用いて暗号化される。その後、処理ロジックは、第２のセッションキーを用いて暗号化された第２のデータを復号化して第２のデータを復元し、ここで、前記第１のセッションキーと前記第２のセッションキーは、同じ対称キーである。一実施形態において、処理ロジックは、ホストシステムのＨＣＭからセキュアチャネルを終了する請求をさらに受信し、前記請求に応じて、処理ロジックは、ＡＣＭによって前記第１のセッションキーを破壊する。
【００７９】
図１４は、一実施形態によるホストチャネルマネージャ（ＨＣＭ）とアクセラレータチャネルマネージャ（ＡＣＭ）の間でセキュアな情報交換チャネルを作成するための例示的なシステムを示すブロック図である。システム１４００は、図９のシステム９００の詳細図であり得る。図１４を参照すると、一実施形態において、ＨＣＭ９０１は、キーＰＫ＿Ｏ１４０１、キーＳＫ＿Ｏ１４０３およびキーＰＫ＿ＲＫ（ｓ）１４１１を含む。キーＰＫ＿Ｏ１４０１、およびキーＳＫ＿Ｏ１４０３は、それぞれホストサーバー１０４のＨＣＭ９０１および／またはアプリケーション／ランタイムに関連付けられる非対称の暗号化キーペアのパブリックキーとプライベートキーであり、キーＰＫ＿ＲＫ（ｓ）１４１１は、ＤＰアクセラレータ４０５および／またはその他のＤＰアクセラレータのＡＣＭ９１５に関連付けられる１つまたは複数のパブリックキーである。ＨＣＭ９０１は、キーマネージャ１００５をさらに含んでもよい。ＤＰアクセラレータ４０５は、ＡＣＭ９１５に接続されたセキュリティユニット１０２０を含んでもよく、ここで、前記セキュリティユニット１０２０は、キーＰＫ＿ＲＫ１４１３、およびキーＳＫ＿ＲＫ１４１５を含んでもよく、ＰＫ＿ＲＫ１４１３とＳＫ＿ＲＫ１４１５は、それぞれＡＣＭ９１５および／またはＤＰアクセラレータ４０５に関連付けられる非対称の暗号化キーペアのパブリックキーとプライベートキーである。ＡＣＭ９１５は、キーマネージャ１０２５をさらに含む。キーマネージャ１００５、およびキーマネージャ１０２５は、対称アルゴリズム（例えば、ＡＥＳ）、および／または非対称アルゴリズム（例えば、ディフィー・ヘルマン鍵交換プロトコル、ＲＳＡなど）を利用して暗号化／復号化キーを生成することができる。
【００８０】
図１５は、一実施形態に係るホストとＤＰアクセラレータとの間のセッションキーを導出するための例示的な情報交換を示すブロック図である。例示１５５０は、セッションキーを導出するために、図１４のシステム１４００によって実行され得る複数のオペレーションを含む。図１４及び図１５を参照すると、一実施形態において、オペレーション１５５１において、ＨＣＭ９０１は、コマンド「ＣＭＤ＿パブリックキー取得（ＣＭＤ＿ｇｅｔ  ｐｕｂｌｉｃ  ｋｅｙ）」をＡＣＭ９１５に送信して、セッションキーを導出するためにプロセスを起動する。オペレーション１５５２において、請求コマンド受信時、ＡＣＭ９１５は、セッションキーの導出のために、一時的（または導出された）パブリック／プライベートキーペア（例えば、ＰＫ＿ｄとＳＫ＿ｄ）を生成する。ＡＣＭ９１５は、ＤＰアクセラレータに関連付けられるプライベートルートキー（例えば、ＳＫ＿ＲＫ）を利用して、一時的にパブリックキー（ＰＫ＿ｄ）を暗号化する。オペレーション１５５３において、暗号化された一時的なパブリックキーのコピーと一時的なパブリックキーのコピーは、ＡＣＭ９１５によってＨＣＭ９０１に送信される。オペレーション１５５４において、ＨＣＭ９０１は、上記キーのコピーを受信し、ＰＫ＿ＲＫを利用して暗号化された一時的なパブリックキーを解読する。ここで、ＰＫ＿ＲＫは、ＨＣＭ９０１によって予め受信され、図１４のＨＣＭ９０１のＰＫ＿ＲＫ（ｓ）１４１１に記憶され、復号化された一時的なパブリックキーは、オペレーション１５５３から受信された一時的なパブリックキーＰＫ＿ｄのコピーと比較する。解読されたキーが一時的なパブリックキーとマッチングする場合には、ＨＣＭ９０１は、メッセージが予想当事者からのメッセージであると検証した。ＰＫ＿ＲＫ（ｓ）１４１１は、複数のＤＰアクセラレータ４０５〜４０７のための複数のパブリックキーを含むことができることに留意しなければならない。
【００８１】
オペレーション１５５５において、ＨＣＭ９０１は、第１のランダムノンス（ｎｃ）を生成する。オペレーション１５５６において、ＨＣＭ９０１は、コマンド「ＣＭ＿セッションキー生成（ＣＭ＿ｇｅｎｅｒａｔｅ  ｓｅｓｓｉｏｎ  ｋｅｙ）」、ＨＣＭに関連付けられるパブリックキー（例えば、ＰＫ＿Ｏ）およびノンス（ｎｃ）をＡＣＭ９１５に送信する。オペレーション１５５７において、コマンド「ＣＭ＿セッションキー生成（ＣＭ＿ｇｅｎｅｒａｔｅ  ｓｅｓｓｉｏｎ  ｋｅｙ）」受信時、ＡＣＭ９１５は、第２のランダムノンス（ｎｓ）を生成する。オペレーション１５５８において、ＡＣＭ９１５は、前記第１のランダムノンス（ｎｃ）及び前記第２のランダムノンス（ｎｓ）に基づいて、セッションキーを導出する。一実施形態において、セッションキーは、ランダムノンス（ｎｓ）に連結されたランダムノンス（ｎｃ）のハッシュ関数によって導出される。他の一実施形態において、セッションキーは、ｎｓが添加されたｎｃを基にする値のハッシュ関数によって導出される。その後、セッションキーは、ＡＣＭ９１５とＨＣＭ９０１との間で交換されたデータを暗号化および復号化するのに利用される。
【００８２】
オペレーション１５５９において、ＡＣＭ９１５は、一時的なプライベートキー（例えば、ＳＫ＿ｄ）を利用して、ノンスｎｃとノンスｎｓを二重暗号化し、続いてＨＣＭに関連付けられるパブリックキー（例えば、ＰＫ＿Ｏ）を二重暗号化する。その後、ＡＣＭ９１５は、二重暗号化されたノンスｎｃとノンスｎｓをＨＣＭ９０１に送信する。オペレーション１５６０において、ＨＣＭ９０１は、ＨＣＭに関連付けられたプライベートキー（例えば、ＳＫ＿Ｏ）と一時的なパブリックキー（例えば、ＰＫ＿ｄ）に基づいて、二重暗号化されたノンスｎｃとノンスｎｓを解読する。オペレーション１５６１において、ＨＣＭ９０１は、ランダムノンスｎｃとＨＣＭ９０１によって最初に生成されたランダムノンスｎｃのコピーとが実際に同じか否かを検証することにより、セッションキーの鮮度を検証する。同じであると、オペレーション１５６２において、ＨＣＭ９０１は、第１のランダムノンス及び第２のランダムノンス（例えば、ｎｃとｎｓ）に基づいて、セッションキーを導出する。一実施形態において、セッションキーは、ランダムノンスｎｓに連結されたランダムノンスｎｃのハッシュ関数によって導出される。他の一実施形態において、セッションキーは、ｎｓが添加されたｎｃを基にする値のハッシュ関数によって導出される。その後、セッションキーは、ＨＣＭ９０１とＡＣＭ９１５との間で交換されたデータを暗号化および復号化するのに利用される。前記セッションキーは、対称暗号化アルゴリズムに基づく暗号化キーとして説明されているが、前記セッションキーは、パブリック／プライベートキーペアであってもよい。
【００８３】
図１６Ａ及び図１６Ｂは、いくつかの実施形態による例示的な方法を示すフローチャートである。プロセス１６００とプロセス１６２０は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行され得る。例えば、プロセス１６００は、図１４のホストサーバー（例えば、ＨＣＭ９０１）によって実行され得、プロセス１６２０は、図１４のＤＰアクセラレータ（例えば、ＡＣＭ９１５）によって実行され得る。図１６Ａを参照すると、ブロック１６０１において、一時的なパブリックキーＰＫ＿ｄをデータ処理（ＤＰ）アクセラレータから受信したことに応じて、処理ロジックは、ホストシステムで第１のノンス（ｎｃ）を生成し、ここで、ＤＰアクセラレータは、バスを介してホストシステムに接続される。ブロック１６０２において、処理ロジックは、セッションキーを生成するための請求をホストシステムからＤＰアクセラレータに送信し、前記請求は、ホストパブリックキー（ＰＫ＿Ｏ）及び第１のノンスを含む。ブロック１６０３において、処理ロジックは、ＤＰアクセラレータから第２のノンス（ｎｓ）を受信し、ここで、前記第２のノンスは、ホストパブリックキーと一時的なパブリックキーに対応する一時的なプライベートキー（ＳＫ＿ｄ）を利用して暗号化される。ブロック１６０４において、処理ロジックは、第１のノンス及び第２のノンスに基づいて第１のセッションキーを生成し、前記第１のセッションキーは、ホストシステムとＤＰアクセラレータの間の後続データ交換を暗号化または復号化するのに使用される。
【００８４】
一実施形態において、処理ロジックは、ＤＰアクセラレータに対して一時的なパブリックキーと、一時的なプライベートキーを含む導出されたり一時的なキーペアを生成するように請求するための請求をホストシステムからＤＰアクセラレータに送信し、ここで、ＤＰアクセラレータは、前記請求に応じて、一時的なキーペアを生成する。一時的なキーは、ＤＰアクセラレータによる実現に基づいて所定の期間（例えば、数日、数週間あるいは数ヶ月）に亘って一回または複数回に使用され得る。他の一実施形態において、ＤＰアクセラレータからの一時的なパブリックキーは、第１の一時的なパブリックキーであり、処理ロジックはさらに暗号化された第２の一時的なパブリックキーを受信し、前記第２の一時的なパブリックキーは、すでにＤＰアクセラレータによってアクセラレータプライベートルートキー（ＳＫ＿ＲＫ）を利用して暗号化されている。他の一実施形態において、処理ロジックはさらに、アクセラレータプライベートルートキーに対応するアクセラレータパブリックルートキー（ＰＫ＿ＲＫ）を用いて、暗号化された第２の一時的なパブリックキーを解読して、第２の一時的なパブリックキーを復元する。その後、処理ロジックは、第１の一時的なパブリックキーと第２の一時的なパブリックキーが同じであるか否かを検証し、ここで、第１のノンスは、前記第１の一時的なパブリックキーと第２の一時的なパブリックキーが同じである時に生成される。
【００８５】
一実施形態において、ＤＰアクセラレータから第２のノンスを受信することは、一時的なパブリックキーに対応する一時的なプライベートキーを用いて暗号化された第１のノンス及び第２のノンスを受信することを含む。他の一実施形態において、処理ロジックはさらに、ホストシステムで第１の一時的なパブリックキーまたは第２の一時的なパブリックキーを用いて暗号化された第１のノンス及び第２のノンスを解読して、第１のノンス及び第２のノンスを復元する。他の一実施形態において、一時的なプライベートキーによって暗号化された第１のノンス及び第２のノンスはさらに、ＤＰアクセラレータによってホストのパブリックキーを利用して暗号化される。他の一実施形態において、処理ロジックは、ホストのパブリックキーに対応するホストプライベートキーを用いて暗号化された第１のノンス及び第２のノンスを解読して、前記第１のノンス及び前記第２のノンスを復元する。
【００８６】
図１６Ｂを参照すると、一実施形態において、ブロック１６２１において、ホストシステムから受信された請求に応じて、処理ロジックは、データ処理（ＤＰ）アクセラレータで一時的なプライベートキーと一時的なパブリックキーを生成し、ここで、ＤＰアクセラレータは、バスを介してホストシステムに接続される。ブロック１６２２において、処理ロジックは、ＤＰアクセラレータに関連付けられるアクセラレータプライベートルートキーを利用して、一時的なパブリックキーを暗号化する。ブロック１６２３において、処理ロジックは、暗号化されていない形式の一時的なパブリックキーと暗号化された一時的なパブリックキーをホストシステムに送信して、ホストシステムに一時的なパブリックキーを検証するように許可する。ブロック１６２４において、処理ロジックは、ホストシステムから第１のノンスを受信し、ここで、前記第１のノンスは、一時的なパブリックキーが検証された後にホストシステムによって生成される。ブロック１６２５において、処理ロジックは、前記第１のノンス及び前記第２のノンスに基づいてセッションキーを生成し、ここで、前記第２のノンスは、すでにＤＰアクセラレータでローカルに生成されている。
【００８７】
一実施形態において、暗号化された第１のノンス及び第２のノンスを生成するために、処理ロジックはさらに、一時的なプライベートキーを利用して第１のノンス及び第２のノンスを暗号化する。その後、処理ロジックはさらに、暗号化された第１のノンス及び第２のノンスをホストシステムに送信し、ホストシステムに対応するホストセッションキーを生成させるようにする。他の一実施形態において、処理ロジックはさらに、暗号化された第１のノンス及び第２のノンスを送信する前に、ホストシステムに関連付けられるホストのパブリックキーを用いて、暗号化された第１のノンス及び第２のノンスを暗号化する。他の一実施形態において、ホストシステムは、一時的なパブリックキーとホストシステムに関連付けられるホストプライベートキーを用いて、暗号化された第１のノンス及び第２のノンスを解読して、前記第１のノンス及び前記第２のノンスを復元するように構成される。他の一実施形態において、ホストシステムは、第１のノンスの鮮度を検証するように構成され、ここで、ホストセッションキーは、前記第１のノンスが所定の期間内に生成された場合のみに生成される。
【００８８】
ＤＰアクセラレータのメモリバッファは、ＤＰアクセラレータを実行するのに必要なプログラム、プログラムへの入力データ、およびプログラムからの出力結果を含むことができる。ＤＰアクセラレータのセキュリティ対策が施されていないメモリバッファは、全体のホストサーバー−ＤＰアクセラレータシステムアーキテクチャにおけるセキュリティー侵害をもたらす可能性がある。ＤＰアクセラレータのメモリバッファは、上述したように、ホストサーバーに対してこれらのＤＰアクセラレータへのアクセスを許可しないことを保護することができる。ホストサーバーがＤＰアクセラレータのメモリバッファにアクセスすることができないシナリオに対して、ホストサーバーは、ＤＰアクセラレータのためのメモリ利用情報を保持することができる。前記メモリ利用情報は、データの機密性と整合性を確保することができる信頼できる実行環境（ＴＥＥ）に保持することができる。
【００８９】
図１７は、一実施形態に係るＤＰアクセラレータのメモリバッファを保護するためのセキュアメモリマネージャ（ＭＭ）を備えるホストの一例を示すブロック図である。システム１７００は、図９のシステム９００を表し、ＤＰアクセラレータのメモリを管理するために、ホストサーバー１０４上にセキュアメモリマネージャを提供する。図１７を参照すると、一実施形態において、ホストサーバー１０４は、ＭＭ１７０１を含むランタイムライブラリ２０５を含む。対応的に、ＤＰアクセラレータ４０５は、メモリ１７０３と、メモリユニット（ＭＵ）１７０５を含んでもよいが、ＤＰアクセラレータ４０７がメモリ１７０７とＭＵ１７０９を含んでもよい。メモリマネージャは、ＤＰアクセラレータのメモリを管理することができる。メモリ１７０３とメモリ１７０７は、ＤＰアクセラレータのグローバルメモリであってもよい。グローバルメモリは、ＤＰアクセラレータ上で実行されるプログラムコード、プログラムコードへの入力およびプログラムの実行からの出力結果などの情報を格納するためのアクセラレータの中の構成要素であってもよい。ＭＵ１７０５とＭＵ１７０９のそれぞれは、ＤＰアクセラレータのメモリ１７０３とメモリ１７０７のメモリレイアウトとメモリ利用に関してＭＭ１７０１と通信して協働することができる。
【００９０】
図１８は、いくつかの実施形態に係るメモリマネージャＭＭの一例を示すブロック図である。図１８を参照すると、メモリマネージャ１７０１は、メモリ割り当て手段１８０１、メモリ割り当て解除手段１８０３およびメモリ利用レジストリテーブル１８１１を含んでもよい。メモリ割り当て手段１８０１は、ＤＰアクセラレータのグローバルメモリ（例えば、ＤＰアクセラレータ４０５のメモリ１７０３）からメモリブロックを割り当てることができる。メモリ割り当て解除手段１８０３は、ＤＰアクセラレータのグローバルメモリからメモリブロックを割り当て解除することができる。メモリ利用レジストリテーブル１８１１は、ホストサーバーのＤＰアクセラレータに関連付けられるメモリブロックのためのメモリレイアウトと利用情報を記録することができる。一実施形態において、各テーブル（レジストリテーブル１８１１の一部として）は、ＤＰアクセラレータに関連付けられることができ、前記テーブルは、複数のユーザアプリケーションのための複数のエントリを備えることができる。例えば、ユーザアプリケーションは、ＤＰアクセラレータの２つのメモリブロックを予定するための２つのエントリを備えることができる。その後、レジストリテーブルは参照として利用されてＤＰアクセラレータのためのメモリブロックを割り当てたり、割り当てを解除したりすることができる。メモリ利用レジストリテーブル１８１１は、１つまたは複数のメモリマネージャテーブルを含んでもよい。メモリマネージャテーブルは、コンピュータのオペレーティングシステムのうちのシステムによって使用され、ユーザアプリケーションと物理アドレスおよび／または仮想アドレスの間のマッピングを格納するためのデータ構造である。ＤＰアクセラレータの例示的なメモリ利用レジストリテーブルは、アプリケーションＩＤ、開始アドレスおよびサイズなどのフィールドを備えることができる。ここで、アプリケーションＩＤは、どのユーザアプリケーションにメモリブロックが割り当てられたかを示し、開始アドレスとサイズは、メモリブロックのアドレスとサイズを示す。いくつかの実施形態において、レジストリテーブルは、、読み出しアクセスまたは書き込みアクセスなど、対応するメモリブロックが割り当てられているかどうか、仮想アドレスメモリへの物理アドレスがマップされているかどうか、読み取りまたは書き込みアクセスなどを示すフラグのような追加のフィールドを含むことができる。多くのメモリ利用レジストリテーブルは存在し、各ＤＰアクセラレータは、１つのメモリ利用レジストリテーブルを備えることに留意しなければならない。
【００９１】
図１７〜図１８を参照すると、一例として、リモートクライアントは、ホストサーバー１０４上で（ユーザアプリケーション２０３の一部分としての）特定のアプリケーションを実行するためのコマンドを発行することができる。アプリケーションは、ランタイムライブラリ２０５によって提供されるＡＰＩへの呼び出しによって、ＤＰアクセラレータ（４０５〜４０７）からのリソースを利用するように請求することができる。前記リソースは、メモリリソースやプロセッサのリソースであってもよい。メモリリソースの例示に対して、請求の受信時、ランタイムライブラリ２０５は、ＭＭ１７０１のインスタンスを起動することができる。その後、ランタイムライブラリ２０５は、ＤＰアクセラレータ４０５がインスタンスのメモリ割り当て手段１８０１によって、ＤＰアクセラレータ４０５のメモリ７０３から指定されたサイズのメモリブロックを割り当てるようにＤＰアクセラレータ４０５に命令して、アプリケーションを実行することができる。
【００９２】
一実施形態において、リソースブロックが請求される前に、ＭＭ１７０１は、メモリ利用レジストリテーブル１８１１をクエリーして、リソースブロックが既に割り当てられているか否かを判定することができる。その後、ＭＭ１７０１は、第１のメモリブロックが割り当てられていないことが判定されたことに応じて、割り当てコマンドをＤＰアクセラレータ４０５に送信して、グローバルメモリの第１のメモリブロックをアプリケーションに割り当てる。他の一実施形態において、ＭＭ１７０１は、請求メモリブロックが既に割り当てられていることが判定されたことに応じて、第１の請求を拒否する。
【００９３】
ＭＵ１７０５は、コマンドを受信しメモリの割り当てを実行する。一実施形態において、ＭＵ１７０５は、割り当てられる前記請求のメモリブロックのサイズを備える連続メモリブロックを見つけるためにメモリ１７０３をトラバースすることができる。ここで、ＭＵ１７０５は、ＭＵ１７０５のために、ＤＰアクセラレータ４０５のために同様のメモリ利用のレジストリテーブル（例えば、メモリ利用のデータ構造）を保持してＤＰアクセラレータ４０５のためのメモリ１７０３をトラバースすることもできる。他の一実施形態において、ＭＭ１７０１は、割り当てコマンドとメモリ利用レジストリテーブルのコピーをＤＰアクセラレータ４０５に送信する。このようにして、ＭＵ１７０５は、すでに割り当てられたメモリに気付いている。その後、ＭＵ１７０５は、メモリ利用情報に基づいて、メモリブロックを割り当て、新たに割り当てられたメモリブロックのための新しいメモリ利用情報をＭＭ１７０１に返すことができる。その後、ＭＭ１７０１は、メモリブロックを請求するアプリケーションに対応するアプリケーション識別子、開始アドレスおよび割り当てられたメモリブロックのサイズをメモリ利用レジストリテーブル１８１１上に記録する。メモリの割り当て後、ＴＥＥ内で実行されるアプリケーションがＤＰアクセラレータ４０５〜４０７のメモリ位置にアクセスしようとする場合、ＭＭ１７０１は、レジストリテーブル１８１１を検索し、メモリ位置がアプリケーションに割り当てられているか否かを検証することができる。割り当てられていると、アプリケーションは、メモリ位置にアクセスすることが許可される。そうでなければ、アプリケーションは、メモリ位置にアクセスすることを拒否する。メモリブロックが割り当てられると、前記メモリブロックは、暇なときまでに続いて割り当てることができないことに留意しなければならない。
【００９４】
他の一実施形態において、ＭＵ１７０５が通信チャネルを介した物理アドレスの送信を避けるために、メモリブロックの割り当て時にメモリ利用情報を取得する場合、ＭＵ１７０５は、代わりに仮想メモリアドレスをＭＵ１７０１に返すことができる。ここで、ＭＵ１７０５は、物理メモリアドレスから仮想メモリアドレスへのマッピングテーブルを含むことができる。マッピングテーブルは、ＤＰアクセラレータ４０５のメモリ１７０３に対して仮想メモリアドレスから物理メモリアドレスへマッピングすることができる。このようにして、ＭＵ１７０５は、仮想メモリアドレスだけを開示し、その結果、メモリ１７０３の物理アドレスは、通信チャネルを介して開示されていない。
【００９５】
ユーザアプリケーションの実行が完了するか、またはクライアントが完了コマンドを発する場合、一実施形態において、ユーザアプリケーションは、ユーザアプリケーションに関連付けられたメモリブロックのためのメモリの割り当て解除コマンドをＤＰアクセラレータ４０５に送信することができる。他の一実施形態において、レジストリテーブルのコピーもＤＰアクセラレータ４０５に送信される。一実施形態において、メモリの割り当て解除コマンドが送信される前に、ＭＭ１７０１は、メモリブロックがメモリ利用データ構造に格納されたメモリ利用情報に基づいて、アプリケーションに割り当てられているか否かを判定する。割り当てられていると、割り当て解除コマンドは送信される。そうでなければ、割り当て解除コマンドは送信されず、例えば、割り当て解除請求は拒否され得る。
【００９６】
ＭＵ１７０５は、割り当て解除コマンドを受信して、メモリの割り当て解除を行う。一実施形態において、ＭＵ１７０５は、メモリ１７０３をトラバースして、メモリブロックのためのメモリバッファをリセットするようにメモリブロックを位置させる。その後、ＭＵ１７０５は、状態完了、および／または新しいメモリ利用情報をＭＭ１７０１に返す。その後、ＭＭ１７０１は、状態完了、および／または新しいメモリ利用情報に応じて、メモリ利用のレジストリテーブル１８１１をアップデート（例えば、エントリを削除）する。
【００９７】
図１９は、一実施形態による方法の一例を示すフローチャートである。プロセス１９００は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行されることができる。例えば、プロセス１９００は、図１７のホスト１０４のようなホストシステムによって実行されることができる。図１９を参照すると、ブロック１９０１において、処理ロジックは、ホストシステムの信頼できるプラットフォームモジュール（ＴＰＭ））のようなセキュリティモジュールを利用して、セキュアブートを実行する。ブロック１９０２において、処理ロジックは、ホストシステムの１つまたは複数のプロセッサに関連付けられる信頼できる実行環境（ＴＥＥ）を作成する。ブロック１９０３において、処理ロジックは、ＴＥＥ内のメモリマネージャを起動し、ここで、メモリマネージャは、バスを介してホストシステムに接続されたデータ処理（ＤＰ）アクセラレータのメモリリソースを管理するように構成され、したがって、ＤＰアクセラレータのグローバルメモリのメモリ利用情報を維持することを含む。ブロック１９０４において、ＤＰアクセラレータのメモリ位置にアクセスするためにＴＥＥ内で実行されるアプリケーションから受信された請求に応じて、処理ロジックは、メモリ利用情報に基づいて請求を許可または拒否する。
【００９８】
一実施形態において、メモリマネージャは、ＤＰアクセラレータに関連付けられるランタイムライブラリの一部として実現され、これは、ホストシステムのＴＥＥ内で実行される。一実施形態において、ＤＰアクセラレータのグローバルメモリのメモリ利用情報を維持することは、ＤＰアクセラレータのグローバルメモリのメモリブロックのメモリ割り当てを記録するようにメモリ利用のデータ構造を維持することを含む。他の一実施形態において、メモリ利用のデータ構造は、複数のエントリを含み、各エントリは、すでに割り当てられているＤＰアクセラレータのグローバルメモリのメモリブロックを記録する。他の一実施形態において、各エントリは、対応するメモリブロックの開始メモリアドレス、対応するメモリブロックのサイズ、および対応するメモリブロックが割り当てられているか否かを示すフラグを格納する。
【００９９】
他の一実施形態において、処理ロジックはさらに、アプリケーションから第１の請求を受信し、ＤＰアクセラレータのグローバルメモリから第１のメモリブロックを割り当てている。前記第１の請求に応じて、処理ロジックは、ＤＰアクセラレータに連絡する必要がなく、メモリ利用データ構造に格納されたメモリ利用情報に基づいて、第１のメモリブロックが既に割り当てられているか否かを判定する。その後、処理ロジックは、第１のメモリブロックが割り当てられていないことが判定されたことに応じて、グローバルメモリの第１のメモリブロックをアプリケーションに割り当てる。
【０１００】
他の一実施形態において、処理ロジックはさらに、第１のメモリブロックが既に割り当てられていることが判定されたことに応じて、第１の請求を拒否する。他の一実施形態において、処理ロジックはさらに、アプリケーションから第２の請求を受信し、ＤＰアクセラレータのグローバルメモリから第２のメモリブロックに対して割り当てを解除する。前記第２の請求に応じて、処理ロジックは、メモリ利用のデータ構造に格納されたメモリ利用情報に基づいて、第２のメモリブロックが既にアプリケーションに割り当てられているか否かを判定する。処理ロジックは、第２のメモリブロックがアプリケーションに割り当てられていることが判定されたことに応じて、グローバルメモリから第２のメモリブロックに対して割り当てを解除し、それ以外の場合、前記第２の請求を拒否する。
【０１０１】
図２０は、一実施形態に係るＤＰアクセラレータに通信可能に接続されているホストの一例を示すブロック図である。システム２０００は、信頼ルートサービスとタイムスタンプ生成サービスをＤＰアクセラレータ４０５〜４０７に提供することができることを除いて、図９のシステム９００を表すことができる。図２０を参照すると、一実施形態において、ＤＰアクセラレータ４０５は、セキュリティユニット１０２０とタイムユニット２００３を含む。セキュリティユニット１０２０は、多数の暗号化スキームを使用してＤＰアクセラレータの他のモジュール／ユニットに信頼ルートサービスを提供でき、タイムユニット２００３は、暗号化キーの認証用のタイムスタンプを生成して、異なる暗号化スキームをサポートできる。なお、タイムユニット２００３は、スタンドアロンのユニットであってもよく、あるいはセキュリティユニット１０２０と統合されることもできる。
【０１０２】
一実施形態において、セキュリティユニット１０２０は、暗号化キーが認証されたとき、またはセッションキーの期限が切れたときに、追跡するためにセキュアタイムソースを必要とする。セキュリティユニット１０２０のために、外部ソースからのクロック信号を利用することは、安全でない可能性がある。例えば、意図された時間を超えるようにセッションキーを延長するために、外部ソースのクロックのクロック周波数を調整するか、またはクロックの給電手段を変調することができる。
【０１０３】
図２１は、一実施形態に係るタイムユニットの一例を示すブロック図である。図２１を参照すると、タイムユニット２００３は、スタンドアロンクロック生成、およびセキュアクロック信号のためのスタンドアロンの給電手段を備えてもよい。タイムユニット２００３は、クロック生成手段２１０１、ローカルオシレータ２１０３、カウンタ２１０５、給電手段２１０７、クロックキャリブレータ２１０９およびタイムスタンプ生成手段２１１１を含んでもよい。クロック生成手段２１０１は、外部ソースからのクロック信号を導出する必要がなく、クロック信号をローカルに生成することができる。ローカルオシレーター２１０３は、クロック生成手段２１０１に接続されて、正確なパルス信号を提供することができる。例えば、ローカルオシレータ２１０３は、特定の閾値（例えば、マイクロ秒毎に１カウント）よりも大きい精度を備えるパルス信号を提供することができるクリスタルオシレータを含んでもよい。カウンター２１０５は、クロック生成手段２１０１に接続されて、クロック生成手段２１０１から生成されたクロック信号に基づいて、１つまたは複数のカウント値をカウントすることができる。給電手段２１０７は、電力をクロック生成手段２１０１とタイムスタンプ生成手段２１１１に提供することができる。クロックキャリブレータ２１０９は、クロック生成手段２１０１をキャリブレートすることができる。タイムスタンプ生成手段２１１１は、クロック生成手段に接続されて、クロック信号に基づいてタイムスタンプを生成することができる。
【０１０４】
例えば、給電手段２１０７は、ダイムバッテリーのようなバッテリーを使用して安定的で持続的な電力を提供することができる。ここで、ダイムバッテリーは、セキュリティユニット１０２０の外部のボード上に位置することができる。他の一実施形態において、給電手段２１０７の回路は、セキュリティユニット１０２０の外部に配置される。ローカルオシレータ２１０３は、高性能のクリスタルオシレータを含んでもよい。カウンターは、不揮発性記憶装置において１つまたは複数の可変カウンタ（例えば、８ビット、１６ビット、３２ビットまたは６４ビットなどの可変カウンタ）を含んでもよい。不揮発性記憶装置またはメモリは、給電手段が切っても記憶されたデータを保持する能力を備えるタイプのメモリである。揮発性記憶装置とは異なり、不揮発性記憶装置は、メモリデータを定期的にリフレッシュする必要がない。一実施形態において、不揮発性記憶装置は、ローカルオシレータ２１０３の単一信号パルスごとに１ずつ増加することができる第１のカウンタを含むことができる。第１のカウンタは、特定の値までカウントすることができ、その値は、外部ソースまたはクロックキャリブレータ２１０９によって変更され、したがって、その値は、クロック信号のマイクロ秒の信号を示すように調節される。その後、マイクロ秒は、第２のカウンタによって累算されて秒の信号を生成することができる。第３カウンタ、第４カウンターなどは、分、時、日、月の信号などを累算するために使用することができる。その後、クロック生成手段２１０１は、累算された信号に基づいてクロックを生成することができる。クロック信号に基づいて、タイムスタンプ生成手段はタイムスタンプを生成することができる。その後、タイムスタンプは、様々な目的のためにフォーマットされることができる。いくつかの例示的なタイムスタンプフォーマットは、ｙｙｙｙ−ＭＭ−ｄｄ  ＨＨ：ｍｍ：ｓｓ．ＳＳＳ、ｙｙｙｙＭＭｄｄ．ＨＨｍｍｓｓＳＳＳ、およびｙｙｙｙ／ＭＭ／ｄｄ  ＨＨ：ｍｍ：ｓｓであり得る。一実施形態において、コンバータは、タイムスタンプを一つのフォーマットから別のフォーマットに変換することができる。他の一実施形態において、クロックキャリブレータ２１０９は、ＤＰアクセラレータの製造段階で、外部ソース（例えば、原子時計）とマッチングするようにクロック生成信号を初期にキャリブレートする。
【０１０５】
その後、ＤＰアクセラレータのセキュリティユニット１０２０のようなセキュリティユニットは、タイムユニット２００３が需要に応じてタイムスタンプを生成するように請求することができる。その後、タイムスタンプは、セキュリティユニット１０２０によって使用されて、暗号化キーの認証、キー生成および／またはキーの有効期限にタイムスタンプを付けることができる。例えば、セッションキーが生成されるときに関連付けられるタイムスタンプに基づいて有効期限が切れたと確定された場合、セッションキーに関連付けられるチャネルセッションを終了することができる。続いて、セッションキーが自動的に延長されるように構成されるか、または延長認証がユーザアプリケーションを介して取得される場合、新しいセッションキーが生成され得る。
【０１０６】
図２２は、一実施形態によるセキュリティユニットの一例を示すブロック図である。セキュリティユニット１０２０は、ＤＰアクセラレータによって使用されて、コマンドおよびデータを交換するようにホストサーバー／システムとのセキュアチャネルを作成し維持することができる。図２２を参照すると、セキュリティユニット１０２０は、キーマネージャ１０２５、暗号化エンジン１０２９、インドールスメントキー（ＥＫ）２２０９を含んでもよいキー・ストア１０２７、揮発性記憶装置２２０７、不揮発性記憶装置２２０５、プロセッサ２２０３および乱数生成手段２２０１を含んでもよい。乱数生成手段２２０１は、ノンスのような乱数を生成することができる。一実施形態において、乱数生成手段２２０１は、シード入力（例えば、タイムスタンプ）に基づいて乱数を生成することができる。暗号化エンジン１０２９は、暗号化オペレーション（例えば、暗号化と復号化）を行うことができる。不揮発性記憶装置２２０５と揮発性記憶装置２２０７は、セキュリティユニット１０２０の記憶領域であってもよい。キー・ストア１０２７は、ユニークなインドールスメントクレデンシャル（ＥＣ）またはインドールスメントキー（ＥＫ）２２０９を安全に保持できるセキュリティユニット１０２０のキー記憶領域であってもよい。ここで、ＥＣまたはＥＫは、製造時のセキュリティユニット１０２０においてランダムに生成され、内蔵されたパブリック／プライベート暗号化ルートキーペア（例えば、ＰＫ＿ＲＫとＳＫ＿ＲＫ）のパブリックキー（例えば、ＰＫ＿ＲＫ）を意味する。ＥＫに対応するプライベートルートキー（例えば、ＳＫ＿ＲＫ）は、不揮発性記憶装置２２０５においても内蔵されるが、プライベートルートキーは、セキュリティユニット１０２０の外部からリリースされない。例示的なキーペアは２０４８ビットのＲＳＡ暗号化キーペアであってもよい。
【０１０７】
製造／テスト段階において、ＤＰアクセラレータは、内部でテストして構成することができ、ＥＫ２２０９は、セキュリティユニット１０２０に生成され埋め込まれる。一実施形態において、ＥＫ２２０９は、信頼できる認証サーバー上にアップロードすることができ、信頼できる認証サーバーでパブリックキーまたはＥＫはサインされ、ＥＫのサインされた認証書は、ＥＫが本物であるか否かを検証するのに使用することができる。ここで、認証サーバーは、政府承認サーバー、第三者の信頼できる認証サーバー、またはローカルサーバーであってもよい。
【０１０８】
デプロイメント段階において、ＤＰアクセラレータの電源投入後に、ＥＫ２２０９は、セキュリティユニット１０２０から読み出すことができ、ＥＫ２２０９は、ローカルで、または認証サーバーを使用して本物として検証することができる。ＥＫ検証に成功すると、ＤＰアクセラレータは本物であると考えられる。その後、検証されたＥＫとセキュリティユニット１０２０の内部のプライベートルートキーは、上記で説明したチャネルセッションキーまたは一時的なパブリック／プライベートキーペア（例えば、ＰＫ＿ｄとＳＫ＿ｄ）などのその他の暗号化キーを導出するために使用することができる。
【０１０９】
ランタイムカーネルまたはカーネル（またはカーネルオブジェクト）は、ＤＰアクセラレータのオペレーションをサポートするために利用される数学的または計算関数を意味する。カーネルは、ユーザアプリケーションによって呼び出される数学関数であってもよい。いくつかの実施形態において、カーネルは、ＤＰアクセラレータによって実行されるように、ホストサーバーまたは他のサーバーからＤＰアクセラレータにアップロードすることができる。例示的なカーネルは、ＤＰアクセラレータによって実行される行列乗算オペレーションをサポートする行列乗算カーネルであってもよい。ＤＰアクセラレータによって実行される他の数学的または計算関数をサポートするために、それぞれ専用されている数百のカーネルが存在することができることに留意しなければならない。カーネルのソース、ＤＰアクセラレーターにアップロードされたカーネル、および変更されたカーネルを追跡することは、困難な場合がある。したがって、カーネルの確認（または検証）とカーネル認証プロトコルまたはスキームは、カーネルの本物のソースと整合性を確保するために必要である。
【０１１０】
図２３は、一実施形態によるＤＰアクセラレータに通信可能に接続されてカーネルオブジェクトを確認するホストサーバーの一例を示すブロック図である。システム２３００は、図９のシステム９００であってもよい。図２３を参照すると、一実施形態において、ホストサーバー１０４は、ユーザアプリケーション２０３とランタイムライブラリ２０５を含むＴＥＥ２０１を含む。ランタイムライブラリ２０５は、カーネル検証装置モジュール２３０１とカーネル認証書ストア２３０３を含んでもよい。カーネル認証書ストア２３０３は、カーネル識別子によって記載されたカーネル（または単にパブリックキーリスト）の認証書を格納することができ、ここで、前記認証書は、信頼できる認証機関（ＣＡ）またはローカルの信頼できるサーバーによってサインされることができる。カーネル検証装置モジュール２３０１は、カーネル認証書ストア２３０３からのカーネル認証書情報に基づいて、サインされたカーネルオブジェクトを検証することができる。
【０１１１】
ホストサーバー１０４は、永続性記憶装置（例えば、ストレージディスク）２３０５とＤＰアクセラレータ４０５〜４０７に通信可能に接続することができる。永続性記憶装置２３０５は、ホストサーバー１０４の一部またはリモートストレージユニットであることに留意しなければならない。永続性記憶装置２３０５は、カーネルオブジェクト２３０７を含んでもよい。カーネルオブジェクト２３０７は、リモートソースに由来してもよいので、カーネルオブジェクトにサインされているのは、オブジェクトが信頼できるソースからのものであることを保証する。カーネルオブジェクトは、カーネルのバイナリファイルを含むオブジェクトを意味することができる。一実施形態において、カーネルオブジェクト２３０７の各カーネルオブジェクトは、カーネルの実行可能なイメージと対応するサインを含む。また、カーネルの実行可能なイメージは、暗号化され得る。サインは、カーネルオブジェクトに対応するパブリックキー／プライベートカーネルキーペアのプライベートキーを使用してサインされたカーネルのハッシュである。前記サインは、カーネルにサインするために使用されたプライベートキーに対応するパブリックキーを利用して検証することができる。例えば、パブリックキーは、カーネルオブジェクトのためのカーネル認証書から取得することができる。いくつかの実施形態において、カーネル開発者が最初にカーネルを作成するときに、カーネルオブジェクトは（カーネル開発者のプライベートキーを用いて）サインされる。その後、サインされたカーネルは、カーネルが本物であるか否かを保証するために検証（または［確認］）のための対応するカーネル認証書（例えば、パブリックキー）を含むことができる。
【０１１２】
図２４は、一実施形態による例示的なカーネルオブジェクトの検証プロトコルを示すフローチャートである。カーネルオブジェクトの検証は、カーネルオブジェクト２３０７がホストサーバー１０４および／またはＤＰアクセラレータ４０５のＴＥＥ（２０１）に導入される前に、カーネルオブジェクト２３０７が本物であることに対する確認を意味する。例示２４００は、図２３のシステム２３００によって実行されることができる。一実施形態において、検証前に、ユーザアプリケーション２０３（またはランタイムライブラリ２０５）は、信頼できる認証機関または信頼できるサイン者の認証書からパブリックキー（例えば、ＰＫ＿ｉ、ＰＫ＿ｊ、．．．ＰＫ＿ｎ）リストを取得し、ここで、対応するプライベートキー（例えば、ＳＫ＿ｉ、ＳＫ＿ｊ、．．．ＳＫ＿ｎ）は、カーネルオブジェクト２３０７にサインするのに使用されたカーネルの開発者のプライベートキーである。一実施形態において、ユーザアプリケーション２０３（またはランタイムライブラリ２０５）がＤＰアクセラレータ４０５（または、他のあらゆるＤＰアクセラレータ）によって実行されるカーネル（カーネル識別子によって識別されたカーネル）を呼び出す場合、ユーザアプリケーション２０３（または、ランタイムライブラリ２０５）は、カーネルがＤＰアクセラレータ４０５にアップデートされたか否かを判定する。そうでなければ、一実施形態によると、ホストサーバー１０４は、オペレーション２４００を実行して、カーネルをＤＰアクセラレータ４０５にアップロードする前に、カーネルを検証する。なお、１つのカーネルを呼び出すと他のカーネルが呼び出される場合、ランタイムライブラリ２０５は、一連のカーネルを呼び出すことができる。
【０１１３】
オペレーション２４０１において、ＴＥＥ２０１の一部であるユーザアプリケーション２０３（または、ランタイムライブラリ２０５）は、カーネル識別子（ＩＤ）に基づいて、カーネルオブジェクト２３０７の一部であるカーネルに、ＯＳ２１１にロードされるように請求する。一実施形態において、カーネルＩＤは、グローバル一意識別子（例えば、ＧＵＩＤまたはＵＵＩＤ）であることができる。一実施形態において、カーネルオブジェクトは、カーネル（例えば、実行可能なイメージ）、カーネルＩＤおよびカーネルに対するサインを含む。サインは、カーネルの暗号化されたハッシュであってもよい。他の一実施形態において、カーネルオブジェクトは、暗号化されたカーネル（例えば、暗号化された実行可能なイメージ）を含む。オペレーション２４０２において、ＯＳ２１１は、カーネルＩＤによって、永続性記憶装置２３０５からカーネルオブジェクトを検索する。オペレーション２４０３において、ＯＳ２１１は、カーネルオブジェクトをホストサーバー１０４のＴＥＥ２０１に返す。オペレーション２４０４において、カーネル検証装置モジュール２３０１は、カーネルＩＤに対応するカーネル認証書ストア２３０３からカーネル認証書を検索し、カーネルオブジェクトが本物であるか否かを検証する。一実施形態において、カーネルを検証することは、カーネルオブジェクトのサインにパブリックキーを適用してサインを解読して、所望のハッシュ値を生成することを含む。その後、カーネル検証装置モジュール２３０１は、カーネルのハッシュ値を生成し、所望のハッシュ値と生成されたハッシュ値を比較して、所望のハッシュ値と生成されたハッシュ値との差を確定する。違いがない場合、サインは有効である。サインが利用できる場合、カーネルの整合性が検証され、カーネルオブジェクトは本物で、信頼できる開発者によって取得されると見なされる。他の一実施形態において、カーネルが暗号化される場合、カーネルを検証することは、パブリックキーをカーネルの暗号化された実行可能なイメージに適用して、カーネルを解読して取得することを含む。
【０１１４】
オペレーション２４０５において、カーネル（例えば、実行可能なイメージ）が信頼されるものであると確認される場合、オペレーション２４０６において、カーネルオブジェクトは、ホストサーバー１０４のＴＥＥ２０１によってＤＰアクセラレータ４０５に送信される。その後、呼び出されたカーネルは、ＤＰアクセラレータ４０５の１つまたは複数の実行ユニットによって実行される。
【０１１５】
図２５は、一実施形態による方法の一例を示すフローチャートである。プロセス２５００は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行される。例えば、プロセス２５００は、図２３のホスト１０４のようなホストシステムによって実行される。図２５を参照すると、ブロック２５０１において、処理ロジックは、ホストシステムの信頼できる実行環境（ＴＥＥ）内で実行されるランタイムライブラリにおいて、予め定義されたオペレーションを実行するための所定の機能を呼び出す請求をアプリケーションから受信する。ブロック２５０２において、前記請求に応じて、処理ロジックは、所定の機能に関連付けられるカーネルオブジェクトを識別する。ブロック２５０３において、処理ロジックは、カーネルオブジェクトの実行可能なイメージにサインされるのに使用されたプライベートキーに対応するパブリックキーを利用して、カーネルオブジェクトの実行可能なイメージを検証する。ブロック２５０４において、カーネルオブジェクトの実行可能なイメージの検証に成功したことに応じて、処理ロジックは、ＤＰアクセラレータによって実行されるようにバスを介してカーネルオブジェクトの検証された実行可能なイメージをデータ処理（ＤＰ）アクセラレータに送信して、予め定義されたオペレーションを実行する。
【０１１６】
一実施形態において、ランタイムライブラリは、プライベートキーに対応するパブリックキーを利用して、カーネルオブジェクトのサインを解読することにより、カーネルオブジェクトを検証するように構成される。ここで、カーネルオブジェクトは、暗号化されていない形式でＤＰアクセラレータに送信される。他の一実施形態において、処理ロジックはさらに、所定のハッシュ関数を利用して、カーネルオブジェクトの実行可能なイメージをハッシュすることにより、カーネルオブジェクトの整合性を検証する。
【０１１７】
一実施形態において、カーネルオブジェクトは、永続性記憶装置の非安全な場所に記憶される。他の一実施形態において、カーネルオブジェクトは、永続性記憶装置に記憶された多くのカーネルオブジェクトのうちの一つであり、ここで、前記ランタイムライブラリは、カーネルオブジェクトにそれぞれ関連付けられるパブリックキーのリストを維持し、パブリックキーは、カーネルオブジェクトを検証するのに使用される。
【０１１８】
一実施形態において、ＤＰアクセラレータは、アプリケーションを代表して分散方式でカーネルオブジェクトの実行可能なイメージを実行するように構成された１つまたは複数の実行ユニットを含む。一実施形態において、パブリックキーは、信頼できるサーバーから取得され、パブリックキーは、カーネルオブジェクトのプロバイダによって提供され、ここで、前記カーネルオブジェクトはプロバイダがプライベートキーを使用してサインしたサインを含む。
【０１１９】
図２６は、一実施形態によるカーネル認証のためにＤＰアクセラレータに通信可能に接続されているホストサーバーの一例を示すブロック図である。カーネル認証は、ＤＰアクセラレータにアップロードされたカーネルの整合性を検証することを含み、カーネルが転送中にいくつかの第三者によって変更されないことを確保する。カーネルの整合性は、カーネルのサインを検証することにより検証することができる。システム２６００は、図９のシステム９００であってもよい。図２６を参照すると、一実施形態において、ホストサーバー１０４は、ユーザアプリケーション２０３、ランタイムライブラリ２０５、認証モジュール２６０１およびカーネルダイジェストストア２６０３を含むＴＥＥ２０１を含む。カーネルダイジェストストア２６０３は、他のＤＰアクセラレータにアップロードされたカーネルに対応する複数のカーネルダイジェストを記憶することができる。一実施形態において、カーネルダイジェストは、カーネルの非暗号化ハッシュまたはカーネルの任意のタイプの関数（例えば、チェックサム、ＣＲＣなど）を意味する。カーネルダイジェストストア２６０３は、カーネルダイジェストのためにカーネルＩＤのマッピングとＤＰアクセラレータＩＤのマッピングをさらに記憶することができる。前記マッピングは、いくつかのカーネルがどのＤＰアクセラレータにアップロードされているかを識別することができる。カーネルダイジェストストア２６０３からのカーネルダイジェスト情報に基づいて、認証モジュール２６０１は、カーネルダイジェストストア２６０３からのカーネルダイジェスト情報に基づいて、カーネルを認証することができる。
【０１２０】
図２６を参照すると、ＤＰアクセラレータ４０５は、セキュリティユニット１０２０、認証ユニット２６０５、実行ユニット２６０７および記憶装置２６０９を含んでもよい。記憶装置２６０９は、カーネルオブジェクト２６１１を含んでもよい。認証ユニット２６０５は、認証プロトコルを介して認証モジュールと通信することができる。記憶装置２６０９は、カーネルオブジェクト２６１１を格納する１つまたは複数の記憶装置であってもよい。カーネルオブジェクト２６１１は、ＤＰアクセラレータ４０５に予めアップロードされた１つまたは複数のカーネル（及び、対応するカーネルＩＤ）を含んでもよい。実行ユニット２６０７は、カーネルオブジェクト２６１１から１つまたは複数の呼び出されたカーネルを実行することができる。
【０１２１】
一実施形態において、ユーザアプリケーション２０３（または、ランタイムライブラリ２０５）は、カーネルダイジェストを生成することにより、カーネルオブジェクトがＤＰアクセラレータ４０５上にすでにアップデートされているか否かを判定して、生成されたカーネルダイジェストがカーネルダイジェストストア２６０３からのカーネルダイジェスト情報の中から見つけられるか否かをクエリーして、カーネルがＤＰアクセラレータ上に存在しているか否かを判定することができる。選択的に、カーネルＩＤをクエリーして、カーネルがＤＰアクセラレータ上に存在しているか否かを判定することができる。見つけられると、認証を開始し、そうでなければ、ユーザアプリケーション２０３（または、ランタイムライブラリ２０５）は、上述したように、カーネルオブジェクトを検証し、カーネルダイジェストがカーネルダイジェストストア２６０３に記憶されるように、カーネルのカーネルダイジェストを生成する。その後、ユーザアプリケーション２０３（または、ランタイムライブラリ２０５）は、カーネルのバイナリファイルのコピーをＤＰアクセラレータ上にアップロードする。後続の実行セッションにおいて、カーネルは、カーネルの呼び出しに応じて、ユーザアプリケーション（またはランタイムライブラリ）によって認証される。
【０１２２】
図２７は、一実施形態による例示的な認証プロトコルを示すフローチャートである。一実施形態において、例示２７００は、図２６のホストサーバー１０４の認証モジュール２６１とＤＰアクセラレータ４０５の認証ユニット２６０５との間で行われる。図２７を参照すると、オペレーション２７０１において、ホストサーバー１０４は、ＤＰアクセラレータ４０５から認証キーを請求する。オペレーション２７０２において、前記請求に応じて、ＤＰアクセラレータ４０５は、パブリック／プライベート認証キーペア（例えば、ＰＫ＿ＡＴＴとＳＫ＿ＡＴＴ）を生成し、ＤＰアクセラレータ４０５に関連付けられるプライベートルートキー（例えば、ＳＫ＿ＲＫ）を利用して、ＰＫ＿ＡＴＴにサインする。
【０１２３】
オペレーション２７０３において、ＤＰアクセラレータ４０５は、ＰＫ＿ＡＴＴとサインされたＰＫ＿ＡＴＴを備えるメッセージをホストサーバー１０４に返す。オペレーション２７０４において、ホストサーバー１０４は、メッセージを受信し、ＤＰアクセラレータ４０５に関連付けられるパブリックルートキー（例えば、ＰＫ＿ＲＫ）を利用して、サインされたＰＫ＿ＡＴＴを解読し、受信されたＰＫ＿ＡＴＴと解読されたＰＫ＿ＡＴＴを比較して、サインされたＰＫ＿ＡＴＴを検証する。一実施形態において、ホストシステムは、ネットワークを介してＤＰアクセラレータから、または信頼できるサーバーからＤＰアクセラレータに関連付けられるＰＫ＿ＲＫを予め受信する。受信されたＰＫ＿ＡＴＴが解読されたＰＫ＿ＡＴＴとマッチングする場合、ホストサーバー１０４は、ＰＫ＿ＡＴＴが実際にＤＰアクセラレータ４０５によって生成されたことを検証した。なお、オペレーション２７０１〜２７０４は、オペレーション２７０５前の任意の時間に、認証のために実行されることができる。つまり、同じ認証キーは、予定期間（例えば、一週間）の間に使用することができ、認証キーは、いずれの認証されたカーネルと関連されず、例えば、認証キーは、多くのカーネルに使用されることができる。
【０１２４】
オペレーション２７０５において、ホストサーバー１０４は、引用符を請求するためのコマンド「ＣＭＤ＿認証＿実行（ＣＭＤ＿ＤＯ＿ＡＴＴＥＳＴＡＴＩＯＮ）」をカーネルのカーネルＩＤと共にＤＰアクセラレータ４０５に送信する。オペレーション２７０６において、前記コマンドの請求を受信したことに応じて、ＤＰアクセラレータ４０５は、カーネルのカーネル整合性を測定する。一実施形態において、カーネルの実行可能なイメージは、（カーネルオブジェクト２６１１の一部として）ハッシュされ、カーネルダイジェストを生成する。その後、カーネルダイジェストは、タイムスタンプと一緒にＳＫ＿ＡＴＴを利用してサインされる。ここで、タイムスタンプは、図２０のタイムユニット２００３のようなタイムユニットによって生成される。
【０１２５】
オペレーション２７０７において、ＤＰアクセラレータ４０５は、サインされたカーネルのダイジェストを備えるメッセージをタイムスタンプと一緒にホストサーバー１０４に送信する。オペレーション２７０８において、メッセージを受信したことに応じて、ホストサーバー１０４は、ＰＫ＿ＡＴＴを利用して、サインされたカーネルダイジェストをタイムスタンプと一緒に解読する。その後、ホストサーバー１０４は、タイムスタンプをチェックして、メッセージが所定の期間（例えば、一日）よりも多くの期間を経過していないか否かを検証する。その後、ホストサーバー１０４は、カーネルダイジェストがＤＰアクセラレータに予めアップロードされたカーネルに属するか否かを検証する。一実施形態において、ホストサーバー１０４は、カーネルダイジェストストア２６０３からのカーネルダイジェスト情報から受信されたカーネルダイジェストをクエリーする。ＤＰアクセラレータ４０５のＤＰアクセラレータＩＤとマッチングするエントリが見つけられた場合、カーネル認証は成功した。そうでなければ、認証は失敗した。オペレーション２７０９において、ホストサーバー１０４は、認証または検証の結果をＤＰアクセラレータ４０５に送信することができる。前記結果に基づいて、カーネルは、ＤＰアクセラレータ４０５の実行ユニットによって実行されることを許可または拒否する。
【０１２６】
図２８Ａ及び図２８Ｂは、いくつかの実施形態による例示的な方法を示すフローチャートである。プロセス２８００とプロセス２８２０は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行されることができる。例えば、プロセス２８００は、ホストサーバー１０４によって実行され得、プロセス２８２０は、図２６のＤＰアクセラレータ４０５によって実行され得る。図２８Ａを参照すると、ブロック２８０１において、処理ロジックは、ホストシステムにおいて、バスを介してデータ処理（ＤＰ）アクセラレータからパブリック認証キー（ＰＫ＿ＡＴＴ）またはサインされたＰＫ＿ＡＴＴを受信する。ブロック２８０２において、処理ロジックは、ＤＰアクセラレータに関連付けられるパブリックルートキー（ＰＫ＿ＲＫ）を利用してＰＫ＿ＡＴＴを検証する。ブロック２８０３において、ＰＫ＿ＡＴＴの検証に成功したことに応じて、処理ロジックは、カーネル識別子（ＩＤ）をＤＰアクセラレータに送信して、ＤＰアクセラレータに記憶されたカーネルオブジェクトの認証を請求する。ブロック２８０４において、ＤＰアクセラレータからカーネルオブジェクトに対応するカーネルダイジェストまたはサインされたカーネルのダイジェストが受信されたことに応じて、処理ロジックは、ＰＫ＿ＡＴＴを利用して、カーネルのダイジェストを検証する。ブロック２８０５において、処理ロジックは、ＤＰアクセラレータが前記検証結果に基づいてカーネルオブジェクトにアクセスするように、前記検証結果をＤＰアクセラレータに送信する。
【０１２７】
一実施形態において、処理ロジックはさらに、認証に対する請求をＤＰアクセラレータに送信し、ここで、ＤＰアクセラレータは、認証に対する請求に応じてＰＫ＿ＡＴＴとプライベート認証キー（ＳＫ＿ＡＴＴ）を具備する認証キーペアを生成する。その後、処理ロジックは、ＤＰアクセラレータからＤＰアクセラレータのプライベートルートキー（ＳＫ＿ＲＫ）を利用してサインされた暗号化ＰＫ＿ＡＴＴを受信する。他の一実施形態において、処理ロジックはさらに、ホストシステムにおいてＤＰアクセラレータに関連付けられるパブリックルートキー（ＰＫ＿ＲＫ）を利用して暗号化ＰＫ＿ＡＴＴを解読し、ＤＰアクセラレータから受信されたＰＫ＿ＡＴＴが、解読されたＰＫ＿ＡＴＴと同じか否かを検証する。一実施形態において、ＤＰアクセラレータに関連付けられるパブリックルートキー（ＰＫ＿ＲＫ）は、ネットワークを介して信頼できるサーバーに由来するホストサーバー１０４によって受信することができる。
【０１２８】
一実施形態において、カーネルダイジェストは、ＤＰアクセラレータによってカーネルオブジェクトの実行可能なイメージをハッシュすることで生成される。他の一実施形態において、カーネルダイジェストは、ＰＫ＿ＡＴＴに対応するプライベート認証キー（ＳＫ＿ＡＴＴ）を利用してサインされる。他の一実施形態において、カーネルダイジェストは、ある時点で生成されたタイムスタンプと一緒にサインされ、ここで、前記タイムスタンプは、ホストシステムによって使用されて、カーネルダイジェストが所定の期間内に生成されたか否かを検証する。一実施形態において、ホストシステムは、ネットワークを介して所定の信頼できるサーバーからＤＰアクセラレータに関連付けられるＰＫ＿ＲＫを受信する。
【０１２９】
図２８Ｂを参照すると、ブロック２８２１において、ホストシステムから受信された認証請求に応じて、処理ロジックは、データ処理（ＤＰ）アクセラレータでパブリック認証キー（ＰＫ＿ＡＴＴ）とプライベート認証キー（ＳＫ＿ＡＴＴ）を具備する認証キーペアを生成する。ブロック２８２２において、処理ロジックは、ＰＫ＿ＡＴＴまたはサインされたＰＫ＿ＡＴＴをＤＰアクセラレータからホストシステムに送信し、ここで、ＤＰアクセラレータは、バスを介してホストシステムに接続される。ブロック２８２３において、処理ロジックは、ホストシステムからカーネルオブジェクトを識別するためのカーネル識別子（ＩＤ）を受信し、ここで、カーネルＩＤはＰＫ＿ＡＴＴの検証に成功したことに応じて受信される。ブロック２８２４において、処理ロジックは、カーネルＩＤに応じて、カーネルオブジェクトの実行可能なイメージをハッシュすることにより、カーネルダイジェストを生成する。ブロック２８２５において、処理ロジックは、カーネルダイジェストまたはサインされたカーネルダイジェストをホストシステムに送信して、ホストシステムがＤＰアクセラレータ内で実行されるカーネルオブジェクトにアクセスする前に、カーネルオブジェクトを検証、認証することを許可する。
【０１３０】
一実施形態において、処理ロジックはさらに、ＤＰアクセラレータに関連付けられるプライベートルートキー（ＳＫ＿ＲＫ）を利用して、ＰＫ＿ＡＴＴにサインして、サインされたＰＫ＿ＡＴＴをホストシステムに送信して、ホストシステムにＰＫ＿ＡＴＴがＤＰアクセラレータに由来するか否かを検証させる。他の一実施形態において、ホストシステムは、ＳＫ＿ＲＫに対応するパブリックルートキー（ＰＫ＿ＲＫ）を利用して、サインされたＰＫ＿ＡＴＴを解読し、ＤＰアクセラレータから受信されたＰＫ＿ＡＴＴと解読されたＰＫ＿ＡＴＴを比較することにより、ＰＫ＿ＡＴＴを検証するように構成される。
【０１３１】
一実施形態において、処理ロジックはさらに、ＳＫ＿ＡＴＴを利用して、カーネルダイジェストにサインし、サインされたカーネルダイジェストをホストシステムに送信して、ホストシステムにカーネルダイジェストがＤＰアクセラレータによって送信されたか否かを検証するように許可する。他の一実施形態において、ホストシステムは、ＰＫ＿ＡＴＴを利用して、サインされたカーネルダイジェストを解読し、ＤＰアクセラレータから受信されたカーネルダイジェストと解読されたカーネルダイジェストを比較することにより、カーネルダイジェストを検証するように構成される。他の一実施形態において、処理ロジックはさらに、タイムスタンプを作成し、タイムスタンプと一緒にカーネルダイジェストにサインし、ここで、タイムスタンプは、ホストシステムによって使用されてカーネルダイジェストの鮮度を検証する。
【０１３２】
ホストサーバーに通信可能に接続されるＤＰアクセラレータはさらに、ホストサーバーによって予想されるＤＰアクセラレータであることを認証することができる。保証は、第三者の信頼できるサーバーおよび／または認証機関を介して達成することができる。
【０１３３】
図２９は、一実施形態によるＤＰアクセラレータおよび信頼できるサーバーに通信可能に接続されているホストサーバーの一例を示すブロック図である。ＤＰアクセラレータの確認（ｖａｌｉｄａｔｉｏｎ）は、信頼できるサーバーからのＤＰアクセラレータの認証書を検証することを意味する。信頼できるサーバーは、第三者認証機関またはローカルサーバーであってもよい。システム２９００は、図９のシステム９００であってもよい。図２９を参照すると、一実施形態において、ホストサーバー１０４は、キー検証モジュール２９０１とＰＫ＿ＲＫ（ｓ）２９０３を含むＴＥＥ２０１を含む。ＰＫ＿ＲＫ（ｓ）２９０３は、ＤＰアクセラレータに関連付けられるパブリックキーを記憶することができる。キー検証モジュール２９０１は、信頼できるサーバー２９２１のような信頼できるサーバーを介してＤＰアクセラレータのためのパブリックキーを検証することができる。信頼できるサーバー２９２１は、ＤＰアクセラレータ認証書２９２３を含んでもよい。
【０１３４】
図２９を参照すると、ＤＰアクセラレータは、キー検証ユニット２９０５と記憶装置２９１３を含むセキュリティユニット１０２０を含んでもよい。記憶装置２９１３は、ＳＫ＿ＲＫ２９０７、アクセラレータＩＤ（例えば、シリアル番号、および／またはＵＵＩＤ）２９０９およびバージョン番号２９１１を含んでもよい。バージョン番号は、ＤＰアクセラレータ４０５のファームウェアのバージョンを示すことができ、バージョン番号は、ＤＰアクセラレータ４０５のファームウェアのバージョンに応じてアップデートされることができる。キー検証ユニット２９０５は、ホストサーバー１０４のキー検証モジュール２９０１のようなキー検証モジュールと通信してＤＰアクセラレータ（例えば、アクセラレータＩＤ２９０９、および／またはバージョン番号２９１１）に関する情報をホストサーバー１０４に提供することができる。
【０１３５】
予備事項として、一実施形態において、ホストサーバー１０４は、ＤＰアクセラレータ４０５に関連付けられるＰＫ＿ＲＫのコピーを備えることができる。しかし、ＤＰアクセラレータ４０５が最初にホストサーバー１０４に導入されるか、またはＤＰアクセラレータ４０５が再導入される場合、ＤＰアクセラレータ４０５のＰＫ＿ＲＫは、ホストサーバー１０４に対して確認されるか、または再確認される必要がある可能性がある。
【０１３６】
図３０は、一実施形態による例示的なＤＰアクセラレータ確認プロトコルを示すフローチャートである。プロトコル３０００は、ＤＰアクセラレータ４０５のＰＫ＿ＲＫを確認する例示的な実施例であってもよい。図２９〜図３０を参照すると、プロトコル３０００は、ホストサーバー１０４のキー検証モジュール２９０１とＤＰアクセラレータ４０５のキー検証ユニット２９０５との間で行われる。
【０１３７】
図３０を参照すると、オペレーション３００１において、ホストサーバー１０４は、アクセラレータ４０５からアクセラレータＩＤを請求する。オペレーション３００２において、前記請求に応じて、ＤＰアクセラレータ４０５は、アクセラレータＩＤ２９０９（例えば、ＤＰアクセラレータのシリアル番号またはＵＵＩＤ）をホストサーバー１０４に返す。オペレーション３００３において、ホストサーバー１０４は、受信されたアクセラレータＩＤを信頼できるサーバー２９２１に送信する。ここで、信頼できるサーバー２９２１は、ＤＰアクセラレータ４０５に関する認証書情報を有する認証機関、第三者の信頼できるサーバーまたはローカルの信頼できるサーバーであってもよい。オペレーション３００４において、前記請求に応じて、信頼できるサーバー２９２１は、ＤＰアクセラレータ４０５のアクセラレータＩＤに関連付けられる認証書をホストサーバー１０４に送信する。
【０１３８】
オペレーション３００５において、ホストサーバー１０４は、アクセラレータＩＤに関連付けられる認証書から認証書情報（例えば、パブリックキーＰＫ＿ＲＫ）を抽出し、認証書情報をアクセラレータＩＤと一緒にローカル記憶装置（例えば、ＰＫ＿ＲＫ（ｓ）２９０３）に記憶する。一実施形態において、抽出されたＰＫ＿ＲＫは、ＤＰアクセラレータ４０５のために事前に取得されたかもしれないＤＰアクセラレータ４０５のための既存のＰＫ＿ＲＫ（例えば、ＰＫ＿ＲＫ（ｓ）２９０３の一部である既存のＰＫ＿ＲＫ）に対して検証され得る。選択的に、認証書情報は、信頼できるサーバー２９２１の認証書チェーンを検証することにより、検証されることができる。認証書チェーンは、送信者と信頼されたサーバー（認証機関など）が信頼できることを受信者が確認できるようにする認証書の順序付きリストである。オペレーション３００６において、検証および／または認証書情報（例えば、ＰＫ＿ＲＫ）に基づいて、ホストサーバー１０４は、ＤＰアクセラレータ４０５との作成される安全な接続（例えば、１つまたは複数のセキュアチャネル）を請求する。
【０１３９】
なお、その後、ホストサーバー１０４は、ＰＫ＿ＲＫを利用して、ＤＰアクセラレータ４０５によって送信されたセキュアメッセージを解読することができ、ここで、セキュアメッセージはＳＫ＿ＲＫによって暗号化される。これらのメッセージは、上述したように、認証キーペア（例えば、ＰＫ＿ＡＴＴとＳＫ＿ＡＴＴ）に関連付けられる検証メッセージを含むことができ、パブリック認証キーのサインを検証し、ＤＰアクセラレータに記憶されたカーネルオブジェクトを認証することができる。このメッセージは、上述したように、一時的なパブリック／プライベートキーペア（例えば、ＰＫ＿ｄ、ＳＫ＿ｄ）のための検証メッセージと、ＤＰアクセラレータ４０５のセッションキーをさらに含んでもよい。いくつかの実施形態において、ランダムに生成された数字は、図２９のバージョン番号２９１１と一緒に認証キーペアと一時的なパブリック／プライベートキーペアを生成するのに使用することができる。この場合、バージョン番号２９１１がアップデートされると（例えば、ファームウェアのアップグレードによってアップデートされる場合）、セッションのための認証キーペアと一時的なパブリック／プライベートキーペアは、期限切れになる。
【０１４０】
ＤＰアクセラレータはさらに、アクセラレータのバージョン番号（図２９のバージョン番号２９１１）、および／または乱数生成手段によって生成された乱数に基づいて、パブリック／プライベート認証キーペア（例えば、ＰＫ＿ＡＴＴとＳＫ＿ＡＴＴ）を生成することができる。同様に、一時的なパブリック／プライベートキーペア（例えば、ＰＫ＿ｄ及び、ホストシステムとＤＰアクセラレータとの間の通信セッションに関連付けられるセッションキーを作成するのに利用されるＳＫ＿ｄ）はさらに、アクセラレータのバージョン番号（図２９のバージョン番号２９１１）および／または乱数生成手段によって生成された乱数に基づいて生成されることができる。
【０１４１】
図３１は、一実施形態による方法の一例を示すフローチャートである。プロセス３１００は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行されることができる。例えば、プロセス３１００は、図２９のホスト１０４のようなホストシステムによって実行されることができる。図３１を参照すると、ブロック３１０１において、処理ロジックは、ホストシステムにおいて、ＤＰアクセラレータからＤＰアクセラレータを一意に識別するためのアクセラレータＩＤを受信し、ここで、ホストシステムは、バスを介してＤＰアクセラレータに接続される。ブロック３１０２において、処理ロジックは、ネットワークを介してアクセラレータＩＤを所定の信頼できるサーバーに送信する。ブロック３１０３において、処理ロジックは、ネットワークを介して所定の信頼できるサーバーから認証書を受信し、ここで、認証書は、ＤＰアクセラレータに関連付けられるパブリックキー（ＰＫ＿ＲＫ）を含む。ブロック３１０４において、選択的に、一実施形態において、処理ロジックは、（例えば、信頼できるサーバーの認証書チェーンを検証することにより、）認証書が所定の信頼できるサーバーに関連付けられるか否かを検証する。ブロック３１０５において、処理ロジックは、認証書からパブリックルートキー（ＰＫ＿ＲＫ）を抽出し、ＤＰアクセラレータにより送信されたＰＫ＿ＲＫを利用して、抽出されたＰＫ＿ＲＫを検証して、ＤＰアクセラレータが本当に主張されたＤＰアクセラレータであることを認証する。ブロック３１０６において、処理ロジックは、検証に基づいてＰＫ＿ＲＫを利用して、ＤＰアクセラレータとのセキュアチャネルを作成し、ホストシステムとＤＰアクセラレータの間でデータを安全に交換する。
【０１４２】
一実施形態において、ＤＰアクセラレータは、ホストシステム内でホストされたアプリケーションを代表してデータ処理オペレーションを実行するように動作することができる１つまたは複数の実行ユニットを含む。一実施形態において、所定の信頼できるサーバーは、アプリケーションのプロバイダに関連付けられる。一実施形態において、所定の信頼できるサーバーは、ＤＰアクセラレータのプロバイダに関連付けられる。一実施形態において、ＰＫ＿ＲＫはさらに、ＤＰアクセラレータに対して生成されたサインを検証するのに利用される。
【０１４３】
他の一実施形態において、ＰＫ＿ＲＫは、ホストシステムによって使用されて、ホストシステムとＤＰアクセラレータとの間の通信セッションに関連付けられたセッションキーを作成する。他の一実施形態において、ＰＫ＿ＲＫは、ホストシステムによって使用され、パブリック認証キーのサインを検証し、ＤＰアクセラレータに記憶されたカーネルオブジェクトを認証する。
【０１４４】
なお、以上に例示及び説明された構成要素の一部又は全ては、ソフトウェア、ハードウェア、又はそれらの組み合わせで実現されることができる。例えば、このような構成要素は、永続性記憶装置にインストールされるとともに格納されるソフトウェアとして実現されてもよく、前記ソフトウェアは、本開示にわたって記載されたプロセス又はオペレーションを実施するように、プロセッサ（図示せず）によってメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路（例えば、特定用途向け集積回路又はＡＳＩＣ）、デジタルシグナルプロセッサ（ＤＳＰ）、又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のような専用ハードウェアにプログラミングされたか又は埋め込まれた実行可能なコードとして実現されてもよく、前記実行可能なコードはアプリケーションからの対応するドライバ及び／又はオペレーティングシステムを介してアクセスすることができる。更に、このような構成要素は、ソフトウェアコンポーネントが１つ又は複数の特定の命令によってアクセス可能な命令セットの一部として、プロセッサ又はプロセッサコアにおける特定のハードウェアロジックとして実現されることができる。
【０１４５】
図３２は、本開示の一実施形態と組み合わせて使用可能なデータ処理システムの一例を示すブロック図である。例えば、システム１５００は、上記の任意のプロセスまたは方法を実行する上記のいずれのデータ処理システムを表すことができる。例えば、上記のようなクライアントデバイスまたはサーバー、および例えば、クライアント１０１〜１０２、およびサーバー１０４などが挙げられる。
【０１４６】
システム１５００は、いくつかの異なる構成要素を備えていてもよい。これらの構成要素は、集積回路（ＩＣ）、集積回路の一部、ディスクリート型電子デバイス、又は回路基板（例えば、コンピュータシステムのマザーボード又はアドインカード）に適するその他のモジュールとして実現されることができ、又は、他の形態でコンピュータシステムのシャーシ内に組み込まれた構成要素として実現されることができる。
【０１４７】
なお、システム１５００は、コンピュータシステムのいくつかの構成要素の高レベルビューを示すことを意図している。しかしながら、いくつかの実施形態において付加的構成要素が存在してもよく、また、その他の実施形態において示された構成要素を異なる構成にすることが可能であることを理解されたい。システム１５００は、デスクトップコンピュータ、ノードパソコン、タブレットコンピュータ、サーバー、モバイルフォン、メディアプレーヤ、パーソナルデジタルアシスタント（ＰＤＡ）、スマート腕時計、パーソナル通信機、ゲーミングデバイス、ネットワークルータ又はハブ、ワイヤレスアクセスポイント（ＡＰ）又はリピータ、セットトップボックス或いはそれらの組み合わせを示すことができる。また、単一の機械又はシステムのみが示されたが、「マシン」又は「システム」という用語は、本明細書で説明されるいずれか１つ又は複数の方法を実行するための、１つ（又は複数）の命令セットを単独で又は共同で実行する機械又はシステムの任意の組み合わせも含まれることを理解されたい。
【０１４８】
一実施形態において、システム１５００は、バス又はインターコネクト１５１０を介して接続される、プロセッサ１５０１と、メモリ１５０３と、デバイス１５０５〜１５０８とを含む。プロセッサ１５０１は、単一のプロセッサコア又は複数のプロセッサコアが含まれる単一のプロセッサ又は複数のプロセッサを表すことが可能である。プロセッサ１５０１は、マイクロプロセッサ、中央処理装置（ＣＰＵ）などのような、１つ又は複数の汎用プロセッサを表すことができる。より具体的には、プロセッサ１５０１は、複雑命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、又はその他の命令セットを実行するプロセッサ、又は命令セットの組み合わせを実行するプロセッサであってもよい。プロセッサ１５０１は更に１つ又は複数の専用プロセッサであってもよい。例えば、特定用途向け集積回路（ＡＳＩＣ）、セルラー若しくはベースバンドプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、ネットワークプロセッサ、グラフィックプロセッサ、ネットワークプロセッサ、通信プロセッサ、暗号化プロセッサ、コプロセッサ、組込みプロセッサ、又は命令を処理可能な任意の他の種類のロジックが挙げられる。
【０１４９】
プロセッサ１５０１は、超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよく、前記システムの様々な構成要素と通信するための主処理ユニット及び中央ハブとして機能することができる。このようなプロセッサは、システムオンチップ（ＳｏＣ）として実装されてもよい。プロセッサ１５０１は、本明細書で説明されるオペレーション及びステップを実行するための命令を実行するように構成される。システム１５００は、更に任意選択グラフィックサブシステム１５０４と通信するグラフィックインターフェースを含むことができ、グラフィックサブシステム１５０４は、表示コントローラ、グラフィックプロセッサ及び／又は表示装置を含んでいてもよい。
【０１５０】
プロセッサ１５０１は、メモリ１５０３と通信することができ、一実施形態において、メモリ１５０３は、所定量のシステムメモリを提供するための複数のメモリデバイスによって実現されることができる。メモリ１５０３は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、又はその他のタイプの記憶装置のような、１つ又は複数の揮発性記憶（又はメモリ）装置を含むことができる。メモリ１５０３は、プロセッサ１５０１又はその他の任意のデバイスにより実行される命令シーケンスを含む情報を格納することができる。例えば、様々なオペレーティングシステム、デバイスドライバ、ファームウェア（例えば、ベーシックインプット／アウトプットシステム又はＢＩＯＳ）、及び／又はアプリケーションの実行可能なコード及び／又はデータは、メモリ１５０３にロードされ、プロセッサ１５０１により実行されることができる。オペレーティングシステムは、例えば、Ｍｉｃｒｏｓｏｆｔ(R)社のＷｉｎｄｏｗｓ(R)オペレーティングシステム、アップル社のＭａｃＯＳ(R)／ｉＯＳ(R)、Ｇｏｏｇｌｅ(R)社のＡｎｄｒｏｉｄ(R)、ＬＩＮＵＸ(R)、ＵＮＩＸ(R)、又はその他のリアルタイム若しくは組込みオペレーティングシステム（例えば、ＶｘＷｏｒｋｓ）のような、任意の種類のオペレーティングシステムであってもよい。
【０１５１】
システム１５００は、更にデバイス１５０５〜１５０８のようなＩ／Ｏデバイスを含むことができ、Ｉ／Ｏデバイスは、ネットワークインターフェースデバイス１５０５、任意選択入力装置１５０６、及びその他の任意選択Ｉ／Ｏデバイス１５０７を含む。ネットワークインターフェースデバイス１５０５は、無線送受信機及び／又はネットワークインターフェースカード（ＮＩＣ）を含むことができる。無線送受信機は、ＷｉＦｉ送受信機、赤外線送受信機、ブルートゥース送受信機、ＷｉＭａｘ送受信機、無線携帯電話送受信機、衛星送受信機（例えば、全地球測位システム（ＧＰＳ）送受信機）、又はその他の無線周波数（ＲＦ）送受信機、又はそれらの組み合わせであってもよい。ＮＩＣは、イーサネットカードであってもよい。
【０１５２】
入力装置１５０６は、マウス、タッチパッド、タッチスクリーン（表示装置１５０４と統合されてもよい）、ポインターデバイス（例えば、スタイラス）、及び／又はキーボード（例えば、物理キーボード又はタッチスクリーンの一部として表示された仮想キーボード）を含むことができる。例えば、入力装置１５０６は、タッチスクリーンと接続されるタッチスクリーンコントローラを含むことができる。タッチスクリーン及びタッチスクリーンコントローラは、例えば、様々なタッチ感応技術（コンデンサ、抵抗、赤外線、及び表面弾性波の技術を含むが、それらに限定されない）のいずれか、並びにその他の近接センサアレイ、又は、タッチスクリーンと接触する１つ又は複数の点を確定するためのその他の素子を用いて、それらの接触、移動又は中断を検出することができる。    
【０１５３】
Ｉ／Ｏデバイス１５０７は、音声装置を含むことができる。音声装置は、音声認識、音声複製、デジタル記録、及び／又は電話機能のような音声サポート機能を促進するために、スピーカ及び／又はマイクロホンを含んでもよい。その他のＩ／Ｏデバイス１５０７は、更に、ユニバーサルシリアルバス（ＵＳＢ）ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ（例えば、ＰＣＩ−ＰＣＩブリッジ）、センサ（例えば、加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなどのモーションセンサ）、又はそれらの組み合わせを含むことができる。デバイス１５０７は、結像処理サブシステム（例えば、カメラ）を更に含むことができ、前記結像処理サブシステムは、写真及びビデオ断片を記録することなどのカメラ機能を実現するための、電荷接続素子（ＣＣＤ）又は相補型金属酸化物半導体（ＣＭＯＳ）光学センサのような光学センサを含むことができる。特定のセンサは、センサハブ（図示せず）を介してインターコネクト１５１０に接続されることができ、キーボード又はサーマルセンサのようなその他のデバイスはシステム１５００の具体的なコンフィギュレーション又は設計により、組込みコントローラ（図示せず）により制御されることができる。
【０１５４】
データ、アプリケーション、１つ又は複数のオペレーティングシステムなどの情報の永続性記憶を提供するために、プロセッサ１５０１には、大容量記憶デバイス（図示せず）が接続されることができる。様々な実施形態において、より薄くてより軽量なシステム設計を可能にしながら、システムの応答性を向上するために、このような大容量記憶装置は、ソリッドステート装置（ＳＳＤ）によって実現されることができる。しかしながら、その他の実施形態において、大容量記憶デバイスは、主にハードディスクドライブ（ＨＤＤ）を使用して実現することができ、より小さい容量のＳＳＤ記憶デバイスをＳＳＤキャッシュとして機能することで、停電イベントの間にコンテキスト状態及び他のそのような情報の不揮発性記憶を可能にし、それによりシステムオペレーションが再開するときに通電を速く実現することができる。また、フラッシュデバイスは、例えば、シリアルペリフェラルインターフェース（ＳＰＩ）を介してプロセッサ１５０１に接続されることができる。このようなフラッシュデバイスは、前記システムのベーシックインプット／アウトプットソフトウェア（ＢＩＯＳ）及びその他のファームウェアを含むシステムソフトウェアの不揮発性記憶のために機能することができる。
【０１５５】
記憶デバイス１５０８は、本明細書に記載の方法又は機能のいずれか１つ又は複数を具現化する１つ又は複数の命令セット又はソフトウェア（例えば、モジュール、ユニット及び／又はロジック１５２８）が格納されているコンピュータアクセス可能な記憶媒体１５０９（機械可読記憶媒体又はコンピュータ可読媒体とも呼ばれる）を備えてもよい。処理モジュール／ユニット／ロジック（１５２８）は、上述したように、前述した構成要素のうち、任意の一つを表示することができ、例えば、図２のホストサーバー１０４、図２のランタイムライブラリ２０５、図４のＤＰアクセラレータ４０５、図４のＩ／Ｏマネージャ４０１またはＩ／Ｏインターフェース４１５、図９及び図１４のＨＣＭ９０１またはＡＣＭ９１５、及び図１７のＭＭ１７０１、図２０のセキュリティユニット１０２０およびタイムユニット２００３を表すことができる。処理モジュール／ユニット／ロジック１５２８は、更に、データ処理システム１５００、メモリ１５０３、及びプロセッサ１５０１による実行中に、メモリ１５０３内及び／又はプロセッサ１５０１内に完全的に又は少なくとも部分的に存在してもよく、データ処理システム１５００、メモリ１５０３及びプロセッサ１５０１も機械アクセス可能な記憶媒体を構成する。処理モジュール／ユニット／ロジック１５２８は、更に、ネットワークを介してネットワークインターフェースデバイス１５０５を介して送受信されてもよい。
【０１５６】
コンピュータ可読記憶媒体１５０９は、以上に説明されたいくつかのソフトウェア機能を永続的に格納するために用いることができる。コンピュータ可読記憶媒体１５０９は、例示的な実施形態において単一の媒体として示されるが、「コンピュータ可読記憶媒体」という用語は、前記１つ又は複数の命令セットが格納される単一の媒体又は複数の媒体（例えば、集中型又は分散型データベース及び／又は関連するキャッシュとサーバー）を含むと解釈されるものとする。「コンピュータ可読記憶媒体」という用語は、更に、命令セットを格納又は符号化できる任意の媒体を含むと解釈されるものであり、前記命令セットは機械により実行され、本開示のいずれか１種又は複数種の方法を機械に実行させるためのものである。それゆえに、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体及び磁気媒体、又はその他の任意の非一時的機械可読媒体を含むが、それらに限定されないと解釈されるものとする。
【０１５７】
本明細書に記載された処理モジュール／ユニット／ロジック１５２８、構成要素及びその他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、又はＡＳＩＣＳ、ＦＰＧＡ、ＤＳＰ又は類似の装置のようなハードウェア構成要素の機能に統合されてもよい。更に、処理モジュール／ユニット／ロジック１５２８は、ハードウェア装置におけるファームウェア又は機能性回路として実現されてもよい。更に、処理モジュール／ユニット／ロジック１５２８は、ハードウェア装置とソフトウェア構成要素の任意の組み合わせで実現されてもよい。
【０１５８】
なお、システム１５００は、データ処理システムの様々な構成要素を有するものとして示されているが、構成要素を相互接続する任意の特定のアーキテクチャ又は方式を表すことを意図するものではなく、そのような詳細は、本開示の実施形態とは密接な関係がない。また、より少ない構成要素又はより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバー及び／又はその他のデータ処理システムは、本開示の実施形態と共に使用することも可能であることを理解されたい。
【０１５９】
上述した具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現により示された。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらのオペレーションは、物理量の物理的処置が必要とされるものである。
【０１６０】
しかしながら、念頭に置くべきなのは、これらの用語及び類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解すべきなのは、用語（例えば、添付された特許請求の範囲に記載のもの）による説明とは、コンピュータシステム、又は類似の電子式計算装置の動作及び処理を指し、前記コンピュータシステム又は電子式計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理（電子）量として示されたデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示された別のデータに変換する。
【０１６１】
図に示される技術は、１つ又は複数の電子機器に格納され実行されるコード及びデータを使用して実施することができる。そのような電子機器は、コンピュータ可読媒体（例えば、非一時的コンピュータ可読記憶媒体（例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み取り専用メモリ、フラッシュメモリ装置、相変化メモリ）及び一時的コンピュータ可読伝送媒体（例えば、電気的、光学的、音響的、又は他の形態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号など）など）を使用して、コード及びデータを格納及び伝送する（内部に伝送され、及び／又はネットワークを介して他の電子装置に伝送される）。  
【０１６２】
上述した図面において説明されたプロセス又は方法は、ハードウェア（例えば、回路、専用ロジックなど）、ファームウェア、ソフトウェア（例えば、非一時的コンピュータ可読媒体に具現化されるもの）、又はそれらの組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記オペレーションの一部が異なる順序で実行されてもよいことを理解されたい。また、一部のオペレーションは、順番ではなく並行して実行されてもよい。
【０１６３】
本明細書において、本開示の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本開示のより広い趣旨及び範囲を逸脱しない限り、本開示に対して様々な変更を行うことができる。それゆえに、本明細書及び図面は、限定的な意味でなく、例示的な意味で理解されるべきである。
【図１】
2021513691.tif 000003
【図２】
2021513691.tif 000004
【図３】
2021513691.tif 000005
【図４】
2021513691.tif 000006
【図５】
2021513691.tif 000007
【図６】
2021513691.tif 000008
【図７】
2021513691.tif 000009
【図８Ａ】
2021513691.tif 000010
【図８Ｂ】
2021513691.tif 000011
【図９】
2021513691.tif 000012
【図１０】
2021513691.tif 000013
【図１１】
2021513691.tif 000014
【図１２Ａ】
2021513691.tif 000015
【図１２Ｂ】
2021513691.tif 000016
【図１３Ａ】
2021513691.tif 000017
【図１３Ｂ】
2021513691.tif 000018
【図１４】
2021513691.tif 000019
【図１５】
2021513691.tif 000020
【図１６Ａ】
2021513691.tif 000021
【図１６Ｂ】
2021513691.tif 000022
【図１７】
2021513691.tif 000023
【図１８】
2021513691.tif 000024
【図１９】
2021513691.tif 000025
【図２０】
2021513691.tif 000026
【図２１】
2021513691.tif 000027
【図２２】
2021513691.tif 000028
【図２３】
2021513691.tif 000029
【図２４】
2021513691.tif 000030
【図２５】
2021513691.tif 000031
【図２６】
2021513691.tif 000032
【図２７】
2021513691.tif 000033
【図２８Ａ】
2021513691.tif 000034
【図２８Ｂ】
2021513691.tif 000035
【図２９】
2021513691.tif 000036
【図３０】
2021513691.tif 000037
【図３１】
2021513691.tif 000038
【図３２】
2021513691.tif 000039
【手続補正書】
【提出日】令和2年4月27日(2020.4.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストシステムとデータ処理アクセラレータの間の通信を保護するためのコンピュータ実施方法であって、
バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で、データチャネルを含む安全な接続を作成するステップと、
コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第１の命令を送信するステップであって、前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である、ステップと、
前記第１の命令に応じて、前記データチャネルを介して前記ＤＰアクセラレータから、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を受信するステップと、
前記第１の請求に応じて、前記ホストシステムの前記第１のメモリ位置から読み出された前記第１のデータを、前記データチャネルを介して前記ＤＰアクセラレータへ送信するステップであって、前記第１のデータは、計算またはコンフィギュレーションのオペレーションに用いられるデータである、ステップと、
前記コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第２の命令を送信するステップであって、前記第２の命令は、前記ＤＰアクセラレータに前記計算または前記コンフィギュレーションのオペレーションを実行させるように請求する命令である、ステップと、を含む
ことを特徴とするコンピュータ実施方法。
【請求項２】
前記第１の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第１のメモリ位置からの読み出し権限があるか否かを判定するステップと、
前記ＤＰアクセラレータが前記第１のメモリ位置からの読み出し権限があると判定されたことに応じて、前記ＤＰアクセラレータに対して前記第１のメモリ位置からの読み出しを許可するステップと、をさらに含む
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記ＤＰアクセラレータは、前記ホストシステムの前記第１のメモリ位置への直接アクセスが許可されていない
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記ＤＰアクセラレータは、前記ホストシステムに接続された複数のＤＰアクセラレータのうちの一つである
ことを特徴とする請求項２に記載の方法。
【請求項５】
前記ＤＰアクセラレータから第２のデータを書き込むための第２の請求を  前記データチャネルを介して受信するステップであって、前記第２のデータは、前記ホストシステムの第２のメモリ位置に書き込まれるデータである、ステップと、
前記第２の請求に応じて、前記ホストシステムの前記第２のメモリ位置に前記第２のデータを格納するステップと、をさらに含む
ことを特徴とする請求項１に記載の方法。
【請求項６】
前記第２の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第２のメモリ位置への書き込み権限があるか否かを判定するステップと、
前記ＤＰアクセラレータが前記第２のメモリ位置への書き込み権限があると判定されたことに応じて、前記ＤＰアクセラレータに対して前記第２のメモリ位置への書き込みを許可するステップと、をさらに含む
ことを特徴とする請求項５に記載の方法。
【請求項７】
前記第２のデータは、前記命令に応じて実行される前記計算または前記コンフィギュレーションのオペレーションの結果の少なくとも一部を示す
ことを特徴とする請求項５に記載の方法。
【請求項８】
命令が記憶されている非一時的機械可読媒体であって、
前記命令がプロセッサによって実行されると、前記プロセッサにオペレーションを実行させ、前記オペレーションは、
バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で、データチャネルを含む安全な接続を作成するステップと、
コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第１の命令を送信するステップであって、前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である、ステップと、
前記第１の命令に応じて、前記データチャネルを介して前記ＤＰアクセラレータから、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を受信するステップと、
前記第１の請求に応じて、前記ホストシステムの前記第１のメモリ位置から読み出された前記第１のデータを、前記データチャネルを介して前記ＤＰアクセラレータへ送信するステップであって、前記第１のデータは、計算またはコンフィギュレーションのオペレーションに用いられるデータである、ステップと、
前記コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第２の命令を送信するステップであって、前記第２の命令は、前記ＤＰアクセラレータに前記計算または前記コンフィギュレーションのオペレーションを実行させるように請求する命令である、ステップと、を含む
ことを特徴とする非一時的機械可読媒体。
【請求項９】
前記オペレーションは、
前記第１の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第１のメモリ位置からの読み出し権限があるか否かを判定するステップと、
前記ＤＰアクセラレータが前記第１のメモリ位置からの読み出し権限があると判定されたことに応じて、前記ＤＰアクセラレータに前記第１のメモリ位置からの読み出しを許可するステップと、をさらに含む
ことを特徴とする請求項８に記載の非一時的機械可読媒体。
【請求項１０】
前記ＤＰアクセラレータは、前記ホストシステムの前記第１のメモリ位置への直接アクセスが許可されていない
ことを特徴とする請求項９に記載の非一時的機械可読媒体。
【請求項１１】
前記ＤＰアクセラレータは、前記ホストシステムに接続された複数のＤＰアクセラレータのうちの一つである
ことを特徴とする請求項９に記載の非一時的機械可読媒体。
【請求項１２】
前記オペレーションは、
前記ＤＰアクセラレータから第２のデータを書き込むための第２の請求を前記データチャネルを介して受信するステップであって、前記第２のデータは、前記ホストシステムの第２のメモリ位置に書き込まれるデータである、ステップと、
前記第２の請求に応じて、前記ホストシステムの前記第２のメモリ位置に前記第２のデータを格納するステップと、をさらに含む
ことを特徴とする請求項８に記載の非一時的機械可読媒体。
【請求項１３】
前記オペレーションは、
前記第２の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第２のメモリ位置への書き込み権限があるか否かを判定するステップと、
前記ＤＰアクセラレータが前記第２のメモリ位置への書き込み権限があると判定されたことに応じて、前記ＤＰアクセラレータに前記第２のメモリ位置への書き込みを許可するステップと、をさらに含む
ことを特徴とする請求項１２に記載の非一時的機械可読媒体。
【請求項１４】
前記第２のデータは、前記命令に応じて実行される前記計算または前記コンフィギュレーションのオペレーションの結果の少なくとも一部を示す
ことを特徴とする請求項１２に記載の非一時的機械可読媒体。
【請求項１５】
ホストシステムとデータ処理アクセラレータの間の通信を保護するためのコンピュータ実施方法であって、
バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で、データチャネルを含む安全な接続を作成するステップと、
前記ＤＰアクセラレータにおいて、コマンドチャネルを介して前記ホストシステムから第１の命令を受信するステップであって、前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である、ステップと、
前記第１の命令に応じて、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すために、前記データチャネルを介して前記ＤＰアクセラレータから前記ホストシステムへ第１の請求を送信し、前記データチャネルを介して前記ホストシステムから前記第１のデータを受信するステップであって、前記第１のデータは、前記ホストシステムの前記第１のメモリ位置から前記ホストシステムによって読み出されるデータである、ステップと、
前記コマンドチャネルを介して前記ホストシステムから第２の命令を受信するステップであって、前記第２の命令は、前記ＤＰアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である、ステップと、
少なくとも前記第１のデータに基づいて、前記計算または前記コンフィギュレーションのオペレーションを実行するステップと、を含む
ことを特徴とするコンピュータ実施方法。
【請求項１６】
前記ホストシステムは、前記第１の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第１のメモリ位置からの読み出し権限があるか否かを判定するステップと、
前記ホストシステムは、前記ＤＰアクセラレータが前記第１のメモリ位置からの読み出し権限があると判定されたことに応じて、前記ＤＰアクセラレータに対して前記第１のメモリ位置からの読み出しを許可するステップと、をさらに含む
ことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記ＤＰアクセラレータは、前記ホストシステムの前記第１のメモリ位置への直接アクセスが許可されていない
ことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記ＤＰアクセラレータは、前記ホストシステムに接続された複数のＤＰアクセラレータのうちの一つである
ことを特徴とする請求項１６に記載の方法。
【請求項１９】
前記ホストシステムの第２のメモリ位置に第２のデータを書き込むために、前記データチャネルを介して前記ＤＰアクセラレータから前記ホストシステムへ第２の請求を送信するステップであって、前記第２のデータは、前記計算または前記コンフィギュレーションのオペレーションの結果の少なくとも一部を表す、ステップをさらに含む、ことを特徴とする請求項１５に記載の方法。
【請求項２０】
前記ホストシステムは、前記第２の請求を調べ、前記ＤＰアクセラレータが前記ホストシステムの前記第２のメモリ位置への書き込み権限があるか否かを判定するステップと、
前記ホストシステムは、前記ＤＰアクセラレータが前記第２のメモリ位置への書き込み権限があると判定されたことに応じて、前記ＤＰアクセラレータに対して前記第２のメモリ位置への書き込みを許可するステップとをさらに含む
ことを特徴とする請求項１９に記載の方法。
【請求項２１】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項１〜７のいずれか一項に記載の方法を実現する、コンピュータプログラム。
【請求項２２】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項１５〜２０のいずれか一項に記載の方法を実現する、コンピュータプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、大体的にコンテンツの検索に関する。より具体的に、本開示の実施形態は、ホストシステムとデータ処理（ＤＰ）アクセラレータの間の通信を保護するための方法およびシステムに関する。
【背景技術】
【０００２】
敏感なトランザクションは、人工知能（ＡＩ）アクセラレータまたはコプロセッサ（ｃｏ−ｐｒｏｃｅｓｓｏｒ）のようなデータ処理（ＤＰ）アクセラレータによって行われている。これにより、ＤＰアクセラレータの通信チャネルを保護しホストシステムの環境を保護してホストシステムを不正なアクセスから保護する必要性が高まれる。
【０００３】
例えば、ＡＩトレーニングデータ、モデル、推論出力は保護されずに、信頼できない当事者に漏洩する可能性がある。したがって、データ処理アクセラレータによって処理されたデータを保護することができるシステムが必要である。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本開示の一態様では、ホストシステムとデータ処理アクセラレータの間の通信を保護するためのコンピュータ実施方法であって、バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で、データチャネルを含む安全な接続を作成するステップと、コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第１の命令（ｉｎｓｔｒｕｃｔｉｏｎ）を送信するステップであって、前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である、ステップと、前記第１の命令に応じて、前記データチャネルを介して前記ＤＰアクセラレータから、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を受信するステップと、前記第１の請求に応じて、前記ホストシステムの前記第１のメモリ位置から読み出された前記第１のデータを前記データチャネルを介して前記ＤＰアクセラレータへ送信するステップであって、前記第１のデータは、計算またはコンフィギュレーションのオペレーションに用いられるデータである、ステップと、前記コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第２の命令を送信するステップであって、前記第２の命令は、前記ＤＰアクセラレータに前記計算または前記コンフィギュレーションのオペレーションを実行させるように請求する命令である、ステップと、を含むことを特徴とするコンピュータ実施方法が提供される。
【０００５】
本開示の他の一態様では、命令が記憶されている非一時的機械可読媒体であって、前記命令がプロセッサによって実行されると、前記プロセッサにオペレーションを実行させ、前記オペレーションは、バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で、データチャネルを含む安全な接続を作成するステップと、コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第１の命令を送信するステップであって、前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である、ステップと、前記第１の命令に応じて、前記データチャネルを介して前記ＤＰアクセラレータから、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を受信するステップと、前記第１の請求に応じて、前記ホストシステムの前記第１のメモリ位置から読み出された前記第１のデータを前記データチャネルを介して前記ＤＰアクセラレータへ送信するステップであって、前記第１のデータは、計算またはコンフィギュレーションのオペレーションに用いられるデータである、ステップと、前記コマンドチャネルを介して前記ホストシステムから前記ＤＰアクセラレータへ第２の命令を送信するステップであって、前記第２の命令は、前記ＤＰアクセラレータに前記計算または前記コンフィギュレーションのオペレーションを実行させるように請求する命令である、ステップと、を含むことを特徴とする非一時的機械可読媒体が提供される。
【０００６】
本開示のさらなる一態様では、ホストシステムとデータ処理アクセラレータの間の通信を保護するためのコンピュータ実施方法であって、バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で、データチャネルを含む安全な接続を作成するステップと、前記ＤＰアクセラレータにおいて、コマンドチャネルを介して前記ホストシステムから第１の命令を受信するステップであって、前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である、ステップと、前記第１の命令に応じて、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すために、前記データチャネルを介して前記ＤＰアクセラレータから前記ホストシステムへ第１の請求を送信し、前記データチャネルを介して前記ホストシステムから前記第１のデータを受信するステップであって、前記第１のデータは、前記ホストシステムの前記第１のメモリ位置から前記ホストシステムによって読み出されるデータである、ステップと、前記コマンドチャネルを介して前記ホストシステムから第２の命令を受信するステップであって、前記第２の命令は、前記ＤＰアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である、ステップと、少なくとも前記第１のデータに基づいて、前記計算または前記コンフィギュレーションのオペレーションを実行するステップと、を含むことを特徴とするコンピュータ実施方法が提供される。
【図面の簡単な説明】
【０００７】
本開示の実施形態は、図面の各図において限定的ではなく例示的な形態で示され、図面における同じ図面符号は類似する素子を示す。
【図１】いくつかの実施形態に係るホストとデータ処理（ＤＰ）アクセラレータとの間の通信を保護するためのシステムコンフィギュレーションの一例を示すブロック図である。
【図２】いくつかの実施形態に係るホストとデータ処理（ＤＰ）アクセラレータとの間の通信を保護するためのマルチレイヤ保護ソリューションの一例を示すブロック図である。
【図３】一実施形態に係る方法の一例を示すフローチャートである。
【図４】一実施形態に係るＩ／Ｏマネージャを備えるホストの一例を示すブロック図である。
【図５】いくつかの実施形態に係るＤＰアクセラレータと通信するＩ／Ｏマネージャの一例をさらに示すブロック図である。
【図６】一実施形態に係る複数のＤＰアクセラレータに割り当てられたメモリの領域を示すブロック図である。
【図７】一実施形態に係るホストとＤＰアクセラレータとの間の例示的な通信を示すブロック図である。
【図８Ａ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図８Ｂ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図９】一実施形態に係るホストチャネルマネージャ（ＨＣＭ）を備えるホストの一例を示すブロック図である。
【図１０】いくつかの実施形態に係る１つまたは複数のアクセラレータチャネルマネージャ（ＡＣＭ）に通信可能に接続されているホストチャネルマネージャ（ＨＣＭ）の一例を示すブロック図である。
【図１１】一実施形態に係るチャネル／セッションキーを使用してユーザアプリケーション―チャネルマッピングを示すブロック図である。
【図１２Ａ】一実施形態に係るホストとＤＰアクセラレータとの間の安全な情報交換（ｓｅｃｕｒｅ  ｉｎｆｏｒｍａｔｉｏｎ  ｅｘｃｈａｎｇｅ）の一例を示すブロック図である。
【図１２Ｂ】一実施形態に係るホストとＤＰアクセラレータとの間の安全な情報交換の一例を示すブロック図である。
【図１３Ａ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図１３Ｂ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図１４】一実施形態に係るホストチャネルマネージャ（ＨＣＭ）とアクセラレータチャネルマネージャ（ＡＣＭ）の間で安全な情報交換チャネルを作成するための例示的なシステムを示すブロック図である。
【図１５】一実施形態に係るホストとＤＰアクセラレータとの間のセッションキーを導出するための例示的な情報交換を示すブロック図である。
【図１６Ａ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図１６Ｂ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図１７】一実施形態に係るＤＰアクセラレータのメモリバッファを保護するための安全なメモリマネージャ（ＭＭ）を備えるホストの一例を示すブロック図である。
【図１８】いくつかの実施形態に係るメモリマネージャ（ＭＭ）の一例を示すブロック図である。
【図１９】一実施形態に係る方法の一例を示すフローチャートである。
【図２０】一実施形態に係るＤＰアクセラレータに通信可能に接続されているホストサーバーの一例を示すブロック図である。
【図２１】一実施形態に係るタイムユニットの一例を示すブロック図である。
【図２２】一実施形態に係るセキュリティユニットの一例を示すブロック図である。
【図２３】一実施形態に係る、カーネルオブジェクトを検証するためにＤＰアクセラレータに通信可能に接続されるホストサーバーの一例を示すブロック図である。
【図２４】一実施形態に係る例示的なカーネルオブジェクトの検証プロトコル（ｖｅｒｉｆｉｃａｔｉｏｎ  ｐｒｏｔｏｃｏｌ）を示すフローチャートである。
【図２５】一実施形態に係る方法の一例を示すフローチャートである。
【図２６】一実施形態に係るカーネル認証（ｋｅｒｎｅｌｓ  ａｔｔｅｓｔａｔｉｏｎ）のためにＤＰアクセラレータに通信可能に接続されているホストサーバーの一例を示すブロック図である。
【図２７】一実施形態に係る例示的な認証プロトコル（ａｔｔｅｓｔａｔｉｏｎ  ｐｒｏｔｏｃｏｌ）を示すフローチャートである。
【図２８Ａ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図２８Ｂ】いくつかの実施形態に係る例示的な方法を示すフローチャートである。
【図２９】一実施形態に係るＤＰアクセラレータおよび信頼できるサーバーに通信可能に接続されているホストサーバーの一例を示すブロック図である。
【図３０】一実施形態に係る例示的なＤＰアクセラレータ検証プロトコル（ｖａｌｉｄａｔｉｏｎ  ｐｒｏｔｏｃｏｌ）を示すフローチャートである。
【図３１】一実施形態に係る方法の一例を示すフローチャートである。
【図３２】一実施形態に係るデータ処理システムを示すブロック図である。
【発明を実施するための形態】
【０００８】
本開示の様々な実施形態及び態様は、以下で論じられる詳細を参照しながら説明され、図面には、上記様々な実施形態が示される。以下の説明及び図面は、本開示を例示するためのものであり、限定するものとして解釈されるべきではない。本開示の様々な実施形態を全面的に理解するために、多くの特定の詳細を説明する。ところが、いくつかの場合には、本開示の実施形態に対する簡単な説明を提供するために、周知又は従来技術の詳細について説明していない。
【０００９】
本明細書において、「一実施形態」又は「実施形態」とは、当該実施形態に組み合わせて説明された特定の特徴、構造又は特性が本願の少なくとも一実施形態に含まれてもよいと意味する。「一実施形態において」という表現は、本明細書全体において同一の実施形態を指すとは限らない。
【００１０】
本開示の第１の態様によると、データ処理システムは、ホストシステムのセキュリティモジュール（例えば、信頼できるプラットフォームモジュール（ＴＰＭ））を利用して、セキュアブートを実行する。システムは、オペレーティングシステム（ＯＳ）と、データ処理（ＤＰ）アクセラレータに関連付けられているアクセラレーター・ドライバーを含む１つまたは複数のドライバーが、信頼できるソースによって提供されるか否かを検証する。システムは、ＯＳ内でアクセラレーター・ドライバーを起動する。システムは、ホストシステムの１つまたは複数のプロセッサに関連付けられている信頼できる実行環境（ＴＥＥ）を作成する。システムは、ＴＥＥでアプリケーションとランタイムライブラリを起動する。ここで、アプリケーションは、ランタイムライブラリとアクセラレーター・ドライバーを介してＤＰアクセラレータと通信する。
【００１１】
第２の態様によると、システムは、バスを介してホストシステムとデータ処理（  ＤＰ）アクセラレータの間で安全な接続（１つまたは複数のセキュアチャネルを持つ）を作成し、前記安全な接続は、１つまたは複数のコマンドチャネルおよび／またはデータチャネルを含む。一実施形態において、１つまたは複数のコマンドチャネルは、セキュリティ対策が施されていない可能性がある。前記システムは、前記コマンドチャネルを介して第１の命令をホストシステムからＤＰアクセラレータに送信する。前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である。前記システムは、前記第１の命令に応じて、ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を、データチャネルを介してＤＰアクセラレータから受信する。前記システムは、前記請求に応じて、前記ホストシステムの第１のメモリ位置から読み出した前記第１のデータをデータチャネルを介してＤＰアクセラレータに転送する。ここで、前記第１のデータは、計算またはコンフィギュレーションのオペレーションに使用される。前記システムは、前記コマンドチャネルを介して第２の命令を、ホストシステムから前記ＤＰアクセラレータへ送信する。前記第２の命令は、前記ＤＰアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。
【００１２】
一実施形態において、システムは、バスによってホストシステムとデータ処理（ＤＰ）アクセラレータの間で安全な接続を作成する。前記安全な接続は、１つまたは複数のコマンドチャネルおよび／またはデータチャネルを含む。前記コマンドチャネルは、セキュリティ対策が施されていない可能性がある。前記システムは、前記ＤＰアクセラレータでコマンドチャネルを介して前記ホストシステムから第１の命令を受信する。前記第１の命令は、前記ＤＰアクセラレータにデータ準備オペレーションを実行させるように請求する命令である。前記システムは、前記第１の命令に応じて、データチャネルを介して第１の請求を前記ＤＰアクセラレータから前記ホストシステムに送信して、前記ホストシステムの第１のメモリ位置から第１のデータを読み出す。前記システムは、前記データチャネルを介して前記ホストシステムから前記第１のデータを受信する。ここで、前記第１のデータは、前記ホストシステムによって前記ホストシステムの前記第１のメモリ位置から読み出されるデータである。前記システムは、前記コマンドチャネルを介して前記ホストシステムから第２の命令を受信し、前記第２の命令は、前記ＤＰアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。前記システムは、少なくとも前記第１のデータに基づいて、計算またはコンフィギュレーションのオペレーションを実行する。
【００１３】
第３の態様によると、システムは、ホストシステムのホストチャネルマネージャ（ＨＣＭ）のアプリケーションから請求を受信して、データ処理（ＤＰ）アクセラレータとのセキュアチャネルを作成する。ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。前記請求に応じて、前記システムは、前記ＨＣＭに関連付けられている第１のキーペアの第１のプライベートキー、及び前記ＤＰアクセラレータに関連付けられている第２のキーペアの第２のパブリックキーに基づいて、前記セキュアチャネルに対する第１のセッションキーを生成する。前記ＤＰアクセラレータに送信される前記アプリケーションに関連付けられている第１のデータに応じて、前記システムは、前記第１のセッションキーを利用して前記第１のデータを暗号化する。その後、前記システムは、バスを介して前記セキュアチャネルを介して、前記暗号化された第１のデータを前記ＤＰアクセラレータに送信する。
【００１４】
一実施形態において、システムは、データ処理（ＤＰ）アクセラレータのアクセラレータチャネルマネージャ（ＡＣＭ）で、ホストシステムのホストチャネルマネージャ（ＨＣＭ）のアプリケーションから請求を受信して、前記ホストシステムと前記ＤＰアクセラレータの間でセキュアチャネルを作成する。ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。前記請求に応じて、前記システムは、前記セキュアチャネルのための第２のセッションキーを生成し、前記暗号化された第２のセッションキーをＨＣＭに送信する前に、前記ＤＰアクセラレータに関連付けられている第２のキーペアの第２のプライベートキー及びＨＣＭに関連付けられている第１のキーペアの第１のパブリックキーに基づいて、第２のセッションキーを暗号化する。前記ホストシステムに送信される第１のデータに応じて、前記システムは、前記第２のセッションキーを利用して前記第１のデータを暗号化する。その後、前記システムは、前記セキュアチャネルを介して、前記暗号化された第１のデータを前記ホストシステムの前記ＨＣＭに送信する。
【００１５】
第４の態様によると、データ処理（ＤＰ）アクセラレータから一時的なパブリックキー（ＰＫ＿ｄ）を受信したことに応じて、システムは、前記ホストシステムで第１のノンス（ｎｃ）を生成する。ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。前記システムは、セッションキーを生成するための請求を前記ホストシステムから前記ＤＰアクセラレータに送信し、前記請求は、ホストのパブリックキー（ＰＫ＿Ｏ）及び第１のノンスを含む。前記システムは、前記ＤＰアクセラレータから第２のノンス（ｎｓ）を受信し、ここで、前記第２のノンスは、前記ホストのパブリックキーと前記一時的なパブリックキーに対応する一時的なプライベートキー（ＳＫ＿ｄ）を利用して暗号化される。前記システムは、前記第１のノンス及び前記第２のノンスに基づいて第１のセッションキーを生成し、これは、前記ホストシステムと前記ＤＰアクセラレータの間のその後のデータ交換を暗号化または復号化するために使用される。
【００１６】
一実施形態において、ホストシステムから受信された請求に応じて、システムは、データ処理（ＤＰ）アクセラレータで一時的なプライベートキーと一時的なパブリックキーを生成する。ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。前記システムは、前記ＤＰアクセラレータに関連付けられているアクセラレータのプライベートルートキーを利用して、一時的なパブリックキーを暗号化する。前記システムは、暗号化されていない形式の一時的なパブリックキーと暗号化された一時的なパブリックキーとを前記ホストシステムに送信して、前記ホストシステムに前記一時的なパブリックキーを検証させるようにする。前記システムは、前記ホストシステムから第１のノンスを受信する。ここで、前記第１のノンスは、前記一時的なパブリックキーが検証された後に前記ホストシステムによって生成される。前記システムは、前記第１のノンスと前記ＤＰアクセラレータでローカルに生成された第２のノンスとに基づいてセッションキーを生成する。
【００１７】
第５の態様によると、システムは、ホストシステムのセキュリティモジュール（例えば、信頼できるプラットフォームモジュール（ＴＰＭ））を利用して、セキュアブートを実行する。前記システムは、前記ホストシステムの１つまたは複数のプロセッサに関連付けられている信頼できる実行環境（ＴＥＥ）を作成する。前記システムは、ＴＥＥ内でメモリマネージャを起動して、ここで、前記メモリマネージャは、バスを介して前記ホストシステムに接続されたデータ処理（ＤＰ）アクセラレータのメモリリソースを管理するように構成されるものであり、前記ＤＰアクセラレータのグローバルメモリのメモリ利用情報を保持することを含む。前記ＤＰアクセラレータのメモリ位置にアクセスするためにＴＥＥ内で実行されるアプリケーションから受信された請求に応じて、前記システムは、前記メモリ利用情報に基づいて前記請求を許可または拒否する。
【００１８】
第６の態様によると、ＤＰアクセラレータは、バスを介して接続されたホストシステムから受信された命令に応じてデータ処理オペレーションを実行するように構成された１つまたは複数の実行ユニット（ＥＵ）を含む。前記ＤＰアクセラレータは、セキュリティユニット（ＳＵ）は、前記ホストシステムとのセキュアチャネルを作成し維持して、データ処理オペレーションに関連するコマンドとデータを交換するように構成されているセキュリティユニット（ＳＵ）を含む。前記ＤＰアクセラレータは、前記セキュリティユニットに接続されてセキュリティユニットにタイムスタンプサービスを提供するためのタイムユニット（ＴＵ）を含む。ここで、前記タイムユニットは、外部のソースからのクロック信号を導出するせずに、クロック信号をローカルに生成するクロック生成手段を含む。前記ＴＵは、前記クロック生成手段に接続されて前記クロック信号に基づいてタイムスタンプを生成するタイムスタンプ生成手段と、前記クロック生成手段及び前記タイムスタンプ生成手段に電力を提供する給電手段を含む。
【００１９】
一実施形態において、前記ＴＵは、前記クロック生成手段に接続されて前記クロック生成手段から生成された前記クロック信号に基づいてカウント値をカウントするカウンタと、前記カウント値を格納する永続性記憶装置とをさらに含む。ここで、前記カウント値は、前記タイムスタンプ生成手段によって使用されて前記タイムスタンプを生成する。他の一実施形態において、前記カウンタは、前記クロック信号のそれぞれに応じて前記カウント値を増加させる。ここで、前記永続性記憶装置は、３２ビットの変数を含む。しかし、前記永続性記憶装置は、８ビット、１６ビット、６４ビットなどのサイズの変数を含んでもいい。
【００２０】
一実施形態において、前記タイムユニットは、前記クロック生成手段に接続されて正確なパルス信号を提供するローカルオシレーターをさらに含む。一実施形態において、前記給電手段は、外部の電源から電力を引き込むことなく電力を提供するバッテリを含む。一実施形態において、前記クロック信号は、外部のクロックソースと通信せずに生成される。一実施形態において、前記タイムユニットは、前記クロック生成手段をキャリブレートするように構成されたクロックキャリブレーター（ｃｌｏｃｋ  ｃａｌｉｂｒａｔｏｒ）をさらに含む。
【００２１】
一実施形態において、前記タイムスタンプは、前記セキュリティユニットによって使用されて、前記ＤＰアクセラレータと前記ホストシステムとの間の交換されたデータを暗号化するためのセッションキーにタイムスタンプ付けることができる。他の一実施形態において、前記タイムスタンプは、前記ＤＰアクセラレータに対する情報交換にタイムスタンプを付けるのに使用され、前記タイムスタンプは、前記情報交換の鮮度を確定するのに使用することができる。他の一実施形態において、前記セッションキーの前記タイムスタンプは、前記セッションキーの期限が切れたか否かを判定するのに使用される。
【００２２】
第７の態様によると、ＤＰアクセラレータは、バスを介して接続されたホストシステムから受信された命令に応じてデータ処理オペレーションを実行するように構成された１つまたは複数の実行ユニット（ＥＵ）を含む。前記ＤＰアクセラレータは、前記セキュリティユニットに接続されてタイムスタンプサービスを提供するタイムユニット（ＴＵ）を含む。前記ＤＰアクセラレータは、前記ホストシステムとともにセキュアチャネルを作成し維持して、データ処理オペレーションに関連するコマンドとデータを交換するように構成されたセキュリティユニット（ＳＵ）を含む。ここで、前記セキュリティユニットは、前記ＤＰアクセラレータに関連付けられているプライベートルートキーを格納する安全なストレージエリアを含む。ここで、プライベートルートキーは、認証（ａｕｔｈｅｎｔｉｃａｔｉｏｎ）に使用される。前記ＳＵは、乱数（ｒａｎｄｏｍ  ｎｕｍｂｅｒ）を生成する乱数生成手段と、前記乱数に基づいて導出されたセッションキーを使用して、前記バスを介して前記ホストシステムと交換されたデータに対して暗号化オペレーションを実行する暗号化エンジン（ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｅｎｇｉｎｅ）とを含む。
【００２３】
一実施形態において、プライベートルートキーは、前記ＤＰアクセラレータの製造中に安全なストレージエリアに予め設定されて記憶されている。一実施形態において、前記セキュリティユニットは、前記ホストシステムから請求を受信して前記ＤＰアクセラレータとの安全な接続を作成し、前記請求に応じて前記乱数生成手段によって生成された前記乱数に基づいて前記セッションキーを生成する。ここで、前記セッションキーは、安全な接続によって前記ホストシステムと交換された前記データを暗号化または復号化するのに使用される。
【００２４】
他の一実施形態において、前記乱数生成手段は、シード値に基づいて前記乱数を生成することができる。他の一実施形態において、前記タイムスタンプは、前記セッションキーの期限が切れたか否かをさらに判定するものであり、ここで、新しいセッションキーを生成することができる。
【００２５】
他の一実施形態において、前記乱数に基づいて前記セッションキーを生成する時、前記セキュリティユニットは、一時的なプライベートキーと一時的なパブリックキーを備える一時的なキーペアを生成し、一時的なパブリックキーとサインされた（ｓｉｇｎｅｄ）一時的なパブリックキーを前記ホストに送信する。ここで、前記サインされた一時的なパブリックキーは、前記プライベートルートキーによってサインされて前記ホストシステムに前記ＤＰアクセラレータを認証させ、前記ホストシステムから第１のノンスを受信し、前記ＤＰアクセラレータでローカルに生成された前記第１のノンス及び第２のノンスに基づいて、第１のセッションキーを生成することができる。他の一実施形態において、前記セキュリティユニットは、さらに前記プライベートルートキー（例えば、前記ＤＰアクセラレータのプライベートルートキー）によってサインされて、前記ホストシステムに関連付けられているパブリックキーによって暗号化された前記第１のノンス及び前記第２のノンスを送信するように構成されている。
【００２６】
他の一実施形態において、前記ホストシステムは、前記プライベートルートキーに対応するパブリックルートキー（例えば、ＤＰアクセラレータのパブリックルートキー）と前記ホストシステムのプライベートルートキーとを利用した前記暗号化された第１のノンス及び前記第２のノンスを復号化して、前記第１のノンス及び前記第２のノンスを復元するように構成されている。他の一実施形態において、前記ホストシステムは、前記復元された第１のノンス及び前記第２のノンスに基づいて、第２のセッションキーを生成するように構成されている。ここで、前記第２のセッションキーは、前記ホストシステムによって使用されて暗号化と復号化を行う。
【００２７】
一実施形態において、前記タイムユニットは、外部のソースから前記クロック信号を導出せずにクロック信号をローカルに生成するクロック生成手段と、前記クロック生成手段に接続されて前記クロック信号に基づいてタイムスタンプを生成するタイムスタンプ生成手段と、外部電源から電力を引き込むことなく前記クロック生成手段と前記タイムスタンプ生成手段に電力を提供する給電手段とを含む。
【００２８】
第８の態様によると、システムは、ホストシステムの信頼できる実行環境（ＴＥＥ）内で実行されるランタイムライブラリにおいて、アプリケーションから所定の機能を呼び出すための請求を受信して、予め定義されたオペレーションを実行する。前記請求に応じて、前記システムは、前記所定の機能に関連付けられているカーネルオブジェクトを識別する。前記システムは、前記カーネルオブジェクトの実行可能なイメージにサインするのに使用されたプライベートキーに対応するパブリックキーを利用して、前記カーネルオブジェクトの実行可能なイメージを検証する。前記カーネルオブジェクトの前記実行可能なイメージが正常に検証されたことに応じて、前記システムは、前記カーネルオブジェクトの検証された実行可能なイメージが前記データ処理（ＤＰ）アクセラレータによって実行されて予め定義されたオペレーションを実行するように、バスを介して前記カーネルオブジェクトの検証された実行可能なイメージをデータ処理（ＤＰ）アクセラレータに送信する。
【００２９】
第９の態様によると、システムは、ホストシステムにおいてバスを介してデータ処理（ＤＰ）アクセラレータからパブリック認証キー（ＰＫ＿ＡＴＴ）またはサインされたＰＫ＿ＡＴＴを受信する。前記システムは、前記ＤＰアクセラレータに関連付けられているパブリックルートキー（ＰＫ＿ＲＫ）を利用して前記ＰＫ＿ＡＴＴを検証する。前記ＰＫ＿ＡＴＴを正常に検証したことに応じて、前記システムは、カーネル識別子（ＩＤ）を前記ＤＰアクセラレータに送信して、前記ＤＰアクセラレータに記憶されたカーネルオブジェクトの認証を請求する。前記ＤＰアクセラレータを形成する前記カーネルオブジェクトに対応するカーネルダイジェストまたはサインされたカーネルダイジェストを受信したことに応じて、前記システムは、前記ＰＫ＿ＡＴＴを利用して前記カーネルダイジェストを検証する。前記システムは、検証結果を前記ＤＰアクセラレータに送信して、前記ＤＰアクセラレータに前記検証結果に基づいて前記カーネルオブジェクトへアクセスさせるようにする。
【００３０】
一実施形態において、ホストシステムから受信された認証請求に応じて、システムは、データ処理（ＤＰ）アクセラレータにおいてパブリック認証キー（ＰＫ＿ＡＴＴ）とプライベート認証キー（ＳＫ＿ＡＴＴ）を含む認証キーペアを生成する。前記システムは、前記ＰＫ＿ＡＴＴまたはサインされたＰＫ＿ＡＴＴを前記ＤＰアクセラレータから前記ホストシステムに送信し、ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。前記システムは、前記ホストシステムからカーネルオブジェクトを識別するためのカーネル識別子（ＩＤ）を受信する。ここで、前記カーネルＩＤは、ＰＫ＿ＡＴＴの検証成功に応じて受信される。前記システムは、前記カーネルＩＤに応じて、前記カーネルオブジェクトの実行可能なイメージをハッシュすることにより、カーネルダイジェストを生成する。前記システムは、前記カーネルダイジェストまたはサインされたカーネルダイジェストを前記ホストシステムに送信して、前記ＤＰアクセラレータ内で実行される前記カーネルオブジェクトにアクセスする前に、前記ホストシステムに前記カーネルオブジェクトを検証し認証させるようにする。
【００３１】
第１０の態様によると、システムは、ホストシステムにおいて、データ処理（ＤＰ）アクセラレータから前記ＤＰアクセラレータを一意に識別するためのアクセラレータ識別子（ＩＤ）を受信する。ここで、前記ホストシステムは、バスを介して前記ＤＰアクセラレータに接続される。前記システムは、ネットワークを介して前記アクセラレータＩＤを所定の信頼できるサーバーに送信する。前記システムは、ネットワークを介して所定の信頼できるサーバーから認証書（ｃｅｒｔｉｆｉｃａｔｅ）を受信し、前記認証書は前記ＤＰアクセラレータを認証する。選択的に、前記システムは、例えば、前記信頼できるサーバーのための認証書チェーンを検証することなどにより、前記認証書が前記信頼できるサーバーに関連付けられていることを検証する。前記システムは、前記認証書からパブリックルートキー（ＰＫ＿ＲＫ）を抽出し、前記ＰＫ＿ＲＫは前記ＤＰアクセラレータに関連付けられているプライベートルートキー（ＳＫ＿ＲＫ）に対応する。前記システムは、前記ＰＫ＿ＲＫを利用して、前記ＤＰアクセラレータとのセキュアチャネルを作成して、前記ホストシステムと前記ＤＰアクセラレータの間でデータを安全に交換する。
【００３２】
図１は、いくつかの実施形態に係るホストとデータ処理（ＤＰ）アクセラレータの間の通信を保護するためのシステムコンフィギュレーションの一例を示すブロック図である。図１を参照すると、システムコンフィギュレーション１００は、ネットワーク１０３を介してＤＰサーバー１０４に通信可能に接続されている１つまたは複数のクライアントデバイス１０１〜１０２を含むが、これらに限定されない。クライアントデバイス１０１〜１０２は、例えば、パーソナルコンピュータ（例えば、デスクトップ、ラップトップ、タブレット）、「シーン（ｔｈｉｎ）」クライアント、個人向け携帯情報端末（ＰＤＡ）、ウェブ対応機器（Ｗｅｂ  ｅｎａｂｌｅｄ  ａｐｐｌｉａｎｃｅ）、スマートウォッチ、または携帯電話（例えば、スマートフォン）など、任意のタイプのクライアントデバイスであってもよい。選択的に、クライアントデバイス１０１〜１０２は、他のデバイスであってもよい。ネットワーク１０３は、任意のタイプのネットワークであってもよく、例えば、有線または無線のローカルエリアネットワーク（ＬＡＮ）、インターネットのような広域ネットワーク（ＷＡＮ）、またはこれらの組み合わせであってもよい。
【００３３】
サーバー１０４（例えば、ホスト）は、任意の種類のサーバーまたはサーバークラスタであってもよく、例えば、Ｗｅｂまたはクラウドサーバー、アプリケーションサーバー、バックエンドサーバー、またはこれらの組み合わせであってもよい。サーバー１０４は、クライアントデバイス１０１〜１０２などのクライアントがサーバー１０４によって提供されるリソースやサービス（例えば、サーバー１０４を介してＤＰアクセラレータによって提供されるリソースとサービス）にアクセスすることができるようにインターフェース（図示せず）をさらに含む。例えば、サーバー１０４は、クラウドサーバーであってもよく、あるいはクライアントに様々なクラウドサービス（例えば、クラウドストレージ、クラウドコンピューティングサービス、機械学習トレーニングサービス、データマイニングサービスなどのクラウドサービス）を提供するデータセンターのサーバーであってもよい。サーバー１０４は、クラウド（プライベートクラウド、パブリッククラウドやハイブリッドクラウドであってもよい）上のＳａａＳ（Ｓｏｆｔｗａｒｅ−ａｓ−ａ−Ｓｅｒｖｉｃｅ）またはＰａａＳ（Ｐｌａｔｆｏｒｍ−ａｓ−ａ−Ｓｅｒｖｉｃｅ）システムの一部で構成されてもよい。インタフェースは、Ｗｅｂインタフェース、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）および／またはＣＬＩ（Ｃｏｍｍａｎｄ  Ｌｉｎｅ  Ｉｎｔｅｒｆａｃｅ）を含んでもよい。
【００３４】
例えば、クライアントである本例示のクライアントデバイス１０１のユーザアプリケーション（例えば、ウェブブラウザ、アプリケーション）は、サーバー１０４で実行される命令（例えば、人工知能（ＡＩ）トレーニング、推論命令など）を送受信することができ、当該命令は、ネットワーク１０３によってインタフェースを介してサーバー１０４によって受信される。当該命令に応じて、サーバー１０４は、ＤＰアクセラレータ１０５−１０７と通信して命令の実行を完了する。いくつかの実施形態において、前記命令は、機械学習タイプの命令であり、ここで、ＤＰアクセラレータは、専用機械や専用プロセッサとして、サーバー１０４による実行よりも数倍速い速度で命令を実行することができる。したがって、サーバー１０４は、分散方式で１つまたは複数のＤＰアクセラレータの実行オペレーションを制御／管理することができる。その後、サーバー１０４は、実行結果をクライアントデバイス１０１〜１０２に戻る。ＤＰアクセラレータまたはＡＩアクセラレータは、バイドウ社からのＢａｉｄｕ人工知能（ＡＩ）のチップセットのような１つまたは複数の専用プロセッサを含んでもよく、または、ＤＰアクセラレータは、ＮＶＩＤＩＡ、Ｉｎｔｅｌまたはその他のＡＩチップセットプロバイダーのＡＩチップセットであってもよい。
【００３５】
一実施形態によると、ＤＰアクセラレータ１０５〜１０７のいずれかにアクセスしてＤＰサーバー１０４（ホストとしても呼ばれる）によってホストされるアプリケーションのそれぞれは、前記アプリケーションが信頼できるソースまたはベンダーによって提供されるアプリケーションであることを検証することができる。各アプリケーションは、ホスト１０４の中央処理装置（ＣＰＵ）によって特別に構成されて実行されるＴＥＥ（Ｔｒｕｓｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ）内で起動されて実行することができる。アプリケーションがＤＰアクセラレータ１０５〜１０７のいずれかにアクセスするように構成される場合、ホスト１０４とＤＰアクセラレータ１０５〜１０７のうちの対応するＤＰアクセラレータとの間で安全な接続が作成されて、ホスト１０４とＤＰアクセラレータ１０５〜１０７のそれぞれとの間で交換されるデータは、マルウェアの攻撃から保護される。
【００３６】
図２は、いくつかの実施形態に係るホストシステムとデータ処理（ＤＰ）アクセラレータとの間の通信を保護するためのマルチレイヤ保護ソリューションの一例を示すブロック図である。一実施形態において、システム２００は、ＤＰアクセラレータに対するハードウェアを変更するか否かに関係なく、ホストと前記ＤＰアクセラレータとの間の通信を保護するための保護策を提供する。図２を参照すると、ホストマシンまたはサーバー１０４は、侵入から保護される１つまたは複数の層（例えば、ユーザアプリケーション２０３、ランタイムライブラリ２０５、ドライバー２０９、オペレーティングシステム２１１およびハードウェア２１３（例えば、セキュリティモジュール（ＴＰＭ；Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ））／ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））を有するシステムで説明することができる。ホストマシン１０４は、通常、前記ホストシステムまたはＤＰアクセラレータ１０５〜１０７で実行されるタスクを制御し管理できるＣＰＵシステムである。前記ＤＰアクセラレータと前記ホストマシンとの間の通信チャネルのセキュリティのために、データ侵入や攻撃の影響を受けやすい前記ホストシステムのさまざまな層を保護するためのさまざまな構成要素が必要になる場合がある。例えば、信頼できる実行環境（ＴＥＥ）は、データの侵入からユーザアプリケーション層とランタイムライブラリ層を保護することができる。
【００３７】
図２を参照すると、システム２００は、いくつかの実施形態に係るホストシステム１０４とＤＰアクセラレータ１０５〜１０７を含む。ＤＰアクセラレータは、ＢａｉｄｕＡＩチップセットまたはＡＩ集約コンピューティングタスクを実行することができるＮＶＩＤＩＡグラフィックスプロセッシングユニット（ＧＰＵ）のような他のＡＩチップセットを含む。一実施形態において、ホストシステム１０４は、ホストマシン１０４内のセキュリティモジュール（例えば、信頼できるプラットフォームモジュール（ＴＰＭ））が装着された１つまたは複数のＣＰＵ２１３を備えるハードウェアを含まなければならない。ＴＰＭは、ホストシステムに特化されたハードウェア認証用の暗号化キー（例えば、ＲＳＡ暗号化キー）を格納するエンドポイントデバイス上の専用チップである。各ＴＰＭチップは、インドールスメントキー（ＥＫ；ｅｎｄｏｒｓｅｍｅｎｔ  ｋｅｙｓ）またはインドールスメントクレデンシャル（ＥＣ；ｅｎｄｏｒｓｅｍｅｎｔ  ｃｒｅｄｅｎｔｉａｌｓ）、即ち、ルートキーと呼ばれる、１つまたは複数のＲＳＡキーペア（ｋｅｙ  ｐａｉｒｓ；例えば、パブリックキー及びプライベートキーペア）を含んでもよい。前記キーペアは、ＴＰＭチップ内部に保持され、ソフトウェアによってアクセスすることができない。その後、ファームウェアおよびソフトウェアの重要なセクションは、システムを無断ファームウェアおよびソフトウェアの変更から保護するために実行される前にＥＫまたはＥＣによってハッシュされることができる。前記ホストマシン上のＴＰＭチップは、セキュアブートのための信頼のルートとして機能することができる。
【００３８】
また、ＴＰＭチップは、前記ＤＰアクセラレータと通信するために、作業カーネル空間においてドライバー２０９と、オペレーティングシステム（ＯＳ）２１１を保護する。ここで、ドライバー２０９は、ＤＰアクセラレータベンダーによって提供されて、ホストとＤＰアクセラレータとの間の通信チャネルを制御するユーザアプリケーションのドライバーの役割を果たすことができる。ＴＰＭチップとセキュアブートは、ＯＳとドライバーをそれらのカーネル空間で保護するので、ＴＰＭは、ドライバー２０９とオペレーティングシステム２１１を効果的に保護することもできる。
【００３９】
ＤＰアクセラレータ１０５〜１０７の通信チャネルは、ＯＳやドライバーによって排他的に占有され得るので、前記通信チャネルは前記ＴＰＭチップによっても保護される。
【００４０】
一実施形態において、ホストマシン１０４は、ＴＰＭ／ＣＰＵ２１３によって保護されるように実施される信頼できる実行環境（ＴＥＥ）２０１を含む。ＴＥＥは、安全な環境である。ＴＥＥは、機密性と完全性に関して保護されるＴＥＥ内部にロードされたコードとデータを保証できる。ＴＥＥの例示は、ＳＧＸ（Ｉｎｔｅｌ  ｓｏｆｔｗａｒｅ  ｇｕａｒｄ  ｅｘｔｅｎｓｉｏｎｓ）またはＡＭＤ  ＳＥＶ（ｓｅｃｕｒｅ  ｅｎｃｒｙｐｔｅｄ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ）であり得る。Ｉｎｔｅｌ  ＳＧＸおよび／またはＡＭＤ  ＳＥＶは、ユーザレベルのコードにより高い権限レベルで実行されるプロセスから保護されるＣＰＵのメモリのプライベート領域を割り当てるように許可する中央処理装置（ＣＰＵ）の命令コードのセットを含んでもよい。ここで、ＴＥＥ２０１は、ユーザアプリケーション２０３とランタイムライブラリ２０５を保護することができ、ユーザアプリケーション２０３とランタイムライブラリ２０５は、それぞれエンドユーザとＤＰアクセラレータベンダーによって提供されてもよい。ここで、ランタイムライブラリ２０５は、ＡＰＩ呼び出しを前記ＤＰアクセラレータの実行、コンフィギュレーション、および／または制御のためのコマンドに変換することができる。一実施形態において、ランタイムライブラリ２０５は、ユーザアプリケーションによって実行される事前決定された（例えば、予め定義された）カーネルのセットを提供する。
【００４１】
他の一実施形態において、ホストマシン１０４は、Ｒｕｓｔ、ＧｏＬａｎｇなどのメモリセーフ言語を用いて実現される１つまたは複数のメモリセーフアプリケーション２０７を含む。ＭｅｓａＬｏｃｋ  ＬｉｎｕｘのようなメモリセーフＬｉｎｕｘリリース（ｍｅｍｏｒｙ  ｓａｆｅ  Ｌｉｎｕｘ  ｒｅｌｅａｓｅｓ）上で実行されるこれらのメモリセーフアプリケーションは、データの機密性と整合性の攻撃からシステム２００をさらに保護することができる。しかし、オペレーティングシステムは、あらゆるＬｉｎｕｘディストリビューション、ＵＮＩＸ、およびＷｉｎｄｏｗｓ  ＯＳやＭａｃ  ＯＳであり得る。
【００４２】
一実施形態において、システムは、次のように設定することができる。メモリセーフＬｉｎｕｘディストリビューションは、ＴＰＭセキュアブートが搭載されたシステム（例えば、図２のホストシステム１０４）上にインストールされる。前記インストールは、製造または準備の段階の間に、オフラインで実行することができる。前記インストールは、前記ホストシステムのユーザ空間のアプリケーションがメモリセーフプログラミング言語を利用してプログラミングされるように確保することができる。ホストシステム１０４上で実行される他のアプリケーションがメモリセーフアプリケーション（ｍｅｍｏｒｙ−ｓａｆｅ  ａｐｐｌｉｃａｔｉｏｎｓ）になるように確保するのは、ホストシステム１０４に対する潜在的な機密性と整合性の攻撃をさらに軽減することができる。
【００４３】
インストール後、前記システムは、続いてＴＰＭに基づくセキュアブートを使用して起動することができる。ＴＰＭセキュアブートは、アクセラレータサービスを提供するカーネル空間で、サインされた／認証されたオペレーティングシステムおよびアクセラレーター・ドライバーのみを起動するように確保する。一実施形態において、オペレーティングシステムは、ハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）を使用してロードすることができる。ハイパーバイザまたは仮想マシンマネージャは、仮想マシンを作成して実行するコンピュータソフトウェア、ファームウェア、またはハードウェアである。カーネル空間は、ユーザアプリケーションに機能とサービスを提供するように、カーネル（即ち、実行のための所定の（例えば、予め定義された）機能セット）が識別される宣言型領域または範囲であることを留意しなければならない。システムの整合性が損なわれる場合、ＴＰＭセキュアブートは起動されずに、代わりにシステムがシャットダウンされる可能性がある。
【００４４】
セキュアブート後、ランタイムライブラリ２０５は、ＴＥＥ２０１を実行して作成し、ＴＥＥ２０１は、ＣＰＵ２１３に関連付けられてる信頼できるメモリ空間にランタイムライブラリ２０５を配置する。その後、ユーザアプリケーション２０３は、ＴＥＥ２０１で立ち上げる。一実施形態において、ユーザアプリケーション２０３とランタイムライブラリ２０５は、静的にリンクされて一緒に立ち上げる。他の一実施形態において、ランタイム２０５が、まずＴＥＥで立ち上げた後、ユーザアプリケーション２０５がＴＥＥ２０１で動的にロードされる。他の一実施形態において、ユーザアプリケーション２０５が、まずＴＥＥで立ち上げた後、ランタイム２０５がＴＥＥ２０１で動的にロードされる。静的にリンクされたライブラリは、コンパイルタイムでアプリケーションにリンクされたライブラリであることを留意しなければならない。動的ロードは、動的リンカによって実行されてもよい。動的リンカは、ランタイムにユーザアプリケーションを実行するための共有ライブラリをロードしリンクする。ここで、ＴＥＥ２０１内のユーザアプリケーション２０３とランタイムライブラリ２０５は、ランタイムに互いに可視である。例えば、すべてのプロセスデータは、互いに可視である。しかし、ＴＥＥに対する外部アクセスは拒否される。
【００４５】
他の一実施形態において、ユーザアプリケーションは、ランタイムライブラリ２０５によって事前決定されたようなカーネルセットからカーネルを呼び出すことができる。他の一実施形態において、ユーザアプリケーション２０３とランタイムライブラリ２０５は、キャッシュベースのサイドチャネル攻撃のようなサイドチャネル攻撃を防御するためにサイドチャネルフリーアルゴリズムによって強化される。サイドチャネル攻撃は、実現されたアルゴリズム自体の脆弱性（例えば、暗号化分析、ソフトウェアのバグ）でなく、コンピュータシステムの実現から得られた情報に基づく攻撃である。サイドチャネル攻撃の例示として、仮想化された環境やクラウド環境で攻撃者が共有物理システムのキャッシュを監視する能力を基にする攻撃であるキャッシュ攻撃を含む。強化は、キャッシュに対するマスキング、およびアルゴリズムによって生成されキャッシュに配置される出力を含んでもよい。次に、ユーザアプリケーションの実行が完了されると、ユーザアプリケーションは、実行を終了してＴＥＥを終了する。
【００４６】
要約すると、システム２００は、データの機密性と整合性の損失からＤＰアクセラレータ（例えば、機械学習モデル、トレーニングデータおよび推論出力のようなデータの通信）を保護するために、複数の保護層を提供する。システム２００は、ＴＰＭに基づくセキュアブート保護層、ＴＥＥ保護層、カーネル確認／検証層を含んでもよい。また、システム２００は、ホストマシン上の他のアプリケーションがメモリセーフなプログラミング言語を用いて実現されるようにすることで、メモリセーフなユーザ空間を提供することができ、これは潜在的なメモリ破損／脆弱性を排除することで、攻撃をさらに削除することができる。また、システム２００は、サイドチャネルフリーアルゴリズムを使用して、キャッシュによるサイドチャネル攻撃のようなサイドチャネル攻撃を防御するアプリケーションを含んでもよい。
【００４７】
図３は、一実施形態による方法の一例を示すフローチャートである。プロセス３００は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含み得る処理ロジックによって実行されることができる。例えば、プロセス３００は、図１のホストシステム１０４のようなホストシステムによって実行されることができる。図３を参照すると、ブロック３０１において、処理ロジックは、ホストシステムのセキュリティモジュール（例えば、信頼できるプラットフォームモジュール（ＴＰＭ））を利用して、セキュアブートを実行する。ブロック３０２において、処理ロジックは、オペレーティングシステム（ＯＳ）とデータ処理（ＤＰ）アクセラレータに関連付けられるアクセラレーター・ドライバーが信頼できるソースにより提供されたか否かを検証する。ブロック３０３において、処理ロジックは、ＯＳ内でアクセラレーター・ドライバーを立ち上げる。ブロック３０４において、処理ロジックは、ホストシステムのＣＰＵに関連付けられている信頼できる実行環境（ＴＥＥ）を生成する。ブロック３０５において、処理ロジックは、ＴＥＥでアプリケーションとランタイムライブラリを立ち上げ、ここで、前記アプリケーションは、前記ランタイムライブラリと前記アクセラレーター・ドライバーを介して前記ＤＰアクセラレータと通信する。
【００４８】
一実施形態において、アプリケーションおよびランタイムライブラリは、静的にリンクされて一緒に立ち上がる。他の一実施形態において、ランタイムライブラリはＴＥＥで立ち上げ、アプリケーションはランタイムライブラリが立ち上がった後に起動するために動的にロードされる。一実施形態において、処理ロジックは、ホストマシン上で他のアプリケーション（即ち、メモリセーフなアプリケーション）を立ち上げる。他の一実施形態において、メモリセーフなアプリケーションは、１つまたは複数のメモリセーフなプログラミング言語で実現される。一実施形態において、ランタイムライブラリは、アプリケーションによって起動される所定のカーネルのセットを提供し、ＤＰアクセラレータによってタスクを実行する。一実施形態において、処理ロジックは、キャッシュベースのサイドチャネル攻撃を防御するためにサイドチャネルフリーアルゴリズムを利用して、ＴＥＥで実行されるアプリケーションとランタイムライブラリをさらに強化させる。
【００４９】
図４は、一実施形態によるＩ／Ｏマネージャを備えるホストの一例を示すブロック図である。システム４００は、前記ホストとＤＰアクセラレータとの間の通信を保護するための保護策を提供する、図２のシステム２００を表すことができる。図４を参照すると、一実施形態において、ホストシステム１０４のＴＥＥ２０１は、Ｉ／Ｏマネージャ４０１を含む。一実施形態において、ＤＰアクセラレータ４０５〜４０７は、Ｉ／Ｏインターフェース４１５〜４１７を含む。Ｉ／Ｏインタフェース４１５〜４１７は、それぞれのホストがＤＰアクセラレータのメモリに直接アクセスすることを遮断、禁止または拒否する。一方、Ｉ／Ｏマネージャ４０１は、ＤＰアクセラレータがホストシステム１０４のいくつかの特定のメモリブロックのみにアクセスするように許可する。
【００５０】
従来のＤＰアクセラレータは、ホストマシンにＤＰアクセラレータの全部のメモリへのアクセスを許可させるＩ／Ｏインタフェースを含む。実際に、悪意のあるアプリケーションは、ＤＰアクセラレータのグローバルメモリ中のメモリバッファを盗んだり変更するために、これらの権限を乱用する可能性がある。これらの技術的な問題を解決するために、本開示の実施形態は、ＤＰアクセラレータのメモリシステムに対するアクセスを禁止する通信プロトコルを実施する。例えば、ホストシステムは、コマンドを送信するためにコマンドチャネルを介してＤＰアクセラレータとのみ通信することができ、ＤＰアクセラレータは、データチャネルを介して通信し、ホストマシンのＩ／Ｏマネージャを介してホストシステムからデータを読み出したり、データをホストシステムに書き込んだりすることができる。したがって、Ｉ／Ｏマネージャは、ＤＰアクセラレータによるデータのアクセスをさらに特徴付けることができ、ＤＰアクセラレータにホストシステムの限られたメモリ範囲だけにアクセスさせるようにすることができる。
【００５１】
説明のために、ＤＰによって実行される例示的な演算は、加算演算（例えば、１＋２＝３）であってもよい。この場合、ＤＰアクセラレータのメモリアドレスにアクセスすることができるホストシステムは、複数のデータ準備命令をリモートに送信して、加算演算が実行される前に、データをＤＰアクセラレータのメモリバッファにロードすることができる。
【００５２】
しかし、ＤＰアクセラレータへのメモリアクセスがないホストシステムは、アクセラレータのメモリアドレスを参照することができず、データ準備オペレーションのための別のセットのプロセッサ命令を送信しなければならない。続いて、ＤＰアクセラレータは、ホストマシンからのデータ読み出しを行い、データ（例えば、加算命令のオペランド）を取得するための後続の命令を送信する。ここで、前記ＤＰアクセラレータの前記メモリアドレスは、前記ホストシステムには見えない。
【００５３】
図５は、いくつかの実施形態に係るＤＰアクセラレータと通信するＩ／Ｏマネージャの一例をさらに示すブロック図である。システム５００は、図４のシステム４００の詳細図であってもよい。図５を参照すると、一実施形態において、Ｉ／Ｏマネージャ４０１は、コマンド生成手段（ｃｏｍｍａｎｄ  ｇｅｎｅｒａｔｏｒ）５０１、マップドメモリ５０３（ｍａｐｐｅｄ  ｍｅｍｏｒｙ）およびアクセス制御リスト（ＡＣＬ）モジュール５０５を含む。Ｉ／Ｏマネージャ４０１は、ドライバー２０９に通信可能に接続することができ、ドライバー２０９は、ＡＣＬマップ５０７（例えば、ＩＯ  ＭＭＵ）を含んでもよい。コマンド生成手段５０１は、ＤＰアクセラレータへ送信されるコマンドを生成することができる。マップドメモリ５０３は、ホストサーバー１０４の複数のメモリ領域を含むことができ、前記メモリ領域は、各ＤＰアクセラレータにマップされる。マップドメモリ５０３は、ホストサーバー１０４のメモリ（例えば、図４のハードウェア２１３の一部分）であってもよい。ＡＣＬモジュール５０５は、対応するＤＰアクセラレータのロジックテーブルに基づいて、ホストサーバー１０４の対応するマップドメモリ領域へのアクセスを制御（例えば、許可または拒否）することができる。ＡＣＬマップ５０７は、図６に示すように、メモリ５０３の異なるメモリ領域をＤＰアクセラレータにマップするマッピングテーブルを含むことができる。ここで、図６は、一実施形態に基づいてＤＰアクセラレータ１が１つ以上の領域（例えば、領域１、．．．、領域１１）にマップされ、ＤＰアクセラレータ２が領域１２にマップされることを示す。例えば、各ＤＰアクセラレータは、複数のメモリ領域にマップすることができる。
【００５４】
例えば、一実施形態において、ＤＰアクセラレータは、ホストサーバーのメモリ位置（例えば、マップドメモリ５０３）に直接アクセスすることが許可されない。しかし、ＡＣＬマップ５０７がアクセスされる（複数の）メモリ領域にマップされたＤＰアクセラレータのエントリを含む場合、ＤＰアクセラレータは（ＡＣＬモジュール５０５を介して）ホストサーバーのメモリ領域にアクセスすることができる。一実施形態において、ＤＰアクセラレータがホストシステム１０４に追加される場合、例えば、ホストシステム１０４が、新しいＤＰアクセラレータが接続されていることを見つけた場合、ＡＣＬモジュール５０５は、ＤＰアクセラレータに識別子を割り当て、ＤＰアクセラレータに対応するＡＣＬマップ５０７上にエントリを挿入し、および／または、ＤＰアクセラレータのために、メモリ５０３（例えば、図４のハードウェア２１３の一部のようなホストサーバー１０４のメモリなど）から利用可能なメモリブロックをリザーブ（ｒｅｓｅｒｖｅ）するかまたは割り当てる。一実施形態において、ＡＣＬモジュール５０５は、ＤＰアクセラレータに通知を送信してＤＰアクセラレータに利用可能なメモリブロックを通知することができる。一実施形態において、ＤＰアクセラレータ識別子は、生成されたＧＵＩＤ／ＵＵＩＤ（汎用一意識別子；ｕｎｉｖｅｒｓａｌｌｙ  ｕｎｉｑｕｅ  ｉｄｅｎｔｉｆｉｅｒ）、ＭＡＣアドレス、ＤＰアクセラレータに関連付けられているＩＰアドレス、またはそれらの組み合わせであってもよい。いくつかの実施形態において、ホストシステムは、複数のＤＰアクセラレータに接続される。一実施形態において、ＤＰアクセラレータがホストシステム１０４から取り外された場合、例えば、ホストシステム１０４が、既存のＤＰアクセラレータがホストサーバー１０４に接続されていないことを見つけた場合、ＡＣＬモジュールは、ＤＰアクセラレータに対応するＡＣＬマップ５０７からエントリを削除し、および／またはＤＰアクセラレータに対応するメモリ５０３からメモリブロックの割り当てを解除することができる。
【００５５】
図５を参照すると、一実施形態において、ＤＰアクセラレータ４０５のＩ／Ｏインタフェース４１５は、制御レジスタ５１１とコマンドデコーダ５１３のようなモジュールを含む。制御レジスタ５１１は、実行ユニット５１７および／またはグローバルメモリの動きを制御することができる。コマンドデコーダ５１３は、ＤＰアクセラレータ４０５によって受信されたコマンドをデコードすることができる。一実施形態において、ＤＰアクセラレータ４０５は、Ｉ／Ｏマネージャ４０１からデータを取得するためのコマンドを読み出して、上記のコマンドをＩ／Ｏマネージャ４０１に書き込むためのコマンドなどの後続のコマンドを送信して、請求されたコマンドを完了することができる。
【００５６】
図７は、一実施形態に係るホストとＤＰアクセラレータの間の例示的な通信を示すブロック図である。オペレーション７００は、ホストサーバー１０４および／またはＤＰアクセラレータ４０５によって実行されることができる。図７を参照すると、オペレーション７０１において、ホストサーバー１０４は、コマンドチャネルを介してＤＰアクセラレータによって処理されるために、データ準備コマンド請求（例えば、データ準備オペレーションを実行するためのデータ準備命令）をＤＰアクセラレータ４０５に送信する。オペレーション７０２において、ＤＰアクセラレータ４０５は、請求されたコマンドをデコードして、データ準備オペレーションコマンドとなるコマンドの種類を確定する。
【００５７】
請求されたコマンドを完了するために、ホストサーバー１０４からのデータが必要であると判定された場合、オペレーション７０３において、ＤＰアクセラレータ４０５は、ホストメモリからのデータの読み出しアクセス（例えば、読み出しオペレーション）を請求する。ここで、前記データは、ホストシステムの第１のメモリ位置（例えば、図５のマップドメモリ５０３）に存在することができる。オペレーション７０４において、読み出しアクセス請求を受信したことに応じて、ホストサーバー１０４は、請求するＤＰアクセラレータと請求されるホストサーバー１０４上のメモリ領域（例えば、第１のメモリ位置）を識別し、ＡＣＬマップをクエリーして、前記ＤＰアクセラレータが要求されたメモリ領域へのアクセス権限を持っているか否かを判定する。
【００５８】
例えば、ホストサーバー１０４は、ＤＰアクセラレータに関連付けられている識別子によって前記ＤＰアクセラレータのＡＣＬマップをクエリーすることができる。クエリー結果エントリが存在する場合、ホストサーバー１０４は、前記結果エントリから、請求されたメモリ位置がメモリ領域内にあるか否かを判定することができる。メモリ領域内にあることが判定された場合、ＤＰアクセラレータ４０５は、読み出し／書き込みアクセス権限を持っている。ＤＰアクセラレータがメモリ領域への読み出しアクセス権限を持っていることが判定された場合、オペレーション７０５において、ホストサーバー１０４は、データチャネルを介して、請求されたデータを返す。ＤＰアクセラレータが読み出しアクセス権限を持っていないことが判定された場合、ホストサーバー１０４は、読み出しエラーの通知をＤＰアクセラレータ４０５に送信することができる。
【００５９】
オペレーション７０６において、ホストサーバー１０４は、ＤＰコマンドや計算またはコンフィギュレーションコマンドまたはＤＰ命令を送信する。オペレーション７０７において、ＤＰアクセラレータ４０５は、ＤＰコマンドまたはＤＰオペレーションを処理する。オペレーション７０８において、請求されたコマンドが完了されると、ＤＰアクセラレータ４０５は、完了結果をＤＰアクセラレータ４０５のグローバルメモリ（例えば、図５のグローバルメモリ５１５）に格納する。ＤＰアクセラレータ４０５は、続いてデータチャネルを介して完了結果を書き込み請求としてホストサーバー１０４に送信する。オペレーション７０９において、ホストサーバー１０４は、ＤＰアクセラレータと書き込みアクセスのために請求されたメモリ領域（例えば、第２のメモリ位置）を識別しＡＣＬマップをクエリーして、ＤＰアクセラレータ４０５が請求されたメモリ領域への書き込みアクセス権限を持っているか否かを判定する。
【００６０】
ＤＰアクセラレータが書き込みアクセス権限を持っていることが判定された場合、オペレーション７１０において、ホストサーバー１０４は、前記結果を請求されたメモリ位置に格納する。オペレーション７１１において、ホストサーバー１０４は、前記結果が正常に受信されると、その後確認応答を送り出すことができる。ＤＰ／コンピューティングコマンドは、ＤＰアクセラレータによって処理される（複数の）データ処理オペレーションに対するコマンドを意味することに留意しなければならない。コンフィギュレーションコマンドは、ＤＰアクセラレータのコンフィギュレーションのためのコマンドを意味する。データ準備コマンドは、（例えば、ホストサーバーからＤＰコマンドのためのオペランドのようなデータをフェッチする）データ準備オペレーションのためのコマンドを意味する。
【００６１】
図８Ａ及び図８Ｂは、いくつかの実施形態による例示的な方法を示すフローチャートである。プロセス８００とプロセス８２０は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含み得る処理ロジックによって実行されることができる。例えば、プロセス８００は、図４のホストシステム（例えば、Ｉ／Ｏマネージャ４０１）によって実行されることができ、プロセス８２０は、図４のＤＰアクセラレータ（例えば、Ｉ／Ｏインタフェース４１５）によって実行されることができる。図８Ａを参照すると、ブロック８０１において、処理ロジックは、バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で安全な接続を作成し、前記安全な接続は、１つまたは複数のデータチャネルを含む。他の一実施形態において、安全な接続は、１つまたは複数のコマンドチャネルを含む。ブロック８０２において、処理ロジックは、一つのコマンドチャネルを介して第１の命令をホストシステムからＤＰアクセラレータに送信し、前記第１の命令は、ＤＰアクセラレータがデータ準備オペレーションを実行するように請求する命令である。ブロック８０３において、処理ロジックは、前記第１の命令に応じて、一つのデータチャネルを介してＤＰアクセラレータから、ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を受信する。ブロック８０４において、前記第１の請求に応じて、処理ロジックは、前記データチャネルを介してホストシステムの第１のメモリ位置から検索された第１のデータを前記ＤＰアクセラレータに送信し、ここで、前記第１のデータは、計算やコンフィギュレーションのオペレーションに使用される。ブロック８０５において、処理ロジックは、コマンドチャネルを介して第２の命令を前記ホストシステムから前記ＤＰアクセラレータに送信し、前記第２の命令は、ＤＰアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。
【００６２】
一実施形態において、処理ロジックは、前記第１の請求をさらにチェックして、前記ＤＰアクセラレータに前記ホストシステムの前記第１のメモリ位置から読み出す権限があるか否かを判定し、前記ＤＰアクセラレータが前記第１のメモリ位置から読み出し権限があると判断されると、前記ＤＰアクセラレータが前記第１のメモリ位置から読み出すように許可する。一実施形態において、ＤＰアクセラレータは、前記ホストシステムの前記第１のメモリ位置への直接アクセスが許可されない。一実施形態において、前記ＤＰアクセラレータは、前記ホストシステムに接続された複数のＤＰアクセラレータの一つである。
【００６３】
一実施形態において、処理ロジックは、前記データチャネルを介して前記ＤＰアクセラレータから第２のデータを書き込むための第２の請求をさらに受信する。ここで、前記第２のデータは、前記ホストシステムの第２のメモリ位置に書き込まれる。前記第２の請求に応じて、処理ロジックは、前記ホストシステムの前記第２のメモリ位置で前記第２のデータを格納する。他の一実施形態において、処理ロジックは、前記第２の請求をさらにチェックして、前記ＤＰアクセラレータに前記ホストシステムの前記第２のメモリ位置に書き込む権限があるか否かを判定する。ＤＰアクセラレータに第２のメモリ位置に書き込む権限があると判断されると、処理ロジックは、前記ＤＰアクセラレータに前記第２のメモリ位置に書き込むように許可する。他の一実施形態において、前記第２のデータは、前記命令に応じた計算またはコンフィギュレーションのオペレーションの結果の少なくとも一部を表す。
【００６４】
図８Ｂを参照すると、一実施形態において、ブロック８２１において、処理ロジックは、バスを介してホストシステムとデータ処理（ＤＰ）アクセラレータの間で安全な接続を作成し、前記安全な接続は、１つまたは複数のコマンドチャネルおよび／または１つまたは複数のデータチャネルを含む。ブロック８２１において、処理ロジックは、前記ＤＰアクセラレータにおいて、コマンドチャネルを介して前記ホストシステムから第１の命令を受信し、前記第１の命令は、前記ＤＰアクセラレータがデータ準備オペレーションを実行するように要請する命令である。ブロック８２３において、前記第１の命令に応じて、処理ロジックは、データチャネルを介して前記ＤＰアクセラレータから前記ホストシステムに、前記ホストシステムの第１のメモリ位置から第１のデータを読み出すための第１の請求を送信する。ブロック８２４において、処理ロジックは、前記データチャネルを介して前記ホストシステムから前記第１のデータを受信し、ここで、前記第１のデータは、前記ホストシステムによって前記ホストシステムの前記第１のメモリ位置から検索される。ブロック８２５において、処理ロジックは、前記コマンドチャネルを介して前記ホストシステムから第２の命令を受信し、前記第２の命令は、前記ＤＰアクセラレータに計算またはコンフィギュレーションのオペレーションを実行させるように請求する命令である。ブロック８２６において、処理ロジックは、少なくとも前記第１のデータに基づいて計算またはコンフィギュレーションのオペレーションを実行する。
【００６５】
一実施形態において、前記ホストシステムは、前記第１の請求をチェックして、前記ＤＰアクセラレータに前記ホストシステムの前記第１のメモリ位置から読み出す権限があるか否かを判定することができる。ここで、前記ホストシステムは、前記ＤＰアクセラレータに前記第１のメモリ位置から読み出す権限があると判断されると、前記ＤＰアクセラレータが前記第１のメモリ位置から読み出すように許可する。他の一実施形態において、前記ＤＰアクセラレータは、前記ホストシステムの前記第１のメモリ位置への直接アクセスが許可されない。他の一実施形態において、前記ＤＰアクセラレータは、前記ホストシステムに接続された複数のＤＰアクセラレータの一つである。
【００６６】
他の一実施形態において、処理ロジックはさらに、前記データチャネルを介して第２の請求を前記ＤＰアクセラレータから前記ホストシステムに送信し、第２のデータを前記ホストシステムの第２のメモリ位置に書き込み、ここで、前記第２のデータは、計算またはコンフィギュレーションオペレーションの結果の少なくとも一部を表す。他の一実施形態において、前記ホストシステムは、前記第２の請求をチェックして、前記ＤＰアクセラレータに前記ホストシステムの前記第２のメモリ位置へ書き込み権限があるか否かを判定することができる。ここで、前記ホストシステムは、前記ＤＰアクセラレータに前記第２のメモリ位置へ書き込み権限があると判断されると、前記ＤＰアクセラレータが前記第２のメモリ位置に書き込むように許可する。
【００６７】
図９は、一実施形態に係るホストチャネルマネージャを備えるホストの一例を示すブロック図である。システム９００は、図２のシステム２００を表すことができ、ホストと１つまたは複数のＤＰアクセラレータとの間の情報交換チャネルを確保する保護策を提供することができる。図９を参照すると、一実施形態において、ホストシステム１０４は、ホストチャネルマネージャ（ＨＣＭ）９０１を含むランタイムライブラリ２０５を含む。対応的に、ＤＰアクセラレータ４０５〜４０７のそれぞれは、アクセラレータチャネルマネージャ（ＡＣＭｓ）９１５〜９１７を含む。ＨＣＭとＡＣＭｓは、暗号化キーの生成をサポートして、ホストシステム１０４とＤＰアクセラレータ４０５〜４０７との間の非対称（例えば、ＲＳＡ）および／または対称（例えば、ＡＥＳ）暗号化による情報交換チャネルを設定する。ここで、ＤＰアクセラレータ４０５〜４０７は、図２のＤＰアクセラレータ２０５〜２０７であってもよい。
【００６８】
図１０は、いくつかの実施形態に係る１つまたは複数のアクセラレータチャネルマネージャ（ＡＣＭｓ）に通信可能に接続されているホストチャネルマネージャ（ＨＣＭ）の一例を示すブロック図である。システム１０００は、図９のシステム９００の詳細図であってもよい。図１０を参照すると、一実施形態において、ＨＣＭ９０１は、認証モジュール１００１、終了モジュール１００３、キーマネージャ１００５、キー・ストア１００７、暗号化エンジン１００９を含む。認証モジュール１００１は、ホストサーバー１０４上で実行されるユーザアプリケーションを認証してＤＰアクセラレータのリソースにアクセスしたり、ＤＰアクセラレータのリソースを利用したりするように認証することができる。終了モジュール１００３は、接続を終了することができ、例えば、前記接続に関連付けられるチャネルを終了することができる。キーマネージャ１００５は、異なるセキュアデータ交換チャネルのための１つまたは複数のデータパケットを暗号化／復号化するために、非対称キーペアまたは対称キーを管理（例えば、作成または破壊）することができる。ここで、各ユーザアプリケーション（図９のユーザアプリケーション２０３の一部として）は、一対多の関係で異なるセキュアデータ交換チャネルに対応するか、またはマップすることができ、各データ交換チャネルはＤＰアクセラレータに対応することができる。一実施形態によると、チャネル／セッションキーを利用して、チャネルにマップされるユーザアプリケーションの例示は、図１１で表すことができる。ここで、アプリケーション１はチャネルセッションキー１−１１にマップされ、ここで、各セッションキーはＤＰアクセラレータ（例えば、１１個のＤＰアクセラレータ）に対応するセキュアチャネルのためのものであり、アプリケーション２は、チャネルセッションキー１２にマップされ、キー１２は、特定のＤＰアクセラレータに対応される。キー・ストア１００７は、暗号化非対称キーペアまたは対称キーを格納することができる。暗号化エンジン１００９は、セキュアチャネルのいずれかによって交換された前記データのためのデータパケットを暗号化または復号化することができる。これらのモジュールの一部は、より少ないモジュールに統合されることができることに留意しなければならない。
【００６９】
図１０を参照すると、一実施形態において、ＤＰアクセラレータ４０５は、ＡＣＭ９１５およびセキュリティユニット（ＳＵ）１０２０を含む。セキュリティユニット１０２０は、キーマネージャ１０２５、キー・ストア１０２７、暗号化エンジン１０２９を含んでもよい。キーマネージャ１０２５は、非対称キーペアまたは対称キーを管理（例えば、生成、安全に保持、および／または破棄）することができる。キー・ストア１０２７は、暗号化非対称キーペアまたは対称キーを格納することができる。暗号化エンジン１０２９は、データ交換のためのキー情報またはデータパケットを暗号化または復号化することができる。いくつかの実施形態において、ＡＣＭ９１５とＳＵ１０２０は、統合されたモジュールである。
【００７０】
図１２Ａ及び図１２Ｂは、一実施形態に係るホストとＤＰアクセラレータとの間のセキュア情報交換の一例を示すブロック図である。例示１２００は、図１０のシステム１０００によって実行されることができる。図１０、図１２Ａ及び図１２Ｂを参照すると、一実施形態において、任意のデータ通信がＤＰアクセラレータ（例えば、ＤＰアクセラレータ４０５）とホストサーバー１０４上にホストされてＤＰアクセラレータ・リソースを請求するアプリケーションの間で行われる前に、安全な情報交換チャネルは、ホストサーバー１０４とＤＰアクセラレータの間で設定され、または作成される。情報交換チャネルの設定は、ホストサーバー１０４のユーザアプリケーションによって起動することができる。例えば、ユーザアプリケーション（例えば、図９のアプリケーション２０３のユーザアプリケーション）は、ＨＣＭ９０１がセキュアデータ交換チャネルを設定するように請求することができる。認証モジュール１００１は、前記請求を受信し、ユーザアプリケーションが信頼できるアプリケーションであることを認証することができる。一実施形態において、認証モジュール１００１は、ユーザアプリケーションまたはクライアントがユーザアプリケーションにアクセスする権限を検証し、例えば、ユーザアプリケーションまたはクライアントが請求されたＤＰアクセラレータからのリソースを利用する権限を備えるか否かを検証する。ユーザアプリケーションまたはクライアントが許可されている場合、情報は前記情報交換を暗号化および復号化するセッションキーを経由して、セキュアチャネルを介してユーザアプリケーションとＤＰアクセラレータの間で交換されることができる。
【００７１】
一実施形態において、セッションキーを生成するために、ＨＣＭ９０１は、アプリケーションおよび／またはチャネルに関連付けられる第１のパブリック／プライベートキーペアを生成することができる。または、前記第１のパブリック／プライベートキーペアは、ＨＣＭ９０１に関連付けられたキーペアであり得る。前記第１のパブリック／プライベートキーペアは、キー・ストア１００７に記憶されることができ、前記第１のパブリックキーは、ＤＰアクセラレータ４０５またはＡＣＭ９１５）に送信される（例えば、オペレーション１２０１）。その後、ＡＣＭ９１５は、セッションのためのユニークなセッションキー（例えば、第２のセッションキー）を生成し（例えば、オペレーション１２０２）、ここで、前記セッションキーは、前記ホストサーバー１０４と通信するデータパケットを暗号化／復号化するために使用することができる（例えば、オペレーション１２０５〜１２１６）。一実施形態において、セッションキーは、巡回冗長検査、チェックサム、または暗号化ハッシュ関数またはランダムハッシュ／乱数生成手段のようなハッシュ関数に基づいて導出された（または生成された）対称キーである。
【００７２】
一実施形態において、ＡＣＭ９１５が前記第１のパブリックキーを受信する場合、ＡＣＭ９１５は、前記チャネルのための第２のパブリック／プライベートキーペアを作成し、ここで、前記第２のパブリック／プライベートキーペアの前記第２のプライベートキー及び前記第１のパブリックキーは、セッションキーまたはセッションキーの構成要素を暗号化するために使用される。他の一実施形態において、前記第２のパブリック／プライベートキーペアは、ＤＰアクセラレータ４０５に関連付けられているキーペアである。一実施形態において、前記第１のパブリックキー、第２のパブリックキー、第２のプライベートキーおよび／または前記セッションキーは、キー・ストア１０２７に記憶されることができる。その後、前記セッションキー（またはその構成要素）は、前記第１のパブリックキーによって暗号化され、暗号化されたセッションキーは、前記第２のプライベートキーによってより暗号化（例えば、二重暗号化）され、二重暗号化されたセッションキー情報は、前記第２のパブリックキーと一緒にＨＣＭ９０１に送信することができる（例えば、オペレーション１２０３）。
【００７３】
その後、ＨＣＭ９０１のキーマネージャ１００５は、前記第２のパブリックキーと前記第１のプライベートキー（例えば、オペレーション１２０４）に基づいて、前記暗号化されたセッションキーを復号化して、前記セッションキーを導出（例えば、第１のセッションキーを生成）することができる。その後、前記ＤＰアクセラレータから前記ホストサーバー１０４に伝送されたデータ、またはその逆（例えば、オペレーション１２０５〜１２１６）は、対称セッションキーを使用して、通信のための前記データを暗号化および復号化することができる。例えば、データは暗号化され、次に、発信者によって情報交換チャネルを介して送信される。受信されたデータは、受信者によって解読される。ここで、ホストサーバー１０４とＤＰアクセラレータ４０５が前記データパケットを暗号化および復号化するための対称セッションキーと同じものを備えるので、ホストサーバー１０４とＤＰアクセラレータ４０５は、これらのデータパケットを読み出すことができる。
【００７４】
一実施形態において、ホストサーバー１０４（例えば、ＨＣＭ９０１）は、ＤＰアクセラレータ４０５（例えば、ＡＣＭ９１５）のメモリバッファに直接アクセスすることはできないが、ＤＰアクセラレータは、ホストサーバー１０４のメモリバッファにアクセスすることができる。したがって、オペレーション１２０５〜１２１１は、暗号化されたデータパケットをホストサーバー１０４からＤＰアクセラレータ４０５に送信するオペレーションであり、オペレーション１２１２〜１２１６は、暗号化されたデータパケットをＤＰアクセラレータ４０５からホストサーバー１０４に送信するオペレーションである。ここで、オペレーション１２０６〜１２１０は、前記ホストサーバー１０４がデータパケットをＤＰアクセラレータ４０５に提供する図７のオペレーション７０１〜７０５と類似する。
【００７５】
最後に、前記アプリケーションが前記セッションの終了をシグナリングする場合、アプリケーションは、ＨＣＭ９０１にセッションを終了させるように請求することができる。その後、終了モジュール１００３は、キーマネージャ１００５がオペレーション１２１５の一部である前記セッションに関連付けられたセッションキー（例えば、前記第１のセッションキー）を破壊するように請求し、ＤＰアクセラレータ４０５のＡＣＭ９１５に終了通知（例えば、オペレーション１２１６）を送信して、キーマネージャ１０２５に前記セッションに関連付けられた対称セッションキー（例えば、前記第２のセッションキー）を破壊させるように要請することができる。ＨＣＭ９０１はＡＣＭ９１５のみと通信することに図示しているが、ＨＣＭ９０１は、複数のＤＣアクセラレータに対応する複数のＡＣＭｓと通信して、同時に複数のデータ交換接続を作成することができる。
【００７６】
図１３Ａ及び図１３Ｂは、いくつかの実施形態に係る例示的な方法を示すフローチャートである。プロセス１３００とプロセス１３２０は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含み得る処理ロジックによって実行されることができる。例えば、プロセス１３００は、図９のホストシステム（例えば、ＨＣＭ９０１）によって実行され、プロセス１３２０は、図９のＤＰアクセラレータ（例えば、ＡＣＭ９１５）によって実行されることができる。図１３Ａを参照すると、ブロック１３０１において、処理ロジックは、ホストシステムのホストチャネルマネージャ（ＨＣＭ）で、アプリケーションから請求を受信してデータ処理（ＤＰ）アクセラレータとのセキュアチャネルを作成し、ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。ブロック１３０２において、前記請求に応じて、処理ロジックは、ＨＣＭに関連付けられる第１のキーペアの第１のプライベートキー、及び前記ＤＰアクセラレータに関連付けられる第２のキーペアの第２のパブリックキーに基づいて、セキュアチャネルのための第１のセッションキーを生成する。ブロック１３０３において、前記ＤＰアクセラレータに送信される前記アプリケーションに関連付けられる第１のデータに応じて、処理ロジックは、前記第１のセッションキーを利用して、前記第１のデータを暗号化する。ブロック１３０４において、処理ロジックは、バスを介してセキュアチャネルを経由して、暗号化された第１のデータを前記ＤＰアクセラレータに送信する。
【００７７】
一実施形態において、前記請求に応じて、処理ロジックはさらに、前記ＨＣＭに関連付けられる前記第１のキーペアの第１のパブリックキーを前記ＤＰアクセラレータに送信する。その後、処理ロジックは、前記第１のパブリックキーの送信に応じて、前記ＤＰアクセラレータのアクセラレータチャネルマネージャ（ＡＣＭ）から前記ＤＰアクセラレータに関連付けられる前記第２のキーペアの前記第２のパブリックキーを受信する。他の一実施形態において、前記ＡＣＭは、第２のセッションキーを導出し、暗号化された第２のセッションキーを前記ＨＣＭに送信する前に、前記第１のパブリックキーと前記第２のキーペアの第２のプライベートキーに基づいて、前記第２のセッションキーを暗号化するように構成される。ここで、前記第１のセッションキーと前記第２のセッションキーは、同様の対称キーである。他の一実施形態において、前記ＡＣＭは、前記第２のセッションキーを用いて暗号化された第１のデータを復号化して前記第１のデータを復元するように構成される。
【００７８】
一実施形態において、処理ロジックはさらに、前記ＤＰアクセラレータの前記ＡＣＭから暗号化された第２のデータを受信し、ここで、前記第２のデータは、前記第２のセッションキーを用いて暗号化される。その後、処理ロジックは、前記第１のセッションキーを用いて暗号化された第２のデータを復号化して第２のデータを復元する。一実施形態において、前記請求に応じて、処理ロジックは、前記アプリケーションのアプリケーション識別子（ＩＤ）をさらにチェックして、前記アプリケーションが前記ＤＰアクセラレータへのアクセス権利があるか否かを判定する。ここで、前記第１のセッションキーは、前記アプリケーションが前記ＤＰアクセラレータへのアクセス権利がある場合のみに生成される。一実施形態において、処理ロジックはさらに、前記アプリケーションから前記セキュアチャネルを終了する請求を受信する。前記請求に応じて、処理ロジックは、前記第２のセッションキーを破壊することにより、前記ＡＣＭに安全な接続を終了させるように指示する命令を前記ＡＣＭに送信する。その後、処理ロジックは、前記ＨＣＭによって前記第１のセッションキーを破壊する。
【００７９】
図１３Ｂを参照すると、一実施形態において、ブロック１３２１において、処理ロジックは、データ処理（ＤＰ）アクセラレータのアクセラレータチャネルマネージャ（ＡＣＭ）で、ホストシステムのホストチャネルマネージャ（ＨＣＭ）のアプリケーションから請求を受信して、前記ホストシステムと前記ＤＰアクセラレータの間でセキュアチャネルを作成し、ここで、前記ＤＰアクセラレータは、バスを介して前記ホストシステムに接続される。ブロック１３２２において、前記請求に応じて、処理ロジックは、前記セキュアチャネルのための第２のセッションキーを生成し、前記暗号化された第２のセッションキー情報を前記ＨＣＭに送信する前に、前記ＤＰアクセラレータに関連付けられる第２のキーペアの第２のプライベートキー、及び前記ＨＣＭに関連付けられている第１のキーペアの第１のパブリックキーに基づいて、前記第２のセッションキーの情報を暗号化する。ブロック１３２３において、前記ホストシステムに送信される第１のデータに応じて、処理ロジックは、前記第２のセッションキーを利用して前記第１のデータを暗号化する。ブロック１３２４において、処理ロジックは、前記セキュアチャネルを介して、前記暗号化された第１のデータを前記ホストシステムの前記ＨＣＭに送信する。
【００８０】
一実施形態において、請求に応じて、処理ロジックはさらに、ＤＰアクセラレータに関連付けられる第２のキーペアの第２のパブリックキーを、ホストシステムのＨＣＭに転送し、前記ＨＣＭから前記ＨＣＭに関連付けられる第１のキーペアの第１のパブリックキーを受信する。他の一実施形態において、ＨＣＭは、ＨＣＭに関連付けられる第１のキーペアの第１のプライベートキー、及びＤＰアクセラレータに関連付けられている第２のキーペアの第２のパブリックキーに基づいて、第１のセッションキーを導出するように構成される。他の一実施形態において、ＨＣＭは、第１のセッションキーを用いて、暗号化された第１のデータを復号化して第１のデータを復元するように構成される。
【００８１】
他の一実施形態において、処理ロジックは、ホストシステムのＨＣＭから暗号化された第２のデータをさらに受信し、ここで、前記第２のデータは、第１のセッションキーを用いて暗号化される。その後、処理ロジックは、第２のセッションキーを用いて暗号化された第２のデータを復号化して第２のデータを復元し、ここで、前記第１のセッションキーと前記第２のセッションキーは、同じ対称キーである。一実施形態において、処理ロジックは、ホストシステムのＨＣＭからセキュアチャネルを終了する請求をさらに受信し、前記請求に応じて、処理ロジックは、ＡＣＭによって前記第１のセッションキーを破壊する。
【００８２】
図１４は、一実施形態によるホストチャネルマネージャ（ＨＣＭ）とアクセラレータチャネルマネージャ（ＡＣＭ）の間でセキュアな情報交換チャネルを作成するための例示的なシステムを示すブロック図である。システム１４００は、図９のシステム９００の詳細図であり得る。図１４を参照すると、一実施形態において、ＨＣＭ９０１は、キーＰＫ＿Ｏ１４０１、キーＳＫ＿Ｏ１４０３およびキーＰＫ＿ＲＫ（ｓ）１４１１を含む。キーＰＫ＿Ｏ１４０１、およびキーＳＫ＿Ｏ１４０３は、それぞれホストサーバー１０４のＨＣＭ９０１および／またはアプリケーション／ランタイムに関連付けられる非対称の暗号化キーペアのパブリックキーとプライベートキーであり、キーＰＫ＿ＲＫ（ｓ）１４１１は、ＤＰアクセラレータ４０５および／またはその他のＤＰアクセラレータのＡＣＭ９１５に関連付けられる１つまたは複数のパブリックキーである。ＨＣＭ９０１は、キーマネージャ１００５をさらに含んでもよい。ＤＰアクセラレータ４０５は、ＡＣＭ９１５に接続されたセキュリティユニット１０２０を含んでもよく、ここで、前記セキュリティユニット１０２０は、キーＰＫ＿ＲＫ１４１３、およびキーＳＫ＿ＲＫ１４１５を含んでもよく、ＰＫ＿ＲＫ１４１３とＳＫ＿ＲＫ１４１５は、それぞれＡＣＭ９１５および／またはＤＰアクセラレータ４０５に関連付けられる非対称の暗号化キーペアのパブリックキーとプライベートキーである。ＡＣＭ９１５は、キーマネージャ１０２５をさらに含む。キーマネージャ１００５、およびキーマネージャ１０２５は、対称アルゴリズム（例えば、ＡＥＳ）、および／または非対称アルゴリズム（例えば、ディフィー・ヘルマン鍵交換プロトコル、ＲＳＡなど）を利用して暗号化／復号化キーを生成することができる。
【００８３】
図１５は、一実施形態に係るホストとＤＰアクセラレータとの間のセッションキーを導出するための例示的な情報交換を示すブロック図である。例示１５５０は、セッションキーを導出するために、図１４のシステム１４００によって実行され得る複数のオペレーションを含む。図１４及び図１５を参照すると、一実施形態において、オペレーション１５５１において、ＨＣＭ９０１は、コマンド「ＣＭＤ＿パブリックキー取得（ＣＭＤ＿ｇｅｔ  ｐｕｂｌｉｃ  ｋｅｙ）」をＡＣＭ９１５に送信して、セッションキーを導出するためにプロセスを起動する。オペレーション１５５２において、請求コマンド受信時、ＡＣＭ９１５は、セッションキーの導出のために、一時的（または導出された）パブリック／プライベートキーペア（例えば、ＰＫ＿ｄとＳＫ＿ｄ）を生成する。ＡＣＭ９１５は、ＤＰアクセラレータに関連付けられるプライベートルートキー（例えば、ＳＫ＿ＲＫ）を利用して、一時的にパブリックキー（ＰＫ＿ｄ）を暗号化する。オペレーション１５５３において、暗号化された一時的なパブリックキーのコピーと一時的なパブリックキーのコピーは、ＡＣＭ９１５によってＨＣＭ９０１に送信される。オペレーション１５５４において、ＨＣＭ９０１は、上記キーのコピーを受信し、ＰＫ＿ＲＫを利用して暗号化された一時的なパブリックキーを解読する。ここで、ＰＫ＿ＲＫは、ＨＣＭ９０１によって予め受信され、図１４のＨＣＭ９０１のＰＫ＿ＲＫ（ｓ）１４１１に記憶され、復号化された一時的なパブリックキーは、オペレーション１５５３から受信された一時的なパブリックキーＰＫ＿ｄのコピーと比較する。解読されたキーが一時的なパブリックキーとマッチングする場合には、ＨＣＭ９０１は、メッセージが予想当事者からのメッセージであると検証した。ＰＫ＿ＲＫ（ｓ）１４１１は、複数のＤＰアクセラレータ４０５〜４０７のための複数のパブリックキーを含むことができることに留意しなければならない。
【００８４】
オペレーション１５５５において、ＨＣＭ９０１は、第１のランダムノンス（ｎｃ）を生成する。オペレーション１５５６において、ＨＣＭ９０１は、コマンド「ＣＭ＿セッションキー生成（ＣＭ＿ｇｅｎｅｒａｔｅ  ｓｅｓｓｉｏｎ  ｋｅｙ）」、ＨＣＭに関連付けられるパブリックキー（例えば、ＰＫ＿Ｏ）およびノンス（ｎｃ）をＡＣＭ９１５に送信する。オペレーション１５５７において、コマンド「ＣＭ＿セッションキー生成（ＣＭ＿ｇｅｎｅｒａｔｅ  ｓｅｓｓｉｏｎ  ｋｅｙ）」受信時、ＡＣＭ９１５は、第２のランダムノンス（ｎｓ）を生成する。オペレーション１５５８において、ＡＣＭ９１５は、前記第１のランダムノンス（ｎｃ）及び前記第２のランダムノンス（ｎｓ）に基づいて、セッションキーを導出する。一実施形態において、セッションキーは、ランダムノンス（ｎｓ）に連結されたランダムノンス（ｎｃ）のハッシュ関数によって導出される。他の一実施形態において、セッションキーは、ｎｓが添加されたｎｃを基にする値のハッシュ関数によって導出される。その後、セッションキーは、ＡＣＭ９１５とＨＣＭ９０１との間で交換されたデータを暗号化および復号化するのに利用される。
【００８５】
オペレーション１５５９において、ＡＣＭ９１５は、一時的なプライベートキー（例えば、ＳＫ＿ｄ）を利用して、ノンスｎｃとノンスｎｓを二重暗号化し、続いてＨＣＭに関連付けられるパブリックキー（例えば、ＰＫ＿Ｏ）を二重暗号化する。その後、ＡＣＭ９１５は、二重暗号化されたノンスｎｃとノンスｎｓをＨＣＭ９０１に送信する。オペレーション１５６０において、ＨＣＭ９０１は、ＨＣＭに関連付けられたプライベートキー（例えば、ＳＫ＿Ｏ）と一時的なパブリックキー（例えば、ＰＫ＿ｄ）に基づいて、二重暗号化されたノンスｎｃとノンスｎｓを解読する。オペレーション１５６１において、ＨＣＭ９０１は、ランダムノンスｎｃとＨＣＭ９０１によって最初に生成されたランダムノンスｎｃのコピーとが実際に同じか否かを検証することにより、セッションキーの鮮度を検証する。同じであると、オペレーション１５６２において、ＨＣＭ９０１は、第１のランダムノンス及び第２のランダムノンス（例えば、ｎｃとｎｓ）に基づいて、セッションキーを導出する。一実施形態において、セッションキーは、ランダムノンスｎｓに連結されたランダムノンスｎｃのハッシュ関数によって導出される。他の一実施形態において、セッションキーは、ｎｓが添加されたｎｃを基にする値のハッシュ関数によって導出される。その後、セッションキーは、ＨＣＭ９０１とＡＣＭ９１５との間で交換されたデータを暗号化および復号化するのに利用される。前記セッションキーは、対称暗号化アルゴリズムに基づく暗号化キーとして説明されているが、前記セッションキーは、パブリック／プライベートキーペアであってもよい。
【００８６】
図１６Ａ及び図１６Ｂは、いくつかの実施形態による例示的な方法を示すフローチャートである。プロセス１６００とプロセス１６２０は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行され得る。例えば、プロセス１６００は、図１４のホストサーバー（例えば、ＨＣＭ９０１）によって実行され得、プロセス１６２０は、図１４のＤＰアクセラレータ（例えば、ＡＣＭ９１５）によって実行され得る。図１６Ａを参照すると、ブロック１６０１において、一時的なパブリックキーＰＫ＿ｄをデータ処理（ＤＰ）アクセラレータから受信したことに応じて、処理ロジックは、ホストシステムで第１のノンス（ｎｃ）を生成し、ここで、ＤＰアクセラレータは、バスを介してホストシステムに接続される。ブロック１６０２において、処理ロジックは、セッションキーを生成するための請求をホストシステムからＤＰアクセラレータに送信し、前記請求は、ホストパブリックキー（ＰＫ＿Ｏ）及び第１のノンスを含む。ブロック１６０３において、処理ロジックは、ＤＰアクセラレータから第２のノンス（ｎｓ）を受信し、ここで、前記第２のノンスは、ホストパブリックキーと一時的なパブリックキーに対応する一時的なプライベートキー（ＳＫ＿ｄ）を利用して暗号化される。ブロック１６０４において、処理ロジックは、第１のノンス及び第２のノンスに基づいて第１のセッションキーを生成し、前記第１のセッションキーは、ホストシステムとＤＰアクセラレータの間の後続データ交換を暗号化または復号化するのに使用される。
【００８７】
一実施形態において、処理ロジックは、ＤＰアクセラレータに対して一時的なパブリックキーと、一時的なプライベートキーを含む導出されたり一時的なキーペアを生成するように請求するための請求をホストシステムからＤＰアクセラレータに送信し、ここで、ＤＰアクセラレータは、前記請求に応じて、一時的なキーペアを生成する。一時的なキーは、ＤＰアクセラレータによる実現に基づいて所定の期間（例えば、数日、数週間あるいは数ヶ月）に亘って一回または複数回に使用され得る。他の一実施形態において、ＤＰアクセラレータからの一時的なパブリックキーは、第１の一時的なパブリックキーであり、処理ロジックはさらに暗号化された第２の一時的なパブリックキーを受信し、前記第２の一時的なパブリックキーは、すでにＤＰアクセラレータによってアクセラレータプライベートルートキー（ＳＫ＿ＲＫ）を利用して暗号化されている。他の一実施形態において、処理ロジックはさらに、アクセラレータプライベートルートキーに対応するアクセラレータパブリックルートキー（ＰＫ＿ＲＫ）を用いて、暗号化された第２の一時的なパブリックキーを解読して、第２の一時的なパブリックキーを復元する。その後、処理ロジックは、第１の一時的なパブリックキーと第２の一時的なパブリックキーが同じであるか否かを検証し、ここで、第１のノンスは、前記第１の一時的なパブリックキーと第２の一時的なパブリックキーが同じである時に生成される。
【００８８】
一実施形態において、ＤＰアクセラレータから第２のノンスを受信することは、一時的なパブリックキーに対応する一時的なプライベートキーを用いて暗号化された第１のノンス及び第２のノンスを受信することを含む。他の一実施形態において、処理ロジックはさらに、ホストシステムで第１の一時的なパブリックキーまたは第２の一時的なパブリックキーを用いて暗号化された第１のノンス及び第２のノンスを解読して、第１のノンス及び第２のノンスを復元する。他の一実施形態において、一時的なプライベートキーによって暗号化された第１のノンス及び第２のノンスはさらに、ＤＰアクセラレータによってホストのパブリックキーを利用して暗号化される。他の一実施形態において、処理ロジックは、ホストのパブリックキーに対応するホストプライベートキーを用いて暗号化された第１のノンス及び第２のノンスを解読して、前記第１のノンス及び前記第２のノンスを復元する。
【００８９】
図１６Ｂを参照すると、一実施形態において、ブロック１６２１において、ホストシステムから受信された請求に応じて、処理ロジックは、データ処理（ＤＰ）アクセラレータで一時的なプライベートキーと一時的なパブリックキーを生成し、ここで、ＤＰアクセラレータは、バスを介してホストシステムに接続される。ブロック１６２２において、処理ロジックは、ＤＰアクセラレータに関連付けられるアクセラレータプライベートルートキーを利用して、一時的なパブリックキーを暗号化する。ブロック１６２３において、処理ロジックは、暗号化されていない形式の一時的なパブリックキーと暗号化された一時的なパブリックキーをホストシステムに送信して、ホストシステムに一時的なパブリックキーを検証するように許可する。ブロック１６２４において、処理ロジックは、ホストシステムから第１のノンスを受信し、ここで、前記第１のノンスは、一時的なパブリックキーが検証された後にホストシステムによって生成される。ブロック１６２５において、処理ロジックは、前記第１のノンス及び前記第２のノンスに基づいてセッションキーを生成し、ここで、前記第２のノンスは、すでにＤＰアクセラレータでローカルに生成されている。
【００９０】
一実施形態において、暗号化された第１のノンス及び第２のノンスを生成するために、処理ロジックはさらに、一時的なプライベートキーを利用して第１のノンス及び第２のノンスを暗号化する。その後、処理ロジックはさらに、暗号化された第１のノンス及び第２のノンスをホストシステムに送信し、ホストシステムに対応するホストセッションキーを生成させるようにする。他の一実施形態において、処理ロジックはさらに、暗号化された第１のノンス及び第２のノンスを送信する前に、ホストシステムに関連付けられるホストのパブリックキーを用いて、暗号化された第１のノンス及び第２のノンスを暗号化する。他の一実施形態において、ホストシステムは、一時的なパブリックキーとホストシステムに関連付けられるホストプライベートキーを用いて、暗号化された第１のノンス及び第２のノンスを解読して、前記第１のノンス及び前記第２のノンスを復元するように構成される。他の一実施形態において、ホストシステムは、第１のノンスの鮮度を検証するように構成され、ここで、ホストセッションキーは、前記第１のノンスが所定の期間内に生成された場合のみに生成される。
【００９１】
ＤＰアクセラレータのメモリバッファは、ＤＰアクセラレータを実行するのに必要なプログラム、プログラムへの入力データ、およびプログラムからの出力結果を含むことができる。ＤＰアクセラレータのセキュリティ対策が施されていないメモリバッファは、全体のホストサーバー−ＤＰアクセラレータシステムアーキテクチャにおけるセキュリティー侵害をもたらす可能性がある。ＤＰアクセラレータのメモリバッファは、上述したように、ホストサーバーに対してこれらのＤＰアクセラレータへのアクセスを許可しないことを保護することができる。ホストサーバーがＤＰアクセラレータのメモリバッファにアクセスすることができないシナリオに対して、ホストサーバーは、ＤＰアクセラレータのためのメモリ利用情報を保持することができる。前記メモリ利用情報は、データの機密性と整合性を確保することができる信頼できる実行環境（ＴＥＥ）に保持することができる。
【００９２】
図１７は、一実施形態に係るＤＰアクセラレータのメモリバッファを保護するためのセキュアメモリマネージャ（ＭＭ）を備えるホストの一例を示すブロック図である。システム１７００は、図９のシステム９００を表し、ＤＰアクセラレータのメモリを管理するために、ホストサーバー１０４上にセキュアメモリマネージャを提供する。図１７を参照すると、一実施形態において、ホストサーバー１０４は、ＭＭ１７０１を含むランタイムライブラリ２０５を含む。対応的に、ＤＰアクセラレータ４０５は、メモリ１７０３と、メモリユニット（ＭＵ）１７０５を含んでもよいが、ＤＰアクセラレータ４０７がメモリ１７０７とＭＵ１７０９を含んでもよい。メモリマネージャは、ＤＰアクセラレータのメモリを管理することができる。メモリ１７０３とメモリ１７０７は、ＤＰアクセラレータのグローバルメモリであってもよい。グローバルメモリは、ＤＰアクセラレータ上で実行されるプログラムコード、プログラムコードへの入力およびプログラムの実行からの出力結果などの情報を格納するためのアクセラレータの中の構成要素であってもよい。ＭＵ１７０５とＭＵ１７０９のそれぞれは、ＤＰアクセラレータのメモリ１７０３とメモリ１７０７のメモリレイアウトとメモリ利用に関してＭＭ１７０１と通信して協働することができる。
【００９３】
図１８は、いくつかの実施形態に係るメモリマネージャＭＭの一例を示すブロック図である。図１８を参照すると、メモリマネージャ１７０１は、メモリ割り当て手段１８０１、メモリ割り当て解除手段１８０３およびメモリ利用レジストリテーブル１８１１を含んでもよい。メモリ割り当て手段１８０１は、ＤＰアクセラレータのグローバルメモリ（例えば、ＤＰアクセラレータ４０５のメモリ１７０３）からメモリブロックを割り当てることができる。メモリ割り当て解除手段１８０３は、ＤＰアクセラレータのグローバルメモリからメモリブロックを割り当て解除することができる。メモリ利用レジストリテーブル１８１１は、ホストサーバーのＤＰアクセラレータに関連付けられるメモリブロックのためのメモリレイアウトと利用情報を記録することができる。一実施形態において、各テーブル（レジストリテーブル１８１１の一部として）は、ＤＰアクセラレータに関連付けられることができ、前記テーブルは、複数のユーザアプリケーションのための複数のエントリを備えることができる。例えば、ユーザアプリケーションは、ＤＰアクセラレータの２つのメモリブロックを予定するための２つのエントリを備えることができる。その後、レジストリテーブルは参照として利用されてＤＰアクセラレータのためのメモリブロックを割り当てたり、割り当てを解除したりすることができる。メモリ利用レジストリテーブル１８１１は、１つまたは複数のメモリマネージャテーブルを含んでもよい。メモリマネージャテーブルは、コンピュータのオペレーティングシステムのうちのシステムによって使用され、ユーザアプリケーションと物理アドレスおよび／または仮想アドレスの間のマッピングを格納するためのデータ構造である。ＤＰアクセラレータの例示的なメモリ利用レジストリテーブルは、アプリケーションＩＤ、開始アドレスおよびサイズなどのフィールドを備えることができる。ここで、アプリケーションＩＤは、どのユーザアプリケーションにメモリブロックが割り当てられたかを示し、開始アドレスとサイズは、メモリブロックのアドレスとサイズを示す。いくつかの実施形態において、レジストリテーブルは、、読み出しアクセスまたは書き込みアクセスなど、対応するメモリブロックが割り当てられているかどうか、仮想アドレスメモリへの物理アドレスがマップされているかどうか、読み取りまたは書き込みアクセスなどを示すフラグのような追加のフィールドを含むことができる。多くのメモリ利用レジストリテーブルは存在し、各ＤＰアクセラレータは、１つのメモリ利用レジストリテーブルを備えることに留意しなければならない。
【００９４】
図１７〜図１８を参照すると、一例として、リモートクライアントは、ホストサーバー１０４上で（ユーザアプリケーション２０３の一部分としての）特定のアプリケーションを実行するためのコマンドを発行することができる。アプリケーションは、ランタイムライブラリ２０５によって提供されるＡＰＩへの呼び出しによって、ＤＰアクセラレータ（４０５〜４０７）からのリソースを利用するように請求することができる。前記リソースは、メモリリソースやプロセッサのリソースであってもよい。メモリリソースの例示に対して、請求の受信時、ランタイムライブラリ２０５は、ＭＭ１７０１のインスタンスを起動することができる。その後、ランタイムライブラリ２０５は、ＤＰアクセラレータ４０５がインスタンスのメモリ割り当て手段１８０１によって、ＤＰアクセラレータ４０５のメモリ７０３から指定されたサイズのメモリブロックを割り当てるようにＤＰアクセラレータ４０５に命令して、アプリケーションを実行することができる。
【００９５】
一実施形態において、リソースブロックが請求される前に、ＭＭ１７０１は、メモリ利用レジストリテーブル１８１１をクエリーして、リソースブロックが既に割り当てられているか否かを判定することができる。その後、ＭＭ１７０１は、第１のメモリブロックが割り当てられていないことが判定されたことに応じて、割り当てコマンドをＤＰアクセラレータ４０５に送信して、グローバルメモリの第１のメモリブロックをアプリケーションに割り当てる。他の一実施形態において、ＭＭ１７０１は、請求メモリブロックが既に割り当てられていることが判定されたことに応じて、第１の請求を拒否する。
【００９６】
ＭＵ１７０５は、コマンドを受信しメモリの割り当てを実行する。一実施形態において、ＭＵ１７０５は、割り当てられる前記請求のメモリブロックのサイズを備える連続メモリブロックを見つけるためにメモリ１７０３をトラバースすることができる。ここで、ＭＵ１７０５は、ＭＵ１７０５のために、ＤＰアクセラレータ４０５のために同様のメモリ利用のレジストリテーブル（例えば、メモリ利用のデータ構造）を保持してＤＰアクセラレータ４０５のためのメモリ１７０３をトラバースすることもできる。他の一実施形態において、ＭＭ１７０１は、割り当てコマンドとメモリ利用レジストリテーブルのコピーをＤＰアクセラレータ４０５に送信する。このようにして、ＭＵ１７０５は、すでに割り当てられたメモリに気付いている。その後、ＭＵ１７０５は、メモリ利用情報に基づいて、メモリブロックを割り当て、新たに割り当てられたメモリブロックのための新しいメモリ利用情報をＭＭ１７０１に返すことができる。その後、ＭＭ１７０１は、メモリブロックを請求するアプリケーションに対応するアプリケーション識別子、開始アドレスおよび割り当てられたメモリブロックのサイズをメモリ利用レジストリテーブル１８１１上に記録する。メモリの割り当て後、ＴＥＥ内で実行されるアプリケーションがＤＰアクセラレータ４０５〜４０７のメモリ位置にアクセスしようとする場合、ＭＭ１７０１は、レジストリテーブル１８１１を検索し、メモリ位置がアプリケーションに割り当てられているか否かを検証することができる。割り当てられていると、アプリケーションは、メモリ位置にアクセスすることが許可される。そうでなければ、アプリケーションは、メモリ位置にアクセスすることを拒否する。メモリブロックが割り当てられると、前記メモリブロックは、暇なときまでに続いて割り当てることができないことに留意しなければならない。
【００９７】
他の一実施形態において、ＭＵ１７０５が通信チャネルを介した物理アドレスの送信を避けるために、メモリブロックの割り当て時にメモリ利用情報を取得する場合、ＭＵ１７０５は、代わりに仮想メモリアドレスをＭＵ１７０１に返すことができる。ここで、ＭＵ１７０５は、物理メモリアドレスから仮想メモリアドレスへのマッピングテーブルを含むことができる。マッピングテーブルは、ＤＰアクセラレータ４０５のメモリ１７０３に対して仮想メモリアドレスから物理メモリアドレスへマッピングすることができる。このようにして、ＭＵ１７０５は、仮想メモリアドレスだけを開示し、その結果、メモリ１７０３の物理アドレスは、通信チャネルを介して開示されていない。
【００９８】
ユーザアプリケーションの実行が完了するか、またはクライアントが完了コマンドを発する場合、一実施形態において、ユーザアプリケーションは、ユーザアプリケーションに関連付けられたメモリブロックのためのメモリの割り当て解除コマンドをＤＰアクセラレータ４０５に送信することができる。他の一実施形態において、レジストリテーブルのコピーもＤＰアクセラレータ４０５に送信される。一実施形態において、メモリの割り当て解除コマンドが送信される前に、ＭＭ１７０１は、メモリブロックがメモリ利用データ構造に格納されたメモリ利用情報に基づいて、アプリケーションに割り当てられているか否かを判定する。割り当てられていると、割り当て解除コマンドは送信される。そうでなければ、割り当て解除コマンドは送信されず、例えば、割り当て解除請求は拒否され得る。
【００９９】
ＭＵ１７０５は、割り当て解除コマンドを受信して、メモリの割り当て解除を行う。一実施形態において、ＭＵ１７０５は、メモリ１７０３をトラバースして、メモリブロックのためのメモリバッファをリセットするようにメモリブロックを位置させる。その後、ＭＵ１７０５は、状態完了、および／または新しいメモリ利用情報をＭＭ１７０１に返す。その後、ＭＭ１７０１は、状態完了、および／または新しいメモリ利用情報に応じて、メモリ利用のレジストリテーブル１８１１をアップデート（例えば、エントリを削除）する。
【０１００】
図１９は、一実施形態による方法の一例を示すフローチャートである。プロセス１９００は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行されることができる。例えば、プロセス１９００は、図１７のホスト１０４のようなホストシステムによって実行されることができる。図１９を参照すると、ブロック１９０１において、処理ロジックは、ホストシステムの信頼できるプラットフォームモジュール（ＴＰＭ））のようなセキュリティモジュールを利用して、セキュアブートを実行する。ブロック１９０２において、処理ロジックは、ホストシステムの１つまたは複数のプロセッサに関連付けられる信頼できる実行環境（ＴＥＥ）を作成する。ブロック１９０３において、処理ロジックは、ＴＥＥ内のメモリマネージャを起動し、ここで、メモリマネージャは、バスを介してホストシステムに接続されたデータ処理（ＤＰ）アクセラレータのメモリリソースを管理するように構成され、したがって、ＤＰアクセラレータのグローバルメモリのメモリ利用情報を維持することを含む。ブロック１９０４において、ＤＰアクセラレータのメモリ位置にアクセスするためにＴＥＥ内で実行されるアプリケーションから受信された請求に応じて、処理ロジックは、メモリ利用情報に基づいて請求を許可または拒否する。
【０１０１】
一実施形態において、メモリマネージャは、ＤＰアクセラレータに関連付けられるランタイムライブラリの一部として実現され、これは、ホストシステムのＴＥＥ内で実行される。一実施形態において、ＤＰアクセラレータのグローバルメモリのメモリ利用情報を維持することは、ＤＰアクセラレータのグローバルメモリのメモリブロックのメモリ割り当てを記録するようにメモリ利用のデータ構造を維持することを含む。他の一実施形態において、メモリ利用のデータ構造は、複数のエントリを含み、各エントリは、すでに割り当てられているＤＰアクセラレータのグローバルメモリのメモリブロックを記録する。他の一実施形態において、各エントリは、対応するメモリブロックの開始メモリアドレス、対応するメモリブロックのサイズ、および対応するメモリブロックが割り当てられているか否かを示すフラグを格納する。
【０１０２】
他の一実施形態において、処理ロジックはさらに、アプリケーションから第１の請求を受信し、ＤＰアクセラレータのグローバルメモリから第１のメモリブロックを割り当てている。前記第１の請求に応じて、処理ロジックは、ＤＰアクセラレータに連絡する必要がなく、メモリ利用データ構造に格納されたメモリ利用情報に基づいて、第１のメモリブロックが既に割り当てられているか否かを判定する。その後、処理ロジックは、第１のメモリブロックが割り当てられていないことが判定されたことに応じて、グローバルメモリの第１のメモリブロックをアプリケーションに割り当てる。
【０１０３】
他の一実施形態において、処理ロジックはさらに、第１のメモリブロックが既に割り当てられていることが判定されたことに応じて、第１の請求を拒否する。他の一実施形態において、処理ロジックはさらに、アプリケーションから第２の請求を受信し、ＤＰアクセラレータのグローバルメモリから第２のメモリブロックに対して割り当てを解除する。前記第２の請求に応じて、処理ロジックは、メモリ利用のデータ構造に格納されたメモリ利用情報に基づいて、第２のメモリブロックが既にアプリケーションに割り当てられているか否かを判定する。処理ロジックは、第２のメモリブロックがアプリケーションに割り当てられていることが判定されたことに応じて、グローバルメモリから第２のメモリブロックに対して割り当てを解除し、それ以外の場合、前記第２の請求を拒否する。
【０１０４】
図２０は、一実施形態に係るＤＰアクセラレータに通信可能に接続されているホストの一例を示すブロック図である。システム２０００は、信頼ルートサービスとタイムスタンプ生成サービスをＤＰアクセラレータ４０５〜４０７に提供することができることを除いて、図９のシステム９００を表すことができる。図２０を参照すると、一実施形態において、ＤＰアクセラレータ４０５は、セキュリティユニット１０２０とタイムユニット２００３を含む。セキュリティユニット１０２０は、多数の暗号化スキームを使用してＤＰアクセラレータの他のモジュール／ユニットに信頼ルートサービスを提供でき、タイムユニット２００３は、暗号化キーの認証用のタイムスタンプを生成して、異なる暗号化スキームをサポートできる。なお、タイムユニット２００３は、スタンドアロンのユニットであってもよく、あるいはセキュリティユニット１０２０と統合されることもできる。
【０１０５】
一実施形態において、セキュリティユニット１０２０は、暗号化キーが認証されたとき、またはセッションキーの期限が切れたときに、追跡するためにセキュアタイムソースを必要とする。セキュリティユニット１０２０のために、外部ソースからのクロック信号を利用することは、安全でない可能性がある。例えば、意図された時間を超えるようにセッションキーを延長するために、外部ソースのクロックのクロック周波数を調整するか、またはクロックの給電手段を変調することができる。
【０１０６】
図２１は、一実施形態に係るタイムユニットの一例を示すブロック図である。図２１を参照すると、タイムユニット２００３は、スタンドアロンクロック生成、およびセキュアクロック信号のためのスタンドアロンの給電手段を備えてもよい。タイムユニット２００３は、クロック生成手段２１０１、ローカルオシレータ２１０３、カウンタ２１０５、給電手段２１０７、クロックキャリブレータ２１０９およびタイムスタンプ生成手段２１１１を含んでもよい。クロック生成手段２１０１は、外部ソースからのクロック信号を導出する必要がなく、クロック信号をローカルに生成することができる。ローカルオシレーター２１０３は、クロック生成手段２１０１に接続されて、正確なパルス信号を提供することができる。例えば、ローカルオシレータ２１０３は、特定の閾値（例えば、マイクロ秒毎に１カウント）よりも大きい精度を備えるパルス信号を提供することができるクリスタルオシレータを含んでもよい。カウンター２１０５は、クロック生成手段２１０１に接続されて、クロック生成手段２１０１から生成されたクロック信号に基づいて、１つまたは複数のカウント値をカウントすることができる。給電手段２１０７は、電力をクロック生成手段２１０１とタイムスタンプ生成手段２１１１に提供することができる。クロックキャリブレータ２１０９は、クロック生成手段２１０１をキャリブレートすることができる。タイムスタンプ生成手段２１１１は、クロック生成手段に接続されて、クロック信号に基づいてタイムスタンプを生成することができる。
【０１０７】
例えば、給電手段２１０７は、ダイムバッテリーのようなバッテリーを使用して安定的で持続的な電力を提供することができる。ここで、ダイムバッテリーは、セキュリティユニット１０２０の外部のボード上に位置することができる。他の一実施形態において、給電手段２１０７の回路は、セキュリティユニット１０２０の外部に配置される。ローカルオシレータ２１０３は、高性能のクリスタルオシレータを含んでもよい。カウンターは、不揮発性記憶装置において１つまたは複数の可変カウンタ（例えば、８ビット、１６ビット、３２ビットまたは６４ビットなどの可変カウンタ）を含んでもよい。不揮発性記憶装置またはメモリは、給電手段が切っても記憶されたデータを保持する能力を備えるタイプのメモリである。揮発性記憶装置とは異なり、不揮発性記憶装置は、メモリデータを定期的にリフレッシュする必要がない。一実施形態において、不揮発性記憶装置は、ローカルオシレータ２１０３の単一信号パルスごとに１ずつ増加することができる第１のカウンタを含むことができる。第１のカウンタは、特定の値までカウントすることができ、その値は、外部ソースまたはクロックキャリブレータ２１０９によって変更され、したがって、その値は、クロック信号のマイクロ秒の信号を示すように調節される。その後、マイクロ秒は、第２のカウンタによって累算されて秒の信号を生成することができる。第３カウンタ、第４カウンターなどは、分、時、日、月の信号などを累算するために使用することができる。その後、クロック生成手段２１０１は、累算された信号に基づいてクロックを生成することができる。クロック信号に基づいて、タイムスタンプ生成手段はタイムスタンプを生成することができる。その後、タイムスタンプは、様々な目的のためにフォーマットされることができる。いくつかの例示的なタイムスタンプフォーマットは、ｙｙｙｙ−ＭＭ−ｄｄ  ＨＨ：ｍｍ：ｓｓ．ＳＳＳ、ｙｙｙｙＭＭｄｄ．ＨＨｍｍｓｓＳＳＳ、およびｙｙｙｙ／ＭＭ／ｄｄ  ＨＨ：ｍｍ：ｓｓであり得る。一実施形態において、コンバータは、タイムスタンプを一つのフォーマットから別のフォーマットに変換することができる。他の一実施形態において、クロックキャリブレータ２１０９は、ＤＰアクセラレータの製造段階で、外部ソース（例えば、原子時計）とマッチングするようにクロック生成信号を初期にキャリブレートする。
【０１０８】
その後、ＤＰアクセラレータのセキュリティユニット１０２０のようなセキュリティユニットは、タイムユニット２００３が需要に応じてタイムスタンプを生成するように請求することができる。その後、タイムスタンプは、セキュリティユニット１０２０によって使用されて、暗号化キーの認証、キー生成および／またはキーの有効期限にタイムスタンプを付けることができる。例えば、セッションキーが生成されるときに関連付けられるタイムスタンプに基づいて有効期限が切れたと確定された場合、セッションキーに関連付けられるチャネルセッションを終了することができる。続いて、セッションキーが自動的に延長されるように構成されるか、または延長認証がユーザアプリケーションを介して取得される場合、新しいセッションキーが生成され得る。
【０１０９】
図２２は、一実施形態によるセキュリティユニットの一例を示すブロック図である。セキュリティユニット１０２０は、ＤＰアクセラレータによって使用されて、コマンドおよびデータを交換するようにホストサーバー／システムとのセキュアチャネルを作成し維持することができる。図２２を参照すると、セキュリティユニット１０２０は、キーマネージャ１０２５、暗号化エンジン１０２９、インドールスメントキー（ＥＫ）２２０９を含んでもよいキー・ストア１０２７、揮発性記憶装置２２０７、不揮発性記憶装置２２０５、プロセッサ２２０３および乱数生成手段２２０１を含んでもよい。乱数生成手段２２０１は、ノンスのような乱数を生成することができる。一実施形態において、乱数生成手段２２０１は、シード入力（例えば、タイムスタンプ）に基づいて乱数を生成することができる。暗号化エンジン１０２９は、暗号化オペレーション（例えば、暗号化と復号化）を行うことができる。不揮発性記憶装置２２０５と揮発性記憶装置２２０７は、セキュリティユニット１０２０の記憶領域であってもよい。キー・ストア１０２７は、ユニークなインドールスメントクレデンシャル（ＥＣ）またはインドールスメントキー（ＥＫ）２２０９を安全に保持できるセキュリティユニット１０２０のキー記憶領域であってもよい。ここで、ＥＣまたはＥＫは、製造時のセキュリティユニット１０２０においてランダムに生成され、内蔵されたパブリック／プライベート暗号化ルートキーペア（例えば、ＰＫ＿ＲＫとＳＫ＿ＲＫ）のパブリックキー（例えば、ＰＫ＿ＲＫ）を意味する。ＥＫに対応するプライベートルートキー（例えば、ＳＫ＿ＲＫ）は、不揮発性記憶装置２２０５においても内蔵されるが、プライベートルートキーは、セキュリティユニット１０２０の外部からリリースされない。例示的なキーペアは２０４８ビットのＲＳＡ暗号化キーペアであってもよい。
【０１１０】
製造／テスト段階において、ＤＰアクセラレータは、内部でテストして構成することができ、ＥＫ２２０９は、セキュリティユニット１０２０に生成され埋め込まれる。一実施形態において、ＥＫ２２０９は、信頼できる認証サーバー上にアップロードすることができ、信頼できる認証サーバーでパブリックキーまたはＥＫはサインされ、ＥＫのサインされた認証書は、ＥＫが本物であるか否かを検証するのに使用することができる。ここで、認証サーバーは、政府承認サーバー、第三者の信頼できる認証サーバー、またはローカルサーバーであってもよい。
【０１１１】
デプロイメント段階において、ＤＰアクセラレータの電源投入後に、ＥＫ２２０９は、セキュリティユニット１０２０から読み出すことができ、ＥＫ２２０９は、ローカルで、または認証サーバーを使用して本物として検証することができる。ＥＫ検証に成功すると、ＤＰアクセラレータは本物であると考えられる。その後、検証されたＥＫとセキュリティユニット１０２０の内部のプライベートルートキーは、上記で説明したチャネルセッションキーまたは一時的なパブリック／プライベートキーペア（例えば、ＰＫ＿ｄとＳＫ＿ｄ）などのその他の暗号化キーを導出するために使用することができる。
【０１１２】
ランタイムカーネルまたはカーネル（またはカーネルオブジェクト）は、ＤＰアクセラレータのオペレーションをサポートするために利用される数学的または計算関数を意味する。カーネルは、ユーザアプリケーションによって呼び出される数学関数であってもよい。いくつかの実施形態において、カーネルは、ＤＰアクセラレータによって実行されるように、ホストサーバーまたは他のサーバーからＤＰアクセラレータにアップロードすることができる。例示的なカーネルは、ＤＰアクセラレータによって実行される行列乗算オペレーションをサポートする行列乗算カーネルであってもよい。ＤＰアクセラレータによって実行される他の数学的または計算関数をサポートするために、それぞれ専用されている数百のカーネルが存在することができることに留意しなければならない。カーネルのソース、ＤＰアクセラレーターにアップロードされたカーネル、および変更されたカーネルを追跡することは、困難な場合がある。したがって、カーネルの確認（または検証）とカーネル認証プロトコルまたはスキームは、カーネルの本物のソースと整合性を確保するために必要である。
【０１１３】
図２３は、一実施形態によるＤＰアクセラレータに通信可能に接続されてカーネルオブジェクトを確認するホストサーバーの一例を示すブロック図である。システム２３００は、図９のシステム９００であってもよい。図２３を参照すると、一実施形態において、ホストサーバー１０４は、ユーザアプリケーション２０３とランタイムライブラリ２０５を含むＴＥＥ２０１を含む。ランタイムライブラリ２０５は、カーネル検証装置モジュール２３０１とカーネル認証書ストア２３０３を含んでもよい。カーネル認証書ストア２３０３は、カーネル識別子によって記載されたカーネル（または単にパブリックキーリスト）の認証書を格納することができ、ここで、前記認証書は、信頼できる認証機関（ＣＡ）またはローカルの信頼できるサーバーによってサインされることができる。カーネル検証装置モジュール２３０１は、カーネル認証書ストア２３０３からのカーネル認証書情報に基づいて、サインされたカーネルオブジェクトを検証することができる。
【０１１４】
ホストサーバー１０４は、永続性記憶装置（例えば、ストレージディスク）２３０５とＤＰアクセラレータ４０５〜４０７に通信可能に接続することができる。永続性記憶装置２３０５は、ホストサーバー１０４の一部またはリモートストレージユニットであることに留意しなければならない。永続性記憶装置２３０５は、カーネルオブジェクト２３０７を含んでもよい。カーネルオブジェクト２３０７は、リモートソースに由来してもよいので、カーネルオブジェクトにサインされているのは、オブジェクトが信頼できるソースからのものであることを保証する。カーネルオブジェクトは、カーネルのバイナリファイルを含むオブジェクトを意味することができる。一実施形態において、カーネルオブジェクト２３０７の各カーネルオブジェクトは、カーネルの実行可能なイメージと対応するサインを含む。また、カーネルの実行可能なイメージは、暗号化され得る。サインは、カーネルオブジェクトに対応するパブリックキー／プライベートカーネルキーペアのプライベートキーを使用してサインされたカーネルのハッシュである。前記サインは、カーネルにサインするために使用されたプライベートキーに対応するパブリックキーを利用して検証することができる。例えば、パブリックキーは、カーネルオブジェクトのためのカーネル認証書から取得することができる。いくつかの実施形態において、カーネル開発者が最初にカーネルを作成するときに、カーネルオブジェクトは（カーネル開発者のプライベートキーを用いて）サインされる。その後、サインされたカーネルは、カーネルが本物であるか否かを保証するために検証（または［確認］）のための対応するカーネル認証書（例えば、パブリックキー）を含むことができる。
【０１１５】
図２４は、一実施形態による例示的なカーネルオブジェクトの検証プロトコルを示すフローチャートである。カーネルオブジェクトの検証は、カーネルオブジェクト２３０７がホストサーバー１０４および／またはＤＰアクセラレータ４０５のＴＥＥ（２０１）に導入される前に、カーネルオブジェクト２３０７が本物であることに対する確認を意味する。例示２４００は、図２３のシステム２３００によって実行されることができる。一実施形態において、検証前に、ユーザアプリケーション２０３（またはランタイムライブラリ２０５）は、信頼できる認証機関または信頼できるサイン者の認証書からパブリックキー（例えば、ＰＫ＿ｉ、ＰＫ＿ｊ、．．．ＰＫ＿ｎ）リストを取得し、ここで、対応するプライベートキー（例えば、ＳＫ＿ｉ、ＳＫ＿ｊ、．．．ＳＫ＿ｎ）は、カーネルオブジェクト２３０７にサインするのに使用されたカーネルの開発者のプライベートキーである。一実施形態において、ユーザアプリケーション２０３（またはランタイムライブラリ２０５）がＤＰアクセラレータ４０５（または、他のあらゆるＤＰアクセラレータ）によって実行されるカーネル（カーネル識別子によって識別されたカーネル）を呼び出す場合、ユーザアプリケーション２０３（または、ランタイムライブラリ２０５）は、カーネルがＤＰアクセラレータ４０５にアップデートされたか否かを判定する。そうでなければ、一実施形態によると、ホストサーバー１０４は、オペレーション２４００を実行して、カーネルをＤＰアクセラレータ４０５にアップロードする前に、カーネルを検証する。なお、１つのカーネルを呼び出すと他のカーネルが呼び出される場合、ランタイムライブラリ２０５は、一連のカーネルを呼び出すことができる。
【０１１６】
オペレーション２４０１において、ＴＥＥ２０１の一部であるユーザアプリケーション２０３（または、ランタイムライブラリ２０５）は、カーネル識別子（ＩＤ）に基づいて、カーネルオブジェクト２３０７の一部であるカーネルに、ＯＳ２１１にロードされるように請求する。一実施形態において、カーネルＩＤは、グローバル一意識別子（例えば、ＧＵＩＤまたはＵＵＩＤ）であることができる。一実施形態において、カーネルオブジェクトは、カーネル（例えば、実行可能なイメージ）、カーネルＩＤおよびカーネルに対するサインを含む。サインは、カーネルの暗号化されたハッシュであってもよい。他の一実施形態において、カーネルオブジェクトは、暗号化されたカーネル（例えば、暗号化された実行可能なイメージ）を含む。オペレーション２４０２において、ＯＳ２１１は、カーネルＩＤによって、永続性記憶装置２３０５からカーネルオブジェクトを検索する。オペレーション２４０３において、ＯＳ２１１は、カーネルオブジェクトをホストサーバー１０４のＴＥＥ２０１に返す。オペレーション２４０４において、カーネル検証装置モジュール２３０１は、カーネルＩＤに対応するカーネル認証書ストア２３０３からカーネル認証書を検索し、カーネルオブジェクトが本物であるか否かを検証する。一実施形態において、カーネルを検証することは、カーネルオブジェクトのサインにパブリックキーを適用してサインを解読して、所望のハッシュ値を生成することを含む。その後、カーネル検証装置モジュール２３０１は、カーネルのハッシュ値を生成し、所望のハッシュ値と生成されたハッシュ値を比較して、所望のハッシュ値と生成されたハッシュ値との差を確定する。違いがない場合、サインは有効である。サインが利用できる場合、カーネルの整合性が検証され、カーネルオブジェクトは本物で、信頼できる開発者によって取得されると見なされる。他の一実施形態において、カーネルが暗号化される場合、カーネルを検証することは、パブリックキーをカーネルの暗号化された実行可能なイメージに適用して、カーネルを解読して取得することを含む。
【０１１７】
オペレーション２４０５において、カーネル（例えば、実行可能なイメージ）が信頼されるものであると確認される場合、オペレーション２４０６において、カーネルオブジェクトは、ホストサーバー１０４のＴＥＥ２０１によってＤＰアクセラレータ４０５に送信される。その後、呼び出されたカーネルは、ＤＰアクセラレータ４０５の１つまたは複数の実行ユニットによって実行される。
【０１１８】
図２５は、一実施形態による方法の一例を示すフローチャートである。プロセス２５００は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行される。例えば、プロセス２５００は、図２３のホスト１０４のようなホストシステムによって実行される。図２５を参照すると、ブロック２５０１において、処理ロジックは、ホストシステムの信頼できる実行環境（ＴＥＥ）内で実行されるランタイムライブラリにおいて、予め定義されたオペレーションを実行するための所定の機能を呼び出す請求をアプリケーションから受信する。ブロック２５０２において、前記請求に応じて、処理ロジックは、所定の機能に関連付けられるカーネルオブジェクトを識別する。ブロック２５０３において、処理ロジックは、カーネルオブジェクトの実行可能なイメージにサインされるのに使用されたプライベートキーに対応するパブリックキーを利用して、カーネルオブジェクトの実行可能なイメージを検証する。ブロック２５０４において、カーネルオブジェクトの実行可能なイメージの検証に成功したことに応じて、処理ロジックは、ＤＰアクセラレータによって実行されるようにバスを介してカーネルオブジェクトの検証された実行可能なイメージをデータ処理（ＤＰ）アクセラレータに送信して、予め定義されたオペレーションを実行する。
【０１１９】
一実施形態において、ランタイムライブラリは、プライベートキーに対応するパブリックキーを利用して、カーネルオブジェクトのサインを解読することにより、カーネルオブジェクトを検証するように構成される。ここで、カーネルオブジェクトは、暗号化されていない形式でＤＰアクセラレータに送信される。他の一実施形態において、処理ロジックはさらに、所定のハッシュ関数を利用して、カーネルオブジェクトの実行可能なイメージをハッシュすることにより、カーネルオブジェクトの整合性を検証する。
【０１２０】
一実施形態において、カーネルオブジェクトは、永続性記憶装置の非安全な場所に記憶される。他の一実施形態において、カーネルオブジェクトは、永続性記憶装置に記憶された多くのカーネルオブジェクトのうちの一つであり、ここで、前記ランタイムライブラリは、カーネルオブジェクトにそれぞれ関連付けられるパブリックキーのリストを維持し、パブリックキーは、カーネルオブジェクトを検証するのに使用される。
【０１２１】
一実施形態において、ＤＰアクセラレータは、アプリケーションを代表して分散方式でカーネルオブジェクトの実行可能なイメージを実行するように構成された１つまたは複数の実行ユニットを含む。一実施形態において、パブリックキーは、信頼できるサーバーから取得され、パブリックキーは、カーネルオブジェクトのプロバイダによって提供され、ここで、前記カーネルオブジェクトはプロバイダがプライベートキーを使用してサインしたサインを含む。
【０１２２】
図２６は、一実施形態によるカーネル認証のためにＤＰアクセラレータに通信可能に接続されているホストサーバーの一例を示すブロック図である。カーネル認証は、ＤＰアクセラレータにアップロードされたカーネルの整合性を検証することを含み、カーネルが転送中にいくつかの第三者によって変更されないことを確保する。カーネルの整合性は、カーネルのサインを検証することにより検証することができる。システム２６００は、図９のシステム９００であってもよい。図２６を参照すると、一実施形態において、ホストサーバー１０４は、ユーザアプリケーション２０３、ランタイムライブラリ２０５、認証モジュール２６０１およびカーネルダイジェストストア２６０３を含むＴＥＥ２０１を含む。カーネルダイジェストストア２６０３は、他のＤＰアクセラレータにアップロードされたカーネルに対応する複数のカーネルダイジェストを記憶することができる。一実施形態において、カーネルダイジェストは、カーネルの非暗号化ハッシュまたはカーネルの任意のタイプの関数（例えば、チェックサム、ＣＲＣなど）を意味する。カーネルダイジェストストア２６０３は、カーネルダイジェストのためにカーネルＩＤのマッピングとＤＰアクセラレータＩＤのマッピングをさらに記憶することができる。前記マッピングは、いくつかのカーネルがどのＤＰアクセラレータにアップロードされているかを識別することができる。カーネルダイジェストストア２６０３からのカーネルダイジェスト情報に基づいて、認証モジュール２６０１は、カーネルダイジェストストア２６０３からのカーネルダイジェスト情報に基づいて、カーネルを認証することができる。
【０１２３】
図２６を参照すると、ＤＰアクセラレータ４０５は、セキュリティユニット１０２０、認証ユニット２６０５、実行ユニット２６０７および記憶装置２６０９を含んでもよい。記憶装置２６０９は、カーネルオブジェクト２６１１を含んでもよい。認証ユニット２６０５は、認証プロトコルを介して認証モジュールと通信することができる。記憶装置２６０９は、カーネルオブジェクト２６１１を格納する１つまたは複数の記憶装置であってもよい。カーネルオブジェクト２６１１は、ＤＰアクセラレータ４０５に予めアップロードされた１つまたは複数のカーネル（及び、対応するカーネルＩＤ）を含んでもよい。実行ユニット２６０７は、カーネルオブジェクト２６１１から１つまたは複数の呼び出されたカーネルを実行することができる。
【０１２４】
一実施形態において、ユーザアプリケーション２０３（または、ランタイムライブラリ２０５）は、カーネルダイジェストを生成することにより、カーネルオブジェクトがＤＰアクセラレータ４０５上にすでにアップデートされているか否かを判定して、生成されたカーネルダイジェストがカーネルダイジェストストア２６０３からのカーネルダイジェスト情報の中から見つけられるか否かをクエリーして、カーネルがＤＰアクセラレータ上に存在しているか否かを判定することができる。選択的に、カーネルＩＤをクエリーして、カーネルがＤＰアクセラレータ上に存在しているか否かを判定することができる。見つけられると、認証を開始し、そうでなければ、ユーザアプリケーション２０３（または、ランタイムライブラリ２０５）は、上述したように、カーネルオブジェクトを検証し、カーネルダイジェストがカーネルダイジェストストア２６０３に記憶されるように、カーネルのカーネルダイジェストを生成する。その後、ユーザアプリケーション２０３（または、ランタイムライブラリ２０５）は、カーネルのバイナリファイルのコピーをＤＰアクセラレータ上にアップロードする。後続の実行セッションにおいて、カーネルは、カーネルの呼び出しに応じて、ユーザアプリケーション（またはランタイムライブラリ）によって認証される。
【０１２５】
図２７は、一実施形態による例示的な認証プロトコルを示すフローチャートである。一実施形態において、例示２７００は、図２６のホストサーバー１０４の認証モジュール２６１とＤＰアクセラレータ４０５の認証ユニット２６０５との間で行われる。図２７を参照すると、オペレーション２７０１において、ホストサーバー１０４は、ＤＰアクセラレータ４０５から認証キーを請求する。オペレーション２７０２において、前記請求に応じて、ＤＰアクセラレータ４０５は、パブリック／プライベート認証キーペア（例えば、ＰＫ＿ＡＴＴとＳＫ＿ＡＴＴ）を生成し、ＤＰアクセラレータ４０５に関連付けられるプライベートルートキー（例えば、ＳＫ＿ＲＫ）を利用して、ＰＫ＿ＡＴＴにサインする。
【０１２６】
オペレーション２７０３において、ＤＰアクセラレータ４０５は、ＰＫ＿ＡＴＴとサインされたＰＫ＿ＡＴＴを備えるメッセージをホストサーバー１０４に返す。オペレーション２７０４において、ホストサーバー１０４は、メッセージを受信し、ＤＰアクセラレータ４０５に関連付けられるパブリックルートキー（例えば、ＰＫ＿ＲＫ）を利用して、サインされたＰＫ＿ＡＴＴを解読し、受信されたＰＫ＿ＡＴＴと解読されたＰＫ＿ＡＴＴを比較して、サインされたＰＫ＿ＡＴＴを検証する。一実施形態において、ホストシステムは、ネットワークを介してＤＰアクセラレータから、または信頼できるサーバーからＤＰアクセラレータに関連付けられるＰＫ＿ＲＫを予め受信する。受信されたＰＫ＿ＡＴＴが解読されたＰＫ＿ＡＴＴとマッチングする場合、ホストサーバー１０４は、ＰＫ＿ＡＴＴが実際にＤＰアクセラレータ４０５によって生成されたことを検証した。なお、オペレーション２７０１〜２７０４は、オペレーション２７０５前の任意の時間に、認証のために実行されることができる。つまり、同じ認証キーは、予定期間（例えば、一週間）の間に使用することができ、認証キーは、いずれの認証されたカーネルと関連されず、例えば、認証キーは、多くのカーネルに使用されることができる。
【０１２７】
オペレーション２７０５において、ホストサーバー１０４は、引用符を請求するためのコマンド「ＣＭＤ＿認証＿実行（ＣＭＤ＿ＤＯ＿ＡＴＴＥＳＴＡＴＩＯＮ）」をカーネルのカーネルＩＤと共にＤＰアクセラレータ４０５に送信する。オペレーション２７０６において、前記コマンドの請求を受信したことに応じて、ＤＰアクセラレータ４０５は、カーネルのカーネル整合性を測定する。一実施形態において、カーネルの実行可能なイメージは、（カーネルオブジェクト２６１１の一部として）ハッシュされ、カーネルダイジェストを生成する。その後、カーネルダイジェストは、タイムスタンプと一緒にＳＫ＿ＡＴＴを利用してサインされる。ここで、タイムスタンプは、図２０のタイムユニット２００３のようなタイムユニットによって生成される。
【０１２８】
オペレーション２７０７において、ＤＰアクセラレータ４０５は、サインされたカーネルのダイジェストを備えるメッセージをタイムスタンプと一緒にホストサーバー１０４に送信する。オペレーション２７０８において、メッセージを受信したことに応じて、ホストサーバー１０４は、ＰＫ＿ＡＴＴを利用して、サインされたカーネルダイジェストをタイムスタンプと一緒に解読する。その後、ホストサーバー１０４は、タイムスタンプをチェックして、メッセージが所定の期間（例えば、一日）よりも多くの期間を経過していないか否かを検証する。その後、ホストサーバー１０４は、カーネルダイジェストがＤＰアクセラレータに予めアップロードされたカーネルに属するか否かを検証する。一実施形態において、ホストサーバー１０４は、カーネルダイジェストストア２６０３からのカーネルダイジェスト情報から受信されたカーネルダイジェストをクエリーする。ＤＰアクセラレータ４０５のＤＰアクセラレータＩＤとマッチングするエントリが見つけられた場合、カーネル認証は成功した。そうでなければ、認証は失敗した。オペレーション２７０９において、ホストサーバー１０４は、認証または検証の結果をＤＰアクセラレータ４０５に送信することができる。前記結果に基づいて、カーネルは、ＤＰアクセラレータ４０５の実行ユニットによって実行されることを許可または拒否する。
【０１２９】
図２８Ａ及び図２８Ｂは、いくつかの実施形態による例示的な方法を示すフローチャートである。プロセス２８００とプロセス２８２０は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行されることができる。例えば、プロセス２８００は、ホストサーバー１０４によって実行され得、プロセス２８２０は、図２６のＤＰアクセラレータ４０５によって実行され得る。図２８Ａを参照すると、ブロック２８０１において、処理ロジックは、ホストシステムにおいて、バスを介してデータ処理（ＤＰ）アクセラレータからパブリック認証キー（ＰＫ＿ＡＴＴ）またはサインされたＰＫ＿ＡＴＴを受信する。ブロック２８０２において、処理ロジックは、ＤＰアクセラレータに関連付けられるパブリックルートキー（ＰＫ＿ＲＫ）を利用してＰＫ＿ＡＴＴを検証する。ブロック２８０３において、ＰＫ＿ＡＴＴの検証に成功したことに応じて、処理ロジックは、カーネル識別子（ＩＤ）をＤＰアクセラレータに送信して、ＤＰアクセラレータに記憶されたカーネルオブジェクトの認証を請求する。ブロック２８０４において、ＤＰアクセラレータからカーネルオブジェクトに対応するカーネルダイジェストまたはサインされたカーネルのダイジェストが受信されたことに応じて、処理ロジックは、ＰＫ＿ＡＴＴを利用して、カーネルのダイジェストを検証する。ブロック２８０５において、処理ロジックは、ＤＰアクセラレータが前記検証結果に基づいてカーネルオブジェクトにアクセスするように、前記検証結果をＤＰアクセラレータに送信する。
【０１３０】
一実施形態において、処理ロジックはさらに、認証に対する請求をＤＰアクセラレータに送信し、ここで、ＤＰアクセラレータは、認証に対する請求に応じてＰＫ＿ＡＴＴとプライベート認証キー（ＳＫ＿ＡＴＴ）を具備する認証キーペアを生成する。その後、処理ロジックは、ＤＰアクセラレータからＤＰアクセラレータのプライベートルートキー（ＳＫ＿ＲＫ）を利用してサインされた暗号化ＰＫ＿ＡＴＴを受信する。他の一実施形態において、処理ロジックはさらに、ホストシステムにおいてＤＰアクセラレータに関連付けられるパブリックルートキー（ＰＫ＿ＲＫ）を利用して暗号化ＰＫ＿ＡＴＴを解読し、ＤＰアクセラレータから受信されたＰＫ＿ＡＴＴが、解読されたＰＫ＿ＡＴＴと同じか否かを検証する。一実施形態において、ＤＰアクセラレータに関連付けられるパブリックルートキー（ＰＫ＿ＲＫ）は、ネットワークを介して信頼できるサーバーに由来するホストサーバー１０４によって受信することができる。
【０１３１】
一実施形態において、カーネルダイジェストは、ＤＰアクセラレータによってカーネルオブジェクトの実行可能なイメージをハッシュすることで生成される。他の一実施形態において、カーネルダイジェストは、ＰＫ＿ＡＴＴに対応するプライベート認証キー（ＳＫ＿ＡＴＴ）を利用してサインされる。他の一実施形態において、カーネルダイジェストは、ある時点で生成されたタイムスタンプと一緒にサインされ、ここで、前記タイムスタンプは、ホストシステムによって使用されて、カーネルダイジェストが所定の期間内に生成されたか否かを検証する。一実施形態において、ホストシステムは、ネットワークを介して所定の信頼できるサーバーからＤＰアクセラレータに関連付けられるＰＫ＿ＲＫを受信する。
【０１３２】
図２８Ｂを参照すると、ブロック２８２１において、ホストシステムから受信された認証請求に応じて、処理ロジックは、データ処理（ＤＰ）アクセラレータでパブリック認証キー（ＰＫ＿ＡＴＴ）とプライベート認証キー（ＳＫ＿ＡＴＴ）を具備する認証キーペアを生成する。ブロック２８２２において、処理ロジックは、ＰＫ＿ＡＴＴまたはサインされたＰＫ＿ＡＴＴをＤＰアクセラレータからホストシステムに送信し、ここで、ＤＰアクセラレータは、バスを介してホストシステムに接続される。ブロック２８２３において、処理ロジックは、ホストシステムからカーネルオブジェクトを識別するためのカーネル識別子（ＩＤ）を受信し、ここで、カーネルＩＤはＰＫ＿ＡＴＴの検証に成功したことに応じて受信される。ブロック２８２４において、処理ロジックは、カーネルＩＤに応じて、カーネルオブジェクトの実行可能なイメージをハッシュすることにより、カーネルダイジェストを生成する。ブロック２８２５において、処理ロジックは、カーネルダイジェストまたはサインされたカーネルダイジェストをホストシステムに送信して、ホストシステムがＤＰアクセラレータ内で実行されるカーネルオブジェクトにアクセスする前に、カーネルオブジェクトを検証、認証することを許可する。
【０１３３】
一実施形態において、処理ロジックはさらに、ＤＰアクセラレータに関連付けられるプライベートルートキー（ＳＫ＿ＲＫ）を利用して、ＰＫ＿ＡＴＴにサインして、サインされたＰＫ＿ＡＴＴをホストシステムに送信して、ホストシステムにＰＫ＿ＡＴＴがＤＰアクセラレータに由来するか否かを検証させる。他の一実施形態において、ホストシステムは、ＳＫ＿ＲＫに対応するパブリックルートキー（ＰＫ＿ＲＫ）を利用して、サインされたＰＫ＿ＡＴＴを解読し、ＤＰアクセラレータから受信されたＰＫ＿ＡＴＴと解読されたＰＫ＿ＡＴＴを比較することにより、ＰＫ＿ＡＴＴを検証するように構成される。
【０１３４】
一実施形態において、処理ロジックはさらに、ＳＫ＿ＡＴＴを利用して、カーネルダイジェストにサインし、サインされたカーネルダイジェストをホストシステムに送信して、ホストシステムにカーネルダイジェストがＤＰアクセラレータによって送信されたか否かを検証するように許可する。他の一実施形態において、ホストシステムは、ＰＫ＿ＡＴＴを利用して、サインされたカーネルダイジェストを解読し、ＤＰアクセラレータから受信されたカーネルダイジェストと解読されたカーネルダイジェストを比較することにより、カーネルダイジェストを検証するように構成される。他の一実施形態において、処理ロジックはさらに、タイムスタンプを作成し、タイムスタンプと一緒にカーネルダイジェストにサインし、ここで、タイムスタンプは、ホストシステムによって使用されてカーネルダイジェストの鮮度を検証する。
【０１３５】
ホストサーバーに通信可能に接続されるＤＰアクセラレータはさらに、ホストサーバーによって予想されるＤＰアクセラレータであることを認証することができる。保証は、第三者の信頼できるサーバーおよび／または認証機関を介して達成することができる。
【０１３６】
図２９は、一実施形態によるＤＰアクセラレータおよび信頼できるサーバーに通信可能に接続されているホストサーバーの一例を示すブロック図である。ＤＰアクセラレータの確認（ｖａｌｉｄａｔｉｏｎ）は、信頼できるサーバーからのＤＰアクセラレータの認証書を検証することを意味する。信頼できるサーバーは、第三者認証機関またはローカルサーバーであってもよい。システム２９００は、図９のシステム９００であってもよい。図２９を参照すると、一実施形態において、ホストサーバー１０４は、キー検証モジュール２９０１とＰＫ＿ＲＫ（ｓ）２９０３を含むＴＥＥ２０１を含む。ＰＫ＿ＲＫ（ｓ）２９０３は、ＤＰアクセラレータに関連付けられるパブリックキーを記憶することができる。キー検証モジュール２９０１は、信頼できるサーバー２９２１のような信頼できるサーバーを介してＤＰアクセラレータのためのパブリックキーを検証することができる。信頼できるサーバー２９２１は、ＤＰアクセラレータ認証書２９２３を含んでもよい。
【０１３７】
図２９を参照すると、ＤＰアクセラレータは、キー検証ユニット２９０５と記憶装置２９１３を含むセキュリティユニット１０２０を含んでもよい。記憶装置２９１３は、ＳＫ＿ＲＫ２９０７、アクセラレータＩＤ（例えば、シリアル番号、および／またはＵＵＩＤ）２９０９およびバージョン番号２９１１を含んでもよい。バージョン番号は、ＤＰアクセラレータ４０５のファームウェアのバージョンを示すことができ、バージョン番号は、ＤＰアクセラレータ４０５のファームウェアのバージョンに応じてアップデートされることができる。キー検証ユニット２９０５は、ホストサーバー１０４のキー検証モジュール２９０１のようなキー検証モジュールと通信してＤＰアクセラレータ（例えば、アクセラレータＩＤ２９０９、および／またはバージョン番号２９１１）に関する情報をホストサーバー１０４に提供することができる。
【０１３８】
予備事項として、一実施形態において、ホストサーバー１０４は、ＤＰアクセラレータ４０５に関連付けられるＰＫ＿ＲＫのコピーを備えることができる。しかし、ＤＰアクセラレータ４０５が最初にホストサーバー１０４に導入されるか、またはＤＰアクセラレータ４０５が再導入される場合、ＤＰアクセラレータ４０５のＰＫ＿ＲＫは、ホストサーバー１０４に対して確認されるか、または再確認される必要がある可能性がある。
【０１３９】
図３０は、一実施形態による例示的なＤＰアクセラレータ確認プロトコルを示すフローチャートである。プロトコル３０００は、ＤＰアクセラレータ４０５のＰＫ＿ＲＫを確認する例示的な実施例であってもよい。図２９〜図３０を参照すると、プロトコル３０００は、ホストサーバー１０４のキー検証モジュール２９０１とＤＰアクセラレータ４０５のキー検証ユニット２９０５との間で行われる。
【０１４０】
図３０を参照すると、オペレーション３００１において、ホストサーバー１０４は、アクセラレータ４０５からアクセラレータＩＤを請求する。オペレーション３００２において、前記請求に応じて、ＤＰアクセラレータ４０５は、アクセラレータＩＤ２９０９（例えば、ＤＰアクセラレータのシリアル番号またはＵＵＩＤ）をホストサーバー１０４に返す。オペレーション３００３において、ホストサーバー１０４は、受信されたアクセラレータＩＤを信頼できるサーバー２９２１に送信する。ここで、信頼できるサーバー２９２１は、ＤＰアクセラレータ４０５に関する認証書情報を有する認証機関、第三者の信頼できるサーバーまたはローカルの信頼できるサーバーであってもよい。オペレーション３００４において、前記請求に応じて、信頼できるサーバー２９２１は、ＤＰアクセラレータ４０５のアクセラレータＩＤに関連付けられる認証書をホストサーバー１０４に送信する。
【０１４１】
オペレーション３００５において、ホストサーバー１０４は、アクセラレータＩＤに関連付けられる認証書から認証書情報（例えば、パブリックキーＰＫ＿ＲＫ）を抽出し、認証書情報をアクセラレータＩＤと一緒にローカル記憶装置（例えば、ＰＫ＿ＲＫ（ｓ）２９０３）に記憶する。一実施形態において、抽出されたＰＫ＿ＲＫは、ＤＰアクセラレータ４０５のために事前に取得されたかもしれないＤＰアクセラレータ４０５のための既存のＰＫ＿ＲＫ（例えば、ＰＫ＿ＲＫ（ｓ）２９０３の一部である既存のＰＫ＿ＲＫ）に対して検証され得る。選択的に、認証書情報は、信頼できるサーバー２９２１の認証書チェーンを検証することにより、検証されることができる。認証書チェーンは、送信者と信頼されたサーバー（認証機関など）が信頼できることを受信者が確認できるようにする認証書の順序付きリストである。オペレーション３００６において、検証および／または認証書情報（例えば、ＰＫ＿ＲＫ）に基づいて、ホストサーバー１０４は、ＤＰアクセラレータ４０５との作成される安全な接続（例えば、１つまたは複数のセキュアチャネル）を請求する。
【０１４２】
なお、その後、ホストサーバー１０４は、ＰＫ＿ＲＫを利用して、ＤＰアクセラレータ４０５によって送信されたセキュアメッセージを解読することができ、ここで、セキュアメッセージはＳＫ＿ＲＫによって暗号化される。これらのメッセージは、上述したように、認証キーペア（例えば、ＰＫ＿ＡＴＴとＳＫ＿ＡＴＴ）に関連付けられる検証メッセージを含むことができ、パブリック認証キーのサインを検証し、ＤＰアクセラレータに記憶されたカーネルオブジェクトを認証することができる。このメッセージは、上述したように、一時的なパブリック／プライベートキーペア（例えば、ＰＫ＿ｄ、ＳＫ＿ｄ）のための検証メッセージと、ＤＰアクセラレータ４０５のセッションキーをさらに含んでもよい。いくつかの実施形態において、ランダムに生成された数字は、図２９のバージョン番号２９１１と一緒に認証キーペアと一時的なパブリック／プライベートキーペアを生成するのに使用することができる。この場合、バージョン番号２９１１がアップデートされると（例えば、ファームウェアのアップグレードによってアップデートされる場合）、セッションのための認証キーペアと一時的なパブリック／プライベートキーペアは、期限切れになる。
【０１４３】
ＤＰアクセラレータはさらに、アクセラレータのバージョン番号（図２９のバージョン番号２９１１）、および／または乱数生成手段によって生成された乱数に基づいて、パブリック／プライベート認証キーペア（例えば、ＰＫ＿ＡＴＴとＳＫ＿ＡＴＴ）を生成することができる。同様に、一時的なパブリック／プライベートキーペア（例えば、ＰＫ＿ｄ及び、ホストシステムとＤＰアクセラレータとの間の通信セッションに関連付けられるセッションキーを作成するのに利用されるＳＫ＿ｄ）はさらに、アクセラレータのバージョン番号（図２９のバージョン番号２９１１）および／または乱数生成手段によって生成された乱数に基づいて生成されることができる。
【０１４４】
図３１は、一実施形態による方法の一例を示すフローチャートである。プロセス３１００は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む処理ロジックによって実行されることができる。例えば、プロセス３１００は、図２９のホスト１０４のようなホストシステムによって実行されることができる。図３１を参照すると、ブロック３１０１において、処理ロジックは、ホストシステムにおいて、ＤＰアクセラレータからＤＰアクセラレータを一意に識別するためのアクセラレータＩＤを受信し、ここで、ホストシステムは、バスを介してＤＰアクセラレータに接続される。ブロック３１０２において、処理ロジックは、ネットワークを介してアクセラレータＩＤを所定の信頼できるサーバーに送信する。ブロック３１０３において、処理ロジックは、ネットワークを介して所定の信頼できるサーバーから認証書を受信し、ここで、認証書は、ＤＰアクセラレータに関連付けられるパブリックキー（ＰＫ＿ＲＫ）を含む。ブロック３１０４において、選択的に、一実施形態において、処理ロジックは、（例えば、信頼できるサーバーの認証書チェーンを検証することにより、）認証書が所定の信頼できるサーバーに関連付けられるか否かを検証する。ブロック３１０５において、処理ロジックは、認証書からパブリックルートキー（ＰＫ＿ＲＫ）を抽出し、ＤＰアクセラレータにより送信されたＰＫ＿ＲＫを利用して、抽出されたＰＫ＿ＲＫを検証して、ＤＰアクセラレータが本当に主張されたＤＰアクセラレータであることを認証する。ブロック３１０６において、処理ロジックは、検証に基づいてＰＫ＿ＲＫを利用して、ＤＰアクセラレータとのセキュアチャネルを作成し、ホストシステムとＤＰアクセラレータの間でデータを安全に交換する。
【０１４５】
一実施形態において、ＤＰアクセラレータは、ホストシステム内でホストされたアプリケーションを代表してデータ処理オペレーションを実行するように動作することができる１つまたは複数の実行ユニットを含む。一実施形態において、所定の信頼できるサーバーは、アプリケーションのプロバイダに関連付けられる。一実施形態において、所定の信頼できるサーバーは、ＤＰアクセラレータのプロバイダに関連付けられる。一実施形態において、ＰＫ＿ＲＫはさらに、ＤＰアクセラレータに対して生成されたサインを検証するのに利用される。
【０１４６】
他の一実施形態において、ＰＫ＿ＲＫは、ホストシステムによって使用されて、ホストシステムとＤＰアクセラレータとの間の通信セッションに関連付けられたセッションキーを作成する。他の一実施形態において、ＰＫ＿ＲＫは、ホストシステムによって使用され、パブリック認証キーのサインを検証し、ＤＰアクセラレータに記憶されたカーネルオブジェクトを認証する。
【０１４７】
なお、以上に例示及び説明された構成要素の一部又は全ては、ソフトウェア、ハードウェア、又はそれらの組み合わせで実現されることができる。例えば、このような構成要素は、永続性記憶装置にインストールされるとともに格納されるソフトウェアとして実現されてもよく、前記ソフトウェアは、本開示にわたって記載されたプロセス又はオペレーションを実施するように、プロセッサ（図示せず）によってメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路（例えば、特定用途向け集積回路又はＡＳＩＣ）、デジタルシグナルプロセッサ（ＤＳＰ）、又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のような専用ハードウェアにプログラミングされたか又は埋め込まれた実行可能なコードとして実現されてもよく、前記実行可能なコードはアプリケーションからの対応するドライバ及び／又はオペレーティングシステムを介してアクセスすることができる。更に、このような構成要素は、ソフトウェアコンポーネントが１つ又は複数の特定の命令によってアクセス可能な命令セットの一部として、プロセッサ又はプロセッサコアにおける特定のハードウェアロジックとして実現されることができる。
【０１４８】
図３２は、本開示の一実施形態と組み合わせて使用可能なデータ処理システムの一例を示すブロック図である。例えば、システム１５００は、上記の任意のプロセスまたは方法を実行する上記のいずれのデータ処理システムを表すことができる。例えば、上記のようなクライアントデバイスまたはサーバー、および例えば、クライアント１０１〜１０２、およびサーバー１０４などが挙げられる。
【０１４９】
システム１５００は、いくつかの異なる構成要素を備えていてもよい。これらの構成要素は、集積回路（ＩＣ）、集積回路の一部、ディスクリート型電子デバイス、又は回路基板（例えば、コンピュータシステムのマザーボード又はアドインカード）に適するその他のモジュールとして実現されることができ、又は、他の形態でコンピュータシステムのシャーシ内に組み込まれた構成要素として実現されることができる。
【０１５０】
なお、システム１５００は、コンピュータシステムのいくつかの構成要素の高レベルビューを示すことを意図している。しかしながら、いくつかの実施形態において付加的構成要素が存在してもよく、また、その他の実施形態において示された構成要素を異なる構成にすることが可能であることを理解されたい。システム１５００は、デスクトップコンピュータ、ノードパソコン、タブレットコンピュータ、サーバー、モバイルフォン、メディアプレーヤ、パーソナルデジタルアシスタント（ＰＤＡ）、スマート腕時計、パーソナル通信機、ゲーミングデバイス、ネットワークルータ又はハブ、ワイヤレスアクセスポイント（ＡＰ）又はリピータ、セットトップボックス或いはそれらの組み合わせを示すことができる。また、単一の機械又はシステムのみが示されたが、「マシン」又は「システム」という用語は、本明細書で説明されるいずれか１つ又は複数の方法を実行するための、１つ（又は複数）の命令セットを単独で又は共同で実行する機械又はシステムの任意の組み合わせも含まれることを理解されたい。
【０１５１】
一実施形態において、システム１５００は、バス又はインターコネクト１５１０を介して接続される、プロセッサ１５０１と、メモリ１５０３と、デバイス１５０５〜１５０８とを含む。プロセッサ１５０１は、単一のプロセッサコア又は複数のプロセッサコアが含まれる単一のプロセッサ又は複数のプロセッサを表すことが可能である。プロセッサ１５０１は、マイクロプロセッサ、中央処理装置（ＣＰＵ）などのような、１つ又は複数の汎用プロセッサを表すことができる。より具体的には、プロセッサ１５０１は、複雑命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、又はその他の命令セットを実行するプロセッサ、又は命令セットの組み合わせを実行するプロセッサであってもよい。プロセッサ１５０１は更に１つ又は複数の専用プロセッサであってもよい。例えば、特定用途向け集積回路（ＡＳＩＣ）、セルラー若しくはベースバンドプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、ネットワークプロセッサ、グラフィックプロセッサ、ネットワークプロセッサ、通信プロセッサ、暗号化プロセッサ、コプロセッサ、組込みプロセッサ、又は命令を処理可能な任意の他の種類のロジックが挙げられる。
【０１５２】
プロセッサ１５０１は、超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよく、前記システムの様々な構成要素と通信するための主処理ユニット及び中央ハブとして機能することができる。このようなプロセッサは、システムオンチップ（ＳｏＣ）として実装されてもよい。プロセッサ１５０１は、本明細書で説明されるオペレーション及びステップを実行するための命令を実行するように構成される。システム１５００は、更に任意選択グラフィックサブシステム１５０４と通信するグラフィックインターフェースを含むことができ、グラフィックサブシステム１５０４は、表示コントローラ、グラフィックプロセッサ及び／又は表示装置を含んでいてもよい。      
【０１５３】
プロセッサ１５０１は、メモリ１５０３と通信することができ、一実施形態において、メモリ１５０３は、所定量のシステムメモリを提供するための複数のメモリデバイスによって実現されることができる。メモリ１５０３は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、又はその他のタイプの記憶装置のような、１つ又は複数の揮発性記憶（又はメモリ）装置を含むことができる。メモリ１５０３は、プロセッサ１５０１又はその他の任意のデバイスにより実行される命令シーケンスを含む情報を格納することができる。例えば、様々なオペレーティングシステム、デバイスドライバ、ファームウェア（例えば、ベーシックインプット／アウトプットシステム又はＢＩＯＳ）、及び／又はアプリケーションの実行可能なコード及び／又はデータは、メモリ１５０３にロードされ、プロセッサ１５０１により実行されることができる。オペレーティングシステムは、例えば、Ｍｉｃｒｏｓｏｆｔ(R)社のＷｉｎｄｏｗｓ(R)オペレーティングシステム、アップル社のＭａｃＯＳ(R)／ｉＯＳ(R)、Ｇｏｏｇｌｅ(R)社のＡｎｄｒｏｉｄ(R)、ＬＩＮＵＸ(R)、ＵＮＩＸ(R)、又はその他のリアルタイム若しくは組込みオペレーティングシステム（例えば、ＶｘＷｏｒｋｓ）のような、任意の種類のオペレーティングシステムであってもよい。
【０１５４】
システム１５００は、更にデバイス１５０５〜１５０８のようなＩ／Ｏデバイスを含むことができ、Ｉ／Ｏデバイスは、ネットワークインターフェースデバイス１５０５、任意選択入力装置１５０６、及びその他の任意選択Ｉ／Ｏデバイス１５０７を含む。ネットワークインターフェースデバイス１５０５は、無線送受信機及び／又はネットワークインターフェースカード（ＮＩＣ）を含むことができる。無線送受信機は、ＷｉＦｉ送受信機、赤外線送受信機、ブルートゥース送受信機、ＷｉＭａｘ送受信機、無線携帯電話送受信機、衛星送受信機（例えば、全地球測位システム（ＧＰＳ）送受信機）、又はその他の無線周波数（ＲＦ）送受信機、又はそれらの組み合わせであってもよい。ＮＩＣは、イーサネットカードであってもよい。
【０１５５】
入力装置１５０６は、マウス、タッチパッド、タッチスクリーン（表示装置１５０４と統合されてもよい）、ポインターデバイス（例えば、スタイラス）、及び／又はキーボード（例えば、物理キーボード又はタッチスクリーンの一部として表示された仮想キーボード）を含むことができる。例えば、入力装置１５０６は、タッチスクリーンと接続されるタッチスクリーンコントローラを含むことができる。タッチスクリーン及びタッチスクリーンコントローラは、例えば、様々なタッチ感応技術（コンデンサ、抵抗、赤外線、及び表面弾性波の技術を含むが、それらに限定されない）のいずれか、並びにその他の近接センサアレイ、又は、タッチスクリーンと接触する１つ又は複数の点を確定するためのその他の素子を用いて、それらの接触、移動又は中断を検出することができる。    
【０１５６】
Ｉ／Ｏデバイス１５０７は、音声装置を含むことができる。音声装置は、音声認識、音声複製、デジタル記録、及び／又は電話機能のような音声サポート機能を促進するために、スピーカ及び／又はマイクロホンを含んでもよい。その他のＩ／Ｏデバイス１５０７は、更に、ユニバーサルシリアルバス（ＵＳＢ）ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ（例えば、ＰＣＩ−ＰＣＩブリッジ）、センサ（例えば、加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなどのモーションセンサ）、又はそれらの組み合わせを含むことができる。デバイス１５０７は、結像処理サブシステム（例えば、カメラ）を更に含むことができ、前記結像処理サブシステムは、写真及びビデオ断片を記録することなどのカメラ機能を実現するための、電荷接続素子（ＣＣＤ）又は相補型金属酸化物半導体（ＣＭＯＳ）光学センサのような光学センサを含むことができる。特定のセンサは、センサハブ（図示せず）を介してインターコネクト１５１０に接続されることができ、キーボード又はサーマルセンサのようなその他のデバイスはシステム１５００の具体的なコンフィギュレーション又は設計により、組込みコントローラ（図示せず）により制御されることができる。
【０１５７】
データ、アプリケーション、１つ又は複数のオペレーティングシステムなどの情報の永続性記憶を提供するために、プロセッサ１５０１には、大容量記憶デバイス（図示せず）が接続されることができる。様々な実施形態において、より薄くてより軽量なシステム設計を可能にしながら、システムの応答性を向上するために、このような大容量記憶装置は、ソリッドステート装置（ＳＳＤ）によって実現されることができる。しかしながら、その他の実施形態において、大容量記憶デバイスは、主にハードディスクドライブ（ＨＤＤ）を使用して実現することができ、より小さい容量のＳＳＤ記憶デバイスをＳＳＤキャッシュとして機能することで、停電イベントの間にコンテキスト状態及び他のそのような情報の不揮発性記憶を可能にし、それによりシステムオペレーションが再開するときに通電を速く実現することができる。また、フラッシュデバイスは、例えば、シリアルペリフェラルインターフェース（ＳＰＩ）を介してプロセッサ１５０１に接続されることができる。このようなフラッシュデバイスは、前記システムのベーシックインプット／アウトプットソフトウェア（ＢＩＯＳ）及びその他のファームウェアを含むシステムソフトウェアの不揮発性記憶のために機能することができる。
【０１５８】
記憶デバイス１５０８は、本明細書に記載の方法又は機能のいずれか１つ又は複数を具現化する１つ又は複数の命令セット又はソフトウェア（例えば、モジュール、ユニット及び／又はロジック１５２８）が格納されているコンピュータアクセス可能な記憶媒体１５０９（機械可読記憶媒体又はコンピュータ可読媒体とも呼ばれる）を備えてもよい。処理モジュール／ユニット／ロジック（１５２８）は、上述したように、前述した構成要素のうち、任意の一つを表示することができ、例えば、図２のホストサーバー１０４、図２のランタイムライブラリ２０５、図４のＤＰアクセラレータ４０５、図４のＩ／Ｏマネージャ４０１またはＩ／Ｏインターフェース４１５、図９及び図１４のＨＣＭ９０１またはＡＣＭ９１５、及び図１７のＭＭ１７０１、図２０のセキュリティユニット１０２０およびタイムユニット２００３を表すことができる。処理モジュール／ユニット／ロジック１５２８は、更に、データ処理システム１５００、メモリ１５０３、及びプロセッサ１５０１による実行中に、メモリ１５０３内及び／又はプロセッサ１５０１内に完全的に又は少なくとも部分的に存在してもよく、データ処理システム１５００、メモリ１５０３及びプロセッサ１５０１も機械アクセス可能な記憶媒体を構成する。処理モジュール／ユニット／ロジック１５２８は、更に、ネットワークを介してネットワークインターフェースデバイス１５０５を介して送受信されてもよい。
【０１５９】
コンピュータ可読記憶媒体１５０９は、以上に説明されたいくつかのソフトウェア機能を永続的に格納するために用いることができる。コンピュータ可読記憶媒体１５０９は、例示的な実施形態において単一の媒体として示されるが、「コンピュータ可読記憶媒体」という用語は、前記１つ又は複数の命令セットが格納される単一の媒体又は複数の媒体（例えば、集中型又は分散型データベース及び／又は関連するキャッシュとサーバー）を含むと解釈されるものとする。「コンピュータ可読記憶媒体」という用語は、更に、命令セットを格納又は符号化できる任意の媒体を含むと解釈されるものであり、前記命令セットは機械により実行され、本開示のいずれか１種又は複数種の方法を機械に実行させるためのものである。それゆえに、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体及び磁気媒体、又はその他の任意の非一時的機械可読媒体を含むが、それらに限定されないと解釈されるものとする。
【０１６０】
本明細書に記載された処理モジュール／ユニット／ロジック１５２８、構成要素及びその他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、又はＡＳＩＣＳ、ＦＰＧＡ、ＤＳＰ又は類似の装置のようなハードウェア構成要素の機能に統合されてもよい。更に、処理モジュール／ユニット／ロジック１５２８は、ハードウェア装置におけるファームウェア又は機能性回路として実現されてもよい。更に、処理モジュール／ユニット／ロジック１５２８は、ハードウェア装置とソフトウェア構成要素の任意の組み合わせで実現されてもよい。
【０１６１】
なお、システム１５００は、データ処理システムの様々な構成要素を有するものとして示されているが、構成要素を相互接続する任意の特定のアーキテクチャ又は方式を表すことを意図するものではなく、そのような詳細は、本開示の実施形態とは密接な関係がない。また、より少ない構成要素又はより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバー及び／又はその他のデータ処理システムは、本開示の実施形態と共に使用することも可能であることを理解されたい。
【０１６２】
上述した具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現により示された。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらのオペレーションは、物理量の物理的処置が必要とされるものである。
【０１６３】
しかしながら、念頭に置くべきなのは、これらの用語及び類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解すべきなのは、用語（例えば、添付された特許請求の範囲に記載のもの）による説明とは、コンピュータシステム、又は類似の電子式計算装置の動作及び処理を指し、前記コンピュータシステム又は電子式計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理（電子）量として示されたデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示された別のデータに変換する。
【０１６４】
図に示される技術は、１つ又は複数の電子機器に格納され実行されるコード及びデータを使用して実施することができる。そのような電子機器は、コンピュータ可読媒体（例えば、非一時的コンピュータ可読記憶媒体（例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み取り専用メモリ、フラッシュメモリ装置、相変化メモリ）及び一時的コンピュータ可読伝送媒体（例えば、電気的、光学的、音響的、又は他の形態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号など）など）を使用して、コード及びデータを格納及び伝送する（内部に伝送され、及び／又はネットワークを介して他の電子装置に伝送される）。  
【０１６５】
上述した図面において説明されたプロセス又は方法は、ハードウェア（例えば、回路、専用ロジックなど）、ファームウェア、ソフトウェア（例えば、非一時的コンピュータ可読媒体に具現化されるもの）、又はそれらの組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記オペレーションの一部が異なる順序で実行されてもよいことを理解されたい。また、一部のオペレーションは、順番ではなく並行して実行されてもよい。
【０１６６】
本明細書において、本開示の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本開示のより広い趣旨及び範囲を逸脱しない限り、本開示に対して様々な変更を行うことができる。それゆえに、本明細書及び図面は、限定的な意味でなく、例示的な意味で理解されるべきである。
【国際調査報告】
2021513691.tif 000040
2021513691.tif 000041