Forum: Mikrocontroller und Digitale Elektronik Verschlüsselung einer Funkstrecke - Hat jemand einen Tipp?


von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Im Beitrag "EnOcean und Verschlüsselung" wurde ja schon über den 
Sinn einer solchen Verschlüsselung diskutiert. Trotzdem möchte ich meine 
Funkstrecken für ähnliche Anwendungen mit einem NRF24L01+ so aufbauen, 
dass möglicht auch der letzte Bedenkenträger meint, dass man das 
Protokoll bedenkenlos für beliebige Zwecke einsetzen kann, also auch 
dort, wo mit „Angriffen” zu rechnen ist.

In Wikipedia steht zu ZigBee: "Eine Entschlüsselung des ZigBee-Keys geht 
sehr schnell". Sowas wollte ich - wenn möglich - vermeiden.

Nun kenne ich mich mit Verschlüsselung nicht so gut aus. Ich kenne von 
PGP das „Public-Key-Verfahren” und könnte mir vorstellen, dass jeder 
Funk-Knoten einen "private key" im EEPROM hat. PGP gilt ja wohl als 
ziemlich sicher.

Bin ich auf dem richtigen Weg? Oder hat jemand einen Tipp, wo eine 
geeignete Verschlüsselung beschrieben ist, die ich implementieren 
könnte?

Klar, wenn jemand die Hardware in die Hand bekommt, gibt's immer 
Möglichkeiten. Wenigstens der Funk sollte sicher sein.

: Bearbeitet durch User
von Daniel H. (Firma: keine) (commander)


Lesenswert?

Torsten C. schrieb:
> Hat jemand einen Tipp, wo eine geeignete Verschlüsselung beschrieben
> ist, die ich implementieren könnte?

Wenn du einmal einen Rundumschlag haben willst dann schau dir die 
aktuellen Empfehlungen des BSI an:
>https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR02102/BSI-TR-02102_pdf.pdf?__blob=publicationFile

Ob du asymmetrische oder symmetrische Verfahren nutzen kannst/willst 
hängt maßgeblich von den zur Verfügung stehenden Ressourcen ab, 
asymmetrische Verfahren sind im Allgemeinen deutlich langsamer und 
ressourcenfressender als symmetrische Verfahren.

Und denk nicht einmal daran irgendeines der Verfahren selber 
implementieren zu wollen, dafür gibt es spezielle Krypto-Bibliotheken 
wie Keyczar oder cryptlib.

von stmz (Gast)


Lesenswert?

Und neben Vertraulichkeit solltest du dir auch Gedanken um Integrität 
und Authentizität machen ...

von Kaj (Gast)


Lesenswert?

Daniel H. schrieb:
> schau dir die
> aktuellen Empfehlungen des BSI an
Sorry, aber das ist der absolut letzte Laden, den man empfehlen kann, 
wenn es um Sicherheit geht! Man möchte da nur mal an sachen erinnern 
wie: "Verschlüsselung XY ist nicht sicher und sollte sofort ersetzt 
werden. Unsere Server setzen aber selber Verschlüsselung XY ein, und 
zwar ohne alternative. Aber wir haben Ahnung von Sicherheit und setzen 
sie konsequent um!"
Wie ernst kann man eine staatliche Institution nehmen, die Regeln und 
Vorschläge zur Sicherheit macht, sich aber selbst in keinster weise 
daran hält? Das ist so als wenn dir dein Arzt erzählt du solltest mit 
dem Rauchen aufhören, während er das sagt aber gerade selbst ne Fluppe 
im Mund hat. Sorry, aber so einen Laden kann man schlicht weg nicht 
ernst nehmen! Da gibt es kein wenn und aber!

von Daniel H. (Firma: keine) (commander)


Lesenswert?

Kaj schrieb:
> Sorry, aber das ist der absolut letzte Laden, den man empfehlen kann,
> wenn es um Sicherheit geht!

