Tutorial: Aman AWS IoT Greengrass dengan Modul Platform Tepercaya (TPM) - AWS IoT Greengrass

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

Tutorial: Aman AWS IoT Greengrass dengan Modul Platform Tepercaya (TPM)

catatan

Tutorial ini berisi petunjuk tentang cara menggunakan TPM2 chip sebagai Hardware Security Module (HSM) untuk membuat kunci pribadi dan CSR. Yang digunakan untukBuat sertifikat benda.

Tutorial ini menunjukkan cara meningkatkan keamanan perangkat dengan mengonfigurasi perangkat lunak AWS IoT Greengrass Core dengan Trusted Platform Module (TPM) menggunakan antarmuka PKCS #11. Integrasi TPM ini memastikan bahwa kunci pribadi dan sertifikat yang digunakan untuk identitas perangkat dan penyambungan AWS IoT Core disimpan dengan aman dalam perangkat keras anti-kerusakan, mencegah ekstraksi untuk peniruan identitas atau aktivitas berbahaya lainnya.

Saat Anda menyelesaikan integrasi ini, perangkat inti Greengrass Anda akan menggunakan kunci pribadi yang dilindungi TPM untuk identitas dan komunikasinya dengan layanan. AWS IoT

Untuk informasi selengkapnya tentang keamanan di perangkat Greengrass, lihat. Keamanan di AWS IoT Greengrass

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut:

  • Perangkat yang kompatibel dengan Linux dengan perangkat keras TPM 2.0 atau firmware TPM 2.0.

  • Petunjuk dalam tutorial ini didefinisikan untuk Ubuntu 24.04 LTS.

  • Mesin pengembang dengan AWS CLI diinstal dan dikonfigurasi dengan izin untuk:

    • Buat dan kelola AWS IoT sumber daya

    • Membuat dan mengelola peran dan kebijakan IAM

  • Java Runtime Environment (JRE) versi 8 atau yang lebih baru diinstal pada perangkat Anda.

  • Paket perangkat lunak berikut yang diinstal pada perangkat Anda:

    • curl

    • jg

  • Hak istimewa root atau sudo pada perangkat.

Langkah 1: Instal TPM2 alat dan dependensi

Pada langkah ini, Anda menginstal alat TPM2 perangkat lunak dan perpustakaan yang diperlukan.

  1. Perbarui manajer paket Anda dan instal TPM2 alat dan dependensi dengan menjalankan perintah berikut.

    sudo apt-get update && sudo apt-get install tpm2-tools \ tpm2-abrmd \ tpm2-tss-engine-tools \ gnutls-bin \ libtpm2-pkcs11-1 \ libtpm2-pkcs11-tools \ libtpm2-pkcs11-1-dev \ python3-tpm2-pkcs11-tools \ libengine-pkcs11-openssl \ libtss2-tcti-tabrmd0
  2. Instal paket penyedia TPM2 OpenSSL di Ubuntu 24.04 yang menggunakan mesin OpenSSL 3.

    sudo apt-get install tpm2-openssl

Langkah 2: Inisialisasi penyimpanan PKCS #11 dan buat slot

  1. Buat direktori untuk menyimpan data.

    sudo mkdir -p /etc/tpm2_pkcs11
  2. Atur lokasi penyimpanan sebagai variabel lingkungan. Untuk informasi selengkapnya tentang hierarki toko, lihat Inisialisasi.

    export TPM2_PKCS11_STORE=/etc/tpm2_store
  3. Inisialisasi TPM2 token dengan objek utama.

    sudo tpm2_ptool init

    Opsi yang tersedia adalah sebagai berikut:

    hierarchy-auth HIERARCHY_AUTH

    Kata sandi otorisasi untuk menambahkan objek utama ke hierarki.

    primary-auth PRIMARY_AUTH

    Nilai otorisasi untuk objek kunci primer yang ada.

    Default adalah nilai autentikasi kosong.

    primary-handle [PRIMARY_HANDLE]

    Gunakan objek kunci utama yang ada.

    Default: 0x81000001

    transient-parents

    Gunakan objek primer transien dari template yang diberikan.

    Nilai:tpm2-tools-default,tpm2-tools-ecc-default, tss2-engine-key

    path PATH

    Lokasi direktori toko. Jika ditentukan, direktori harus ada. Jika tidak ditentukan, ia melakukan pencarian dengan melihat variabel lingkunganTPM2_PKCS11_STORE. Jika variabel lingkungan itu tidak disetel, itu akan terlihat/etc/tpm2_pkcs11. Jika direktori itu tidak ditemukan atau tidak dapat dibuat, itu default ke direktori kerja saat ini.

