該項目為圍繞報價提供的簡單包裝提供了庫,提供工具,例如go-configfs-tsm
庫或Linux中的/dev/tdx_guest
設備,以及用於證明證明引用的基本組件的庫。
該項目分為兩個互補角色。第一個角色是產生證明報價,第二個角色是檢查證明報價。 client
庫會產生報價, verify
庫驗證報價的簽名和證書。
client
該庫應在機密工作量中使用,以收集證明報價以及必要的證書。
您與IT的主要交互將是首先獲取報價提供商,或打開設備,然後使用提供的64個字節的用戶數據(通常為Nonce)獲得證明報價,然後關閉設備。為了方便起見,可以以可通過電線傳輸協議緩衝區格式收集及其相關證書的證明。
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
)以及通常由非CE值組成的報告數據。它返回證明報價的協議緩衝區表示。
您可以使用GetRawQuote
獲取字節陣列格式的TDX報價。
func (d Device) Close() error
關閉設備。
verify
該庫將檢查證明報價的簽名,證書鍊和基本良好的屬性。報價良好的要求來自英特爾TDX規範,證書良好的要求來自英特爾PCK證書規範。
預期在輸入證明報價中存在PCK證書鏈的存在。
func TdxQuote(quote *pb.QuoteV4, options *Options) error
此功能驗證證明是否具有有效的簽名和證書鏈。它提供了針對從英特爾PCS API獲得的附帶的可選驗證,還提供了針對證書撤銷列表(CRL)的可選檢查。默認情況下,禁用了針對抵押品和證書吊銷清單(CRL)的選項。使用抵押品的驗證基於Intel PCS API規範文檔。
示例預期調用:
verify.TdxQuote(myAttestation, verify.Options())
Options
類型此類型包含五個字段:
GetCollateral bool
:如果為true,則TdxQuote
將從Intel PCS API服務下載抵押品,並與獲得的抵押品進行檢查。如果CheckRevocations
為真,則必須為true
。CheckRevocations bool
:如果為true,則TdxQuote
將從Intel PCS API服務下載證書撤銷列表(CRL),並檢查是否撤銷。Getter HTTPSGetter
:如果nil
,則使用DefaultHTTPSGetter()
。 HTTPSGetter
接口由單個方法Get(url string) (map[string][]string, []byte, error)
該方法應返回HTTPS響應的標頭和主體。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產品。