Hallo zusammen,
ich habe eine IR-Fernbedienung für mein Auto. Aufgrund der vielen
Nachteile von IR, plane ich, die Übertragung auf RF umzubauen. Dazu
möchte ich die IR-Daten 1:1 in einen bspw. AT89RF401 einlesen, über Funk
versenden, und im Empfänger wieder in IR-Daten umsetzen.
Da der AT89RF401 neben dieser einfachen Aufgabe noch viel mehr kann,
habe ich mir nun überlegt, ob es nicht möglich wäre, eine einfache
Authentifizierung mit einzubauen! Die jetzige IR-Übertragung
funktioniert mit festen Codes, die einfach auszuspähen sind. Wenn ich
schon so eine schöne Funkstrecke mit Rückkanal aufbaue, dann könnte ich
doch gleich eine einfache Authentifizierung mit einbauen.
Leider kenne ich mich mit diesem Thema nicht sonderlich gut aus. Kann
mir jemand einem leichten Algorithmus vorschlagen? Wie wird das
eigentlich bei aktuellen Fernbedienungen gelöst?
Grüße
Steffen
Im Endeffekt ist das Verschlüsseln sowieso überflüssig! Ist der
KFZ-Sender weit genug vom KFZ weg, und ein Unbekannter schafft es den
Öffnen-Knopf zu drücken, kann er den gesendeten Code abfangen. In der
Nähe des KFZ kann er den Code wieder aussenden. Das Auto öffnet sich
(geht nur 1x, da der Code dann "verbraucht" ist).
Fertig! Lass es so wie es ist!
> und ein Unbekannter schafft es den Öffnen-Knopf zu drücken,> kann er den gesendeten Code abfangen.
deshalb werden i. A. auch mehrere Codes ausgewertet - Der Schlüssel
sendet bei Betätigung also mehrere Sequenzen und die müssen alle
stimmen....
Otto
Otto schrieb:
>> und ein Unbekannter schafft es den Öffnen-Knopf zu drücken,>> kann er den gesendeten Code abfangen.>> deshalb werden i. A. auch mehrere Codes ausgewertet - Der Schlüssel> sendet bei Betätigung also mehrere Sequenzen und die müssen alle> stimmen....>> Otto
Und diese mehrere Sequenzen können abgefangen und aufgezeichnet werden!
Die stimmen dann beim Senden 100%. Nur beim Senden des Schlüssels darf
das KFZ nicht in Reichweite stehen, sonst ider der Code "verbraucht"!
Das KFZ kann nicht zwischen einem kopierten und einem echten Signal
unterscheiden!
Otto schrieb:
>> und ein Unbekannter schafft es den Öffnen-Knopf zu drücken,>> kann er den gesendeten Code abfangen.> deshalb werden i. A. auch mehrere Codes ausgewertet
Das ändert aber nichts. Dann müssen eben alle Sequenzen abgefangen,
gespeichert und wieder ausgesandt werden.
Edit: Alex war schneller.
Und durch den Rückkanal ergeben sich tatsächlich noch mehr
Möglichkeiten.
Mann kann dann auch verhindern, dass einer mit dem geklauten Sender über
den Parkplatz läuft und durch Dauerdrücken herausfindet welches Auto zum
Schlüssel gehört.
Hallo Steffen,
rolling code oder code hopping kannst Du suchen.
Interessant: der keeyloq von Microchip war in die Diskussion geraten
(z.B.Toyota), da eine Uni in Deutschland einen Weg gefunden hatte,
den Algorithmus zu knacken (hoher Aufwand). Bericht auch in der ct'.
Bei den Verfahren werden Folgecodes berechnet. Da macht das überhaupt
nichts, wenn einer die Tasten drückt (z.B. in der Kneipe).
Beim nächsten Zusammentreffen von Sender und Empfänger synchronisieren
sich
diese wieder. Sonst hilft nur ein Verfahren mit dem "Hardwareschlüssel".
Allgemein ist, wie bei jeder Alarmanlage, ein durchdachter Selbstbau,
gut, da man nicht auf Standardkomponenten zurückgreift und nicht jeder
Hobbyeinbrecher sofort erkennt, womit er rechnen muss.
Gruss
Dietmar
Danke für Eure Antworten!
Da ich einen Rückkanal habe, dachte ich an sowas wie Challenge-Response.
D.h. das Kfz sendet meiner Fernbedienung eine Aufgabe, diese wird dann
von ihr gelöst und anschließend an das Kfz zurückgesendet.
Allerdings kann ich nicht abschätzen, wie aufwändig die Implementierung
eines solchen Algorithmus ist. Letztendlich geht es mir auch nur darum,
die Möglichkeiten, die ich mir mit dem Funkkanal schaffe, clever
auszunutzen. D.h. eine möglichst sichere Authentifizierung zu finden,
die möglichst simpel zu implementieren ist.
Bis jetzt ist ja schon das Stichwort "Rolling Codes" (sogar mit
App.-Note!) gefallen.
Also der kryptographische Standardweg wäre eine Nounce (PRNG) zur
Fernbedienung zu senden, die mit einem privaten Schlüssel signiert wird.
Der Empfänger im Auto kann damit Zweifelsfrei feststellen, dass die
Nounce nur vom berechtigten (Signierer) zurückgesendet wurde.
Blitzmerker schrieb:
> Hallo Steffen,>> rolling code oder code hopping kannst Du suchen.> Interessant: der keeyloq von Microchip war in die Diskussion geraten> (z.B.Toyota), da eine Uni in Deutschland einen Weg gefunden hatte,> den Algorithmus zu knacken (hoher Aufwand). Bericht auch in der ct'.> Bei den Verfahren werden Folgecodes berechnet.
BMW arbeitet mit dem selben System. Nur halt von Atmel.
> Da macht das überhaupt> nichts, wenn einer die Tasten drückt (z.B. in der Kneipe).
Oh man, wieso versteht Ihr es nicht! Sobald der Sender den Code sendet
(der Code ist ja gültig), der Empfänger aber ausser Reichweite ist, und
ein Sniffer das Signal vom Sender speichert, kann er in Empfangsweite
vom Empfänger durch 1:1 senden des empfangenen Codes das FZ dennoch
öffnen! Und das Beste: Schlüssel und KFZ sind syncronisiert. Schliest
der Einbrecher das KFZ von Hand zu (Knöpfen drücken) merkt der
Betroffene nichteinmal etwas von dem Einbruch!
Das kann jeder der mit RFM12 hier rumspielt selber versuchen!
Maxxie schrieb:
> Also der kryptographische Standardweg wäre eine Nounce (PRNG) zur> Fernbedienung zu senden, die mit einem privaten Schlüssel signiert wird.> Der Empfänger im Auto kann damit Zweifelsfrei feststellen, dass die> Nounce nur vom berechtigten (Signierer) zurückgesendet wurde.
Nützt bei dem oben angewendeten Verfahren genausowenig!
Wenn ich doch das Öffnen in mehrere Schritte aufteile, kann ein Sniffen
nicht mehr viel bringen.
1. Sender sendet 'Hallo Auto, mach mal die Tür auf'
2. Auto antwortet 'Hallo Sender, wie spät ist es denn gerade?'
3. Sender antwortet 'Hallo Auto, 15:37h'
4. Auto antwortet 'Bei mir ist es 15:39h ??'
5. Sender antwortet 'Dann gehst Du 2 min falsch'
6. Das Auto erkennt seinen Meister und öffnet brav die Tür
Selbst wenn in der Kneipe der 1.te Spruch gesnifft wird, bleiben die
anderen Sendungen des Senders ungesnifft.
Wenn man dann den Funkverkehr nicht in ASCII abwickelt und hier und dort
noch ein paar Bit's vertauscht/invertiert, sollte das schon eine gewisse
Sicherheit mit sich bringen.
Man kann auch die Laufzeit zwischen Sender und Auto bestimmen, wenn die
Antwort nach Stunden noch nicht gekommen ist, wird's wohl nicht der
eigene Sender gewesen sein - trotzdem würde ich auch bei empfangenem
Müll eine Antwort raus geben, obgleich diese Anfrage eh nicht mehr
gewertet wird.
Ansonsten könnte man sich an die richtige Antwort herantasten, immer,
wenn die Antwort gepasst hat, wird die Reaktion des Senders länger - und
länger geht auch so :)
Stichwort asymmetrisches Kryptosystem, z.B. RSA. Verwendet man
ausreichend lange Keys (z.B. 1024 Bit), ist das System ohne riesigen
Rechenaufwand unknackbar, egal wie viel man snifft. Und da man auf
Auto-Seite ja sowieso einen Microcontroller hat, kann man sich z.B. aus
elektrischer Noise wunderbar Zufallszahlen für die Challenge
produzieren.
Wenn du RSA verwenden willst: Darüber habe ich eine Facharbeit
geschrieben, die, so bilde ich mir ein, einigermaßen leicht verständlich
ist und die ich dir gerne geben kann.
Funktion im Telegrammstil:
Man produziert ein Schlüsselpaar - den public key und den private key.
Wenn man etwas mit dem public key verschlüsselt, kann es nur mit dem
private key wieder entschlüsselt werden. Und umgekehrt: "verschlüsselt"
man mit dem private key eine Zahl, kann man sie mit dem public key
entschlüsseln, und es kommt die ursprüngliche Nachricht heraus. Das wird
so eingesetzt:
Auf der FB befindet sich der private key, im Auto der public key. Der uC
im Auto produziert eine zufällige lange Zahl, schickt sie an die FB,
diese verschlüsselt die Zahl mit dem private key, und schickt das
Ergebnis zurück ans Auto. Der dortige uC entschlüsselt die Zahl wieder
mit dem public key, und wenn das Ergebnis mit der ursprünglichen
Zufallszahl übereinstimmt, ist es die richtige Fernbedienung. Die
Mathematik sorgt hierbei dafür, dass man aus den übertragenen Zahlen
ohne riesigen Rechenaufwand nicht an den private key kommt.
Edit: Da du ja nicht der erste wärst, der das anwendet, kannst du den
schwierigsten Teil - die Erzeugung der Schlüssel - etablierten
Programmen überlassen, z.B. ssh-keygen aus OpenSSH.
Du kannst dir den Rückkanal völlig sparen. Das kostet nur zusätzlich
Strom, ist schwierig umzusetzen (weil fehleranfällig) und steigert die
Sicherheit (in diesem Fall) kaum. Du musst einfach praktisch denken. Die
Standardverfahren mit rollenden Code sind für diesen Zweck ausreichend.
Du musst einfach bloss daruf achten, dass der Code genügend gross ist
(>16bit). Und dass beim schliessen auch wirklich die Aktion durchgeführt
wird. (Das ist ja hörbar.) Dann ist dieses Verfahren ausreichend sicher.
Wenn du nicht aureichend Erfahrung hast, dann nimm eine
Standardverschlüsselung und halte dich peinlich genau an genormte
Protokolle.
@Maxxie: Ja, aber eben auch nur Replay sicher.
D.h. das Signal wird nur verworfen, wenn es schon einmal vom Kfz
empfangen wurde und ein zweites Mal gesendet wir. Nur passiert das im
Szenario von Alex W. eben nicht.
Ein möglicher Weg könnte sein einen Zeitstempel in die Nonce einzubauen.
Wobei man hier auch sicher einen Weg finden kann das Signal zu fälschen.
Gruß
pinnchen
@ Niklas G. (erlkoenig) :
Wär die Facharbeit etwas fürs WIKI ?
Oder möchtest Du nicht "berühmt"werden ?
Neben der Kryptographie - ohne Spassverderber zu sein.
Das bei einem solchen Eingriff in die Schliesstechnik
der Versicherungsschutz weg ist, ist klar, oder??
Die Versicherungen stellen sich ja schon an, wenn man
bei einem Unfall die falschen Ventilpömpel drauf hat.
Das ist doch eh alles für die Katz, es gibt massig andere Wege ins Auto
zu kommen als die blöde Fernbedienung. Frag mal den ADAC, die öffnen dir
jedes Auto in Sekunden bis Minuten ohne Schlüssel. Also kann man den
Sicherheitskrempel gleich weglassen, Rolling Code reicht da vollkommen
aus. Alles andere steht in keinem Verhältnis zum Nutzen. Bei der
Wegfahrsperre sieht das schon anders aus, aber bei der ZV? Akademischer
Unsinn, da RSA oder sonstwas zu verwenden.