====== Experiment: Sběr dat z TPM modulu ====== Tento návod je již zastaralý. Použijte prosím verzi uvedenou na [[https://crocs.fi.muni.cz/tpm | https://crocs.fi.muni.cz/tpm]]. {{ :public:research:tmp_2.jpg?150|}} V rámci [[main | 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. [[https://en.wikipedia.org/wiki/Trusted_Computing | 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í. Pokud budete mít s čímkoli během experimentu problém (např. příkaz vrací divnou chybu, nedaří se mi stáhnout požadovaný program...), neváhejte nám napsat, pomůžeme Vám problém vyřešit. ===== 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. **Incializace se skládá ze dvou kroků: ** - 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. {{ :public:research:tpm_prepare_man.png?600 |}} ==== 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íčů ===== {{ :public:research:tpm_keys.png?150|}} 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 [[https://www.microsoft.com/en-us/download/details.aspx?id=52487 | nástroj PCPTool]] (zdrojové kódy) vyvíjený přímo firmou Microsoft. Pro spuštění jsou potřeba knihovny [[https://www.microsoft.com/en-us/download/details.aspx?id=53840 | 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 [[https://www.fi.muni.cz/~xsvenda/PCPTool.zip | 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) {{ :public:research:cmd_getekcert.png?800 |}} ==== Instrukce pro majitele počítačů s OS Linux ==== - Nainstalujte si balík simple-tpm-pkcs11: //sudo apt install simple-tpm-pkcs11// ([[https://github.com/ThomasHabets/simple-tpm-pk11 | 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 ===== {{ :public:research:500px-2-dice-icon.svg.png?100|}} 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 [[https://is.muni.cz/auth/dok/depository_in?lang=cs;vybos_vzorek=4085 | Ú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 :)