Topik ini menunjukkan cara memverifikasi pengesahan untuk kunci Cloud HSM, yang selalu disimpan di modul keamanan hardware (HSM).
Ringkasan
Dalam kriptografi, pengesahan adalah pernyataan yang dapat dibaca mesin dan dapat dibuktikan secara terprogram yang dibuat oleh software tentang dirinya sendiri. Pengesahan adalah komponen penting dari komputasi tepercaya, dan mungkin diperlukan karena alasan kepatuhan.
Untuk melihat dan memverifikasi pengesahan, Anda meminta pernyataan pengesahan yang ditandatangani secara kriptografis dari HSM, beserta rantai sertifikat yang digunakan untuk menandatanganinya. Pernyataan pengesahan dibuat oleh hardware HSM, dan ditandatangani oleh sertifikat yang dimiliki oleh Google dan produsen HSM.
Setelah mendownload pernyataan pengesahan dan rantai sertifikat, Anda dapat memeriksa atributnya atau memverifikasi validitas pengesahan menggunakan rantai sertifikat.
Skrip pengesahan adalah skrip Python open source yang dikembangkan oleh Google. Anda dapat melihat kode sumber untuk skrip guna mempelajari lebih lanjut format pengesahan dan cara kerja verifikasi, atau sebagai model untuk solusi yang disesuaikan.
Contoh dalam topik ini dirancang untuk lingkungan Linux, termasuk Cloud Shell. Untuk mengikuti di klien macOS atau Windows, Anda mungkin perlu melakukan modifikasi.
Sebelum memulai
- Jika perlu, buat kunci Cloud HSM di key ring di region yang didukung oleh Cloud HSM.
Download dan instal skrip untuk mengurai nilai pengesahan. dari produsen HSM. Download setiap skrip ini:
verify_pubkey.py
parse_v1.py
parse_v2.py
Lihat dokumentasi untuk menggunakan skrip, yang disediakan di lokasi yang sama.
Download dan instal skrip untuk memverifikasi pengesahan dan prasyaratnya, serta lihat dokumentasi untuk skrip tersebut.
Memverifikasi pengesahan
Proses verifikasi pengesahan dapat dilakukan secara otomatis melalui Konsol Google Cloud, atau secara manual dengan mendownload paket pengesahan dan skrip verifikasi pengesahan, lalu menjalankannya secara lokal atau di Cloud Shell.
Memverifikasi pengesahan melalui konsol Google Cloud
Anda dapat memverifikasi pengesahan melalui konsol Google Cloud, yang akan membuka Cloud Shell dan mengisinya secara otomatis dengan cuplikan kode yang diperlukan untuk melakukan seluruh proses verifikasi pengesahan.
Buka halaman Key Management di konsol Google Cloud.
Pilih key ring yang berisi kunci yang ingin Anda sahkan, lalu pilih kunci.
Klik Lainnya more_vert untuk versi kunci yang ingin Anda sahkan, lalu pilih Verifikasi pengesahan.
Pada dialog Verifikasi pengesahan, klik Buka Cloud Shell. Tindakan ini akan membuka Cloud Shell dan mengisinya otomatis dengan cuplikan kode yang diperlukan untuk menyelesaikan seluruh proses verifikasi.
Periksa cuplikan kode yang telah diisi otomatis di Cloud Shell. Cuplikan ini mendownload skrip verifikasi pengesahan dan dependensinya, menjalankan perintah gcloud untuk mendownload pengesahan dan rantai sertifikat, lalu menjalankan skrip untuk memverifikasi pengesahan.
Jalankan cuplikan kode untuk memverifikasi pengesahan.
Memverifikasi pengesahan secara manual
Pengesahan, rantai sertifikat, dan skrip verifikasi pengesahan harus didownload sebelum memverifikasi pengesahan secara manual.
Download pengesahan dan rantai sertifikat.
Konsol
Buka halaman Key Management di konsol Google Cloud.
Pilih key ring yang berisi kunci yang ingin Anda sahkan, lalu pilih kunci.
Klik Lainnya more_vert untuk versi kunci yang ingin Anda sahkan, lalu pilih Verifikasi pengesahan.
Dalam dialog Verifikasi pengesahan, klik Download Paket Pengesahan. Tindakan ini akan mendownload file zip yang berisi rantai sertifikat dan pengesahan.
Ekstrak rantai pengesahan dan sertifikat dari paket pengesahan.
gcloud
Klik Activate Cloud Shell di bagian atas jendela konsol.
Sesi Cloud Shell akan terbuka di dalam frame baru di bagian bawah konsol dan menampilkan perintah command line. Perlu waktu beberapa detik hingga sesi shell diinisialisasi.
Di prompt command line Cloud Shell, gunakan perintah
gcloud kms keys versions describe
untuk mengambil pengesahan untuk kunci yang ingin Anda sahkan. Flag--attestation-file
menentukan jalur dan nama file tujuan untuk pengesahan yang diambil.gcloud kms keys versions describe key-version \ --key key-name \ --location location \ --keyring keyring-name \ --attestation-file [attestation-file] \
Di prompt command line Cloud Shell, gunakan perintah
gcloud kms keys versions get-certificate-chain
untuk mengambil rantai sertifikat untuk kunci yang ingin Anda buktikan. Flag--output-file
menentukan tujuan jalur dan nama file untuk sertifikat yang diambil.gcloud kms keys versions get-certificate-chain key-version \ --key key-name \ --location location \ --keyring keyring-name \ --output-file [certificates-file] \
Download skrip untuk memverifikasi pengesahan dan prasyaratnya, lalu baca dokumentasi untuk skrip guna memverifikasi pengesahan dalam file pengesahan menggunakan sertifikat dalam file sertifikat.
Mengurai nilai pengesahan
Dokumentasi produsen HSM menyertakan petunjuk lengkap untuk menggunakan skripnya guna mengurai nilai atestasi dan memverifikasi kunci publik untuk pasangan kunci asimetris. Pengesahan harus didekompresi dengan perintah berikut sebelum dapat diurai.
Dekompresi pengesahan yang dikompresi.
gzip -d < compressed_attestation.dat > attestation.dat
Link ini mengarah langsung ke petunjuk khusus dari produsen HSM:
Petunjuk untuk mengurai nilai pengesahan menyertakan referensi kolom umum dalam pengesahan, bukan khusus untuk kunci HSM di Cloud HSM.
Bagian berikut mengilustrasikan cara memverifikasi informasi tentang kunci Anda yang khusus untuk Cloud HSM.
Memverifikasi ID versi kunci
Anda dapat memverifikasi apakah hash SHA-256 dari ID resource versi kunci
ada dalam pengesahan. Nama resource kunci adalah bagian dari kolom 0x0102
atau kolom ID kunci dalam file pengesahan. ID kunci terdiri dari dua
ringkasan hash SHA-256 yang digabungkan dalam format hex. Yang kedua harus cocok dengan
nama resource kunci.
Mendapatkan ID resource versi kunci untuk versi kunci. Anda dapat menggunakan konsol Google Cloud untuk mendapatkan ID resource versi kunci atau menjalankan perintah berikut:
gcloud kms keys versions list \ --location location \ --keyring key-ring-name \ --key key-name
Di command line, tetapkan
resource_name
ke ID resource versi kunci yang baru saja Anda ambil.RESOURCE_NAME="projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name/cryptoKeyVersions/key-version"
Karena skrip penguraian membuang semua kolom pengesahan dalam format hex, ID kunci akan diformat ke dalam format hex dua kali. (Satu saat membuat keyID, yang lain saat mengurai pengesahan). Untuk memverifikasi bahwa nama resource cocok dengan ID kunci, konversikan nama resource ke ringkasan hex SHA-256, kembalikan satu konversi hex ID kunci dalam file pengesahan, lalu bandingkan keduanya.
RESOURCE_NAME_HEX="$(echo -n ${RESOURCE_NAME} | openssl dgst -sha256 -hex | awk '{print $2}')"
Skrip penguraian membuang semua kolom pengesahan dalam format hex, dan ID kunci dienkode hex secara internal untuk kedua kalinya. Tetapkan variabel lingkungan
KEYID_HEX
ke nilai ID kunci dengan satu lapisan encoding hex yang didekode:KEYID_HEX=$(grep -m 1 0x0102 /path/to/parsed/attestation.dat | awk '{print $2}' | xxd -p -r)
Bandingkan nilai
RESOURCE_NAME_HEX
danKEYID_HEX
sebagai string:test ${RESOURCE_NAME_HEX} == ${KEYID_HEX:(-64)} || echo "Values don't match"
Jika nilainya cocok, tidak ada output yang ditampilkan dan perintah akan keluar dengan kode
0
.
Memverifikasi properti kunci lainnya
Anda dapat melihat berbagai properti kunci, yang sesuai dengan kolom dalam standar PKCS #11. Gunakan contoh berikut sebagai panduan untuk memverifikasi properti kunci lainnya.
Apakah kunci dapat diekstrak disimpan di kolom
0x0102
dari output yang diuraikan. Untuk menentukan apakah kunci dapat diekstrak, periksa kolom0x0162
. Nilai\x01
adalahtrue
dan nilai\x00
adalahfalse
.Kunci Cloud HSM tidak dapat diekstrak.
grep '0x0162:' /path/to/parsed/attestation.dat
Cara kunci masuk ke HSM (baik dibuat langsung maupun diimpor) disimpan di kolom
0x0163
. Jika kunci dibuat secara lokal di HSM, kolom akan ditetapkan ke\x01
. Kolom kunci yang diimpor ditetapkan ke\x00
.Anda dapat menyimpulkan beberapa informasi dari cara kunci muncul di HSM. Jika kunci dibuat di Cloud HSM, artinya kunci tersebut tidak pernah disimpan tanpa dienkripsi di luar HSM. Jika kunci diimpor, mekanisme impor akan menjamin bahwa kunci dilindungi saat dalam pengiriman selama proses impor, dan dalam Cloud HSM setelahnya.
grep '0x0163:' /path/to/parsed/attestation.dat
Jenis kunci disimpan di kolom
0x0100
. Jenis kunci didokumentasikan dalam standar PCKS#11 dengan awalanCKK_*
. Misalnya, kunci AES memiliki jenis\x1f
.grep '0x0100:' /path/to/parsed/attestation.dat
Informasi tambahan
Anda memverifikasi pengesahan untuk menentukan apakah versi kunci dibuat di dalam HSM.