Integrasi keamanan perangkat keras - AWS IoT Greengrass

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Integrasi keamanan perangkat keras

catatan

Fitur ini tersedia untuk v2.5.3 dan yang lebih baru dari komponen inti Greengrass. AWS IoT Greengrasssaat ini tidak mendukung fitur ini di perangkat inti Windows.

Anda dapat mengonfigurasi perangkat lunak AWS IoT Greengrass Core untuk menggunakan modul keamanan perangkat keras (HSM) melalui antarmuka PKCS #11. Fitur ini memungkinkan Anda menyimpan kunci pribadi dan sertifikat perangkat dengan aman sehingga tidak terekspos atau digandakan dalam perangkat lunak. Anda dapat menyimpan kunci pribadi dan sertifikat pada modul perangkat keras seperti HSM atau Trusted Platform Module (TPM).

Perangkat lunak AWS IoT Greengrass Core menggunakan kunci pribadi dan sertifikat X.509 untuk mengautentikasi koneksi ke dan layanan. AWS IoT AWS IoT Greengrass Komponen manajer rahasia menggunakan kunci pribadi ini untuk mengenkripsi dan mendekripsi rahasia yang Anda terapkan ke perangkat inti Greengrass dengan aman. Saat Anda mengonfigurasi perangkat inti untuk menggunakan HSM, komponen ini menggunakan kunci pribadi dan sertifikat yang Anda simpan di HSM.

Komponen broker Moquette MQTT juga menyimpan kunci pribadi untuk sertifikat server MQTT lokalnya. Komponen ini menyimpan kunci pribadi pada sistem file perangkat di folder kerja komponen. Saat ini, AWS IoT Greengrass tidak mendukung penyimpanan kunci pribadi atau sertifikat ini di HSM.

Tip

Cari perangkat yang mendukung fitur ini di Katalog Perangkat AWS Mitra.

Persyaratan

Anda harus memenuhi persyaratan berikut untuk menggunakan HSM pada perangkat inti Greengrass:

  • Greengrass nucleus v2.5.3 atau yang lebih baru diinstal pada perangkat inti. Anda dapat memilih versi yang kompatibel saat menginstal perangkat lunak AWS IoT Greengrass Core pada perangkat inti.

  • Komponen penyedia PKCS #11 diinstal pada perangkat inti. Anda dapat mengunduh dan menginstal komponen ini ketika Anda menginstal perangkat lunak AWS IoT Greengrass Core pada perangkat inti.

  • Modul keamanan perangkat keras yang mendukung skema tanda tangan PKCS #1 v1.5 dan kunci RSA dengan ukuran kunci RSA-2048 (atau lebih besar) atau kunci ECC.

    catatan

    Untuk menggunakan modul keamanan perangkat keras dengan kunci ECC, Anda harus menggunakan Greengrass nucleus v2.5.6 atau yang lebih baru.

    Untuk menggunakan modul keamanan perangkat keras dan manajer rahasia, Anda harus menggunakan modul keamanan perangkat keras dengan kunci RSA.

  • Pustaka penyedia PKCS #11 yang dapat dimuat oleh perangkat lunak AWS IoT Greengrass Core saat runtime (menggunakan libdl) untuk menjalankan fungsi PKCS #11. Pustaka penyedia PKCS #11 harus mengimplementasikan operasi API PKCS #11 berikut:

    • C_Initialize

    • C_Finalize

    • C_GetSlotList

    • C_GetSlotInfo

    • C_GetTokenInfo

    • C_OpenSession

    • C_GetSessionInfo

    • C_CloseSession

    • C_Login

    • C_Logout

    • C_GetAttributeValue

    • C_FindObjectsInit

    • C_FindObjects

    • C_FindObjectsFinal

    • C_DecryptInit

    • C_Decrypt

    • C_DecryptUpdate

    • C_DecryptFinal

    • C_SignInit

    • C_Sign

    • C_SignUpdate

    • C_SignFinal

    • C_GetMechanismList

    • C_GetMechanismInfo

    • C_GetInfo

    • C_GetFunctionList

  • Modul perangkat keras harus dapat diatasi dengan label slot, sebagaimana ditentukan di dalam spesifikasi PKCS#11.

  • Anda harus menyimpan kunci pribadi dan sertifikat di HSM di slot yang sama, dan mereka harus menggunakan label objek dan ID objek yang sama, jika HSM mendukung ID objek.

  • Sertifikat dan kunci pribadi harus dapat diselesaikan dengan label objek.

  • Kunci pribadi harus memiliki izin berikut:

    • sign

    • decrypt

  • (Opsional) Untuk menggunakan komponen manajer rahasia, Anda harus menggunakan versi 2.1.0 atau yang lebih baru, dan kunci pribadi harus memiliki izin berikut:

    • unwrap

    • wrap

