このプロジェクトは、 go-configfs-tsm
ライブラリ、Linuxの/dev/tdx_guest
デバイスなどのツールを提供する見積もりに関するシンプルなラッパーのライブラリと、証明の基本的なコンポーネントの証明の検証のためのライブラリを提供します。
このプロジェクトは、2つの補完的な役割に分割されています。最初の役割は証明の引用を作成することであり、2番目は証明の引用をチェックすることです。 client
ライブラリは見積もりを作成し、 verify
ライブラリは見積もりの署名と証明書を検証します。
client
このライブラリは、機密ワークロード内で使用されて、必要な証明書とともに証明の見積もりを収集する必要があります。
それとの主なやり取りは、最初に見積プロバイダーを取得するか、デバイスを開いてから、提供された64バイトのユーザーデータ(通常は非CE)で証明の見積もりを取得してから、デバイスを閉じることです。便利なため、関連する証明書を使用した証明は、ワイヤートランスマット可能なプロトコルバッファー形式で収集できます。
func GetQuoteProvider() (*LinuxConfigFsQuoteProvider, error)
この関数は、go-configfs-TSMライブラリを使用してconfigfsを介して証明の引用を取得する引用プロバイダーのインスタンスを作成します。
func OpenDevice() (*LinuxDevice, error)
この関数は、 /dev/tdx_guest
デバイスにファイル記述子を作成し、コマンドをデバイスにカプセル化するメソッドを持つオブジェクトを返します。完了したら、デバイスClose()
を忘れないでください。注: - デバイスインターフェイスは非推奨であり、見積プロバイダーインターフェイスの使用を推奨することをお勧めします。
func GetQuote(quoteProvider any, reportData [64]byte) (any, error)
この関数は、 QuoteProvider
インターフェイス( LinuxConfigFsQuoteProvider
など)またはDevice
インターフェイス(例、 LinuxDevice
)を実装するオブジェクトと、通常はNonCe値で構成されるレポートデータとともに使用します。証明の見積もりのプロトコルバッファー表現を返します。
GetRawQuote
使用して、BYTEアレイ形式でTDXの見積もりを取得できます。
func (d Device) Close() error
デバイスを閉じます。
verify
このライブラリは、証明の見積もりの署名、証明書チェーン、および基本的な井戸のプロパティを確認します。見積もりの要件は、Intel TDX仕様からのものであり、証明書の高度さの要件はIntel PCK証明書の仕様から得られます。
入力証明の見積もり内でPCK証明書チェーンの存在が予想されます。
func TdxQuote(quote *pb.QuoteV4, options *Options) error
この関数は、証明に有効な署名と証明書チェーンがあることを確認します。 Intel PCS APIから取得した担保に対するオプションの検証を提供し、証明書取消リスト(CRL)に対するオプションのチェックも提供します。デフォルトでは、担保に対して検証するオプションと証明書取消リスト(CRL)が無効になっています。担保を使用した検証は、Intel PCS API仕様ドキュメントに基づいています。
予想される呼び出しの例:
verify.TdxQuote(myAttestation, verify.Options())
Options
タイプこのタイプには5つのフィールドが含まれています。
GetCollateral bool
:Trueの場合、 TdxQuote
Intel PCS APIサービスから担保をダウンロードし、取得した担保に対して確認します。 CheckRevocations
がTRUEの場合はtrue
でなければなりません。CheckRevocations bool
:Trueの場合、 TdxQuote
Intel PCS APIサービスから証明書の取り消しリスト(CRL)をダウンロードし、取り消しをチェックします。Getter HTTPSGetter
: nil
の場合、 DefaultHTTPSGetter()
を使用します。 HTTPSGetter
インターフェイスは、HTTPS応答のヘッダーとボディを返すはずの単一のメソッドGet(url string) (map[string][]string, []byte, error)
で構成されます。Now time.Time
: nil
の場合、 time.Now()
を使用します。これは、証明書と担保の有効性を検証する時間です。TrustedRoots *x509.CertPool
: nil
の場合、ライブラリの埋め込み証明書を使用します。信頼できるルーツを使用して、証明書チェーン検証が実行されます。 rtmr
このライブラリは、TDX RTMRレジスタにハッシュ拡張動作を実行するために、機密ワークロード内で使用する必要があります。
func ExtendEventLog(rtmrIndex int, hashAlgo crypto.Hash, eventLog []byte) error
この関数は、提供されたイベントログのハッシュダイジェストを計算し、対応するRTMRレジスタに拡張します。ただし、TDXは現在SHA-384ハッシュアルゴリズムのみをサポートしていることに注意することが重要です。 hashAlgo
SHA-384でない場合、関数はエラーを返します。
func ExtendDigest(rtmrIndex int, digest []byte) error
この関数は、SHA-384ダイジェストを対応するRTMRレジスタに拡張します。与えられたダイジェストの長さがSHA-384ダイジェストの長さと一致しない場合、関数はエラーを返します。
Go-TDX-Guestは、Apache 2.0ライセンスの下でリリースされます。
Copyright 2023 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
これは、公式にサポートされているGoogle製品ではありません。