Arduino "sichere" Funkverbindungen - Implementierungsideen?

Hallo Gemeinde, ich würde gerne eine Art Garagentoröffner für Motorräder bauen, nur für mich privat. Ich habe bereits einen elektrischen Garagentorantrieb mit Funk allerdings nicht genügend Funksender und Absteigen vom Moped und das Tor öffnen ist ein bisschen nervig ;) Obwohl die Funksender mit 60-80€ nicht so teuer wären, hatte ich die Herausforderung dahingehend gesehen, dass ich zum manuellen Toröffnungstaster im Innenraum der Garage einfach einen Arduino parallel setze welcher ein eigenes Funksystem etabliert und dann entsprechend mit eigenen Funksendern kommunizieren kann. Da ich das ganze dann doch irgendwie gerne verschlüsselt hätte und ggf. auf 433MHz auslegen würde (da Module bereits vorhanden) und somit relativ sicher machen würde wollte ich fragen ob es bereits derartige Implementierungen gibt welche ich mir als Inspiration nehmen könnte? Ich denke sowas in der Art von Wechselcodes - bin aber auch für neue Sachen aufgeschlossen :) Ob also alle Parteien jeweils immer einen Sender und Empfänger beinhalten sollen, darüber bin ich mir noch nicht sicher. Sicher wär's wohl wenn jeder senden und empfangen kann... Wenn ihr also Libs kennt oder Sketche - immer her damit. Auch Tipps/Ideen gerne gesehen!

Viele Grüße!

Nimm für sowas lieber was fertiges, das kannst du auch parallel dazu klemmen. Billiger, sicherer, zuverlässiger, kleinere Sender, etc.

ElEspanol: Nimm für sowas lieber was fertiges, das kannst du auch parallel dazu klemmen. Billiger, sicherer, zuverlässiger, kleinere Sender, etc.

Ja, die Motivation war schon dahingehend, dass ich's selber mache ;)

hi,

falls Du zur garage an einer mauer/einem pfeiler vorbeifährst, andere möglichkeit:

ein NFC-reader. die karten/schlüsselanhänger kosten kaum was, kann man beliebig verteilen, und wenn einer verlorengeht, einfach die nummer löschen.

gruß stefan

Hallo,

also die üblichen Garagentoröffner für den Hausgebrauch sind von der Sicherheit in der Regel sehr einfach gestrickt. Bestenfalls ein einfacher Rolling Code, im Empänger wird der gerade verwendete Code eine bestimmte Zeit lang geblockt - fertig.

Die Profilösungen arbeiten bidirektional, also da sendet der "Empfänger" ein Packet zurück das wiederum vom "Sender" Authentifiziert wird. Das geht durchaus mit Arduino, die NRF24L01 Module sind praktisch wenn es nicht sehr weit gehen muss... Auch ist das Signal auf 2.4GHz für eventuelle Gauner nicht leicht zu identifizieren zwischen den ganzen allgegenwärtigen WLAN und Bluetooth Trägern...

Christian

PS.: klassisches RFID ist mitlerweise auch sehr leicht zu umgehen, unauffällige RFID Cloner sammt beschreibbaren Tags gibts in Fernost für weniger als ein originaler Arduino kostet :o

Ich mach mich in der nächsten Zeit auch an etwas ähnlichen ran. Allerdings werde ich kein eigenes Protokoll oder irgendwas verschlüsseln. Das wäre für meine Zwecke (einfache Hausautomation mit LEDs) zu overpowered.

Mein jetziger Ansatz schaut im Groben etwa so:

Der Sender funkt ein Code der den Empfänger scharf macht und signalisiert das eine Statusänderung ansteht. Mit diesem wird auf Empfängerseite ein enges Zeitfenster für den eigentlichen Code geöffnet. Der Code enthält wiederum sowas wie eine Anfangs- und Endprüfsumme.

Um es noch sicherer (sicher ist relativ) zu machen kann man wie elektron es beschrieben hat, es über eine beidseitige Kommunikation machen. Vielleicht den Code mit einem Datum/Zeitstempel (der nicht sofort ersichtlich ist) zu versehen damit der Code nie gleich ist, oder oder...

Bei einem Garagentoröffner muss man sich das hingegen genau überlegen. Die Wahrscheinlichkeit dass da jemand die Gegend mit einem Scanner ausspioniert, kann man nicht wirklich abschätzen. Man hört so einiges, wie Kriminelle entsprechende Geräte für eine Dauer in der Nähe platzieren.

Ich mache das über Wifi und MQTT. Braucht natürlich irgendwo zumindest einen Raspi als Server im Netz, dafür kann man das ganze übers Handy steuern und das Tor schon aufmachen, wenn man auf der Abfahrt ist.

Ich denke, dass einfachste ist tatsächlich die Variante von electron. Ich speicher einfach dann die letzten generierten Codes am Empfänger und blocke diese bis kurz bevor Speicher überläuft.

Ich habe bis jetzt noch nie mit dem internen EEPROM gearbeitet. Meint ihr, dieser ist dafür zu gebrauchen? Das Tor wird maximal 4mal pro Tag im Sommer geöffnet und geschlossen. Ich kenne mich mit der Fehleranfälligkeit des Speichers nicht aus, meine aber gehört zu haben, dass dessen Lebensdauer stark (?) eingeschränkt ist?!

