Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Praktické útoky na digitální podpisy používající hašovací funkci MD5

Student MFF UK Ondrej Mikle ukázal, že lze využít i jedinou publikovanou kolizi MD5 ke konstrukci reálných útoků. Jakékoliv dva různé soubory předáte pomocí určitého postupu dvěma uživatelům, a přitom si oba dva na základě vzájemné kontroly digitálních otisků MD5 budou myslet, že mají tentýž soubor...

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

V oblasti hašovacích funkcí je od srpna t.r. neustále živo. Článek Hašovací funkce MD5 a další prolomeny! přinesl výsledky čínského útoku a ohromný zájem o toto téma (přes 10 000 čtenářů rootu). Stejné téma jsem 22. 11. referoval také na nově vzniklém semináři Bezpečnost Informačních Systémů v praxi na MFF UK, kde určitě najdete i jiná zajímavá témata. Pár dní před ním byla publikována další závažná práce (Kelsey-Schneier) ukazující možnosti konstrukce multikolizí, tj. mnoha zpráv vedoucích na tutéž haš (může jich být nalezeno skutečně neuvěřitelně mnoho). Hlavní výsledky a linky jsem uvedl v závěru přednáškyUkázal jsem tam možnosti a vyzval ke konstrukci praktického příkladu využití kolizí. Během diskuse byly ihned předloženy asi čtyři nápady. Ondra svůj nápad během následujících dní popsal v článku a naprogramoval fungující praktickou ukázku, k níž vše potřebné naleznete na stránce tohoto projektu.

Ondrův článek bude v nejbližších dnech publikován také na webu ePrintu IACR a obsahuje více myšlenek. Zde uvedeme hlavní ideu využití oné jediné kolize MD5, která je k dispozici. Zvolme si libovolné soubory X a Y. Uživateli 1 zašleme soubory data.pak a self-extract.exe, uživateli 2 zašleme soubory data.pak a self-extract.exe. Soubory self-extract.exe jsou stejné, zatímco data.pak různé, ale mají stejnou MD5 haš. Oba uživatelé nyní mohou zkontrolovat haše obdržených souborů nebo jejich digitální podpisy proti sobě. Protože budou totožné, očekávají, že i soubory, které z nich extrahují po spuštění self-extraktoru, budou totožné. Avšak jeden extrahuje X, zatímco druhý Y.

Příspěvek obsahuje konkrétní příklad dvou různých smluv X a Y i postup jak si pomocí příslušných programůvytvořit dvojice self-extract.exe a data.pak pro vlastní soubory X a Y.

Pointa je v tom, že jeden kolidující řetězec MD5 je umístěn na začátku jednoho souboru data.pak a druhý na začátku druhého. Oba dva soubory data.pak obsahují data obou souborů X a Y. Extraktor rozhoduje, která z dat se extrahují podle jednoho bitu souboru data.pak – toho bitu, kde se kolidující řetězce MD5 liší.

Určitou nevýhodou je, že se uživatelům neodesílá jen jeden soubor. Jakmile však bude zveřejněn postup, jak získávat kolize pro libovolnou inicializační hodnotu MD5, je v příspěvku uveden postup, jak uživatelům distribuovat pouze soubor self-extract.exe. I když budou mít stejnou haš, budou extrahovat jiné soubory. Mohou ovšem extrahovat i více souborů a také se nemusí jednat o samorozbalovací archiv. Stejně tak dobře lze vytvořit kolize jiných spustitelných souborů se zcela jinou činností (!). Postup je také možné použít pro libovolnou platformu, která má nějaký druh binárního spustitelného formátu.

Ve světě Linuxu, na rozdíl od Windows, nejsou samorozbalovací (samoinstalovací) archivy tak běžné a používají se hlavně tar.gz, tar.bz2, zip a různe balíčky (rpm, deb atd.). Důležité je, že všechny jsou v podstatě v binárním formátu a instalační skript (configure, Makefile, instalační scriptlet z rpm atd.) může právě užít stejného triku jako u samorozbalovacích archivů.

