Forum: PC-Programmierung AES Verschlüsselung, frage so Vorhersehbarkeit


von Christian (Gast)


Lesenswert?

Hallo,

mal so ein Gedankengang von mir. Ein Art Rolling Key.


Um z.B. einen Garagentöröffner zu bauen, sollte sich ja das Übertragene 
ständig ändern. Sonst könnte man es abfangen, und erneut senden und wäre 
drin.

Sender und Empfänger haben bei einen festen AES Schlüssel der sich auch 
nicht ändert.


Wenn jetzt Sender und Empfänger die die aktuelle Uhrzeit und Datum 
kennen würden, und man den "Zeitstempel" AES Verschlüssel und überträgt, 
der Empfänger dekodiert die Nachricht und vergleicht es mit seiner 
Uhrzeit. Sind beide gleich abzüglich einer kleinen Toleranz, ist die 
Nachricht(Code) gültig.

Mich würde jetzt interessieren ob das Sicher ist, oder ob es möglich ist 
die nächste Nachricht vorherzusagen zukönnen. Angenommen man sendet 1 
dann 2 dann 3 usw... verschlüsselt. Jemand fängt die verschlüsselten 
Nachrichten ab. Er kann zwar weder den Klartext erkennen noch kann er 
Rückschlüsse auf den AES Schlüssel ziehen, aber könnte man rein 
theoretisch ein Muster erkennen und dann aufgrund der Fortlaufenden 
Klartextdaten, eine nächste verschlüsselte Nachricht vorhersagen??

Somit wäre der gedachte Garagentoröffner nicht sicher, da man ein Muster 
erkennen könnte, was sich jede Sekunden ändert.

Ich hoffe ihr versteht was ich meine.

LG

: Verschoben durch User
von Dussel (Gast)


Lesenswert?

Ich denke nicht. Ich weiß nicht, ob das eine Grundregel ist, aber 
richtig verschlüsselte Daten kann man (normalerweise) nicht von 
Zufallsdaten unterscheiden.
Für mehr Sicherheit würde ich aber trotzdem noch weitere Daten 
mitübertragen. Sonst könnte jemand auf die Idee kommen, das Datum als 
Klartext auszuprobieren. Ob den Aufwand jemand macht, ist die andere 
Frage, aber mit mehr Daten wird das mit wenig Aufwand nochmal deutlich 
schwieriger.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Für die beschriebene Anwendung wird keine Verschlüsselung benötigt, 
sondern eine kryptografische Signatur. Der vermeintliche Klartext 
enthält doch gar keine vertraulichen Informationen. Ein potentieller 
Angreifer, der irgendwo im Gebüsch hockt, sieht doch anhand der Reaktion 
des Garagentores, welchen gültigen Befehl der berechtigte Anwender 
gesendet hat.

Das Geheimnis, welches Sender um Empfänger teilen, wird dann einfach in 
die Signatur einbezogen, vorzugsweise zusammen mit dem schon genannten 
Zeitstempel und einer fortlaufenden Sequenznummer. Durch die 
Sequenznummer werden Replay-Angriffe nochmals deutlich erschwert, aber 
zumindest einige Formen noch nicht ganz unmöglich gemacht.

Ein interessantes Thema ist aber auch die Synchronisation der Uhren. Die 
Uhren über lange Zeit unsynchronisiert zu lassen, bedeutet aber auch, 
große Zeitunterschiede bei der gesendeten Nachricht zuzulassen. 
Synchronisiert man sie jedoch bei jeder Nachricht, muss man aufpassen, 
dass man nicht Replay-Angreifern die Möglichkeit eröffnet, ebenfalls die 
Empfängeruhr zu synchronisieren.

von Wunschlos Glücklicher (Gast)


Lesenswert?

Also ich sperre meine Garage immer mit dem Schlüssel auf.

Da kann mir keiner meinen Schlüssel abhören, und ich muss
mir keine schlaflosen Nächte um Code-Verschlüsselung machen.

von Crypto-noob (Gast)


Lesenswert?

Andreas S. schrieb:
> Für die beschriebene Anwendung wird keine Verschlüsselung benötigt,

AES-128 ist ja meist 'kostenlos' (on-chip) - wenn man sich damit RSA 
oder ECC einsparen kann ... warum nicht?

von Stefan F. (Gast)


Lesenswert?

Wenn man mal vergleicht, welche Sicherheitsstufe gewöhnlich akzeptierte 
mechanische Schlüssel haben, erscheint der übliche Aufwand bei 
elektronischen Schlüsseln beinahe grotesk.

Jeder Schlüsseldienst knackt die einfachen Schlösser innerhalb von 15 
Minuten, aber bei elektronischen Schlüsseln tut man so, als ob hinter 
der Türe ein Heiligtum gelagert würde.

von Walter T. (nicolas)


Lesenswert?

Stefanus F. schrieb:
> Jeder Schlüsseldienst knackt die einfachen Schlösser innerhalb von 15
> Minuten, aber bei elektronischen Schlüsseln tut man so, als ob hinter
> der Türe ein Heiligtum gelagert würde.

Genau. Wahrscheinlich schafft er es auch problemlos in 10 Minuten. Nur: 
Die braucht er für jedes Schloß einzeln. Beim elektronischen Schloß kann 
man mit dem Kleinbus durch die Straßen fahren und einfach schauen, 
welche Tür aufgeht.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Crypto-noob schrieb:
> Andreas S. schrieb:
>> Für die beschriebene Anwendung wird keine Verschlüsselung benötigt,
>
> AES-128 ist ja meist 'kostenlos' (on-chip) - wenn man sich damit RSA
> oder ECC einsparen kann ... warum nicht?

Ich habe doch keine Vorgabe bezüglich des Algorithmus gemacht. RSA und 
ECC werden für asymmetrische Verfahren eingesetzt.

Die Tatsache, dass ein AES-Block zur Verfügung steht, bedeutet noch 
lange nicht, dass sich der Anwendungsfall danach richtet. Das sind 
einfach unterschiedliche Abstraktionsgrade.

von test (Gast)


Lesenswert?

Nur mal so nebenbei. Diese Idee ist im Prinzip 
https://de.m.wikipedia.org/wiki/Time-based_One-time_Password_Algorithmus

Wenn man keine Uhren synchronisieren will gibt es 
https://de.m.wikipedia.org/wiki/HMAC-based_One-time_Password_Algorithmus

von Jürgen W. (Firma: MED-EL GmbH) (wissenwasserj)


Lesenswert?

Die Anwendung heißt Challenge-Response-Authentication und ist schon seit 
Jahrzehnten bei E-Mail im Einsatz.

Bitte sich in die Ecke zu stellen und schämen.

von test (Gast)


Lesenswert?

Jürgen W. schrieb:
> Die Anwendung heißt Challenge-Response-Authentication und ist schon seit
> Jahrzehnten bei E-Mail im Einsatz.

Braucht aber einen Rückkanal. Wenn man den hat ist es natürlich besser 
als HOTP/TOTP weil nix (Zähler/Uhr) auseinanderlaufen kann.

von Nosnibor (Gast)


Lesenswert?

Es stimmt, daß hier eigentlich eine Signatur nötig wäre, also ein 
Beweis, daß der Absender der Nachricht das Geheimnis kennt. Das kann ein 
einfacher AES aber genausogut leisten.

Also besteht eine Nachricht z.B. aus Zeitstempel (4 Byte sollten 
reichen), Zähler (1 Byte) und Befehlscode (1 Byte), dann wird auf 16 
Byte aufgefüllt (mit Nullbytes). Das kann man dann als einen AES-Block 
verschlüsseln.
Der Empfänger prüft nach dem Entschlüsseln zuerst, ob die Füllbytes 
korrekt sind, denn damit ist bewiesen, daß der Absender das richtige 
Geheimnis kennt (den richtigen AES-Schlüssel benutzt hat). Dann prüft 
er, ob der Zeitstempel aktuell ist (also mit der eigenen Uhrzeit 
übereinstimmt, mit etwas Toleranz). Anhand des Zählers überprüft er 
dann, ob die Nachricht neu ist oder eine Wiederholung (dazu muß er 
Zähler+Zeitstempel akzeptierter Nachrichten speichern, bis deren 
Zeitstempel zu alt ist). Wenn das alles stimmt, wird die Nachricht 
akzeptiert (und vielleicht die Uhr nach dem Zeitstempel gestellt).

Christian schrieb:
> Mich würde jetzt interessieren ob das Sicher ist, oder ob es möglich ist
> die nächste Nachricht vorherzusagen zukönnen. Angenommen man sendet 1
> dann 2 dann 3 usw... verschlüsselt. Jemand fängt die verschlüsselten
> Nachrichten ab. Er kann zwar weder den Klartext erkennen noch kann er
> Rückschlüsse auf den AES Schlüssel ziehen, aber könnte man rein
> theoretisch ein Muster erkennen und dann aufgrund der Fortlaufenden
> Klartextdaten, eine nächste verschlüsselte Nachricht vorhersagen??
Das wäre differenzielle Kryptoanalyse; Resistenz dagegen gehörte zu den 
Anforderungen bei der Auswahl des AES.

von Bernd K. (prof7bit)


Lesenswert?

Nosnibor schrieb:
> Es stimmt, daß hier eigentlich eine Signatur nötig wäre,

Eigentlich ist nur eine Hashfunktion nötig.

Ein PSK, eine Nonce und ein Hash und fertig ist der HMAC. Das ist ein 
sehr gängiges Verfahren für Authentifizierung bei APIs im web. Und da 
bekommt der Nachbar das Garagentor selbst mit dem Quantencomputer nicht 
geknackt, bei AES würd ich so eine Aussage nicht unterschreiben wollen.

: Bearbeitet durch User
von Fitzebutze (Gast)


Lesenswert?

Christian schrieb:
> Sender und Empfänger haben bei einen festen AES Schlüssel der sich auch
> nicht ändert.

Schon mal eine ganz schlechte Idee.

Wie schon gesagt wurde: Authentifizierung / Signierung und 
Verschlüsselung sind hier zwei Paar Stiefel, letzteres verkompliziert 
nur, und gaukelt falsche Sicherheit vor.
Mach es wie die Banken oder prof7bit :-). Die TAN-Generatoren-Logik ist 
recht simpel. Trotzdem funktionieren sie prima, der Angriff auf den 
Signierungsprozess einer Transaktion ist viel aufwendiger, als AES zu 
brute-forcen. Teilweise funktioniert Security by Obscurity sogar ganz 
gut, um z.B. RFID-Schlüssel laufend neu zu 'pairen' wenn einer 
verlorengeht. Nur das Pairing sollte man einigermassen unter Ausschluss 
einer MITM-Attacke durchführen (neuere Generation Mifare).

von Bernd K. (prof7bit)


Lesenswert?

Fitzebutze schrieb:
> Mach es wie die Banken oder prof7bit :-). Die TAN-Generatoren-Logik ist
> recht simpel. Trotzdem funktionieren sie prima,

Ich schlug HMAC mit Nonce vor, keine TAN-Liste.

> Teilweise funktioniert Security by Obscurity sogar ganz gut

Ich schlug HMAC mit Nonce vor, kein Securitry by obscurity.

von Sven B. (scummos)


Lesenswert?

Walter T. schrieb:
> Stefanus F. schrieb:
>> Jeder Schlüsseldienst knackt die einfachen Schlösser innerhalb von 15
>> Minuten, aber bei elektronischen Schlüsseln tut man so, als ob hinter
>> der Türe ein Heiligtum gelagert würde.
>
> Genau. Wahrscheinlich schafft er es auch problemlos in 10 Minuten. Nur:
> Die braucht er für jedes Schloß einzeln. Beim elektronischen Schloß kann
> man mit dem Kleinbus durch die Straßen fahren und einfach schauen,
> welche Tür aufgeht.

So sieht's aus. Deshalb ist der Aufstand bei den elektronischen 
Schlüsseln auch gerechtfertigt: jedes noch so komplexe Vorgehen zum 
Brechen des Schlüssels kann in sehr einfach ein Programm gepackt werden 
und dann kann es jeder neunjährige bedienen. Das ist bei mechanischen 
Schlössern einfach anders.

von Sven B. (scummos)


Lesenswert?

Fitzebutze schrieb:
> Christian schrieb:
>> Sender und Empfänger haben bei einen festen AES Schlüssel der sich auch
>> nicht ändert.
>
> Schon mal eine ganz schlechte Idee.
>
> Wie schon gesagt wurde: Authentifizierung / Signierung und
> Verschlüsselung sind hier zwei Paar Stiefel, letzteres verkompliziert
> nur, und gaukelt falsche Sicherheit vor.

Das ist nicht richtig, AES mit MAC ist ausreichend. Du brauchst nichtmal 
einen expliziten MAC; der Angreifer wird es auch so nicht schaffen, eine 
Nachricht zu erzeugen, die nach dem Entschlüsseln irgendwie Sinn macht.

Der Wert einer Signatur dem gegenüber liegt eigentlich nur darin, dass 
sie asymmetrisch ist. Das bringt hier nichts, deshalb benötigt man auch 
nicht unbedingt einen Signaturalgorithmus.

von Stefan F. (Gast)


Lesenswert?

Sven B. schrieb:
> kann in sehr einfach ein Programm gepackt werden
> und dann kann es jeder neunjährige bedienen. Das ist bei mechanischen
> Schlössern einfach anders.

Das ist ein gutes Argument.

von GEKU (Gast)


Lesenswert?