Langkah 3: Buat token dan kunci

  1. Buat token PKCS #11.

    sudo tpm2_ptool addtoken —pid=1 —userpin=USERPIN —sopin=SOPIN —label=greengrass

    Opsi yang tersedia adalah sebagai berikut:

    --pid PID

    Id objek utama untuk dikaitkan dengan token ini.

    --sopin SOPIN

    Pin Administrator. Pin ini digunakan untuk pemulihan objek.

    --userpin USERPIN

    Pin pengguna. Pin ini digunakan untuk otentikasi untuk penggunaan objek.

    --label LABEL

    Label unik untuk mengidentifikasi profil yang digunakan, harus unik.

    --hierarchy-auth HIERARCHY_AUTH

  2. Buat objek kunci ECC.

    sudo tpm2_ptool addkey —algorithm=ecc256 —label=greengrass —userpin=****** —key-label=greenkey
    --label LABEL

    Label token untuk mengimpor kunci juga.

    --key-label KEY_LABEL

    Label kunci yang diimpor. Default ke nilai integer.

    --id ID

    Id kunci. Default ke 8 byte acak dari hex.

    --attr-always-authenticate

    Menetapkan atribut CKA_ALWAYS_AUTHENTICATE ke CK_TRUE.

    --hierarchy-auth HIERARCHY_AUTH

    Hierarchyauth, diperlukan untuk pobjects sementara.

    --sopin SOPIN

    Pin Administrator.

    --userpin USERPIN

    Pin Pengguna.

    --algorithm

    {rsa1024, rsa2048, rsa3072, rsa4096, aes128, aes256, ecc224, ecc256, ecc384, ecc521, hmac: sha1, hmac: sha256, hmac: sha384, hmac: sha512}

    Jenis kuncinya.

  3. Ekspor objek TPM2 -TSS dari token untuk menangkap data otentikasi.

    yaml_ecc0=$(sudo tpm2_ptool export —label="greengrass" —key-label="greenkey" —userpin="******")

    Contoh output:

    > echo $yaml_ecc0 object-auth: 706c1cad8a5238871b30149705255926 primary-object: auth: '' hierarchy: owner is_transient: false
    catatan

    Anda juga akan menemukan file bernama `greenkey.pem` yang merupakan Kunci TSS2 Pribadi di direktori tempat Anda menjalankan perintah ini. Gunakan ini untuk menghasilkan CSR dengan penyedia openssl tpm2. File TSS2 PRIVATE KEY dilindungi oleh TPM dan tidak dapat digunakan pada mesin lain. Untuk informasi selengkapnya tentang TSS2 kunci dengan OpenSSL, lihat Menyimpan Kunci Pribadi atau Publik.

  4. Tangkap data otentikasi untuk kunci pribadi TSS.

    auth_ecc0=$(echo "$yaml_ecc0" | grep "object-auth" | cut -d' ' -f2-)

Langkah 4: Hasilkan Permintaan Penandatanganan Sertifikat (CSR)

Pada langkah ini, Anda akan menggunakan kunci pribadi TPM2 yang dilindungi untuk menghasilkan CSR.

  1. Hasilkan CSR menggunakan TPM2 penyedia.

    sudo openssl req -new -provider tpm2 -provider base -key greenkey.pem -passin "pass:$auth_ecc0" -out "$H"$HOSTNAME".csr

    Saat diminta, berikan informasi yang diperlukan untuk CSR Anda, termasuk:

    • Nama Negara (kode 2 huruf)

    • Nama Negara Bagian atau Provinsi

    • Nama Lokal

    • Nama Organisasi

    • Nama Unit Organisasi

    • Nama Umum

    • Alamat Email

    Atau, Anda dapat menyediakan file konfigurasi OpenSSL untuk pembuatan tanpa pengawasan. Untuk informasi selengkapnya, lihat Dokumentasi OpenSSL.

  2. Jika Anda tidak membuat CSR di mesin yang sama, salin CSR yang dihasilkan ke mesin yang memiliki AWS kredensialnya dikonfigurasi.

