Záverečné technické otázky zo 17.-18.3.2014

Na tomto mieste uvádzame záverečné technické otázky.

Diverzifikácia prístupových kľúčov na kartách DESFire

Obidva diskutované algoritmy natívne podporuje aj Mifare SAM AV2 s utajeným kľúčom.

Bezpečný a perspektívny CMAC na báze AES-128

Mifare striktne odporúča "nový" algoritmus CMAC a my by sme to nemali ignorovať, keď chceme DESFire alebo jeho kompatibilnú náhradu používať ešte 10 rokov alebo dlhšie.

Preto navrhujem CMAC používať na nových preukazoch, ktoré sa začnú vydávať podľa tohto usmernenia. Na to bude treba zaregistrrovať nové AID.

Starý algoritmus na báze AES-128

Doteraz používaný algoritmus Mifare označuje ako "starý", Je jednoduchý a opiera sa o silnú kryptogrrafiu, takže ho nemusíme zavrhnúť.

Preto navrhujem starý algoritmus nechať dožiť na starých kartách so starým AID. Len kvôli diverzifikácii kľúčov snáď nemusíme preformátovať karty alebo robiť iné zložitosti, keď p. Orenič k tomu hlási rôzne problémy:

  • Zmenou metódy diverzifikácie musíme zmeniť na všetkých DES kartách kľúče, čo pri takom množstve prolongovaných DES kartách v septembri by určite prinieslo pokazené karty.
  • Momentálne spôsob diverzifikácie je podľa štandardov a ide o AES takže žiadne výrazné posilnenie bezpečnosti by sa nekonalo
  • Tým že kľúče nemáme (Cominfo ani EMTEST) softvérové ale v SAMoch bude komplikované najpr diverzifikovať jedným spôsobom pre čítanie a potom zase diverzifikovať iným spôsobom pre zapísanie iného kľúča, vidia v tom veľmi vážny problém obaja dôležitý dodávatelia (Mráz aj Maňák) aj keď nie neriešitelný
  • Skoro neriešitelný problém by s tým mali vo Zvolene, kde im 1. rok vydával kľúče EMTEST a tam majú len zapisovací kľúč na súbory a nie na AID takže by to vôbec nevedeli prekľúčovať.

Poznamenávam, že rovnaká diverzifikácia by sa mala používať na čítacie aj zapisovacie a správcovské kľúče na karte.

Diverzifikácia prístupových kľúčov na kartách Classic

Do úvahy prichádzajú len také algoritmy, ktoré vieme zrealizovať aj pomocou Mifare SAM AV2 (kvôli utajeniu kľúčov). Musíme však vylúčiť "starý" algoritmus na báze 3DES, ktorý sa už nepovažujú za dostatočne bezpečný.

CMAC na báze AES-128 s podporou klientskej aplikácie

CMAC na kartách Classic vieme vykonať programovo v hostiteľskom počítači (v klientskom programe) aj pomocou modulu SAM. hoci ten ho na týchto kartách natívne nepodporuje.

Navrhovaný postup:

  • celý algoritmus CMAC napíšeme v klientskom programe
  • len na šifrovanie údajov algoritmom AES-128 použijeme modul SAM v režime off-line
  • prvých 6 bajtov z diverzifikovaného kľúča aplikácia použije ako fyzický kľúč na prístup na kartu

Z bezpečnostného hľadiska by sme mohli namietať, že v prípade čipov Classic diverzifikované (fyzické) kľúče budú krátkodobo prítomné v pamäti aplikačného programu a mohli by sa nejako zneužiť. Ale keď si uvedomíme, že fyzické kľúče ku kartám sa dajú získať (prelomiť) aj jednoduchším spôsobom, toto riziko je prakticky bezvýznamné. Dôležité je uchovať v tajnosti spoločné prístupové kľúče v moduloch SAM.

Emil Jamrich - všetko inak ?

  • Riskujúc upálenie za kacírstvo si dovoľujem navrhnúť simple & stupid riešenie:
    1. všetky záznamy v aplikácii budú z pohľadu čítania free access (key 0x0E na desfire, vendor default key na classic)
    2. záznam 1 bude šifrovaný K1
    3. záznam 2 bude šifrovaný K2
    4. doplníme nový nešifrovaný záznam 3, do ktorého presunieme dátumy platnosti od, do, timestamp, verziu záznamov a verziu podpisového kľúča
    5. na koniec záznamu 3 doplníme podpis nad šifrovaným Z1 + šifrovaným Z2 + nešifrovaným Z3 + UID
  • Vyriešené problémy:
    • problém "192B" (ZA, ZV) - pôvodná dĺžka Z1 a Z2 už bude vyhovovať, netreba nič predlžovať
    • problém výmeny kľúčov a zmeny diverzifikačného algoritmu "za jazdy" (ZA,ZV) - nebude čo riešiť
    • potenciálne problémy kompatibility rôznych SAM modulov
    • štruktúra záznamov na obidvoch kartách bude znovu jednotná
  • Ako bonus získame možnosť overiť originalitu preukazu a jeho časovú platnosť (zo Z3) aj bez znalosti kľúčov K1 a K2, čím by sa značne zredukovala množina poskytovateľov, ktorým treba distribuovať K1 a K2.
  • Prípadné prečítanie dátumov platnosti "z vrecka" nevidím ako bezpečnostný problém. Dtto platí pre "otvorenosť" šifrovaných záznamov - v prípade obáv môžeme použiť aes256 a najbližších 50r máme vystarané, odhliadnuc od toho, že odvodiť čítací kľúč z K1/2 a tým istým K1/2 záznam šifrovať stupeň zabezpečenia príliš nezvyšuje.

Kolega Jamrich intenzívne podporuje prípravu usmernenia svojimi pripomienkami a dobrými radami už niekoľko týždňov. Tento jeho návrh pôsobí vskutku "odpudivo", lebo všetko to, o čom tu prebehla (alebo skôr neprebehla) diskusia od začiatku roka, staviia na hlavu v posledných dňoch plánovanej prípravy usmernenia. Ale skúsme sa zamerať na racionálne jadro návrhu:

  1. Na utajenie údajov používame tajné prístupové kľúče a niekde aj šifrovanie. To je zjavne prehnané, keďže za istých okolností údaje v karte by mohli byť úplne verejné (kontaktný čip, tieniace karty). Takže verejné kľúče (bez diverzifikácie) a ochrana len šifrovaním sú pre mňa úplne OK. Len o tomto som tu už hovoril (aj v súvislosti s NDEF) a nikto nehorel nadšením. Poznamenávam, že na kartách Classic už máme verejný kľúč v MADe a aj to umožňuje rýchlejšie prelomenie karty (Maňák).
  2. Pre tento koncept by som navrhol v DESFire vytvoriť jediný záznam 512 B (alebo len 480 B) a všetko v ňom nejako pekne usporiadať. Staré karty 2x 192 B + 1x predĺženie 128 B by nejako dožili.
  3. Neviem kam dám 3. záznam v Classic. Jednoduchšie bude terajšie 2 sektory pojať ako spoločný priestor s kapacitou 480 B.
  4. K1 a K2 by boli šifrovacie kľúče pre 1. a 2. dátový záznam - ak majú mať odlišné prístupové práva.
  5. Elektronický podpis bude spoločný pre celú dátovú štruktúru v zázname.

Nevýhody:

  • Vždy treba prečítať všetkých 1/2 kB dát, aby sa dal overiť podpis - buď jeden dlhý súbor, alebo 3 krátke, alebo obidva sektory v Classic.

Výhody:

  • Z radosťou sa zbavím záhad okolo diverzifikácie kľúčov.
  • Viem to takto prepísať ešte dnes poobede.
  • Odpútame sa od technológie Mifare
    • už to budú len "šifrované záznamy", ktoré raz môžu ležať aj na inom médiu - USB kľúč, Bluetooth v mobile, NDEF, ...
    • môžeme prestať hovoriť o zraniteľnosti kariet Classic - karty budú len úložný priestor a nič nemusia tajiť. Hoci dopravcovia sa budú ďalej báť o svoje peňaženky.
  • Na médium by si to moho zapísať samotný študent po stiahnutí z webu školy...

Bojím sa rozmýšľať ďalej ... :-)