Christian schrieb:
> Wenn jetzt Sender und Empfänger die die aktuelle Uhrzeit und Datum
> kennen würden, und man den "Zeitstempel" AES Verschlüssel und überträgt,
> der Empfänger dekodiert die Nachricht und vergleicht es mit seiner
> Uhrzeit. Sind beide gleich abzüglich einer kleinen Toleranz, ist die
> Nachricht(Code) gültig.

Und was passiert wenn die Uhrzeit auseinander läuft?

von test (Gast)


Lesenswert?

GEKU schrieb:
> Christian schrieb:
> Wenn jetzt Sender und Empfänger die die aktuelle Uhrzeit und Datum
> kennen würden, und man den "Zeitstempel" AES Verschlüssel und überträgt,
> der Empfänger dekodiert die Nachricht und vergleicht es mit seiner
> Uhrzeit. Sind beide gleich abzüglich einer kleinen Toleranz, ist die
> Nachricht(Code) gültig.
>
> Und was passiert wenn die Uhrzeit auseinander läuft?

Dann funktioniert der Schlüssel nicht.

Man kann nicht alles haben.

von Sven B. (scummos)


Lesenswert?

Man kann die Uhrzeit ja neu synchronisieren bei jedem Öffnen.

von Krypto-Schüler (Gast)


Lesenswert?

Christian schrieb:
> Mich würde jetzt interessieren ob das Sicher ist, oder ob es möglich ist
> die nächste Nachricht vorherzusagen zukönnen. Angenommen man sendet 1
> dann 2 dann 3 usw... verschlüsselt. Jemand fängt die verschlüsselten
> Nachrichten ab. Er kann zwar weder den Klartext erkennen noch kann er
> Rückschlüsse auf den AES Schlüssel ziehen, aber könnte man rein
> theoretisch ein Muster erkennen und dann aufgrund der Fortlaufenden
> Klartextdaten, eine nächste verschlüsselte Nachricht vorhersagen??

Du hast das schon richtig erkannt/vermutet.

Hier gibt es die Situation, dass bekannte Daten (die Uhrzeit) mit einem 
unbekannten Schlüssel (der geheime Key) codiert werden.

D.h. ein Angreifer könnte einen eigenen Empfänger in die Nähe des 
Garagentor stellen, und über einen längeren Zeitraum die verschlüsselten 
Daten mitprotokollieren. Da die aktuelle Uhrzeit ja bekannt ist sammelt 
der Angreifer Klartext-Ciphertext-Paare. Hat er ausreichend viele, 
könnte er u.U. einen sogenannten "Known-Plaintext-Angriff" durchführen 
und so u.U. den geheimen Schlüssel finden.

Allerdings ist nun eben bei AES so ein Angriff (der in der Praxis 
relavant wäre) nicht bekannt. D.h. für das Garagentor sollte Dein 
einfaches Verfahren weit mehr aus völlig ausreichend sein. Willst Du es 
etwas besser machen verwende noch einen Nonce, wie oben schon 
geschrieben wurde.

Aber meiner Meinung nach unnötig: Bevor jemand zig Millionen Euro 
ausgibt, um die Verschlüsselung zu brechen, nimmt er lieber ein 
Brecheisen und hebel t das Schloss aus.

Auch der oben genannte Bus ist ohne praktische Bedeutung. Denn aufgrund 
der begrenzten Datenrate kann so ein Bus keinen relevanten 
Brute-Force-Angriff fahren. Er müsste im Schneckentempo, vielleicht mit 
einigen Nanometern in einem Jahr durch die Straße kriechen. Der Suchraum 
ist einfach viel zu groß.

von test (Gast)


Lesenswert?

Krypto-Schüler schrieb:
> Aber meiner Meinung nach unnötig: Bevor jemand zig Millionen Euro
> ausgibt, um die Verschlüsselung zu brechen, nimmt er lieber ein
> Brecheisen und hebel t das Schloss aus.

Oder er öffnet das Gehäuse vom elektronischen Schloss und brückt das 
Relais (oder gibt 9V auf den Türsummer). Diese Schwachstelle wird meist 
vom Käufer übersehen.

von Dennis R. (dennis_r93)


Lesenswert?

Es kommt auch auf die Methode der AES-Verschlüsselung an!

https://de.wikipedia.org/wiki/Betriebsmodus_(Kryptographie)

In dem Beitrag über den ECB-Modus gibt es ein schönes Bild, dass die 
zeigt warum manchmal sogar mit dem blosen Auge eine AES-Verschlüsselung 
zu knacken ist :-)

: Bearbeitet durch User
von Hermann K. (r2d2)


Lesenswert?

Eine kurze Anmerkung noch zur Verwendung der Urzeit: Das ist 
unpraktisch, weil z.B. nach einem Baterietausch die Uhr neu gestellt 
werden muss. Ich würde einfach eine Zahl nehmen. Der Sender zählt bei 
jedem Senden um 1 rauf. Der Empfänger akzeptiert alles was im Bereich 
'letzte empfangene Zahl + 1' bis 'letzte empfangene Zahl + 10000' liegt. 
Damit hast du keine Probleme wenn mal ein Paket verloren geht oder der 
Nutzer einfach mal wild auf der Fernbedienung rumdrückt. Wenn deine Zahl 
lang genug ist (32 Bit dürften in der Praxis reichen) wird trotzdem nie 
ein gleiches Paket gesendet. Du brauchst natürlich weiterhin irgendeine 
Form von MAC.

von Sven B. (scummos)


Lesenswert?

Hermann K. schrieb:
> Eine kurze Anmerkung noch zur Verwendung der Urzeit: Das ist
> unpraktisch, weil z.B. nach einem Baterietausch die Uhr neu gestellt
> werden muss. Ich würde einfach eine Zahl nehmen. Der Sender zählt bei
> jedem Senden um 1 rauf. Der Empfänger akzeptiert alles was im Bereich
> 'letzte empfangene Zahl + 1' bis 'letzte empfangene Zahl + 10000' liegt.
> Damit hast du keine Probleme wenn mal ein Paket verloren geht oder der
> Nutzer einfach mal wild auf der Fernbedienung rumdrückt. Wenn deine Zahl
> lang genug ist (32 Bit dürften in der Praxis reichen) wird trotzdem nie
> ein gleiches Paket gesendet. Du brauchst natürlich weiterhin irgendeine
> Form von MAC.

Dafür brauchst du einen Flash statt einer RTC ... ist das jetzt wirklich 
einfacher?

von test (Gast)


Lesenswert?

Hermann K. schrieb:
> Ich würde einfach eine Zahl nehmen. Der Sender zählt bei jedem Senden um
> 1 rauf. Der Empfänger akzeptiert alles was im Bereich 'letzte empfangene
> Zahl + 1' bis 'letzte empfangene Zahl + 10000' liegt.

Gibt es schon fertig, nennt sich HOTP.

Hier im Thread werden auch mal wieder haufenweise Dinge erfunden die es 
schon lange fertig gibt ;-)

von Christian (Gast)


Lesenswert?

Hallo,
also erstmal vielen Dank für die vielen Antworten und interessanten 
Diskussionen.

Also die momentane Garagentorsicherheit ist ein 10 Bit DIP Schalter. 
Also alles was halbwegs intelligenter ist, wäre schon etwas sicherer.

Ja die Sache mit der Uhrzeit gefällt mir auch nicht mehr so richtig 
nachdem ich das alles gelesen habe.

Ich habe mir schon eine Kombination aus den verschiedenen Dingen 
überlegt.
Also eine Challange Response in die gewisse einmalige Daten des Senders 
einfließen sowie ein Zähler. Das Ergebnis wird z.B. mit SHA3 gehasht. 
Die Hin und Her Übertragung erfolgt AES Verschlüsselt. Somit ist von 
jedem etwas dabei. Noch dazu ist die Challange ja auch individuell 
ausgedacht.

Laufzeit ist ja auch egal, selbst wenn das 5s dauern sollte.

Ich finde es interessant das ganze mal irgendwie auszuprobieren, über 
Sinn und Unsinn lässt sich streiten.

Aber durch die Kombination verschiedener Dinge würde es nicht unsicherer 
werden oder?

LG

von Sven B. (scummos)


Lesenswert?

Christian schrieb:
> Aber durch die Kombination verschiedener Dinge würde es nicht unsicherer
> werden oder?

Also realistisch betrachtet doch, Probleme in Kryptosystemen liegen 
eigentlich meist bei "ein ungeeignetes Verfahren wurde angewendet", "das 
Protokoll hat ein theoretisches Problem", und "es wurde falsch 
implementiert". Je einfacher, desto besser; bei der 
AES-mit-Uhrzeit-Variante kann man nicht so viel falsch machen.

Wenn du dein eigenes Schlüsselaustauschprotokoll entwirfst und umsetzt, 
ist danach garantiert etwas falsch. Je komplexer es ist, desto mehr wird 
falsch sein. Dann lieber TLS nehmen und mit TLS-Client-Zerfitikat 
authentifizieren.

von Rolf M. (rmagnus)


Lesenswert?

Andreas S. schrieb:
> Ein interessantes Thema ist aber auch die Synchronisation der Uhren. Die
> Uhren über lange Zeit unsynchronisiert zu lassen, bedeutet aber auch,
> große Zeitunterschiede bei der gesendeten Nachricht zuzulassen.

Eine Synchronisierung bedeutet aber auch, dass es nur einen einzigen 
Sender geben kann. Der Empfänger könnte aber die Drift der Uhren 
erkennen (pro Sender) und jeweils das Fenster für den Bereich, der 
akzeptiert wird, entsprechend anpassen.

Sven B. schrieb:
> So sieht's aus. Deshalb ist der Aufstand bei den elektronischen
> Schlüsseln auch gerechtfertigt: jedes noch so komplexe Vorgehen zum
> Brechen des Schlüssels kann in sehr einfach ein Programm gepackt werden
> und dann kann es jeder neunjährige bedienen. Das ist bei mechanischen
> Schlössern einfach anders.

Naja, wenn ich von einem mechanischen Schlüssel eine Kopie mache, kann 
die auch jeder Neunjährige bedienen.

von Sven B. (scummos)


Lesenswert?

Rolf M. schrieb:
> Sven B. schrieb:
>> So sieht's aus. Deshalb ist der Aufstand bei den elektronischen
>> Schlüsseln auch gerechtfertigt: jedes noch so komplexe Vorgehen zum
>> Brechen des Schlüssels kann in sehr einfach ein Programm gepackt werden
>> und dann kann es jeder neunjährige bedienen. Das ist bei mechanischen
>> Schlössern einfach anders.
>
> Naja, wenn ich von einem mechanischen Schlüssel eine Kopie mache, kann
> die auch jeder Neunjährige bedienen.

Aber nur das eine Schloss von dem du den Schlüssel kopiert hast, und 
nicht alle Schlösser ...

von RAc (Gast)


Lesenswert?

Jürgen W. schrieb:
> Die Anwendung heißt Challenge-Response-Authentication und ist
> schon seit
> Jahrzehnten bei E-Mail im Einsatz.
>
> Bitte sich in die Ecke zu stellen und schämen.

Das ist m.M. nach die einzig richtige Antwort auf die Initialfrage. Der 
TO fragt nach Playback Attacken und deren Vermeidung. Das wird dadurch 
gemacht, dass die Payload nicht mit dem "Urschlüssel" verschlüsselt 
wird, sondern mit einem Session Key, der für jede Session verschieden 
ist und eine dynamische Komponente (= starke Zufallszahl) hat. Beide 
Seiten verhandeln mit Hilfe des Urschlüssels für jede session einen 
abgeleiteten Schlüssel. Eine Playbackattacke wird dadurch unmöglich, 
weil die Sessionkeyverhandlung wegen der dynamischen Komponente nicht 
zurückgespielt werden kann.

Wie Jürgen schon richtig geschrieben hat, sind das seit Ewigkeiten im 
Einsatz befindliche Verfahren.

Die Sicherheit hängt natürlich elementar von der Stärke 
(Nichtdeterminismus und Entropie) der Zufallszahlen ab, die zum 
Generieren der Session keys verwendet werden.

von Karl K. (karl2go)


Lesenswert?

Wunschlos Glücklicher schrieb:
> Da kann mir keiner meinen Schlüssel abhören, und ich muss
> mir keine schlaflosen Nächte um Code-Verschlüsselung machen.

https://www.amazon.de/Lockpicking-Set-Dietrich-Transparentem-Trainingsschl%C3%B6ssern/dp/B07GSTWN84/

von Karl K. (karl2go)


Lesenswert?

Sven B. schrieb:
> Je einfacher, desto besser; bei der
> AES-mit-Uhrzeit-Variante kann man nicht so viel falsch machen.

Uhrzeit wäre das Letzte, auf das ich hier setzen würde. Einmal 
Stromausfall und die Batterie leer und Du kommst nicht mehr rein.

von Sven B. (scummos)


Lesenswert?

Karl K. schrieb:
> Sven B. schrieb:
>> Je einfacher, desto besser; bei der
>> AES-mit-Uhrzeit-Variante kann man nicht so viel falsch machen.
>
> Uhrzeit wäre das Letzte, auf das ich hier setzen würde. Einmal
> Stromausfall und die Batterie leer und Du kommst nicht mehr rein.

Ist jetzt halt die Frage, wie schlimm das ist. Bei einem Garagentor wäre 
das vermutlich verkraftbar ...

