In meinem Artikel zur Verwendung des RFID-Moduls „RC522“ am Arduino habe ich bereits mögliche Anwendungen vorgestellt. Eine davon – der (OS-) Login mittels entsprechendem Tag – habe ich mittlerweile umgesetzt. Meine Umsetzung ist in diesem Artikel dokumentiert.

 

Hardware

Wie erwähnt nutze ich als RFID-Modul das günstige RC522, das es ab ca. 2€ inklusive Tags in China zu kaufen gibt. Als Arduino benötigt ihr für die direkte Umsetzung einen Arduino Leonard, Pro Micro oder ein anderes Modell mit 32u4 Microcontroller. Kostenmäßig liegt ihr aktuell bei China-Modellen bei ca. 3€ mit einem Pro Micro und ca. 4€ mit einem Leonardo. Eine Hand voll Jumper-Kabel werden zum prototypischen Aufbau ebenso benötigt.
Der Anschluss erfolgt wie in dem weiter oben erwähnten Artikel. Hier eine entsprechende Skizze:rc522_leonardo

Software

Auch hier verwende ich die Bibliothek MFRC522 zum Auslesen der Tags über das Modul. Installiert diese und ladet das Beispielprogramm „DumpInfo“ aus der Bibliothek auf euren Arduino, um eure Tags auszulesen. Anschließend einfach den seriellen Monitor öffnen und den gewünschten Tag an das Lesegerät halten. Ihr erhaltet nun einen Haufen Informationen, die für das weitere Vorgehen aber größtenteils irrelevant sind. Lediglich die UID wird benötigt. Notiert diese also am Besten.
Anschließend kann der Arduino schon mit dem Passwort-Sketch beladen werden. Dieser sieht wie folgt aus:

Auf eure Bedürfnisse kann dieser sehr simpel konfiguriert werden. Lediglich die beiden Konstanten „VALID_UID“ und „MY_PASSWORD“ müssen mit euren Daten befüllt werden. Die ersten Konstante enthält die UID eures Tags (die ihr zuvor ausgelesen und notiert habt) als String (Zahlen + Kleinbuchstaben), die zweite Konstante enthält euer Passwort als String (Groß- und Kleinschreibung wie in eurem Passwort). Mehr müsst ihr gar nicht ändern.

Ihr könnt euch nun an eurem Rechner einloggen, indem ihr statt des Passworts einzutippen einfach den Tag an den RFID-Leser haltet. Der Arduino tippt anschließend automatisch euer Passwort ein und bestätigt mit Enter. Das sollte plattformunabhängig funktionieren (Mac, Windows 7 und Xubuntu getestet).rfid_login

 

Funktionsweise

Wie das Ganze funktioniert ist schnell erklärt. Der Sketch prüft, ob die UID des Tags mit der in der Konstante definierten UID übereinstimmt und falls ja werden Tastatureingaben ausgeführt. Dadurch lässt sich der Loginvorgang bei einem langen Passwort stark beschleunigen. Um Mehrfachauslesungen des Tags und damit weitere Passworteingaben beim Ranhalten des Tags an das Lesegerät zu verhindern, wurde ein kleines Delay von einer Sekunde eingefügt.

Beachtet bitte, dass die vorgestellte Methode keine 100%ige Sicherheit gewährleistet. Es gibt spezielle Mifare Tags, bei denen die UID verändert werden kann. Ein Angreifer könnte euren RFID-Chip somit kopieren und damit Zugang zu eurem Rechner erhalten. Auch kann sich natürlich jeder, der euren Tag in die Finger bekommt am Rechner anmelden und euer Passwort auslesen. Für die meisten Nutzer im Privatgebrauch sollten das allerdings kein allzu großes Problem darstellen, da die Ausnutzung der zusätzlichen Authentifizierungsmethode durch Angreifer relativ unwahrscheinlich ist.

 

Erweiterungen

Der Sketch und die Hardwareschaltung lässt sich natürlich beliebig erweitern. So wäre denkbar, mehrere Tags verwenden zu können (für das gleiche oder separate Passwörter) oder über Schalter Passwörter auswählbar zu machen.

Dem Einbau der Schaltung in Kunststoffgehäuse sollte mit dem Pro Micro ebenfalls nichts im Wege stehen, da eine kleine Kunststoffschicht zwischen Lesegerät und RFID-Tag kein Problem darstellt beim Auslesen.