Этот проект предлагает библиотеки для простой обертки вокруг цитаты, предоставляющей такие инструменты, как библиотека go-configfs-tsm
, или устройство /dev/tdx_guest
в Linux, а также библиотеку для проверки фундаментальных компонентов цитаты.
Этот проект разделен на две дополнительные роли. Первая роль заключается в создании цитаты аттестации, а вторая - проверка цитаты. client
библиотека создает цитату, библиотека verify
проверяет подписи и сертификаты цитаты.
client
Эта библиотека должна использоваться в конфиденциальной рабочей нагрузке для сбора цитаты аттестации вместе с необходимыми сертификатами.
Ваше основное взаимодействие с ним будет в том, чтобы сначала получить поставщика цитат или открыть устройство, а затем получить цитату с предоставлением предоставленных 64 байт пользовательских данных (обычно не SCE), а затем закройте устройство. Для удобства, аттестация с соответствующими сертификатами может быть собрана в формате буфера протокола с переводом с проволокой.
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
) вместе с данными отчета, которые обычно состоит из нере -значения. Он возвращает протоколовое представление цитаты аттестации.
Вы можете использовать GetRawQuote
, чтобы получить цитату TDX в формате байтовых массивов.
func (d Device) Close() error
Закрывает устройство.
verify
Эта библиотека проверит подпись, цепочку сертификатов и основные свойства хорошо сформированной цитаты. Требования к цитате хорошо сформированы из спецификации Intel TDX, а требования к сертификату хорошо сформированы из спецификации сертификата Intel PCK.
Ожидается наличие цепочки сертификатов PCK в рамках цитаты аттестации входных данных.
func TdxQuote(quote *pb.QuoteV4, options *Options) error
Эта функция проверяет, что аттестация имеет действительную цепочку подписи и сертификатов. Он обеспечивает дополнительную проверку против обеспечения, полученного из API Intel PCS, а также предлагает дополнительную проверку по списку отзыва сертификата (CRL). По умолчанию вариант проверки против коллатералей и списка отзыва сертификата (CRL) отключен. Проверка с использованием коллатералей основана на документации Intel PCS Specization.
Пример ожидаемого вызова:
verify.TdxQuote(myAttestation, verify.Options())
Options
Этот тип содержит пять полей:
GetCollateral bool
: Если True, то TdxQuote
скачивает залог с службы API Intel PCS и проверит на полученном обеспечении. Должен быть true
если CheckRevocations
верно.CheckRevocations bool
: если True, то TdxQuote
загрузит список отзыва сертификата (CRL) из Service Intel PCS API и проверьте для Revocations.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.