Wenn das Ding am Netz hängt und eine Backup-Batterie hat ist ein anderer 
Defekt, insb. "Schlüssel verloren", aber sowieso deutlich 
wahrscheinlicher als das.

von seere (Gast)


Lesenswert?

Oldie but goldie: "Handbook of applied Cryptography". Da werden sie 
geholfen was grundlegende Algorithmen in dieser Richtung angeht. 
Ansonsten die Bücher von Schneier zusätzlich.

von RAc (Gast)


Lesenswert?

Sven B. schrieb:
> Karl K. schrieb:
>> Sven B. schrieb:
>>> Je einfacher, desto besser; bei der
>>> AES-mit-Uhrzeit-Variante kann man nicht so viel falsch machen.
>>
>> Uhrzeit wäre das Letzte, auf das ich hier setzen würde. Einmal
>> Stromausfall und die Batterie leer und Du kommst nicht mehr rein.
>
> Ist jetzt halt die Frage, wie schlimm das ist. Bei einem Garagentor wäre
> das vermutlich verkraftbar ...
>

Nein, ist es mit Sicherheit nicht. Mit Uhrzeiten kann wirklich Alles 
mögliche schief gehen. Erstens Mal gehen zwei Uhren niemals wirklich 
synchron, d.h. früher oder später laufen die Uhrzeiten so weit 
auseinander, dass daraus kein gemeinsamer Zeitstempel mehr abgeleitet 
werden kann. Natürlich ist es dann denkbar, dass sich beide Seiten 
protokollmässig ihre Uhren syncen, aber was das für die Sicherheit 
geegnüber einem Abhörer bedeutet, ist die Hausaufgabe für einen 
Erstsemester.

Natürlich kann man dann über GPS oder DCF77 versuchen eine gemeinsame 
Basis zu finden, aber das ist wieder zusätzliche Hardware, die kaputt 
gehen, ihren Sender verlieren oder mehr Strom verbrauchen kann.

Ausserdem muss man sich dann so mit Themen auseinandersetzen wie dass 
manche Uhrenbausteine in der Hoffnung, über mehr "Intelligenz" bessere 
Verkaufszahlen zu generieren, automatische 
Sommer/Winterzeitunterstützung als Default haben, d.h. man wundert sich 
darüber, dass das Garagentor ziemlich genau im Sommer nicht mehr 
funktioniert (wenn z.B. im Rahmen einer Wartung eine Seite mit einer 
gewechselten neuen Drittkomponente ausgestattet wird).

> Wenn das Ding am Netz hängt und eine Backup-Batterie hat ist ein anderer
> Defekt, insb. "Schlüssel verloren", aber sowieso deutlich
> wahrscheinlicher als das.

Nein. Wieso sind 16 Byte im nichtflüchtigen Speicher mehr gefährdet als 
ein Uhrenbaustein? Man kann die Schlüssel auch im EEPROM oder Flash 
ablegen, dann sind sie auch gegen Stromausfall resistent.

Alles mit Uhrzeit sind Krücken. Sessionkeyverhandlung und ggf. 
periodische Key Generation changes, und damit ist der Kuchen gegessen. 
Mit diesen bewährten Techniken hat man nicht nur wesentlich robustere 
und verlässlichere Sicherheit, sondern auch wesentlich bessere Chancen, 
so ein System zertifiziert zu bekommen.

von Cyblord -. (cyblord)


Lesenswert?

RAc schrieb:
> Alles mit Uhrzeit sind Krücken. Sessionkeyverhandlung und ggf.
> periodische Key Generation changes, und damit ist der Kuchen gegessen.
> Mit diesen bewährten Techniken hat man nicht nur wesentlich robustere
> und verlässlichere Sicherheit, sondern auch wesentlich bessere Chancen,
> so ein System zertifiziert zu bekommen.

Wenn man eine Bidirektionale Verbindung hat, ist Challenge-Response am 
einfachsten und robustesten. Mit zufälliger oder auch nur hochzählender 
Nonce (bei entsprechender Limitierung der Anfragen) sind Replay Attacken 
kein Thema mehr. Dann reicht auch HMAC mit PSK. Da braucht man sonst gar 
nichts, schon gar keine Sessionkeys, weil man gar keine geheimen Daten 
zum übertragen hat. Es geht ja nur um Authentifizerung.

Aber wenn man eben nur Unidirektional hat, muss man sich was anderes 
einfallen lassen.
Und handelsübliche RSA Tokens arbeiten auch jahrelang zuverlässig 
mittels eigener Uhr. Das geht also schon. Und da findet auch kein Sync 
statt.

: Bearbeitet durch User
von Sven B. (scummos)


Lesenswert?

RAc schrieb:
> Nein, ist es mit Sicherheit nicht. Mit Uhrzeiten kann wirklich Alles
> mögliche schief gehen. Erstens Mal gehen zwei Uhren niemals wirklich
> synchron, d.h. früher oder später laufen die Uhrzeiten so weit
> auseinander, dass daraus kein gemeinsamer Zeitstempel mehr abgeleitet
> werden kann. Natürlich ist es dann denkbar, dass sich beide Seiten
> protokollmässig ihre Uhren syncen, aber was das für die Sicherheit
> geegnüber einem Abhörer bedeutet, ist die Hausaufgabe für einen
> Erstsemester.

Das sehe ich nicht so. Du kannst 3 Minuten Abweichung akzeptieren, was 
für den vorliegenden Fall quasi keine Sicherheits-Implikation hat, und 
aus jedem "schließe das Tor auf"-Paket auf die darin enthaltene Uhrzeit 
synchronisieren. Dazu brauchst du kein zusätzliches Protokoll, die 
Informationen sind schon da. Wenn deine Uhr in den max. zwei Wochen 
zwischen zweimal Garagentor aufmachen im 3 Minuten driftet, ist sie 
kaputt.

> Nein. Wieso sind 16 Byte im nichtflüchtigen Speicher mehr gefährdet als
> ein Uhrenbaustein? Man kann die Schlüssel auch im EEPROM oder Flash
> ablegen, dann sind sie auch gegen Stromausfall resistent.

Aber du kannst das Kärtchen im Gulli verlieren, mit dem Knopf drauf, der 
das Tor öffnet. ;)

> Alles mit Uhrzeit sind Krücken. Sessionkeyverhandlung und ggf.
> periodische Key Generation changes, und damit ist der Kuchen gegessen.
> Mit diesen bewährten Techniken hat man nicht nur wesentlich robustere
> und verlässlichere Sicherheit, sondern auch wesentlich bessere Chancen,
> so ein System zertifiziert zu bekommen.

Klar, kannst du machen. Ist halt fünftausend mal so komplex: du brauchst

 - Datenübertragung vom Tor zum Schlüssel
 - Eine State Machine, die den ganzen Prozess handhabt, inkl. Konzept 
einer Verbindung etc -- denke mal daran, wie komplex das ist, das mit 
einem Funkmodul wie z.B. einem nRF24L01 umzusetzen
 - Ein Zertifikat und entweder eine CA oder die Cert-ID des Schlüssels 
im Tor
 - Erheblich schnellere Sender und Empfänger -- ein TLS-Handshake sind 
ca. 5 kB
 - Implememtierung eines asymetrischen Kryptoverfahrens
 - Implementierung eines Schlüsselaustausch-Algorithmus
 - Serialisierung für diese ganzen Dinge (x.509?)

Und wenn du sowas benutzen willst wie normales TLS und sagen, dass du 
das "einfach ganz genau so machst wie der Browser", brauchst du 
zusätzlich noch

 - CRL Checking
 - Eine Uhr, um Gültigkeiten des Zertifikats zu prüfen

Ich will nicht sagen, dass diese Variante schlecht ist. Bloß, die 
Uhr-Variante lässt sich vermutlich inkl. aller benötigten Verfahren und 
Hardware-Initialisierung und blabla in ca. 1000 Zeilen C umsetzen. Für 
die andere Methode bin ich sehr skeptisch, ob das realistisch in weniger 
als 20.000 Zeilen machbar ist.

Für das Garagentor würde ich die Uhr-Variante nehmen.

: Bearbeitet durch User
von RAc (Gast)


Lesenswert?

Sven B. schrieb:
> RAc schrieb:
>> Nein, ist es mit Sicherheit nicht. Mit Uhrzeiten kann wirklich Alles
>> mögliche schief gehen. Erstens Mal gehen zwei Uhren niemals wirklich
>> synchron, d.h. früher oder später laufen die Uhrzeiten so weit
>> auseinander, dass daraus kein gemeinsamer Zeitstempel mehr abgeleitet
>> werden kann. Natürlich ist es dann denkbar, dass sich beide Seiten
>> protokollmässig ihre Uhren syncen, aber was das für die Sicherheit
>> geegnüber einem Abhörer bedeutet, ist die Hausaufgabe für einen
>> Erstsemester.
>
> Das sehe ich nicht so. Du kannst 3 Minuten Abweichung akzeptieren, was
> für den vorliegenden Fall quasi keine Sicherheits-Implikation hat, und
> aus jedem "schließe das Tor auf"-Paket auf die darin enthaltene Uhrzeit
> synchronisieren. Dazu brauchst du kein zusätzliches Protokoll, die
> Informationen sind schon da. Wenn deine Uhr in den max. zwei Wochen
> zwischen zweimal Garagentor aufmachen im 3 Minuten driftet, ist sie
> kaputt.
>

Verstehe ich nicht. Die moderne IT Sicherheit geht davon aus, dass der 
Programmierer der Angreifer ist, d.h. der Algorithmus ist dem Angreifer 
bekannt. Wer also sämtlichen Datenverkehr mitschneidet (davon wird ja 
bei dem Szenario ausgegangen) und weiss, in welchem 3 Minuten 
Zeitfenster jeder Öffnungszyklus liegt, hat irgendwann mal genügend 
Plain Text/Crypt Paare zusammen, um den Schlüssel daraus abzuleiten. 
Ohne starke Zufallskomponente geht da m.M. nach gar nichts.

>> Nein. Wieso sind 16 Byte im nichtflüchtigen Speicher mehr gefährdet als
>> ein Uhrenbaustein? Man kann die Schlüssel auch im EEPROM oder Flash
>> ablegen, dann sind sie auch gegen Stromausfall resistent.
>
> Aber du kannst das Kärtchen im Gulli verlieren, mit dem Knopf drauf, der
> das Tor öffnet. ;)
>

Schreiben wir aneinander vorbei? Du brauchst doch in jedem Fall zwei 
Komponenten, die miteinander in (Funk)Kommunikation stehen und in 
irgendeiner Form glauben sich gegenseitig vetrauen zu können, von denen 
die eine stationär (in der Garage) und die andere mobil (am Benutzer) 
ist, oder was fehlt mir da? Wenn Du die mobile verlierst oder im Gulli 
versenkst, ist das System in jedem Fall (by design) betriebsunfähig, 
oder?

>> Alles mit Uhrzeit sind Krücken. Sessionkeyverhandlung und ggf.
>> periodische Key Generation changes, und damit ist der Kuchen gegessen.
>> Mit diesen bewährten Techniken hat man nicht nur wesentlich robustere
>> und verlässlichere Sicherheit, sondern auch wesentlich bessere Chancen,
>> so ein System zertifiziert zu bekommen.
>
> Klar, kannst du machen. Ist halt fünftausend mal so komplex: du brauchst
>
>  - Datenübertragung vom Tor zum Schlüssel

Wie oben geschrieben: Ist das nicht die Grundvoraussetzung der ganzen 
Angelegenheit?

>  - Eine State Machine, die den ganzen Prozess handhabt, inkl. Konzept
> einer Verbindung etc -- denke mal daran, wie komplex das ist, das mit
> einem Funkmodul wie z.B. einem nRF24L01 umzusetzen

Wieso? Das ist Anwendungssoftware.

>  - Ein Zertifikat und entweder eine CA oder die Cert-ID des Schlüssels
> im Tor

Nein. Du brauchst für das Verfahren kein RSA.

>  - Erheblich schnellere Sender und Empfänger -- ein TLS-Handshake sind
> ca. 5 kB

Nein. Du brauchst kein TLS.

>  - Implememtierung eines asymetrischen Kryptoverfahrens

Nein.

>  - Implementierung eines Schlüsselaustausch-Algorithmus

Das wäre eine Protokollerweiterung, die mit 3 Zusatzpaketen abgehandelt 
ist.

>  - Serialisierung für diese ganzen Dinge (x.509?)
>

Nein.

> Und wenn du sowas benutzen willst wie normales TLS und sagen, dass du
> das "einfach ganz genau so machst wie der Browser", brauchst du
> zusätzlich noch
>
>  - CRL Checking
>  - Eine Uhr, um Gültigkeiten des Zertifikats zu prüfen
>

Nein.

> Ich will nicht sagen, dass diese Variante schlecht ist. Bloß, die
> Uhr-Variante lässt sich vermutlich inkl. aller benötigten Verfahren und
> Hardware-Initialisierung und blabla in ca. 1000 Zeilen C umsetzen. Für
> die andere Methode bin ich sehr skeptisch, ob das realistisch in weniger
> als 20.000 Zeilen machbar ist.
>
> Für das Garagentor würde ich die Uhr-Variante nehmen.

Ich nicht. ich arbeite seit über 20 Jahren in einem Bereich, in dem Zeit 
und Sicherheit zentrale Rollen spielen. Ich werde regelmässig wieder 
damit überrascht, was selbst nach all der damit verbundenen Erfahrung 
doch noch wieder schief gehen kann.

von Sven B. (scummos)


