Experiment: Sběr dat z TPM modulu
V rámci laboratoře CRoCS na Fakultě Informatiky provádíme výzkum bezpečnosti kryptografického hardware TPM (Trusted Platform Module), který je nyní umisťován do většiny notebooku a PC. Jedná se de facto o čipovou kartu, která umožňuje mimo jiné generovat a ukládat kryptografické klíče nebo poskytovat základ pro tzv. Trusted boot. Tato stránka popisuje dva základní experimenty, kterými vygenerujete testovací podkladová data z vašeho TPM čipu a umožníte nám jejich výzkumné zpracování.
Základní informace
Příprava experimentu:
- Je nutné mít TPM čip aktivovaný v BIOSu a inicializovaný v OS (viz. Inicializace a příprava čipu níže)
Data sbíraná v rámci experimentu:
- Veřejné klíče TPM (Endorsement key, Root Storage key)
- 1000 veřejných RSA klíčů generovaných na TPM čipu
- 100MB náhodných dat produkovaných TPM čipem
Pozn. V rámci experimentu nesbíráme žádné vaše privátní klíče. Z principu konstrukce TPM to ani není možné - exportovat lze pouze veřejnou část RSA klíčů.
Inicializace a příprava čipu
Je možné že TPM čip již aktivně využíváte (např. pro Bitlocker), ale mnohem pravděpodobněji jej máte ve svém notebooku nebo PC zcela nevyužit a zatím neinicializovaný. V případě, že TPM čip již využíváte nebo máte počítač s více operačnímy systémy (dual boot), kontaktujte nás prosím před dalšími kroky, abyste jste si čip nedopatřením neinicializovali dvakrát.
- Povolení TPM čipu v BIOSU
- restartujte počítač, vstupte do BIOSu, nalezněte sekci TPM nebo Security chip
- TPM se může nacházet ve třech stavech: zcela vypnuto / neaktivní / aktivní. Zvolte možnost aktivní.
- Potvrzení “vlastnictví” (ownership) ve vašem operačním systému (viz. návod níže)
Instrukce pro majitele počítačů s OS Windows
V případě, že máte po spuštění tpm.msc aktivní nabídku Actions→Prepare the TPM…, tak čip není zatím inicializován. Klikněte na Prepare the TPM a následujte instrukce (bude vyžadovat potvrzení a reboot počítače). V případě že je nabídka Prepare the TPM šedá, čip již máte inicializován a můžete pokračovat dál.
Instrukce pro majitele počítačů s OS Linux
Připravte si TPM pomocí následujících příkazů:
#!/bin/bash tpm_takeownership # zapamatujte si zvolene owner password tpm_changeownerauth -s -r # nastavi SRK password na specialni hodnotu Well Known Secret (nemusite si pamatovat)
Sběr RSA klíčů
TPM čip umožňuje vygenerovat nový testovací 2048b RSA klíč a exportovat jeho veřejnou část. Pro potřeby experimentu vygenerujeme (a zase hned smažeme) 1000 takových nových klíčů a uložíme si jejich veřejnou část pro analýzu.
Instrukce pro majitele počítačů s OS Windows
Pro generování klíčů lze využít nástroj PCPTool (zdrojové kódy) vyvíjený přímo firmou Microsoft. Pro spuštění jsou potřeba knihovny vc_redist.x86.exe z MS Visual Studia 2015. Pro jednoduchost jsme pro vás všechno připravili v jediném balíku zde: https://www.fi.muni.cz/~xsvenda/PCPTool.zip
- Stáhněte a rozbalte si balík PCPTool.zip
- Spustťe script gatherKeys1000.bat (očekávaná doba běhu je zhruba 3-7 hodin, můžete generování přerušit a spustit znovu)
- Zašlete nám výsledný soubor TPMkeys.txt
PCPTool.exe GetVersion >> TPMkeys.txt for /l %%x in (1, 1, 10000) do ( PCPTool.exe CreateKey test >> TPMkeys.txt echo 'Key ' %%x ' generated' )
- Spustťe příkazový řádek cmd s administrátorskými právy
- Spustťe následující sekvenci příkazů a zašlete nám prosím soubory TPM_EK.txt a EKCert.p7b
PCPTool.exe GetVersion >> TPM_EK.txt PCPTool.exe GetEK >> TPM_EK.txt PCPTool.exe GetSRK >> TPM_EK.txt PCPTool.exe GetEKCert # uložte certifikát do souboru EKCert.p7b včetně všech dalších certifikátů v cestě (viz. obrázek)
Instrukce pro majitele počítačů s OS Linux
- Nainstalujte si balík simple-tpm-pkcs11: sudo apt install simple-tpm-pkcs11 ( GitHub)
- Spustťe v cyklu příkaz stpm-keygen (viz. script níže)
- Zašlete nám výsledný soubor TPMkeys.txt
#!/bin/bash tpm_version >> TPMkeys.txt for i in `seq 1 1000`; do stpm-keygen -o test.key cat test.key >> TPMkeys.txt echo 'Key ' $i ' generated' done
Sběr náhodných dat
TPM modul poskytuje možnost generovat opravdu náhodná data využitelná např. pro tvorbu kryptografických klíčů. Pro otestování jejich kvality na vašem TPM čipu vygenerujeme 100MB dat a následně podrobíme statistickému testování (baterie STS NIST, Dieharder a TestU01).
Instrukce pro majitele počítačů s OS Windows
- Spustťe script randomData.bat (očekávaná doba běhu je zhruba 1-2 hodiny)
- Zašlete nám výsledný soubor TPM_RNG.txt (100MB, např. prostřednictvím Úschovny ISu)
PCPTool.exe GetVersion >> TPM_RNG.txt TPMTool.exe RANDOM 100000000 >> TPM_RNG.txt
Instrukce pro majitele počítačů s OS Linux
Připravujeme, vydržte prosím