DŮLEŽITÉ UPOZORNĚNÍ!
Policie České republiky a šéfcensor Ústavu pro studium totalitních režimů Jaroslav Čvančara varují: citovat jakékoli texty z tohoto blogu způsobuje vážné nebezpečí trestního stíhání! Četba na vlastní nebezpečí!

31. 12. 2012

Opencard prolomena

Když jsem před dvěma lety psal, že pro své experimenty s Arduinem sháním krystal 13,56 MHz, zasvěcení asi tušili, k čemu.

V sobotu vystoupil německý kryptolog Timo Kasper na konferenci v Hamburku a presentoval výsledky svého výzkumu týkajícího se napadnutelnosti karet společnosti NXP (dříve Philips) Mifare Classic a Mifare DESfire pomocí tzv. útoku postranním kanálem (side-channel attack) – zkrácená verse videa s českými titulky. Karty tohoto druhu se používají v mnoha aplikacích i v České republice, nejnotabilněji jako proslavená pražská Opencard a také jako IN karta Českých drah. Kasper dokázal získat hesla všech tří aplikací používaných v Opencard během sedmi hodin.

V zájmu spravedlnosti je dlužno dodat, že Kasper není zdaleka prvním, kdo na nedostatky zabezpečení těchto karet veřejně upozorňoval: již v květnu 2010 své výsledky, týkající se ovšem pouze aplikace používané jako náhrada papírových čtenářských průkazů v Městské knihovně v Praze, presentoval Tomáš Rosa.

