Türöffner mit iButtons

Seit dem Umzug in die Hüttenstraße besitzen wir eine sehr tolle Eingangstür, der unsere Vermieterin ein Motorschloss spendiert hat. Dies war gewünscht, damit alle Mitglieder jederzeit den Raum betreten können, ohne herkömmliche Schlüssel verteilen zu müssen. Die sind nämlich nicht revokable, was besonders in Hackspaces sehr schnell zu Problemen führt.

Da das ursprünglich geplante System sich verzögerte, wurden zunächst doch wieder mechanische Schlüssel verteilt. Ziemlich schnell begannen sich wieder die selben Probleme zu zeigen wie im alten Clubraum. So entstand recht schnell ein Dauerprovisorium auf Basis einer Dockstar und einem AVR, welches über WLAN und SSH Einlass gewährt. Die Implementierung war ziemlich stabil und erfreute sich zunächst großer Beliebtheit.

Mit der Zeit stellte sich aber heraus, dass SSH eigentlich total unpraktisch ist. Nicht jedes Mitglied hat ein Smartphone. Akkus sind in der Regel genau dann leer, wenn man sie braucht. Es regnet. Oder es dauert zu lange, sich mit dem WLAN zu verbinden, SSH anzuwerfen, eventuell noch eine Passphrase einzugeben… etwas besseres musste her.

RFID-basierte Lösungen wären zwar sehr bequem, allerdings fernauslesbar, und fallen somit weg. Lösung: iButton. Kleine vandalismussichere Tokens in Form einer Knopfzelle, die eine zufällige ID enthalten. Zum Auslesen ist direkter Kontakt notwendig. Es gibt ein einfaches Lesegerät, welches sich als USB-Tastatur ausgibt und einfach die ID übermittelt. Diese kann man dann auf der Dockstar mit einer Whitelist vergleichen und dann die Tür öffnen.

Wir kamen zu dem Schluss, dass die Sicherheit der von mechanischen Schlüsseln entspricht, denn auch diese können kopiert werden, sobald man erst einmal direkten Zugriff auf sie hat. Als wesentlicher Vorteil kommt allerdings hinzu, dass jedes Token eine andere ID enthält, sodass man kompromittierte Tokens einfach revoken kann. Die Tokens kosten rund einen Euro und das Lesegerät ist im zweistelligen Bereich. Wir wollen das haben.

Wir bauen eine neue Klingel

Abgesehen davon, dass die alte Klingel wirklich nicht schön aussah, ist es auch nicht möglich, das iButton-Lesegerät dort zu verbauen:

Überlegung: eine einfache Abdeckung, in der der Reader und der Klingeltaster versenkt werden können. Als Hackerspace schaut man sich dabei natürlich bei Ikea um und findet in der Nähe von Pflanzen eine kleine Edelstahlschale, die auf den Namen Florera hört.

Da wir ohnehin nicht vorhaben, sie mit Kieselsteinen und Duftkerzen zu füllen, bohren wir einfach mal zwei Löcher:

Sinnvollerweise besitzt der Reader von Haus aus keinerlei Möglichkeit, ihn irgendwo zu befestigen. Ein extra dafür angeschafftes Schneideisen hat seine Aussparungen praktischerweise genau an derselben Stelle wie der Plastiknüpsi. Also würgen wir eine Mutter drauf und erhalten gerade genug Gewinde, um mit vielen Unterlegscheiben für einen festen Sitz zu sorgen:

Kurze Überprüfung, ob die Löcher zur Wandbefestigung richtig gebohrt wurden: Passt! Dank mehr Hardware benötigt die neue Klingel auch mehr Platz in der Wand. Zeit, unseren neuen Bohrhammer auszuprobieren.

Ein wenig Neuverkabeln, u.a. für den iButton-Reader, und schon ist der Hardware-Teil auch schon fertig.

Die Software

Für die iButtons gibt es ein Lesegerät, das sich als USB-Keyboard anmeldet und die ID eines erfolgreich eingelesenen Tokens eingibt. Ziemlich simpel eigentlich. Damit die ID nicht auf der Systemkonsole und damit in /bin/login (oder sonstwo) landet, grabbt ein kleines Tool mit evdev das Device und reicht sie an ein Shellskript weiter, welches die ID mit einer Whitelist vergleicht.

Der Code befindet sich auf Github.