















| | | | Mottó: Bäng bäng Feuer frei! /Rammstein: Feuer Frei!/ | 2012. október 23. | | | | MIFARE-play III. | | | | | Figyelem! Az alábbi bejegyzésben kizárólag olyan adatok szerepelnek, amelyek nyilvános forrásokból is megismerhetők, azaz üzleti titkot nem sértenek!
A Nemzeti Egységes Kártyarendszer (NEK) keretében különböző MIFARE (NXP/Philips) kártyák kerülnek bevezetésre 2012-2014 során. A BKK megvalósíthatósági tanulmányából tudjuk, hogy a tömegközlekedésben a MIFARE UltraLight C és MIFARE DESFire EV1 kártyákat vezetnék be (erről részleteket ld. az "All In" bejegyzésemben).
A MIFARE DESFire EV1 egy összetettebb és emiatt költségesebb eszköz, inkább tartós használatra szánták. A hitelesítés (authentication) 3DES szimmetrikus kódoló algoritmuson alapul a MIFARE UltraLight C kártyához hasonlóan.
A MIFARE eszközöknél fejlesztői szemszögből nézve a legfontosabb az első lépés, azaz hogy lehet megszerezni a szükséges jogosultságokat pl. a kártya írásához. A többi már csak néhány írás-olvasás parancs kiadása...
A jelen bejegyzés a MIFARE DESFire EV1 modell dokumentációján (illetve egyéb nyilvános információkon) alapul. A memória (EEPROM) felosztása:
Nincs részletes leírás a memória felosztásáról azon túl, hogy rugalmasan lehet kialakítani.
A hozzáférési jogosultságok megszerzését 2-kulcsos 3DES (CBC-módú) rejtjelezésen alapuló protokoll biztosítja (léteznek más módok is, de azokra jelen összefoglaló nem tér ki). A "libfreefare" forráskódjából is kiolvashatók bizonyos kulcsok, azonban néhány publikus anyagnál (pl. "MSDN fórum" is) a szűz kártyák alapértelmezett kulcsait kell használni:


A hitelesítési protokoll a mifare_desfire_auto_authenticate() illetve mifare_desfire_authenticate() függvényekben követhető nyomon. A "libfreefare" forráskódja, illetve az "MSDN fórum" és "ACR122 NFC olvasó" teszt vektorai segítségével a protokoll visszafejthető.
Az APDU utasítások az ACS saját, "ACR122U PC/SC Scripting Tool" segédalkalmazásával kezelhetők.
Az alábbi példában az APDU utasítások kezdeményezik a hitelesítési "handshake"-et a kártyánál, a megkapott "challenge" adatok alapján kiszámolt "response" értékét visszaküldik és várják a kártya jóváhagyását.


A példában szereplő APDU utasítások értelmezése az alábbiakban olvasható.
- APDU: 90 0A 00 00 01 00 00

- APDU: 90 AF 00 00 10
22 95 75 18 68 13 46 31 30 C0 4D B0 34 8A EF C0 00

Kapcsolódó anyagok:
| | vissza | | | | |
|