Lesenswert?

RAc schrieb:
> Verstehe ich nicht. Die moderne IT Sicherheit geht davon aus, dass der
> Programmierer der Angreifer ist, d.h. der Algorithmus ist dem Angreifer
> bekannt. Wer also sämtlichen Datenverkehr mitschneidet (davon wird ja
> bei dem Szenario ausgegangen) und weiss, in welchem 3 Minuten
> Zeitfenster jeder Öffnungszyklus liegt, hat irgendwann mal genügend
> Plain Text/Crypt Paare zusammen, um den Schlüssel daraus abzuleiten.
> Ohne starke Zufallskomponente geht da m.M. nach gar nichts.

Ok, kannst du mir mal bitte einen erfolgreichen Known-Plaintext-Angriff 
auf AES zeigen? Das funktioniert so nicht, du kannst noch und noch 
Cipertext/Plaintext-Paare sammeln ohne dass du den Schlüssel daraus 
ableiten kannst.

> Wenn Du die mobile verlierst oder im Gulli
> versenkst, ist das System in jedem Fall (by design) betriebsunfähig,
> oder?

Jaja, klar. Ich wollte bloß darauf hinaus, dass es deswegen nichts 
bringt, das System auf unendliche Zuverlässigkeit zu optimieren; du 
brauchst eh einen Plan B, wenn es nicht auf geht.


>> Klar, kannst du machen. Ist halt fünftausend mal so komplex: du brauchst
>>
>>  - Datenübertragung vom Tor zum Schlüssel
>
> Wie oben geschrieben: Ist das nicht die Grundvoraussetzung der ganzen
> Angelegenheit?

Nein, für 
ich-verschlüssle-die-Uhrzeit-mit-AES-und-prüfe-den-MAC-Variante brauchst 
du nur Datenübertragung vom Schlüssel zum Tor; nicht andersherum.

>>  - Eine State Machine, die den ganzen Prozess handhabt, inkl. Konzept
>> einer Verbindung etc -- denke mal daran, wie komplex das ist, das mit
>> einem Funkmodul wie z.B. einem nRF24L01 umzusetzen
>
> Wieso? Das ist Anwendungssoftware.

Die mit TCP arbeitet. Was du auf einem kleinen Funkmodul nicht hast.

>>  - Ein Zertifikat und entweder eine CA oder die Cert-ID des Schlüssels
>> im Tor
>
> Nein. Du brauchst für das Verfahren kein RSA.

Ich hab auch nix von RSA gesagt.

>
>>  - Erheblich schnellere Sender und Empfänger -- ein TLS-Handshake sind
>> ca. 5 kB
>
> Nein. Du brauchst kein TLS.

Aber etwas ähnliches wie TLS.

>>  - Serialisierung für diese ganzen Dinge (x.509?)
>
> Nein.

Ach so, und die Daten für den Key Exchange werden dann per gutem Willen 
kommuniziert oder was? :D

> Ich nicht. ich arbeite seit über 20 Jahren in einem Bereich, in dem Zeit
> und Sicherheit zentrale Rollen spielen. Ich werde regelmässig wieder
> damit überrascht, was selbst nach all der damit verbundenen Erfahrung
> doch noch wieder schief gehen kann.

Bei Key-Exchange-basierten Protokollen hingegen hat man noch nie 
gesehen, dass etwas schief geht ...

von RAc (Gast)


Lesenswert?

Sven B. schrieb:
> RAc schrieb:
>> Verstehe ich nicht. Die moderne IT Sicherheit geht davon aus, dass der
>> Programmierer der Angreifer ist, d.h. der Algorithmus ist dem Angreifer
>> bekannt. Wer also sämtlichen Datenverkehr mitschneidet (davon wird ja
>> bei dem Szenario ausgegangen) und weiss, in welchem 3 Minuten
>> Zeitfenster jeder Öffnungszyklus liegt, hat irgendwann mal genügend
>> Plain Text/Crypt Paare zusammen, um den Schlüssel daraus abzuleiten.
>> Ohne starke Zufallskomponente geht da m.M. nach gar nichts.
>
> Ok, kannst du mir mal bitte einen erfolgreichen Known-Plaintext-Angriff
> auf AES zeigen? Das funktioniert so nicht, du kannst noch und noch
> Cipertext/Plaintext-Paare sammeln ohne dass du den Schlüssel daraus
> ableiten kannst.
>

Wenn ich das hier 
(https://crypto.stackexchange.com/questions/1512/why-is-aes-resistant-to-known-plaintext-attacks) 
richtig verstehe, ist das nur dann der Fall, wenn über den IV eine 
starke Zufallszahl mit ins Spiel gebracht wird, und damit sind wir 
wieder bei square one. In jedem Fall würde deine Strategie einem 
Angreifer ein Zeitfenster von 3 Minuten für eine Playback Attacke 
einräumen, was bei einem Garagentor je nach Location schon 
Sicherheitsfragen aufwerfen würde.

>> Wenn Du die mobile verlierst oder im Gulli
>> versenkst, ist das System in jedem Fall (by design) betriebsunfähig,
>> oder?
>
> Jaja, klar. Ich wollte bloß darauf hinaus, dass es deswegen nichts
> bringt, das System auf unendliche Zuverlässigkeit zu optimieren; du
> brauchst eh einen Plan B, wenn es nicht auf geht.
>
>>> Klar, kannst du machen. Ist halt fünftausend mal so komplex: du brauchst
>>>
>>>  - Datenübertragung vom Tor zum Schlüssel
>>
>> Wie oben geschrieben: Ist das nicht die Grundvoraussetzung der ganzen
>> Angelegenheit?
>
> Nein, für
> ich-verschlüssle-die-Uhrzeit-mit-AES-und-prüfe-den-MAC-Variante brauchst
> du nur Datenübertragung vom Schlüssel zum Tor; nicht andersherum.
>

Ok, aber da ist keinerlei Authentifikation und damit Tür und Tor (pun 
intended) für Spoofing Attacken geöffnet. Für das Garagentor in einem 
durchschnittlichen Wohnviertel ist das vermutlich ausreichend, aber 
nicht im Allgemeinfall.

>>>  - Eine State Machine, die den ganzen Prozess handhabt, inkl. Konzept
>>> einer Verbindung etc -- denke mal daran, wie komplex das ist, das mit
>>> einem Funkmodul wie z.B. einem nRF24L01 umzusetzen
>>
>> Wieso? Das ist Anwendungssoftware.
>
> Die mit TCP arbeitet. Was du auf einem kleinen Funkmodul nicht hast.
>

Muss nicht über TCP gehen. Der Zustandsautomat kann auch durch Elemente 
der nonce im Datenpaket codiert sein.

>>>  - Ein Zertifikat und entweder eine CA oder die Cert-ID des Schlüssels
>>> im Tor
>>
>> Nein. Du brauchst für das Verfahren kein RSA.
>
> Ich hab auch nix von RSA gesagt.
>

ok, akzeptiert. Ich hätte schreiben sollen "Nein. Du brauchst für das 
Verfahren kein PKA."

>>>  - Erheblich schnellere Sender und Empfänger -- ein TLS-Handshake sind
>>> ca. 5 kB
>>
>> Nein. Du brauchst kein TLS.
>
> Aber etwas ähnliches wie TLS.
>

Nein, nur eine zustandsbehaftete (s.o.) 3 Stufen 
Authentifikationsverhandlung zum Generieren des session keys. Das lässt 
sich extrem schmal und effizient codieren (habe ich schon des Öfteren 
gemacht).

>>>  - Serialisierung für diese ganzen Dinge (x.509?)
>>
>> Nein.
>
> Ach so, und die Daten für den Key Exchange werden dann per gutem Willen
> kommuniziert oder was? :D
>

Nein, aber sobald ein session key verhandelt ist und die zugehörige 
session gültig ist, lässt sich in der verschlüsselten payload ja 
verhandeln was man will, z.B. Schlüsselgenerationstausch. Die policies 
wie und wann das passiert sind ja frei definierbar. Ich würde es beim 
Garagentor z.B. so machen, dass der Schlüssel Generation 0 vom 
Hersteller hardcodiert ist, bei der Erstinbetriebnahme getauscht werden 
muss und danach (vom mobilen Teil gesteuert) nach Bedarf.

von Cyblord -. (cyblord)


Lesenswert?

RAc schrieb:
> Nein, aber sobald ein session key verhandelt ist und die zugehörige
> session gültig ist,

Wirst du merken dass du gar keine geheimen Daten zum übertragen hast und 
dein Verfahren overengineerter Unfug ist.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Sven B. schrieb:
> Ok, kannst du mir mal bitte einen erfolgreichen Known-Plaintext-Angriff
> auf AES zeigen? Das funktioniert so nicht, du kannst noch und noch
> Cipertext/Plaintext-Paare sammeln ohne dass du den Schlüssel daraus
> ableiten kannst.

So ist es. Das war einer der Gründe für den AES.

> Nein, für
> ich-verschlüssle-die-Uhrzeit-mit-AES-und-prüfe-den-MAC-Variante brauchst
> du nur Datenübertragung vom Schlüssel zum Tor; nicht andersherum.

Das ist in der Tat ein Vorteil - auch sicherheitstechnisch. Denn das 
bedeutet, dass ein Angreifer ohne gerade aktiven Schlüsselbund keinerlei 
Informationen aus dem "System Garagentor" herauskitzeln kann, da es 
schlicht auf nichts antwortet.

Die Idee mit einer laufenden Uhr und entsprechender Synchronisation bei 
Akzeptanz ist nicht schlecht.

Wenn man seinen µC jetzt noch vernünftig schlafen legt, dann sollte sich 
auch der Energieverbrauch in Grenzen halten und man kann ohne externen 
Uhrenbaustein auskommen.

von Cyblord -. (cyblord)


Lesenswert?

RAc schrieb:
> In jedem Fall würde deine Strategie einem
> Angreifer ein Zeitfenster von 3 Minuten für eine Playback Attacke
> einräumen, was bei einem Garagentor je nach Location schon
> Sicherheitsfragen aufwerfen würde.

Das ist allerdings korrekt und spricht eindeutig gegen eine 
Uhrzeit-Lösung und FÜR ein einfaches aber bidirektionales Protokoll.

> Das ist in der Tat ein Vorteil - auch sicherheitstechnisch. Denn das
> bedeutet, dass ein Angreifer ohne gerade aktiven Schlüsselbund keinerlei
> Informationen aus dem "System Garagentor" herauskitzeln kann, da es
> schlicht auf nichts antwortet.

Was sollte er denn für Informationen erlangen können, wenn das 
Garagentor auf eine Öffnungsanfrage lediglich eine zufällige Nonce 
sendet?

Ich habe immer noch kein fundiertes Argument gegen eine 
Challenge-Response mit Nonce und HMAC gehört. Erfordert nur eine 
Hashfunktion. Kein AES, kein RSA.

: Bearbeitet durch User
von chris (Gast)


Lesenswert?

Cyblord -. schrieb:
> In jedem Fall würde deine Strategie einem
>> Angreifer ein Zeitfenster von 3 Minuten für eine Playback Attacke
>> einräumen, was bei einem Garagentor je nach Location schon
>> Sicherheitsfragen aufwerfen würde.

Das ließe sich verhindern, wenn man zwar eine gewisse Zeitabweichung 
zulässt zum Synchronisieren, aber sich die bereits empfangenen Zeiten in 
diesem Akzeptanzintervall merkt. Dann akzeptiert man die bereits 
empfangenen Zeitstempel kein zweites Mal --> Replay nicht möglich.

von Cyblord -. (cyblord)


Lesenswert?

chris schrieb:

> Das ließe sich verhindern, wenn man zwar eine gewisse Zeitabweichung
> zulässt zum Synchronisieren, aber sich die bereits empfangenen Zeiten in
> diesem Akzeptanzintervall merkt. Dann akzeptiert man die bereits
> empfangenen Zeitstempel kein zweites Mal --> Replay nicht möglich.

Dann kommt es darauf an in welchem Interval deine Zeitstempel generiert 
werden und davon hängt dann ab wie viele mögliche Zeitstempel du 
durchprobieren musst um eine gewisse Abweichung zu tolerieren und 
anderseits aber die Funktion nicht all zu lange zu blockieren. Denn eine 
Aktion nur alle 30 sek. oder gar nur jede Minute durchführen zu können 
ist in der Realität eine große Einschränkung.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

RAc schrieb:
> In jedem Fall würde deine Strategie einem
> Angreifer ein Zeitfenster von 3 Minuten für eine Playback Attacke
> einräumen, was bei einem Garagentor je nach Location schon
> Sicherheitsfragen aufwerfen würde.

Das kann man leicht verhindern, indem man einen akzeptierten Schlüssel 
im Empfänger als "verbraucht" kennzeichnet. Nach drei Minuten kann man 
die Info dann wegwerfen.

Darüberhinaus könnte man nach einem akzeptierten Schlüssel die "Schärfe" 
des Zeitfensters massiv erhöhen, denn Sender und Empfänger wurden ja 
gerade synchronisiert. Da reicht dann auch ein einsekündiges Fenster für 
die nächste Viertelstunde. Damit könnte man dann auch das Tore direkt 
wieder schließen, bspw. weil man es aus Versehen geöffnet hat oder 
jemand direkt davor steht.

Wobei drei Minuten auch extrem sind. Selbst ohne Synchronisation habe 
ich das bei unabgeglichenen 08/15-Billigquarzuhren auch nach einem Jahr 
noch nicht gehabt.

> Ok, aber da ist keinerlei Authentifikation und damit Tür und Tor (pun
> intended) für Spoofing Attacken geöffnet. Für das Garagentor in einem
> durchschnittlichen Wohnviertel ist das vermutlich ausreichend, aber
> nicht im Allgemeinfall.

Wenn Du so willst, ist das auch eine Session, die bei jedem 
erfolgreichen Öffnen erneuert wird.

von Cyblord -. (cyblord)


Lesenswert?

Chris D. schrieb:
> Darüberhinaus könnte man nach einem akzeptierten Schlüssel die "Schärfe"
> des Zeitfensters massiv erhöhen, denn Sender und Empfänger wurden ja
> gerade synchronisiert. Da reicht dann auch ein einsekündiges Fenster für
> die nächste Viertelstunde. Damit könnte man dann auch das Tore direkt
> wieder schließen, bspw. weil man es aus Versehen geöffnet hat oder
> jemand direkt davor steht.

Ja mit beliebig viel Aufwand geht alles irgendwie.

Und wie handelt man den Batterietausch im Handsender? Wenn danach dessen 
Uhr wieder auf 0 ist?

von RAc (Gast)


Lesenswert?

Chris D. schrieb:
>
>> Nein, für
>> ich-verschlüssle-die-Uhrzeit-mit-AES-und-prüfe-den-MAC-Variante brauchst
>> du nur Datenübertragung vom Schlüssel zum Tor; nicht andersherum.
>
> Das ist in der Tat ein Vorteil - auch sicherheitstechnisch. Denn das
> bedeutet, dass ein Angreifer ohne gerade aktiven Schlüsselbund keinerlei
> Informationen aus dem "System Garagentor" herauskitzeln kann, da es
> schlicht auf nichts antwortet.
>

Grundsätzlich ist das richtig, aber der TO hat ja gerade das Thema 
Playback Attacken ins Spiel gebracht. Meinem Verständnis nach setzt die 
Playback Attack Prevention notwendigerweise bidirektionale Kommunikation 
voraus.

> Die Idee mit einer laufenden Uhr und entsprechender Synchronisation bei
> Akzeptanz ist nicht schlecht.
>

Allerdings eröffnet sich damit u.A. die Möglichkeit einer Denial of 
Service Attacke. Wenn nämlich tatsächlich ein (mglw. aus Spass an der 
Freude agierender Nerd mit zu viel Zeit oder was auch immer) das 3 
Minuten Zeitfenster ausnutzt, um mit einer Playback Attacke das Tor ein 
zweites Mal zu öffnen, hat er nämlich als Seiteneffekt die Uhr des Tores 
umsynchronisiert. Die Uhr des berechtigten Benutzers wird nun mit einer 
nicht geringen Wahrscheinlichkeit nicht mehr synchron zur Uhr im 
Empfänger sein, so dass der Originalkey eben nicht mehr berechtigt 
öffnen kann.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Cyblord -. schrieb:
> chris schrieb:
>
>> Das ließe sich verhindern, wenn man zwar eine gewisse Zeitabweichung
>> zulässt zum Synchronisieren, aber sich die bereits empfangenen Zeiten in
>> diesem Akzeptanzintervall merkt. Dann akzeptiert man die bereits
>> empfangenen Zeitstempel kein zweites Mal --> Replay nicht möglich.
>
> Dann kommt es darauf an in welchem Interval deine Zeitstempel generiert
> werden und davon hängt dann ab wie viele mögliche Zeitstempel du
> durchprobieren musst um eine gewisse Abweichung zu tolerieren und
> anderseits aber die Funktion nicht all zu lange zu blockieren. Denn eine
> Aktion nur alle 30 sek. oder gar nur jede Minute durchführen zu können
> ist in der Realität eine große Einschränkung.

Siehe meine Einlassung weiter oben: direkt nach der Synchronisation 
(also nach der ersten Aktion) ist die Abweichung nicht messbar. Daher 
kann dann auch das Zeitfenster minimal sein.

Ganze "edel" wäre es, anhand der maximal zu erwartenden Drift von 
Sender/Empfänger das Fenster über die Zeit breiter werden lassen ;-)