Langkah 5: Buat sertifikat benda

Buat sertifikat AWS IoT sesuatu. Untuk informasi selengkapnya tentang cara membuat sertifikat sesuatu, lihatBuat sertifikat benda.

Langkah 6: Impor sertifikat barang ke TPM

  1. Salin sertifikat benda ke perangkat.

  2. Tambahkan sertifikat benda ke token Greengrass.

    sudo tpm2_ptool addcert --label=greengrass --key-label=greenkey device.pem.crt

    Opsi yang tersedia adalah sebagai berikut:

    --help

    Tampilkan pesan bantuan ini dan keluar.

    --label LABEL

    Label profil untuk dihapus.

    --key-label KEY_LABEL

    Label kunci pribadi terkait.

    --key-id KEY_ID

    Id kunci pribadi terkait di hex.

    cert

    Sertifikat PEM x509 untuk ditambahkan.

Langkah 7: Tangkap URL objek PKCS #11

Kami akan menggunakan yang p11tool disediakan dari gnutls-bin paket untuk mendapatkan URL dan objek token PKCS #11. URLs

  1. Tangkap URL token untuk token Greengrass.

    TOKEN=sudo p11tool --list-token-urls | grep "token=greengrass"
  2. Dapatkan objek URLs untuk token Greengrass. Gunakan pin yang sama dengan yang Anda gunakan pada Langkah 3.

    sudo p11tool --login --list-all "${TOKEN}"

    Contoh output:

    Token 'greengrass' with URL 'pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass' requires user PIN Enter PIN: WARNING: Needed CKA_VALUE but didn't find encrypted blob Object 0: URL: pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass;id=%39%32%37%65%61%64%61%39%31%32%35%31%61%35%37%31;object=greenkey;type=private Type: Private key (EC/ECDSA-SECP256R1) Label: greenkey Flags: CKA_PRIVATE; CKA_NEVER_EXTRACTABLE; CKA_SENSITIVE; ID: 39:32:37:65:61:64:61:39:31:32:35:31:61:35:37:31 Object 1: URL: pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass;id=%39%32%37%65%61%64%61%39%31%32%35%31%61%35%37%31;object=greenkey;type=public Type: Public key (EC/ECDSA-SECP256R1) Label: greenkey ID: 39:32:37:65:61:64:61:39:31:32:35:31:61:35:37:31 Object 2: URL: pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass;id=%39%32%37%65%61%64%61%39%31%32%35%31%61%35%37%31;object=greenkey;type=cert Type: X.509 Certificate (EC/ECDSA-SECP256R1) Expires: Fri Dec 31 18:59:59 2049 Label: greenkey ID: 39:32:37:65:61:64:61:39:31:32:35:31:61:35:37:31
  3. Tangkap URL objek untuk kunci pribadi dan sertifikat.

