Projekty urządzeń wykorzystujących technologię RFID są nadal wszechobecne, a same urządzenia – choćby do kontroli dostępu – są tanie i łatwe w użyciu. Niestety, tańsze urządzenia nie zapewniają wysokiego poziomu bezpieczeństwa – dlatego też wszechobecne są różnego rodzaju klony kart czy tagów RFID. Mimo to najprostsze tagi RFID są nadal powszechnie używane, choćby do kontroli dostępu w dużych firmach.
Autor, zainspirowany podobnym rozwiązaniem, postanowił stworzyć własny klon kary RFID. Powstał także projekt czytnika kart RFID, aby autor mógł bez problemu śledzić dane odbierane z karty i stworzyć dzięki temu swój własny, uniwersalny klucz RFID. Klucz pracuje doskonale z czytnikiem do otwierania bramy garażowej autora, jak i z wieloma innymi czytnikami, co potwierdzają przeprowadzone testy.
Więc czy niniejszy uniwersalny klucz RFID pozwoli dostać się do każdego, zabezpieczonego w ten sposób, pomieszczenia? Owszem, o ile zostaną spełnione dwa warunki: po pierwsze, czytnik musi pracować z tagami RFID opartymi o częstotliwość 125 kHz i używać takiego samego standardu kodowania danych, jaki został użyty w projekcie; po drugie, należy znać numer identyfikacyjny nadrukowany na karcie RFID – po jego wpisaniu w urządzenie będzie można emulować konkretną kartę.
Termin „technologia RFID”, czyli identyfikacja z wykorzystaniem fal radiowych, jest używany do określania licznych standardów, które pozwalają na odczyt danych zapisanych w tagu bezprzewodowo, z wykorzystaniem fal radiowych. Istnieje kilka odmian standardu, typów kodowania danych i częstotliwości pracy będących w użyciu. Opis będzie dotyczył identyfikatorów RFID opartych o częstotliwość 125 kHz, co jest standardem w przypadku urządzeń kontroli dostępu.
Identyfikator RFID oparty o częstotliwość 125 kHz mają najczęściej postać plastikowej karty lub okrągłej zawieszki. Identyfikator składa się z cewki, połączonej z mikroprocesorem. Kiedy zostaje zbliżony do czytnika, w cewce indukowana jest energia. Ma ona dwojakie wykorzystanie: po pierwsze, zapewnia źródło zasilania dla identyfikatora, a po drugie – stanowi medium przekazu danych pomiędzy czytnikiem a kartą RFID. Po zasileniu, identyfikator moduluje strumień bitów w sposób zrozumiały dla czytnika. Jeśli odczytany przez czytnik kod będzie zgodny z zapisanym nastąpi np. otwarcie drzwi. Przyłożenie nieautoryzowanego identyfikatora nie będzie miało wpływu na stan czytnika.
Dane pomiędzy identyfikatorem a czytnikiem przesyłane są w sposób zakodowany, z wykorzystaniem modulacji bifazowej – kodu Manchester. Pozwala to na przesyłanie danych w jednym strumieniu, z którego można łatwo wyodrębnić sygnał zegara. W modulacji bifazowej w „połowie” każdego transmitowanego bitu następuje zmiana poziomu logicznego – transmisja logicznej jedynki będzie polegała na przejściu ze stanu niskiego do wysokiego, a logicznego zera – ze stanu wysokiego do niskiego.
Karty bądź zawieszki RFID posiadają zwykle wydrukowany na obudowie numer – mówi on, jakie dane zapisane są w identyfikatorze RFID. Przykładowo, karta z wydrukowanym numerem 0007820706 119,21922 prześle do czytnika następujący strumień danych:
1111111110010111000000000000001111011110101001010101000010101100
gdzie pierwsze 9 bitów stanowi sekwencję startową – wskazuje czytnikowi, że następować będzie właściwa transmisja danych. Zapisane dane transmitowane są w 4-bitowych blokach, z bitem parzystości na końcu każdego bloku. Powyżej zapisany strumień może być podzielony więc następująco:
00101 11000 00000 00000 01111 01111 01010 01010 10100 00101 0110 0
Jeśli pominąć bity parzystości, uzyskujemy:
0010 1100 0000 0000 0111 0111 0101 0101 1010 0010 0110 0
co odpowiada wartości heksadecymalnej 2C007755A2 i sumie kontrolnej (0110) oraz bitowi stopu. Kod heksadecymalny zawiera następujące dane: 2C (stały kod, wysyłany przez wszystkie karty i będący identyfikatorem standardu RFID), 0077 (co odpowiada dziesiętnej wartości 119) oraz 55A2 (co odpowiada wartości 21922) – jak widać, jest to dokładny kod, jaki został zadrukowany na karcie. Dodatkowo, wartość 7755A2 odpowiada wartości dziesiętnej 0007820706, również zadrukowanej na karcie.
W jaki sposób emulowana jest karta RFID? Będący sercem urządzenia procesor moduluje pole 125 kHz z wykorzystaniem prostego układu opartego o mostek prostowniczy – kiedy na wejście takiego układu podawany jest stan niski, diody przewodzą prąd wyindukowany w cewce, co przez czytnik rozpoznawane jest jako bit transmisji. Cewkę transmisyjną stanowi 100 zwojów drutu.
Rolą mikroprocesora jest więc jedynie wystawianie odpowiedniego strumienia zer i jedynek do układu modulującego – rzecz jasna w sposób rozpoznawalny dla czytnika.
Program dla procesora został stworzony w środowisku Arduino IDE. Autor zaimplementował proste menu i możliwość wpisania identyfikatora wprost z wbudowanej klawiatury, a także możliwość wyświetlania zapisanych danych z wykorzystaniem diod LED. Tryby pracy są następujące: uśpienie urządzenia, wpisywanie identyfikatora w formacie heksadecymalnym, wprowadzanie identyfikatora w trybie dziesiętnym, wyświetlanie wprowadzonych danych oraz tryb emulacji karty.
Schemat urządzenia można zobaczyć poniżej. Układem steruje procesor ATMega168.
Autor zaprojektował także płytkę drukowaną dla urządzenia. Płytka dostosowana jest wielkością do powszechnie stosowanych kart RFID.
Na stronie projektu można znaleźć szerszą dyskusję dotyczącą sposobu wyliczania sumy kontrolnej i bitów parzystości transmitowanych danych, informacje dotyczące kompatybilności urządzenia z innymi systemami RFID, rady, jak polepszyć bezpieczeństwo systemów bezstykowej identyfikacji oraz – rzecz jasna, schemat i wzory płytek drukowanych, a także kod źródłowy dla procesora.
Fajne? Ranking DIY