20 komentářů :

  1. Dobrá zpráva, snad bude i platná v Novém roce...

    OdpovědětVymazat
  2. A Opencard si vybrali proto, že se dá v Praze díky různym "rozpakům" z implementace ještě pořídit původní (pre-EV1) verze karty? Nebo jim to Mach sponzoroval ze stranický pokladny, aby získal konečně nějaký body?

    OdpovědětVymazat
  3. Uvěřil jsem Wikipedii, že jako Opencard se používá EV1, a vida, není to tak. Ale ani EV1 dlouho nevydrží, side-channel analysa je velmi účinná, protože ze žádného zařízení o rozměru několika mm nemůžete udělat bankovní tresor. Různé ochranné prvky, jako generátory bílého šumu, kovové opláštění chipu a anti-tampering sensory poskytují pouze dočasnou bezpečnost.

    OdpovědětVymazat
    Odpovědi
    1. Co se týká použitých verzí u Opencard tak tuším, že původně používala Miffare Classic, ale ta byla vydána pouze v malém počtu, následně byl použit čip MF3ICD40 a nyní by se snad měl používat čip ve verzi EV1. Jinak první výsledky útoku byly prezentovány cca před rokem. Co se týká countermeasures u EV1 tak by měla používat mimo generátoru šumu (který je téměř k ničemu) tak i techniky maskingu a možná i další techniky hidingu. Tyto techniky tak mohou prodloužit dobu ze 7 hodin na mnohonásobek navíc výzkum může trvat ne měsíce ale mnohem déle což může byt již dostatečná ochrana. Navíc se bavíme stále o state of the art, takže i MF3ICD40, lze považovat stále za relativně bezpečnou. Ale je pravda, že existuji i další útoky jako invazivní nebo template.

      Vymazat
    2. O prolomení DESfire jsem četl poprvé někdy v létě, a měl jsem za to, že autorem kryptoanalysy je Nohl. Protože jsem v té době byl přesvědčen, že Opencard je EV1, nevěnoval jsem tomu velkou pozornost.

      Vymazat
    3. Na to se musím podívat, ale myslím že Karsten Nohl byl u kryptoanalysy Classiku (Crypto-1). DESFire používá 3DES, takže tam moc kryptoanalysy není potřeba dělat. Ta byla dělána v době přijmutí standardu DES. Jinak tady je odkaz, že o útoku bylo NXP informováno v dubnu 2011 http://www.mifare.net/technology/security/mifare-desfire-d40/

      Vymazat
    4. Pořídil jsem si (ke své vlastní) i anonymní Opencard, a hlásí mi versi HW i SW 0.6, což odpovídá MF3 IC D40 (klasická DESfire, pre-EV1).

      Vymazat
  4. Přiznám se že se přesně neorientuji v tom co je výsledkem úspěšného prolomení: možnost duplikace (komunikace) konkrétní instance konkrétní aplikace na konkrétní kartě?

    OdpovědětVymazat
    Odpovědi
    1. Ano, s takovou kopií se dá např. bezplatně používat MHD. Svou cenu má i získání master hesla karty.

      Vymazat
    2. Ano přesně tak je možné duplikovat karty a možná i "dobíjet". Otázka je jaká jsou další zabezpečení na úrovní middlewaru. Např. kupón může byt svázán, přes UID nebo jméno uživatele či jiný identifikátor s danou kartou. Jinak co se týká ohrožení systému Opencard, tak je celkem malé, maximálně si pár desítek uživatelů zkopíruje kartu a to je tak asi všechno (i když o tom pochybuju, že někdo v ČR je schopen tento útok reprodukovat). Větší problém to může být u systémů, který používají karty k přístupu do oblastí s omezeným přístupem nebo pasy a občanky. Jinak pokud máte čas tak celá prezentace je na: http://www.youtube.com/watch?v=Y1o2ST03O8I kde je rozebrán například útok na platební systémy, které byl používán v menze na univerzitě (bylo možné dobíjet kredit a tak jíst zadarmo atd... )

      Vymazat
    3. Děkuji za upřesnění. Pokud budu mít čas, na video se podívám.

      PK

      Vymazat
    4. Z toho videa je to jasnější. Opencard ("probably worst realization of a commercial contactless payment system ever", jak to anoncujou v textu) si vybrali právě proto, že díky způsobu implementace furt používá staré čipy. Holt kvůli dohadům s tou pečlivě vybranou firmou se místo výměny karty nouzově prodlužujou platnosti.

      Vymazat
    5. Bane, "probably worst" je německá MensaCard. Nemůžem si tolik honit triko. Když v tom českym vykradení machovci hřímaj, že soukromník by to neudělal, tak by mě zajímalo jak rozšířený jsou ty přístupový systémy od Siemense v soukromym sektoru ..

      Vymazat
    6. Já bych to nepodceňoval. Rozhodně si teď na Opencard může zapisovat každý, kdo má mobil s NFC.

      MensaCard je Mifare Classic, což je absolutní bezpečností katastrofa. Budu o ní psát, až odtajním své experimenty s Arduinem.

      Vymazat
    7. No o tom silně pochybuju já třeba mobil s NFC mam a zapisovat si na Opencard nemůžu, protože nebyly co já vím zveřejněn MasterKey. Stejně tak to je tuším u KeeLoqu.
      Ano máte pravdu Classic byla absolutní tragedie viz. MFCUK a další nástroje, který prolomý classic do 10minut. Jinak s Arduinem jsem si taky hrál, ale bohužel jsem neměl čas designovat analogový části sám takže jsem použil PN532, což byla bohužel chyba a zabil jsem s ním víc času než když bych si je navrhl. Takže vám přeju hodně štěstí a budu se těšit na výsledky.

      T.

      Vymazat
    8. Masterkey Kasper přečetl, a NFC umí vygenerovat custom request.

      Analogovou část jsem řešil z víceúčelových IO a diskrétních součástek, stejně jako u Proxmarku jsem použil výkonový driver sběrnice, 4 bity proti druhým 4 bitům, čtení přes čtyři operační zesilovače, nějaké filtry a komparátor. Antikolisi to moc nezvládalo, ale pro jednu kartu naprosto spolehlivé. Za PN5xx jsem nechtěl utrácet, raději jsem si ji koupil (PN544) v mobilu.

      Vymazat
    9. To ano to přečetl, ale nebyl zveřejněn a co jsem s ním mluvil tak ani nebude.

      No já jsem nakonec zkončil u desky za 50USD s PN532, protože měla dostupný SAM rozhraní. Ale nyní bych to řešil asi jako vy akorát místo Arduina bych osobně použil něco vykonějšího (kvůli vyšším rychlostem a i jiným normám), experimentoval jsem cSOC SmartFusion. I tak se budu těšit na Vaše výsledky.

      T.

      Vymazat
    10. DESFire používá 3DES, takže tam moc kryptoanalysy není potřeba dělat.

      I útok postranním kanálem je (implementační) kryptoanalysa. A vzhledem k předpokladu, že Praha používá i pro Triple DES v DESfire slabé heslo (např. jen 64-bitové nebo ještě slabší), by ani útok hrubou silou nemusel být bezvýsledný. I když zde asi nebude paralelisace možná, omezením je počet karet k experimentování a délka jedné transakce.

      Vymazat
    11. Ano, máte pravdu, jako kryptoanalýzu jsem spíše bral analýzu matematických vlastností šifry ne útok na implementaci.
      Podle všeho, Opencard používá 128 bit klíč (respektive 112 bit). Jestli byl zvolen klíč samé nuly nebo 123... to už je jiná věc.
      Útok hrubou silou na DES by samozřejmě byl možný pomocí Copacobana nebo Rivyera popřípadě GPU za předpokladu, že by se povedlo získat část plaintextu a ciphertextu například jméno nebo číslo Opencard (nemyslím UID). Útok s přímou komunikaci s kartou by byl podle mě "nemožný". Nechci se tu Opencard zastávat rozhodně si myslím, že za tu cenu jsme mohli mít místo DESFire pomalu SmartMX2. Jenom si myslím, že možná škoda je minimální osobně se obávám, aby se toho někdo nechytil a "zalevno" je nezačal měnit.

      T.

      Vymazat

Kursiva: <i>text</i>
Tučně (když už to musí být…): <b>text</b>
Odkaz: <a href = "http://adresa">název odkazu</a>, tedy <a href = ""></a>

Poznámka: Komentáře mohou přidávat pouze členové tohoto blogu.