Was für einen Laden? Ich habe ein Dokument empfohlen in dem das BSI nach 
aktuellem Stand sichere kryptographische Verfahren empfiehlt. Nach 
deiner Logik wäre der AES jetzt nur deswegen weniger sicher weil er vom 
BSI in diesem Dokument erwähnt wird. Ganz davon ab, dass es dem 
geneigten Leser natürlich offen steht die dortigen Empfehlungen anhand 
weiterer Quellen zu verifizieren.

Gerne kann ich aber nur für dich auch auf die Ergebnisse von ECRYPT 
verweisen, die leider nicht mehr ganz aktuell sind:
> http://www.ecrypt.eu.org/documents/D.SPA.20.pdf

Aber vielleicht sind auch die böse, weil da Universitäten und Firmen 
(KOMMERZ!) dran beteiligt waren.

Einen Verweis auf Empfehlungen des NIST habe ich mir ohnehin schon 
gespart.

Kaj schrieb:
> Man möchte da nur mal an sachen erinnern
> wie: "Verschlüsselung XY ist nicht sicher und sollte sofort ersetzt
> werden. Unsere Server setzen aber selber Verschlüsselung XY ein, und
> zwar ohne alternative. Aber wir haben Ahnung von Sicherheit und setzen
> sie konsequent um!"

Ja, peinliche Sache. Aber schonmal darüber nachgedacht dass die IT nicht 
unbedingt immer dann springt wenn der Experte "Hopp" sagt? Da müssen 
Prozesse durchlaufen und evaluiert werden und irgendwann schaltet dann 
der Admin die empfohlenen Ciphersuites "scharf". Für eine staatliche 
Institution erfolgte das sogar recht flott nachdem die Kritik aufkam. Da 
gibt es andere staatliche Institutionen die langsamer sind und denen ich 
noch weniger vertraue.

Kaj schrieb:
> Wie ernst kann man eine staatliche Institution nehmen, die Regeln und
> Vorschläge zur Sicherheit macht, sich aber selbst in keinster weise
> daran hält?

Offensichtlich waren sie aber immerhin in der Lage dies zu erkennen, 
einzusehen und zu ändern. Vermutlich hat jeder schonmal Regeln oder 
Vorschläge gemacht und diese letzlich selbst nicht gehalten (sogar ein 
CCC oder eine Piratenpartei). Nach der Logik dürfte man also sowieso 
niemandem mehr trauen.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

stmz schrieb:
> Und neben Vertraulichkeit solltest du dir auch Gedanken um Integrität
> und Authentizität machen

Ich hoffe, ich bin jetzt nicht zu naiv: Aber wenn eine Nachricht nach 
der Entschlüsselung einen gültigen CRC hat: Das müste doch genug 
Authentizität und Integrität nachweisen, oder?

Ansonsten kommt's m.E. auf die Daten an. Z.B. bei isochronen Daten (ohne 
Retry usw.) werden ungültige Datenpakete eh verworfen und sich nicht 
weiter gekümmert.

von Mehmet K. (mkmk)


Lesenswert?

Zwar keine direkte Antwort zu diesem Beitrag. Aber ein interasster 
Beitrag des CCC zu diesem Thema:
http://www.youtube.com/watch?v=1dhCDJ_LVuY

von Fred (Gast)


Lesenswert?

Kaj schrieb:
> Sorry, aber das ist der absolut letzte Laden, den man empfehlen kann,
> wenn es um Sicherheit geht! Man möchte da nur mal an sachen erinnern
> wie: "Verschlüsselung XY ist nicht sicher und sollte sofort ersetzt
> werden. Unsere Server setzen aber selber Verschlüsselung XY ein, und
> zwar ohne alternative. Aber wir haben Ahnung von Sicherheit und setzen
> sie konsequent um!"

Erzähl mal!

Falls es dir um SSL-Ciphersuites ging: da war die Empfehlung, künftig 
auf bestimmte Algorithmen zu verzichten, was zum damaligen Zeitpunkt 
jedoch nicht möglich war, weil die Browserunterstützung noch nicht 
gegeben war.

