Forum: Mikrocontroller und Digitale Elektronik Fernbedienung mit RFM69 und AES


von Bernd (Gast)


Lesenswert?

Hallo Forum,

ich benötige ein einfaches Funk-System mit einem Empfänger und einer 
oder mehreren Fernbedienungen. Die Fernbedienungen sollen bis zu 6 
Tasten haben. Es soll im Prinzip nur übermittelt werden, welche Taste 
gedrückt ist. Mehrere Tasten gleichzeitig können erlaubt sein. Solange 
eine Taste gedrückt gehalten wird, soll periodisch eine entsprechende 
Nachricht übermittelt werden. Mit einem Timeout müsste der Empfänger bei 
Ausbleiben der Nachrichten in den Zustand "Taste nicht gedrückt" zurück 
fallen. Also gewünscht ist quasi ein Digitaleingang über eine 
Funkstrecke verlängert. Die Fernbedienungen sollen alle die gleichen 
Funktionen auslösen, ggf. ist eine Unterscheidung der Fernbedienungen 
aber trotzdem sinnvoll (An-/Ablernen bzw. Sperren oder Löschen). Die 
Fernbedienungen sind batteriebetrieben. Der Empfänger soll an einem 
Netzteilgespeisten System durch einen Mikrocontroller ausgewertet 
werden.

Sind dafür die RFM69 Funkmodule geeignet?
Es handelt sich nicht um eine hochkritische Anwendung, aber es soll 
trotzdem nur auf die angelernten Fernbedienungen reagiert werden und 
eine einfache replay Attacke soll möglichst auch verhindert werden.
Würde dazu die integrierte AES Verschlüsselung der RFM69 Module 
ausreichen? Wie kann das Anlernen gelöst werden, da ein fester Key 
Verwendung findet? Im Prinzip wäre aber auch eine feste Programmierung 
je FB denkbar. Ich kenne mich mit AES nicht aus, führt es denn dazu, 
dass ein Funktelegramm immer anders aussieht, auch wenn ich z.B. immer 
wieder Taste 1 drücke?
Oder müssen hier zusätzliche Maßnahmen zur AES Verschlüsselung getroffen 
werden?

Über ein paar unterstützende Antworten würde ich mich freuen.

Gruß
Bernd

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Wenn Du Bluetooth LE verwendest, findest Du eine ganze Reihe von 
µControllern, die das unterstützen. Ausserdem bekommst Du die 
Verschlüsselung umsonst oben drauf.

von Board Geist (Gast)


Lesenswert?

Das AES im RFM69 hat keinen Initialisierungsvektor.

Meint. Wenn du 6 Bits hast, die du zyklisch sendest.
xx010111 dann ergibt das verschlüsselt immer den gleichen Wert yyyAESyy
Das ist nicht replay sicher.
Du musst eigenhändig da etwas +mit+ verschlüsseln, was sich ändert. z.b. 
die Uhrzeit oder einen Zähler.

Dann ändert sich der Wert in deinem AES verschlüsselten Frame jedes mal, 
auch wenn dein Payload gleich ist. Der Zähler darf dann nur in eine 
Richtung funktionieren. Kommt eine Nachricht mit einem kleineren Zähler 
oder einem zu großen... Replay erkannt.

Der RFM69 kann das. Macht auch gleich das AES mit wenn du die Botschaft 
kurz hältst. Es gibt Arduino shields mit dem RFm69, damit umgehst du die 
ersten Probleme direkt und kannst los coden.

Viel Erfolg

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo Bernd,

das AES im RFM69 erzeugt aus einem leserlichen Text einen unleserlichen 
Text abhängig von den Werten, die in den 16 AES-Schlüsselregistern 
festgelegt sind, wobei ein gleicher Text bei gleichem Schlüssel immer 
den gleichen unleserlichen Text ergibt. Im Empfänger geschieht die genau 
umgekehrte Transformation. Die Textlänge ist immer auf 16er-Gruppen 
beschränkt, also 16, 32, 48 oder 64 Zeichen. Im Empfänger muß der 
gleiche Schlüssel eingestellt sein, wie im Sender, wobei man dem 
Empfänger einen neuen Schlüssel übermitteln könnte.

Logische Kanäle lassen sich über sechs spezielle Bits realisieren, die 
im Datenpaket enthalten sind. Ein sinnvoll gestaltetes Datenpaket stellt 
der Programmierer zusammen. Somit kann das ganze Datenpaket entweder 
leserlich oder verschlüsselt übertragen werden. Die Zuordnung zu den 
Sendern würde ich fest im Programm verankern.

MfG

von Bernd (Gast)


Lesenswert?

Vielen Dank für die Antworten. Hatte ich mir fast gedacht, dass es so 
ist.
Vielleicht ist ein unidirektionales Rolling Code Verfahren für 6 Tasten 
doch einfacher.

von Johannes S. (Gast)


Lesenswert?

hier hatte ich mal so ein Projekt angefangen: 
Beitrag "RFM69 12-Kanal Fernbedienung"
funktionierte, aber der 3D Druck kann noch verbessert werden.
Im Moment ist mein Bastelreich noch in Kisten verpackt und ich kann da 
nicht dran weiterarbeiten.

Bernd schrieb:
> Solange
> eine Taste gedrückt gehalten wird, soll periodisch eine entsprechende
> Nachricht übermittelt werden.

da gibt es noch den max Duty Cycle von 1 % bei 868 MHz, ein Dauersenden 
ist da nicht erlaubt.

von Board Geist (Gast)


Lesenswert?

Im Endeffekt willst du ja nur 2 Byte Senden.
Das ist eine mini Payload.

Security by Obscurity Vorschlag:
Verschachteln von Bytes:

Byte1:6 Bits zum Steuern von 6 Anlagen+2Random Bits
Byte2: Zähler, (?umgekehrt polnische Notation)

Wenn alle Türen auf sein sollen (1) und der Zähler nach dem Reset mit 
0x00 startet: 11111100(1) 00000000(2) verschachteln

1010101010100000

damit die Übertragung n bissel abgesichert ist ein mal Redundanz dazu:
1010101010100000.0000010101010101

Wenn du das jetzt noch auf dem Modul AES verschlüsselst, ist das fertig.
Da wären wir also bei 4 Bytes payload. 1 Byte Länge. Machen wir 5 Bytes 
Synchword und es sind 10.

10 Bytes sind bei 100kbs 1ms, für die Duty Cycle Rechnung.
Der Zähler kann natürlich auch ein unsigned long sein statt einem Byte, 
bevor sich die Pfennigheimer wieder beschweren.

Grüße

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
Noch kein Account? Hier anmelden.