von Cyblord -. (cyblord)


Lesenswert?

Chris D. schrieb:
> Ganze "edel" wäre es, anhand der maximal zu erwartenden Drift von
> Sender/Empfänger das Fenster über die Zeit breiter werden lassen ;-)

Nein nicht Edel, eben nerdiger Unsinn der wieder enormen Spielraum für 
Bugs und Unsicherheiten eröffnet. Mit jeder Iteration hier wird dein 
System komplexer und damit unsicherer.

von Alex W. (Gast)


Lesenswert?

Wenn er AES verschlüsseln möchte kann er doch ganz einfach ein simples 
Protokoll schreiben!

Beide Geräte haben einen AES-Key

Im Empfänger wird nach dedem gültigen Frame ein Zähler (der im Frame vom 
Sender kommt) als minimaler Wert gespeichert, der dann als ungültig 
erklärt wird. Das sichert gegen Replay-Attacken.

Beim Sender baust du einen Start-Zähler ein. Bei jedem Frame wird er 
hochgezählt. Zusätzlich noch die Steuercodes (wie auf zu etc). Den 
Framecounter und die Steuercodes nimmst dann und cryptierst diese mit 
dem AES-Key. Das Ergebniss hängst hinten drann.

Der Empfänger macht dann folgendes: Framecounter mit größer gleich soll 
vegleichen. Gültig? Weiter! Steuercodes lesen. Framecounter und 
Steuercodes mit dem internen AES-Key vergleichen und sehen ob die 
verschlüsselte Botschaft die selbe ist, bzw die Botschaft entschlüsseln 
und sehen ob der Counter und Steuercodes decryptiert übereinstimmen. 
Pastt es-> weiter und Framecounter-Wert speichern. Alles was gleich und 
kleiner ist, ist ungültig und eine Reply-Attacke. GGf dies auch 
speichern.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Cyblord -. schrieb:
> Und wie handelt man den Batterietausch im Handsender? Wenn danach dessen
> Uhr wieder auf 0 ist?

Bspw. so wie bei einer Fritzbox: man drückt beim Empfänger einen Knopf 
und schickt dann mit frischer Batterie den ersten Zeitstempel, den sie 
als gültig zu akzeptieren hat.

Und/oder man baut einen entsprechenden Pufferkondensator ein, der die 
paar Sekunden den Saft erhält. Man sollte dann natürlich nicht senden 
;-)

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Cyblord -. schrieb:
> Chris D. schrieb:
>> Ganze "edel" wäre es, anhand der maximal zu erwartenden Drift von
>> Sender/Empfänger das Fenster über die Zeit breiter werden lassen ;-)
>
> Nein nicht Edel, eben nerdiger Unsinn der wieder enormen Spielraum für
> Bugs und Unsicherheiten eröffnet. Mit jeder Iteration hier wird dein
> System komplexer und damit unsicherer.

Schon richtig.

Dann belasse es eben dabei, nach einem akzeptierten Schlüssel das 
Fenster für 5 Minuten auf maximal 2 Sekunden Abweichung einzustellen, 
damit man direkt hintereinander mehrere Befehle absetzen kann.

Beitrag #5873004 wurde vom Autor gelöscht.
von Cyblord -. (cyblord)


Lesenswert?

Chris D. schrieb:
> Bspw. so wie bei einer Fritzbox: man drückt beim Empfänger einen Knopf
> und schickt dann mit frischer Batterie den ersten Zeitstempel, den sie
> als gültig zu akzeptieren hat.

Dann musst du aber für jeden Schlüssel ein völlig eigene Uhrzeit 
mitführen. Aber ja, geht.

von Alex W. (Gast)


Lesenswert?

Cyblord -. schrieb im Beitrag #5873004:
> Alex W. schrieb:
>> Beim Sender baust du einen Start-Zähler ein. Bei jedem Frame wird er
>> hochgezählt. Zusätzlich noch die Steuercodes (wie auf zu etc). Den
>> Framecounter und die Steuercodes nimmst dann und cryptierst diese mit
>> dem AES-Key. Das Ergebniss hängst hinten drann.
>
> Bringt ein großes Problem: Drückst du den Sender wenn der Empfänger
> nicht in Reichweite ist, dann läuft der Framecounter im Sender lustig
> weiter, im Empfänger aber nicht.

Juckt nicht! Der Sender kann hochzählen so oft er will. Im Empfänger 
muss geprüft werden ob der Counter größer ist als der letzte bekannte 
Wert. Ist er es nicht, ist es eine Replay-Attacke. Ist er größer, kennt 
der Sender den Key. Dann ist es aber eh Wayne wenn es ein Angreifer 
ist...

von Cyblord -. (cyblord)


Lesenswert?

Alex W. schrieb:
> Juckt nicht! Der Sender kann hochzählen so oft er will. Im Empfänger
> muss geprüft werden ob der Counter größer ist als der letzte bekannte
> Wert. Ist er es nicht, ist es eine Replay-Attacke. Ist er größer, kennt
> der Sender den Key. Dann ist es aber eh Wayne wenn es ein Angreifer
> ist...

Ahso du sendest den Counter als Klartext noch mit.

von RAc (Gast)


Lesenswert?

Chris D. schrieb:
> RAc schrieb:
>> In jedem Fall würde deine Strategie einem
>> Angreifer ein Zeitfenster von 3 Minuten für eine Playback Attacke
>> einräumen, was bei einem Garagentor je nach Location schon
>> Sicherheitsfragen aufwerfen würde.
>
> Das kann man leicht verhindern, indem man einen akzeptierten Schlüssel
> im Empfänger als "verbraucht" kennzeichnet. Nach drei Minuten kann man
> die Info dann wegwerfen.
>

was dann aber implizieren würde, dass ein Schlüsselgenerationstausch mit 
jeder Transaktion verpflichtend wäre. Wenn das der Fall wäre, bräuchte 
man die Zeitsynchronisation gar nicht erst, dann wäre die 
Schlüsselneuverhandlung in der Transaktion ausreichend für die Playback 
Attack Prevention. Hätte allerdings den in der Praxis unangenehmen 
Seiteneffekt, dass nur ein Öffnungsmodul möglich wäre, also könnten 
nicht mehrere Leute mit mehreren Öffnern auf demselben Garagentor 
arbeiten.

Oder meinst Du einfach, dass innerhalb eines 3 Minuten Zeitfensters nur 
eine Öffnung erlaubt ist? Sehe ich in der Praxis auch als problematisch 
an (im Regen 3 Minuten warten zu müssen weil einem eingefallen ist dass 
man noch etwas im Auto vergessen hat...). Klar kann man die 3 Minuten 
auch reduzieren (die waren jetzt erstmal nur eine Arbeitshypothese), 
aber beliebig niedrig kann man ja auch nicht gehen (s.u.)...

> Darüberhinaus könnte man nach einem akzeptierten Schlüssel die "Schärfe"
> des Zeitfensters massiv erhöhen, denn Sender und Empfänger wurden ja
> gerade synchronisiert. Da reicht dann auch ein einsekündiges Fenster für
> die nächste Viertelstunde. Damit könnte man dann auch das Tore direkt
> wieder schließen, bspw. weil man es aus Versehen geöffnet hat oder
> jemand direkt davor steht.
>

Naja, und was macht man da mit wenig frequentierten Garagen, die mglw. 
nur 1x am Tag genutzt werden? In solchen Fällen kumulieren sich ja 
leicht asynchrone Uhren, so dass kleine Zeitfenster zum Problem werden 
können.

von Udo S. (urschmitt)


Lesenswert?

Chris D. schrieb:
> Darüberhinaus könnte man nach einem akzeptierten Schlüssel die "Schärfe"
> des Zeitfensters massiv erhöhen, denn Sender und Empfänger wurden ja
> gerade synchronisiert. Da reicht dann auch ein einsekündiges Fenster für
> die nächste Viertelstunde. Damit könnte man dann auch das Tore direkt
> wieder schließen, bspw. weil man es aus Versehen geöffnet hat oder
> jemand direkt davor steht.

Das berücksichtigt aber nicht, daß man z.B. zwei oder 3 Handsender hat. 
Es gibt ja auch für ein mechanisches Schloss manchmal mehrere Schlüssel 
:-)

Also ist man wieder bei einem rolling code plus Handsender ID

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Alex W. schrieb:
> Wenn er AES verschlüsseln möchte kann er doch ganz einfach ein simples
> Protokoll schreiben!
>
> Beide Geräte haben einen AES-Key
>
> Im Empfänger wird nach dedem gültigen Frame ein Zähler (der im Frame vom
> Sender kommt) als minimaler Wert gespeichert, der dann als ungültig
> erklärt wird. Das sichert gegen Replay-Attacken.
>
> Beim Sender baust du einen Start-Zähler ein. Bei jedem Frame wird er
> hochgezählt. Zusätzlich noch die Steuercodes (wie auf zu etc). Den
> Framecounter und die Steuercodes nimmst dann und cryptierst diese mit
> dem AES-Key. Das Ergebniss hängst hinten drann.

Auch nicht schlecht, zumal man das im EEPROM sichern könnte.

> Alles was gleich und
> kleiner ist, ist ungültig und eine Reply-Attacke. GGf dies auch
> speichern.

Für zusätzliche Sicherheit könnte man auch hier ein "Fenster" einsetzen, 
bspw. muss der Zähler im Bereich X+1000 stehen. Bei einem 32-Bit-Zähler 
spielt das keine Rolle, schränkt aber die gültigen Zählerstände kräftig 
ein.