Und das andere Mal in ähnlicher Situation wurde vor Problemen mit einem 
Algorithmus gewarnt, dieser aber dennoch eingesetzt, weil die anderen 
verbreiteten Varianten noch schlimmer waren (weiß gerade nicht mehr, ob 
das zu BEAST- oder CRIME-Zeiten war).

von Daniel H. (Firma: keine) (commander)


Lesenswert?

Torsten C. schrieb:
> Ich hoffe, ich bin jetzt nicht zu naiv: Aber wenn eine Nachricht nach
> der Entschlüsselung einen gültigen CRC hat: Das müste doch genug
> Authentizität und Integrität nachweisen, oder?

Wenn man es genau nimmt nein, da der CRC, genau wie die Verschlüsselung, 
per Definition keine Authentizität liefert. Ein solches Konstrukt kann 
ein gewisses Maß an Authentizität liefern, muss es aber nicht.

Willst du die Authentizität absichern dann musst du aus 
sicherheisttechnischer Sicht auch ein dafür gewähltes Verfahren nehmen, 
also beispielsweise MACs.

Und auch dabei hast du wieder mehrere Optionen:
1. Erst den MAC über die Nachricht berechnen und dann Nachricht und MAC 
zusammenfassen und verschlüsseln und das Chiffrat übertragen
2. Den MAC über die Nachricht berechnen, dann die Nachricht 
verschlüsseln und beides übertragen
3. Erst die Nachricht verschlüsseln, dann den MAC über das Chiffrat 
berechnen und beides übertragen

Und nur für letztere Variante kann allgemein bewiesen werden, dass sie 
sicher ist, sofern die kryptographischen Primitiven sicher sind.

Zum Teil ist das sicherlich Erbsenzählerei, aber im Bereich der 
Sicherheit ist das unerlässlich. Alles, was nicht beweisbar sicher ist 
bzw. dessen Sicherheit noch nicht bewiesen wurde muss als unsicher 
angesehen werden.

Konstuktionen wie die von dir vorgeschlagene können funktionieren, 
müssen aber nicht. Ein Beispiel ist WEP auch hier wurde u.a. der CRC 
eingesetzt um die Integrität zu sichern, was gründlich in die Hose 
gegangen ist:
> 
http://de.wikipedia.org/wiki/Wired_Equivalent_Privacy#CRC32_als_Message_Authentication_Code_.28MAC.29

Viele Grüße
Danel

: Bearbeitet durch User
von 328882#postform (Gast)


Lesenswert?

Torsten C. schrieb:

> Ich hoffe, ich bin jetzt nicht zu naiv: Aber wenn eine Nachricht nach
> der Entschlüsselung einen gültigen CRC hat: Das müste doch genug
> Authentizität und Integrität nachweisen, oder?
>


Bei einem asymetrischen Verfahren hast du erstmal keine Gewissheit ueber 
die Authentizität des Versenders da es um die Nachricht zu 
verschluesseln es genuegt sich des oeffentlichen Schuessel des 
Empfaengers zu bedienen.

(Der Versender muesste dann also eine Signatur mitschicken welche der 
Empfaenger aber wiederum selbst beim Versender verifizieren muss.)

"Funkstrecken für ähnliche Anwendungen" ist halt etwas unbestimmt.
Wenn man dem Sender den public-key des empfaenger gleich mitgibt und er 
anderweitig nicht in Erfahrung zu bringen ist sollte mann schon annehmen 
koennen dass das eine gewisse Sicherheit gibt.

Oder?

von Alice (Gast)


Lesenswert?

Torsten C. schrieb:
> Ich hoffe, ich bin jetzt nicht zu naiv: Aber wenn eine Nachricht nach
> der Entschlüsselung einen gültigen CRC hat: Das müste doch genug
> Authentizität und Integrität nachweisen, oder?

