(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-03
(54)【発明の名称】トランスポート層セキュリティの適応的アクセラレーション
(51)【国際特許分類】
H04L 9/10 20060101AFI20241126BHJP
H04L 9/36 20060101ALI20241126BHJP
H04L 9/08 20060101ALI20241126BHJP
G06F 21/85 20130101ALI20241126BHJP
H04L 9/32 20060101ALI20241126BHJP
【FI】
H04L9/10 A
H04L9/36
H04L9/08 F
G06F21/85
H04L9/32 200B
H04L9/32 200F
H04L9/08 C
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024533333
(86)(22)【出願日】2022-11-09
(85)【翻訳文提出日】2024-07-25
(86)【国際出願番号】 US2022049442
(87)【国際公開番号】W WO2023107233
(87)【国際公開日】2023-06-15
(32)【優先日】2021-12-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】ダスティダー, ジャイディープ
(72)【発明者】
【氏名】グプタ, アマン
(72)【発明者】
【氏名】スリニバサン, クリシュナン
(72)【発明者】
【氏名】アーマッド, サギール
(57)【要約】
本明細書の実施形態は、暗号化アクティビティをネットワークインターフェースコントローラ/カード(NIC)(例えば、SmartNIC)にオフロードし、サーバの計算リソースを解放して、顧客アプリケーションの実行に集中することについて説明する。一実施形態では、スマートNICは、埋め込みプロセッサを含む集積回路(IC)上に実装されたシステムオンチップ(SoC)を含む。トランスポート層セキュリティ(TLS)スタックを完全に埋め込みプロセッサ内で実行する代わりに、本明細書の実施形態は、公開・秘密鍵ペアの生成など、特定のTLSタスクを公開鍵インフラストラクチャ(PKI)アクセラレータにオフロードする。
【選択図】
図1
【特許請求の範囲】
【請求項1】
スマートネットワークインターフェースコントローラ(NIC)であって、
第1のオペレーティングシステム(OS)を実行するように構成されたプロセッサコアであって、前記プロセッサコアに、前記第1のOSが公開・秘密鍵ペアを取得するための許可された要求側エージェントであることを示すために、なりすまし不可能な物理識別子が割り当てられている、プロセッサコアと、
前記プロセッサコアに結合され、信頼できる経路であって、前記相互接続内の信頼できない経路から物理的に隔離されるか、又は前記信頼できる経路が前記相互接続内の信頼できないエージェントからアクセス制御されるように論理的に隔離されるか、のうちの少なくとも1つである、信頼できる経路を定義する回路を含む、相互接続と、
前記公開・秘密鍵ペアを生成するように構成された回路を備える、公開鍵インフラストラクチャ(PKI)アクセラレータと、
前記相互接続と前記PKIアクセラレータとの間に結合され、正しいなりすまし不可能な物理識別子を有する前記許可された要求側エージェントが、前記PKIアクセラレータによって生成された前記公開・秘密鍵ペアへのアクセスを認められることのみ確実にするように構成されているアクセス制御回路と、を備える、スマートネットワークインターフェースコントローラ(NIC)。
【請求項2】
前記第1のOSが公開・秘密鍵ペアを取得するための許可された要求側エージェントであることを示す第2のなりすまし不可能な物理識別子が割り当てられたPLコアを備える、プログラマブルロジック(PL)を更に備える、請求項1に記載のスマートNIC。
【請求項3】
前記相互接続が、前記なりすまし不可能な物理識別子を前記アクセス制御回路に転送する、請求項1に記載のスマートNIC。
【請求項4】
スマートNICであって、
第1のオペレーティングシステム(OS)を実行するように構成された強化されたプロセッサコアであって、前記プロセッサコアに、前記第1のOSが公開・秘密鍵ペアを取得するための第1の許可された要求側エージェントであることを示すために、第1のなりすまし不可能な物理識別子が割り当てられる、強化されたプロセッサコアと、
第2のOSを実行するように構成されたプログラマブルロジック(PL)コアであって、前記PLコアに、前記第2のOSが公開・秘密鍵ペアを取得するための第2の許可された要求側エージェントであることを示す第2のなりすまし不可能な物理識別子が割り当てられる、PLコアと、
前記公開・秘密鍵ペアを生成するように構成された回路を備える、前記相互接続に結合された公開鍵インフラストラクチャ(PKI)アクセラレータと、
前記PKIアクセラレータとプロセッサ及びPLコアとの間の通信を容易にするように構成された相互接続であって、正しいなりすまし不可能な物理識別子を含む許可された要求側エージェントが、前記PKIアクセラレータによって生成された前記公開・秘密鍵ペアを取得することを認められることのみを確実にする回路を備える、相互接続と、を備える、スマートNIC。
【請求項5】
前記相互接続と前記PKIアクセラレータとの間に結合され、正しいなりすまし不可能な物理識別子を有する前記許可された要求側エージェントが、前記PKIアクセラレータによって生成された前記公開・秘密鍵ペアへのアクセスを認められることのみ確実にするように構成されているアクセス制御回路を、更に備える、請求項4に記載のスマートNIC。
【請求項6】
メインメモリと、
任意選択的なPLメモリと、
前記PKIアクセラレータ内のアクセラレータメモリと、を更に備え、前記メインメモリ、前記任意選択的なPLメモリ、及び前記アクセラレータメモリが、前記PKIアクセラレータによって生成された前記公開・秘密鍵ペアを記憶するように構成され、前記メインメモリ、前記PLメモリ、及び前記アクセラレータメモリが、前記プロセッサコア内のキャッシュとキャッシュコヒーレントであり、前記アクセス制御回路は、正しいなりすまし不可能な物理識別子を有する前記許可された要求側エージェントが前記メインメモリ、前記PLメモリ、及び前記アクセラレータメモリ内に記憶された前記公開・秘密鍵ペアを取得することを認められることのみを確実にするように構成されている、請求項1又は5に記載のスマートNIC。
【請求項7】
前記プロセッサコア、PL、相互接続、PKIアクセラレータ、及びアクセス制御回路が、システムオンチップ(SoC)の一部である、請求項1又は4に記載のスマートNIC。
【請求項8】
前記第1のOS、又は前記第1のOSと前記第2のOSの両方が、トランスポート層セキュリティ(TLS)スタックを実行するように構成され、
前記第1のOS、又は前記第1のOSと前記第2のOSの両方が、前記プロセッサコア内のトランスポート層セキュリティ(TLS)スタックを実行するように構成されている、請求項1又は4に記載のスマートNIC。
【請求項9】
前記PKIアクセラレータが、
前記公開・秘密鍵ペアを導出するために使用される前記OSからの要求に応じて乱数を生成するように構成された乱数生成器(RNG)を備える、請求項1又は4に記載のスマートNIC。
【請求項10】
方法であって、
要求側エージェントを使用して、公開・秘密鍵ペアをスマートNIC内のメモリに生成するための動作パラメータを書き込むことであって、前記要求側エージェントは、前記スマートNIC内の強化されたプロセッサコア又はプログラマブルロジックコアのうちの1つであり、前記要求側エージェントが、前記要求側エージェントに公開・秘密鍵ペアを取得するために許可されたことを示すために、なりすまし不可能な物理識別子が割り当てられている、書き込むことと、
公開鍵インフラストラクチャ(PKI)アクセラレータを使用して前記動作パラメータを読み取ることと、
前記PKIアクセラレータを使用して前記公開・秘密鍵ペアを生成することと、
前記PKIアクセラレータを使用して、前記公開・秘密鍵ペアを前記メモリに書き込むことと、
前記公開・秘密鍵ペアの準備ができていることを示す割り込みを前記要求側エージェントに送信することと、を含み、アクセス制御回路が、前記要求側エージェントと前記メモリ及び前記PKIアクセラレータとの間で通信可能に結合され、前記アクセス制御回路は、正しいなりすまし不可能な物理識別子を有する許可された要求側エージェントが、前記メモリに記憶された前記公開・秘密鍵ペアにアクセスすることを認められることのみを確実にする、方法。
【請求項11】
前記動作パラメータを前記メモリに書き込む前に、
前記要求側エージェントによって、前記PKIアクセラレータからの公開鍵を要求することと、
前記PKIアクセラレータを使用して、前記公開鍵を導出する乱数を生成することと、を更に含む、請求項10に記載の方法。
【請求項12】
前記要求側エージェントが、トランスポート層セキュリティ(TLS)スタックを実行するオペレーティングシステムを実行する、請求項10に記載の方法。
【請求項13】
前記要求側エージェントが、前記動作パラメータを、前記要求側エージェント内のキャッシュとキャッシュコヒーレントである前記スマートNIC内のメインメモリに書き込み、前記方法が、
相互接続を介したダイレクトメモリアクセス(DMA)を使用して、前記動作パラメータを読み取るように、前記PKIアクセラレータをプログラムすることを更に含み、前記相互接続が、前記要求側エージェントと前記PKIアクセラレータ及び前記メインメモリとの間で通信可能に結合される、請求項10に記載の方法。
【請求項14】
前記要求側エージェントが、前記動作パラメータを、前記要求側エージェント内のキャッシュとキャッシュコヒーレントである前記PKIアクセラレータ内のアクセラレータメモリに書き込み、前記方法が、
前記要求側エージェントと前記PKIアクセラレータとの間に結合された相互接続を使用せずに、前記アクセラレータメモリにアクセスして前記動作パラメータを取得するように前記PKIアクセラレータをプログラムすることを更に含む、請求項10に記載の方法。
【請求項15】
前記要求側エージェントを使用して、サーバ証明書のハッシュを決定することと、
前記ハッシュ、前記サーバ証明書、及び秘密鍵を前記メモリに書き込むことと、
前記PKIアクセラレータを使用して、前記メモリから前記ハッシュ、前記サーバ証明書、秘密鍵を読み取ることと、
前記ハッシュ、前記サーバ証明書、及び前記PKIアクセラレータ内の前記秘密鍵を使用して、楕円曲線デジタル署名アルゴリズム(ECDSA)検証を実行することと、を更に含む、請求項10に記載の方法。
【請求項16】
前記要求側エージェントを使用して、サーバ公開鍵及びクライアント秘密鍵を前記メモリに書き込むことと、
前記要求側エージェントを使用して、サーバ/クライアントのHelloパケットのハッシュを前記メモリに書き込むことと、
前記PKIアクセラレータを使用して、前記サーバの公開鍵、前記クライアントの秘密鍵、及び前記メモリからの前記ハッシュを読み取ることと、
前記サーバの公開鍵、前記クライアントの秘密鍵、及び前記ハッシュに基づいて、前記PKIアクセラレータを使用して楕円曲線ディフィーヘルマン(ECDH)点乗算を実行することと、を更に含む、請求項10に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例は、概して、スマートネットワークインターフェースコントローラ/カード(Smart Network Interface Controller/Card、SmartNIC)においてトランスポートレイヤセキュリティ(transport layer security、TLS)を実行することに関する。
【背景技術】
【0002】
セキュアなクライアント-サーバ通信システム並びにピアツーピア通信ネットワークは、典型的には、2段階暗号化プロセスに依存する。通信全体と比較して持続時間が相対的に短い第1のフェーズでは、2つの通信エージェント(例えば、クライアント及びサーバ)がセッション鍵をセキュアに交換する。第1のフェーズは、典型的に、非対称暗号化を採用し、交換された情報を使用して、それぞれ、クライアント及びサーバによって使用されるより長く存続するマスター鍵又は一次鍵を生成する。非対称暗号化は、より計算集約的であり、したがって、より大きい待ち時間も被る。
【0003】
第1のフェーズの後に第2のフェーズが続き、第2のフェーズは、通信全体と比較して持続時間が相対的に長く、第1のフェーズ中に交換されたセッション鍵を使用して暗号化された情報のセキュアな交換を伴う。第2のフェーズは、典型的には、交換される情報がより短い寿命のセッション鍵を使用して暗号化される対称暗号化を採用する。対称暗号化は、計算集約的ではなく、また、大幅に短い待ち時間を被る。
【0004】
多数のセッション鍵を採用して多数のクライアント接続にサービスを提供することができ、また、特定のクライアント接続は、セキュアな通信を増加させるために、鍵満了スケジュールに従って、使用されるセッション鍵を継続的にロール又は補充することができる。インターネットエンジニアリングタスクフォース(Internet Engineering Task Force、IETF)トランスポートレアセキュリティ(Transport Layer Security、TLS)1.3は、暗号化プロセスの両方のフェーズを可能にする例示的な業界標準であり、第1のフェーズをハンドシェイクプロトコルと称し、第2のフェーズを記録プロトコルと称する。規格に準拠する異なるソフトウェアスタックを実行する複数の製造業者からのエージェントは、セッション鍵を交換してセキュアな通信チャネルを確立するためにシームレスに相互運用することができる。
【発明の概要】
【0005】
SmartNICを動作させるための技術が説明される。一例は、オペレーティングシテム(operating system、OS)を実行するように構成されたプロセッサコアを含むSmartNICであり、プロセッサコアには、OSが公開秘密鍵のペアを取得するための許可された要求側エージェントであることを示す、なりすまし不可能な物理識別子と、プロセッサコアに結合され、相互接続内の信頼できない経路から物理的に分離されているか、論理的に分離されているかのうちの少なくとも1つである信頼できる経路を定義する回路を含む相互接続が割り当てられ、その結果、信頼できる経路が相互接続内の信頼できないエージェントからアクセス制御される。SmartNICにはまた、公開・秘密鍵ペアを生成するように構成された回路を含む公開鍵インフラストラクチャ(Public Key Infrastructure、PKI)アクセラレータ及び相互接続とPKIアクセラレータとの間に結合され、正しいなりすまし不可能な物理識別子を有する許可された要求側エージェントのみが、PKIアクセラレータによって生成された公開・秘密鍵ペアへのアクセスを認められることのみ確実にするように構成されているアクセス制御回路も含まれる。
【0006】
本明細書で説明する一例は、第1のオペレーティングシステム(OS)を実行するように構成された強化されたプロセッサコアであって、プロセッサコアは、第1のOSが公開・秘密鍵ペアを取得するための第1の許可された要求側エージェントであることを示す第1のなりすまし不可能な物理識別子が割り当てられる、プロセッサコアと、第2のOSを実行するように構成されたプログラマブルロジック(programmable logic、PL)コアであって、PLコアは、第2のOSが公開・秘密鍵ペアを取得するための第2の許可された要求側エージェントであることを示す、第2のなりすまし不可能な物理識別子が割り当てられる、プログラマブルロジック(PL)コアと、公開・秘密鍵ペアを生成するように構成された回路を備える相互接続に結合された公開鍵インフラストラクチャ(PKI)アクセラレータと、を含む、SmartNICである。SmartNICはまた、PKIアクセラレータとプロセッサ及びPLコアとの間の通信を容易にするように構成された相互接続であって、正しいなりすまし不可能な物理識別子を含む許可された要求側エージェントのみが、PKIアクセラレータによって生成された公開・秘密鍵ペアを取得することを認められることを確実にする回路を含む、相互接続と、を含む。
【0007】
本明細書に記載された一例は、要求側エージェントを使用して、公開・秘密鍵ペアをSmartNIC内のメモリに生成するための動作パラメータを書き込むことであって、要求側エージェントが、SmartNIC内の強化されたプロセッサコア又はプログラマブルロジックコアのうちの1つであり、要求側エージェントには、要求側エージェントが公開・秘密鍵ペアを取得する権限があることを示すために、なりすまし不可能な物理識別子が割り当てられる、書き込むことを含む方法である。方法はまた、公開鍵インフラストラクチャ(PKI)アクセラレータを使用して動作パラメータを読み取ることと、PKIアクセラレータを使用して公開・秘密鍵ペアを生成することと、PKIアクセラレータを使用して、公開・秘密鍵ペアをメモリに書き込むことと、公開・秘密鍵ペアの準備ができていることを示す割り込みを要求側エージェントに送信することと、を含む。更に、アクセス制御回路は、要求側エージェントとメモリ及びPKIアクセラレータとの間で通信可能に結合され、アクセス制御回路が、正しいなりすまし不可能な物理識別子を有する許可された要求側エージェントのみが、メモリに記憶された公開・秘密鍵ペアにアクセスすることを認められることを確実にする。
【図面の簡単な説明】
【0008】
上で列挙された特徴が詳細に理解され得る様式で、上で簡潔に要約されたより具体的な説明が、例示的な実装形態を参照することによって行われ得、それらの実装形態のうちのいくつかが添付の図面に例解される。しかしながら、添付の図面は、典型的な例示の実装形態のみを例解しており、したがって、その範囲を限定するものとみなされるべきではないことに留意されたい。
【
図1】一例による、適応型TLSアクセラレーションを実行するSmartNICのブロック図である。
【
図2】例による、公開・秘密鍵ペアを生成するためのフローチャートである。
【
図3】一例による、適応型TLSアクセラレーションを実行するSmartNICのブロック図である。
【
図4】一例による、サーバ証明書を検証するためのフローチャートである。
【
図5】一例による、ハンドシェイク鍵を生成するためのフローチャートである。
【0009】
理解を容易にするために、可能な場合には、図面に共通する同一の要素を示すために同一の参照番号が使用されている。一例の要素は、他の例に有益に組み込まれ得ることが企図される。
【発明を実施するための形態】
【0010】
様々な特徴が、図面を参照して以下に記載される。図面は縮尺どおりに描かれている場合もあるか、描かれていない場合もあり、同様の構造又は機能の要素は図面全体を通して同様の参照番号によって表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、特徴の網羅的な説明として、又は特許請求の範囲の範囲に対する限定として意図されていない。加えて、例解された例は、示された全ての態様又は利点を有する必要はない。特定の実施例に関連して説明される態様又は利点は、必ずしもその実施例に限定されず、そのように例解されていない場合、又はそのように明示的に説明されていない場合であっても、任意の他の実施例において実施することができる。
【0011】
本明細書の実施形態は、暗号化アクティビティをSmartNICにオフロードし、サーバの計算リソースを解放して顧客アプリケーションの実行に集中することについて説明する。典型的なNICは、スマートNICとは異なり、ホスト/サーバの機能をオフロードするために使用することができない。つまり、スマートNIC(本明細書ではSmartNICと称される)を使用することにより、ホスト/サーバ上で実行する必要がある機能及びプロセスをオフロードし、スマートNICの計算リソースを使用して実行することができる。
【0012】
一実施形態では、SmartNICは、埋め込みプロセッサを含む集積回路(integrated circuit、IC)上に実装されたシステムオンチップ(system on a chip、SoC)を含む。TLSスタック全体を埋め込みプロセッサ内で実行する代わりに、本明細書の実施形態は、公開鍵及び秘密鍵のシードに使用される乱数を生成すること、公開・秘密鍵ペアを生成すること、サーバ証明書を検証すること、及び楕円曲線ディフィーヘルマン(Elliptic Curve Diffie-Hellman、ECDH)点乗算を実行することなどの、特定のTLSタスクを公開鍵インフラストラクチャ(PKI)アクセラレータなどにオフロードする。更に、暗号化タスクは、SoCがプログラマブルロジック(programmable logic、PL)ファブリックを含むと仮定して、PLに処理エンジンを追加することによってスケーリングすることができる。
【0013】
以下で詳しく説明するように、SmartNICを使用して鍵の生成及び交換タスクを実行すると、中央で生成されたセッション鍵のラップ及びラップ解除に使用されるオーバーヘッドが回避されるため、集中型の鍵生成及び交換スキームに比べてオーバーヘッドを削減することができる。更に、タスクをSmartNIC内のPKIアクセラレータにオフロードすることによって、本明細書の実施形態は、鍵のペア又はセッション鍵生成レートに関して実装時に性能が固定される固定機能ブロックのみに依存しない。
【0014】
図1は、一例による、適応型TLSアクセラレーションを実行するSmartNIC100のブロック図である。SmartNIC100は、クラウドコンピューティング環境のハイパーコンバージドインフラストラクチャ(hyper-converged infrastructure、HCI)の一部として使用され得、クラウドベンダに、単一の顧客又は複数の顧客の様々な計算中心、ネットワーク中心、及びストレージ中心のワークロードを管理する簡単な方法を提供する。SmartNIC(データ処理ユニット(Data Processing Units、DPU)とも称される)は、1つのコンポーネントでオフロードを高速化することに優れており、複数のクラウドテナントがこの共通の広範なハイパーコンバージドインフラストラクチャを同時に使用する仮想化とセキュリティを管理する方法もクラウドベンダに提供する。これらのコンポーネントを数百万台のハイパースケールで展開すると、消費電力がSmartNICの重要な指標となり、コンポーネントの消費電力が1ワット増加すると、データセンタの消費電力がメガワット単位で増加する可能性がある。これは、電力効率の良い様式での高効率オフロードアクセラレーションを、データセンタにおける重要な測定基準にする。
【0015】
SmartNICの別の重要な測定基準は、セキュアな通信である。SmartNICは複数のクラウドテナントに対してタスクを実行することができるので、SmartNICは、クラウドテナントが別のクラウドテナントの情報を盗聴することができないことを確実にする手段を有し得る。相互間の通信を促進する何百万ものSmartNICが存在する可能性があることを考えると、それらのテナントとそのオフロードアクセラレーション機能のためにセキュアな通信ネットワークを確立する必要がある。更に、各クラウドテナント(企業など)内であっても、企業の一部門の財務又は法務などの機密情報を企業の他の部分の偶発的又は悪意のある盗聴者からインサイダ情報と共に守る必要がある場合がある。
【0016】
更に、最新のパブリッククラウドインフラストラクチャが普及し、信頼性が高まっていることから、政府機関が独自のセキュアなプライベートクラウドインフラストラクチャを構築する代わりに、パブリッククラウドインフラストラクチャプロバイダとクラウド契約を締結することが最近の傾向になっている。これにより、情報の暗号化と交換に使用される政府機関の暗号化鍵にクラウドインフラストラクチャプロバイダ自体がアクセス可能になり得ないことを確実にするだけでなく、他のクラウドテナントがそれらの鍵にアクセス不能であることを確実にするための、コンポーネントの自律セキュリティに対する新しい要件が追加される。
【0017】
クラウド展開で使用すると、本明細書の実施形態は、数百万のSmartNICが全てのクラウドネットワークにわたってセキュアに通信し、クラウドネットワークを共有する数千万のテナント間のデータ移動を暗号化し、鍵のペア(秘密鍵及び公開セッション鍵)が、敵対的なクラウドテナント又はクラウドインフラストラクチャプロバイダ自体のいずれかにアクセス可能ではない様式で、数億のセッション鍵を使用することを可能にする。加えて、これらの鍵は、電力効率の良い様式で生成され、交換される。
【0018】
通信エージェントのペアが、中央データセンターベンダの鍵コンテナを使用して鍵を取得する分散コンピューティングクライアントノードで構成される集中型モデル、又は通信エージェントのペアがピア計算ノード若しくはストレージノードで構成され、相互に鍵を交換するピアツーピアモデルのいずれかを使用する代わりに、本明細書の実施形態は、電力を低減し、セキュリティを改善するSmartNIC内の分散タスクに依存する。例えば、鍵交換のための集中型モデルは、クラウドインフラストラクチャプロバイダの中央鍵コンテナの代わりに作用する専用セキュリティ機器に依存し得る。これらの専用セキュリティ機器は、何百万もの分散された計算クライアントノード又はストレージクライアントノードとのセッション鍵を生成及び認証する。専用のセキュリティアプライアンスは、非常に高いレートでセッション鍵を生成するように設計されており、これらのラップされたセッション鍵(鍵暗号化鍵を使用して)は、計算クライアントノード又はストレージクライアントノードに配布され、次いで、それらのセッション鍵がラップ解除され、セキュアな通信に使用される。
【0019】
集中型モデルの欠点には、セキュアなピアツーピア通信のためにコンピューティングクライアントノード又はストレージクライアントノードのペアに鍵のセキュアな交換のために、追加のコンピューティングオーバーヘッドが含まれ、両方のピアは、敵対者が情報を交換するときに、これらのセッション鍵を使用してこれらのピアのデータにアクセスすることができないように、独自の送信セッション鍵と、中央の鍵コンテナからラップされた鍵として受信セッション鍵を受け取る。また、それらのピア間のセキュアな通信を増加させるために、ピアツーピア接続ごとにより多くのセッション鍵が、セッション鍵を継続的にロール/補充するために使用され得る。これは、専用セキュリティ機器が何億ものセッション鍵を生成しなければならないだけでなく、機器が、ラップされたセッション鍵を配布する前に追加の暗号関数を介してそれらのセッション鍵をラップしなければならないことを意味する。一方、多数のセッション鍵を受信する分散型計算又はストレージクライアントノードは、これらのセッション鍵をラップ解除するために暗号エンジンを追加しなければならず、したがって、追加のオーバーヘッドも同様に被る。
【0020】
集中型モデルの別の欠点は、専用のセキュリティアプライアンスが鍵のペアの生成をオフロードしていたのに対し、集中型セッション鍵生成モデルでは、分散計算又はストレージクライアントノードで数百万の一時的なセッション鍵をラップ解除するための追加の電力、コスト、及び複雑さをオフロードしない。
【0021】
このモデルの更に別の欠点は、マスター鍵又はメイン鍵の一元化された鍵コンテナにより、悪意のある攻撃者に具体的な場所が与えられ、アクセス権を取得すると、クラウドネットワーク上の何百万もの分散計算クライアントノード又はストレージクライアントノードで使用される、生成された有効なセッション鍵を使用して暗号化された情報を盗むか、操作するか、又は破壊する可能性がある。更に、典型的にはクラウド管理者の制御下で動作する集中型鍵コンテナは、自身の鍵がクラウドインフラストラクチャプロバイダに利用可能であることを信頼しないテナントに、あるレベルの自律性を提供しない。
【0022】
本明細書の実施形態は、SmartNICにおけるネイティブTLS交換方法を使用することによって、集中鍵生成及び交換モデルの欠点の多くを改善又は回避し、したがって、セッション鍵を使用して交換データを暗号化する前に、追加の暗号化機能を介してセッション鍵をラップ及びラップ解除するための追加のオーバーヘッドを被る必要はない。更に、本明細書の実施形態は、SmartNICに生成され、記憶される鍵を最初にラップする必要がないように、組み込みの暗号化及びアクセス制御方法にも依存する。更に、本明細書の実施形態は、鍵がテナントのみにアクセス可能であり、他のテナント又はクラウドインフラストラクチャプロバイダにはアクセス可能ではないように、鍵をSmartNICに記憶することができる。
【0023】
集中モデルを使用する代わりに、SmartNICで分散鍵交換を可能にする2つの方法があり、その両方は、ピアツーピア動作として行われる鍵交換を有することを伴い、したがって、一次鍵、秘密鍵、又はマスター鍵を記憶するために集中鍵コンテナを必要としない。第1の方法は、SmartNICデバイスがSmartNIC内の多数の埋め込みプロセッサコア上でTLS1.3スタック全体を実行することである。埋め込みプロセッサは、多数の関数にオフロードアクセラレーションを提供し、TLS1.3を実行するための暗号ステップを、実行すべき多くの関数のうちの1つにすぎないものとして扱う。
【0024】
しかしながら、SmartNICに埋め込まれたプロセッサのみに依存する欠点は3つある。第1に、TLS1.3規格の一部である楕円曲線暗号(elliptic-curve cryptography、ECC)などのタイプの暗号アルゴリズムを実行するために、プロセッサにおいて多数のクロックサイクルを要することが多い。したがって、これらのSmartNICデバイスが多数の埋め込みプロセッサを提供する場合であっても、暗号アルゴリズムは低いレートで実行され、したがって、新しい公開・秘密鍵ペア又はセッション鍵が生成され得るレートに低い上限を設定する(したがって、セキュリティを損なう)。第2に、埋め込みプロセッサ上で実行することができる他のオフロードアクセラレーション機能のサービスは、暗号アルゴリズムが実行されている間、停止又は減速される。これは、様々なストレージ、ネットワーク、及び計算機能を同時に、複数のテナントにわたって同時にオフロードすることができるSmartNICが使用され得るまさにその理由を損なう。プロセッサが本質的に常時動作しており、暗号アルゴリズムを非効率的に実行している場合、データセンタ内のSmartNICの価値は低減され得る。第3に、多数の埋め込みプロセッサが暗号アルゴリズムと共に様々なストレージ、ネットワーク、及び計算機能を同時に実行しているので、暗号アルゴリズムを実行するプロセッサコアは、生成された鍵のペア又はセッション鍵を盗むサイドチャネル攻撃に対して脆弱である。
【0025】
SmartNICで分散鍵交換を可能にする第2の方法は、SmartNICデバイスが、特定用途向け集積回路(application specific integrated circuit、ASIC)方法論を拡張して、多数の埋め込みプロセッサのアクセラレータとしてHardIPブロックを作成することである。プロセッサは、TLS1.3ソフトウェアスタックの非暗号化ステップを実行するが、HardIPブロックは、TLS1.3を実行するための暗号化ステップの実行に専用である。このアプローチを使用することの欠点は3つある。第1に、HardIPブロックは固定機能ブロックであるので、鍵のペア又はセッション鍵生成レートに関して、実装時(例えば、SmartNICが設計されるとき)に決定が行われなければならない。たとえSmartNICが鍵のペア又はセッション鍵のいずれかのより高い生成レートに対する必要性を有するとしても、レートは固定関数アクセラレータの能力で上限を定められる。第2に、先で言及されるように、従来のSmartNICデバイスは、様々なネットワーク、ストレージ、及び計算機能のためのオフロードアクセラレーションを提供する。ディープラーニング推論アクセラレータなどのオフロードアクセラレータが、クライアントの推論データ及び結果を保護するために、セッション鍵を使用して、受信(典型的には解凍後)データを解読するか、又は暗号化されたフォーマットのデータ若しくは推論結果を送信(通常は圧縮後)することを望むことが可能である。そのアクセラレータは、ここでセッション鍵を取得するためにその代わりに作用するために埋め込みプロセッサを呼び出す必要があり、したがって非効率的なレベルの間接化が生じる。これはまた、ディープラーニングアクセラレータをセキュリティ脆弱性に開放する。第3に、この手法は、TLS1.3ソフトウェアスタックが他のオフロードアクセラレーションアプリケーションと同時に実行されているという事実に起因して、サイドチャネル攻撃の先で言及される同じ脆弱性によって影響を受け続ける。結果として生じる鍵のペア及びセッション鍵は、アクセラレータを呼び出したプロセッサコア上で実行されるソフトウェアルーチンに返される。
【0026】
しかしながら、説明される実施形態は、SmartNICを使用せずに実行される集中鍵生成及び交換モデルと、上で考察された鍵のペア又はセッション鍵を生成するためにSmartNICを使用する2つの分散方法とに対して改善を提供する。集中鍵生成及び交換モデルとは異なり、本明細書の実施形態は、ネイティブTLS交換方法(例えば、TLS1.3セキュアクライアント/サーバ方法)を使用することができ、したがって、セッション鍵が交換されたデータを暗号化するために使用され得る前に、追加の暗号関数を介してセッション鍵をラップ及びラップ解除するための追加のオーバーヘッドを被る必要性がない。更に、本明細書の実施形態は、SmartNICに生成され、記憶される鍵を最初にラップする必要がないように、組み込みの暗号化及びアクセス制御方法に依存することができる。
【0027】
SmartNICを使用する第1の分散方法とは異なり、本明細書の実施形態は、TLSスタック全体を実行するために埋め込みプロセッサに依存する必要はない(ただし、顧客がそれを望む場合、そのオプションは依然として存在する)。SmartNICを使用する第2の分散方法とは異なり、本明細書の実施形態はまた、パフォーマンスが鍵のペア又はセッション鍵生成レートに関して実装時に固定される固定機能ブロックのみに依存する必要はない。代わりに、本明細書の実施形態は、TLSスタックのための強化された暗号アクセラレーション又は乱数生成が、HardIPで寸法決定されるように、又はプログラマブル論理によって増強されるように発生し得るように、適応レベルのパフォーマンスを可能にする。更に、PKIアクセラレータに対してTLS関数呼び出しを行うエージェントは、埋め込みプロセッサ、又はプログラム可能論理コアのいずれかとすることができ、あるいは、性能要求が強化された暗号アクセラレーションの能力を超えて増加する場合には、これら2つの組み合わせとすることができる。
【0028】
SmartNICを使用する分散方法とは異なり、ディープラーニング推論アクセラレータ(
図3に示されている)などの他のオフロードアクセラレータは、その代わりに作用するために埋め込みプロセッサを呼び出す必要がない。本明細書の実施形態は、他のオフロードアクセラレータが、HardIPネットワークオンチップ又はプログラマブルロジックインターフェースのいずれかを介してPKIアクセラレータに直接インターフェースすることを可能にする。また、暗号化アルゴリズムの実行中、一連の埋め込みプロセッサ上で実行することができる他のオフロードアクセラレーション機能のサービスが停止し又は遅延することはなく、したがって、様々なストレージ、ネットワーク、コンピューティング機能の同時オフロードを同時に、かつ複数のテナントにわたって達成する。
【0029】
サイドチャネル攻撃及び電圧グリッチ攻撃に対して脆弱である上で考察された技術とは異なり、本明細書の実施形態は、隣接する信頼できないエージェントから物理的に分離されている信頼できる要求側エージェントを提供する。更に、信頼できるエージェントからPKIアクセラレータ140へのアクセスは、他のエージェントから物理的に隔離されたパス、又は変更不可能な物理識別子と暗号化かつ認証されたファイアウォールルールによる、許可されたソースエージェントのアクセス制御チェックにより、他のエージェントから論理的に隔離されることのいずれかを介し得る。その後、PKIアクセラレータ140によって生成される鍵のペア又はセッション鍵は、次いで、信頼できる要求側エージェントのみがそれらの結果にアクセスを有するように、アクセス制御属性と共にオンチップ又は暗号化されたオフチップメモリに記憶され得る。本明細書の実施形態は、許可されたソースエージェントがコマンド記述子にセキュアなメタデータをPKIアクセラレータ140に提供することによる同じアクセス制御されたパスが、結果として得られる鍵のペア、又はPKIアクセラレータ140によって生成されたセッション鍵が続いてアクセスされるパスであるように、PKIアクセラレータ140と同じ場所にあるアクセラレータメモリを包含する。これら全ての対策により、生成された鍵のペア又はセッション鍵をサイドチャネル攻撃によって盗まれるのを防止するが、実施形態はまた、敵対者がアクセス制御に違反するか、又は秘密鍵/マスター鍵若しくはセッション鍵を盗もうとするために信頼できる計算エージェントに対して電圧グリッチ攻撃を試みるときに、システムをシャットダウンするためのアラーム及びアクションを設定することを含むこともできる。
【0030】
図1の詳細に目を向けると、SmartNIC100は、SoC105を含む。SoC105は、単一のICを使用して実装され得る。しかしながら、他の実施形態では、SmartNIC100は、直接(例えば、接合されたICのスタック)又は基板(例えば、シリコンインターポーザ)を介してのいずれかで通信可能に結合された複数のSoC(複数のIC)を含み得る。
【0031】
この実施形態では、SoC105は、プロセッサコア110、相互接続115、アクセス制御130、メインメモリ135、及びPKIアクセラレータ140を含む。一実施形態では、全てのこれらのコンポーネントは、SoC105内のプロセッサ内にある。例えば、これらのコンポーネントは、SoC105内のプロセッサシステム(又はプロセッササブシステム)であり得る。図示されていないが、SoCはまた、ネットワークオンチップ(network on a chip、NoC)、プログラマブルロジック、データ処理エンジンのアレイ、及びI/Oインターフェースなどの他のコンポーネントを含み得る。これらの追加のハードウェアコンポーネントの一部又は全部は、
図1に例解されるハードウェアコンポーネントに通信可能に結合され得る。
【0032】
プロセッサコア110は、埋め込みオペレーティングシステム(operating system、OS)を実行するための回路を含む。このOSは、プロセッサコア110内で実行されるソフトウェア及びファームウェアを含むことができる。1つのプロセッサコア110が示されているが、SoC105は、各々が埋め込みOSを実行する複数のコア110を有し得る。
【0033】
一実施形態では、プロセッサコア110は、TLS(例えば、TLS 1.3)ソフトウェアスタックを実行することができる埋め込みHardIPスカラープロセッサを表す。すなわち、コア110上で実行されるOSは、TLSソフトウェアスタックを実行することができる。更に、コア110は、信頼できる実行環境(Trusted Execution Environment、TEE)内でTLSスタックを実行している場合がある。一実施形態では、プロセッサコア110及びその相互接続115へのインターフェース(例えば、アプリケーション処理ユニット(Application Processing Unit、APU)相互接続)は、信頼できないコードを実行するSoC105内の残りの埋め込みプロセッサコア(図示せず)から物理的に隔離される。更に、一実施形態では、プロセッサコア110は、鍵のペア又はセッション鍵情報を送信/取得することを許可されていることを確認するために使用されるなりすまし不可能な物理識別子を有する。これにより、信頼できないコードを実行する他のプロセッサコアが、メモリ(例えば、メインメモリ135又はアクセラレータメモリ145)に記憶された鍵のペア又はセッション鍵情報にアクセスすることが防止される。
【0034】
一実施形態では、プロセッサコア110はまた、それらの鍵を盗もうとして電圧グリッチ攻撃を検出するために、ロックステップモードでそのTEEトラステッドOSを実行する。例えば、少なくとも2つのプロセッサコア110は、一方のコア110に対する電圧グリッチ攻撃が他方のコア110によって検出され得るように、TEEにおいてロックステップでそれらのOSを実行することができる。
【0035】
相互接続115は、SoC105内の例解されたコンポーネント間の通信を容易にするオンチップ相互接続を表す。相互接続115は、トラフィック経路が、TEEにおいて通信するコンポーネント構成と信頼できないコンポーネントとの間で物理的に隔離されるように構築される。図示のように、相互接続115は、TEE内のコンポーネントによって使用される信頼できる経路120と、TEE内にないコンポーネントによって使用される信頼できない経路125と、を含む。信頼できる経路120は、信頼できない経路125から物理的に分離されている。その結果、信頼できないコンポーネント(例えば、暗号に関連付けられていない信頼できないコードを実行する処理コア110)は、信頼できる経路120に物理的にアクセスすることができない。これは、TEE内にないコンポーネントが信頼できる経路120にアクセスすることを不可能にし、暗号化データ(例えば、鍵のペア及びセッション鍵)がこれらの経路120上で送信される。
【0036】
相互接続115はまた、TEE内のプロセッサコア110のなりすまし不可能な物理識別子をそれぞれの宛先(例えば、アクセス制御130、メインメモリ135、又はPKIアクセラレータ140)に伝播する。一実施形態では、相互接続115はまた、どのソースからどの宛先へのどのトラフィックを決定する相互接続115のルーティング属性によって、通過する経路120、125が許可され、物理的に隔離されることを確実にするように構築される。
【0037】
メインメモリ135(例えば、ランダムアクセスメモリ(random access memory、RAM))は、キャッシュコヒーレント様式でこれらの宛先へのトラフィックをサポートすることができるオンチップ相互接続115のメインメモリポートを表す。すなわち、メインメモリ135及びメモリ145は、プロセッサコア110内のキャッシュ及び相互接続115内のキャッシュとキャッシュコヒーレントであり得る。一実施形態では、メインメモリ135は、送信/取得鍵のペア又はセッション鍵情報が、要求側エージェント(例えば、プロセッサコア110内で実行されるTLSソフトウェアスタック)による取得のために相互接続115を介してPKIアクセラレータ140によって書き込まれるか、又は記憶される場所である。
【0038】
一実施形態では、メインメモリ135は、要求側エージェントがセキュアなメタデータを含むコマンド記述子を書き込む場所であり、これらの記述子は、その後、相互接続115内のポートを介してPKIアクセラレータ140によって読み取られる。これらの宛先は、キャッシュコヒーレントな様式でサポートされ得るため、セキュアなメタデータを含むコマンド記述子と鍵のペア若しくはセッション鍵の両方を、プロセッサコア110のキャッシュ又は相互接続115のキャッシュのいずれかにキャッシュすることができる。
【0039】
一実施形態では、メインメモリ135は、2つのタイプのキャッシュコヒーレントメインメモリ宛先、すなわち、鍵のペア又はセッション鍵がDRAMにおいてオフチップで見えないようなインライン暗号化を有するDDRと、オンチップメモリ(on-chip memory、OCM)と、を含むことができる。
【0040】
相互接続115は、厳密な読み取り/書き込み順序付けセマンティクスでPKIアクセラレータ140へのトラフィックをサポートすることができる相互接続115のMMIO又はデバイスメモリポートを表すメモリマッピングI/O(Memory Mapping I/O、MMIO)ポートを含む。一実施形態では、2つのタイプのデバイスメモリ宛先がある。IMOポートがデータをアクセラレータメモリ145(密結合メモリ(tightly coupled memory、TCM)とも称される)に送信する第1の宛先、及びMIMOポートがデータをECCアクセラレータ150に直接送信する第2の宛先である。プロセッシングコア110内のTLSスタック又はOSは、セキュアなメタデータを含むコマンド記述子を、アクセラレータメモリ145又はECCアクセラレータ150のいずれかに順番に書き込むことができる。その後、PKIアクセラレータ140は、TLSスタック又はOSによる取得のために、鍵のペア又はセッション鍵をアクセラレータメモリ145(又はメインメモリ135)に書き込むことができる。
【0041】
PKIアクセラレータ140は、コマンド記述子が鍵のペアの生成を要求するときに使用される乱数生成器(random number generator、RNG)155も含む。PKIアクセラレータ140は、TLS1.3標準(又は他の過去又は将来のTLS標準)の一部であるいくつかの非対称鍵暗号化アルゴリズムのうちの1つを使用して鍵のペアを生成することができる。
【0042】
アクセス制御130(例えば、メモリ保護ユニット)は、許可された要求側エージェント(例えば、TEEのOS及びコア110)及びなりすまし不可能な正しい物理識別子を表現する、ダイレクトメモリアクセス(direct memory access、DMA)とラベル付けされたパスを介したPKIアクセラレータ140、が、メインメモリ135、アクセラレータメモリ145、及びECCアクセラレータ150に対応する、指定されたメモリ又は構成レジスタの宛先にアクセスすることができることのみを確実にする回路を含む。
【0043】
図2は、例による、公開・秘密鍵ペアを生成するための方法200のフローチャートである。ブロック205で、要求側エージェント(例えば、処理コア、又はプロセッサコア内のTLSスタック又はOS)は、PKIアクセラレータから公開鍵を要求する。
図1に示されるように、要求は、PKIアクセラレータ140に到達する前に、相互接続115及びアクセス制御130を横切る。要求はTEE内の要求側エージェントから発信されたため、要求は信頼できる経路120を使用して相互接続115を横切る。更に、アクセス制御130は、要求内のなりすまし不可能な物理識別子をチェックして、要求側エージェントがPKIアクセラレータ140にデータを送信することを認められていることを確実にすることができる。要求が、PKIアクセラレータ140の使用を認められていない要求側エージェント(例えば、TEEにない信頼できないコードを実行するOS又はアプリケーションを備えたプロセッサコア)から来た場合、アクセス制御130は、要求がアクセラレータ140に到達するのをブロックすることができる。
【0044】
一実施形態では、公開鍵を生成するために、要求側エージェントは、PKIアクセラレータ内のRNGから乱数(例えば、公開鍵を導出するために使用される512ビットの乱数)を要求する。次に、RNGは相互接続を使用して、要求側エージェントに乱数を返す。
【0045】
ブロック210で、要求側エージェントは、公開・秘密鍵ペアを生成するための動作パラメータをメモリに書き込む。これらの動作パラメータは、鍵のペアを生成するためのPKI動作を開始する。動作パラメータは、動作タイプ(例えば、ECC点乗算(Point Multiplication、PM))、公開鍵(例えば、512ビット乱数)、秘密鍵を生成するために使用される暗号化アルゴリズムなどを含むことができる。本明細書の実施形態では、暗号化アルゴリズムとしてECCを使用することを説明するが、本明細書の実施形態はこれに限定されず、リベスト、シャミール、アデルマン(Rivest,Shamir and Adelman、RSA)アルゴリズムなどの他のタイプの非対称暗号化アルゴリズムを実行するために使用することができる。更に、高度な暗号化標準(Advanced Encryption Standard、AES)及びセキュアハッシュアルゴリズム(Secure Hash Algorithm、SHA)などの対称暗号化技術も、認証機能(例えば、ハッシュの作成)及び証明機能(例えば、ピアによって提供されたハッシュが本物であることの検証)の一部としてTLSアルゴリズムの役割を実行することができる。
【0046】
一実施形態では、要求側エージェントは、動作パラメータをPKIアクセラレータ内のメモリ(例えば、
図1のアクセラレータメモリ145)に書き込む。この場合、要求側エージェントは、アクセラレータメモリから動作パラメータを読み取るようにPKIアクセラレータ内のECCアクセラレータ(例えば、ECCアクセラレータ150)をプログラムする。アクセラレータメモリとECCアクセラレータは両方ともPKIアクセラレータ内にあるため、ECCアクセラレータは動作パラメータにアクセスするために相互接続を使用する必要がなく、アクセラレータメモリに直接アクセスすることができる。
【0047】
別の実施形態では、要求側エージェントは、動作パラメータをメインメモリ(例えば、
図1のメインメモリ135)に書き込む。この場合、要求側エージェントは、相互接続(例えば、
図1の相互接続115)のDMAポートを使用してメインメモリから動作パラメータを読み取るように、PKIアクセラレータ内のECCアクセラレータをプログラムする。いずれの場合も、これらのメモリは両方ともECCアクセラレータにアクセス可能である。書き込み動作にアクセスする場所を知るためにECCアクセラレータをプログラムすると、ECCアクセラレータでPKI動作が開始され、鍵のペアが生成される。
【0048】
ブロック215で、ECCアクセラレータは、セキュアなメモリ、例えば、メインメモリ又はアクセラレータメモリから動作パラメータを読み取る。
【0049】
ブロック220で、ECCアクセラレータは、動作パラメータを使用して公開・秘密鍵ペアを生成する。一実施形態では、ECCアクセラレータはECC384PMを実行するが、上で言及されるように、これは実行され得る好適な暗号化アルゴリズムの1つにすぎない。
【0050】
ブロック225で、ECCアクセラレータは公開・秘密鍵ペアをメモリに書き込む。繰り返すが、これは、アクセラレータメモリ又はメインメモリであり得る。
【0051】
ブロック230で、ECCアクセラレータは、要求側エージェント(例えば、プロセッサコア、又はプロセッサコア内で実行中のTLSスタック又はOS)に割り込みを送信する。割り込みは、要求側エージェントに、メモリ内で公開・秘密鍵ペアを取得する準備ができていることを通知する。有利なことに、要求側エージェントは、ECCアクセラレータが鍵のペアを生成するのを待っている間に他のタスクを実行することができる。つまり、要求側エージェントは、ECCアクセラレータが鍵のペアを生成して記憶するのを待っている間も停止しない。ブロック210で動作パラメータをメモリに書き込んだ後、要求側エージェントは他のタスクを実行することができる。これらのタスクは、他の暗号化タスクである場合もあれば、様々なネットワーク、ストレージ、コンピューティング機能などの暗号化とは無関係である場合もある。割り込みを受信した後、要求側エージェントは鍵のペアを取得し、公開鍵を外部デバイス(例えば、クライアント及びサーバ)に提供して、暗号化されたデータ通信を開始することができる。
【0052】
一実施形態では、公開・秘密鍵ペアは、非対称暗号技術を使用するピアツーピア通信に参加するために使用される。ピアノードAがピアノードBの公開鍵を取得すると、ピアノードAは、複数のセッション鍵(乱数生成器から導出)を生成し、ピアノードBの公開鍵で暗号化してこれらのセッション鍵をピアノードBに送信することができる。ピアノードBは、ピアノードAが有する公開鍵に相当する秘密鍵のペアを持っている唯一のものであり、ピアノードAによって送られた全てのセッション鍵を抽出することができる。
【0053】
図3は、一例による、適応型TLSアクセラレーションを実行するSmartNIC300のブロック図である。SmartNIC300にはSmartNIC100と同じコンポーネントがあり、同じ様式でラベルが付けられている。加えて、SmartNIC300は、PL305、PLメモリ315、及び人工知能(artificial intelligence、AI)エンジンアクセラレータ320を含む。PL305は、例えばルックアップテーブル及び他のプログラマブル回路から形成された構成可能な論理ブロック(configurable logic blocks、CLB)を備えたPLファブリックを表す。固定機能を実行する強化された回路から形成されるプロセッサコア110とは異なり、PL305内の回路は、異なる機能を実行するようにプログラムすることができる。この場合、PL305は、プロセッサコア110と同じ機能の多くを実行することができるPLコア310を含むようにプログラムされる。一実施形態では、PLコア310は、埋め込みOSを使用してTLSスタックを実行することができる。したがって、PLコア310は、プロセッサコア110と同じ暗号化タスクを実行するために使用することができる。これにより、SmartNIC300に更なる柔軟性と拡張性が提供される。例えば、プロセッサコア110が、全ての暗号化タスク、並びに実行するように要求される様々なネットワーク、ストレージ、及び計算機能を処理することができない場合、PLコア310を含むようにPL305をプログラムすることができる。次に、プロセッサコア110は、暗号化タスクの一部又は全てをPLコア310に渡すことができる。
【0054】
PLコア310とその埋め込みOSは、プロセッサコア110と同様にTEE内で動作することができる。更に、PLコア310には、鍵のペア又はセッション鍵情報を送信/取得することができるエンティティであることを示すために、相互接続115と通信するときに使用するなりすまし不可能な物理識別子を割り当てることができる。したがって、PLコア310及びそのOSは、ECCアクセラレータ150に鍵のペアを生成するように指示するために方法200を開始することができる要求側エージェントであり得る。すなわち、プロセッサコア110とPLコア310の両方は、TEEに追加されると、PKIアクセラレータ140を使用して鍵のペアを生成することができる。
【0055】
一実施形態では、PLコア310は、TLSソフトウェアスタックを実行することができるSoftIPスカラープロセッサを表す。PLコア310の相互接続115へのインターフェースは、セキュアなPLシェル内で物理的に隔離されている。
【0056】
PLメモリ315は、鍵のペアを生成するために使用される動作パラメータを記憶するために使用することができ、また、鍵のペアがECCアクセラレータ150によって生成された後に、鍵のペアを記憶することもできる。すなわち、PLメモリ315はTEEの一部とすることができ、アクセス制御130は、許可された要求側エージェントのみが動作パラメータ又は記憶された鍵のペアにアクセスすることができることを確実にすることができる。メインメモリ135及びアクセラレータメモリ145と同様に、PLメモリ315は、プロセッサコア110、PLコア310、及び相互接続115内のキャッシュとキャッシュコヒーレントであることができる。したがって、PLメモリ315は、要求側エージェントが、相互接続115を使用してECCアクセラレータ150によってアクセス可能な動作パラメータ及び鍵のペアを記憶するために使用することができる別のオプションである。
【0057】
データ処理エンジンアレイ320は、処理コア110及び鍵PLコア310について先で説明される全ての隔離機能及び鍵ファイアウォール機能を備えた例示的な人工知能(AI)推論アクセラレータである。一実施形態では、データ処理エンジンアレイ320は、PKIアクセラレータへのアクセスを許可されていない可能性があるが(例えば、信頼できないコード/タスクを実行する)、それは、依然として、許可/信頼されているプロセッサコア110及びPLコア310と同じSoC105内で動作することができる。データ処理エンジンアレイ320は、相互接続115内の信頼できない経路125を使用して、プロセッサシステム内の他のコンポーネントと通信することができる。
【0058】
図3は、データ処理エンジンアレイ320などの他のオフロードアクセラレータが、その代わりに作用するために埋め込みプロセッサ(例えば、プロセッサコア110)を呼び出す必要がないことを更に例解している。データ処理エンジンアレイ320がTEEの一部であり、鍵のペアを生成及び取得する権限を与えられている場合、
図3の構造により、アレイ320(及び図示されていない他のオフロードアクセラレータ)が、ハードIPネットワークオンチップ(NoC)又は相互接続115のいずれかを介してPKIアクセラレータ140と直接インターフェースして鍵のペアを生成することが可能になる。したがって、プロセッサコア110及びPLコア310と同様に、データ処理エンジンアレイ320は、方法200を実行するための許可された要求側エージェントであり得る。
【0059】
図4は、一例による、サーバ証明書を検証するための方法400のフローチャートである。ブロック405で、要求側エージェント(例えば、プロセッサコア又はPLコア)は、サーバ証明書のハッシュを決定する。
【0060】
ブロック410で、要求側エージェントは、ハッシュ、サーバ証明書、及び秘密鍵をメモリに書き込む。上で言及されるように、メモリは、メインメモリ135、アクセラレータメモリ145、又はPLメモリ315であり得る。これらの各メモリは、保護され得、かつPKIアクセラレータにアクセス可能であり得る。要求側エージェントは、ハッシュ、サーバ証明書、秘密鍵を取得するようにPKIアクセラレータをプログラムすることもできる。
【0061】
ブロック415で、PKIアクセラレータは、ハッシュ、サーバ証明書、及び秘密鍵をメモリに読み取る。
【0062】
ブロック420で、ハッシュ、サーバ証明書、及び秘密鍵を使用して、楕円曲線デジタル署名アルゴリズム(ECDSA)検証を実行する。その後、PKIアクセラレータは、要求側エージェントに検証動作の結果を通知することができる。
【0063】
したがって、方法400は、鍵のペアの生成に加えて、SmartNIC100及び300を使用して、タイムリーかつ電力効率の高い様式でサーバ証明書を検証することができることを例解している。
【0064】
図5は、一例による、ハンドシェイク鍵を生成するための方法500のフローチャートである。ブロック505で、要求側エージェント(例えば、プロセッサコア又はPLコア)は、サーバ公開鍵及びクライアント秘密鍵をメモリに書き込む。メモリは、メインメモリ135、アクセラレータメモリ145、又はPLメモリ315であり得る。これらの各メモリは、保護され得、かつPKIアクセラレータにアクセス可能であり得る。
【0065】
ブロック510、要求側エージェントは、サーバ/クライアントのHelloパケットのハッシュをメモリに書き込む。要求側エージェントは、メモリから公開鍵、秘密鍵、及びハッシュを取得するようにPKIアクセラレータをプログラムすることができる。
【0066】
ブロック515で、PKIアクセラレータは、メモリから公開及び秘密鍵を読み取る。
【0067】
ブロック520で、PKIアクセラレータは、公開鍵、秘密鍵、及びハッシュを使用してECDH乗算を実行し、ハンドシェイク鍵を生成する。したがって、方法500は、鍵のペアの生成に加えて、SmartNIC100及び300を使用して、サーバとクライアント間とのハンドシェイク鍵を生成し得ることを例解する。
【0068】
一般に、
図1~
図5で考察された実施形態は、集中鍵生成モデル及び上で考察されたSmartNICにおける分散鍵交換を可能にする2つの方法に比べて多くの利点を有する。いくつかの非限定的な利点は、以下を含む:
コンピューティングオーバーヘッド及び電力オーバーヘッドの削減:分散スキームを使用し、生成された鍵のペア又はセッション鍵をアクセス制御された様式で記憶することにより、本明細書の実施形態は、鍵の消費をセキュアに確実にする前に鍵をラップ/ラップ解除する必要がないことにより、より高い電力効率を達成する。
【0069】
適応型の高性能鍵のペア及びセッション鍵の生成及び交換:PKIアクセラレーションはHardIPで実行することができるか、又はPKIアクセラレーションはPLで増強される。
【0070】
埋め込みHardIPコア又はSoftIPアクセラレータ関数呼び出しリクエスタのいずれかを使用して、PKIアクセラレータへのTLS関数呼び出しを行う柔軟なエージェント:これは、HardIPコアが鍵のペア及びセッション鍵の生成及び交換ソフトウェアを実行することに起因してこれらのタスクが停止されないように、埋め込みHardIPコアの能力を超えてパフォーマンス要求が増加した場合、又は埋め込みHardIPコアが他の埋め込みタスクに展開された場合でも、SmartNIC内に柔軟性が提供される。
【0071】
セキュアなエンクレーブ、ファイアウォール、及びアクセス制御により、サイドチャネル攻撃を防止し、平文鍵のラップ/ラップ解除を必要とせずに、電力効率よく平文キーを記憶することが可能になる:信頼できるエージェントからTLS要求側エージェントへのアクセスは、他のエージェントから物理的に隔離される、又は変更不可能/なりすまし不可能な物理識別子と暗号化及び認証されたファイアウォールルールによる、許可されたソースエージェントのアクセス制御チェックを介して、他のエージェントから論理的に隔離されるパスを介して行うことができる。
【0072】
アクセラレータメモリは、許可されたソースエージェントがセキュアなメタデータを含むコマンド記述子をPKIアクセラレータに提供する際に使用した同じアクセス制御されたパスが、結果として生成された又はPKIアクセラレータによって署名/検証された鍵のペア又はセッション鍵がその後アクセスされるパスとなるように、PKIアクセラレータと同じ場所にすることができる。
【0073】
前述では、本開示において提示される実施形態が参照される。しかしながら、本開示の範囲は、具体的な記載された実施形態に限定されない。代わりに、説明される特徴及び要素の任意の組み合わせは、異なる実施形態に関連するか否かにかかわらず、企図される実施形態を実装及び実践するために企図される。更に、本明細書に開示される実施形態は、他の可能な解決策又は先行技術に勝る利点を達成し得るが、特定の利点が所与の実施形態によって達成されるか否かは、本開示の範囲を限定するものではない。したがって、前述の態様、特徴、実施形態、及び利点は、単に例解的なものであり、特許請求の範囲に明示的に列挙されている場合を除き、添付の特許請求の範囲の要素又は限定とはみなされない。
【0074】
当業者によって理解されるように、本明細書に開示される実施形態は、システム、方法、又はコンピュータプログラム製品として具現化され得る。したがって、態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又は本明細書では全て一般に「回路」、「モジュール」、若しくは「システム」と称され得るソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形態を採り得る。更に、態様は、コンピュータ可読プログラムコードが具現化された1つ以上のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形態を採り得る。
【0075】
1つ以上のコンピュータ可読媒体の任意の組み合わせを利用し得る。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、若しくは半導体のシステム、装置、若しくはデバイス、又は前述の任意の好適な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つ以上のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(random access memory、RAM)、読み取り専用メモリ(read-only memory、ROM)、消去可能プログラマブル読み取り専用メモリ(erasable programmable read-only memory、EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ(portable compact disc read-only memory、CD-ROM)、光記憶デバイス、磁気記憶デバイス、又は前述の任意の好適な組み合わせを含む。本明細書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムを含むか、又は記憶することができる任意の有形媒体である。
【0076】
コンピュータ可読信号媒体は、例えば、ベースバンドにおいて、又は搬送波の一部として、コンピュータ可読プログラムコードが具現化された伝搬データ信号を含み得る。そのような伝搬信号は、電磁気、光学、又はそれらの任意の好適な組み合わせを含むが、それらに限定されない、様々な形態のうちのいずれかを採り得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、若しくはデバイスによって、又はそれに関連して使用するためのプログラムを通信、伝搬、若しくは移送することができる任意のコンピュータ可読媒体であり得る。
【0077】
コンピュータ可読媒体上に具現化されたプログラムコードは、ワイヤレス、ワイヤライン、光ファイバケーブル、RFなど、又は前述の任意の好適な組み合わせを含むが、それらに限定されない、任意の適切な媒体を使用して伝送され得る。
【0078】
本開示の態様の動作を実行するためのコンピュータプログラムコードは、例えば、Java、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書き込まれ得る。プログラムコードは、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に、リモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で完全に実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(local area network、LAN)若しくは広域ネットワーク(wide area network、WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得るか、又は外部コンピュータ(例えば、インターネットサービスプロバイダを使用するインターネットを介して)に接続され得る。
【0079】
本開示の態様は、本開示に提示された実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート例解図及び/又はブロック図を参照して以下に記載されている。フローチャート例解図及び/又はブロック図の各ブロック、並びにフローチャート例解図及び/又はブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装することができることが理解されよう。これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図のブロックで指定された機能/行為を実装するための手段を作成するような機械をもたらすように、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能なデータ処理装置のプロセッサに提供され得る。
【0080】
これらのコンピュータプログラム命令はまた、コンピュータ可読記憶媒体に記憶された命令が、フローチャート及び/又はブロック図のブロックで指定された機能/行為の態様を実装する命令を含む製品を生産するように、コンピュータ、プログラマブルデータ処理装置、及び/又は他のデバイスに、特定の様式で機能するように指示することができる、コンピュータ可読記憶媒体に記憶され得る。
【0081】
コンピュータプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードされて、一連の動作ステップを、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行させて、コンピュータ実装プロセスを生成し得、そのため、コンピュータ、又は他のプログラマブル装置上で実行される命令は、フローチャート及び/又はブロック図のブロックに指定される機能/行為を実装するためのプロセスを提供する。
【0082】
図中のフローチャート及びブロック図は、本発明の様々な実施例によるシステム、方法、及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、及び動作を例解する。これに関して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント、又は部分を表し得る。いくつかの代替的な実装形態では、ブロックに記載されている機能は、図に記載された順序から外れて発生する場合がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行され得るか、又はブロックは、関与する機能に応じて、逆の順序で実行され得る。ブロック図及び/又はフローチャート例解図の各ブロック、並びにブロック図及び/又はフローチャート例解図におけるブロックの組み合わせは、指定された機能若しくは行為を行うか、又は専用ハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実行することができることにも留意されたい。
【0083】
上記は具体的な例を対象とするが、他の例及び更なる例が、その基本的な範囲から逸脱することなく考案され得、その範囲は、以下の「特許請求の範囲」によって決定される。
【国際調査報告】