Forum: Offtopic Wie stellt man 100%ige Datenintegrität sicher?


von Paul H. (powl)


Lesenswert?

Was ich mich schon seit längerem frage:

Mithilfe von Kanalkodierung kann man doch Daten so kodieren, dass 
etwaige Übertragungsfehler zu einer gewissen Wahrscheinlichkeit erkannt 
werden, woraufhin man das Datenpaket ggf. reparieren oder einen 
Retransmit beantragen kann.

Aber das ist der Punkt.. Übertragungsfehler können doch nur zu einer 
gewissen Wahrscheinlichkeit erkannt werden und es muss immer zwischen 
Wahrscheinlichkeit der Erkennung eines Fehlers und der bestmöglichen 
Nutzung der zur Verfügung stehenden Datenrate abgewogen werden. Das 
bedeutet, für eine 100%ige Fehlererkennungsrate müssten zu den 
eigentlichen Daten unendlich viele Zusatzinformationen gesendet werden. 
Ist ja auch intuitiv. Angenommen ich verwende Repetition-Codes und sende 
jedes Datenpaket einfach doppelt, dann besteht eine gewisse 
Wahrscheinlichkeit, dass sich der selbe Übertragungsfehler gleich in 
beide Pakete an der gleichen Stelle einschleicht und somit unerkannt 
bleibt. Sende ich das gleiche Paket aber 1000 mal ist die 
Wahrscheinlichkeit, dass alle Datenpakete mit dem selben 
Übertragungsfehler beeinflusst sind sehr gering, aber immer noch nicht 
0. D.h. bei genügend Datendurchsatz kommt es eben alle paar Jahre 
vielleicht mal vor, dass ein solcher Fehler tatsächlich auftritt.

Jetzt stellt man sich mal vor, es handle sich um einen 
Übertragungsfehler zwischen Bankkonten und eine Verkettung ungünstiger 
Ereignisse führt nun dazu, dass der zu transferierende Betrag von 1 
Millionen auf 10 Millionen verändert wird, ohne dass dieses von 
Fehlererkennungsmechanismen bemerkt werden kann, was sehr 
unwahrscheinlich ist, aber aufgrund der immensen Summe an weltweit pro 
Sekunde durchgeführtne Transaktionen ja mal vorkommen kann. Wie wird 
sichergestellt, dass das dennoch nicht passiert?

Ist Kanalkodierung so gut, dass mit nur wenig mehr Daten die 
Wahrscheinlichkeit eines nichterkannten Fehlers schon auf abartig kleine 
Werte gesenkt werden kann? Ist die übliche Dimensionierung der 
Kanalkodierung so gewählt, dass Fehler tatsächlich nur alle 
hunderttausend Jahre mal auftreten? Wie wird das dimensioniert? Oder 
liegt es daran, dass die Netzte, über die derart sensible Daten 
übertragen werden hinreichend rausch- und kollisionsfrei sind?

lg

von Bernd K. (prof7bit)


Lesenswert?

Paul H. schrieb:
> was sehr
> unwahrscheinlich ist, aber aufgrund der immensen Summe an weltweit pro
> Sekunde durchgeführtne Transaktionen ja mal vorkommen kann.

Nein. Bevor Du es schaffst (auch mit größter Mühe) eine 256-Bit 
Prüfsumme kollidieren zu lassen wird unsere Sonne bereits verglüht sein 
und Du wirst genug Entropie erzeugt haben um den ganzen Sektor hier 
dunkel und kalt zu machen.

256-Bit Prüfsummen sind Stand der Technik wenn es auf Integrität der 
Daten ankommt.

von Clemens L. (c_l)


Lesenswert?

Paul H. schrieb:
> Ist Kanalkodierung so gut, dass mit nur wenig mehr Daten die
> Wahrscheinlichkeit eines nichterkannten Fehlers schon auf abartig kleine
> Werte gesenkt werden kann?

Eine gute Prüfsumme ist effizienter als die bloße Wiederholung der 
Nachricht:
https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
> By adding t check symbols to the data, a Reed–Solomon code can
> detect any combination of up to t erroneous symbols, or correct up
> to ⌊t/2⌋ symbols.

> Ist die übliche Dimensionierung der Kanalkodierung so gewählt, dass
> Fehler tatsächlich nur alle hunderttausend Jahre mal auftreten?

Ja (wenn der Designer es nicht verkackt hat).

> Wie wird das dimensioniert? Oder liegt es daran, dass die Netzte, über
> die derart sensible Daten übertragen werden hinreichend rausch- und
> kollisionsfrei sind?

Siehe oben. Wenn auf einem bestimmten Kanal Fehler häufiger sind, muss 
man halt mehr Prüfsummen übertragen, um eine bestimmte Fehlerhäufigkeit 
zu erhalten.

In der Praxis kann man die Fehlerrate aber oft nicht voraussagen. Viele 
Protokolle definieren eine Prüfsumme fester Größe (z.B. 32-Bit-CRC bei 
Ethernet), und wenn zu viele Fehler auftreten, hat man halt Pech gehabt.

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Paul H. schrieb:
> Wie stellt man 100%ige Datenintegrität sicher?

gar nicht! Es bleibt immer ein Restrisiko. 100 % Sicherheit widerspricht 
dem 3. Hauptsatz der Thermodynamik.

von Domi F. (dfx_06)


Lesenswert?

google mal:
- CRC
- Hamming Abstand
- Mean time between failure (MTBF)

und mach dir selbst gedanken ab wieviel % sicherheit bzw. wieviel Jahren 
MTBF man von "sicher genug" sprechen kann.
Variiert natürlich von Anwendungsfall zu Anwendungsfall.

Außerdem laufen ja nicht nur retransmits und Kanalkodierungen bei 
bidirektionalen Übertragungsverfahren sondern auch Kanalschätzungen.
DH dass sowohl Übertragungsart (zB Modulation, Datenrate) als auch 
Kodierung zur Laufzeit angepasst werden können (-> siehe jedes moderne 
Übertragungsverfahren für Mobiles ab 2.5G)

von (prx) A. K. (prx)


Lesenswert?

Wiederholung der Nachricht ist die wohl ineffizienteste Methode 
überhaupt.

Ein Verfahren mit theoretischen 100% Sicherheit existiert nicht. Du 
musst also definieren, welche Sicherheit dir ausreicht. Relevant ist 
auch der Charakter der auftretenden Fehler. Sind das wild verstreute 
Einzelbitfehler oder eher Bursts? Ist nur Integrität wichtig oder auch 
Korrektur interessant?

von Lukas T. (tapy)


Lesenswert?

Theoretisch sicher ist das Übermitteln der Nachricht mit Prüfsumme, das 
Antworten mit dieser Nachricht und einem OK dran und neuer Prüfsumme und 
das erneute Senden der Nachricht mit OK und DoppelOK dran und neuer 
Prüfsumme. Quasi wie ein Mensch beim Funk.

von Paul H. (powl)


Lesenswert?

Lukas T. schrieb:
> Theoretisch sicher ist das Übermitteln der Nachricht mit Prüfsumme, das
> Antworten mit dieser Nachricht und einem OK dran und neuer Prüfsumme und
> das erneute Senden der Nachricht mit OK und DoppelOK dran und neuer
> Prüfsumme. Quasi wie ein Mensch beim Funk.

Im Fehlerfall könnte das "Nein nein, nicht OK!" am Ende dennoch mit 
geringer Wahrscheinlichkeit als "OK!" verstanden werden

von Lukas T. (tapy)


Lesenswert?

Paul H. schrieb:
> Im Fehlerfall könnte das "Nein nein, nicht OK!" am Ende dennoch mit
> geringer Wahrscheinlichkeit als "OK!" verstanden werden

Eigentlich nicht, da im Fehlerfall nicht die Nachricht zurück gesendet 
wird, sondern schlicht die Fehlermeldung.

100% Sicherheit gibt es nicht. Aber für Aribags und ABS im Auto reicht 
fast schon CRC alleine (gibt aber noch circa vier weitere Mechanismen).

Zurücksenden und Vergleichen ist (meiner Meinung nach) so nahe an 100% 
wie es geht, sofern die üblichen Mechanismen mit Checksumme und so 
weiter ebenfalls angewandt werden.

von .● Des|ntegrator ●. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

Paul H. schrieb:
> Jetzt stellt man sich mal vor, es handle sich um einen
> Übertragungsfehler zwischen Bankkonten und eine Verkettung ungünstiger
> Ereignisse führt nun dazu, dass der zu transferierende Betrag von 1
> Millionen auf 10 Millionen verändert wird

Die grössten Unschärfefaktoren sind immer noch im Kopp.

