Forum: Mikrocontroller und Digitale Elektronik Selbstlernender Garagentoröffner


von Frank (Gast)


Lesenswert?

Also, ich muss die Frage jetzt einfach mal stellen:
Ich will eigentlich nur wissen ob es möglich ist sowas zu bauen.
Jeder kennt diese Filme wie Nur noch 60 Sekunden. Im film haben die ein
Gerät, mit dem man den Funk-code von Garagentoröffnern einfangen kann
und somit ein gefaktes signal, das Garagentor auch öffnet.
Quasi eine Selbstlernfernbedienung.

Meiner ansicht nach ist sowas nicht möglich. Der Teil müsste ja in
Prinzip das gesamte Spectrum abbilden, da ja haufenweise funksignale in
der Luft schwirren.

Gruß

von Martin (Gast)


Lesenswert?

Hallo,

nicht unbedingt. Solche Sachen sind bei 27MHz oder 433MHz oder ...



Martin

von Jörn G. aus H. (Gast)


Lesenswert?

Gute Fernbedienungen ändern aber jedesmal ihren Code - sie arbeiten
quasie eine Liste ab, die dem Sender und dem Empfänger bekannt sind.

Ein "altes" Sendesignal würde daher das Garagentor nicht öffnen.

Es gibt aber sicherlich auch sehr schlechte Geräte, die immer dasselbe
senden.

jörn

von Frank (Gast)


Lesenswert?

jetzt bin ich neugierig geworden...
Das Verfahren ist also ähnlich dem TAN verfahren bei online banking.

gibts da n Text drüber, wie das genau funktioniert ? Wo erklährt ist,
wenn ei teil (sender / empfänger) nicht mehr synchron ist...und was
ist, wenn man 2 Sender hat.

von Hagen (Gast)


Lesenswert?

Dann sendet jeder Sender seinen Code bestehend aus zwei Teilen. Zb.
erster Teil sind 128 Bit Zufall, zweiter Zeit sind auch 128 Bit und
eine sichere Prüfsumme die mit einem Key arbeitet und per geheimen
mathematischem Verfahren erzeugt wurden, aus dem Zufallswert
natürlich.

Der Empfänger kennt diesen Algo und den Key und kann somit aus den 128
Bit's die er empfängt den zweiten Teil aus 128 Bit nachberechnen.

Gruß Hagen

von Markus K. (markus-)


Lesenswert?

Das funktioniert z.B. so: Es gibt 60.000 Codes die nacheinander benutzt
werden. Der Sender darf Codes überspringen, aber nicht mehr als 30.000
und er darf nicht zurück. Die Codes wiederholen sich wenn sie
aufgebraucht sind. Belauscht man ein Garagentor, das 2x am Tag benutzt
wird, dann hätte man bereits nach 100 Jahren alle nötigen Codes.
Natürlich könnte man z.B. die Fernbedienung klauen und dann im
Schnellverfahren alle Codes ermitteln, aber welchen Sinn macht eine
Kopie wenn man sowieso schon das Original in der Hand hält?

Mit zwei Sendern kann das o.g. Verfahren natürlich nicht funktioneren.

Als Suchbegriff für Google würde ich "Keeloq" vorschlagen.

Markus

von Markus K. (markus-)


Lesenswert?

@Hagen:
Dann brauchen Sender und Empfänger ja eine Uhr. Die müssen auch bei den
üblichen extremen Temperaturschwankungen halbwegs synchron laufen.
Dadurch braucht der Sender immer Strom, auch wenn er nicht benutzt
wird.

Markus

von Hagen (Gast)


Lesenswert?

Hä ? wieso brauchen sie eine Uhr ?

Also du hast einen Zufallsgenerator, Rauschen eine Diode oder so.
Man erzeugt nun 128 Bit Zufall damit. Dann nimmt man diesen sogenannten
Salt und erzeugt Data := Salt || Hash(Salt || Password). Man benutzt
also ein hardcoded Password im Sender gespeichert. Dann am besten eine
Einwegfunktion oder aber ein einfacheres Verfahren das aber geheim
bleibem muß. Die Prüfsumme besteht also aus M = Hash(Salt ||
Password).

