Hallo Hier mal ein RFID Reader Funkmodul mit dem RFM12. Das Modul beruht zum größten Teil auf das Pollin RFID Board. Es wird ein U2270B und ein ATtiny2313 und ein RFM12 Funkmodul verwendet. Die benötigte Lesespule ist selbst gewickelt. Ich erreiche damit eine Leseweite von ca. 5cm mit den kleinen Schlüsselanhängern von Pollin. Funktionsweise: Das Modul liest nur den Tag ein und sendet diesen per RFM an eine Basisstation. Da das Modul für ein Security-System entwickelt wurde, ist im Modul auch der Zustand der Base-Station (Alarm-State) gespeichert. Dieser wird nach anlegen der Betriebspannung (12V- !!!) vom RFID-Funk-Modul von der Basis-Station angefordert. Dies hört man durch ein kurzes piepen und die DUO-LED leuchtet in diesem Moment gelb. Daraufhin wartet das Modul auf eine Antwort. Gleichzeitig läuft über dem Timer ein Timeout. Hat die Base-Station nicht innerhalb des Timeouts geantwortet wird der Vorgang (get_status) bis zu 9x wiederholt. Gab es bis dahin immer noch keine Antwort, dann wird ca. 8s gewartet um danach einen Restart durchzuführen. Während der Wartezeit blinkt die DUO-LED gelb. Falls das Modul schon beim Starten sich so verhält dann stimmt irgendetwas mit dem Empfang nicht. Betriebszustand Alarm inaktiv: Die DUO-LED leuchtet grün in diesem Zustand grün. Hält man jetzt einen Tag in das Lesefeld der Spule wird der Tag eingelesen (DUO-LED leuchtet gelb und für die Zeit des einlesens ertönt der Piepton), alle erforderlichen Sicherheitsabfragen (CRC-Checks) gemacht und wenn alles okay ist per RFM der Tag (im ASCII-Format) mit dem Kommando $ 20 + "Tag" an die Base-Station geschickt. Die Base-Station muss nun den Tag auf Gültigkeit prüfen und dem RFID-Funk-Modul antworten. Das RFID-Funk-Modul wartet während dessen auf eine Antwort der Base-Station. Diese hat jetzt folgende Möglichkeiten als Antwort: (Kommando) $18 = False Tag (Tag ist ungültig) -> RFID-Modul ohne Aktion $19 = ALARM ON (Tag ist gültig) -> RFID-Modul wechselt State: Alarm aktiv $20 = ALARM OFF(Tag ist gültig) -> RFID-Modul wechselt State: Alarm inaktiv Ist der Tag gültig und als Antwort kanm eine $20 zurück wird vom RFID-Modul für 3s der Türkontakt geschlossen. Hier kann zum Beispiel ein Türöffner angeschlossen werden um mit dem RFID auch eine Zutrittskontrolle zu ermöglichen. Hält man den Tag längere Zeit (ca. 3s) in das Lesefeld der Spule wird dies als "scharf schalten des Systems" gewertet. Das RFID-Modul sendet daraufhin das Kommando $19 + "Tag" zur Base-Station und wartet wiederum auf die Antwort und reagiert dementsprechend. Betriebszustand Alarm aktiv: Die DUO-LED leuchtet in diesem Zustand rot. Hält man jetzt einen Tag in das Lesefeld der Spule wird der Tag eingelesen (DUO-LED leuchtet gelb und für die Zeit des einlesens ertönt der Piepton) und wenn alles okay ist per RFM der Tag (im ASCII-Format) mit dem Kommando $20 + "Tag" an die Base-Station geschickt. Nun wird wieder auf die Antwort gewartet und demensprechend reagiert. Ist der Tag gültig und als Antwort kanm eine $20 zurück wird vom RFID-Modul wieder für 3s der Türkontakt geschlossen. Fehlerbehandlung: Sollte bei allen Aktionen keine Antwort (Timeout) oder eine ungültige Antwort empfangen worden sein, wird dies wieder mit gelben leuchten der DUO-LED angezeigt und wie beim Start des Moduls mit der Fehlerbehandlung begonnen und im Extremfall ein Restart erzwungen. Es können auch mehrere RFID-Funk-Module in dem Funknetz eingebunden werden. Jeder dieser Funkmodule reagiert dann dementsprechend auf eine Änderung des Alarmstatus welches durch ein anderes Modul hervorgerufen wurde. Sollte dabei der Alarmstatus von aktiv zu inaktiv erfolgen, öffnet nur das Modul die Tür mit welchem der Alarm aufgehoben wurde. Ich habe es bis jetzt nur mit 2 Modulen getestet. Aber mit diesen funktioniert es jedenfalls. Grüße Steffen
Und... was passiert, wenn ich mir einen schwarzen Hut aufsetze, mich mit RFM12-Empfänger und Laptop in die Nähe der Anlage setze, den vom RFM12 übertragenen "Tag" Wert mitlese und aufschreibe, in mein eigenes RFID einspeichere und damit die Tür öffne? Oder ein beliebiges RFID-Tag vor den Reader halte und mit meinem eigenen RFM12-Modul ein $20 sende?
Na sowas.. Naja, deswegen geb ich ja den Code mit bei. Dann kann man sich das alles so abändern damit keiner auf solche Ideen kommt der mit dem schwarzen Hut ;-) Nan könnte ja auch die Bytes des Tags nach einem bestimmten Schema vertauschen und auswerten.
Na das als "Security-System" zu bezeichnen finde ich so gewagt wie das Login-Fenster von Windows95, das man einfach schließen konnte, um sich "einzuloggen"! Eine einfache und vermutlich sehr effektive Lösung wäre ein One-Time-Pad: Basestation und Modul erhalten identische komplett mit (echten! -> Hardware Random Number generator) Zufallszahlen vollgeschriebene 4GB SD-Karten. Das Modul verschlüsselt das Tag beim Senden mit einem 4byte-Wert von der Karte, und die Basestation sendet zum öffnen einen Wert von ihrer Karte, der eben mit dem entsprechenden Wert beim Modul übereinstimmen muss. Alle 500.000 Schaltvorgänge muss man die Karten dann einmal "neu befüllen", dafür könnte man sich ein Gerät bauen oder ein hübsches Programm schreiben.
Ja nun, wenn man einen PRNG verwendet kann man die Tür auch gleich offen lassen ;-) Und sooo schwer ist das wohl auch nicht. Einfacher als einen kompletten auf asymmetrischer Kryptographie (RSA oder so) basierenden Authentifizierungs-Algorithmus auf Modul+Basisstation zu implementieren, vermutlich...
Der Weise schrieb: > Ja nun, wenn man einen PRNG verwendet kann man die Tür auch gleich offen > lassen ;-) Dazu muss man aber erstmal den Startwert kennen.... Wenn man auf nummer sicher gehen will kann man diesen mittels ADC und Rauschgenerator in regelmäßigen Abständen erzeugen und den PRNG damit neu starten. Aber PRNG an sich brauchts schon. Eine weitere Möglichkeit zur einfachen Kryptographischen Absicherung wäre ein Challange/Response verfahren. Das Modul an der Tür sendet die Tag-ID und eine Zufallszahl an die Basistation. Die Basistation nimmt beide Werte + ein Passwort (welches das Türmodul natürlich auch kennt, also einen PSK), hängt alle 3 Werte hintereinander + den Wert für OK oder FALSE und jagt alles durch ne Hashfunktion und sendet diesen Hashwert. Das Türmodul macht dasselbe einmal für OK und einmal für FALSE und vergleicht die Werte mit dem Empfangenen Hashwert. Somit kann es herausfinden was die Basistation geantwortet hat und kann sich sicher sein dass das Kommando auch von der Basistation kam (ohne Kentniss des Passworts kann kein gültiger Hash erzeugt werden). Durch die Zufallszahl ist das ganze auch sicher gegen Replay-Angriffe. Das wird nicht einfach zu knacken sein. Diese Methode würde lediglich die Implementierung einer (Kryptografischen) Hashfunktion wie MD5 oder SHA1 vorraussetzen und man müsste sich nicht mit SD Karten rumschlagen. Der Nachteil ist, man kann keine wirklichen Nutzdaten damit übertragen. gruß cyblord
cyblord ---- schrieb: > Dazu muss man aber erstmal den Startwert kennen.... Ich schätze mal mit etwas Rechnen ist das nicht sonderlich schwierig, wenn man genug Übertragungen mitgeschnitten hat... So etwas wie das mit dem ADC meinte ich ja mit Hardware-RNG. Aber deine Idee könnte wohl auch gehen.
Du hast natürlich im Bezug auf den PRNG recht. Für One-Time-Pad muss der Schlüssel einfach sehr gut sein. Grundsätzlich reicht hier ein PRNG, der nur einige echte Zufallszahlen als Seed hat, nicht aus. Aber der TE sollte an dieser Stelle noch nachbessern. Ein solches System steht und fällt ja mit der Sicherheit. Und diese ist in der aktuellen implementierung nicht gegeben. Das wäre also keine Erweiterung sondern gehört zu den KERNFUNKTIONEN. Ein einfaches vertauschen von Bytes (Security-by-Obscurity) sollte man lassen. Die Frage ist halt, wie hoch muss der Aufwand für das Knacken des Systems sein. Wird es nur an einer normalen Haustür eingesetzt, ergibt sich für einen Einbrecher schon sehr früh dass hier das Einschlagen einer Fensterscheibe wohl zielführender ist. gruß cyblord
Hallo Aber woher weiß denn hier der Einbrecher das hier ein RFID Modul mit Funk arbeitet? Und wenn ja, bei welcher Frequenz arbeitet es? Des weiteren, wie sind die gesendeten Daten zuzuordnen? Diese kleine Applikation sollte ja auch nur ein Beispiel sein. Wer meint noch nicht sicher genug zu sein, kann ja all die Verschlüsselungen noch mit einbauen. Ich überlege auch schon wie ich eine zusätzliche Verschlüsselung der Daten lösen könnte. Allerdings ist der ATtiny2313 jetzt schon mit 92% Code gefüllt. Grüße Steffen
> Aber woher weiß denn hier der Einbrecher das hier ein RFID Modul mit > Funk arbeitet? Und wenn ja, bei welcher Frequenz arbeitet es? Des > weiteren, wie sind die gesendeten Daten zuzuordnen? Sag ich doch: "Security by Obscurity". Wenn es das ist was du willst. Aber sowas ist halt nicht sicher. Wenn du einen komplett ungeschützten Türöffner an deinem Haus haben möchstest... Ich würde das nicht so machen, aber jeder wie er will. > Wer meint noch nicht sicher genug zu sein Naja NOCH sicherer als bisher ist ja nicht besonders schwer. > Ich überlege auch schon wie ich eine zusätzliche > Verschlüsselung der Daten lösen könnte. Gab hier ja jetzt schon einige Vorschläge dazu.
Steffen H. schrieb: > Aber woher weiß denn hier der Einbrecher das hier ein RFID Modul mit > Funk arbeitet? Für deine eigene Haustür mag dies sicher genug sein. Sollte jemand auf die Idee kommen mit so etwas den Zugang zu einem Unternehmen oder etwas anderem, wo sich Sachen/Daten von Wert befinden, zu sichern, könnte sich der Aufwand für einen potentiellen Dieb ("Spion") lohnen, Antennen und Spektrum-Analyzer in Position zu bringen...
Hallo, ich kaufe das Sicherheitszubehör meiner Ferrari-Sammlung ( siku ) immer bei Pollin ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.