Praktik terbaik keamanan perangkat keras

Pertimbangkan praktik terbaik berikut saat Anda mengonfigurasi keamanan perangkat keras pada perangkat inti Greengrass.

  • Hasilkan kunci privat langsung pada HSM dengan menggunakan generator nomor acak perangkat keras internal. Pendekatan ini lebih aman daripada mengimpor kunci pribadi yang Anda hasilkan di tempat lain, karena kunci pribadi tetap berada dalam HSM.

  • Konfigurasikan kunci pribadi agar tidak dapat diubah dan melarang ekspor.

  • Gunakan alat penyediaan yang direkomendasikan oleh vendor perangkat keras HSM untuk membuat permintaan penandatanganan sertifikat (CSR) menggunakan kunci pribadi yang dilindungi perangkat keras, lalu gunakan konsol atau API untuk menghasilkan sertifikat klien. AWS IoT

catatan

Praktik keamanan terbaik untuk memutar kunci tidak berlaku saat Anda membuat kunci pribadi pada HSM.

Instal perangkat lunak AWS IoT Greengrass Core dengan keamanan perangkat keras

Saat Anda menginstal perangkat lunak AWS IoT Greengrass Core, Anda dapat mengonfigurasinya untuk menggunakan kunci pribadi yang Anda hasilkan di HSM. Pendekatan ini mengikuti praktik terbaik keamanan untuk menghasilkan kunci pribadi di HSM, sehingga kunci pribadi tetap berada dalam HSM.

Untuk menginstal perangkat lunak AWS IoT Greengrass Core dengan keamanan perangkat keras, Anda melakukan hal berikut:

  1. Hasilkan kunci pribadi di HSM.

  2. Buat permintaan penandatanganan sertifikat (CSR) dari kunci pribadi.

  3. Buat sertifikat dari CSR. Anda dapat membuat sertifikat yang ditandatangani oleh AWS IoT atau oleh otoritas sertifikat root (CA) lainnya. Untuk informasi selengkapnya tentang cara menggunakan CA root lain, lihat Membuat sertifikat klien Anda sendiri di Panduan AWS IoT Core Pengembang.

  4. Unduh AWS IoT sertifikat dan impor ke HSM.

  5. Instal perangkat lunak AWS IoT Greengrass Core dari file konfigurasi yang menentukan untuk menggunakan komponen penyedia PKCS #11 dan kunci pribadi dan sertifikat di HSM.

Anda dapat memilih salah satu opsi instalasi berikut untuk menginstal perangkat lunak AWS IoT Greengrass Core dengan keamanan perangkat keras:

Saat ini, AWS IoT Greengrass tidak mendukung penginstalan perangkat lunak AWS IoT Greengrass Core dengan keamanan perangkat keras saat Anda menginstal dengan penyediaan sumber daya otomatis atau penyediaan AWS IoT armada.

Konfigurasikan keamanan perangkat keras pada perangkat inti yang ada

Anda dapat mengimpor kunci pribadi dan sertifikat perangkat inti ke HSM untuk mengonfigurasi keamanan perangkat keras.

Pertimbangan
  • Anda harus memiliki akses root ke sistem file perangkat inti.

  • Dalam prosedur ini, Anda mematikan perangkat lunak AWS IoT Greengrass Core, sehingga perangkat inti offline dan tidak tersedia saat Anda mengonfigurasi keamanan perangkat keras.

Untuk mengonfigurasi keamanan perangkat keras pada perangkat inti yang ada, Anda melakukan hal berikut:

  1. Inisialisasi HSM.

  2. Terapkan komponen penyedia PKCS #11 ke perangkat inti.

  3. Hentikan perangkat lunak AWS IoT Greengrass inti.

  4. Impor kunci pribadi perangkat inti dan sertifikat ke HSM.

  5. Perbarui file konfigurasi perangkat lunak AWS IoT Greengrass Core untuk menggunakan kunci pribadi dan sertifikat di HSM.

  6. Mulai perangkat lunak AWS IoT Greengrass inti.