Und wenn der Angreifer das CRC Verfahren kennt ?

von (prx) A. K. (prx)


Lesenswert?

Torsten C. schrieb:
> Ich hoffe, ich bin jetzt nicht zu naiv: Aber wenn eine Nachricht nach
> der Entschlüsselung einen gültigen CRC hat: Das müste doch genug
> Authentizität und Integrität nachweisen, oder?

Eine CRC ist dafür ungeeignet, da muss ein anderes Verfahren verwendet 
werden: https://en.wikipedia.org/wiki/Cryptographic_hash_function

: Bearbeitet durch User
von Daniel H. (Firma: keine) (commander)


Lesenswert?

328882#postform schrieb:
> "Funkstrecken für ähnliche Anwendungen" ist halt etwas unbestimmt.
> Wenn man dem Sender den public-key des empfaenger gleich mitgibt und er
> anderweitig nicht in Erfahrung zu bringen ist sollte mann schon annehmen
> koennen dass das eine gewisse Sicherheit gibt.

Das ist doch gerade die Eigenschaft des Public-Keys, jeder darf ihn 
kennen ohne dass die Sicherheit gefährdet ist.

Was du meinst ist, denke ich, die Sicherstellung der Authentizität eines 
Public-Keys den man aus einer unbekannten Quelle erhält. An dieser 
Stelle kommen dann signierte, digitale Zeritfikate zum Einsatz, bei 
denen z.B. eine allgemein bekannten Root-Authority die Echtheit eines 
Public-Keys und die Identität von dessen Inhaber bestätigt.

von (prx) A. K. (prx)


Lesenswert?

Torsten C. schrieb:
> Ich hoffe, ich bin jetzt nicht zu naiv: Aber wenn eine Nachricht nach
> der Entschlüsselung einen gültigen CRC hat: Das müste doch genug
> Authentizität und Integrität nachweisen, oder?

Fortsetzung: Authentifizierung geht mit einem Hash allein aber nicht. 
Der Trick an Verfahren wie PGP besteht in der inversen Anwendung der 
öffentlichen und privaten Schlüsseln in Verbindung mit einer solchen 
kryptografischen Signatur.

> Ansonsten kommt's m.E. auf die Daten an. Z.B. bei isochronen Daten (ohne
> Retry usw.) werden ungültige Datenpakete eh verworfen und sich nicht
> weiter gekümmert.

Da reicht es aus, festzustellen ob ein Frame intakt ist. Von wem er ist 
wird nicht festgestellt.

von Alice (Gast)


Lesenswert?

Bevor jetzt wieder die Kryptokeule rausgeholt wird.

Ein Verfahren mit preshared key mit einem symetrischen Cipher und keyed 
hashing, wo der Hashkey auch preshared ist, sollte für für Anwendungen 
ala Licht einschalten ausreichen.

Auch für Kryptokram gilt: Aufwand, Nutzen und möglicher Schaden sollten 
in einem vernüftigen Verhältniss stehen.

von (prx) A. K. (prx)


Lesenswert?

Alice schrieb:
> Bevor jetzt wieder die Kryptokeule rausgeholt wird.

Nur ist es gerade die Kryptokeule, mit der dieser Thread überhaupt erst 
gestartet wurde.

von Alice (Gast)


Lesenswert?

A. K. schrieb:
> Nur ist es gerade die Kryptokeule, mit der dieser Thread überhaupt erst
> gestartet wurde.

Aus dem ersten Post:

> Oder hat jemand einen Tipp, wo eine geeignete Verschlüsselung
> beschrieben ist, die ich implementieren könnte?

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Ich lerne gerade viele neue "Vokabeln" und potenzielle Suchbegriffe.

Danke. :-)

Wenn ich weiter über meine Fragestellung nachdenke, war ich vielleicht 
etwas auf dem Holzweg. Im Grunde geht es hier vielleicht gar nicht um 
Verschlüsselung (Geheimhaltung), sondern nur um Authentizität.