Der Sender kennt ebenfalls das Passwort und empfängt nun die 256 Bit an
Daten. Er extrahiert den Zufallswert == Salt == erste 128 Bit und
erzeugt nun ebenfalls seinerseits M' = Hash(Salt || Passwort). Er
empfängt die letzten 128 Bit == M und vergleicht diese mit seinem M'.
Sind beide gleich dann ist sicher das der Sender das Passwort kennen
muß.

Die Größe von 128 Bit verhindert effektiv eine Brute Force Attacke und
macht die Erzeugung von doppelten Salt's mit 1/2^128
Wahrscheinlichkeit schier unmöglich für ein Menschenleben. Sie stellt
also sicher das keine Duplikate erzeugt werden, man müsste schon in
1000 ende Male pro Sekunde einen Code absenden und würde immer noch
sehen wie die Sonne implodiert, ähm stop vorher wird sie ja zu einem
roten Riesen und verschluckt die Erde. Naja, aber bis dahin würde es
wohl schon dauern bis man Duplikate erzeugt hätte.

Die Hash Funktion wiederum könnte MD5 oder SHA1 sein, und diese sind
krypographisch sehr sicher. D.h. aus dem Wert M = Hash(Salt ||
Passwort) ist es unmöglich zurück auf das Passwort berechnen zu
können.

Diese wirklich simple Verfahren nennt man Authentifizierung auf basis
eines gemeinsam bekannten Geheimnisses.

Gruß Hagen

von Markus K. (markus-)


Lesenswert?

@Hagen:
Ich dachte, Du willst die Zeit mitbenutzen.

Aber ich verstehe noch nicht, wie Du Dich gegen eine Replay-Attacke
schützen willst. Du brauchst irgendwas, mit dem Du erkennen kannst, daß
ein alter Code vorliegt. Und zwar ohne im Empfänger eine Liste mit allen
bisher empfangenen Codes zu führen.

Markus

von Hagen (Gast)


Lesenswert?

Stimmt, da haste Recht.
Ok, nochmal umdenken:

S = Salt = 64 Bit Zufall
C = Counter = 56 Bit
I = Ident, Serialnummer des Senders = 8 Bit
P = Password = 128 Bit
D = Datenpacket = 256 Bit

V = Hash(S || C || I || P) == Verifier

Sender hat vorprogrammiert C == 0, I = Serialnummer, P = Passwort.

Sender erzeut S per Zufall
Sender inkrementiert C = C +1
Sender erzeugt V = Hash(S || C || I || P)
Sender erzeugt D = S || I || C || V
Sender sendet D

Empfänger extrahiert aus D nun

S, I, C, V

er sucht in seiner Liste der gültigen Sender per I=Serialnummer die
Senderdaten raus, sprich den zuletzt benutzen Counter C, das im Sender
benutzte Password P.

Empfänger überprüft das das zuletzt benutzte C kleiner als das empfange
C ist. wenn nein wird die Tür nicht geöffnet.
Wenn ja gehts weiter mit

V' = Hash(S || C || I || P), wobei der Empfänger ja das Password P in
seiner Datenbank beim Sendereintrag mit Serialnummer I geladen hatte.

Nun vergleicht der Sender nur noch den empfangen V mit V' und falls
gleich öffnent er die Tür. Sender speichert C in seinem datensatz zum
Sender als zuletzt benutzten Counter.

Wichtig ist nur das
1.) der Sender immer C +1 inkrementiert.
2.) der Sender geschützt das Passwort P speichert.
3.) der Empfänger zu seinen Sendern eine Liste der berechtigten Sendern
speichert, in der dann zum Serial I der letzte Counter C und das
benutzte Passwort P gespeichert sind.
4.) das Passwort niemals direkt übertragen wird sondern nur ein
randomisierte Hash Funktion dazu benutzt wird.

So, dies ist aber nun sicher gegen Reply Angriffe.

Gruß Hagen

von Hagen (Gast)


Lesenswert?

Dieses Verfahren sollte Selbstsynchronisierend sein, sicher gegen Reply
Angriffe und sicher gegen Brute Force Angriffe.

Wichtig ist nur das das benutze Passwort nicht aus dem Sender geknackt
werden kann, der Sender sollte einbrichsicher sein und bei Verlust des
Senders muß der Empfänger den Datensatz zum Sender sperren, sprich die
Serialnummer des Senders ungültig machen.

