Menggunakan kunci Cloud HSM dengan alat pkcs11

Panduan ini memberikan contoh perintah pkcs11-tool untuk menggunakan kunci Cloud HSM di Debian 11 (Bullseye) menggunakan library PKCS #11. Perintah yang disertakan dalam petunjuk ini mungkin memerlukan perubahan berdasarkan OS atau distribusi Linux Anda.

Sebelum memulai

Sebelum melanjutkan, selesaikan langkah-langkah di Menggunakan kunci Cloud HSM dengan OpenSSL.

Menggunakan enkripsi dan dekripsi simetris

Bagian berikut menunjukkan cara mengenkripsi dan mendekripsi menggunakan kunci enkripsi simetris, OpenSSL, dan alat pkcs11.

Prasyarat

  1. Buat kunci enkripsi simetris mentah Cloud HSM. Untuk membuat kunci Cloud HSM, tetapkan Level perlindungan ke HSM saat membuat kunci baru.

  2. Catat algoritma enkripsi simetris mentah yang Anda pilih untuk kunci. Setiap algoritma memiliki persyaratannya sendiri untuk padding, vektor inisialisasi, dan data tambahan yang diautentikasi.

  3. Buat file input yang berisi data yang ingin Anda enkripsi.

Enkripsi

Untuk mengenkripsi file teks, jalankan perintah berikut:

pkcs11-tool --module PATH_TO_LIBKMSP11_SO --encrypt \
    --mechanism MECHANISM \
    --slot 0 \
    --label HSM_KEY_NAME \
    --iv INITIALIZATION_VECTOR \
    --input-file INPUT_TEXT_FILE_PATH \
    --output-file ENCRYPTED_TEXT_FILE_PATH

Ganti kode berikut:

  • PATH_TO_LIBKMSP11_SO: jalur ke modul PKCS#11—misalnya, /usr/local/lib/libkmsp11.so.
  • MECHANISM: mekanisme yang akan digunakan, berdasarkan algoritma kunci—misalnya, AES-CBC-PAD.
  • HSM_KEY_NAME: nama kunci Cloud HSM yang akan digunakan untuk enkripsi.
  • INITIALIZATION_VECTOR: nilai vektor inisialisasi yang akan digunakan sebagai bagian dari enkripsi.
  • INPUT_TEXT_FILE_PATH: jalur ke file input yang ingin Anda enkripsi.
  • ENCRYPTED_TEXT_FILE_PATH: jalur tempat Anda ingin menyimpan file teks terenkripsi.

Dekripsi

Untuk mendekripsi file teks, jalankan perintah berikut:

pkcs11-tool --module PATH_TO_LIBKMSP11_SO --decrypt \
    --mechanism MECHANISM \
    --slot 0 \
    --label HSM_KEY_NAME \
    --iv INITIALIZATION_VECTOR \
    --input-file ENCRYPTED_TEXT_FILE_PATH \
    --output-file DECRYPTED_TEXT_FILE_PATH

Ganti kode berikut:

  • PATH_TO_LIBKMSP11_SO: jalur ke modul PKCS#11—misalnya, /usr/local/lib/libkmsp11.so.
  • MECHANISM: mekanisme yang akan digunakan, berdasarkan algoritma kunci—misalnya, ECDSA.
  • HSM_KEY_NAME: nama kunci Cloud HSM yang digunakan untuk mengenkripsi file yang ingin Anda dekripsi.
  • INITIALIZATION_VECTOR: nilai vektor inisialisasi yang akan digunakan sebagai bagian dari enkripsi.
  • ENCRYPTED_TEXT_FILE_PATH: jalur ke file yang ingin didekripsi.
  • DECRYPTED_TEXT_FILE_PATH: jalur tempat Anda ingin menyimpan file teks yang didekripsi.

Menggunakan enkripsi dan dekripsi asimetris

Bagian berikut menunjukkan cara mengenkripsi dan mendekripsi menggunakan kunci enkripsi asimetris, OpenSSL, dan alat pkcs11.

Prasyarat

  1. Buat Kunci Dekripsi Asimetris Cloud HSM dan download kunci publiknya.

  2. Buat file input dengan beberapa teks.

    echo Hello World! >> input.txt
    

