Přístup dTPM pro Azure IoT Edge pro Linux ve Windows
Platí pro: IoT Edge 1,4
Důležité
podporovanou verzí je IoT Edge 1.4. Pokud používáte starší verzi, přečtěte si článek Aktualizace IoT Edge.
Čip TPM (Trusted Platform Module) je zabezpečený kryptografický procesor určený k provádění kryptografických operací. Tato technologie je navržená tak, aby poskytovala hardwarové funkce související se zabezpečením. Virtuální počítač Azure IoT Edge pro Linux on Windows (EFLOW) nemá k virtuálnímu počítači připojené virtuální čipy TPM. Uživatel ale může povolit nebo zakázat funkci průchodu čipem TPM, která virtuálnímu počítači EFLOW umožňuje používat čip TPM hostitelského operačního systému Windows. Funkce předávání TPM umožňuje dva hlavní scénáře:
- Použití technologie TPM pro IoT Edge zřizování zařízení pomocí služby Device Provisioning (DPS)
- Přístup k kryptografickým klíčům uloženým v čipu TPM jen pro čtení.
Tento článek popisuje, jak v jazyce C# vyvinout vzorový kód pro čtení kryptografických klíčů uložených v čipu TPM zařízení.
Důležité
Přístup ke klíčům TPM je omezený na jen pro čtení. Pokud chcete zapisovat klíče do čipu TPM, musíte to udělat z hostitelského operačního systému Windows.
Požadavky
Hostitelský operační systém Windows s čipem TPM nebo vTPM (ig pomocí virtuálního počítače s hostitelským operačním systémem Windows).
Virtuální počítač EFLOW s povoleným průchodem TPM Pomocí relace PowerShellu se zvýšenými oprávněními povolte předávání TPM pomocí příkazu
Set-EflowVmFeature -feature "DpsTpm" -enable
. Další informace najdete v tématu Set-EflowVmFeature pro povolení předávání TPM.Ujistěte se, že je index nv (výchozí index=3001) inicializován s 8 bajty dat. Výchozí hodnota AuthValue používaná ukázkou odpovídá {1,2,3,4,5,6,7,8} ukázce nv (Windows) v TSS. Knihovny MSR při zápisu do čipu TPM. Před čtením z virtuálního počítače EFLOW musí veškerá inicializace indexu proběhnout na hostiteli s Windows. Další informace o ukázkách čipu TPM najdete v tématu TSS.MSR.
Upozornění
Povolení předávání čipem TPM do virtuálního počítače může zvýšit bezpečnostní rizika.
Vytvoření spustitelného souboru dTPM
Následující kroky ukazují, jak vytvořit ukázkový spustitelný soubor pro přístup k indexu TPM z virtuálního počítače EFLOW. Další informace o předávání EFLOW TPM najdete v tématu Azure IoT Edge pro Linux na Zabezpečení Windows.
Otevřete Visual Studio 2019 nebo 2022.
Vyberte Vytvořit nový projekt.
V seznamu šablon zvolte Konzolová aplikace a pak vyberte Další.
Vyplňte pole Název projektu, Umístění a Název řešení a pak vyberte Další.
Zvolte cílovou architekturu. Preferuje se nejnovější verze .NET 6.0 LTS. Po výběru cílové architektury vyberte Vytvořit. Visual Studio vytvoří nové řešení konzolové aplikace.
V Průzkumník řešení klikněte pravým tlačítkem na název projektu a vyberte Spravovat balíčky NuGet.
Vyberte Procházet a pak vyhledejte
Microsoft.TSS
. Další informace o tomto balíčku najdete v tématu Microsoft.TSS.V seznamu zvolte balíček Microsoft.TSS a pak vyberte Nainstalovat.
Upravte soubor Program.cs a nahraďte jeho obsah vzorovým kódem EFLOW TPM – Program.cs.
Vyberte Sestavit>řešení sestavení a sestavte projekt. Ověřte, že sestavení proběhlo úspěšně.
V Průzkumník řešení klikněte pravým tlačítkem na projekt a pak vyberte Publikovat.
V průvodci publikováním zvolte Složka složky>. Vyberte Procházet a zvolte výstupní umístění pro vygenerovaný spustitelný soubor. Vyberte Dokončit. Po vytvoření profilu publikování vyberte Zavřít.
Na kartě Publikovat vyberte odkaz Zobrazit všechna nastavení . Změňte následující konfigurace a vyberte Uložit.
- Cílový modul runtime: linux-x64.
- Režim nasazení: Samostatný.
Vyberte Publikovat a počkejte, až se vytvoří spustitelný soubor.
Pokud publikování proběhne úspěšně, měly by se ve výstupní složce zobrazit vytvořené nové soubory.
Zkopírování a spuštění spustitelného souboru
Po vytvoření spustitelného souboru a souborů závislostí je potřeba zkopírovat složku do virtuálního počítače EFLOW. Následující kroky ukazují, jak zkopírovat všechny potřebné soubory a spustit spustitelný soubor uvnitř virtuálního počítače EFLOW.
Spusťte relaci PowerShellu se zvýšenými oprávněními pomocí příkazu Spustit jako správce.
Změňte adresář na nadřazenou složku, která obsahuje publikované soubory. Například pokud jsou publikované soubory ve složce TPM v adresáři
C:\Users\User
. Pomocí následujícího příkazu můžete přejít do nadřazené složky.cd "C:\Users\User"
Vytvořte soubor tar se všemi soubory vytvořenými v předchozích krocích. Další informace o podpoře tar v PowerShellu najdete v tématu Tar and Curl Přichází do Windows. Pokud máte například všechny soubory ve složce TPM, můžete k vytvoření souboru TPM.tar použít následující příkaz.
tar -cvzf TPM.tar ".\TPM"
Po úspěšném vytvoření souboru TPM.tar pomocí
Copy-EflowVmFile
rutiny zkopírujte vytvořený soubor tar do virtuálního počítače EFLOW. Například pokud máte název souboru tarTPM.tar v adresářiC:\Users\User
. Ke zkopírování do virtuálního počítače EFLOW můžete použít následující příkaz.Copy-EflowVmFile -fromFile "C:\Users\User\TPM.tar" -toFile "/home/iotedge-user/" -pushFile
Připojte se k virtuálnímu počítači EFLOW.
Connect-EflowVm
Změňte adresář na složku, do které jste zkopírovali soubor tar , a zkontrolujte, jestli je soubor dostupný. Pokud jste použili výše uvedený příklad, při připojení k virtuálnímu počítači EFLOW už budete v kořenové složce iotedge-user . Spuštěním
ls
příkazu zobrazte seznam souborů a složek.Spuštěním následujícího příkazu extrahujte veškerý obsah ze souboru tar .
tar -xvzf TPM.tar
Po extrakci by se měla zobrazit nová složka se všemi soubory TPM.
Změňte adresář na složku TPM .
cd TPM
Přidejte oprávnění ke spustitelnému hlavnímu spustitelnému souboru. Pokud byl například název projektu TPMRead, hlavní spustitelný soubor má název TPMRead. Spuštěním následujícího příkazu ho spusťte, aby byl spustitelný.
chmod +x TPMRead
Pokud chcete vyřešit problém s globalizací icu, spusťte následující příkaz. Pokud je například název vašeho projektu TPMTest , spusťte:
sed -i '/"configProperties": /a \\t"System.Globalization.Invariant\": true,' TPMTest.runtimeconfig.json
Posledním krokem je spuštění spustitelného souboru. Pokud je například název projektu TPMTest, spusťte následující příkaz:
./TPMTest
Zobrazený výstup by měl vypadat přibližně takto: