Guten Morgen, ich habe eine Frage zu der Auftrittswahrscheinlichkeit eines bestimmten Falls bei einer verschlüsselten Datenübertragung: Ich habe eine serielle Datenleitung bei der 8 Byte große verschlüsselte Datagramme übertragen werden. Das Verfahren ist XXTEA, beide Teilnehmer kennen den Schlüssel. Ein zusätzliches 9. Byte ist eine 8-Bit CRC die Übertragungsfehler in den meisten Fällen erkennen soll. Folgendes Szenario: Ein Kommunikationsteilnehmer ist "böswillig" und verwendet während der Kommunikation absichtlich einen falschen Schlüssel bzw. probiert per Brute-Force die Keys durch (allerdings mit einer korrekten CRC). Das führt dazu, dass der Empfänger das Datum prüft, keinen Übertragungsfehler feststellt und das Paket verarbeitet. Es kann zufällig sein, dass die falsch verschlüsselten Daten ein aus Sicht des Empfängers sinnvolles Datenpaket ergeben, das wäre bei etwa 15% der falschen Pakete der Fall. Aus diesem Grund prüft er NACH der Entschlüsselung ein weiteres Byte aus dem 8-Byte-Block. Hier habe ich die Wahl z.B. auf einen Wert zu vergleichen, z.B. "0xAA" oder alternativ eine "innere CRC" über die verbliebenen 7 Byte Nutzdaten zu bilden. Da ja nur 1 Byte verwendet wird, ist also die Wahrscheinlichkeit einen "false positive" zu bekommen bei 1 aus 256. Jetzt meine Frage: Da beides mal nur 8 Bit für die Sicherung verwendet werden müsste es doch nahezu irrelevant sein die korrekte innere CRC zu prüfen (und damit zusätzlich Rechenleistung zu verheizen) oder auf einen festen Wert zu vergleichen? Die Wahrscheinlichkeit für einen "false positive"-Fall bleibt doch dieselbe? Denkfehler? Ich hab's schon versucht mit einem PC-Programm über mehrere Tage zu testen, aber wirklich aussagekräftige Daten erhalten ich da nicht. Vielleicht könnt ihr mir ja auf die Sprünge helfen...
Wie hoch ist denn die Wahrscheinlichkeit, dass jemand "böswillig" falsche Daten sendet? Ich weiß ja nicht wofür es gedacht ist, aber ich denk, dass wird nicht SOOO Wahrscheinlich sein. Ich halte CRC für Sinnvoll!
Ich würde statt der ineren CRC einfach einen fortlaufenden Zähler nutzen, dann bist du sogar gegen eine Replay Attake abgesichert (in Gewissen Grenzen zumindest). Ein konstanter Wert ist eine schlechte Idee da du dadurch Redundanz einfügst welche für einen Angriff verwendet werden kann.
Da der Controller eine Art Dongle darstellt ist das sehr wahrscheinlich, dass hier gehackt wird. Ein Zähler war ursprünglich mal geplant und ist zwar möglich, aber nicht so trivial, da bis zu 32 Teilnehmer am Bus hängen die verschiedenste Aufgaben erfüllen. Ich werde da nochmal den Aufwand abschätzen. Ich werde dann mal vorläufig den Weg über die innere CRC gehen. Danke euch mal.
Dongles sind böse. Nur ein gehackter Dongle ist eine guter Dongle.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.