Gruß Hagen

von Hagen (Gast)


Lesenswert?

Auf die Übertragung von C in D kann gegebenenfalls sogar verzichtet
werden. Der Empfänger muß dann aber per Trial&Error ausgehend von C in
seiner Datenbank zb. maximal 100 mal dieses C inkrementieren. Er
erzeugt also die 100 nächsten möglichen Verifiers V und vergleicht sie
mit dem empfangenem V. Sollte dabei eines gleich sein so kennt nun der
Empfänger den Offest den er auf C addieren muß und speichert dieses
neue C in seiner Datenbank.

Dies ermöglicht nun den Salt wieder auf 64 +56 Bit Größe zu erhöhen was
die Sicherheit verstärkt.

Gruß Hagen

von Markus K. (markus-)


Lesenswert?

Das ist zwar im Prinzip wohl sicher, aber die Werte sind viel zu groß
und damit wird das Ganze zu teuer. Real benutzt man so um die 64 Bit
für das Datenwort und 16 Bit für den Sender. So ist das jedenfalls bei
meiner Funkfernbedienung fürs Auto.

Vor ein paar Monaten wurde so ein System bekanntlich geknackt (150
Millionen Fahrzeuge betroffen) und der Hersteller des Systems hat klar
gesagt, daß sie aus Kostengründen Bits gespart haben - man will das
Zeugs schließlich auch verkaufen.

Markus

von Hagen (Gast)


Lesenswert?

Naja, man benötigte schon 64Bit Salt + 8 Bit Serial + 64Bit Verifier.
Alles drunter lässt sich dann per Brute Force Attacke knacken, egal WAS
man dann WIE implementiert hat. Mit entsprechender Technik sind zb. 32
Bit in 2-3 Tagen geknackt.

Kryptographisch ist es doch so das wenn man davon ausgeht das die
benutzen Algorithmen sicher sind nur eine Brute Force Attacke als
sinnvolle Alternative übrigbleiben soll.

Wenn aber nun die Werte zu kurz gewählt werden, sinkt die Komplexität
der Sicherheit drastisch und ergo steigt die Erforlgswahrscheinlichkeit
einer solchen Attacke.

Auf PC's sagt man überlicherweise das 128 Bit sicher gegen Brute Force
Angriffe ist. Deshalb mein erster Ansatz mit 128 Bit's zu arbeiten,
falls dies machbar ist.

Und mal ehrlich, die par Bits mehr können die HW doch nicht so
drastisch verteuern, oder ?

Gruß Hagen

von Hagen (Gast)


Lesenswert?

Ok wenns wirklich kürzer sein soll dann müssen wir rechnen.

Gehen wir mal davon aus das ein Angreifer pro Tag mit heutiger Technik
ca. 2^24 Codes durchtesten kann. Wir möchten das er mindestens 10 Jahre
mit solchen Tests verbingen möchte, dann benötigen wir 12 + 24 Bit = 36
Bit Sicherheit.

Wir ändern nun das Protokoll:

I = 16 Bit Serialnummer, 65536 mögliche
C = 36 Bit Counter, ~ 7*10^10 mögliche
P = 36 Bit Password, ~ 7*10^10 mögliche
S = 24 Bit Salt

V = Hash(S || C || I || P) mod 2^24
D = S || I || V = 64 Bit
|| = Concatenation

Wie oben beschrieben nur mit kürzeren Werten.
Empfänmger muß nun zb. die nächsten 100 möglichen Verifiers erzeugen
und austesteten, ebenfalls wie oben.

Ein Angreifer müsste nun 2^36 verschiedene Passwörter durchtesten und
wird nach ca. 2^35 getesteten Passwörtern mit einer Wahrscheinlichkeit
von 50% das korrekte gefunden haben.
Er hätte aber nur das Passwort zu einer der 65535 möglichen Sendern
gefunden und müsste also diese Attacke für jeden Sender wiederholen.

Wenn er 2^24 solcher Passwörter pro Tag durchtesten kann so benötigt er
4096 Tage = 11 Jahre.


Gruß Hagen

von Jadeclaw (Gast)


Lesenswert?