bei einer "Papierüberweisung" muss man ziemlich genau
auch noch nach 5 Jahren die damals hinterlegte Unterschrift 
reproduzieren können. bei Abweichung wird die Überweisung zurück 
gestellt.

Bei telefonischem oder computerisiertem Zahlungsverkehr
kräht da kein Schwein nach, weil...
es funktioniert.

Wenn man da jetzt'n Zahlendreher reinbekommt
-wir sind wieder bei der Unschärfe im Hirn,
kann ein technischer Automatismus da natürlich auch nix machen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

● J-A V. schrieb:
> Wenn man da jetzt'n Zahlendreher reinbekommt

Geht aber nur noch beim Überweisungsbetrag. Die Kontonummer hat "IBAN" 
sei Dank eine Prüfziffer, mit der sich Zahlendreher finden lassen.

Probier's selbst aus:

http://www.iban-rechner.de/iban_validieren.html
1
DE05 7000 0000 0070 0015 06 - wird akzeptiert 
2
DE05 7000 0000 0070 0015 60 - wird nicht akzeptiert 
3
DE05 7000 0000 0700 0015 06 - wird nicht akzeptiert

(Die Kontonummer ist die eines Finanzamtes, es ist also müßig, 
irgendwelche Spielereien damit anzustellen)

von .● Des|ntegrator ●. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

Rufus Τ. F. schrieb:
> Geht aber nur noch beim Überweisungsbetrag.

reicht doch, finde ich.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Schon, aber da der Überweisungsbetrag nunmal eine willkürliche Größe 
ist, ist es irgendwie ziemlich schwierig, den mit einer Prüfsumme zu 
sichern.

Auf EC-Schecks konnte/musste man den Betrag in Worten ausschreiben, ein 
solches Verfahren könnte vielleicht etwas Sicherheit bringen, aber 
dürfte andererseits auch viele Leute überfordern. Bedenkt man, daß es 
Bundesländer gibt, in denen die Bewohner nicht "fünfzehn" oder "fünfzig" 
sagen können ... möcht ich mir nicht ausmalen, was die 
Texterkennungssysteme da zu kämpfen haben.

von .● Des|ntegrator ●. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

Rufus Τ. F. schrieb:
> ist es irgendwie ziemlich schwierig, den mit einer Prüfsumme zu
> sichern.

Warum das denn?
Es wird ein Betrag eingegeben. Dieser wird ja wohl als Datenwort 
übermittelt. Die "Zieladresse" sagt nix dazu?

woher weiss denn sonst ein System dass der Absender eine "01100110" 
gesendet
hat und wie kann man sicherstellen, dass am anderen Ende auch eine 
"01100110" und keine "01100111" ankommt?
Das sind doch längst uralte Techniken.
Ausgerechnet im Banking implementiert man das nicht?

dann sollte man das schnell mal ändern.

oder sonst eine Beitragsbestätigung als 2. Fenster, wie die 
Passwortbestätigung bei der Anmeldung für ein Forum, neue EmailAdresse 
etcpp. so schwer kanns ja nicht sein.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

● J-A V. schrieb:
> Warum das denn?
> Es wird ein Betrag eingegeben. Dieser wird ja wohl als Datenwort
> übermittelt. Die "Zieladresse" sagt nix dazu?

Das ist die Frage, an welcher Stelle das geschieht. Bei der IBAN werden 
Fehleingaben in das Überweisungsformular abgefangen, beim Betrag ist das 
prinzipbedingt unmöglich.

Daß die Daten des Überweisungsformulars, so wie sie eingegeben wurden 
dann fehlerfrei transportiert werden, das ist sichergestellt.

Aber die Eingabe in das Formular kann nur endlich abgesichert werden. 
Ein Zahlendreher im Betrag, ein zu großer Betrag - das lässt sich nur 
mit Kontrolle seitens des Absenders überwachen, d.h. mit Korrekturlesen 
vor dem Absenden des Überweisungsauftrags.

Was meinst Du mit "Zieladresse"? Stellst Du Dir vor, daß der Empfänger 
einer Überweisung vor Absenden der Überweisung seiner Bank die erwartete 
Überweisung bekanntgibt?

von .● Des|ntegrator ●. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

Rufus Τ. F. schrieb:
> Was meinst Du mit "Zieladresse"?

der Ort, Das Gerät etc, wo die übermittelten Daten hin sollen.

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.