Bagikan melalui


Akses dTPM untuk Azure IoT Edge untuk Linux di Windows

Berlaku untuk:Tanda centang IoT Edge 1.5 IoT Edge 1.5

Penting

IoT Edge 1.5 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai per 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.

Chip modul platform tepercaya (TPM) adalah prosesor kriptografi aman yang melakukan operasi kriptografi. Teknologi ini menyediakan fungsi keamanan berbasis perangkat keras. Komputer virtual Azure IoT Edge untuk Linux di Windows (EFLOW) tidak memiliki TPM virtual yang terpasang. Namun, Anda dapat mengaktifkan atau menonaktifkan fitur passthrough TPM, yang memungkinkan komputer virtual EFLOW menggunakan TPM OS host Windows. Fitur passthrough TPM memungkinkan Anda:

  • Menggunakan teknologi TPM untuk provisi perangkat IoT Edge dengan Device Provisioning Service (DPS)
  • Mendapatkan akses baca-saja ke kunci kriptografi yang disimpan di TPM

Artikel ini menunjukkan kepada Anda cara menulis sampel kode C# untuk membaca kunci kriptografi yang disimpan di TPM perangkat.

Penting

Akses ke kunci TPM terbatas pada baca-saja. Untuk menulis kunci ke TPM, lakukan dari OS host Windows.

Prasyarat

  • OS host Windows dengan TPM atau vTPM (jika Anda menggunakan komputer virtual OS host Windows).

  • Komputer virtual EFLOW dengan Passthrough TPM diaktifkan. Dalam sesi PowerShell yang ditingkatkan, jalankan Set-EflowVmFeature -feature "DpsTpm" -enable untuk mengaktifkan passthrough TPM. Untuk informasi selengkapnya, lihat Set-EflowVmFeature untuk mengaktifkan passthrough TPM.

  • Pastikan indeks NV (indeks default=3001) diinisialisasi dengan 8 byte data. Default AuthValue yang digunakan oleh contoh adalah {1,2,3,4,5,6,7,8}, yang cocok dengan contoh NV (Windows) dalam pustaka TSS.MSR saat menulis ke TPM. Inisialisasi semua indeks pada host Windows sebelum membaca dari VM EFLOW. Untuk informasi selengkapnya tentang sampel TPM, lihat TSS.MSR.

    Peringatan

    Mengaktifkan passthrough TPM ke komputer virtual dapat meningkatkan risiko keamanan.

Membuat dTPM yang dapat dieksekusi

Ikuti langkah-langkah ini untuk membuat sampel yang dapat dieksekusi untuk mengakses indeks TPM dari EFLOW VM. Untuk informasi selengkapnya tentang passthrough TPM EFLOW, lihat Azure IoT Edge untuk Linux di Keamanan Windows.

  1. Buka Visual Studio 2019 atau 2022.

  2. Pilih Buat proyek baru.

  3. Pilih Aplikasi Konsol dalam daftar templat, lalu pilih Berikutnya.

    Visual Studio membuat solusi baru

  4. Isi bidang Nama Proyek, Lokasi, dan Nama Solusi , lalu pilih Berikutnya.

  5. Pilih kerangka kerja target. Versi .NET 6.0 LTS terbaru lebih disukai. Setelah Anda memilih kerangka kerja target, pilih Buat. Visual Studio membuat solusi aplikasi konsol baru.

  6. Di Penjelajah Solusi, klik kanan nama proyek dan pilih Kelola Paket NuGet.

  7. Pilih Telusuri, lalu cari Microsoft.TSS. Untuk informasi selengkapnya tentang paket ini, lihat Microsoft.TSS.

  8. Pilih paket Microsoft.TSS dari daftar, lalu pilih Instal.

    Cuplikan layar Visual Studio memperlihatkan cara menambahkan paket NuGet.

  9. Edit file Program.cs , dan ganti konten dengan kode sampel TPM EFLOW - Program.cs.

  10. Pilih Bangun>solusi Build untuk membangun proyek. Verifikasi bahwa proses build berhasil.

  11. Di Penjelajah Solusi, klik kanan proyek, lalu pilih Terbitkan.

  12. Di wizard Terbitkan, pilih Folder>Folder. Pilih Telusuri, dan pilih lokasi output untuk file yang dapat dieksekusi yang akan dihasilkan. Pilih Selesai. Setelah profil publikasi dibuat, pilih Tutup.

  13. Pada tab Terbitkan , pilih Perlihatkan semua tautan pengaturan . Ubah konfigurasi berikut lalu pilih Simpan.

    • Runtime Target: linux-x64.
    • Mode penyebaran: Mandiri.

    Cuplikan layar opsi penerbitan.

  14. Pilih Terbitkan, lalu tunggu hingga executable dibuat.