Natürlich darf man dann unterwegs nicht 1000 mal auf den Knopf drücken 
;-)

von Cyblord -. (cyblord)


Lesenswert?

Alex W. schrieb:
> Juckt nicht! Der Sender kann hochzählen so oft er will. Im Empfänger
> muss geprüft werden ob der Counter größer ist als der letzte bekannte
> Wert. Ist er es nicht, ist es eine Replay-Attacke. Ist er größer, kennt
> der Sender den Key. Dann ist es aber eh Wayne wenn es ein Angreifer
> ist...

Finde ich auf den ersten Blick nicht so schlecht die Variante. Aber das 
heißt auch, ein Angreifer muss nur ein einziges gültiges Frame erzeugen 
mit einem praktisch beliebigen Counterwert (solange größer als die 
letzten). Und hat dafür auch so lange Zeit wie er möchte.
Das klingt für mich nach Birthday-Attacke.

> Für zusätzliche Sicherheit könnte man auch hier ein "Fenster" einsetzen,
> bspw. muss der Zähler im Bereich X+1000 stehen. Bei einem 32-Bit-Zähler
> spielt das keine Rolle, schränkt aber die gültigen Zählerstände kräftig
> ein.

Das ist auf jeden Fall zu empfehlen.

: Bearbeitet durch User
von Alex W. (Gast)


Lesenswert?

Cyblord -. schrieb:
> Alex W. schrieb:
>> Juckt nicht! Der Sender kann hochzählen so oft er will. Im Empfänger
>> muss geprüft werden ob der Counter größer ist als der letzte bekannte
>> Wert. Ist er es nicht, ist es eine Replay-Attacke. Ist er größer, kennt
>> der Sender den Key. Dann ist es aber eh Wayne wenn es ein Angreifer
>> ist...
>
> Ahso du sendest den Counter als Klartext noch mit.

Genau. Im Endeffekt sendest du zuerst alles in Klartext und sendest 
dabei dann den Klartext nochmals verschlüsselt mit. AES ist sicher genug 
damit daraus nicht der Key errechnet werden kann.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Udo S. schrieb:
> Das berücksichtigt aber nicht, daß man z.B. zwei oder 3 Handsender hat.
> Es gibt ja auch für ein mechanisches Schloss manchmal mehrere Schlüssel
> :-)

Das stimmt. Man müsste also für jeden Schlüssel ein eigenes Zeitfenster 
und eine eigene Zeit haben, um sie unterscheiden zu können. Ist nicht 
schwer zu implementieren, widerspricht aber dem Prinzip: so einfach wie 
möglich.

Ja, das ist ein Nachteil.

von RAc (Gast)


Lesenswert?

Alex W. schrieb:
> Juckt nicht! Der Sender kann hochzählen so oft er will. Im Empfänger
> muss geprüft werden ob der Counter größer ist als der letzte bekannte
> Wert. Ist er es nicht, ist es eine Replay-Attacke. Ist er größer, kennt
> der Sender den Key. Dann ist es aber eh Wayne wenn es ein Angreifer
> ist...

Nette Idee, berücksichtigt aber leider nicht die Möglichkeit, dass eine 
der beiden Seiten in einen Reset fällt oder aus einem anderen Grunde den 
Zählerwert verliert... im blödesten Fall liegt dann die erwartete 
Sequenznummer so niedrig, dass jeder Replay damit (einmalig, aber reicht 
ja) durchgewunken wird. Klar kann man nun wieder Handshakes und 
Signaturen definieren, um beide Seiten auf eine Neuverhandlung der 
Sequenznummer zu zwingen, aber dann sind wir wieder bei einer 
Zustandsbehafteten Verhandlung, und damit wäre das schon öfter erwähnte 
Challenge Response Verfahren zur Aushandlung von session keys doch 
wieder die einfachere Variante.

von Cyblord -. (cyblord)


Lesenswert?

RAc schrieb:
> Nette Idee, berücksichtigt aber leider nicht die Möglichkeit, dass eine
> der beiden Seiten in einen Reset fällt oder aus einem anderen Grunde den
> Zählerwert verliert...

Möglich. Aber wenn die Zählwerte auf beiden Seiten remanent gespeichert 
werden ist die Wahrscheinlichkeit gering und nicht relevant für eine 
Garagentoranwendung.

Ich finde die Variante deutlich besser als jene mit Uhrzeit.

Alle Varianten haben gemein dass es umständlich wird, sobald mal eine 
Hardware die grätsche Macht und man Austauschen muss. Denn jede 
automatische Synchronisation bringt wieder sehr viel Komplexität mit 
sich. Dann muss man meist direkt Hand anlegen und die Schlüssel 
generieren und manuell in beide Geräte einspielen. Ist meistens so bei 
Hobbykram.

: Bearbeitet durch User
von Alex W. (Gast)


Lesenswert?

RAc schrieb:
> Nette Idee, berücksichtigt aber leider nicht die Möglichkeit, dass eine
> der beiden Seiten in einen Reset fällt oder aus einem anderen Grunde den
> Zählerwert verliert...

In diesem Fall sollte man es typisch deutsch halten: einfach sein lassen 
wegen könnte, hätte, würde, fahradkette...

von Cyblord -. (cyblord)


Lesenswert?

Ich denke allerdings immer noch über die sicherheitstechnischen 
Implikationen für AES nach, falls der Counterspace nicht eingeschränkt 
wäre.

Klassische Birthday-Attacke für AES erfordert normalerweise sehr viele 
gültige Schlüssel wobei es reicht einen davon zu bekommen. Das ist hier 
nicht der Fall, denn es gibt nur einen Schlüssel.

Aber vom Gefühl her müsste der Ansatz die Sicherheit von AES schon 
irgendwie beeinträchtigen.

von Dussel (Gast)


Lesenswert?

Vielleicht habe ich es beim Überfliegen überlesen, aber was wäre, wenn 
man zufällige Daten mitüberträgt, die stimmig sein müssen?
Zum Beispiel überträgt man vor der Zeit zwei zufällige Zahlen und 
dahinter das Produkt dieser beiden Zahlen, also "242-263-<Zeit>-63646". 
Selbst wenn ein Angreifer auf die Idee kommen sollte, dass das Datum als 
Nachricht verwendet wird, könnte er trotzdem wahrscheinlich keine 
gültige Nachricht erzeugen, weil relevante Teile der Nachricht fehlen.
Das Verfahren ließe sich natürlich noch verbessern.

von RAc (Gast)


Lesenswert?

Cyblord -. schrieb:
> RAc schrieb:
>> Nette Idee, berücksichtigt aber leider nicht die Möglichkeit, dass eine
>> der beiden Seiten in einen Reset fällt oder aus einem anderen Grunde den
>> Zählerwert verliert...
>
> Möglich. Aber wenn die Zählwerte auf beiden Seiten remanent gespeichert
> werden ist die Wahrscheinlichkeit gering und nicht relevant für eine
> Garagentoranwendung.
>
> Ich finde die Variante deutlich besser als jene mit Uhrzeit.
>

Das in jedem Fall, aber sie ist schlechter als die Session Key Methode. 
Aus dem einfachen Grunde, dass damit wieder 1:many 
Tor<->Steuerkombinationen nicht gut abgehandelt werden können, denn die 
Steuergeräte kommunizieren ja nicht miteinander, wissen also nichts 
davon, welche Sequenznummer beim Tor gerade "aktuell" ist. Das liesse 
sich nur dann in den Griff kriegen, wenn sich die Steuergeräte 
identifizieren würden und die Sequenznummern instantiiert verwaltet 
werden.

von Cyblord -. (cyblord)


Lesenswert?

Dussel schrieb:
> Vielleicht habe ich es beim Überfliegen überlesen, aber was wäre, wenn
> man zufällige Daten mitüberträgt, die stimmig sein müssen?
> Zum Beispiel überträgt man vor der Zeit zwei zufällige Zahlen und
> dahinter das Produkt dieser beiden Zahlen, also "242-263-<Zeit>-63646".
> Selbst wenn ein Angreifer auf die Idee kommen sollte, dass das Datum als
> Nachricht verwendet wird, könnte er trotzdem wahrscheinlich keine
> gültige Nachricht erzeugen, weil relevante Teile der Nachricht fehlen.
> Das Verfahren ließe sich natürlich noch verbessern.

Security by Obscurity. Nicht mehr. Erhöht die Sicherheit nicht.

von Cyblord -. (cyblord)


Lesenswert?

RAc schrieb:
> Das in jedem Fall, aber sie ist schlechter als die Session Key Methode.

Die aber bidirektionale Kommunikation erfordert. Damit ergeben sich IMO 
sowieso bessere Möglichkeit als einen Session Key.

Aber wenn man die Unidirektionalen Varianten betrachtet ist der Ansatz 
der Beste, IMO.

von B. Jacob (Gast)


Lesenswert?

Garagentor - Wochenendprojekt.

1. Garagenempfänger AVR <- AES128
2. Handsender       AVR -> AES128
3. für beide gleicher Schlüssel
4. min. 32 Bit Zähler im Handsender + 2 Kommandos (AUF/ZU)
5. beide AVRs fangen mit Zählerstand 0 an.
6. Der empfangene Zählerstand darf max. 1000 nach oben abweichen
7. über 100 J. Funktion bei max. Abweichung, 32 Bit & 100 Betätigungen/d

AVR-AES Empfehlung: http://point-at-infinity.org/avraes/

von Cyblord -. (cyblord)


Lesenswert?

B. Jacob schrieb:
> Garagentor - Wochenendprojekt.
>
> 1. Garagenempfänger AVR <- AES128
> 2. Handsender       AVR -> AES128
> 3. für beide gleicher Schlüssel
> 4. min. 32 Bit Zähler im Handsender + 2 Kommandos (AUF/ZU)
> 5. beide AVRs fangen mit Zählerstand 0 an.
> 6. Der empfangene Zählerstand darf max. 1000 nach oben abweichen
> 7. über 100 J. Funktion bei max. Abweichung, 32 Bit & 100 Betätigungen/d
>

GENAU Darüber reden wir grade....

von RAc (Gast)


Lesenswert?

Cyblord -. schrieb:
> RAc schrieb:
>> Das in jedem Fall, aber sie ist schlechter als die Session Key Methode.
>
> Die aber bidirektionale Kommunikation erfordert. Damit ergeben sich IMO
> sowieso bessere Möglichkeit als einen Session Key.
>
> Aber wenn man die Unidirektionalen Varianten betrachtet ist der Ansatz
> der Beste, IMO.

wie stehst Du zu der 1:many Problematik mit der Sequenznummer uni 
Lösung?

von Cyblord -. (cyblord)


Lesenswert?

RAc schrieb:

> wie stehst Du zu der 1:many Problematik mit der Sequenznummer uni
> Lösung?

Natürlich braucht man für jeden Handsender auch eine ID, einen eignen 
Key und ne eigene Sequenznummer  in der Basisstation.

Nur ist das ein Problem oder was meinst du genau?

: Bearbeitet durch User
von RAc (Gast)


Lesenswert?

Cyblord -. schrieb:
> RAc schrieb:
>
>> wie stehst Du zu der 1:many Problematik mit der Sequenznummer uni
>> Lösung?
>
> Natürlich braucht man für jeden Handsender auch eine ID, einen eignen
> Key und ne eigene Sequenznummer  in der Basisstation.
>
> Nur ist das ein Problem oder was meinst du genau?

ja, aber dann geht es sofort wieder los: Über das Protokoll muss sich 
jeder Sender dann zuerst identifizieren, d.h. wir sind dann wieder bei 
einem zustandsbehafteten Protokoll (was ja Sven eben nicht will). Mit 
einem zustandsbehafteten Protokoll können wir aber genau so gut gleich 
einen session key verhandeln (was sowieso nahe liegt, da mit der 
Identifikation auch eine Authentifikation ausgehandelt werden kann). 
Damit brauchen wir dann auch keine nonce mit Sequenznummer mehr.


Wenn wir das mit instantiierten Sequenznummern machen, ist wieder die 
Frage, was passiert, wenn sich ein nicht bekanntes Modul anmeldet. Das 
ist im Endbetrieb ja erstmal jederzeit möglich (ein Handgerät wird 
gewechselt oder zugekauft). Solange der aktuelle key stimmt, spricht ja 
auch nichts dagegen, aber vermutlich sollte im workflow so ein neues 
Gerät "freigeschaltet" werden müssen (also wie bei der Fritzbox). Muss 
halt Alles gemacht werden!

Mit Sessionbasierten Verhandlungen müssen Steuergeräte nicht 
identifiziert werden, da reicht der gemeinsame Schlüssel.

von Brummbär (Gast)


Lesenswert?

Es geht hier doch um EINE Garage, kein Massenprodukt und keine 
Raketenabschussbasis.

Die zu übertragenden Daten sind unbekannt. Der Angreifer weiß also 
nicht, ob ein Datum und/oder eine Zufallszahl mit dem Geheimnis 
verknüpft übertragen wird. Es geht doch nur darum, dass niemand eine 
mitgeschnittene Übertragung wiederholen kann.

Und wenn der Code mal nicht funktioniert, weil irgend etwas aus dem Sync 
gelaufen ist, muss es immer noch einen Schlüssel geben. In der Garage 
kann man den Sender problemlos zum Synchronisieren an einen (meinetwegen 
auch versteckt untergebrachten) Kontakt halten.