Wenn ich die Codes dann noch pseudozufällig erzeugen lasse und ne Prüfsumme mit reinbastell sowie ein festes Codewort dann sollte das schon passen :) Danke für euren Input!

Die garantierte "Lebensdauer" sind 100 000 Schreibzyklen. Praktisch wurden schon viel mehr erreicht aber das ist nicht garantiert.

Wenn Du meinst mehr zu brauchen, wäre ein I2C-FRAM eine Möglichkeit. DIe seínd schneller, haben unbegrenzte Schreibzugriffe und behalten ihren Inhalt auch bei fehlender Betriebsspannung (lt. Hersteller 151 Jahre, wobei ich mir sicher bin, das das keine Praxiserfahrung ist ;) ) Wenn Interesse besteht, kann ich da noch Infos geben, ich habe sie im Einsatz.

Gruß Tommy

Tommy56: Die garantierte "Lebensdauer" sind 100 000 Schreibzyklen. Praktisch wurden schon viel mehr erreicht aber das ist nicht garantiert.

Wenn Du meinst mehr zu brauchen, wäre ein I2C-FRAM eine Möglichkeit. DIe seínd schneller, haben unbegrenzte Schreibzugriffe und behalten ihren Inhalt auch bei fehlender Betriebsspannung (lt. Hersteller 151 Jahre, wobei ich mir sicher bin, das das keine Praxiserfahrung ist ;) ) Wenn Interesse besteht, kann ich da noch Infos geben, ich habe sie im Einsatz.

Gruß Tommy

Sehr, sehr gern! :)

Die Lib ist im Nachbarforum Posting #22 als letzter Stand.

Zu empfehlen sind die FM24C64B (64 KBit also 8 KByte) und FM24C256B (256 KBit also 32 KByte). Der FM24C16B (16 KBit also 2KByte) hat eine etwas adressenhungrige Ansteuerung. Sie werden aber alle von der Lib unterstützt.

Die Preisunterschiede sind verschwindend.

Beispielsketchs sind auch in dem Thread enthalten.

Gruß Tommy

MySensors unterstützt Authentifikation. Da ist das auch kryptographisch halbwegs durchgedacht, inklusive optionaler Unterstützung von Hardwarekomponenten (ATSHA). Ich würde davon ausgehen.

NeedSomeMoreHelp: ich würde gerne ...

IMO übertreibst Du maßlos. Gibt es in der Garage irgendetwas, das den Aufwand lohnen könnte, eine Verschlüsselung zu knacken? Hast Du auch eine entsprechende „Sicherung“ gegen simples Aufbrechen des Tores?

Gruß

Gregor

Tommy56: unbegrenzte Schreibzugriffe

In der Praxis ja. Theoretisch sind es nur ca. 100 Milliarden bis Billionen. So ca. 10^10 bis 10^14 je nach Typ

Das Tor wird maximal 4mal pro Tag im Sommer geöffnet und geschlossen. Ich kenne mich mit der Fehleranfälligkeit des Speichers nicht aus, meine aber gehört zu haben, dass dessen Lebensdauer stark (?) eingeschränkt ist?!

"4 mal am Tag im Sommer" sind unter 1000 im Jahr. Die magische 100.000 ist also gut für hundert Jahre. So lange halten z.B. die Arduino-Steckverbinder eher nicht.

Hmm spontan würde ich mir iwas selber zusammenprogrammieren. z.B. einen endlos Zahlengenerator (ggf. wenn mehr Sicherheit dann mit Zeichen und Sonderzeichen) der auf beiden Seiten (Empfänger/Sender) läuft und nach jedem Tor öffnen/schließen eine neue Zahl erstellt die bei Empfänger und Sender somit gleich sind und beim nächsten Öffnen/Schließen abgeglichen werden. Danach wird dann wieder neue neue Zahl generiert usw. Ich den nen einfachen Algorithmus könnte man sich selbst überlegen oder einen gängigen aus dem inet nehmen. Damit man allerdings die generierten Zahlen beim Übertragen nicht einfach abfangen kann und sich den Algorithmus des Zahlengenerators ausknobeln kann würde ich noch nen par Zufalls-Bytes "Müll" dazwischen packen der auf der Gegenseite wieder rausgefiltert wird und das ganze zusätzlich mit einem gängigen Verschlüsselungsverfahren verschlüsseln. Ich denk dann ist es sicherlich einfacher das Tor aufzubrechen als den Datenmüll zu entschlüsseln, denn Müll rauszufiltern und den Algorithmus des Zahlengenerators zu knacken.

Kryptographie auf den AVR Arduinos ist problematisch. Du hast einfach nicht viel Speicher für aufwendige Verfahren. Ich habe mal spaßhalber eine ganz naive Version von DES implementiert, was recht gut ging. Etwas langsam, aber für kurze Sequenzen kein Problem. DES ist natürlich an sich durch die sehr kurze Schlüssellänge nicht mehr sicher, aber Triple-DES ist eine Option.

Aber wie gesagt übersteigt der Aufwand bei weitem den Nutzen

Bin dabei mir etwas zusammenzustricken wie Patrick es geschrieben hat. Vielen Dank! Ich denke auch, dass der EEPROM das nun mitmacht :D Vielen Dank für eure Meinungen! Guten Rutsch euch allen!

Wie gesagt, oder man macht es gleich vernünftig mit HMAC.