Die Daten (wann wird eine Tür aufgeschlossen, welches Fenster ist auf, 
wieviel Grad hat der Thermostat usw.) sind m.E. gar nicht geheim. Oder 
sollte man hier mit Bedenkenträgern rechnen, die das Protokoll schlecht 
reden, weil die Daten nicht verschlüsselt sind?

328882#postform schrieb:
> "Funkstrecken für ähnliche Anwendungen" ist halt etwas unbestimmt.

Ein gutes Beispiel ist ein Garagentoröffner. Aber im Grunde geht es mir 
um fast alles, was man sich im Rahmen des "Internet of Things" und der 
Hausautomatisierung vorstellen kann. WLAN ist mir dafür nur zu teuer, 
denn es kostet etwa das 10-fache pro Knoten gegenüber einem NRF24L01+. 
Und ZigBee ist auch ziemlich teuer und die Verschlüsselung scheinbar 
unsicher (s.o.).

Fred schrieb:
> weil die Browserunterstützung noch nicht gegeben war.

Zum Glück entfallen hier solche Probleme oder tauchen nur in einer 
Bridge zum Internet ins Gewicht.

Ich befürchte, das Protokoll wird ziemlich proprietär. Oder macht es im 
Zusammenhang mit dem NRF24L01+ Sinn, irgendeine standardisierte 
Implementierung für den Presentation Layer (OSI Schicht 6) zu verwenden? 
Gibt's da was? Ich hätte dazu gerade keine Idee.

Daniel H. schrieb:
> asymmetrische Verfahren sind im Allgemeinen deutlich langsamer und
> ressourcenfressender als symmetrische Verfahren.

Gut, also symmetrisch! Die Schlüssel können per USB ins EEPROM 
geschrieben und das Auslesen erschwert werden.

Wenn z.B. mal eine Funkfernbedienung verloren geht, muss man halt - um 
sicher zu gehen - überall neue Schlüssel programmieren. Ich denke, das 
wäre akzeptabel.

Wenn es also nur um Authentizität geht, also z.B.:

► Ist der Sender berechtigt, das Garagentor zu öffnen?

► Ist die gemessene Temperatur tatsächlich die von der
  gewünschten Wetterstation?

► Ist die Meldung "Das Fenster ist zu" tatsächlich die Meldung vom
  Original-Sensor, oder will ein Einbrecher der Alarmanlage ein
  geschlossenes Fenster vorgaukeln?

► usw.

Dann dürfte das m.E. gar nicht so kompliziert werden, denke ich.

: Bearbeitet durch User
von Daniel H. (Firma: keine) (commander)


Lesenswert?

Torsten C. schrieb:
> Gut, also symmetrisch! Die Schlüssel können per USB ins EEPROM
> geschrieben und das Auslesen erschwert werden.

Wäre jetzt auch mein Vorschlag gewesen, solange du alles unter deiner 
Kontrolle hast ist es denke ich recht einfach mit symmetrischen 
Verfahren zu hantieren.

Man darf natürlich nicht vergessen, dass so ein EEPROM ausgelesen werden 
kann. Aber dazu muss der Angreifer erst einmal eine weitere Hürde 
überwinden, indem er physikalischen Zugriff erlangt. In jedem Fall wäre 
das schon einmal sicherer als gar nicht zu verschlüsseln und zu 
authentisieren.

Verschlüsselung z.B. mit AES-128, Authentisierung mit HMAC unter Nutzung 
eines kryptographisch sicheren Hashs (z.B. SHA-256). Wichtig ist, dass 
du zuerst verschlüsselst und dann den MAC über das Chiffrat berechnest.

Aber wie schon gesagt, für sowas gibt es Kryptobibliotheken, die 
solltest du auch nutzen, da sie dir das Leben sehr vereinfachen.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Daniel H. schrieb:
> Wichtig ist, dass
> du zuerst verschlüsselst und dann den MAC über das Chiffrat berechnest.

Und wenn ich gar_nicht verschlüssele und nur einen 
Nachrichtenauthentifizierungscode (MAC) berechne: Ist die Authentizität 
dann gefährdet?

PS: Damit wäre doch auch schon sicher, dass kein Einbrecher der 
Alarmanlage ein geschlossenes Fenster vorgaukelt oder das Garagentor 
öffnet, oder bin ich nun zu naiv?

Verschlüsselung könnte man ja bei Bedarf immer noch ergänzen, falls 
jemand Angst um seine Privatsphäre oder den Datenschutz hat.

: Bearbeitet durch User
von Alice (Gast)


Lesenswert?

Daniel H. schrieb:
> Man darf natürlich nicht vergessen, dass so ein EEPROM ausgelesen werden
> kann. Aber dazu muss der Angreifer erst einmal eine weitere Hürde
> überwinden, indem er physikalischen Zugriff erlangt. In jedem Fall wäre
> das schon einmal sicherer als gar nicht zu verschlüsseln und zu
> authentisieren.

Welche andere Kryptoverfahren löst dieses Problem?

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Alice schrieb:
> Welche andere Kryptoverfahren löst dieses Problem?

Am Ende keins, also m.E. keine Diskussion erforderlich.

Es soll ja sogar möglich sein, die Bits auf einem Chip mit einem 
Mikroskop zu verfolgen ...

von Daniel H. (Firma: keine) (commander)


Lesenswert?

Torsten C. schrieb:
> Alice schrieb:
>> Welche andere Kryptoverfahren löst dieses Problem?
>
> Am Ende keins, also m.E. keine Diskussion erforderlich.

Korrekt. An dieser Stelle muss man dann mit Hardwaresicherheit arbeiten, 
also z.B. Speicherbereiche die speziell gegen physischen Zugriff 
gesichert sind und sich bei erkannter Manipulation selbst löschen. Oder 
dass die verwendeten Controller sich ihren Takt und die 
Versorgungsspannung selbst erzeugen (Stichtwort: Seitenkanalangriffe) 
usw.

Ob man das benötigt hängt vom Schutzbedarf ab. Wenn ich nicht möchte, 
dass mir der Nachbar das Licht per Funk ausschaltet reicht 
Verschlüsselung und Hinterlegen des Schlüssels im EEPROM in der Regel 
aus. Er könnte jetzt zwar in meine Wohnung einbrechen, die 
Lampensteuerung klauen/analysieren und dann vielleicht mein Licht per 
Funk ausschalten, die Hürde dafür ist aber deutlich höher.

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Nun war ja die Frage nach einer "geeigneten Verschlüsselung". Und der 
NRF24L01+ hat eine maximale Paket-Größe von 32 Bytes.

Daniel H. schrieb:
> Authentisierung mit HMAC unter Nutzung
> eines kryptographisch sicheren Hashs (z.B. SHA-256).

Bei fast allen kryptologischen Hashfunktionen wird wird die Länge der 
Nachricht zu Beginn auf ein ganzzahliges Vielfaches von 512 gebracht.

Das heißt, allein um den Befehl "Garagentor auf" zu senden, müsste man 
mindestens 16 Pakete senden???

Wie schwierig wäre es denn, z.B. ein HMAC mit 128bit Secret (= geheimer 
Schlüssel) und einem "32-bit CRC" als "Hash-Funktion" zu knacken?

Damit hätte ich nur 4 Byte "Overhead" für die Verschlüsselung.

http://de.wikipedia.org/wiki/Keyed-Hash_Message_Authentication_Code

Die Kombination "128bit Secret" und "32-bit CRC" sind dabei nur ein 
Beispiel für eine praktikable Lösung. 16 Byte Overhead würde man m.E. 
auch noch verkraften.

Torsten C. schrieb:
> Und wenn ich gar_nicht verschlüssele … Ist die Authentizität
> dann gefährdet?

