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í.
Příprava experimentu:
Data sbíraná v rámci experimentu:
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íčů.
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.
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.
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)
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.
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
PCPTool.exe GetVersion >> TPMkeys.txt for /l %%x in (1, 1, 10000) do ( PCPTool.exe CreateKey test >> TPMkeys.txt echo 'Key ' %%x ' generated' )
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)
#!/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
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).
PCPTool.exe GetVersion >> TPM_RNG.txt TPMTool.exe RANDOM 100000000 >> TPM_RNG.txt
Připravujeme, vydržte prosím