Dieses Projekt bietet Bibliotheken für einen einfachen Wrapper in Bezug auf das Angebot an, das Tools wie die go-configfs-tsm
-Bibliothek oder das Gerät /dev/tdx_guest
unter Linux sowie eine Bibliothek zur Bestätigung grundlegender Komponenten eines Bestätigungszitats anbietet.
Dieses Projekt ist in zwei komplementäre Rollen aufgeteilt. Die erste Rolle besteht darin, ein Zitat zur Bescheinigung zu erzeugen, und die zweite überprüft ein Zitat der Bescheinigung. Die client
-Bibliothek erzeugt ein Angebot, die Unterschriften und Zertifikate des verify
überprüft das Angebot.
client
Diese Bibliothek sollte innerhalb der vertraulichen Arbeitsbelastung verwendet werden, um ein Zitat für Bescheinigungen zusammen mit den erforderlichen Zertifikaten zu sammeln.
Ihre Hauptinteraktionen mit IT sind es, zuerst den Angebotsanbieter zu erhalten oder das Gerät zu öffnen, dann ein Zitat mit Ihren bereitgestellten 64 Bytes von Benutzerdaten (in der Regel nicht CE) zu erhalten und dann das Gerät zu schließen. Die Bescheinigung mit seinen zugehörigen Zertifikaten kann ausgünstig im Format mit Drahttransmittierpuffer erfasst werden.
func GetQuoteProvider() (*LinuxConfigFsQuoteProvider, error)
Diese Funktion erstellt eine Instanz eines Zitatanbieters, der die Go-Configfs-TSM-Bibliothek verwendet, um Zitate von Bescheinigungen über configFs zu erhalten.
func OpenDevice() (*LinuxDevice, error)
Diese Funktion erstellt einen Dateideskriptor für das Gerät /dev/tdx_guest
und gibt ein Objekt zurück, das Methoden enthält, die Befehle in das Gerät verkapseln. Denken Sie daran, das Gerät zu Close()
. Hinweis:- Die Geräteschnittstelle ist veraltet, und die Verwendung der Anbieter-Anbieterschnittstelle wird empfohlen, um das Zitat der Bescheinigung zu erhalten.
func GetQuote(quoteProvider any, reportData [64]byte) (any, error)
Diese Funktion übernimmt ein Objekt, das entweder die QuoteProvider
-Schnittstelle (z. B. LinuxConfigFsQuoteProvider
) oder die Device
(z. B. ein LinuxDevice
) zusammen mit Berichtsdaten, die typischerweise aus einem Nonce -Wert bestehen, implementieren. Es gibt die Protokollpufferdarstellung des Zitatsanweisungszitats zurück.
Sie können GetRawQuote
verwenden, um das TDX -Zitat im Byte -Array -Format zu erhalten.
func (d Device) Close() error
Schließt das Gerät.
verify
Diese Bibliothek überprüft die Signatur-, Zertifikatskette und die grundlegenden Eigenschaften eines Bestätigungszitats. Die Anforderungen an die Wichtigkeit von Angaben stammen aus der Intel-TDX-Spezifikation und die Anforderungen an die Waffheit von Zertifikaten stammen aus der Intel PCK-Zertifikatspezifikation.
Das Vorhandensein der PCK -Zertifikatkette innerhalb des Zitatsanschlags wird erwartet.
func TdxQuote(quote *pb.QuoteV4, options *Options) error
Diese Funktion überprüft, ob die Bescheinigung eine gültige Signatur- und Zertifikatskette hat. Es bietet eine optionale Überprüfung gegen die von der Intel PCS -API erhaltenen Sicherheiten und bietet außerdem einen optionalen Scheck an der Liste der Zertifikat -Widerrufsliste (CRL). Standardmäßig ist die Option zur Überprüfung der Sicherheiten und der Zertifikat -Widerrufsliste (CRL) deaktiviert. Die Überprüfung unter Verwendung von Sicherheiten basiert auf Dokumentation der Intel PCS -API -Spezifikationsdokumentation.
Beispiel erwartete Aufruf:
verify.TdxQuote(myAttestation, verify.Options())
Options
Dieser Typ enthält fünf Felder:
GetCollateral bool
: Wenn wahr, wird TdxQuote
die Sicherheiten vom Intel PCS -API -Service herunterladen und gegen die erhaltenen Sicherheiten überprüfen. Muss true
sein, wenn CheckRevocations
wahr ist.CheckRevocations bool
: Wenn true, wird TdxQuote
die Liste der Zertifikat -Widerrufsliste (CRL) vom Intel PCS -API -Service herunterladen und nach Revokationen überprüfen.Getter HTTPSGetter
: Wenn nil
, verwendet DefaultHTTPSGetter()
. Die HTTPSGetter
-Schnittstelle besteht aus einer einzelnen Methode Get(url string) (map[string][]string, []byte, error)
die die Header und den Körper der HTTPS -Antwort zurückgeben sollte.Now time.Time
: Wenn nil
, verwendet time.Now()
. Es ist die Zeit, um die Gültigkeit von Zertifikaten und Sicherheiten zu überprüfen.TrustedRoots *x509.CertPool
: Wenn nil
das eingebettete Zertifikat der Bibliothek verwendet. Die Überprüfung der Zertifikatkette wird mit vertrauenswürdigen Wurzeln durchgeführt. rtmr
Diese Bibliothek sollte innerhalb der vertraulichen Arbeitsbelastung verwendet werden, um einen Hash -Erweiterungsbetrieb in das TDX RTMR -Register auszuführen.
func ExtendEventLog(rtmrIndex int, hashAlgo crypto.Hash, eventLog []byte) error
Diese Funktion berechnet die Hash -Verdauung eines bereitgestellten Ereignisprotokolls und erweitert es im entsprechenden RTMR -Register. Es ist jedoch wichtig zu beachten, dass TDX derzeit nur den SHA-384-Hash-Algorithmus unterstützt. Wenn hashAlgo
nicht SHA-384 ist, gibt die Funktion einen Fehler zurück.
func ExtendDigest(rtmrIndex int, digest []byte) error
Diese Funktion erweitert einen SHA-384-Verdau in das entsprechende RTMR-Register. Wenn die Länge des gegebenen Digest nicht der eines SHA-384-Digests übereinstimmt, gibt die Funktion einen Fehler zurück.
GO-TDX-GUEST wird unter der Apache 2.0-Lizenz veröffentlicht.
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.
Dies ist kein offiziell unterstütztes Google -Produkt.