OK, ich lese gerade: MACs schützen nicht vor Replay-Angriffen, also 
ergänze ich noch einen Zeitstempel oder eine Sequenznummer. Aber dann 
sollte es doch reichen, oder?

: Bearbeitet durch User
von Steffen R. (steffen_rose)


Lesenswert?

A. K. schrieb:
> Torsten C. schrieb:
>> Ich hoffe, ich bin jetzt nicht zu naiv: Aber wenn eine Nachricht nach
>> der Entschlüsselung einen gültigen CRC hat: Das müste doch genug
>> Authentizität und Integrität nachweisen, oder?
>
> Fortsetzung: Authentifizierung geht mit einem Hash allein aber nicht.
> Der Trick an Verfahren wie PGP besteht in der inversen Anwendung der
> öffentlichen und privaten Schlüsseln in Verbindung mit einer solchen
> kryptografischen Signatur.

Authentizität heißt ja, dass die Nachricht von dem kommt, der es 
aufgrund des Key auch ist. Daher wäre hier zusätzlich zu nennen, dass 
für jedem öffentlichen  Schlüssel auch geprüft wurde, dass sich dahinter 
auch der korrekte Empfänger verbirgt.

Desweiteren sollte bei allen Verfahren geschaut werden, wer die Keys 
erzeugt. Ist ja in vielen Fällen nicht so einfach echt zufällige Keys 
für eine solche Verwendung zu erzeugen.

von Daniel H. (Firma: keine) (commander)


Lesenswert?

Torsten C. schrieb:
> Bei fast allen kryptologischen Hashfunktionen wird wird die Länge der
> Nachricht zu Beginn auf ein ganzzahliges Vielfaches von 512 gebracht.

Stop. Die Nachricht wird in 512 _Bit_-Blöcke aufgeteilt, also 64 Byte. 
Das ist aber nicht die Ausgabelänge. Die Ausgabelänge z.B. bei SHA-2 
ist, je nach Variante, 224 bis 512 Bit also 28 bis 64 Byte.

Das ist natürlich erst einmal doof, da du damit bei HMAC mit SHA-256 
schon auf 32 Byte kommst. Nun ist es aber zulässig, z.B. die Ausgabe 
eines MACs zu beschneiden. Das BSI empfiehlt hier als absolutes Minimum 
64 Bit, besser 96 Bit.

Wenn du Letzteres nimmst kommst du sogar mit einem Paket aus und hast 
sogar noch 20 Byte für Nutzdaten frei. Da könnte man z.B. noch einen 
AES-verschlüsselten Block (16 Byte) unterbringen. Damit blieben sogar 
noch vier weitere Byte übrig. Die könnte man dann z.B. noch für den MAC 
nutzen (der dann effektiv 128 Bit hat).

Torsten C. schrieb:
> OK, ich lese gerade: MACs schützen nicht vor Replay-Angriffen, also
> ergänze ich noch einen Zeitstempel oder eine Sequenznummer. Aber dann
> sollte es doch reichen, oder?

Idealerweise macht man hier Challenge-Response, d.h. der Empfänger 
schickt dem Sender erstmal einen Zufallswert. Diesen muss der Empfänger 
dann in seine Antwort einbauen, beispielweise in die MAC-Berechnung. Die 
Verifizierung der Antwort führt der Empfänger dann unter 
Berücksichtigung des von ihm gesendeten Wertes durch und kann somit 
sicher gehen, dass der Sender auch tatsächlich über den geheimen 
Schlüssel verfügt.

Wichtig ist, dass der gesendete Wert sich nicht (oder nicht zu oft) 
wiederholt, ansonsten wäre ein Replay-Angriff mit höherer 
Wahrscheinlichkeit wieder erfolgreich.

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Steffen Rose schrieb:
> … dass für jeden öffentlichen  Schlüssel auch geprüft wurde …

