This project offers libraries for a simple wrapper around quote providing tools such as the go-configfs-tsm
library, or the /dev/tdx_guest
device in Linux, as well as a library for attestation verification of fundamental components of an attestation quote.
Este proyecto se divide en dos roles complementarios. El primer papel es producir una cita de certificación, y el segundo es verificar una cita de certificación. La biblioteca client
produce cita, la biblioteca verify
verifica las firmas y certificados de la cita.
client
Esta biblioteca debe usarse dentro de la carga de trabajo confidencial para recopilar una cita de certificación junto con los certificados requeridos.
Your main interactions with it will be to first get the quote provider, or open the device, then get an attestation quote with your provided 64 bytes of user data (typically a nonce), and then close the device. Por conveniencia, la certificación con sus certificados asociados se puede recopilar en un formato de tampón de protocolo transmitible por cable.
func GetQuoteProvider() (*LinuxConfigFsQuoteProvider, error)
Esta función crea una instancia de un proveedor de cotizaciones que utiliza la biblioteca GO-configfs-TSM para obtener cotizaciones de certificación a través de configfs.
func OpenDevice() (*LinuxDevice, error)
This function creates a file descriptor to the /dev/tdx_guest
device and returns an object that has methods encapsulating commands to the device. Cuando termine, recuerde Close()
el dispositivo. Nota:- La interfaz del dispositivo está en desuso y se recomienda el uso de la interfaz del proveedor de citas para obtener una cita de certificación.
func GetQuote(quoteProvider any, reportData [64]byte) (any, error)
Esta función toma un objeto que implementa la interfaz QuoteProvider
(por ejemplo, LinuxConfigFsQuoteProvider
) o la interfaz Device
(por ejemplo, un LinuxDevice
) junto con los datos del informe que generalmente consisten en un valor de no CE. Devuelve la representación del tampón de protocolo de la cita de certificación.
Puede usar GetRawQuote
para obtener la cita TDX en formato de matriz de bytes.
func (d Device) Close() error
Cierra el dispositivo.
verify
Esta biblioteca verificará la firma, la cadena de certificados y las propiedades básicas de bien formación de una cita de certificación. Los requisitos para cotizar bien formado provienen de la especificación Intel TDX, y los requisitos para la bien formación del certificado provienen de la especificación de certificado de PCK Intel.
Se espera la presencia de la cadena de certificados PCK dentro de la cita de certificación de entrada.
func TdxQuote(quote *pb.QuoteV4, options *Options) error
Esta función verifica que la certificación tiene una cadena de firma y certificado válidas. Proporciona una verificación opcional contra la garantía obtenida de la API Intel PCS y también ofrece una verificación opcional contra la lista de revocación de certificados (CRL). De manera predeterminada, la opción de verificar contra las garantías y la lista de revocación de certificados (CRL) está deshabilitada. La verificación utilizando colaterales se basa en la documentación de especificación API de PCS Intel.
Ejemplo de invocación esperada:
verify.TdxQuote(myAttestation, verify.Options())
Options
Este tipo contiene cinco campos:
GetCollateral bool
: si es verdadero, entonces TdxQuote
descargará la garantía del servicio API de Intel PCS y verificará la garantía obtenida. Debe ser true
si CheckRevocations
son verdaderas.CheckRevocations bool
: if true, then TdxQuote
will download the certificate revocation list (CRL) from Intel PCS API service and check for revocations.Getter HTTPSGetter
: si nil
, usa DefaultHTTPSGetter()
. La interfaz HTTPSGetter
consiste en un solo método Get(url string) (map[string][]string, []byte, error)
que debería devolver los encabezados y el cuerpo de la respuesta HTTPS.Now time.Time
: si nil
, usa time.Now()
. Es el momento en que verificar la validez de certificados y colaterales.TrustedRoots *x509.CertPool
: si nil
, usa el certificado integrado de la biblioteca. La verificación de la cadena de certificados se realiza utilizando raíces de confianza. rtmr
Esta biblioteca debe usarse dentro de la carga de trabajo confidencial para realizar una operación de extensión hash en el registro TDX RTMR.
func ExtendEventLog(rtmrIndex int, hashAlgo crypto.Hash, eventLog []byte) error
Esta función calcula el resumen hash de un registro de eventos proporcionado y lo extiende en el registro RTMR correspondiente. Sin embargo, es importante tener en cuenta que TDX actualmente solo admite el algoritmo de hash SHA-384. Si hashAlgo
no es SHA-384, la función devolverá un error.
func ExtendDigest(rtmrIndex int, digest []byte) error
Esta función extiende un resumen SHA-384 en el registro RTMR correspondiente. Si la longitud del resumen dado no coincide con la de un digest de SHA-384, la función devolverá un error.
GO-TDX-GUST se lanza bajo la licencia 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.
Este no es un producto de Google compatible oficialmente.