RFM12 Protokoll

OP #2476001
Lesenswert?

Hallo Community,

versuche gerade theoretisch (also auf Papier) ein Netzwerkprotokoll für 
RFM12 Module zu entwerfen.

Dabei sollen mehrere Microcontroller, die verschiedene Aufgaben in der 
Wohnung übernehmen, miteinander kommunizieren.

Ansätze bisher:
IDLE: Unitname wird gesendet, alle anderen Units speichern den IDLE.

GIVE: Fordert Befehl an. (zb. Messwert vom Terrarium, oder Licht 
einschalten)
RSPNS: Antwort auf GIVE mit enthaltenem Messwert.
OK: Bestätigt den Empfang von RSPNS.

GIVE, RSPNS und OK-Nachrichten werden mit einer msgID miteinander 
Verknüpft.

Derzeit komme ich leider bei der Verschlüsselung nicht weiter:
Den Sendestring (z.b. GIVE:Unitname|temperatur|123) mit einem private 
Key zu verschlüsseln, und beim Empfänger wieder entschlüsseln sollte ja 
nicht so das Problem werden, jedoch bereitet mir die Abhörsicherheit 
noch Kopfzerbrechen:

Angenommen ein verschlüsselter IDLE-Befehl wird abgefangen, d.h. auch 
abgefangene GIVEs können gesendet werden. Auch wenn der Angreifer mit 
den enthaltenen Werten der RSPNS-Befehle nichts anfangen kann, könnte er 
- rein theoretisch - durch angefangene GIVEs recht viel anrichten.

Lösungsansatz1:
Sobald eine GIVE-RSPNS-OK Prozedur abgeschlossen ist, wird die msgID 
gespeichert und gesperrt. Nachteil: Wenn der Speicherplatz am MC aus 
ist, müssen die msgIDs gelöscht werden, womit die gesperrten Nachrichten 
wieder gültig werden -> LECK!

Lösungsansatz2:
Alle Units halten Datensätze an gültigen msgIDs parat. Für jede 
GIVE-RSPNS-OK Prozedur wird eine ID verwendet und danach gelöscht, 
ausserdem wird ein Befehl gesendet, um die verwendete msgID auch auf 
allen anderen Units zu löschen.
Wenn keine msgIDs mehr vorhanden sind, muss ein neuer Stack an IDs 
ausgehandelt werden -> kompliziert und fehleranfällig.

Vielleicht kann mir jemand weiterhelfen.
Vielen Dank,
Markus
Gast #2478319
Lesenswert?

Mahlzeit,

solange 007 nicht unter deinem Sofa wohnt vergesse Verschlüsselung, der 
Aufwand lohnt sich nicht. Die Reichweite der Module ist für einen 
Angriff zu gering. Konzentriere dich auf ein robustes Protokoll.

MfG
OP #2480854
Lesenswert?

Ich hab jetzt vor, jede GIVE-RSPNS-OK Routine mit Sendezeit und ID zu 
versehen. Nach OK oder Fehler wird die ID für x-Minuten gesperrt. Wenn 
jetzt ein Befehl abgefangen und nochmal eingefunkt wird, wird er nur 
angenommen, wenn die ID nicht gesperrt ist, und der Befehl in einem 
gewissen Zeitfenster (x-Minuten) erstellt wurde.

Ergo: Die msgIDs sind nur innerhalb der LifeTime einer GIVE-RSPNS-OK 
Routine relevant, da "tote" Nachrichten generell nicht angenommen 
werden. Tote IDs können verworfen werden (-> es müssen immer nur wenige 
bis gar keine IDs gespeichert werden)

Wenn jetzt aber Befehle im Klartext übertragen werden, können - 
theoretisch zumindest - können einfach eine beliebige "lebende" ID und 
der aktuelle Timestamp verwendet werden, und schon ist das System offen 
für alle Befehle.

Deshalb will ich alle Befehle durch einen XTEA-Algo laufen lassen, um 
die Authentizität der Befehle zu garantieren.

Vielen Dank!
Gast #3742356
Lesenswert?

Version3 ist wohl auch gescheitert? Warum bloß alles so kompliziert? Ich 
hab mir die serielle Funkbrücke mit RFM12 aus der Projektesammlung 
geschnappt und nun fragt die Zentrale schlicht alle Aktoren/Sensoren 
reihum ab die darauf mit einer Rückmeldung reagieren. In den bekannten 
Pausen im Funkverkehr ist auch noch genug kollisionsfreier Platz für 
spontane Ereignismeldungen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren