====== 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 :)