Langkah 1: Inisialisasi modul keamanan perangkat keras

Selesaikan langkah berikut untuk menginisialisasi HSM pada perangkat inti Anda.

Untuk menginisialisasi modul keamanan perangkat keras
  • Inisialisasi token PKCS #11 di HSM, dan simpan ID slot dan PIN pengguna untuk token tersebut. Periksa dokumentasi untuk HSM Anda untuk mempelajari cara menginisialisasi token. Anda menggunakan ID slot dan PIN pengguna nanti saat Anda menerapkan dan mengonfigurasi komponen penyedia PKCS #11.

Langkah 2: Terapkan komponen penyedia PKCS #11

Selesaikan langkah-langkah berikut untuk menerapkan dan mengonfigurasi komponen penyedia PKCS #11. Anda dapat menerapkan komponen ke satu atau beberapa perangkat inti.

  1. Pada menu navigasi konsol AWS IoT Greengrass tersebut, pilih Komponen.

  2. Pada halaman Components, pilih tab Public components, lalu pilih aws.greengrass.crypto.Pkcs11Provider.

  3. Pada halaman aws.greengrass.crypto.Pkcs11Provider pilih Deploy.

  4. Dari Tambahkan ke penerapan, pilih penerapan yang ada untuk direvisi, atau pilih untuk membuat penerapan baru, lalu pilih Berikutnya.

  5. Jika Anda memilih untuk membuat penerapan baru, pilih perangkat inti target atau grup hal untuk penerapan. Pada halaman Tentukan target, di bawah target Deployment, pilih perangkat inti atau grup benda, lalu pilih Berikutnya.

  6. Pada halaman Pilih komponen, di bawah Komponen publik, pilih aws.greengrass.crypto.Pkcs11Provider, lalu pilih Berikutnya.

  7. Pada halaman Configure components, pilih aws.greengrass.crypto.Pkcs11Provider, lalu lakukan hal berikut:

    1. Pilih Konfigurasi komponen.

    2. Dalam konfigurasi aws.greengrass.crypto.Pkcs11Provider modal, di bawah Configuration update, di Configuration to merge, masukkan update konfigurasi berikut. Perbarui parameter konfigurasi berikut dengan nilai untuk perangkat inti target. Tentukan ID slot dan PIN pengguna tempat Anda menginisialisasi token PKCS #11 sebelumnya. Anda mengimpor kunci pribadi dan sertifikat ke slot ini di HSM nanti.

      name

      Nama untuk konfigurasi PKCS #11.

      library

      Jalur file absolut ke pustaka implementasi PKCS #11 yang dapat dimuat oleh perangkat lunak AWS IoT Greengrass Core dengan libdl.

      slot

      ID slot yang berisi kunci pribadi dan sertifikat perangkat. Nilai ini berbeda dari indeks slot atau label slot.

      userPin

      PIN pengguna yang digunakan untuk mengakses slot.

      { "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
    3. Pilih Konfirmasi untuk menutup modal, lalu pilih Berikutnya.

  8. Pada halaman Konfigurasikan pengaturan lanjutan, simpan pengaturan konfigurasi default tersebut, dan pilih Selanjutnya.

  9. Di halaman Tinjau, pilih Deploy.

    Penyebaran dapat memakan waktu hingga satu menit untuk diselesaikan.

Untuk menerapkan komponen penyedia PKCS #11, buat dokumen penerapan yang disertakan aws.greengrass.crypto.Pkcs11Provider dalam components objek, dan tentukan pemutakhiran konfigurasi untuk komponen tersebut. Ikuti petunjuk Buat deployment untuk membuat penerapan baru atau merevisi penerapan yang ada.

Contoh dokumen penerapan sebagian berikut menetapkan untuk menyebarkan dan mengkonfigurasi komponen penyedia PKCS #11. Perbarui parameter konfigurasi berikut dengan nilai untuk perangkat inti target. Simpan ID slot dan PIN pengguna untuk digunakan nanti saat Anda mengimpor kunci pribadi dan sertifikat ke HSM.

name

Nama untuk konfigurasi PKCS #11.

library

Jalur file absolut ke pustaka implementasi PKCS #11 yang dapat dimuat oleh perangkat lunak AWS IoT Greengrass Core dengan libdl.

slot

ID slot yang berisi kunci pribadi dan sertifikat perangkat. Nilai ini berbeda dari indeks slot atau label slot.

userPin

PIN pengguna yang digunakan untuk mengakses slot.

{ "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
{ ..., "components": { ..., "aws.greengrass.crypto.Pkcs11Provider": { "componentVersion": "2.0.0", "configurationUpdate": { "merge": "{\"name\":\"softhsm_pkcs11\",\"library\":\"/usr/lib/softhsm/libsofthsm2.so\",\"slot\":1,\"userPin\":\"1234\"}" } } } }

Deployment ini dapat memakan waktu beberapa menit hingga selesai. Anda dapat menggunakan AWS IoT Greengrass layanan untuk memeriksa status penyebaran. Anda dapat memeriksa log perangkat lunak AWS IoT Greengrass Inti untuk memverifikasi bahwa komponen penyedia PKCS #11 berhasil diterapkan. Untuk informasi selengkapnya, lihat hal berikut:

Jika penerapan gagal, Anda dapat memecahkan masalah penerapan pada setiap perangkat inti. Untuk informasi selengkapnya, lihat Pemecahan masalah AWS IoT Greengrass V2.

Langkah 3: Perbarui konfigurasi pada perangkat inti

Perangkat lunak AWS IoT Greengrass Core menggunakan file konfigurasi yang menentukan bagaimana perangkat beroperasi. File konfigurasi ini mencakup tempat menemukan kunci pribadi dan sertifikat yang digunakan perangkat untuk terhubung ke fileAWS Cloud. Selesaikan langkah-langkah berikut untuk mengimpor kunci pribadi perangkat inti dan sertifikat ke HSM dan memperbarui file konfigurasi untuk menggunakan HSM.

Untuk memperbarui konfigurasi pada perangkat inti untuk menggunakan keamanan perangkat keras
  1. Hentikan perangkat lunak AWS IoT Greengrass inti. Jika Anda mengkonfigurasi perangkat lunak AWS IoT Greengrass Core sebagai layanan sistem dengan systemd, Anda dapat menjalankan perintah berikut untuk menghentikan perangkat lunak.

    sudo systemctl stop greengrass.service
  2. Temukan kunci pribadi perangkat inti dan file sertifikat.

    • Jika Anda menginstal perangkat lunak AWS IoT Greengrass Core dengan penyediaan otomatis atau penyediaan armada, kunci pribadi ada di/greengrass/v2/privKey.key, dan sertifikat ada di. /greengrass/v2/thingCert.crt

    • Jika Anda menginstal perangkat lunak AWS IoT Greengrass Core dengan penyediaan manual, kunci pribadi ada di secara /greengrass/v2/private.pem.key default, dan sertifikat ada di secara /greengrass/v2/device.pem.crt default.

    Anda juga dapat memeriksa system.privateKeyPath dan system.certificateFilePath properti di /greengrass/v2/config/effectiveConfig.yaml untuk menemukan lokasi file-file ini.

  3. Impor kunci pribadi dan sertifikat ke HSM. Periksa dokumentasi untuk HSM Anda untuk mempelajari cara mengimpor kunci pribadi dan sertifikat ke dalamnya. Impor kunci pribadi dan sertifikat menggunakan ID slot dan PIN pengguna tempat Anda menginisialisasi token PKCS #11 sebelumnya. Anda harus menggunakan label objek dan ID objek yang sama untuk kunci pribadi dan sertifikat. Simpan label objek yang Anda tentukan saat Anda mengimpor setiap file. Anda menggunakan label ini nanti ketika Anda memperbarui konfigurasi perangkat lunak AWS IoT Greengrass Core untuk menggunakan kunci pribadi dan sertifikat di HSM.

  4. Perbarui konfigurasi AWS IoT Greengrass Core untuk menggunakan kunci pribadi dan sertifikat di HSM. Untuk memperbarui konfigurasi, Anda memodifikasi file konfigurasi AWS IoT Greengrass Core dan menjalankan perangkat lunak AWS IoT Greengrass Core dengan file konfigurasi yang diperbarui untuk menerapkan konfigurasi baru.

    Lakukan hal-hal berikut:

    1. Buat cadangan file konfigurasi AWS IoT Greengrass Core. Anda dapat menggunakan cadangan ini untuk memulihkan perangkat inti jika Anda mengalami masalah saat mengonfigurasi keamanan perangkat keras.

      sudo cp /greengrass/v2/config/effectiveConfig.yaml ~/ggc-config-backup.yaml
    2. Buka file konfigurasi AWS IoT Greengrass Core di editor teks. Misalnya, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk mengedit file. Ganti /greengrass/v2 dengan jalur ke folder root Greengrass.

      sudo nano /greengrass/v2/config/effectiveConfig.yaml
    3. Ganti nilai system.privateKeyPath dengan PKCS #11 URI untuk kunci pribadi di HSM. Ganti iotdevicekey dengan label objek tempat Anda mengimpor kunci pribadi dan sertifikat sebelumnya.

      pkcs11:object=iotdevicekey;type=private
    4. Ganti nilai system.certificateFilePath dengan PKCS #11 URI untuk sertifikat di HSM. Ganti iotdevicekey dengan label objek tempat Anda mengimpor kunci pribadi dan sertifikat sebelumnya.

      pkcs11:object=iotdevicekey;type=cert

    Setelah Anda menyelesaikan langkah-langkah ini, system properti dalam file konfigurasi AWS IoT Greengrass Core akan terlihat mirip dengan contoh berikut.

    system: certificateFilePath: "pkcs11:object=iotdevicekey;type=cert" privateKeyPath: "pkcs11:object=iotdevicekey;type=private" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: "MyGreengrassCore"
  5. Terapkan konfigurasi dalam effectiveConfig.yaml file yang diperbarui. Jalankan Greengrass.jar dengan --init-config parameter untuk menerapkan konfigurasi dieffectiveConfig.yaml. Ganti /greengrass/v2 dengan jalur ke folder root Greengrass.

    sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config /greengrass/v2/config/effectiveConfig.yaml
  6. Mulai perangkat lunak AWS IoT Greengrass inti. Jika Anda mengkonfigurasi perangkat lunak AWS IoT Greengrass Core sebagai layanan sistem dengan systemd, Anda dapat menjalankan perintah berikut untuk memulai perangkat lunak.

    sudo systemctl start greengrass.service

    Untuk informasi selengkapnya, lihat Jalankan perangkat lunak inti AWS IoT Greengrass.

  7. Periksa log perangkat lunak AWS IoT Greengrass inti untuk memverifikasi bahwa perangkat lunak dimulai dan terhubung ke fileAWS Cloud. Perangkat lunak AWS IoT Greengrass Core menggunakan kunci pribadi dan sertifikat untuk terhubung ke AWS IoT dan AWS IoT Greengrass layanan.

    sudo tail -f /greengrass/v2/logs/greengrass.log

    Pesan log tingkat Info berikut menunjukkan bahwa perangkat lunak AWS IoT Greengrass Core berhasil terhubung ke AWS IoT dan AWS IoT Greengrass layanan.

    2021-12-06T22:47:53.702Z [INFO] (Thread-3) com.aws.greengrass.mqttclient.AwsIotMqttClient: Successfully connected to AWS IoT Core. {clientId=MyGreengrassCore5, sessionPresent=false}
  8. (Opsional) Setelah Anda memverifikasi bahwa perangkat lunak AWS IoT Greengrass Core berfungsi dengan kunci pribadi dan sertifikat di HSM, hapus kunci pribadi dan file sertifikat dari sistem file perangkat. Jalankan perintah berikut, dan ganti jalur file dengan jalur ke kunci pribadi dan file sertifikat.

    sudo rm /greengrass/v2/privKey.key sudo rm /greengrass/v2/thingCert.crt

Gunakan perangkat keras tanpa dukungan PKCS #11

Perpustakaan PKCS #11 biasanya disediakan oleh vendor perangkat keras atau open source. Sebagai contoh, dengan perangkat keras yang sesuai standar (seperti TPM1.2), dimungkinkan untuk menggunakan perangkat lunak sumber terbuka yang ada. Namun, jika perangkat keras Anda tidak memiliki implementasi pustaka PKCS #11 yang sesuai, atau jika Anda ingin menulis penyedia PKCS #11 kustom, hubungi perwakilan Amazon Web Services Enterprise Support Anda dengan pertanyaan terkait integrasi.

Lihat juga