<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MIFARE DESFire - Hard Wired</title>
	<atom:link href="https://www.hardwired.dev/tag/mifare-desfire/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.hardwired.dev</link>
	<description></description>
	<lastBuildDate>Tue, 27 Oct 2026 20:02:16 +0000</lastBuildDate>
	<language>cs</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://www.hardwired.dev/wp-content/uploads/2022/10/android-chrome-256x256-1-150x150.png</url>
	<title>MIFARE DESFire - Hard Wired</title>
	<link>https://www.hardwired.dev</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Proč DESFire nenaklonuješ, i když Mifare Classic jde</title>
		<link>https://www.hardwired.dev/2026/10/27/3123/</link>
		
		<dc:creator><![CDATA[Valentino Hesse OK2HSS]]></dc:creator>
		<pubDate>Tue, 27 Oct 2026 19:43:50 +0000</pubDate>
				<category><![CDATA[Cyber Security]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[desfire]]></category>
		<category><![CDATA[MIFARE DESFire]]></category>
		<category><![CDATA[nfc]]></category>
		<category><![CDATA[rfid]]></category>
		<category><![CDATA[UID]]></category>
		<guid isPermaLink="false">https://www.hardwired.dev/?p=3123</guid>

					<description><![CDATA[<p>Proč DESFire nenaklonuješ, i když Mifare Classic jde Magic karty s přepisovatelným UID udělají kopii obyčejné Mifare Classic za pár minut. DESFire &#62;&#62;&#62;</p>
<p>The post <a href="https://www.hardwired.dev/2026/10/27/3123/">Proč DESFire nenaklonuješ, i když Mifare Classic jde</a> first appeared on <a href="https://www.hardwired.dev">Hard Wired</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="bsf_rt_marker"></div><h1>Proč DESFire nenaklonuješ, i když Mifare Classic jde</h1>
<p><em>Magic karty s přepisovatelným UID udělají kopii obyčejné Mifare Classic za pár minut. DESFire stejný trik nedonese, a není to kvůli tajnému klíči, ale kvůli tomu, jak je karta postavená. Podrobný rozbor: jak DESFire funguje, jak ověřuje, čím se brání útokům a proč celé zabezpečení nakonec stojí a padá se systémem kolem něj.</em></p>
<p>Máš svůj vlastní klíč k DESFire kartě, chceš si ji zálohovat, a po ruce zrovna není prázdný DESFire. Jenom magic karta. Zní to jako banalita.</p>
<p>Přitom se právě na tomhle scénáři nejlíp ukáže, proč jde jedna karta zkopírovat za pár minut a druhá vůbec. Obkreslit UID je málo. Klon musí zreplikovat celé chování karty vůči čtečce, kryptografii nevyjímaje. Projdeme to od začátku: proč je Mifare Classic odsouzená ke klonování, jak je naproti tomu postavený DESFire, jak probíhá jeho ověřování krok za krokem, čím se brání útokům, kde ho jednou v historii zlomili a proč dnešní průšvihy nemají s čipem nic společného.</p>
<h2>Magic karta a otevřený blok 0</h2>
<p>U běžné Mifare Classic je blok 0 uzamčený z výroby. Sedí v něm UID, jednobajtový kontrolní součet BCC a výrobní data, a normální čtečka ho nepřepíše. Magic karty tenhle zámek obcházejí. Způsob obcházení dělí jednotlivé generace a není to jen akademické dělení, protože rozhoduje o tom, jestli tě klon prozradí.</p>
<p>Nejstarší „UID karty“ (Gen1a) poslouchají nestandardní backdoor příkazy. Karta se uspí a pak reaguje na dvojici příkazů (0x40 v sedmibitovém rámci jako buzení, následně 0x43), které odemknou čtení i zápis libovolného bloku včetně nultého, a to bez znalosti jakéhokoli klíče. Na Proxmarku to obsluhují příkazy <code>csetblk</code>, <code>cgetblk</code> a spol. Háček je v tom, že ta samá ochota reagovat na backdoor kartu odhalí: čtečka pošle odemykací sekvenci, karta odpoví, a je jasno.</p>
<p>Gen2 (CUID) backdoor nemá. UID se u ní mění přímým zápisem do bloku 0 jako do kteréhokoli jiného, přes standardní <code>wrbl</code> s vynuceným zápisem. Pozor na BCC: když ho spočítáš špatně, část čteček kartu odmítne nebo rovnou zablokuje. CUID má proti Gen1a výhodu, že na backdoor nereaguje, takže ji sken backdoorem neodhalí. Zrádný je ovšem přístup, kdy se čtečka sama pokusí přepsat blok 0, protože běžná Classic to nedovolí a CUID ano, čímž se prozradí. Na to je FUID, který se po prvním zápisu zamkne natvrdo a od té chvíle je k nerozeznání od pravé Classic. UFUID je mezistupeň: chová se jako CUID, dokud mu nepošleš zamykací sekvenci, a teprve pak ztuhne.</p>
<p>Špičkou je dnes Gen4, prodávaný jako „Ultimate Magic Card“. Funguje jako konfigurovatelná platforma, ne jako jedna pevná emulace. Umí se vydávat za libovolnou Classic (1K, 4K, Mini), za Ultralight i za NTAG, se čtyř-, sedmi- i desetibajtovým UID, a svou konfiguraci chrání heslem. Má takzvaný shadow mode, kdy se po přiložení jednou ukáže jako klon a pak jako zapsaná data, čímž umí obejít i otravnější anti-copy kontroly.</p>
<table>
<thead>
<tr>
<th>Generace</th>
<th>Jak mění UID</th>
<th>Detekce čtečkou</th>
</tr>
</thead>
<tbody>
<tr>
<td>Gen1a</td>
<td>backdoor příkazy (0x40/0x43)</td>
<td>snadná, reaguje na backdoor</td>
</tr>
<tr>
<td>Gen2 / CUID</td>
<td>přímý zápis bloku 0</td>
<td>obtížná, ale pokusem o zápis bloku 0 se prozradí</td>
</tr>
<tr>
<td>FUID</td>
<td>zápis jednou, pak trvalý zámek</td>
<td>žádná, po zamčení jako běžná Classic</td>
</tr>
<tr>
<td>UFUID</td>
<td>jako CUID, pak volitelný zámek</td>
<td>žádná po zamčení</td>
</tr>
<tr>
<td>Gen4 / Ultimate</td>
<td>řízená konfigurace, shadow mode</td>
<td>náročná, novější firmware Proxmarku ji pozná</td>
</tr>
</tbody>
</table>
<p>Všechny tyhle karty mají společné jedno. Emulují Mifare Classic, Ultralight nebo NTAG, tedy typy postavené na prolomené šifře Crypto1 nebo rovnou bez autentizace. A Classic je rozbitá na několika úrovních zároveň. Crypto1 padla akademicky už kolem roku 2008 (Nohl, Garcia a další), útoky Darkside, Nested a HardNested vytáhnou klíče z běžné karty v řádu sekund až minut. Loni to dostalo ještě jeden rozměr: Philippe Teuwen z Quarkslabu v srpnu 2024 popsal hardwarový backdoor ve Fudan FM11RF08S, tedy v „tvrzené“ variantě s šifrovaným statickým nonce, která měla nested útokům odolávat. Backdoor umožňuje autentizovat se neznámým klíčem společným všem těm kartám a vyčíst z karty během pár minut všechny klíče i bez jediného známého klíče. Nástroje skončily v Proxmarku. Jinými slovy: žádná karta z rodiny Classic není bezpečný nosič identity, ať je magic nebo ne.</p>
<p>DESFire mezi nimi nenajdeš.</p>
<p>A to je jádro věci.</p>
<h2>Jak DESFire funguje</h2>
<p>DESFire a Classic spojuje leda ta frekvence 13,56 MHz. Jinak to jsou dva odlišné světy, a začíná to už u komunikační vrstvy. Norma ISO/IEC 14443 má čtyři části: fyziku karty, rádiové rozhraní, inicializaci s antikolizí (část -3, kde se řeší ATQA, SAK a výběr UID) a konečně přenosový protokol (část -4). Mifare Classic končí u části -3 a dál jede proprietární Crypto1, žádný standardní protokol nad tím není. Právě proto „čtení“ Classic znamená jen antikolizi plus Crypto1 a právě proto ji magic karta tak snadno napodobí.</p>
<p>DESFire jede až po vrstvu -4. Po antikolizi pošle čtečka příkaz RATS, karta odpoví svým ATS a tím se dohodne half-duplexní protokol T=CL s datovými rychlostmi od 106 až po 848 kbit/s. Nad ním se posílají APDU podle ISO/IEC 7816-4, stejné stavební kameny jako u kontaktních čipových karet a pasů. Nativní příkazy DESFiru se dají balit do ISO 7816 APDU (wrapped mode, s hlavičkou 0x90), takže s kartou umí mluvit i obyčejná PC/SC čtečka přes standardní rozhraní.</p>
<p>Paměť je hierarchická, jako malý šifrovaný souborový systém. Na nejvyšší úrovni je PICC, tedy celá karta, s master klíčem a globální konfigurací. Pod ním sedí aplikace, každá se svým tříbajtovým identifikátorem AID a vlastní sadou až čtrnácti klíčů. V každé aplikaci je až 32 souborů, a souborů je šest druhů: Standard Data pro statická data, Backup Data s transakční ochranou, Value pro čítače a peněženky, Linear Record a Cyclic Record pro záznamové logy a konečně Transaction MAC, který přibyl v EV3 a podepisuje transakce. Každý soubor má vlastní přístupová práva navázaná na konkrétní klíče, takže čtení může vyžadovat jiný klíč než zápis.</p>
<p>Klíče jsou AES-128, nebo starší DES, 2K3DES a 3K3DES, vždy s verzí klíče. Generace jdou za sebou a drží zpětnou kompatibilitu. D40 je původní z roku 2002, dnes dožilá. EV1 přišel v roce 2008 s certifikací Common Criteria EAL4+ a pamětí 2, 4 nebo 8 kB. EV2 z roku 2016 zvedl laťku na EAL5+, zrušil limit počtu aplikací, přidal rolling keys a sadu obranných mechanismů, ke kterým se dostaneme. EV3 z roku 2020 drží EAL5+, přidává Secure Dynamic Messaging i konfigurovatelné ATS a nabízí paměť až 32 kB. V defaultním stavu se EV3 chová jako EV2 nebo EV1, nové funkce se aktivují až při personalizaci, takže integrátor musí vědomě zapnout, co chce používat.</p>
<h2>Jak DESFire ověřuje</h2>
<p>Tohle je srdce celé věci, a proto se u toho zastavíme podrobně. DESFire používá tříprůchodovou vzájemnou autentizaci (three-pass mutual authentication). Jde o to, že si karta i čtečka navzájem dokážou znalost sdíleného klíče, aniž by klíč nebo jeho prostá podoba kdy proletěly éterem. Zjednodušeně to běží takhle:</p>
<ol>
<li>Čtečka řekne, kterým klíčem se chce autentizovat. Karta vygeneruje náhodné číslo RndB, zašifruje ho klíčem a pošle zpět. Útočník odposlechem dostane jen šifrovaný balast.</li>
<li>Čtečka balast dešifruje, získá RndB, vygeneruje vlastní náhodné RndA, číslo RndB cyklicky posune o bajt (RndB') a dvojici RndA a RndB' zašifruje zpět kartě. Posunutím dokazuje, že RndB rozluštila, tedy že klíč zná.</li>
<li>Karta dešifruje, zkontroluje, že její RndB' sedí, čímž má ověřenou čtečku. Pak posune RndA, zašifruje a pošle zpět. Čtečka ověří, že sedí její RndA, a tím má ověřenou kartu.</li>
</ol>
<p>Z úlomků obou náhodných čísel se nakonec na obou stranách odvodí stejný dočasný session klíč, kterým se šifruje zbytek relace. Odposlech celé výměny útočníkovi nedá nic použitelného, protože náhodná čísla jsou pokaždé jiná a klíč sám se nikdy neposílá.</p>
<p>Varianty se liší kryptem a detaily. Legacy autentizace běží na DES a 3DES, ISO varianta přidává delší náhodná čísla, AES autentizace jede na AES-128. EV2 to posunul k příkazu AuthenticateEV2First: při navázání relace se dohodne transakční identifikátor (TI) a čítač příkazů (CmdCtr), vzniknou oddělené session klíče pro šifrování a pro MAC a každý další příkaz nese narůstající čítač. Tím padá možnost přehrát odposlechnutou výměnu i proskládat cizí příkazy do běžící relace.</p>
<p>Nad samotnou autentizací stojí tři komunikační režimy souborů. V režimu Plain jdou data nechráněně. V režimu MACed se ke každé zprávě připojí CMAC, který hlídá integritu a původ. V plně šifrovaném režimu je obsah zašifrovaný a navíc podepsaný CMAC. Který režim platí, se nastavuje u každého souboru zvlášť, takže veřejný údaj může jet Plain a citlivý plně šifrovaně na stejné kartě.</p>
<p>A právě tady je pointa k tvé záloze. Magic karta nemá kryptoengine. Nemá čím RndB vygenerovat, zašifrovat ani posunout. Ve chvíli, kdy čtečka zahájí tříprůchodovou výměnu, karta mlčí, a tvůj legitimní klíč na tom nic nezmění, protože klíč je klíč <em>k</em> DESFiru, ne něco, čím rozchodíš cizí křemík. Zazálohovat umíš data a strukturu (logický dump po autentizaci), ale funkční kopii dostaneš jedině na prázdnou DESFire kartu, kterou si znovu napersonalizuješ.</p>
<h2>Čím se DESFire brání útokům</h2>
<p>Samotná šifra je jen začátek. DESFire od EV1 výš nese vrstvu obran, které cílí přesně na způsoby, jakými se contactless karty reálně napadají.</p>
<p>Proti postranním útokům stojí hardwarové protiopatření certifikované na úrovni EAL4+ u EV1 a EAL5+ u EV2 a EV3. Common Criteria na téhle úrovni znamená, že se čip musel ubránit i neinvazivnímu měření spotřeby a vyzařování, tedy přesně tomu, co zabilo původní D40. EV2 a EV3 k tomu přidávají LRP (Leakage Resilient Primitive), alternativní režim AES navržený tak, aby z každé operace unikalo do spotřeby co nejméně informace. Útok měřením stop je proti LRP mnohem dražší.</p>
<p>Soukromí řeší Random ID spolu s architekturou virtuální karty (VCA). Se zapnutým Random ID hlásí karta při každém přiložení jiné náhodné číslo místo pevného UID, takže ji nelze sledovat napříč čtečkami. Skutečné UID vydá teprve po úspěšné autentizaci. VCA pak umožňuje, aby se správná aplikace vybrala a identifikovala, aniž by se to zvenčí dalo zneužít ke sledování nositele.</p>
<p>Proti relay útokům, kdy útočník natáhne komunikaci mezi vzdálenou kartou a čtečkou přes dvojici zařízení, stojí Proximity Check. Čtečka pošle kartě sérii výzev a měří, za jak dlouho přijde odpověď. Když je zpoždění větší, než dovoluje rychlost světla na krátkou vzdálenost, relay se prozradí a kontrola selže. Má to jeden háček, ke kterému se vrátím: funguje jen tehdy, když ho někdo v systému zapne.</p>
<p>Transaction MAC dává kartě schopnost podepsat každou transakci kryptografickým otiskem, takže se zpětně pozná neoprávněný zápis, třeba dobití peněženky mimo oficiální terminál. Rolling keys, tedy až šestnáct sad klíčů na aplikaci s rychlým přepínáním, zase dovolují vyměnit klíče v celém systému bez výměny karet. Když se jedna sada zkompromituje, přepne se na další, aniž by lidé museli odevzdat kartičky.</p>
<p>Žádná z těch obran ale neběží sama od sebe. To je přesně ten důvod, proč DESFire padá častěji na nasazení než na matematiku.</p>
<h2>Jediné reálné prolomení za dvacet let</h2>
<p>DESFire padl v historii jednou, a ne přes šifru. Původní MF3ICD40 byl uvnitř asynchronní osmibitový procesor řady 8051 s 3DES jádrem a takzvanou glue logikou, uvedený Philipsem kolem roku 2002, tedy v době, kdy se postranní útoky na čipy ještě nebraly jako běžná hrozba. V říjnu 2011 předvedli David Oswald a Christof Paar z Porúrské univerzity v Bochumi na konferenci CHES, co to znamená. Nešli po matematice 3DES, šli po fyzice čipu: měřili spotřebu a elektromagnetické vyzařování během šifrování (differential power analysis a šablonové útoky). Z řádově 250 tisíc naměřených stop zrekonstruovali tajný klíč, celé asi za sedm hodin, s vybavením za pár tisíc eur.</p>
<p>NXP útok uznal a připomněl, že MF3ICD40 stejně plánoval ukončit ke konci roku 2011. EV1, uvedený už o tři roky dřív, byl proti stejnému postrannímu útoku odolný, a právě proto ta certifikace EAL. Od té doby se žádné veřejné prolomení kryptografie EV1, EV2 ani EV3 neobjevilo. Těžiště se nepřesunulo na kartu.</p>
<p>Přesunulo se na systém kolem ní.</p>
<h2>Co musí umět čtečka</h2>
<p>Častý omyl zní: „přečetl jsem kartu“ u DESFiru neznamená skoro nic. Vyčíst náhodné UID zvládne každá čtečka podle ISO 14443-3. Dostat se k zabezpečenému obsahu je úplně jiná operace a čtečka k ní potřebuje tři věci.</p>
<p>Zaprvé protokol. Musí umět ISO/IEC 14443-4, tedy projít přes RATS a ATS do režimu T=CL, a posílat APDU, ne jen řešit antikolizi. Zadruhé kryptografii. Buď má bezpečnostní modul SAM, kde leží klíče v hardwaru a který provede autentizaci za čtečku, nebo kryptografii dělá host či backend softwarově a klíče jsou uložené v key store řadiče. NXP k tomu dodává moduly MIFARE SAM AV2 a AV3; AV3 pojme až 128 položek pro symetrické klíče, umí offline diverzifikaci klíčů, chráněný kanál mezi hostem a SAM a v takzvaném X-módu i výkonovou spolupráci s čtecím čipem. Zatřetí samotné klíče, bez nich čtečka k šifrovaným souborům prostě nepustí.</p>
<p>V praxi to vypadá takhle. PC/SC čtečky jako ACR122U, postavená na čipu PN532, zvládají APDU passthrough a autentizaci k DESFiru jde dělat softwarově, například přes knihovny python-desfire, libfreefare, TapLinx nebo projekty AndroidCrypto. Novější ACR1252U a ACR1255U nebo čtečky Omnikey míří na DESFire EV1 a EV2 přímo. Proxmark3 má celou rodinu příkazů <code>hf mfdes</code>. V přístupových systémech se klíče často drží v řadiči a čtečka běží v transparentním režimu, typicky přes OSDP. Co nikde nekoupíš, je magic DESFire. Prázdnou kartu k personalizaci ano, ale „otevřenou“ DESFire s přepisovatelnou identitou ne.</p>
<p>A ještě jedna věc, protože se na ní láme většina reálného zabezpečení. Pokud přístupový systém DESFire kartu jen přečte podle UID a dál se spokojí, že se karta ozvala, celá kryptografie je k ničemu. Takový systém pak podvede i obyčejná sedmibajtová magic karta se stejným UID. DESFire reader a UID čtečka jsou dvě různé věci, i když se navenek tváří stejně.</p>
<h2>Kde DESFire přesto padá</h2>
<p>Neprůstřelná karta ještě není neprůstřelný systém. Většina reálných průšvihů s DESFirem se šifrou vůbec nesouvisí.</p>
<p>Nejčastější je výchozí klíč. Čerstvá DESFire aplikace má všechny klíče nastavené na samé nuly. Když je integrátor nezmění, útočník se autentizuje výchozím klíčem a má vystaráno, přečte i přepíše obsah. Druhá klasika je chybějící diverzifikace klíčů. NXP v aplikační nótě AN10922 popisuje, jak z jednoho site klíče odvodit jedinečný klíč pro každou kartu, pomocí AES-CMAC nad UID, AID a číslem klíče. Když to systém neudělá a sype do všech karet stejný klíč, stačí vytáhnout klíč z jediné karty nebo z jediné čtečky a padne celá instalace naráz. A přesně tím směrem dnešní útoky jdou, po extrakci klíčů ze čtečky nebo po kompromitaci site klíče, ne po prolomení čipu.</p>
<p>Nad tím vším visí lidský faktor nasazení. Proximity Check proti relay útokům je skvělá obrana, pokud ji někdo zapne. Random ID chrání soukromí, pokud se aktivuje. Rolling keys umožní rotaci, pokud má systém proceduru, jak ji provést. NXP to sepsal do systémové nóty AN10969, kde kromě diverzifikace doporučuje i detekci podvodných karet, černé a bílé listiny a stínové účty, tedy obranu, která nestojí na kartě, ale na backendu. Školní příklad z praxe: londýnská Oyster přešla na DESFire, zatímco řada jiných dopravních karet zůstala na prolomené Classic, a rozdíl v bezpečnosti nedělá jen čip, ale celý návrh systému.</p>
<p>Bezpečnost DESFire nebydlí v kartě. Bydlí v tom, jak je nasazená.</p>
<p>A proto ti magic karta zálohu neudělá, ne proto, že by byl klíč tak tajný, ale proto, že na magic kartě není co s tím klíčem provést.</p>

<div class="twitter-share"><a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.hardwired.dev%2F2026%2F10%2F27%2F3123%2F&#038;via=hessevalentino&#038;related=hessevalentino%3AValentino%20Hesse%20OK2HSS" class="twitter-share-button">Tweet</a></div><p>The post <a href="https://www.hardwired.dev/2026/10/27/3123/">Proč DESFire nenaklonuješ, i když Mifare Classic jde</a> first appeared on <a href="https://www.hardwired.dev">Hard Wired</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kryptografické útoky NFC</title>
		<link>https://www.hardwired.dev/2025/09/14/kryptograficke-utoky-nfc/</link>
		
		<dc:creator><![CDATA[Valentino Hesse OK2HSS]]></dc:creator>
		<pubDate>Sun, 14 Sep 2025 07:16:50 +0000</pubDate>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Cyber Security]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[ACR122U]]></category>
		<category><![CDATA[bezpečnostní analýza]]></category>
		<category><![CDATA[Chameleon Ultra]]></category>
		<category><![CDATA[Crypto1]]></category>
		<category><![CDATA[cryptographic attacks]]></category>
		<category><![CDATA[Darkside attack]]></category>
		<category><![CDATA[Darkside útok]]></category>
		<category><![CDATA[doporučení bezpečnosti]]></category>
		<category><![CDATA[HardNested]]></category>
		<category><![CDATA[infrastructure migration]]></category>
		<category><![CDATA[kryptografické útoky]]></category>
		<category><![CDATA[kvantová odolnost]]></category>
		<category><![CDATA[legal and ethical]]></category>
		<category><![CDATA[MFKEY32]]></category>
		<category><![CDATA[MFRC522]]></category>
		<category><![CDATA[MIFARE DESFire]]></category>
		<category><![CDATA[MIFARE EV1]]></category>
		<category><![CDATA[MIFARE Plus]]></category>
		<category><![CDATA[mifare-classic]]></category>
		<category><![CDATA[migrace infrastruktury]]></category>
		<category><![CDATA[Nested attack]]></category>
		<category><![CDATA[Nested útok]]></category>
		<category><![CDATA[NFC bezpečnost]]></category>
		<category><![CDATA[NFC security]]></category>
		<category><![CDATA[penetrační testování]]></category>
		<category><![CDATA[penetration-testing]]></category>
		<category><![CDATA[PN532]]></category>
		<category><![CDATA[právní a etické otázky]]></category>
		<category><![CDATA[Proxmark3]]></category>
		<category><![CDATA[quantum-resistant]]></category>
		<category><![CDATA[RC522]]></category>
		<category><![CDATA[RC522 čtečka]]></category>
		<category><![CDATA[relay attacks]]></category>
		<category><![CDATA[relay útoky]]></category>
		<category><![CDATA[rfid]]></category>
		<category><![CDATA[RFID vulnerabilities]]></category>
		<category><![CDATA[RFID zranitelnosti]]></category>
		<category><![CDATA[security analysis]]></category>
		<category><![CDATA[security recommendations]]></category>
		<guid isPermaLink="false">https://www.hardwired.dev/?p=2817</guid>

					<description><![CDATA[<p>Kryptografické útoky na RC522 a MIFARE čipy RC522 a MIFARE Classic čipy, nasazené v miliardách zařízení po celém světě, představují &#62;&#62;&#62;</p>
<p>The post <a href="https://www.hardwired.dev/2025/09/14/kryptograficke-utoky-nfc/">Kryptografické útoky NFC</a> first appeared on <a href="https://www.hardwired.dev">Hard Wired</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="bsf_rt_marker"></div><h1>Kryptografické útoky na RC522 a MIFARE čipy</h1>
<p>RC522 a MIFARE Classic čipy, nasazené v miliardách zařízení po celém světě, představují jeden z nejvýznamnějších případů selhání kryptografické bezpečnosti v moderních dějinách. <strong>Proprietární šifra Crypto1, která byla po 14 let utajována, obsahuje fundamentální slabiny umožňující rychlé kompromitování všech sektorových klíčů.</strong> Tento článek poskytuje podrobnou technickou analýzu šesti hlavních typů útoků, jejich implementace a obranných opatření.</p>
<p>Výzkum ukazuje, že <strong>95% původních MIFARE Classic karet lze kompromitovat během 10-30 minut</strong> pomocí běžně dostupného hardware za méně než 10 000 Kč. Navzdory pokusům o vylepšení v podobě MIFARE Classic EV1, základní architektonické problémy zůstávají nevyřešené. Pro organizace používající tyto systémy představuje jejich nasazení <strong>úplnou kompromitaci bezpečnosti</strong> vyžadující okamžitou migraci na kryptograficky bezpečné alternativy.</p>
<h2>Technické základy RC522 a MIFARE architektury</h2>
<h3>Architektura RC522 čtečky</h3>
<p><strong>MFRC522</strong> (běžně označovaný jako RC522) je vysoce integrovaný bezkontaktní čtecí/zapisovací obvod od NXP Semiconductors pracující na frekvenci 13.56 MHz. Klíčové specifikace zahrnují <strong>napájecí napětí 2,5-3,6V</strong>, komunikační rozhraní <strong>SPI (až 10 Mbit/s), I²C (až 3,4 Mbit/s) a UART (až 1228,8 kBd)</strong>, a <strong>64-bajtový obousměrný FIFO buffer</strong> pro zpracování dat.</p>
<p>Digitální architektura obsahuje <strong>bezkontaktní UART pro zpracování protokolu</strong>, <strong>16-bitový CRC koprocesor</strong> s polynomem x¹⁶ + x¹² + x⁵ + 1, <strong>programovatelnou časovací jednotku</strong> s 12-bitovým předděličem a <strong>generátor pseudonáhodných čísel</strong>. Kriticky důležitá je <strong>ověřovací jednotka MIFARE Classic s podporou Crypto1</strong>, která implementuje celý ISO/IEC 14443-A protokolový zásobník.</p>
<h3>Struktura paměti MIFARE Classic</h3>
<p>MIFARE Classic karty využívají <strong>EEPROM paměť organizovanou hierarchicky</strong>. Verze 1K obsahuje <strong>1024 bajtů organizovaných do 16 sektorů po 4 blocích</strong>, kde každý blok má 16 bajtů. Použitelné úložiště činí pouze <strong>752 bajtů</strong> po odečtení systémových bloků.</p>
<p><strong>Každý sektor obsahuje datové bloky (0-2) a sektorový trailer (blok 3)</strong> s rozložením: Key A (6 bajtů), přístupové bity (4 bajty), Key B (6 bajtů). Výchozí klíče jsou nastaveny na <strong>0xFFFFFFFFFFFF</strong>, což představuje zásadní bezpečnostní riziko v nenastavených systémech.</p>
<h3>Šifra Crypto1 a její zranitelnosti</h3>
<p><strong>Crypto1 je proprietární proudová šifra</strong> skládající se z 48-bitového lineárního zpětnovazebního posuvného registru (LFSR) s polynomem obsahujícím 16 termů, <strong>dvouvrstvé 20-na-1 nelineární filtrační funkce</strong> a <strong>16-bitového LFSR pro generování pseudonáhodných čísel</strong> během autentifikace.</p>
<p>Kritické kryptografické chyby zahrnují <strong>inherentně lineární design LFSR</strong> zranitelný vůči algebraickým útokům, <strong>pouze 48-bitové klíče</strong> výpočetně proveditelné k hrubému prolomení, <strong>předvídatelný PRNG</strong> používající předvídatelné počáteční podmínky, a <strong>možnost obnovení stavu</strong> prostřednictvím časové analýzy.</p>
<h2>MFKEY32 V2 útok</h2>
<h3>Algoritmická implementace a matematické základy</h3>
<p><strong>MFKEY32 V2 vykořisťuje slabý PRNG</strong> v MIFARE Classic kartách analýzou šifrovaných nonce shromážděných během pokusů o autentifikace mezi kartou a legitimní čtečkou. Matematickým základem je <strong>struktura 48-bitového LFSR Crypto1</strong> a <strong>slabina PRNG používající 16-bitový LFSR</strong>, kde znalost jedné poloviny determinuje druhou.</p>
<p>Klíčové rozdíly oproti MFKEY32 V1 spočívají v <strong>eliminaci časových omezení</strong> - pokusy o autentifikace mohou probíhat v různých časech, což poskytuje <strong>flexibilnější implementaci s vyššími míry úspěšnosti</strong>.</p>
<h3>Implementační workflow</h3>
<p>Útok probíhá ve čtyřech fázích: <strong>Kolekce nonce</strong> - emulace cílové karty pro zachycení čtečkových nonce během autentifikace, <strong>analýza dat</strong> - extrakce šifrovaných nonce {nT} a paritních bitů z komunikace, <strong>rekonstrukce LFSR</strong> - výpočet možných stavů LFSR generujících pozorované nonce, a <strong>obnova klíče</strong> - zpětný chod LFSR do počátečního stavu obsahujícího autentifikační klíč.</p>
<p><strong>Požadované pokusy o autentifikaci</strong>: Minimum 2 pokusy (nemusí být po sobě jdoucí), optimálně <strong>4-8 pokusů pro vyšší míru úspěšnosti</strong>. <strong>Míra úspěšnosti</strong>: 85-95% na standardních kartách, snížená na 30-50% u zpevněných karet kvůli vylepšenému PRNG.</p>
<h3>Hardware a software požadavky</h3>
<p><strong>Proxmark3 RDV4</strong>: 2-5 sekund na klíč, cena €200-300. <strong>ACR122U</strong>: 30-60 minut kvůli pomalejší komunikaci, cena €30-50. <strong>Chameleon Ultra</strong>: srovnatelná s Proxmark3 pro kolekci, cena €80-120.</p>
<p>Časová náročnost zahrnuje <strong>fyzické požadavky</strong>: těsná blízkost cílové karty (1-4cm), <strong>výpočetní požadavky</strong>: moderní procesor s 256MB RAM minimum, <strong>čas</strong>: 10 sekund až 5 minut pro obnovu klíče v závislosti na hardware.</p>
<h2>Darkside útok</h2>
<h3>Princip a metodika obnovy klíčů</h3>
<p><strong>Darkside útok vykořisťuje postranní kanál</strong> v autentifikačním zpracování chyb MIFARE Classic, konkrétně šifrované NACK (Negative Acknowledgment) odpovědi. Karta ověří paritu → správná (8 bitů), ověří autentifikaci → nesprávná (špatné aR), odpověď: 4-bitové NACK šifrované keystream.</p>
<h3>Technický proces exploitace</h3>
<p>Útok probíhá v šesti krocích: <strong>počáteční autentifikace</strong> - odeslání auth příkazu cílovému sektoru, <strong>kolekce nonce</strong> - příjem karty nonce nT (32 bitů), <strong>parití útok</strong> - generování čtečky nonce nR se správnými paritními bity, odeslání šifrované {nR, aR} s úmyslně špatnou aR hodnotou, <strong>exploitace NACK</strong> - extrakce 4 keystream bitů: ks = NACK_plaintext ⊕ NACK_encrypted, <strong>iterace</strong> - opakování s různými nT hodnotami pro shromáždění ~32 keystream bitů, a <strong>obnova klíče</strong>.</p>
<p><strong>Metriky výkonu</strong>: Kolekční fáze 5-30 minut v závislosti na kartě a hardware, <strong>výpočetní fáze 1-10 sekund</strong> pro obnovu klíče, <strong>míra úspěšnosti 90-95%</strong> na zranitelných kartách (před-EV1), průměrně <strong>~300 pokusů o autentifikaci</strong>.</p>
<h3>Praktické omezení</h3>
<p><strong>Hardwarové závislosti</strong>: Proxmark3 typicky 5-15 minut, ACR122U 30-60 minut kvůli pomalejší komunikaci, PN532 15-45 minut s správnou časovou konfigurací. <strong>Detekce a omezení</strong>: EV1 karty mají opravenou NACK zranitelnost (0% úspěšnost), čínské klony často více zranitelné (95% úspěšnost).</p>
<h2>Nested útoky</h2>
<h3>Klasický Nested útok</h3>
<p><strong>Matematickým základem</strong> je slabina Crypto1 proudové šifry a předvídatelný PRNG v původních MIFARE Classic kartách. Crypto1 používá <strong>48-bitový LFSR s tendenčními filtračními funkcemi</strong>, PRNG používá pouze <strong>16-bitový LFSR s předvídatelným počátečním stavem</strong>, LFSR se resetuje do známého stavu při zapnutí, což činí nonce předvídatelnými prostřednictvím časování.</p>
<p>Útok: <strong>Autentifikace se známým klíčem</strong> produkuje první nonce (Nt1), <strong>vnořená autentifikace</strong> do neznámého sektoru produkuje šifrované nonce ({Nt2}), <strong>časová analýza</strong> umožňuje predikci plaintext Nt2, <strong>XOR operace</strong>: {Nt2} ⊕ Nt2 = 32 bitů keystream, <strong>zpětný chod LFSR</strong> z jakéhokoli vnitřního stavu pro obnovu 48-bitového klíče.</p>
<h3>StaticNested útok</h3>
<p><strong>StaticNested útoky cílí karty se statickými šifrovanými nonce</strong> - protiopatření, které se obrátilo proti sobě tím, že učinilo útoky jednodušší. Někteří výrobci implementovali statické nonce v domnění, že zabrání vnořeným útokům, ale <strong>statické šifrované nonce lze sbírat a analyzovat bez časových omezení</strong>.</p>
<p><strong>Výzkum Quarkslab (2024)</strong> objevil hardwarové zadní vrátka v Fudan FM11RF08S kartách s <strong>univerzálním zadním vrátkem</strong>: společný napříč všemi FM11RF08S kartami, implementace statických šifrovaných nonce ve skutečnosti činí útoky efektivnějšími.</p>
<h3>HardNested útok</h3>
<p><strong>HardNested útok</strong> (vyvíjen Carlo Meijer a Roel Verdult, 2015) představuje významný pokrok, ale přichází se značnou složitostí. Jedná se o <strong>první útok pouze na šifrový text</strong> na zpevněné MIFARE Classic karty, funguje proti kartám s řádnými PRNG (MIFARE Classic EV1, SmartMX), <strong>využívá pouze kryptografické slabiny</strong> v Crypto1, nikoli implementační chyby.</p>
<p>Technický přístup má tři fáze: <strong>Shromáždění šifrovaných nonce</strong> prostřednictvím vnořené autentifikace, <strong>určení sumových vlastností</strong> stavů vnitřní šifry pomocí statistické analýzy, <strong>generování seznamu kandidátských klíčů</strong> a provedení cílené hrubé síly. Používá <strong>sumovou analýzu vlastností</strong> k redukci vyhledávacího prostoru z 2⁴⁸ na ~2³⁰, využívá <strong>hypergeometrické distribuce</strong> pro pravděpodobnostní analýzu.</p>
<p><strong>Současný stav implementace</strong>: Plná implementace existuje v Proxmark3 RRG firmware, vyžaduje <strong>významnou RAM (1,2GB+)</strong> pro ukládání a analýzu nonce, GPU akcelerace (bitsliced) redukuje čas útoku na <strong>5-10 minut</strong>.</p>
<h2>Relay útoky</h2>
<h3>Principy relay útoků</h3>
<p><strong>Relay útoky využívají základní předpoklad</strong>, že blízkost znamená bezpečnost, což umožňuje útočníkům rozšířit komunikační rozsahy a obejít autentifikační systémy bez prolomení šifrování. Útok se skládá z <strong>mole zařízení</strong> umístěného poblíž oběti karty/štítku, <strong>proxy zařízení</strong> umístěného poblíž cílové čtečky, a <strong>komunikačního kanálu</strong> spojujícího obě zařízení.</p>
<h3>Implementace v MIFARE kontextu</h3>
<p><strong>MIFARE Classic</strong> je obecně odolný vůči relay útokům kvůli přísným časovým požadavkům, zranitelný vůči jiným útokům (kryptografické slabiny, obnova klíčů). <strong>MIFARE DESFire EV1</strong> je zranitelnější vůči relay útokům, podporuje rozšíření vzdálenosti až na několik metrů, úspěšně demonstrován v kontrolovaných prostředích.</p>
<p><strong>Technické nastavení</strong> zahrnuje <strong>Proxmark3 platformu</strong> pro průmyslový standard RFID výzkumu a útoků, <strong>řešení založená na smartphonech</strong> s Android telefony s NFC schopností, <strong>vlastní hardware</strong> s PN532, PN533 čipsety, <strong>specializované relay nástroje</strong> za $100-1000.</p>
<h3>Detekce a prevence</h3>
<p><strong>Distance bounding protokoly</strong> měří round-trip time (RTT) výměn challenge-response, odhadují maximální vzdálenost na základě rychlosti světla, detekují neobvyklá zpoždění indikující přítomnost relay. <strong>Environmentální podmínky</strong> zahrnují snímání teploty, magnetometry pro čtení, okolní hluk, fyzickou interakci tlačítkem.</p>
<h2>Srovnávací analýza útoků</h2>
<h3>Účinnost a časová náročnost</h3>
<p><strong>Darkside útok</strong> vykazuje <strong>téměř 100% úspěšnost</strong> na zranitelných kartách s časem <strong>5-30 sekund</strong>, nevyžaduje žádné předpoklady, ale nefunguje na zpevněných kartách. <strong>MFKEY32 V2</strong> dosahuje <strong>85-95% úspěšnosti</strong> na standardních kartách s časem <strong>10 sekund až 5 minut</strong>, vyžaduje emulaci karty pro sběr nonce.</p>
<p><strong>Klasický Nested</strong> má <strong>95%+ míru úspěšnosti</strong> s časem <strong>sekundy až minuty na sektor</strong>, vyžaduje alespoň jeden známý klíč. <strong>HardNested</strong> dosahuje <strong>80-90% úspěšnosti</strong> s časem <strong>15-25 minut celkem</strong>, vyžaduje jeden známý klíč plus významné výpočetní zdroje.</p>
<h3>Hardware požadavky a dostupnost</h3>
<p><strong>Premium tier</strong> zahrnuje Proxmark3 RDV4 za $270 a iCopy-X za $400-500. <strong>Střední třída</strong> obsahuje Chameleon Ultra za $120-130 a Flipper Zero za $170. <strong>Rozpočtové možnosti</strong> nabízejí ACR122U za $40-60 a čínské Proxmark klony za $50-80 (nedoporučované).</p>
<h3>Obranná opatření a detekce</h3>
<p><strong>Detekce na straně čtečky</strong> zahrnuje monitoring neobvyklých autentifikačních vzorů, časovou analýzu rychlých pokusů o autentifikaci, monitoring míry chyb s vysokou mírou NACK odpovědí. <strong>Protiopatření na úrovni karty</strong> obsahují vylepšení PRNG (MIFARE Classic EV1), potlačení NACK odpovědí, časové limity autentifikace, diverzifikaci klíčů.</p>
<h2>Praktické aspekty implementace</h2>
<h3>Nástroje a konfigurace</h3>
<p><strong>Software nástroje</strong> zahrnují <strong>mfoc</strong> (MIFARE Classic Offline Cracker) pro implementaci &quot;offline nested&quot; útoku, <strong>mfcuk</strong> (MIFARE Classic Universal toolKit) pro implementaci Darkside útoku, <strong>libnfc</strong> verze 1.7.1+ pro nízkoúrovňovou NFC komunikaci, <strong>crapto1 knihovnu</strong> pro implementaci šifry Crypto-1.</p>
<p><strong>Proxmark3 příkazy</strong>:</p>
<pre><code class="language-bash">hf search          # Základní detekce karty
hf mf mifare       # Darkside útok
hf mf nested       # Nested útok
hf mf hardnested   # Hardnested útok
hf mf autopwn      # Automatizovaná sekvence útoků</code></pre>
<h3>Časové a výpočetní požadavky</h3>
<p><strong>Sběr dat</strong> typicky vyžaduje <strong>2-10 sekund blízkosti karty</strong>, stabilní RF pole během sběru nonce, schopnost emulovat odpovědi karty čtečce. <strong>Výpočetní fáze</strong> potřebuje moderní procesor (1-2 jádra dostačující), 256MB RAM minimum pro ukládání kandidátů, čas 10 sekund až 5 minut pro obnovu klíče.</p>
<h3>Právní úvahy a etické směrnice</h3>
<p><strong>Právní požadavky</strong> zahrnují <strong>písemné povolení</strong> povinné před jakýmkoli testováním, definici rozsahu s jasnými hranicemi a omezeními, pravidla zapojení s detailními parametry testování. <strong>Zakázané aktivity</strong> obsahují neautorizovaný přístup, klonování karet, finanční podvody, narušení soukromí.</p>
<h2>Bezpečnostní doporučení</h2>
<h3>Okamžitá opatření</h3>
<p><strong>Hodnocení rizik</strong> vyžaduje <strong>okamžité bezpečnostní posouzení</strong> RFID systémů, implementaci dalších autentifikačních vrstev kde je to možné, monitoring neobvyklých autentifikačních vzorů, zvážení těchto útoků v modelování hrozeb.</p>
<p><strong>Systémová bezpečnost</strong> zahrnuje <strong>správu whitelistů</strong> s databázemi schválených UID, behaviorální analýzu pro monitoring neobvyklých přístupových vzorů, multi-faktor autentifikaci kombinující RFID s PIN/biometrickou verifikací, <strong>monitorování síťové bezpečnosti</strong> pro detekci rapidních pokusů o autentifikaci.</p>
<h3>Dlouhodobá migrace</h3>
<p><strong>Bezpečné alternativy</strong> zahrnují <strong>MIFARE DESFire EV2/EV3</strong> s AES-256 šifrováním, <strong>MIFARE Plus</strong> se zpětnou kompatibilitou a AES-128 bezpečností, kompletní upgrade infrastruktury s výměnou všech karet a čteček. <strong>Kvantově odolné řešení</strong> začínají být dostupná pro dlouhodobou bezpečnost.</p>
<h2>Závěr</h2>
<p>RC522/MIFARE Classic ekosystém představuje <strong>studii selhání bezpečnosti skrze utajení</strong>. Navzdory rozšířenému nasazení činí fundamentální kryptografické slabiny v šifře Crypto1 tyto systémy <strong>zcela nevhodné pro jakékoli bezpečnostně citlivé aplikace</strong>.</p>
<p><strong>Kombinace lineárního designu šifry, slabé správy klíčů a předvídatelných protokolových toků</strong> vytváří mnohočetné vektory útoků, které byly rozsáhlé zdokumentovány a vykořisťovány od roku 2008. Organizace používající MIFARE Classic systémy čelí <strong>úplné kompromitaci bezpečnosti</strong> a měly by upřednostnit migraci na kryptograficky bezpečné alternativy.</p>
<p>Výzkum pokračuje ve vývoji pokročilejších útočných technik i obranných opatření. <strong>Kvantové výpočty a AI/ML detekční systémy</strong> představují budoucí směry jak pro útočníky, tak obránce. Pro bezpečnostní specialisty je kritické <strong>udržovat si aktuální znalosti</strong> těchto vyvíjejících se hrozeb a implementovat proaktivní obranné strategie.</p>
<p><strong>Klíčová doporučení</strong> zahrnují okamžité posouzení všech RFID systémů v infrastruktuře, implementaci dodatečných bezpečnostních vrstev, plánování migrace na moderní standardy s kvantově odolnou kryptografií, a vytvoření kontinuálních monitorovacích procesů pro detekci potenciálních útoků. Pouze proaktivní přístup k těmto fundamentálním bezpečnostním slabinám může chránit kritické systémy před stále se vyvíjejícími hrozbami.</p>

<div class="twitter-share"><a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.hardwired.dev%2F2025%2F09%2F14%2Fkryptograficke-utoky-nfc%2F&#038;via=hessevalentino&#038;related=hessevalentino%3AValentino%20Hesse%20OK2HSS" class="twitter-share-button">Tweet</a></div><p>The post <a href="https://www.hardwired.dev/2025/09/14/kryptograficke-utoky-nfc/">Kryptografické útoky NFC</a> first appeared on <a href="https://www.hardwired.dev">Hard Wired</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