Enkripsi

Untuk mengenkripsi file teks, jalankan perintah berikut:

openssl pkeyutl -in INPUT_TEXT_FILE_PATH -encrypt -pubin \
    -inkey PUBLIC_KEY \
    -pkeyopt rsa_padding_mode:oaep \
    -pkeyopt rsa_oaep_md:sha256 \
    -pkeyopt rsa_mgf1_md:sha256 > ENCRYPTED_TEXT_FILE_PATH

Ganti kode berikut:

  • INPUT_TEXT_FILE_PATH: jalur ke file input yang ingin Anda enkripsi.
  • PUBLIC_KEY: jalur ke kunci publik.
  • ENCRYPTED_TEXT_FILE_PATH: jalur tempat Anda ingin menyimpan file teks terenkripsi.

Dekripsi

Untuk mendekripsi file teks, jalankan perintah berikut:

pkcs11-tool --module PATH_TO_LIBKMSP11_SO \
    --decrypt --mechanism RSA-PKCS-OAEP --slot 0 --hash-algorithm=sha256 \
    --mgf MGF1-SHA256 --label HSM_KEY_NAME --type privkey \
    -i ENCRYPTED_TEXT_FILE_PATH \
    -o OUTPUT_TEXT_FILE_PATH

Ganti kode berikut:

  • PATH_TO_LIBKMSP11_SO: jalur ke modul PKCS#11 (path/to/libkmsp11.so).
  • HSM_KEY_NAME: nama kunci Cloud HSM yang sesuai dengan kunci publik yang digunakan untuk mengenkripsi file teks.
  • ENCRYPTED_TEXT_FILE_PATH: jalur ke file yang ingin didekripsi.
  • OUTPUT_TEXT_FILE_PATH: jalur tempat Anda ingin menyimpan output yang didekripsi.

Menandatangani dan Memverifikasi

Bagian berikut menunjukkan cara menandatangani dan memverifikasi menggunakan kunci penandatanganan asimetric dan alat pkcs11.

Prasyarat

  1. Buat Kunci Tanda Tangan Asimetris Cloud HSM.

  2. Buat file dengan data input yang di-hash yang ingin Anda tanda tangani.

Tanda tangan

Untuk menandatangani file teks, jalankan perintah berikut:

pkcs11-tool --module PATH_TO_LIBKMSP11_SO --sign \
   --mechanism MECHANISM \
   --slot 0 \
   --label HSM_KEY_NAME \
   -i INPUT_TEXT_FILE_PATH \
   -o OUTPUT_SIGNATURE_FILE_PATH

Ganti kode berikut:

  • PATH_TO_LIBKMSP11_SO: jalur ke modul PKCS#11, misalnya path/to/libkmsp11.so.
  • HSM_KEY_NAME: nama kunci Cloud HSM yang ingin Anda gunakan untuk penandatanganan.
  • MECHANISM: mekanisme yang akan digunakan, berdasarkan algoritma kunci. Contoh, ECDSA.
  • INPUT_TEXT_FILE_PATH: jalur ke file input yang ingin Anda tanda tangani.
  • OUTPUT_SIGNATURE_FILE_PATH: jalur tempat Anda ingin menyimpan file tanda tangan.

Verifikasi

Untuk memverifikasi file tanda tangan, jalankan perintah berikut:

pkcs11-tool --module PATH_TO_LIBKMSP11_SO --verify \
   --mechanism MECHANISM \
   --slot 0 \
   --label HSM_KEY_NAME \
   -i INPUT_TEXT_FILE_PATH \
   --signature-file SIGNATURE_FILE_PATH

Ganti kode berikut:

  • PATH_TO_LIBKMSP11_SO: jalur ke modul PKCS#11, misalnya path/to/libkmsp11.so.
  • HSM_KEY_NAME: nama kunci Cloud HSM yang digunakan untuk membuat tanda tangan yang ingin Anda verifikasi.
  • MECHANISM: mekanisme yang akan digunakan, berdasarkan algoritma kunci. Contoh, ECDSA.
  • INPUT_TEXT_FILE_PATH: jalur ke file yang sebelumnya ditandatangani.
  • SIGNATURE_FILE_PATH: jalur ke file tanda tangan.