von RAc (Gast)


Lesenswert?

Brummbär schrieb:
> Es geht hier doch um EINE Garage, kein Massenprodukt und keine
> Raketenabschussbasis.
>

Ja, aber EINE Garage mit möglicherweise MEHREREN Steuergeräten. Das hat 
technisch schon einen Einfluss auf die Realisierung!

> Die zu übertragenden Daten sind unbekannt. Der Angreifer weiß also
> nicht, ob ein Datum und/oder eine Zufallszahl mit dem Geheimnis
> verknüpft übertragen wird. Es geht doch nur darum, dass niemand eine
> mitgeschnittene Übertragung wiederholen kann.
>

Richtig ("Playback Attacke"). Dafür gibt es mehrere Lösungsansätze, die 
(wie immer) gegeneinander abgewogen werden müssen in Bezug auf die 
relevanten Faktoren (Sicherheitsgrad, Realisierbarkeit, Aufwand, 
Stromverbrauch, Störsicherheit, Einfluss auf den workflow etc pp). Ich 
finde das in diesem Thread eigentlich sehr zivilisiert und on topic; wir 
diskutieren ja genau das, oder?

> Und wenn der Code mal nicht funktioniert, weil irgend etwas aus dem Sync
> gelaufen ist, muss es immer noch einen Schlüssel geben. In der Garage
> kann man den Sender problemlos zum Synchronisieren an einen (meinetwegen
> auch versteckt untergebrachten) Kontakt halten.

Ack. Deswegen sollte aber der Notanker wirklich nur im seltenen 
Ausnahmefall zum Einsatz kommen, sonst leidet die Akzeptanz der Lösung 
darunter, oder?

von Cyblord -. (cyblord)


Lesenswert?

RAc schrieb:
> ja, aber dann geht es sofort wieder los: Über das Protokoll muss sich
> jeder Sender dann zuerst identifizieren, d.h. wir sind dann wieder bei
> einem zustandsbehafteten Protokoll

Nein er sendet nur die ID mit den Klartextdaten mit, damit die Basis 
weiß welchen Schlüssel und welchen Sequenzzähler es zu bedienen gilt. 
Das fügt keinen Zustand hinzu.

> Wenn wir das mit instantiierten Sequenznummern machen, ist wieder die
> Frage, was passiert, wenn sich ein nicht bekanntes Modul anmeldet. Das
> ist im Endbetrieb ja erstmal jederzeit möglich (ein Handgerät wird
> gewechselt oder zugekauft). Solange der aktuelle key stimmt, spricht ja
> auch nichts dagegen, aber vermutlich sollte im workflow so ein neues
> Gerät "freigeschaltet" werden müssen (also wie bei der Fritzbox). Muss
> halt Alles gemacht werden!

Für Hobbykram macht man das manuell. Es geht ja nicht um ein 
Verkaufsprodukt.

von RAc (Gast)


Lesenswert?

Cyblord -. schrieb:
> RAc schrieb:
>> ja, aber dann geht es sofort wieder los: Über das Protokoll muss sich
>> jeder Sender dann zuerst identifizieren, d.h. wir sind dann wieder bei
>> einem zustandsbehafteten Protokoll
>
> Nein er sendet nur die ID mit den Klartextdaten mit, damit die Basis
> weiß welchen Schlüssel und welchen Sequenzzähler es zu bedienen gilt.
> Das fügt keinen Zustand hinzu.
>

Also dein Ansatz wäre eine "atomische" Öffnung, also ein einzelnes 
unidirektionales Paket vom Steuergerät zur Basis mit folgendem Inhalt:

- Klartextnonce, minimal bestehend aus
  - Geräte Id
  - Sequenznummer
  - Anzahl relevanter Bytes der Payload
    (wichtig weil AES 16 byte gepaddete Blöcke fordert)
- cryptierte Payload, minimal bestehend aus
  - <optional beliebige Originalpayload, z.B. neue Schlüsselgeneration>
  - CMAC über die nonce <und optionaler Klartextpayload>

?

Dann würde die Basis nach Empfang das Paket trennen, die cryptierte 
Payload mit dem aktuellen Schlüssel decryptieren, die CMAC über die 
nonce und die optionale Originalpayload berechnen und vergleichen. Bei 
positivem Vergleich und akzeptierter Sequenznummer wird die Tür 
geöffnet, die erwartete Sequenznummer erhöht und ggf. die Payload 
ausgewertet (also z.B. Schlüssel tauschen). Ggf. durch geeignete 
Massnahmen dafür sorgen, dass die Sequenznummerierung fehlertolerant 
ist.

Das könnte klappen. Was mir dabei noch einfällt ist dass die 
Sendestation in dieser Strategie keinerlei feedback über die Transaktion 
bekommt. Wenn z.B. tatsächlich ein Schlüsseltausch in der Payload 
beinhaltet ist, dann muss die Sendestation erfahren können, ob die Basis 
den Tausch wirklich angenommen hat, sonst haben nämlich beide Seiten 
plötzlich unterschiedliche Schlüssel. Das geht ja aber nicht, weil es 
keine Antwort gibt.* Es hilft dann leider auch nichts, wenn sich die 
Sendestation mehrere Schlüsselgenerationen merkt, weil sie eben durch 
das fehlende feedback nicht weiss, ob sie noch einen älteren Schlüssel 
ausprobieren sollte.

Also mit einem atomischen Protokoll sind meinem Verständnis nach 
Schlüsselgenerationswechsel over the air nicht machbar. Muss ja aber 
auch nicht sein. Hobbyanwendung, wie Du sagst. Da es sich hier immer um 
einen begehbaren Bereich handelt, ist die manuelle Kopplung neuer 
Stationen realistisch möglich.

Die höheren Anforderungen werden hier auf den Produktionsworkflow 
verlagert (die die Produktionsstätte verlassenden Geräte müssen in einem 
zusätzlichen Prüf- (und ggf. Produktions)schritt individualisiert 
werden).

* Antworten würden das Protokoll sofort zustandsbehaftet machen 
(Stichwort Garagenparks mit mehreren nebenläufig geöffneten Garagen).

von Yammi (Gast)


Lesenswert?

RAc schrieb:
> Schreiben wir aneinander vorbei? Du brauchst doch in jedem Fall zwei
> Komponenten, die miteinander in (Funk)Kommunikation stehen und in
> irgendeiner Form glauben sich gegenseitig vetrauen zu können, von denen
> die eine stationär (in der Garage) und die andere mobil (am Benutzer)
> ist, oder was fehlt mir da? Wenn Du die mobile verlierst oder im Gulli
> versenkst, ist das System in jedem Fall (by design) betriebsunfähig,
> oder?

-> jeden Chip kann man auslesen, zur Not direkt auf die Chipfläche.

Ich war früher selbst mal im Bereich Garagentor unterwegs …
Ich habe mich damals zum Einstieg etwas mit der Sicherheit beschäftigt … 
damals gabs noch keine Kinder und es war Abends viel Zeit nach der 
Arbeit. -> Aber zum Thema:
Handsender senden meistens kontinuierlich, weil das bequem ist. Öffnen 
des Tores im Funk-Grenzbereich inzwischen muss ja das Signal eigentlich 
ausgewertet werden und das Tor darf sich nur im "Sichtbereich" öffnen 
lassen. Zumindest wenn das so gekommen ist wie es danach aussah.

Aber egal:
Das System das damals im Einsatz war, konnte man einfach damit 
überlisten, dass man das Signal so stark stört das nach einem 
akzeptierten Key des Tores ein nicht mehr benötigter so gestört wird, 
dass er noch nicht "Verbraucht" ist und diesen gleichzeitig aus der 
Störung die man ja kennt extrahiert. Ohne Zeit … bidirektionale 
Kommunikation usw. kann dieser dann nachträglich einfach gesendet werden 
und Sesam öffne dich das war schon irgendwie cool.

Wobei in dem Fall auch der Schlüssel der Verschlüsselung noch über Nacht 
auf potenter Hardware berechnet werden konnte. Ältere Generationen 
ließen sich sogar noch einfach über die Lichtschranken im geschlossenen 
Zustand öffnen.

Per EMV Störimpuls konnte man auch den Controller Resetten -> Tor fährt 
nicht mehr weiter zu. Auch nett ;). Allerdings kann ich schlecht 
abschätzen wie unauffällig das noch aus 25 m oder so gewesen wäre.

Das ist auch ab und an beim Abschalten des Motors passiert -> das hat 
man dann über die gleiche Signalisierung von Betriebspunkten in der 
Software verdeckt und die Position doppelt abgelegt mitgeschrieben. Gab 
nie Auffälligkeiten, scheint also extrem zuverlässig funktioniert zu 
haben.

von Yammi (Gast)


Lesenswert?

PS das mit dem Entschlüsselungsverfahren hatte nicht ich entwickelt, 
sondern das tauchte im Netz mal irgendwann als öffentliche 
Abschlussarbeit einer NRW-Hochschule auf.

von Cyblord -. (cyblord)


Lesenswert?

RAc schrieb:

> Also dein Ansatz wäre eine "atomische" Öffnung, also ein einzelnes
> unidirektionales Paket vom Steuergerät zur Basis mit folgendem Inhalt:

Also es war nicht mein Ansatz sondern der von Alex W. aber ich finde ihn 
gut.

Und nein ganz korrekt  hast du es nicht wiedergegeben:

1.) Sender sendet Paket aus ID+Sequenz+AES(Command+Sequenz). ID bestimmt 
Sequenzzähler und Schlüssel.
2.) Empfänger entschlüsselt
3.) Empfänger vergleicht Klartext Sequenz mit verschlüsselter Sequenz
4.) Sequenz muss größer als Sequenz in letztem gültigen Datenpaket sein
5.) Sequenz muss kleiner als (Sequenzin +1000) in letztem gültigen 
Datenpaket sein.
6.) Wenn das alles passt Command ausführen + letzte Sequenz auf aktuelle 
Sequenzin setzen.

Ist zustandslos (auf Komm. Ebene) und unidirektional.

: Bearbeitet durch User
von Udo S. (urschmitt)


Lesenswert?

Cyblord -. schrieb:
> Dann muss man meist direkt Hand anlegen und die Schlüssel
> generieren und manuell in beide Geräte einspielen. Ist meistens so bei
> Hobbykram.

Das ist genauso wenn man bei Autos Funkschlüssel neu anlernen muss.

Cyblord -. schrieb:
> 1.) Sender sendet Paket aus ID+Sequenz+AES(Command+Sequenz)
> 2.) Empfänger entschlüsselt
> 3.) Empfänger vergleicht Klartext ID mit verschlüsselter ID
> 4.) ID muss größer als ID in letztem gültigen Datenpaket sein
> 5.) ID muss kleiner als (ID+1000) in letztem gültigen Datenpaket sein.

Verwechselst du ab Punkt 3 ID mit Sequenz?

von Yammi (Gast)


Lesenswert?

Das Verfahren sieht mir doch sehr stark nach KEELOQ aus ;)

von Cyblord -. (cyblord)


Lesenswert?

Udo S. schrieb:
> Cyblord -. schrieb:
>> Dann muss man meist direkt Hand anlegen und die Schlüssel
>> generieren und manuell in beide Geräte einspielen. Ist meistens so bei
>> Hobbykram.
>
> Das ist genauso wenn man bei Autos Funkschlüssel neu anlernen muss.
>
> Cyblord -. schrieb:
>> 1.) Sender sendet Paket aus ID+Sequenz+AES(Command+Sequenz)
>> 2.) Empfänger entschlüsselt
>> 3.) Empfänger vergleicht Klartext ID mit verschlüsselter ID
>> 4.) ID muss größer als ID in letztem gültigen Datenpaket sein
>> 5.) ID muss kleiner als (ID+1000) in letztem gültigen Datenpaket sein.
>
> Verwechselst du ab Punkt 3 ID mit Sequenz?

Ja, ist korrigiert.

von Sven B. (scummos)


Lesenswert?

