Topik ini menjelaskan cara menggunakan CryptPilot untuk melindungi data saat tidak aktif (data at rest) pada instans komputasi rahasia. CryptPilot melakukan pengukuran tepercaya pada sistem file root guna mencegah perubahan perangkat lunak serta mengenkripsi data disk untuk memastikan kerahasiaan data saat tidak aktif.
Instans komputasi rahasia, seperti instans TDX dan instans rahasia heterogen, melindungi data runtime melalui kemampuan perangkat keras seperti enkripsi register dan enkripsi memori. Namun, kode program dan data yang diproses biasanya tetap disimpan di disk cloud dan memerlukan mekanisme tambahan untuk perlindungan data-at-rest. Topik ini menjelaskan cara menggunakan CryptPilot untuk menerapkan pengukuran dan perlindungan enkripsi disk pada instans komputasi rahasia dengan kunci enkripsi yang dikelola sendiri untuk disk cloud.
Terdapat dua pendekatan untuk perlindungan disk pada instans komputasi rahasia. Keduanya dapat digunakan secara terpisah atau dikombinasikan:
Pengukuran dan enkripsi disk sistem rahasia: Memperkenalkan pengukuran dm-verity selama fase pembuatan gambar disk sistem, dengan enkripsi LUKS2 opsional. Selama startup sistem, rootfs menjalani verifikasi integritas, dan kunci dekripsi diperoleh dari layanan manajemen kepercayaan melalui remote attestation. Pendekatan ini cocok untuk skenario yang memerlukan pengukuran tepercaya terhadap seluruh lingkungan mesin dan juga dapat mengenkripsi disk sistem.
Enkripsi disk data rahasia: Melakukan enkripsi LUKS2 pada partisi disk data individual pada instans komputasi rahasia yang sedang berjalan. Pendekatan ini cocok untuk skenario di mana Anda memiliki instans bisnis yang sudah ada dan hanya ingin mengenkripsi disk data tertentu tanpa membuat ulang gambar.
Pilih bagian berdasarkan skenario Anda: untuk membuat gambar sistem boot tepercaya yang dapat diukur untuk instans rahasia, lihat Pengukuran dan enkripsi disk sistem rahasia; untuk hanya mengenkripsi disk data tertentu pada instans yang sedang berjalan, lihat Enkripsi disk data rahasia.
Pengukuran dan enkripsi disk sistem rahasia
Komposisi dan perlindungan disk sistem rahasia
Disk sistem rahasia yang diproses oleh CryptPilot diorganisasi berdasarkan volume dan berisi dua volume utama:
Volume rootfs: Sistem file root read-only. Selama startup, mekanisme dm-verity kernel Linux membangun pohon hash lengkap untuk volume rootfs. Nilai hash root disimpan dalam memori aman dan dicatat dalam CC Eventlog instans rahasia untuk memverifikasi integritas rantai boot melalui remote attestation. Kernel memverifikasi nilai hash setiap blok data terhadap nilai hash root yang telah disimpan secara bertahap. Setiap upaya perubahan tidak sah akan terdeteksi secara real-time dan mencegah sistem melakukan startup. Untuk menjaga kompatibilitas bisnis, lapisan overlay yang dapat ditulis ditempatkan di atas rootfs read-only, dengan penyimpanan backend overlay dibawa oleh volume delta. Tulisan sementara tidak memengaruhi hasil pengukuran.
Mengenkripsi volume ini bersifat opsional. Jika diaktifkan, enkripsi menggunakan LUKS2 (AES-256). Perangkat secara acak menghasilkan Master Key untuk enkripsi dan dekripsi data. Passphrase yang disediakan pengguna diproses melalui algoritma derivasi kunci untuk menghasilkan KEK, yang mengenkripsi Master Key dan menyimpannya di header volume. Selama startup, KEK diperoleh melalui remote attestation untuk mendekripsi Master Key. Semua operasi enkripsi dan dekripsi dilakukan dalam memori aman instans rahasia.
Volume delta: Volume terenkripsi yang terdiri dari ruang tersisa pada disk sistem. Volume ini selalu dienkripsi dengan LUKS2 dan membawa data backend untuk lapisan overlay rootfs yang dapat ditulis. Semua operasi tulis pada rootfs akhirnya dienkripsi dan disimpan dalam volume delta.
Alur penggunaan
Langkah 1: Siapkan lingkungan tepercaya
Lingkungan tepercaya harus memenuhi kondisi berikut:
Sistem operasi Alibaba Cloud Linux 3: Tool CryptPilot untuk membuat disk sistem rahasia bergantung pada Alibaba Cloud Linux 3.
Alamat IP publik diaktifkan: Instans komputasi rahasia harus dapat mengakses server Trustee untuk memperoleh kunci dekripsi selama startup.
Ruang penyimpanan yang cukup: Ruang yang dibutuhkan tergantung pada ukuran file gambar disk sistem yang ingin Anda buat. Kami menyarankan agar lingkungan Anda memiliki ruang kosong lebih dari 40 GiB.
Langkah 2: Buat gambar disk sistem rahasia
Siapkan gambar disk sumber.
Sebelum membuat disk sistem rahasia, Anda harus menyiapkan file gambar disk dengan aplikasi bisnis Anda yang telah diterapkan. Anda dapat memperoleh gambar ini dengan salah satu dari dua cara berikut:
Ekspor gambar sistem dari instans ECS yang ada
Terapkan dan konfigurasikan lingkungan bisnis Anda pada instans Alibaba Cloud ECS yang sudah ada, lalu ekspor gambar sistem instans tersebut sebagai file qcow2 melalui Konsol atau API.
Kustomisasi gambar dasar resmi
Unduh gambar dasar Alibaba Cloud Linux 3 terbaru dari situs web resmi Alibaba Cloud dan gunakan tool virt-customize untuk menyesuaikan konten gambar (seperti menginstal paket perangkat lunak, mengonfigurasi layanan, dan menambahkan aplikasi bisnis Anda) sesuai kebutuhan bisnis Anda.
Anda dapat mengunjungi halaman Alibaba Cloud Linux 3 On-premise Image untuk memperoleh tautan unduh distribusi terbaru. Misalnya, jalankan perintah berikut untuk mengunduh file gambar QCOW2 versi tertentu:
curl -O -L -C - https://alinux3.oss-cn-hangzhou.aliyuncs.com/aliyun_3_x64_20G_nocloud_alibase_20250117.qcow2CatatanHanya file gambar disk sistem operasi Alibaba Cloud Linux 3 dalam format
.qcow2dan.vhdyang didukung.Setelah gambar diproses oleh cryptpilot-convert, kontennya tidak dapat lagi dimodifikasi. Pastikan Anda menyelesaikan semua konfigurasi dan penyesuaian yang diperlukan sebelum pemrosesan.
(Opsional) Lakukan penguatan keamanan pada gambar.
Untuk instans yang berjalan di lingkungan komputasi rahasia, penguatan keamanan dapat secara efektif mengurangi permukaan serangan dan mencegah layanan atau komponen yang tidak perlu memperkenalkan risiko keamanan, sehingga meningkatkan keamanan keseluruhan.
Anda dapat merujuk ke bagian Penguatan keamanan gambar di bawah untuk menyelesaikan operasi terkait selama fase penyesuaian gambar sebelum melakukan enkripsi.
Instal CryptPilot dan siapkan file konfigurasi.
Instal CryptPilot.
Instal paket host di lingkungan build tepercaya (yang menyediakan tool seperti cryptpilot-convert, cryptpilot-enhance, dan cryptpilot-fde-host untuk membuat gambar disk sistem rahasia):
sudo yum install -y cryptpilot-fde-hostPeriksa versi CryptPilot.
cryptpilot-fde-host --version
Buat direktori untuk file konfigurasi CryptPilot.
mkdir -p ./config_dirTulis konfigurasi disk sistem.
CryptPilot mendukung konfigurasi pengaturan enkripsi untuk volume rootfs dan volume delta disk sistem rahasia secara terpisah. Pilih konfigurasi berdasarkan dua dimensi: apakah volume rootfs dienkripsi dan apakah data delta perlu dipertahankan (persistent). Empat kombinasi berikut tersedia untuk konten
fde.toml. Tulis konten opsi yang dipilih ke./config_dir/fde.toml:Volume rootfs tidak dienkripsi + volume delta non-persistent
[rootfs] delta_location = "disk" [delta] integrity = true [delta.encrypt.otp]Volume rootfs tidak dienkripsi + volume delta persistent
[rootfs] delta_location = "disk-persist" [delta] integrity = true [delta.encrypt.kbs] kbs_url = "http://<trustee-ip>:8081/api" key_uri = "kbs:///default/local-resources/delta"Volume rootfs dienkripsi + volume delta non-persistent
[rootfs] delta_location = "disk-persist" [rootfs.encrypt.kbs] kbs_url = "http://<trustee-ip>:8081/api" key_uri = "kbs:///default/local-resources/rootfs" [delta] integrity = true [delta.encrypt.otp]Volume rootfs dienkripsi + volume delta persistent
[rootfs] delta_location = "disk-persist" [rootfs.encrypt.kbs] kbs_url = "http://<trustee-ip>:8081/api" key_uri = "kbs:///default/local-resources/rootfs" [delta] integrity = true [delta.encrypt.kbs] kbs_url = "http://<trustee-ip>:8081/api" key_uri = "kbs:///default/local-resources/delta"CatatanSaat menggunakan OTP, volume delta secara otomatis menghasilkan kunci acak baru setiap kali startup. Data hilang setelah shutdown, dan tidak diperlukan deployment backend kunci. Untuk informasi lebih lanjut tentang OTP, lihat One-time password (OTP).
Saat menggunakan backend kunci persistent seperti Trustee, ganti
<trustee-ip>dalam konfigurasi dengan Alamat IP publik instans tempat Anda menerapkan layanan Trustee (jika Anda telah mengonfigurasi akses HTTPS untuk Trustee, gantihttp://denganhttps://dalamkbs_url). Untuk konfigurasi detail setiap metode pengambilan kunci, lihat Layanan manajemen kepercayaan (Trustee).
Buat file gambar disk sistem rahasia.
Buat file gambar disk sistem rahasia.
Jika konfigurasi Anda tidak mengenkripsi volume rootfs:
sudo cryptpilot-convert --uki --in ./aliyun_3_x64_20G_nocloud_alibase_20250117.qcow2 --out ./confidential-disk.qcow2 --config-dir ./config_dir/ --rootfs-no-encryptionJika konfigurasi Anda mengenkripsi volume rootfs:
sudo cryptpilot-convert --uki --in ./aliyun_3_x64_20G_nocloud_alibase_20250117.qcow2 --out ./confidential-disk.qcow2 --config-dir ./config_dir/ --rootfs-passphrase "<rootfs_volume_encryption_key>"Catatan<rootfs_volume_encryption_key>harus sama dengan kunci enkripsi yang diunggah ke backend kunci untuk volume rootfs.Karena volume delta dienkripsi selama startup instans, Anda tidak perlu menentukan kata sandi volume delta saat membuat file gambar disk sistem rahasia.
Jika Anda perlu menginstal paket RPM tambahan pada disk sistem, Anda dapat menggunakan opsi
--packageuntuk menentukan nama atau jalur paket RPM.
Periksa gambar yang dihasilkan.
Gambar disk sistem rahasia dibuat di
./confidential-disk.qcowsecara default.file ./confidential-disk.qcow2
Langkah 3: Impor gambar kustom dan buat instans rahasia
Unggah file gambar lokal ke OSS dan peroleh URL file tersebut. Untuk informasi lebih lanjut, lihat Unggah file.
Saat mengimpor gambar kustom, Boot Mode harus diatur ke UEFI.

Setelah gambar berhasil diimpor, buka halaman detail gambar dan atur driver NVMe ke Enabled.

Langkah 4: Gunakan gambar kustom yang diimpor untuk membuat instans komputasi rahasia
Gunakan gambar kustom yang diimpor untuk membuat instans komputasi rahasia TDX atau instans komputasi rahasia heterogen.
Saat membuat instans, perhatikan parameter berikut:
Image: Pilih gambar kustom yang diimpor dan pilih Confidential VM.

Public IP Address: Pilih Assign Public IPv4 Address agar instans Anda dapat mengakses layanan Trustee dan memperoleh kunci melalui remote attestation.
Logon Credentials: Pilih Key Pair.
Disk sistem rahasia yang dibuat dengan CryptPilot saat ini tidak mendukung logon berbasis password.
(Opsional) Jika Anda telah menerapkan layanan Trustee, tambahkan aturan masuk di security group instans Trustee untuk mengizinkan akses ke port 8081 dari Alamat IP publik instans rahasia.

Hubungkan ke instans komputasi rahasia menggunakan terminal Workbench.
Jika Anda dapat terhubung ke instans, berarti instans tersebut dapat mengakses layanan Trustee dan memperoleh kunci melalui remote attestation.
Langkah 5: (Opsional) Daftarkan nilai referensi di layanan Trustee
Jika Anda telah mengonfigurasi Trustee sebagai backend penyimpanan kunci, instans mengirim permintaan ke layanan Trustee selama startup untuk memperoleh kunci dekripsi disk. Layanan Trustee memverifikasi lingkungan instans melalui remote attestation untuk memeriksa apakah instans tersebut berjalan di instans TEE. Selain itu, jika Anda juga ingin memverifikasi gambar yang sedang berjalan, Anda harus terlebih dahulu mendaftarkan nilai referensi gambar tersebut di Trustee.
Gunakan CryptPilot untuk menghitung nilai referensi gambar disk sistem rahasia dan simpan ke
reference-value.json.sudo cryptpilot-fde-host show-reference-value --disk ./confidential-disk.qcow2 | tee ./reference-value.jsonBerikut contoh output, di mana
466713bf9b2dacca6cd15ff4acd050712e29b4164628e01bd2495411766f36d7ba4560f62537926cf16e08480f1c1804adalah nilai referensi gambar:
Impor nilai referensi ke layanan Trustee.
provenance=$(cat ./reference-value.json | base64 --wrap=0) cat << EOF > ./register-request.json { "version" : "0.1.0", "type": "sample", "payload": "$provenance" } EOF rvps-tool register --path ./register-request.json
Penguatan keamanan gambar
Dalam lingkungan komputasi rahasia, konfigurasi keamanan gambar secara langsung memengaruhi tingkat kepercayaan keseluruhan. Kami merekomendasikan untuk memperkuat keamanan gambar sebelum enkripsi:
Minimalkan permukaan serangan: Komponen layanan cloud yang telah dipasang sebelumnya (seperti Cloud Assistant dan agen pemantauan) memperluas permukaan serangan dalam skenario komputasi rahasia. Menghapusnya mengurangi risiko eksploitasi.
Jamin isolasi data: Layanan manajemen yang tidak ditutup dapat menjadi saluran kebocoran data. Penguatan keamanan memastikan hanya layanan yang diperlukan yang berjalan.
Kontrol akses: Menonaktifkan SSH dan akses jarak jauh lainnya mencegah logon tidak sah dan memastikan sifat tertutup dari lingkungan komputasi.
Deskripsi tool penguatan keamanan
Untuk menyederhanakan proses penguatan keamanan, kami menyediakan tool cryptpilot-enhance, yang mengintegrasikan praktik terbaik untuk penguatan keamanan gambar.
Jika Anda menggunakan gambar yang diekspor dari snapshot instans ECS alih-alih gambar dasar Alibaba Cloud Linux 3 yang diperoleh dari sumber resmi, Cloud Assistant atau Security Center (Aegis) mungkin telah dipasang sebelumnya. Tool cryptpilot-enhance secara otomatis mendeteksi dan menguninstal komponen-komponen tersebut.
Gambar yang dihasilkan oleh cryptpilot-convert memiliki konten yang telah difinalisasi dan tidak dapat dimodifikasi. Oleh karena itu, Anda harus menjalankan cryptpilot-enhance sebelum cryptpilot-convert.
cryptpilot-enhance mendukung dua mode penguatan keamanan:
full: Penguatan keamanan penuh. Menghapus layanan SSH dan menerapkan kontrol akses paling ketat.partial: Penguatan keamanan parsial. Mempertahankan layanan SSH tetapi menerapkan autentikasi berbasis kunci. Cocok untuk lingkungan produksi yang memerlukan pemeliharaan jarak jauh.
Penguatan keamanan mencakup item berikut:
Mode penguatan keamanan | Item |
Item penguatan keamanan umum (dieksekusi di kedua mode) |
|
|
|
|
|
Contoh penggunaan tool penguatan keamanan
Lakukan penguatan keamanan penuh pada gambar:
cryptpilot-enhance \ --mode full \ --image ./os-disk.qcow2Lakukan penguatan keamanan parsial pada gambar dan sisipkan kunci publik SSH:
cryptpilot-enhance \ --mode partial \ --image ./os-disk.qcow2 \ --ssh-key ~/.ssh/id_rsa.pub
Enkripsi disk data rahasia
Dalam skenario komputasi rahasia, selain melindungi seluruh disk sistem, Anda juga dapat mengenkripsi hanya partisi disk data tertentu pada instans rahasia yang sedang berjalan. Bagian ini menjelaskan cara menerapkan enkripsi LUKS2 untuk disk data dalam instans komputasi rahasia dengan kunci yang dikelola sendiri.
Prinsip enkripsi
Disk cloud rahasia didasarkan pada teknologi LUKS2 platform Linux, yang menyediakan perlindungan enkripsi data pada tingkat penyimpanan blok. Prosesnya mencakup inisialisasi dan pembukaan:
Inisialisasi: Pilih perangkat blok (seperti
/dev/nvme1n1p1). Master Key unik perangkat dihasilkan oleh algoritma bilangan acak aman untuk enkripsi AES-256. Master Key itu sendiri dienkripsi oleh KEK yang diturunkan dari Passphrase yang disediakan pengguna melalui algoritma derivasi kunci dan disimpan di header volume.PentingProses inisialisasi menghapus data yang ada pada perangkat blok. Lanjutkan dengan hati-hati untuk menghindari kehilangan data secara tidak sengaja.
Pembukaan: KEK diturunkan kembali dari Passphrase yang disediakan pengguna untuk mendekripsi Master Key dan membuka volume. Sistem membuat perangkat blok virtual di jalur
/dev/mapper/<volume_name>. Semua data yang ditulis ke perangkat ini secara otomatis dienkripsi sebelum ditulis ke disk, dan data secara otomatis didekripsi saat dibaca. Enkripsi dan dekripsi dilakukan di kernel Linux, secara efektif mencegah teks biasa bocor di luar instans.
Instans terenkripsi menggunakan akselerasi perangkat keras AES bawaan CPU untuk mengurangi overhead enkripsi dan dekripsi. Disk data rahasia mendukung perlindungan integritas melalui mode enkripsi AEAD, yang mencegah penyerang memalsukan data ciphertext. Ini cocok untuk skenario seperti penyimpanan bobot model bahasa besar dan penyimpanan set data pelatihan. Passphrase yang digunakan untuk enkripsi dikelola di luar instans dan mendukung beberapa metode pengambilan kunci. Untuk detailnya, lihat Lampiran: Metode pengambilan kunci.
Hanya disk data dari instans TDX atau instans rahasia heterogen yang didukung untuk enkripsi.
Saat disk cloud dikembalikan (rollback), karena integritas dan kerahasiaan data tidak dikompromikan, solusi disk cloud rahasia tidak dapat membantu Anda mengidentifikasi potensi serangan semacam itu. Kami merekomendasikan agar Anda melakukan pemeriksaan versi data di tingkat aplikasi untuk mengatasi masalah ini berdasarkan kebutuhan keamanan Anda.
Alur penggunaan
Langkah 1: Siapkan lingkungan
Buat instans komputasi rahasia.
Hanya instans rahasia TDX atau instans rahasia heterogen yang didukung.
Hubungkan ke instans komputasi rahasia secara jarak jauh.
Untuk informasi lebih lanjut, lihat Log on ke instans Linux menggunakan Workbench.
Instal CryptPilot.
sudo yum install -y cryptpilot-crypt
Langkah 2: Buat dan pasang disk cloud
Mengenkripsi disk cloud akan menghapus data yang ada pada perangkat blok. Kami menyarankan agar Anda membuat disk data baru untuk operasi ini.
Saat menginisialisasi disk data, buat hanya partisi dan sistem file tanpa memasang sistem file. Sistem file harus dipasang setelah enkripsi.
Lihat informasi disk dan partisi yang telah disambungkan.
lsblkOutput menunjukkan bahwa instans ECS saat ini memiliki dua disk cloud yang disambungkan:
/dev/nvme0n1: Disk sistem yang sudah ada./dev/nvme1n1: Disk data yang baru ditambahkan, dengan 2 partisi kosong baru (/dev/nvme1n1p1dan/dev/nvme1n1p2).

Langkah 3: Buat volume dengan sistem file ext4
Pertama, Anda perlu menulis file konfigurasi
/etc/cryptpilot/volumes/data0.toml. File ini mendefinisikan volume data bernamadata0.CatatanFile konfigurasi menggunakan format TOML. Nama file dapat berupa file teks apa pun yang diakhiri dengan
.tomldan tidak wajib sesuai dengan nama volume.Berikut beberapa contoh konfigurasi khas untuk skenario berbeda. Modifikasi bidang konfigurasi sesuai kebutuhan.
Volume sementara
# Konfigurasi volume dev = "/dev/nvme1n1p1" # Tentukan perangkat blok, yaitu partisi kosong disk cloud. Dalam contoh ini, /dev/nvme1n1p1 menggunakan partisi pertama disk data. volume = "data0" # Tentukan nama volume. Dalam contoh ini, diberi nama data0. auto_open = false # true berarti volume terbuka otomatis saat startup sistem; false berarti pembukaan manual diperlukan. makefs = "ext4" # Tentukan jenis sistem file yang akan dibuat. Dalam contoh ini, ext4. integrity = true # true mengaktifkan dukungan integritas data; false menonaktifkannya. # Konfigurasi kunci [encrypt.otp] # Tentukan jenis penyimpanan kunci. Di sini, one-time password (OTP) dipilih.Volume persistent (menggunakan Trustee)
# Konfigurasi volume dev = "/dev/nvme1n1p2" # Tentukan perangkat blok, yaitu partisi kosong disk cloud. Dalam contoh ini, /dev/nvme1n1p2 menggunakan partisi kedua disk data. volume = "data0" # Tentukan nama volume. Dalam contoh ini, diberi nama data0. auto_open = false # true berarti volume terbuka otomatis saat startup sistem; false berarti pembukaan manual diperlukan. makefs = "ext4" # Tentukan jenis sistem file yang akan dibuat. Dalam contoh ini, ext4. integrity = true # true mengaktifkan dukungan integritas data; false menonaktifkannya. # Konfigurasi kunci (diambil dari Trustee KBS) [encrypt.kbs] kbs_url = "http://<trustee-ip>:8081/api" # Ganti <trustee-ip> dengan Alamat IP publik instans Trustee key_uri = "kbs:///default/local-resources/data0" # URI resource untuk kunci volume data0 yang disimpan di KBSVolume persistent (menggunakan Alibaba Cloud KMS)
# Konfigurasi volume dev = "/dev/nvme1n1p2" # Tentukan perangkat blok, yaitu partisi kosong disk cloud. Dalam contoh ini, /dev/nvme1n1p2 menggunakan partisi pertama disk data. volume = "data0" # Tentukan nama volume. Dalam contoh ini, diberi nama data0. auto_open = false # true berarti volume terbuka otomatis saat startup sistem; false berarti pembukaan manual diperlukan. makefs = "ext4" # Tentukan jenis sistem file yang akan dibuat. Dalam contoh ini, ext4. integrity = true # true mengaktifkan dukungan integritas data; false menonaktifkannya. # Konfigurasi kunci [encrypt.kms] # Tentukan jenis penyimpanan kunci. Di sini, Key Management Service (KMS) dipilih. secret_name = "confidential_cloud_disk_passphrase" # Nama rahasia yang disimpan di instans KMS, yaitu confidential_cloud_disk_passphrase dalam contoh di atas. # Konten file kredensial identitas aplikasi (clientKey_****.json) client_key = ''' { "KeyId": "KAAP.b183152a-c3bf-43ae-9399-a101607b****", "PrivateKeyData": "MIIJ0wIBAzCCCZ8GCSqGSIb3DQE****" } ''' client_key_password = "258372e962f5204ce648bc66243f****" # Konten file kata sandi kredensial (clientKey_****_Password.txt) kms_instance_id = "kst-bjj67d004a85ykq80****" # ID instans KMS # Konten file sertifikat CA instans KMS (PrivateKmsCA_kst-******.pem) kms_cert_pem = """ -----BEGIN CERTIFICATE----- MIIDuzCCAqOgAwIBAgIJALTKwWAjvbMiMA0GCSqGSIb3DQEBCwUAMH**** -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIID3zCCAsegAwIBAgIJAO8qnQyTy8/kMA0GCSqGSIb3DQEBCwUAMH**** -----END CERTIFICATE----- """Lihat status volume.
sudo cryptpilot-crypt show data0Anda dapat melihat informasi konfigurasi volume
data0:Kolom Initialized: Menunjukkan apakah volume perlu diinisialisasi. Volume sementara tidak perlu inisialisasi, sedangkan volume persistent perlu.
Kolom Opened: Menunjukkan bahwa volume belum dibuka.

Inisialisasi volume.
sudo cryptpilot-crypt init data0Buka volume.
sudo cryptpilot-crypt open data0Periksa perangkat virtual volume.
sudo file -Ls /dev/mapper/data0Setelah volume dibuka, perangkat blok virtual dibuat di jalur:
/dev/mapper/<volume_name>.
Pasang sistem file dan periksa hasil pemasangan.
Pasang volume
data0ke jalur/mnt/data0.sudo mkdir -p /mnt/data0 sudo mount -t ext4 /dev/mapper/data0 /mnt/data0Periksa hasil pemasangan.
mount | grep data0 ls -la /mnt/data0/Output berikut menunjukkan bahwa volume berhasil dipasang dengan sistem file ext4 kosong.

Tutup volume.
PentingContoh ini menggunakan model one-time password (OTP). Setelah volume ditutup, data rahasia yang tersimpan di dalamnya hilang secara permanen.
Sebelum menutup volume, hentikan semua proses bisnis yang membaca atau menulis ke volume, lepas pemasangan sistem file pada volume, dan pastikan volume tidak sedang digunakan.
Lepas pemasangan sistem file.
sudo umount /mnt/data0Tutup volume.
sudo cryptpilot-crypt close data0
Langkah 4: Konfigurasikan volume agar terbuka otomatis saat startup
Modifikasi file konfigurasi.
Untuk volume yang perlu terbuka otomatis, ubah nilai bidang
auto_openmenjaditruedalam file konfigurasi.
(Bersyarat) Untuk volume persistent, Anda harus menjalankan
sudo cryptpilot-crypt init <volume_name>secara manual untuk menginisialisasi volume sebelum volume tersebut dapat dibuka otomatis saat startup.Jalankan dan aktifkan layanan cryptpilot agar berjalan saat boot.
PentingSetelah setiap modifikasi konfigurasi cryptpilot, Anda harus menjalankan dan mengaktifkan layanan cryptpilot untuk memastikan fitur volume auto-open berlaku.
sudo systemctl enable --now cryptpilot.serviceLihat status volume.
sudo cryptpilot-crypt showOutput berikut menunjukkan bahwa volume dibuka secara otomatis.

Lampiran: Metode pengambilan kunci
CryptPilot menggunakan mekanisme Provider untuk mengintegrasikan berbagai sumber kunci, memisahkan "cara mengenkripsi/dekripsi disk" dari "dari mana mendapatkan kunci." Bagian ini menjelaskan empat metode: OTP, Trustee (KBS), Alibaba Cloud KMS, dan program eksternal (exec), yang dirujuk oleh bagian disk sistem rahasia dan disk data rahasia di atas.
Metode pengambilan kunci | Jenis Provider | Persistensi | Memerlukan remote attestation | Skenario khas |
OTP (One-time password) |
| Tidak (hilang saat shutdown) | Tidak | Disk data sementara, partisi swap |
Trustee |
| Ya | Ya (melepaskan kunci berdasarkan remote attestation TEE) | Backend kunci self-hosted + persyaratan komputasi tepercaya kuat |
Alibaba Cloud KMS |
| Ya | Tidak | Kemampuan manajemen kunci berbasis cloud |
exec (Program eksternal) |
| Tergantung pada program eksternal | Tergantung pada program eksternal | Pengguna tingkat lanjut dengan alur kerja pengambilan kunci kustom |
Dalam contoh konfigurasi volume di atas, Anda dapat mengganti bagian [encrypt.xxx] dengan salah satu konfigurasi Provider yang dijelaskan dalam bagian ini sesuai kebutuhan aktual Anda.One-time password (OTP)
Cakupan penerapan
Disk data rahasia - volume sementara: Setiap kali volume dibuka kembali, kunci acak berbeda dihasilkan. Data dalam volume hilang secara permanen setelah shutdown. Cocok untuk disk data sementara atau partisi swap.
Tidak berlaku untuk disk sistem rahasia atau volume persistent apa pun yang perlu menyimpan data setelah shutdown.
Contoh konfigurasi
Tambahkan berikut ke konfigurasi toml volume:
[encrypt.otp]Tidak diperlukan parameter tambahan. CryptPilot secara otomatis menghasilkan kunci sementara aman saat membuka volume untuk inisialisasi dan dekripsi.
Layanan manajemen kepercayaan (Trustee)
Trustee adalah layanan manajemen kepercayaan open-source yang terdiri dari Attestation Service (AS), Reference Value Provider Service (RVPS), dan Key Broker Service (KBS). Dalam pendekatan ini, kunci enkripsi disimpan di KBS. CryptPilot mengambil kunci dari KBS saat membuka volume. KBS memulai remote attestation terhadap instans berdasarkan kebijakan yang telah ditentukan dan hanya melepaskan kunci setelah attestation berhasil.
Trustee cocok untuk kedua skenario: disk sistem rahasia (sebagai backend kunci yang direkomendasikan dalam skenario komputasi tepercaya kuat) dan volume persistent disk data rahasia.
Langkah 1: Terapkan layanan Trustee
Instal paket Trustee di lingkungan tepercaya (seperti instans ECS terpisah):
sudo yum install -y trustee(Opsional) Konfigurasikan akses HTTPS. Jika akses HTTPS diperlukan, edit
/etc/trustee/gateway.ymldan tambahkan konfigurasi sertifikat TLS Anda:server: insecure_http: false tls: cert_file: "<path_to_https_certificate.pem>" key_file: "<path_to_https_certificate_private_key>" # Konfigurasi lainnya...Pada instans Alibaba Cloud Linux 3, Anda dapat menjalankan layanan Trustee melalui systemd:
sudo systemctl restart trusteeSetelah Trustee berjalan, layanan ini mendengarkan pada port 8081 di mesin lokal.
Langkah 2: Konfigurasikan kebijakan verifikasi remote attestation
Trustee memeriksa lingkungan perangkat keras TEE, sistem file, program, dan konfigurasi instans rahasia dan menghasilkan hasil pemeriksaan tersebut. Anda perlu mengonfigurasi kebijakan pelepasan di /opt/trustee/kbs/policy.rego berdasarkan kebutuhan keamanan Anda.
Skenario disk sistem rahasia (direkomendasikan: kebijakan ketat): Mensyaratkan bahwa nilai kepercayaan keempat dimensi (perangkat keras, konfigurasi, executable, sistem file) dari remote attestation adalah
<= 32. Untuk kebijakan spesifik dan pembuatan nilai referensi, lihat "Langkah 3: Buat gambar disk sistem rahasia" (mendaftarkan nilai referensi di layanan Trustee) dalam alur penggunaan disk sistem rahasia di atas.Skenario disk data rahasia (kebijakan paling sederhana: verifikasi hanya perangkat keras): Untuk penggunaan yang disederhanakan, Anda dapat hanya memverifikasi dimensi perangkat keras di antara keempat dimensi untuk memeriksa apakah lingkungan tersebut merupakan lingkungan perangkat keras TEE yang valid. Ubah
/opt/trustee/kbs/policy.regoke konfigurasi default berikut:
Untuk verifikasi multi-dimensi yang lebih ketat, periksa /opt/trustee/attestation-service/policies/opa/default.rego dan rujuk ke dokumentasi konfigurasi nilai referensi dan dokumentasi konfigurasi remote attestation untuk menyiapkan nilai referensi.
Langkah 3: Unggah kunci enkripsi volume ke KBS
Buat direktori penyimpanan kunci (KBS menggunakan
/opt/trustee/kbs/repository/default/secara default):sudo mkdir -p /opt/trustee/kbs/repository/default/local-resources/Hasilkan kunci enkripsi.
sudo yum install -y openssl openssl rand -base64 40
Tulis kunci acak yang dihasilkan ke file resource lokal. Misalnya, untuk volume bernama
data0:sudo sh -c 'echo -n "<data0_volume_encryption_key>" > /opt/trustee/kbs/repository/default/local-resources/data0'Ganti
<data0_volume_encryption_key>dengan kunci acak yang dihasilkan di atas. Identifier resource KBS yang sesuai adalahkbs:///default/local-resources/data0, yang dirujuk oleh URI ini dalam konfigurasi volume CryptPilot.
Langkah 4: Rujuk KBS dalam konfigurasi volume
[encrypt.kbs]
# URL HTTP(S) instans Trustee
kbs_url = "http://<trustee-ip>:8081/api"
# URI resource di KBS, format: `kbs:///<repo>/<type>/<tag>`
key_uri = "kbs:///default/local-resources/data0"
# (Opsional) Sertifikat root untuk akses HTTPS KBS, format PEM; menggunakan CA root sistem jika tidak ditentukan
kbs_root_cert = """
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE-----
"""Langkah 5: Instal dependensi remote attestation pada instans rahasia
Untuk mengaktifkan remote attestation pada instans rahasia dan mengakses Trustee untuk pengambilan kunci, pastikan komponen attestation-agent untuk perangkat keras yang sesuai telah diinstal pada instans rahasia:
yum install -y attestation-agent
systemctl enable attestation-agent
systemctl start attestation-agentAlibaba Cloud KMS
Alibaba Cloud KMS adalah layanan manajemen kunci berbasis cloud, cocok untuk skenario di mana Anda ingin menyimpan kunci di Alibaba Cloud tanpa membangun backend kunci self-hosted. Dalam pendekatan ini, kunci enkripsi disimpan sebagai "rahasia generik" di KMS. CryptPilot mengambil kunci dari instans KMS saat membuka volume.
Langkah 1: Buat instans Alibaba Cloud KMS dan rahasia generik
Tidak ada batasan pada Key Management Type instans KMS untuk disk cloud rahasia. Anda dapat memilih berdasarkan kebutuhan keamanan Anda. Contoh ini menggunakan instans KMS tipe Software Key Management.
Instans KMS harus berada dalam VPC yang sama dengan instans ECS.
Secret Name: Isi berdasarkan instans Anda. Dalam contoh ini,
confidential_cloud_disk_passphrase.Set Secret Value: Pilih teks biasa dan masukkan kunci acak yang dihasilkan pada langkah sebelumnya.
Encryption Key: Pilih kunci software yang dibuat pada langkah sebelumnya.

Buat titik akses aplikasi dan peroleh sertifikat CA instans KMS.
Pastikan Anda telah memperoleh hal berikut:
Konten kredensial identitas aplikasi (ClientKeyContent): Nama file default adalah clientKey_****.json.
Kata sandi kredensial (ClientKeyPassword): Nama file default adalah clientKey_****_Password.txt.
Sertifikat CA instans KMS: Nama file default adalah PrivateKmsCA_kst-******.pem.
Langkah 2: Rujuk KMS dalam konfigurasi volume
Modifikasi informasi konfigurasi dalam file konfigurasi berikut berdasarkan pengaturan aktual Anda.
[encrypt.kms]
# ID instans KMS
kms_instance_id = "kst-bjj67d004a85ykq80****"
# Nama rahasia generik di instans KMS
secret_name = "confidential_cloud_disk_passphrase"
# Konten file kredensial identitas aplikasi clientKey_****.json
client_key = '''
{
"KeyId": "KAAP.XXXXXXXXX",
"PrivateKeyData": "XXXXXXXXX"
}'''
# Konten file kata sandi kredensial clientKey_****_Password.txt
client_key_password = "258372e962f5204ce648bc66243f****"
# Konten sertifikat CA instans KMS PrivateKmsCA_kst-******.pem
kms_cert_pem = """
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE-----
"""Program eksternal (exec)
Provider exec memungkinkan CryptPilot memanggil program eksternal apa pun saat membuka volume dan menggunakan output standar program tersebut sebagai kunci dekripsi volume. Metode ini untuk pengguna tingkat lanjut dan dapat digunakan untuk alur kerja pengambilan kunci kustom, seperti integrasi dengan HSM perusahaan, Vault, sistem KMS kustom, atau layanan pengiriman kunci jarak jauh.
Karena keamanan pengambilan kunci sepenuhnya bergantung pada program eksternal dan lingkungan runtime-nya, pastikan program tersebut memiliki kontrol akses yang memadai dan berasal dari sumber tepercaya.
Contoh konfigurasi
Contoh berikut menggunakan program echo untuk menghasilkan kata sandi tetap, hanya untuk tujuan demonstrasi. Jangan gunakan kata sandi tetap di lingkungan produksi:
[rootfs]
delta_location = "disk"
[rootfs.encrypt.exec]
command = "echo"
args = ["-n", "AAAaaawewe222"]
[delta]
integrity = true
[delta.encrypt.exec]
command = "echo"
args = ["-n", "AAAaaawewe222"]CryptPilot mengeksekusi program yang ditentukan oleh command (dengan parameter args) saat membuka volume dan menggunakan output standar sebagai kunci dekripsi volume.