Das geht einfacher, Sichwort Rollkode.
Der Empfänger erwartet, dass sich der gesendete Kode um einen
bestimmten Betrag vom vorhergehenden unterscheidet.
Dieser Differenzbetrag muss sich auch nach einem festen Muster ändern.
Sind Sender und Empfänger aus der Synchronisation gelaufen, z.B. weil
der Sender ausserhalb des Empfangsbereichs betätigt wird,
dann muss man wieder zu Hause den Sender mehrfach betätigen,
der Empfänger prüft dann, ob die Differenzen der empfangenen Werte auf
das einprogrammierte Muster passen.
Gleichzeitig werden die Absolutwerte auch geprüft,
ob sie ebenfalls in das Muster passen, da bei einem
Synchronisationsverlust der Sender üblicherweise nur ein paar Werte weg
ist.
Wenn alles passt, wird das Ganze wieder als synchron geloggt und das
Tor geöffnet.
Dieses Änderungsmuster ist der eigentliche Schlüssel.
Mit einer lernfähigen Fernbedienung ist da nichts zu holen.
Und was die Frequenzbereiche der Funkfernbedienungen anbelangt,
es gibt nur 3: 40.68MHz, 433.075-434.8 MHz und 865 - 868 MHz.

Gruss
Jadeclaw.

von leenders (Gast)


Lesenswert?

@Hagen

Sicherlich kann man alles tun um zu verhindern das ein Unbefugter das
Tor öffnet.

Aber es ist nicht gang und gäbe sondern die Ausnahme.

Was willst Du tun wenn 2 Sender   berechtigt das Tor öffnen sollen

oder 3 oder 4

sicherlich geht das auch

aber wird nicht getan. So konnte ein Apotheker mit seinem
Barcodescanner laufend und unbemerkt Mercedesse  die Wegfahrsperre
aktivieren.

Wohl auch 433   und entsprechende Codestümmel

Paul


Die 3000 €uroklasse kann das aber nicht diese Piepnormalen.
Entweder Sendeempfänger als Fernbedienung oder es wird beim Empfänger
sehr lompliziert.

von Dirk M. (avr-nix)


Lesenswert?

abo

von Hagen (Gast)


Lesenswert?

>> Was willst Du tun wenn 2 Sender   berechtigt das Tor öffnen sollen
>> oder 3 oder 4 sicherlich geht das auch

Das ist ja schon im obigen Protokoll berücksichtigt. Bei 16 Bit
Serialnummer könnte man 65535 verschiedene Sender im Empfänger
speichern. Dabei benutzt jeder Sender sein eigenes Passwort. Pro Sender
muß der Empfänger einen Datensatz mit

Klar, das man sich streiten kann ob es sinnvoll ist oder ob
professionelle Unternehmen es lieber preiswert und unsicher bauen
wollen. Darum ging es mir nicht, ich komme aus der Entwicklung
professioneller kryptographischer Systeme und von daher interessierte
mich die Sache.

Gruß Hagen

von Michael F. (startrekmichi)


Lesenswert?

Ich hab mal im Fernsehen (glaub "Planetopia") einen Test gesehen:
Die Reporter haben sich einen Profi geholt, der mittels einer
handelsüblichen lernfähigen Fernbedienung die Codes zum
öffnen/schließen der Autos aufgefangen hat. Danach sind die zum Auto
gegangen, haben es geöffnet und dem Besitzer kurz darauf ein paar Dinge
aus seinem Auto ins Büro gebracht.

Das waren alles nicht wirklich Luxuskarossen, aber auch nicht das
billigste vom billigen.
Fazit: viele Systeme laufen vermutlich miit sehr einfachen
Sicherungssystemen. Und da ein Garagentor nicht unbedingt das
sensibelste/wertvollste Gerät im Haus ist, werden die da zumindest bei
den einfacheren Geräten ziemlich sparen

von Matze (Gast)


Lesenswert?

offtopic:
autos mit ir-zentralverriegelung?? sowas gibt es wirklich??

von Markus K. (markus-)


Lesenswert?

Garagentoröffner sind wohl oftmals recht einfach aufgebaut, einfach ein
4-stelliger Code, d.h. man muß einfach 10.000 Kombinationen
durchprobieren. Falls die Leute den Code überhaupt geändert haben und
er nicht sowieso noch auf 0000 steht.