RAc schrieb:
> Wenn ich das hier
> 
(https://crypto.stackexchange.com/questions/1512/why-is-aes-resistant-to-known-plaintext-attacks)
> richtig verstehe,

Dem ist übrigens m.E. nicht so, schon deshalb, weil IVs etwas für 
Verfahren sind die mehrere Blöcke chiffrieren, was du hier aber 
überhaupt nicht brauchst. Deine Payload ist ja kürzer als ein AES-Block. 
Den Rest des Klartext-Blocks kannst du dann einfach mit Zufall füllen. 
Oder mit Nullen, das sollte sich eigentlich gleich bleiben.

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Man braucht keine Verschlüsselung, ein guter hash reicht völlig aus.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

RAc schrieb:
> Wenn wir das mit instantiierten Sequenznummern machen, ist wieder die
> Frage, was passiert, wenn sich ein nicht bekanntes Modul anmeldet. Das
> ist im Endbetrieb ja erstmal jederzeit möglich (ein Handgerät wird
> gewechselt oder zugekauft). Solange der aktuelle key stimmt, spricht ja
> auch nichts dagegen, aber vermutlich sollte im workflow so ein neues
> Gerät "freigeschaltet" werden müssen (also wie bei der Fritzbox). Muss
> halt Alles gemacht werden!

Was ich mir gestern noch überlegt habe:

Man könnte das Anmelden neuer Geräte so vereinfachen, dass man jedem 
Gerät eine pro Gerät fortlaufende, feste ID zuteilt und die inkl. 
Zählerstand verschlüsselt mitschickt. Der Empfänger packt dann alles aus 
und sieht beim ersten Öffnen: "Aha - wir haben eine bisher unbekannte 
ID."

Daraufhin legt er einen neuen Zähler im EEPROM an und speichert den 
übermittelten Zählerstand dort ab.

Bei weiteren Empfängen dieser ID schaut er nur noch nach, ob diese 
bereits angelegt ist und vergleicht dann auch nur dessen Zählerstand.

Damit wäre der Sender identifiziert und der Zähler korrekt 
initialisiert.

Man braucht dafür also nicht mal eine Kopplung a la Fritzbox sondern 
kann wie bei einem sessionbasierendem Gerät den Sender sofort nutzen.

Damit könnte man dann auch verlorene/gestohlene Sender explizit im 
Empfänger sperren.

Gibt es dagegen Einwände?

: Bearbeitet durch Moderator
von Ruediger A. (Firma: keine) (rac)


Lesenswert?

Chris D. schrieb:
> Man könnte das Anmelden neuer Geräte so vereinfachen, dass man jedem
> Gerät eine pro Gerät fortlaufende, feste ID zuteilt und die inkl.
> Zählerstand verschlüsselt mitschickt. Der Empfänger packt dann alles aus
> und sieht beim ersten Öffnen: "Aha - wir haben eine bisher unbekannte
> ID."
>
> Daraufhin legt er einen neuen Zähler im EEPROM an und speichert den
> übermittelten Zählerstand dort ab.
>
> Bei weiteren Empfängen dieser ID schaut er nur noch nach, ob diese
> bereits angelegt ist und vergleicht dann auch nur dessen Zählerstand.
>
> Damit wäre der Sender identifiziert und der Zähler korrekt
> initialisiert.
>
> Man braucht dafür also nicht mal eine Kopplung a la Fritzbox sondern
> kann wie bei einem sessionbasierendem Gerät den Sender sofort nutzen.
>
> Damit könnte man dann auch verlorene/gestohlene Sender explizit im
> Empfänger sperren.
>
> Gibt es dagegen Einwände?

Bin mir nicht ganz sicher, ob ich das richtig verstehe... da der letzte 
Diskussionsstand ja eine unidirektionale Kommunikation war, würden sich 
Endgeräte in deinem Workflow selber anmelden? Wie würden dann zwei 
nebeneinanderliegende Garagen unterscheiden können, welche Öffner zu 
ihnen und nicht der anderen Garage gehören?

Die Anderen Variante würde ja voraussetzen, dass es auch einen 
Datenfluss vom Tor zum Öffner gibt, was wir ja eigentlich vermeiden 
wollten?

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Ruediger A. schrieb:

> Bin mir nicht ganz sicher, ob ich das richtig verstehe... da der letzte
> Diskussionsstand ja eine unidirektionale Kommunikation war, würden sich
> Endgeräte in deinem Workflow selber anmelden?

Ja.

> Wie würden dann zwei
> nebeneinanderliegende Garagen unterscheiden können, welche Öffner zu
> ihnen und nicht der anderen Garage gehören?

Durch den allen Sendern zu einem Epfänger gemeinsamen Schlüssel.
Die anderen Garagenempfänger können mit der Nachricht gar nicht erst 
etwas anfangen, da sie den Schlüssel nicht besitzen.

Der Sender muss in dieser Hinsicht also schon zum Empfänger "passen". 
Ansonsten müsste man doch wieder mit Taste am Empfänger arbeiten, um 
Sender anzumelden.

Aber das Problem hat man auch bei bidirektionaler Kommunikation.

> Die Anderen Variante würde ja voraussetzen, dass es auch einen
> Datenfluss vom Tor zum Öffner gibt, was wir ja eigentlich vermeiden
> wollten?

Ja.

von Chris R. (emigraen)


Lesenswert?

Ich habe diese AppNote von Microchip gefunden:
http://ww1.microchip.com/downloads/en/AppNotes/00001683A.pdf

Stichwort Ultimate KeeLoq

Da reiner Rolling-Code mit inkrementiertem Zähler auch attackiert werden 
kann, wird hier ein Timestamp verwendet.
1
Many vehicles on the road use a remote keyless system, or key fob, for the convenience of the user. Modern systems are hardened against simple replay attacks, but are vulnerable to buffered replay attacks. This attack is performed by placing a device that can receive and transmit radio waves within range of the target vehicle. The transmitter will attempt to jam any RF vehicle unlock signal sent to it, while placing it in a buffer for later use. Upon further attempts to unlock the vehicle, the transmitter will jam the new signal, cache it, and play back the old one, creating a rolling buffer that is one step ahead of the vehicle. At a later time, the attacker may use this buffered code to unlock the vehicle.

( https://howlingpixel.com/i-en/Replay_attack )

Bei Ultimate KeeLoq wird auch ein Timestamp verwendet. In der AppNote 
wird auch ein Verfahren zur Resynchronisation bei Batteriewechsel des 
Senders beschrieben. (Jeder Sender hat einen Zähler, der die Anzahl 
seiner Power-Ups zählt. Nach einem Power-Up setzt er ein Resync-Bit im 
Datenpaket. Der Empfänger akzeptiert eine Neusynchronisation nur, wenn 
der Power-Up-Zählerstand höher ist als beim letzten Mal --> Replay 
verhindert)
Der Empfänger sollte dagegen eine batteriegepufferte RTC haben, da man 
sonst alle Sender neu synchronisieren muss (z.B. durch Batterie raus und 
rein).

Vorteil davon ist nebenbei: Ein Sender kann mit mehreren Empfängern 
verwendet werden, ohne dass seine Sequenznummer zu weit von der im 
anderen Empfänger gespeicherten abweicht, da immer nur Timestamps 
verwendet werden.

Das ganze zu implementieren wäre doch ein nettes Projekt ;)


LG
Chris

von Karl K. (karl2go)


Lesenswert?

Wenn ich mal davon ausgehe, dass man aus einer Nachricht nicht mit 
vertretbarem Aufwand auf den verwendeten Schlüssel zurückrechnen kann: 
Dann kann ich eine ausreichend lange Zufallszahl erzeugen, die einmal im 
Klartext und einmal ausreichend hoch verschlüsselt schicken. Der 
Empfänger kann die Nachricht entschlüsseln und den Inhalt von Klartext 
und entschlüsseltem Text vergleichen. Stimmt er überein, stammt die 
Nachricht vom Sender mit dem richtigen Schlüssel.

Wenn jemand die Nachricht mitschreibt, kennt er zwar den Klartext, aber 
der ist ja kein Geheimnis. Aber er kann keine eigenen Nachrichten 
erzeugen, denn er hat den Schlüssel nicht und kann ihn nicht ermitteln.

Der Empfänger muss nur sicherstellen, dass er bereits empfangene 
Zufallszahlen nicht wieder akzeptiert, die müssen also alle gespeichert 
werden. Und durch eine ausreichend hohe Länge der Zufallszahl muss die 
Wiederholwahrscheinlichkeit beim Sender vernachlässigbar klein werden.

Was spricht dagegen?

von Alex W. (Gast)


Lesenswert?

Karl K. schrieb:
> Der
> Empfänger kann die Nachricht entschlüsseln und den Inhalt von Klartext
> und entschlüsseltem Text vergleichen. Stimmt er überein, stammt die
> Nachricht vom Sender mit dem richtigen Schlüssel.

Siehe alle anderen Beiträge oben! Nur dass deine Idee empfindlich gegen 
Reply-Attacken ist.

von Sven B. (scummos)


Lesenswert?

Karl K. schrieb:
> Der Empfänger muss nur sicherstellen, dass er bereits empfangene
> Zufallszahlen nicht wieder akzeptiert, die müssen also alle gespeichert
> werden. Und durch eine ausreichend hohe Länge der Zufallszahl muss die
> Wiederholwahrscheinlichkeit beim Sender vernachlässigbar klein werden.
>
> Was spricht dagegen?

Dass du die alle speichern musst, was a) den Rechenaufwand und b) den 
Speicherbedarf linear mit der Anzahl der Gesamt-Öffnungsvorgänge steigen 
lässt.

Geht schon, aber mit einem 4 kB EEPROM wirst du vermutlich nicht lange 
Spaß dran haben. Da musst du schon was größeres verbauen.

von Karl K. (karl2go)


Lesenswert?

Alex W. schrieb:
> Siehe alle anderen Beiträge oben!

Sie braucht aber weder synchron laufende Uhren noch einen 
inkrementierenden Zähler.

> Nur dass deine Idee empfindlich gegen
> Reply-Attacken ist.

Nicht, wenn sich der Empfänger empfangene Codes merkt. Brauchbar nur für 
"geringe" Anzahl von Übertragungen, wobei gering bei einer Zufallszahl 
von 64bit schon einige zig tausend sein dürften.

von Alex W. (Gast)


Lesenswert?

Karl K. schrieb:
> Sie braucht aber weder synchron laufende Uhren noch einen
> inkrementierenden Zähler.

Ok, bau es so! Hast Recht!

von Cyblord -. (cyblord)


Lesenswert?

Karl K. schrieb:
> Sie braucht aber weder synchron laufende Uhren noch einen
> inkrementierenden Zähler.

Dafür dann halt Speicher. Das ist nicht besser.

von Jemand (Gast)


Lesenswert?

Karl K. schrieb:
> Nicht, wenn sich der Empfänger empfangene Codes merkt. Brauchbar nur für
> "geringe" Anzahl von Übertragungen, wobei gering bei einer Zufallszahl
> von 64bit schon einige zig tausend sein dürften.

Doch, deine Ausführung ist im Vergleich sogar besonders anfällig. Man 
kann sich beliebig viele funktionierende Sendungen abfangen und 
zurücklegen, solange der Empfänger diese nicht empfängt und damit nicht 
als gebraucht vermerken kann.

von Sven B. (scummos)


Lesenswert?

Jemand schrieb:
> Karl K. schrieb:
>> Nicht, wenn sich der Empfänger empfangene Codes merkt. Brauchbar nur für
>> "geringe" Anzahl von Übertragungen, wobei gering bei einer Zufallszahl
>> von 64bit schon einige zig tausend sein dürften.
>
> Doch, deine Ausführung ist im Vergleich sogar besonders anfällig. Man
> kann sich beliebig viele funktionierende Sendungen abfangen und
> zurücklegen, solange der Empfänger diese nicht empfängt und damit nicht
> als gebraucht vermerken kann.

Das ist ein sehr gutes Argument gegen diese Variante, ja.

Dasselbe Argument gibt es übrigens auch gegen die Variante mit den 
Zählern, die Hops nach vorne erlauben ...

: Bearbeitet durch User
von Karl K. (karl2go)


Lesenswert?

Jemand schrieb:
> Man
> kann sich beliebig viele funktionierende Sendungen abfangen und
> zurücklegen...

Stimmt. Also doch Schrott.

von Chris (Gast)


Lesenswert?

Nicht wirklich. Bei UC mit Uhrenquarz mit Temperaturcompensation 
meistens durch wdt und 12 sec Zeitfenster wird ein (Unix time /12) 
Gültigkeit von 36 sec angenommen wenn derselbe Handsender innerhalb der 
letzten 9.1 Tage (16bit Überlauf) verwendet wurde,
ansonsten wird 82Sec Zeitfenster (9x)  gecheckt.
Bei 3 Telegrammen die Gültig sind und unterschiedliche Zähler aufweisen 
und innerhalb 24sec ankommen wird zuerst 32 und dann 128 Zeiteinheiten 
(12sec) ausgewertet..  Dies wenn keine erfolgreiche Aktion in den 
vergangenen ca 9 Tagen war, ansonsten wird der Bereich nur auf +-7 
Zeitfenster ausgeweitet.
Die OSC deviation wird natürlich auch gespeichert und berücksichtigt.

von Blechbieger (Gast)


Lesenswert?

Bei den VPN-Token von RSA ist die Rede von einem Seed der bei der 
Herstellung eingebrannt wird und dem VPN-Gateway bekannt gemacht und 
einem Nutzer zugeordnet werden muss. Das ist wahrscheinlich der 
Startwert für ein großes LFSR das jede Minute einmal weiter zählt und 
dessen Hash als sechsstellige Ziffer angezeigt wird. Dieser Hash ist 
dann Teil des Passworts beim Login.

Das Gateway wird mit demselben Startwert dieselbe Folge an Hashwerten 
ausrechnen und unter Berücksichtigung von maximal erlaubten 
Taktunterschieden in der Liste nachschauen. Vermutlich wird dabei auch 
implizit die Uhr synchronisiert.

Zusätzlich gibt es im internen Netzwerk eine Webinterface wo man ein 
Token synchronisieren kann. Dazu muss man drei aufeinanderfolgende 
Hashwerte eingeben.

Die Lösung für den Batteriewechseln ist dort ganz simpel. Geht gar nicht 
da verklebt und zusätzlich eingebautes Verfallsdatum. An sich sinnvoll 
aber dass dieselbe Hardware mit 3, 4 oder 5 Jahren Laufzeit zu 
entsprechend steigenden Preisen zu verkaufen ist Geldmacherei.

Für den Garagentoröffner müsste man noch eine Seriennummer o.Ä. zur 
Identifizierung mitsenden. Da der Code nicht händisch eingegeben werden 
muss kann und sollte der Hash schneller erneuert werden.

Für privat würde man bestimmt die Batterie wechselbar machen aber muss 
dann auch jedes Mal den Key neu anlernen.

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.