MFRC522 RFID kapu és Mifare Classic 1K kártya ismertetése

Ebben a cikkben ismertetni fogom, MFRC522 RFID kaput és Mifare Classic 1K kártyát. Sajnos a teljesség igénye nélkül teszem ezt, az idő hiányában.  A leírást egy a Githubon lévő arduino könyvtárban találtam angol nyelven. A későbbiekben ismertetni fogom a modul komplett beüzemelését is egy példafeladaton keresztül. Ezt most azért nem teszem meg, mert hatalmas lenne a terjedelme a cikknek ha a két leírást egyben készíteném el. A következő cikkemben meg fogom osztani ezt a könyvtárat amibe integrálták ezt az angol nyelvű leírást. Addig is lássuk a kártyák felépítését.

original-nxp-mifare-classic-1k-card-printing

NFC-TAG-Mifare-Card-04

Ahogy a képeken is látszik többféle kiszerelésben készítik ezeket az azonosítókat. Alakjukban és memória méretükben is lehetnek eltérőek. Az alap az 1K-s RFID azonosító kártya, de létezik belőle 4K-s és a mini, amit inkább mobiltelefonokban használnak, talán ezek a legelterjedtebb kártyatipusok amiket az NXP gyárt. Ezen felül még akad belőle pár típus. Ezeket megnézhetjük itt. Én részletesebben csak a Mifare Classik 1Kb-os kártyával fogok foglalkozni.

A Mifare Classic 1K kártya (továbbiakban csak kártya), ahogy a nevéből is adódik 1 Kb-os memóriát tartalmaz. A kártya az antennán keresztül egy induktív visszacsatolással olvassa a memóriát. Az üzemi frekvenciája 13.56 Mhz-es. Az 1K-s memória 16 részre van felosztva. Ezeket két különböző kulccsal kódolták A és B kulccsal, de ne rohanjunk ennyire előre. Kezdjük az elején.

Az RFID kapu és a kátya közötti azonosítási metódus:

azonositasVálaszkérés (Answer to Request):

Az RFID kapu a válaszkérési sorrendet betartva azonosít minden Mifare kártyát, amíg az antenna tartományán belül van. Ha a kártya az RFID kapu szabványának megfelelő, akkor a kártyához tartozó megfelelő protokollal folytatja a kommunikációt.

 Ütközésmentes hurok (Anticollision loop):

Az RFID kapu azonosítja a kártyát, ha a kártya az RFID kapu működési tartományán belül van, akkor továbblép a “Select Card” metódusra. Ellenben az RFID kapu stadby módba helyezi magát és vár a következő kérésre.

Kártyaválasztás (Select Card):

A “Select Card” paranccsal az RFID kapu kiválasztja a kártyát a további azonosításra és memóriaműveletekre. A kártya visszatér egy “Answer to Select (ATS)” kóddal, amivel meghatározza a saját egyéni típusát.

Hozzáférési Specifikáció (Access Specification):

Miután a kártya kiválasztása és azonosítása megtörtént, az RFID kapu meghatározza a memóriában a további hozzáférések helyzetét.

Háromlépéses azonosítás (Three Pass Authentication):

A megfelelő hozzáférési kulcs a következő műveletekhez egy 3 lépcsős azonosítási műveletet használ. Minden más kommunikációt az azonosítás után a küldő kódolni a fogadó pedig dekódolni fog.

Írás/Olvasás (Read/Write):

Az azonosítás után a következő műveletek lesznek elérhetőek:

READ egy blokkot kiolvas
WRITE egy blokkot beír
DECREMENT dekrementálja az egyik blokk tartalmát majd elmenti a változást a regiszterbe
INCREMENT inkrementálja az egyik blokk tartalmát majd elmenti a változást a regiszterbe
TRANSFER a regiszter értékét beírja az egyik blokkba
RESTORE az egyik blokk értékét elmenti a regiszterbe

 

Az MF1ICS50 IC-be ami a Mifare Classicban van, integrálva van egy 8192 Bit-es EEPROM ami fel van darabolva 16 szektorra és szektoronként 4 blokk van benne. Minden egyes blokk 16 byte-os (1 Byte = 8 Bit). Ennek az elosztása látható a következő ábrán.

memoriadarabolasGyártó azonosító kódja (Blokk 0 a nulladik szektorban):  Az első blokk a memóriában fent van tartva a gyártói adatoknak, mint például a 32 bites széria számnak. Ez egy ún. “Read Only” blokk, ami csak olvasható.  A legtöbb dokumentációban ezt nevezik a nulladik blokknak.

Adat blokkok: A második és a harmadik blokk (1 és 2-es blokk) az adat blokk. A “sector trailers”-ben definiálják a hozzáférési állapotát az egyes adat blokkoknak. Ezen állapotok szerint az adat lehet olvasott, írott, inkrementált, dekrementált, másolt vagy elmentett állapotú valamelyik kulccsal, vagy nem hozzáférhető.

BlocksA 4-ik blokk az összes szektorban a “sector trailers”. A “sector trailers” tartalmazza az A kulcs (KEYSECXA) hozzáférését vagy válaszhatóan a B kulcs (KEYSECXB) hozzáférhetőségét valamint az összes blokk hozzáférhetőségét ebben a szektorban. Ha a B kulcs nem szükséges az utolsó 6 byte használható adat tárolására. A megfelelő hozzáférhetőségi beállítások meg lettek jelölve a táblázatban.

A sector trailer hozzáférhetősége:

sectortrailer hozzaferesAmikor a B kulcs olvasható (szürkével jelölve) akkor a neki fentartott memóriába adat írtható, ezért nem használható authentikációs műveletekre, mert akkor az összes további memória művelet hibás lesz.

Az adat blokkok hozzáférhetősége: (Y = 0-tól 2-ig)

adat blokkok hozzaferes

Az adat blokkok inkrementálása és dekrementálása a kártya IC vezérlésével történik.

Az átviteli kód:

átviteli kódAz átviteli kód a gyártó által előre meg lett határozva, az A kulcs (KEYSECXA) egy titkos kulcs amit csak a gyártó és a rendszerintegrátor ismer.

Az MF1ICS50 IC két féle adatblokkot használ. Vannak a “read/write” blokkok, amikbe 16 byte írható és olvasható adat helyezhető el. Plusz vannak az érték blokkok. Ezeket elektronikus tárca funkciókra használják (olvasás, inkrementálás, dekrementálás, átvitel, és mentés). Ezeknek a felépítése speciális mert egy 4 byte-os azonosítóval kezdődnek. Ez mindig fent van tartva a 16 byte-ból. Ezeket hiba detektálásra és javításra használják, az érték blokkokon belül a tárolni kívánt értéket háromszor tárolják. A maradék 4 byte le van foglalva az ellenőrző biteknek.

valueblock  Az értéket 32 biten kétkomplemensű formában tárolják háromszor. (A háromszoros tárolás következtében, a chip ellenőrzi az értékeket még mielőtt bármilyen műveletet engedélyezne)

A címbit 8 bites amit négyszer tárolunk el. Ennek a byte-nak nincs belső ellenőrzése.

A “blokk 0” felépítése:

block0Az adat blokkok:

datablocks“Sector Trailer” blokkok:

sector_trailers

Az MFRC522-es RFID kapu és a MIFARE Classic kártya ismertetésébe részemről sajnos csak ennyi fért bele. Egy következő cikkben majd részletesebben foglalkozok a felhasználási módokkal, az arduino-s kapcsolással. Addig is mindenkinek kellemes olvasást.

(Statisztika: 34 megtekintés)

Vélemény, hozzászólás?

Az email címet nem tesszük közzé.