Proyek ini menawarkan perpustakaan untuk pembungkus sederhana di sekitar penawaran yang menyediakan alat seperti perpustakaan go-configfs-tsm
, atau perangkat /dev/tdx_guest
di Linux, serta perpustakaan untuk verifikasi pengesahan komponen dasar dari penawaran pengesahan.
Proyek ini dibagi menjadi dua peran pelengkap. Peran pertama adalah menghasilkan kutipan pengesahan, dan yang kedua adalah memeriksa kutipan pengesahan. Perpustakaan client
menghasilkan penawaran, perpustakaan verify
memverifikasi tanda tangan dan sertifikat kutipan.
client
Perpustakaan ini harus digunakan dalam beban kerja rahasia untuk mengumpulkan kutipan pengesahan bersama dengan sertifikat yang diperlukan.
Interaksi utama Anda dengan itu adalah untuk terlebih dahulu mendapatkan penyedia penawaran, atau membuka perangkat, kemudian mendapatkan penawaran pengesahan dengan data pengguna 64 byte yang disediakan 64 byte (biasanya nonce), dan kemudian tutup perangkat. Untuk kenyamanan, pengesahan dengan sertifikat yang terkait dapat dikumpulkan dalam format buffer protokol yang dapat ditransmisikan kawat.
func GetQuoteProvider() (*LinuxConfigFsQuoteProvider, error)
Fungsi ini membuat instance dari penyedia penawaran yang menggunakan pustaka GO-ConfigFS-TSM untuk mengambil kutipan pengesahan melalui configFs.
func OpenDevice() (*LinuxDevice, error)
Fungsi ini membuat deskriptor file ke perangkat /dev/tdx_guest
dan mengembalikan objek yang memiliki metode yang merangkum perintah ke perangkat. Setelah selesai, ingatlah untuk Close()
perangkat. Catatan:- Antarmuka perangkat sudah usang, dan penggunaan antarmuka penyedia kutipan direkomendasikan untuk mengambil kutipan pengesahan.
func GetQuote(quoteProvider any, reportData [64]byte) (any, error)
Fungsi ini mengambil objek yang mengimplementasikan antarmuka QuoteProvider
(misalnya LinuxConfigFsQuoteProvider
), atau antarmuka Device
(misalnya, LinuxDevice
) bersama dengan data laporan yang biasanya terdiri dari nilai nonce. Ini mengembalikan representasi buffer protokol dari kutipan pengesahan.
Anda dapat menggunakan GetRawQuote
untuk mendapatkan penawaran TDX dalam format array byte.
func (d Device) Close() error
Menutup perangkat.
verify
Perpustakaan ini akan memeriksa tanda tangan, rantai sertifikat, dan sifat-sifat pembentukan yang baik dari kutipan pengesahan. Persyaratan untuk mengutip performa yang baik berasal dari spesifikasi Intel TDX, dan persyaratan untuk sertifikat yang baik berasal dari spesifikasi sertifikat Intel PCK.
Kehadiran rantai sertifikat PCK dalam kutipan pengesahan input diharapkan.
func TdxQuote(quote *pb.QuoteV4, options *Options) error
Fungsi ini memverifikasi bahwa pengesahan memiliki tanda tangan dan rantai sertifikat yang valid. Ini memberikan verifikasi opsional terhadap agunan yang diperoleh dari Intel PCS API dan juga menawarkan pemeriksaan opsional terhadap daftar pencabutan sertifikat (CRL). Secara default, opsi untuk memverifikasi terhadap agunan dan daftar pencabutan sertifikat (CRL) dinonaktifkan. Verifikasi menggunakan agunan didasarkan pada dokumentasi spesifikasi API Intel PCS.
Contoh Doa yang Diharapkan:
verify.TdxQuote(myAttestation, verify.Options())
Options
Jenis ini berisi lima bidang:
GetCollateral bool
: Jika Benar, maka TdxQuote
akan mengunduh jaminan dari Intel PCS API Service dan periksa terhadap agunan yang diperoleh. Harus true
jika CheckRevocations
benar.CheckRevocations bool
: Jika benar, maka TdxQuote
akan mengunduh daftar pencabutan sertifikat (CRL) dari layanan API Intel PCS dan periksa untuk pencabutan.Getter HTTPSGetter
: jika nil
, menggunakan DefaultHTTPSGetter()
. Antarmuka HTTPSGetter
terdiri dari satu metode Get(url string) (map[string][]string, []byte, error)
yang harus mengembalikan header dan tubuh respons https.Now time.Time
time.Now()
nil
Ini adalah waktu untuk memverifikasi validitas sertifikat dan jaminan.TrustedRoots *x509.CertPool
: jika nil
, menggunakan sertifikat tertanam perpustakaan. Verifikasi rantai sertifikat dilakukan dengan menggunakan akar tepercaya. rtmr
Perpustakaan ini harus digunakan dalam beban kerja rahasia untuk melakukan operasi perpanjangan hash ke dalam register TDX RTMR.
func ExtendEventLog(rtmrIndex int, hashAlgo crypto.Hash, eventLog []byte) error
Fungsi ini menghitung pencernaan hash dari log acara yang disediakan dan memperluasnya dalam register RTMR yang sesuai. Namun, penting untuk dicatat bahwa TDX saat ini hanya mendukung algoritma hash SHA-384. Jika hashAlgo
bukan SHA-384, fungsi akan mengembalikan kesalahan.
func ExtendDigest(rtmrIndex int, digest []byte) error
Fungsi ini memperluas pencernaan SHA-384 ke dalam register RTMR yang sesuai. Jika panjang pencernaan yang diberikan tidak cocok dengan pencernaan SHA-384, fungsi akan mengembalikan kesalahan.
Go-TDX-Guest dirilis di bawah lisensi 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.
Ini bukan produk Google yang didukung secara resmi.