Vorschlag zur Erhöhung der Sicherheit von RFID

  • Hallo zusammen,


    ich lese schon seit einiger Zeit hier im Forum und finde es einfach genial, was Ihr auf die Beine gestellt habt. Ich suchte nach einer Opensource-Sprechanlage schon seit einiger Zeit.
    Mit großem Interesse habe ich die Diskussion über die Sicherheit von RFID gelesen (Sicherheit von DoorPi mit RFID, iButtons, ...).


    Im FHEM -Forum hatte Henryk Plötz etwas dazu geschrieben und eine lib entwickelt, die die Sicherheit von RFID-Türöffnern extrem erhöht (NFC-Tags steuern FHEM). Die passende Diskussion und die Erklärungen finden sich auch bei diesem Thema. Die entwickelte lib ist Openscource und scheint gut dokumentiert (https://github.com/henryk/libopenkey).


    Ich halte dies für total genial und sehr, sehr sicher!


    Kann jemand das in den DoorPi einbinden? Ich biete mich gerne als Tester an. Andere einfache Aufgabe kann ich auch erledigen.

    • Offizieller Beitrag

    Ich verstehe den Wunsch (RFID-Reader -> DoorPi -> FHEM) allerdings nicht den Mehrwert der neuen Lib in diesem Zusammenhang (hab aber ehrlich gesagt auch nicht alles gelesen).
    @pahenning hat auf http://www.fhemwiki.de/wiki/DoorPi_und_FHEM beschrieben, wie DoorPi Daten an FHEM übertragen kann. Wenn dort erst die Auswertung erfolgen soll, dann wäre das eine Möglichkeit.

  • Hi,


    Zuerst der Hinweis, dass ich die lib nur theoretisch verstanden habe und kein Programmierer bin und gerade dabei bin mich in den DoorPi einzuarbeiten.


    Grundsätzliches:Bis jetzt ist es so, das von allen RFID-Karten immer die UID der Karte ausgelesen wird und verglichen wird und dann gff. eine Aktion (Tür öffnen) erfolgt.
    Der Nachteil der UID ist, dass diese, wie auch auch bei iButtons, relativ einfach ausgelesen werden kann. Besonders bei RFID geht es auch über weite Entfernungen. Der Grund ist, dass der Leser die Karte nach der UID fragt und diese sich meldet. Die Antwort der Karte ist nur über einen kurze Entfernung abzugreifen. Anschießend fragt der Leser nochmal Karte mit der UID xyz bitte melden. Die Nachfrage des Lesers lässt sich auch über eine weitere Entfernung abhören. Außerdem verrät die Karte jedem Leser ihre UID.


    Nun der Mehrwert:
    Die lib nutzt die Verschlüsselungstechnik der Karte und auf der Karte wird ein Schlüssel hinterlegt. Der Leser selber hat auch einen Schlüssel. So wie ich es verstanden habe läuft es jetzt nach dem Prinzip mit öffentlichem und geheimen Schlüssel ab. Dadurch weiß die Karte, dass sie nur mit dem passenden Leser "spricht" und der Leser, dass er nur mit der passenden Karte spricht.
    Am Ende kommt eine sogenannte UUID raus, die dann eindeutig ist.


    Die Lib steht nur zufällig im FEHM-Forum, weil da die Idee entstanden ist. Es hat aber nichts mit FEHM zu tun. Dort wurde es leider nicht weiter verfolgt.


    VG,
    Ruhri

  • Ich denke, dass es ein neues Keyboard wäre.


    Das tool "openkey-authenticator" der lib gibt bei vorhandener RFID-Karte die UUID aus. Aus meiner Sicht müsste ein Keyboard bei einer erkannten RFID-Karte dieses Programm ausführen, das dann die UUID bereitstellen, die dann wiederum eine Aktion/ein Event auslöst. Das Keyboard wäre somit ähnlich dem bestehenden nur, dass es noch den Zwischenschritt mit dem Tool geht und die nicht die UID, sondern die UUID ausgibt.


    VG,
    Ruhri

  • Hi,
    ich habe mich jetzt soweit eingelesen und getestet, dass der DoorPi läuft. Jetzt muss er noch in ein schönes Gehäuse und ich muss noch den Sound verbessern und Echo loswerden.


    Zu der Sicherheitsverbesserung:
    Ich habe die oben von mir beworbene Bibliothek leider nicht zum Laufen bekommen. Es scheint, dass sie nicht mehr gepflegt wird. In der libfreefare gab es eine Änderung der Tag-Namen, die nicht in die libopenkey übernommen wurde. Ich habe dies einfach mal von Hand gemacht. Dann konnte ich die Bibliothek ohne Fehlermeldung kompilieren (Ich hoffe, dass das mit dem "make" so heißt). Beim Einrichten einer neuen Karte bekomme ich aber immer den Fehlercode -13.


    Hat es auch sonst schon jemand getestet? Ist das bei euch auch so oder habe ich etwas falsch gemacht? Hat jemand soviel Ahnung von Programmieren, dass er versteht, was es mit diesem Fehlercode auf sich hat?


    Viele Grüße,
    Ruhri