Jika penerbitan berhasil, Anda akan melihat file baru di folder output Anda.

Salin dan jalankan executable

Setelah file yang dapat dieksekusi dan file dependensi dibuat, Anda perlu menyalin folder ke komputer virtual EFLOW. Langkah-langkah berikut menunjukkan kepada Anda cara menyalin semua file yang diperlukan dan cara menjalankan yang dapat dieksekusi di dalam komputer virtual EFLOW.

  1. Mulai sesi PowerShell yang ditinggikan menggunakan Jalankan sebagai Administrator.

  2. Ubah direktori ke folder induk yang berisi file yang diterbitkan. Misalnya, jika file yang diterbitkan berada di bawah folder TPM di direktori C:\Users\User. Anda dapat menggunakan perintah berikut untuk mengubah ke folder induk.

    cd "C:\Users\User"
    
  3. Buat file tar dengan semua file yang dibuat di langkah sebelumnya. Misalnya, jika Anda memiliki semua file di bawah folder TPM, Anda dapat menggunakan perintah berikut untuk membuat file TPM.tar .

     tar -cvzf TPM.tar ".\TPM"
    
  4. Setelah file TPM.tar berhasil dibuat, gunakan Copy-EflowVmFile cmdlet untuk menyalin file tar yang dibuat ke VM EFLOW. Misalnya, jika Anda memiliki nama file tar TPM.tar di direktori C:\Users\User. Anda dapat menggunakan perintah berikut untuk menyalin ke VM EFLOW.

    Copy-EflowVmFile -fromFile "C:\Users\User\TPM.tar" -toFile "/home/iotedge-user/" -pushFile
    
  5. Sambungkan ke komputer virtual EFLOW.

    Connect-EflowVm
    
  6. Ubah direktori ke folder tempat Anda menyalin file tar dan periksa apakah file tersedia. Jika Anda menggunakan contoh sebelumnya, saat tersambung ke VM EFLOW, Anda sudah berada di folder akar pengguna iotedge . Jalankan ls perintah untuk mencantumkan file dan folder.

  7. Jalankan perintah berikut untuk mengekstrak semua konten dari file tar .

    tar -xvzf TPM.tar
    
  8. Setelah ekstraksi, Anda akan melihat folder baru dengan semua file TPM.

  9. Ubah direktori ke folder TPM .

    cd TPM
    
  10. Tambahkan izin yang dapat dieksekusi ke file utama yang dapat dieksekusi. Misalnya, jika nama proyek Anda adalah TPMRead, executable utama Anda bernama TPMRead. Jalankan perintah berikut untuk membuatnya dapat dieksekusi.

    chmod +x TPMRead
    
  11. Untuk mengatasi masalah globalisasi ICU, jalankan perintah berikut. Misalnya, jika nama proyek Anda adalah TPMTest run:

     sed -i '/"configProperties": /a \\t"System.Globalization.Invariant\": true,' TPMTest.runtimeconfig.json
    
  12. Langkah terakhir adalah menjalankan file yang dapat dieksekusi. Misalnya, jika nama proyek Anda adalah TPMTest, jalankan perintah berikut:

    ./TPMTest
    

    Anda akan melihat output yang mirip dengan yang berikut ini.

    Cuplikan layar yang memperlihatkan output dTPM EFLOW.

Langkah berikutnya

Pelajari cara mengembangkan modul IoT Edge dengan kontainer Linux menggunakan IoT Edge untuk Linux di Windows.