Jak bylo naznačeno v závěru, přijde mi to jako SbO. Pokud prostě ta data jsou někdde v nezašifrované podobě, měl bych počítat s tím, že každý s přístupem k zařízení se k nim může dostat. U procesoru to sice bude mít asi těžší, ale pořád bych to nepovažoval za nemožné. Koncepčním řešením je při hibernaci a uspávání klíče mazat... Tuším, že LUKS to dnes již umí.
Jako další bariéra to je určitě dobré, ale neměla by na tom bezpečnost stát.
To tezko. Mezi ukladanim do RAM a do registru procesoru je asi takovy rozdil jako mezi psanim si PINu na papirek a pamatovanim si ho.
Tohle je navic ochrana proti specifickemu utoku, kdy se odstrihne bezici pocitac s rozsifrovanym oddilem, a analyzuje se obsah RAM, ktery si ty data drzi pekne dlouho i po odpojeni napajeni. Pripadne se da jeste zmrazit, coz tu dobu uchovani dat jeste prodlouzi.
Pokud mi někdo rozebere mozek a vydoluje z něj můj PIN, tak mi to už bude asi celkem jedno... Pokud by mi někdo rozebral notebook a vyndal z něj klíče (a to třeba i z procesoru, ačkoli by to asi nebylo zdaleka tak snadné jako z RAM), vadit mi to bude. Navíc procesor je asi mnohem lépe zdokumentovaný než lidský mozek, ke kterému "nemáme zdrojový kód".
- tak ako treba prava roota na citanie celej pamate tak ich predsa moze mat utocnik aj na citanie registrov
- neviem ci ste to niekedy robili ale najst KDE v tej ramke ten kluc naozaj je, pri troche snahy programatora, dost tazke. Ked to dam do registrov rovno viem kde to hladat?
Neviem, nejako sa mi to nepozdava.
Na čtení dat z RAM nejsou při cold boot attack potřeba práva roota na systému, na který je útočeno. Registry procesoru jsou však při resetu automaticky vymazány hardwarem. Při útoku pomocí FireWire je opět možné číst RAM, ale ne registry procesoru.
Najít ten klíč není moc těžké. Stačí najít, kde sídlí interrupt handler pro jádro, tam najít potřebnou CryptoAPI funkci a ta už najde umístění těch struktur včetně klíče. Klidně se to dá udělat tak, že ten interrupt handler upravíte (nahrajete vlastní) a celou RAMku načtete do počítače a spustíte.
- Tipujem ze to teda musia byt velmi bezpecne data ked musia byt tak chranene
- Tak si tu ramku prepiste niecim inym pri shutdowne obzvlast v oblasti uloziska klucov
- Kto povedal ze na cryptovanie sa musi pouzivat nejake CryptoAPI jadra?
- Obzvlast kriticke udaje sa predsa nekryptuju v jadre. Preto je mi to cele podozrive, v takychto SW sa tie kluce hladaju tazsie. Tak nam chcu povedat dajte to do hentoho registra my si to tam potom nejako najdeme?
Samozřejmě, že při normálním vypínání se ten klíč z RAMky vyhodí, ale když někdo odpojí proud (vytáhne baterii, stiskne reset), tak s tím neuděláte nic.
Proč by se obzvlášť kritické věci nešifrovaly v jádře? Jádro má nejvyšší oprávnění a pokud je prolomené, nepomůže vám ani svěcená voda ani jiný obskurní způsob skrývání klíčů v aplikaci, protože jádro má přístup k celé aplikaci včetně toho, že může libovolně sledovat, co ta aplikace dělá, i libovolně tu aplikaci kopírovat nebo ukládat a jediné řešení bezpečnější než samotné jádro je speciální šifrovací hardware, který odmítne vydat klíč, ale ten ta data stejně rozšifruje, když mu o to jádro řekne.
> Při útoku pomocí FireWire je opět možné číst RAM, ale ne registry procesoru.
Při útoku pomocí FireWire je možné do paměti i zapisovat. A šoupnout na vhodné místo v paměti (tedy někam do kernelu, někam kde se to brzy spustí) kus kódu co ten klíč do paměti vykopíruje je vcelku jednoduché.
Takže přes Firewire lze číst i registry :)
Tahle vec zavisi na dvou dost diskutabilnich predpokladech:
1) reset nastavi registry do nejakeho definovaneho stavu. IA-32 garantuje pomerne hodne veci o stavu GPR po resetu, ovsem stav ladicich registru po resetu neni specifikovan, coz klidne muze znamenat, ze v nich zustane stale totez.
2) registry CPU se nedaji z CPU vycist z vnejsku. Jeden by se pak ptal, k cemu presne se tedy da do toho CPU pres JTAG rozhrani, ktere ma, pristupovat, kdyz ne k jeho architekturne viditelnym registrum. Existence relativne levneho komercniho produktu slouziciho k in-circuit ladeni IA-32 kodu pres JTAG myslim dokazuje, ze to jde.
Zaujimavy pristup, ale na hardwarovy utok typu "cold boot" treba pouzit primarne hardwarovu obranu. Ako prve ma napadlo prilepit pamatove moduly do slotu epoxidom, aby sa nedali vybrat a ich obsah analyzovat mimo pocitaca a implementovat jednoduchy sposob vyhrievania pamate (pri teplotach okolo 40-50C je obsah DRAM nepouzitelny uz vacsinou po cca. 10s) napajany z baterie, ktory sa zapoji okamzite pri vypadku napajania.
Spíš by bylo vhodné si uvědomit scénář typického útoku a najít v něm koncepční chybu:
Budu s sebou vlakem převážet notebook. Ten bude suspendovaný nebo hibernovaný. Někdo mi ho ukradne a chce získat z něj data. Jakákoli SbO i HW ochrana sice bojuje za mě, ale dokud tam někde budou uloženy klíče, stále je to koncepční nedostatek a nějak obvykle půjdou dostat ven, byť třeba obtížně. Řešením je mazat klíče při suspendu a hibernaci a pak je obnovovat. Prý to LUKS již umí. Jsem na too zvědavý - chtěl bych začít šifrovat, až se mi vrátí ntb.
Zkusil jsi alespon Google nez jsi neco placnul?
www.cl.cam.ac.uk/techreports/UCAM-CL-TR-536.pdf
Opet, Google:
http://citp.princeton.edu.nyud.net/pub/coldboot.pdf
Proc ja se vubec namaham...
Vidim, ze jsi stale neklepl hrebik na hlavicku. Pokud ten stroj pri odchodu vypinas, tak se te to netyka.
Mrazeni pameti se pouziva, kdyz se nekdo dostane k tvemu bezicimu kompu v tve nepritomnosti (pripadne pritomnosti, ale drzen v uctive vzdalenosti bezpecnostnimi slozkami). Proste otevre bednu, zmrazi SDRAM, pak to rychle vypne, prehodi do special boardu a precte->ulozi na disk pro dalsi analyzu.
Co takhle si napred precist o cem to vlastne je a nekonstruovat zbytecne svoje pripady situaci.
No vyborne, to uz je lepsi. Dekuji. Podle toho to vypada, ze to doopravdy funguje.
Je ale taky pravda, ze ani kdyby to nefungovalo, tak je RAM stejne porad nebezpecna. Stacilo by pripajet napajeni primo k pameti, dokud pocitac bezi a pak vytahnout a nekde jinde precist.
To tedy nestačilo. Pájení pod napětím většinu polovodičů spolehlivě zničí. To zná z vlastní zkušenosti nejeden bastlíř začátečník.
Ale i kdybyste byl opatrný a použil extrémně nízkoteplotní pájku (např. Fieldův kov), u DRAM byste stejně nepochodil. Jakmile se zastaví refresh, paměť zapomíná. A SRAM modul jsem v běžném počítači už pěkně dlouho neviděl. Musel byste tedy za chodu ještě v počítači připájet mnohem víc pinů a přitom neudělat zádný zkrat, a okamžitě po vypnutí spustit externí refresh.
I prd velebnosti, pájení na zapnutém hw s maximem opatrnosti občas použiju (hw vývojář) a DRAMky mají i režim autorefresh, když se procesor uspí(nevím jak x86, ale ARMy a jiné embedded používané procesory), tak se může (a nemusí) přepnout paměť do režimu kdy se refreshuje sama. Detaily neznám, nikdy jsem to do hloubky nestudoval, ale v datasheetech pamětí četl. Dovedu si představit že někdo ví kdy je pro takovou operaci vhodná příležitost.
Osobně si myslím, že přečíst si data z registru CPU pomocí malého kousku kódu nebude o mnoho složitější nežli přímo z ram (vyjma cold-bootu, pokud registry maže, což by mohl).
DMA request může přijít jak ze strany procesoru, tak ze strany firewire zařízení (typicky systém řekne že chce data ze zařízení poslat např. do toho a toho regionu paměti, ale kdy, jak a jestli vůbec tam to to zařízení dodá je už na něm). Pak závisí pochopitelně na implementaci - řadič lze naprogramovat tak, aby requesty zvnějšku nebral, případně je povolil jen pro nějaká zařízení (takže např. pro získání paměti ve Windows se stačí tvářit jako jedno z těch zařízení, pro které to Windows povolí), ale na některém HW tohle lze obejít, na některém ne. Takže proti útokům přes Firewire se lze i chránit, ne vždy se pak povede obsah paměti získat.
Firewire je sběrnice rychlá, ale není (stejně jako např. PCI-e sběrnice, mimochodem existují karty co se strčí do PCI-e a pak udělají snímek paměti) zabezpečená - když se tam strčí vhodné zařízení, může si dělat "co chce".
Jde o to, ze dobrych 15 let uz v PC zadny DMA radic fakticky neni. Libovolne zarizeni na PCI muze iniciovat transakci pristupujici kamkoliv jinam po te sbernici. Konfigurace chipsetu muze urcit, kam presne muze pristupovat a jaka zarizeni "vidi" (IOMMU), ale to na PCI nemusi byt implementovano (posledni dobou je, protoze u 64b CPU to ma vyrazne vetsi vyznam), oblibene "graficke" rozhrani se od PCI fakticky lisi zejmena tim, ze je u nej neco-jako-IOMMU (GART) povinne.
Jsou registry a registry. Obecné registry se ukládají na zásobník automaticky. Speciální registry (SSE, stránkovací, koprocesor ap.) je nutné uložit ručně. Některé registry ale lze hardwarově zamknout a ukládají se teprve, když k nim aplikace pokusí přistoupit, ale záleží na operačním systému, může akci nepovolit a aplikaci sestřelit, což je přesně to, co dělá tenhle systém.
To ale plati pro normalni registry. Tresor pouziva ladici registry, ktere bezny OS nepouziva a zaroven asi pocita s jedinou touto implementaci s jedinym klicem, aby tyto registry nemusely byt nikdy nikam odlozeny, Ale to je jenom moje konstrukce z informaci v tomto clanku, chtelo by si neco o te implementaci precist vic.
Super a ked sa ti poskodi pamet???? Napr zistis ze je to z blbej serie kde su nejake vadne pametove bloky potom si miesto ram (cca 1000.-) kupis mb+ram za cca 3000.- Alebo nebodaj ti odide nieco na MB a budes ju mat v zaruke tak si kupis novu??? lebo pokial viem tak keby si mi doniesol mb s prilepenou ram tak by som sa s tebou ani nebavil a hned by som reklamaciu zamietol...
Všechny ty teorie jak vytáhnout šifrovací klíč z RAM kulhají na obě nohy. Protože předpokládají, že útočník získá plný fyzický přístup k zapnutému PC s namoutovanými šifrovanými oddíly a bude mít dostatek klídku, aby si s nimi hned na místě hrál!
Což je už samo o sobě docela sci-fi. Každopádně, pokud se někdo dostane do stavu, že mu útočník může napadnout FYZICKY zapnutý PC, tak ochrana dat Vás nejspíš nemusí zajímat.
Protože takoví lidé nejspíš budou členy mafie, mít s sebou arzenál zbraní a mučením nebo thiopentalem sondým a vyhrožováním zabití rodiny z vás dostanou cokoliv a velice rádi jim poskytnete pravé šifrovací klíče, šifrovací USB tokeny nebo cokoliv dalšího...
Tím chci říct, že pokud má někdo možnost takhle rozdělávat a fyzicky si hrát s Vaším zapnutým PC, tak první musí nějak fyzicky spacifikovat vás a pak už je "bezpečnost dat" asi tak na posledním místě, protože vám hrozí mnohem horší věci.
Co se týče notebooků, tak ty převážím zásadně vypnuté a zapnuté jsou pouze pokud je zrovna mám u sebe. Každopádně, pokud by mi někdo lítal po baráku a mrazil RAM, tak jsem nejspíš ve stavu, kdy s tím nemůžu nic dělat a tedy i ve stavu, kdy mu stejně rád všechno řeknu sám - i kdyby klíč byl uložený v CPU nebo třeba na Marsu! :-D
Tak jestli máš na mysli servery, tak u nich je zabezpečení nejtriviálnější na světě. Jenom napojíš zabezpečovačku Jablotronu na ATX konektor serveru. Takže dojde-li k narušení, server se ihned vypne nebo během sekundy odmountuje disky s citlivými daty a šifrovací klíč v RAM se vymaže/přepíše.
Takže aby ColdBoot fungoval, musíš se dostat k zapnutému PC, s namoutovanými disky a někdo tě musí nechat si s ním hrát. Pokud je tam jakékoli zabezpečení, tak ColdBoot nemáš šanci udělat.
Jinak pokud se bojíš PČR, tak ti přichází docela v klidu a pokud se bojíš zásahu URNA, pak jenom stačí nesdílet dětský péčko :-DDDD
A pokud po tobě jde mafie, tak už je stejně šifrování jedno. Ta používá takové metody, že já bych z nich opravdu byl pos*anej, ale ty určitě taky... Chtěl bych Tě vidět s prostřelenou nohou a když by tvé rodině taky něco udělali, jak bys byl hrdina :-) No pár lidí to zkusilo - třeba Voronica Guerin, ale nějak skončila roztřílená jako řešeto! Jenom v Itálii a Sicílii mafie popraví kolem 650 lidí ročně, takže neboj, kdyby ty data skutečně chtěli, tak jim je dáš a na zlatým podnose a ještě je budeš prosit, aby si je vzali...