Für Autos wird aber normalerweise was besseres genommen. In meiner
Funkfernbedienung (hat vor 5 Jahren 200DM gekostet) ist ein HCS200 nach
dem Keeloq-Verfahren drin. Im Datenblatt steht drin, wie das ungefähr
funktioniert:
http://ww1.microchip.com/downloads/en/DeviceDoc/40138c.pdf

Das o.g. Prinzip kann man natürlich auch mit Infrarot machen.

von Frank (Gast)


Lesenswert?

Ja, Autos mit IR gibts.
Aber wenn man als Träger 36 khz verwendet und dann nichtmal ein
anständiges rotokoll drauf aufbaut ist das Wirklich grob fahrlässig von
den Autoherstellern !


Gibts eigentlich ne möglichkeit den Code von ner fernbedieneung
anzuzeigen (oszi) ? würd mir gerne mal das signal genauer ansehen.

von Jadeclaw (Gast)


Lesenswert?

Eine BPW 34 oder 104 ohne weiteres Kabel oder Teile direkt an die Buchse
des Scope klemmen, das gibt dann das komplette Signal, wie es aus der
Fernbedienung vorne rauskommt. ( ca 0.5V )

Oder einen TSOP1736 nehmen, der entfernt das 36kHz-Trägersignal,
dann sieht man nur den Code, den der uC dann auswerten muss.

Gruss
Jadeclaw.

von Frank (Gast)


Lesenswert?

Ehm...Ich hab mich etwas schlecht ausgedrückt...sorry.
Ich meinte ob es möglich ist das Signal eines Funk senders aufm oszi zu
zeigen.

von Dieter (Gast)


Lesenswert?

Klar. Frequent rausfinden und dann einen Empfänger auf diese Frequenz
abstimmen und ans Scope hängen.

von Klaus (Gast)


Lesenswert?

in normstahl 27mhz toröffnern ist sogar nur ein HT12 drin, soweit ich
mich erinner...banal, aber doch recht sicher - ausser jemand kennt das
layout des senders und schaut sich das mäuseklavier an...

Klaus.

von Frank (Gast)


Lesenswert?

frequenz steht ja auf vielen sendern drauf.
Leider kenn ich mich in alalogtechnik nicht so gut aus. Gibts irgendow
einen schaltplan für solch eine anwendung.
Zum Tester hate ich vor eine Auto-Fernbedienung zu verwenden....aber
bei der kann ich den schwingkreis nicht abstimmen (frequenz über 800
Mhz und ich hab ein 100 mhz oszi).

von mitohne (Gast)


Lesenswert?

Mit den Microchip Keeloq HCS habe ich mich auch schonmal eingehend
beschäftigt. Das ganze erscheint mit aber ziemlich unsicher. Wenn man
die Fernsteuerung mal für kurze Zeit in die Hände kriegt, kann man alle
64K Pakete aufzeichnen. Der interne Zähler steht dann wieder auf dem
gleichen Stand und der Besitzer merkt rein gar nichts.
Dann hat man den Öffner 1:1 kopiert.
Ein Telegramm dauert worst case 167.4 ms, d.h. 6/sek , für 64k braucht
man 3 Stunden. Typisch unter 120 Min.

Für ein einmaliges Öffnen genügt sogar, nur ein paar Codes
aufzuzeichnen und dann den Zähler 64k mal hochzuzählen, geht wesentlich
schneller.
If another button is activated during a transmission, the active
transmission will be aborted and a new transmission will begin using
the new button information.
Ich vermute, den Zähler hat er dann schon hochgzählt.
Wenn der Empfänger das Overflow-Bit auswertet, hat man halt 192K.

A code word that has been transmitted will not repeat for more than 64K
transmissions. This provides more than 18 years of use before a code is
repeated; based on 10 operations per day. Overflow information sent
from the encoder can be used to extend the number of unique
transmissions to more than 192K.

Was meint ihr dazu?


Fand ich ganz nett zu lesen:
Einsatz kryptographischer Verfahren auf stark ressourcenbeschränkten
Geräten
http://elib.uni-stuttgart.de/opus/volltexte/2004/1827/pdf/DIP-2106.pdf

von Markus K. (markus-)


Lesenswert?

Man darf den Schlüssel natürlich nicht aus der Hand geben. Ich gehe mal
davon aus, daß man einen normalen Schlüssel auch innerhalb von 3h
kopieren kann.

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.