U archivů zip, tar.gz a tar.bz2 nastávají dvě potíže, za prvé, jak dostat kolidující blok dovnitř nezkomprimován, a za druhé, jak zařídit současnou kolizi u MD5 a CRC32, neboť tyto formáty používají CRC32 na test integrity kvůli detekci chyb. První problém se řeší technicky, neboť všechny formáty to umožňují, druhý problém se řeší kryptograficky. Využijeme narozeninového paradoxu: jestli máme 232 možných hodnot (CRC32) a každá z nich je stejně pravděpodobná, pak při náhodném výběru 2^(32/2) hodnot máme 50% pravděpodobnost, že dvě hodnoty budou stejné. To znamená, že potřebujeme 216 bloků se stejnou haší MD5. Nebudeme však počítat všech 216 kolizí, ale doporučil jsem najít pouze 16 kolizí a použít Jouxův trik s multikolizemi (viz prezentaci, abychom obdrželi 216 kolidujících bloků. V nich pak nalezneme dvojici bloků, které mají jak stejnou haš, tak CRC32.

Generování 16 kolizí by trvalo odhadem 161 hodinu na ibm p690 = cca 1620=320 hodin na lepším PC, při distribuovaném řešení se to dá stihnout za jeden den na 16 počítačích.

Podrobnosti a dále, jak uvedené potíže obejít u rpm a deb balíčků, popisuje Ondra na stránce projektu. Není bez zajímavosti, že právě v těchto dnech se objevil nezávisle také další příspěvek na toto téma využití nalezené kolize MD5 (Ondra ten svůj poslal na web ePrint o několik dní dříve, což bude tamtéž také potvrzeno).

Školení: Pokročilejší kurz jazyka Java

Java je multiplatformní programovací jazyk, který vytvořila a vyvíjí společnost Sun. Java je silný, objektově orientovaný jazyk se širokou komunitou, nabízející především vysokou produktivitu vývoje.

  • Práce s řetězci
  • Regulární výrazy
  • Kolekce
  • Generiky
  • Smyčka typu "for" ve verzi Java 1.5
  • Výčty
  • Vlákna, synchronizace
  • Polymorfismus, RTTI
  • Java Beany
  • JDBC (práce s databázemi)
  • GUI (knihovny AWT a Swing)
  • Java na serveru (servlety, JSP)

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 2,82

Přehled názorů

Stripwire
M.D. 9. 12. 2004 01:27
Nový
├ 
Re: Stripwire
Ondrej Mikle 9. 12. 2004 07:34
Nový
│
└ 
Re: Stripwire
tonz 9. 12. 2004 07:41
Nový
│
 
└ 
Re: Stripwire
Ondrej Mikle 9. 12. 2004 12:29
Nový
│
 
 
├ 
Re: Stripwire
doktor 9. 12. 2004 13:18
Nový
│
 
 
├ 
Re: Stripwire
fyzik 9. 12. 2004 16:28
Nový
│
 
 
│
├ 
Re: Stripwire
wFWovMQauBDFTHdLm 2. 7. 2009 19:31
Nový
│
 
 
│
├ 
Re: Stripwire
wFWovMQauBDFTHdLm 2. 7. 2009 19:32
Nový
│
 
 
│
└ 
Re: Stripwire
wFWovMQauBDFTHdLm 2. 7. 2009 19:32
Nový
│
 
 
└ 
Re: Stripwire
peak 9. 12. 2004 16:53
Nový
├ 
Re: Stripwire
Vlastimil Klíma 9. 12. 2004 08:09
Nový
│
└ 
Re: Stripwire
M.D. 9. 12. 2004 11:18
Nový
│
 
├ 
Re: Stripwire
DGdFCSnLcAui 3. 7. 2009 03:00
Nový
│
 
├ 
Re: Stripwire
DGdFCSnLcAui 3. 7. 2009 03:00
Nový
│
 
├ 
Re: Stripwire
DGdFCSnLcAui 3. 7. 2009 03:00
Nový
│
 
└ 
Re: Stripwire
DGdFCSnLcAui 3. 7. 2009 03:01
Nový
├ 
Re: Stripwire
nqYMdRani 3. 7. 2009 08:07
Nový
├ 
Re: Stripwire
nqYMdRani 3. 7. 2009 08:07
Nový
├ 
Re: Stripwire
nqYMdRani 3. 7. 2009 08:07
Nový
└ 
Re: Stripwire
nqYMdRani 3. 7. 2009 08:07
Nový
Zajímavé
numinix 9. 12. 2004 08:44
Nový
└ 
Re: Zajímavé
jk 9. 12. 2004 09:02
Nový
 
└ 
Re: Zajímavé
Jirka 9. 12. 2004 21:22
Nový
 
 
└ 
Re: Zajímavé
JoHnY 12. 12. 2004 18:44
Nový
mam radost z prace nasich studentu
Cestmir Halbich 9. 12. 2004 09:01
Nový
├ 
Re: mam radost z prace nasich studentu
jk 9. 12. 2004 09:19
Nový
│
└ 
Re: mam radost z prace nasich studentu
Cestmir Halbich 9. 12. 2004 09:37
Nový
└ 
OT: Re: mam radost z prace nasich studentu
barcode 9. 12. 2004 15:14
Nový
 
└ 
Re: OT: Re: mam radost z prace nasich studentu
vrmk 10. 12. 2004 15:26
Nový
bez titulku
smrt 9. 12. 2004 10:02
Nový
└ 
Re:
Ondrej Mikle 9. 12. 2004 10:09
Nový
Nechápu
Yeti 9. 12. 2004 11:04
Nový
└ 
Re: Nechápu
Cestmir Halbich 9. 12. 2004 12:38
Nový
 
└ 
Re: Nechápu
Michal 9. 12. 2004 15:32
Nový
Mýlím se?
Miloš 9. 12. 2004 11:19
Nový
└ 
Re: Mýlím se?
jk 9. 12. 2004 12:00
Nový
 
└ 
Re: Mýlím se?
Miloš 9. 12. 2004 14:06
Nový
 
 
├ 
Re: Mýlím se?
Jirka 9. 12. 2004 21:32
Nový
 
 
└ 
Re: Mýlím se?
jk 9. 12. 2004 21:58
Nový
bez titulku
kciii 9. 12. 2004 13:19
Nový
└ 
Re:
Yeti 9. 12. 2004 13:27
Nový
 
├ 
Re:
kciii 9. 12. 2004 13:50
Nový
 
├ 
Re: genericke utoky na hashovacie funkcie
Ondrej Mikle 9. 12. 2004 14:03
Nový
 
├ 
Re: Re:
kjjdocVZOwJXefInzj 3. 7. 2009 03:32
Nový
 
├ 
Re: Re:
kjjdocVZOwJXefInzj 3. 7. 2009 03:33
Nový
 
├ 
Re: Re:
kjjdocVZOwJXefInzj 3. 7. 2009 03:33
Nový
 
└ 
Re: Re:
kjjdocVZOwJXefInzj 3. 7. 2009 03:33
Nový
tri ruzne funkce
polish 9. 12. 2004 13:25
Nový
└ 
Re: tri ruzne funkce
Zdeněk Štěpánek 9. 12. 2004 14:33
Nový
 
├ 
Workaround
Clock 9. 12. 2004 14:42
Nový
 
│
└ 
Re: Workaround
jk 9. 12. 2004 21:55
Nový
 
└ 
Re: tri ruzne funkce
polish 9. 12. 2004 14:45
Nový
 
 
├ 
Re: tri ruzne funkce
Ondrej Mikle 9. 12. 2004 16:15
Nový
 
 
└ 
Re: tri ruzne funkce
Vlastimil Klíma 9. 12. 2004 16:31
Nový
hash funkcie
mikeovec 12. 12. 2004 00:37
Nový
└ 
Re: hash funkcie
Ondrej Mikle 12. 12. 2004 16:54
Nový
 
├ 
Re: hash funkcie
psfvfkPkMlYw 3. 7. 2009 04:49
Nový
 
├ 
Re: hash funkcie
psfvfkPkMlYw 3. 7. 2009 04:49
Nový
 
├ 
Re: hash funkcie
psfvfkPkMlYw 3. 7. 2009 04:49
Nový
 
└ 
Re: hash funkcie
psfvfkPkMlYw 3. 7. 2009 04:49
Nový
Maly update - ISO image
Ondrej Mikle 14. 12. 2004 15:48
Nový
Logo hack skupiny Czert
Václav Vondra 14. 12. 2004 18:43
Nový
├ 
Re: Logo hack skupiny Czert
FfuBTokHyoxmH 3. 7. 2009 11:26
Nový
├ 
Re: Logo hack skupiny Czert
FfuBTokHyoxmH 3. 7. 2009 11:26
Nový
├ 
Re: Logo hack skupiny Czert
FfuBTokHyoxmH 3. 7. 2009 11:26
Nový
└ 
Re: Logo hack skupiny Czert
FfuBTokHyoxmH 3. 7. 2009 11:26
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem