















| | | | Mottó: A szabályos közlekedés és az utópia szinonimák. /Vavyan Fable/ | 2012. szeptember 29. | | | | MIFARE-play II. | | | | | 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 UltraLight C egy egyszerűbb, eldobható eszköznek szánt kártya, azonban a régebbi MIFARE UltraLight kártyával szemben itt már szükséges egy 3DES algoritmuson alapuló hitelesítés (authentication).
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 UltraLight C modell dokumentációján (illetve egyéb nyilvános információkon) alapul. A memória (EEPROM) felosztása:


A "lock bytes", illetve "OTP" bitek beállításainak leírása nyilvánosan nem, csak a 137631 azonosítójú "CONFIDENTIAL" dokumentumban érhető el. A hozzáférési jogosultságok megszerzését 2-kulcsos 3DES (CBC-módú) rejtjelezésen alapuló protokoll biztosítja. A különböző, publikus anyagokhoz (pl. "IEEE konferenciaanyag") egy megadott kulcskészletet lehet használni, amely a "libfreefare" forráskódjából is kiolvasható:


A hitelesítési protokoll a mifare_ultralightc_authenticate() függvényben követhető nyomon. A "libfreefare" forráskódja, illetve az "IEEE konferenciaanyag" és "ACR122 NFC olvasó" teszt vektorai segítségével a protokoll visszafejthető.


A pseudo-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 a pseudo-APDU utasítások leállítják az automatikus kártyakeresést (disable automatic polling), 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ő pseudo-APDU utasítások értelmezése az alábbiakban olvasható.
- pseudo-APDU: FF 00 51 00 00

- pseudo-APDU: FF 00 00 00 04 D4 42 1A 00

- pseudo-APDU: FF 00 00 00 13 D4 42 AF 89 81 7F E2 A8 D7 18 08 F7 03 D9 1B DC 40 01 6F

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