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 distribusi OS atau Linux Anda.

Sebelum memulai

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

Menggunakan enkripsi dan dekripsi simetris

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

Prasyarat

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

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

  3. Buat file input yang berisi data yang ingin dienkripsi.

Enkripsikan

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 yang dienkripsi.

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 Anda dekripsi.
  • 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 data 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 teks.

    echo Hello World! >> input.txt
    

Enkripsikan

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 yang dienkripsi.

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 (jalur/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 Anda dekripsi.
  • OUTPUT_TEXT_FILE_PATH: jalur tempat Anda ingin menyimpan output yang didekripsi.

Tanda Tangani dan Verifikasi

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

Prasyarat

  1. Buat kunci Tanda 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 tandatangani.
  • 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 diverifikasi.
  • MECHANISM: mekanisme yang akan digunakan, berdasarkan algoritma kunci. Contoh, ECDSA.
  • INPUT_TEXT_FILE_PATH: jalur ke file yang telah ditandatangani sebelumnya.
  • SIGNATURE_FILE_PATH: jalur ke file tanda tangan.