Langkah 8: Konfigurasikan dan instal Greengrass dengan dukungan TPM2

  1. Konfigurasikan sertifikat benda. Untuk informasi selengkapnya lihat Mengonfigurasi sertifikat benda.

  2. Lengkapi instruksi untuk Menginstal perangkat lunak AWS IoT Greengrass Core dengan kunci pribadi dan sertifikat di HSM diInstal perangkat lunak AWS IoT Greengrass Core. Kemudian, gunakan langkah-langkah berikut untuk mengonfigurasi instalasi Anda untuk memanfaatkan TPM2 melalui antarmuka PKCS #11.

  3. Verifikasi bahwa komponen penyedia PKCS #11 telah diunduh dan disimpan di lokasi penginstal Greengrass Anda.

  4. Gunakan editor teks untuk membuat file konfigurasi bernama config.yaml yang akan disediakan ke penginstal. Misalnya, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

    nano GreengrassInstaller/config.yaml
  5. Salin konten YAML berikut ke dalam file. File konfigurasi sebagian ini menentukan parameter sistem, parameter inti Greengrass, dan parameter penyedia PKCS #11.

    --- system: certificateFilePath: "pkcs11:model=SW%20%20%20TPM%00%00%00%00%00%00%00%00;manufacturer=IBM;serial=0000000000000000;token=greengrass;id=%34%35;object=greenkey;type=cert" privateKeyPath: "pkcs11:model=SW%20%20%20TPM%00%00%00%00%00%00%00%00;manufacturer=IBM;serial=0000000000000000;token=greengrass;id=%34%35;object=greenkey;type=private" rootCaPath: "/greengrass/v2/AmazonRootCA1.pem" rootpath: "/greengrass/v2" thingName: "myThing" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.14.0" configuration: awsRegion: "us-east-1" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com" iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com" aws.greengrass.crypto.Pkcs11Provider: configuration: name: "tpm2_pkcs11" library: "/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so" slot: 1 userPin: "123456"
  6. Edit file dengan parameter khusus untuk instalasi Anda.

    1. Perbarui certificateFilePath dan privateKeyPath dengan Pembaruan certificateFilePath dan privateKeyPath dengan URL PKCS #11 yang ditangkap di Langkah 7.

    2. Perbarui Anda iotDataEndpoint dan iotCredEndpoint berdasarkan AWS IoT titik akhir Anda.

    3. Dalam aws.greengrass.crypto.Pkcs11Provider konfigurasi, perbarui pustaka berdasarkan platform Anda.

      catatan

      Contoh yang ditampilkan adalah untuk X86_64. Jalur file akan serupa untuk ARM64 perangkat.

  7. Selesaikan langkah-langkah instalasi Greengrass di. Instal perangkat lunak AWS IoT Greengrass Core

Langkah 9: Verifikasi instalasi

Pada langkah ini, Anda akan memverifikasi bahwa Greengrass berjalan dengan baik dengan integrasi. TPM2

  1. Periksa status layanan Greengrass.

    sudo systemctl status greengrass.service
  2. Lihat log Greengrass untuk memastikan tidak ada kesalahan.

    sudo tail -f /greengrass/v2/logs/greengrass.log
  3. Verifikasi bahwa perangkat Anda muncul sebagai terhubung di AWS IoT konsol.

    1. Masuk ke konsol AWS IoT Greengrass tersebut.

    2. Di bawah Kelola, perluas perangkat Greengrass, dan pilih Perangkat inti.

    3. Konfirmasikan perangkat Anda terhubung. Status perangkat akan ditampilkan HEALTHY jika terhubung. Untuk informasi selengkapnya, lihat Periksa status perangkat inti Greengrass.

Pemecahan Masalah

Jika Anda mengalami masalah selama penyiapan atau pengoperasian perangkat Greengrass yang TPM2 diaktifkan, coba langkah pemecahan masalah berikut.

  • Periksa file log Greengrass utama.

    sudo tail -f /greengrass/v2/logs/greengrass.log
  • Verifikasi konfigurasi penyedia PKCS #11.

    sudo cat /greengrass/v2/config/effectiveConfig.yaml
  • Pastikan TPM2 layanan berjalan.

    sudo systemctl status tpm2-abrmd.service
  • Verifikasi bahwa TPM2 kuncinya dapat diakses.

    sudo pkcs11-tool —module /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -l -p 123456 —list-objects
  • Jika OS Anda diatur dengan enkripsi disk penuh dengan kunci root TPM2 penyimpanan seperti Clevis atau systemd-cryptenroll, pastikan Anda tidak menggunakan pegangan persisten yang sama yang digunakan oleh alat ini. Menggunakan pegangan persisten yang sama dapat memengaruhi mekanisme enkripsi disk Anda. Untuk memeriksa semua pegangan persisten yang dibuat dan digunakan, jalankan perintah berikut

    sudo tpm2_getcap handles-persistent

Langkah selanjutnya

Sekarang setelah Anda berhasil mengintegrasikan perangkat inti Greengrass Anda, Anda dapat: TPM2

Untuk informasi selengkapnya tentang keamanan di perangkat Greengrass, lihat. Keamanan di AWS IoT Greengrass