Ebben a cikkben ismertetni fogom, MFRC522 RFID kaput és Mifare Classic 1K kártya felépítésé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.
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:
Vá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.
Gyá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ő.
A 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:
Amikor 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)
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:
Az á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.
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:
Az adat blokkok:
„Sector Trailer” blokkok:
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.
A termék megvásárolható a webshopban