Schön, dass das noch klar gestellt wurde. Aber ich denke, mit einem 
asymmetrischen Verfahren war ich auf dem Holzweg.

Steffen Rose schrieb:
> Ist ja in vielen Fällen nicht so einfach echt zufällige Keys
> für eine solche Verwendung zu erzeugen.

Wenn man sich nicht auf einen bestimmten Generator festlegt - um so 
besser. Für UUIDs bzw. GUIDs gibt es z.B. online-Generatoren und viele 
andere Möglichkeiten. Das kann dann ja jeder so machen, wie er denkt. 
Hauptsache ist erstmal, die Firmware ist sinnvoll implementiert.

Daniel H. schrieb:
> Wenn du Letzteres nimmst kommst du sogar mit einem Paket aus und hast
> sogar noch 20 Byte für Nutzdaten frei. Da könnte man …

Das klingt nach einem guten Tipp. Danke, Daniel. :-)

Daniel H. schrieb:
> Idealerweise macht man hier Challenge-Response

Ah, auch cool. :-) Klingt nicht sehr aufwendig.

Ich denke, so wird das eine "runde Sache" und besser, als die z.B. 
KFZ-Funkschlüssel, die öfter mal im TV für peinliche Berichte sorgen.

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Daniel H. schrieb:
>> Wenn du Letzteres nimmst kommst du sogar mit einem Paket aus und hast
>> sogar noch 20 Byte für Nutzdaten frei. Da könnte man …
> Das klingt nach einem guten Tipp. Danke, Daniel. :-)

Ich setze noch einen Drauf: Der NRF24L01+ kann ja "slow FH (= SFH)", 
siehe http://de.wikipedia.org/wiki/Frequency_Hopping_Spread_Spectrum

Dadurch habe ich noch was gefunden: "… es lässt sich deswegen nicht 
abhören, weil ein Außenstehender nie weiß, auf welcher Trägerfrequenz 
sich nach dem nächsten Hop das Signal befindet."

Mit dem HMAC-Schlüssel könnte ich z.B. einen "Mersenne Twister" 
initialisieren und damit eine individuelle aber bei Sender und 
Empfänger identische Kombination aus SFHSS und THSS ableiten.

Ganz schön verschlüsselt …

Jetzt muss ich mir nur noch überlegen, wie ich damit ein "Adaptive 
Frequency Hopping Spread Spectrum" realisiere, siehe
http://de.wikipedia.org/wiki/Frequenzspreizung#Adaptive_Frequency_Hopping_Spread_Spectrum

"Solche … Funknetzwerke … werden proprietär implementiert, bis heute ist 
keine allgemeine Lösung standardisiert."

Aus http://de.wikipedia.org/wiki/Bluetooth#Systemarchitektur

Dann muss ich mir wohl selbst was ausdenken, siehe
Siehe Beitrag "randsample  Random Dissolve  randIntNoRep - wie geht das?"

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

für challenge/response gibt es ganz gute Produkte wie den atsha204

- derjenige der eine nachricht versenden will generiert einen 
zufallswert (mit interner HW der MCU oder des ATSHA204)
- man generiert einen hash mit diesem random number + eines schlüssels 
aus einem der 16 slots
- nun schickt man einen check befehl an den empfänger mit dem 
generierten random number und der nummer des verwendeten key slots

- auf der empfängerseite generiert man nun einen hash mit dem 
empfangenen random number und dem key im slot nr. x (x=die nummer die 
empfangen wurde)
- den Hash schickt man an den versender zurück
- der versender checkt nun ob das resultat gleich ist, wenn ja dann war 
die authentifizierung erfolgreich

das ganze erfordert dass alle systeme dieselbe information im atsha204 
gespeichert hat.

der atsha hat auch andere funktionen wie passwort check, checkmac, 
rolling keys, usw.
um die authentifizierung gegen replay attacken zu schützen wird der 
random number wert benötigt am besten wenn man zusätzlich noch jedesmal 
einen anderen slot wählt

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.