Korrekturcodes. Der Beginn einer neuen Codierungstheorie



Informationssicherheitsprobleme erfordern das Studium und die Lösung einer Reihe theoretischer und praktischer Probleme bei der Informationsinteraktion von Systemteilnehmern. Unsere Doktrin der Informationssicherheit formuliert die dreigliedrige Aufgabe, die IntegritĂ€t, Vertraulichkeit und VerfĂŒgbarkeit von Informationen sicherzustellen. Die hier vorgestellten Artikel widmen sich der Betrachtung spezifischer Fragen seiner Lösung im Rahmen verschiedener staatlicher Systeme und Teilsysteme. Zuvor hat der Autor in 5 Artikeln die Fragen der GewĂ€hrleistung der Vertraulichkeit von Nachrichten anhand staatlicher Standards behandelt. Das allgemeine Konzept des Codierungssystems wurde auch von mir frĂŒher gegeben .



EinfĂŒhrung



Durch meine Grundausbildung bin ich kein Mathematiker, aber im Zusammenhang mit den Disziplinen, die ich an der UniversitĂ€t lese, musste ich es akribisch verstehen. Lange und beharrlich las ich die klassischen LehrbĂŒcher unserer fĂŒhrenden UniversitĂ€ten, eine fĂŒnfbĂ€ndige mathematische EnzyklopĂ€die, viele dĂŒnne populĂ€re BroschĂŒren zu bestimmten Themen, aber es gab keine Zufriedenheit. Ein tiefes LeseverstĂ€ndnis trat auch nicht auf.



Alle mathematischen Klassiker konzentrieren sich in der Regel auf den unendlichen theoretischen Fall, und spezielle Disziplinen basieren auf dem Fall endlicher Konstruktionen und mathematischer Strukturen. Der Unterschied in den AnsĂ€tzen ist kolossal, das Fehlen oder Fehlen guter vollstĂ€ndiger Beispiele ist möglicherweise der Hauptnachteil und das Fehlen von LehrbĂŒchern fĂŒr UniversitĂ€ten. Es gibt sehr selten ein Problembuch mit Lösungen fĂŒr AnfĂ€nger (fĂŒr StudienanfĂ€nger) und solche, die existieren, sĂŒndigen mit Auslassungen in ErklĂ€rungen. Im Allgemeinen habe ich mich in gebrauchte technische BuchlĂ€den verliebt, dank derer die Bibliothek und bis zu einem gewissen Grad der Wissensspeicher wieder aufgefĂŒllt wurden. Ich hatte die Gelegenheit, viel zu lesen, aber "ging nicht".



Dieser Weg fĂŒhrte mich zu der Frage, was ich alleine tun kann, ohne Buch "KrĂŒcken", nur ein leeres Blatt Papier und einen Bleistift mit Radiergummi vor mir zu haben. Es stellte sich heraus, dass es ziemlich viel war und nicht ganz das, was gebraucht wurde. Der schwierige Weg der willkĂŒrlichen Selbstbildung wurde beschritten. Die Frage war dies. Kann ich zunĂ€chst die Arbeit des Codes erstellen und erklĂ€ren, der Fehler erkennt und behebt, z. B. Hamming-Code, (7, 4) -Code?



Es ist bekannt, dass der Hamming-Code in vielen Anwendungen auf dem Gebiet der Datenspeicherung und des Datenaustauschs, insbesondere in RAID, weit verbreitet ist. DarĂŒber hinaus befindet es sich im ECC-Speicher und ermöglicht die sofortige Korrektur von Einzel- und Doppelfehlern.



Informationssicherheit. Codes, Chiffren, Steg-Nachrichten



Die Informationsinteraktion durch den Austausch von Nachrichten zwischen den Teilnehmern sollte auf verschiedenen Ebenen und auf verschiedene Weise, sowohl durch Hardware als auch durch Software, geschĂŒtzt werden. Diese Tools werden im Rahmen bestimmter Theorien (siehe Abbildung A) und Technologien entwickelt, entworfen und erstellt, die in internationalen Abkommen ĂŒber OSI / ISO-Modelle ĂŒbernommen wurden.



Der Informationsschutz in Informationstelekommunikationssystemen (ITS) wird praktisch zum Hauptproblem bei der Lösung von Managementproblemen, sowohl auf der Ebene einer einzelnen Person - eines Benutzers - als auch fĂŒr Unternehmen, VerbĂ€nde, Abteilungen und den gesamten Staat. Von allen Aspekten des ITKS-Schutzes werden wir in diesem Artikel den Schutz von Informationen wĂ€hrend ihrer Extraktion, Verarbeitung, Speicherung und Übertragung in Kommunikationssystemen betrachten.



Um den Themenbereich weiter zu klĂ€ren, konzentrieren wir uns auf zwei mögliche Richtungen, in denen zwei unterschiedliche AnsĂ€tze zum Schutz, zur Darstellung und zur Verwendung von Informationen betrachtet werden: syntaktisch und semantisch. Die Abbildung verwendet AbkĂŒrzungen: Codec - Codec - Decoder; shidesh - ein Decoder-Decoder; Kreischen - Concealer - Extraktor.





Abbildung A - Diagramm der Hauptrichtungen und Wechselbeziehungen von Theorien zur Lösung der Probleme beim Schutz der Informationsinteraktion



Mit den syntaktischen Merkmalen der PrĂ€sentation von Nachrichten können Sie die Richtigkeit und Genauigkeit (fehlerfrei, IntegritĂ€t) der PrĂ€sentation wĂ€hrend der Speicherung, Verarbeitung und insbesondere bei der Übertragung von Informationen ĂŒber KommunikationskanĂ€le steuern und sicherstellen. Hier werden die Hauptprobleme des Schutzes durch die Methoden der Kodologie gelöst, deren großer Teil - die Theorie der Korrektur von Codes.



Semantische (semantische) SicherheitNachrichten werden durch Methoden der Kryptologie bereitgestellt, die es mittels Kryptographie ermöglichen, einen potenziellen Eindringling vor der Beherrschung des Informationsinhalts zu schĂŒtzen. In diesem Fall kann der Übertreter die Nachricht und ihren TrĂ€ger kopieren, stehlen, Ă€ndern oder ersetzen oder sogar zerstören, kann jedoch keine Informationen ĂŒber den Inhalt und die Bedeutung der ĂŒbertragenen Nachricht erhalten. Der Inhalt der Informationen in der Nachricht bleibt fĂŒr den TĂ€ter unzugĂ€nglich. Gegenstand weiterer Überlegungen wird daher der syntaktische und semantische Schutz von Informationen in ITCS sein. In diesem Artikel beschrĂ€nken wir uns darauf, nur den syntaktischen Ansatz in einer einfachen, aber sehr wichtigen Implementierung durch Korrektur des Codes zu berĂŒcksichtigen.



Ich werde sofort eine Trennlinie bei der Lösung von Informationssicherheitsproblemen ziehen: die

Theorie der Kodologiezum Schutz von Informationen (Nachrichten) vor Fehlern (Schutz und Analyse der Syntax von Nachrichten) des Kanals und der Umgebung, um Fehler zu erkennen und zu korrigieren;

Die Theorie der Kryptologie soll Informationen vor unbefugtem Zugriff des Eindringlings auf ihre Semantik schĂŒtzen (Schutz der Semantik, Bedeutung von Nachrichten).

Die Theorie der Steganologie soll den Informationsaustausch von Nachrichten sowie das Urheberrecht und personenbezogene Daten (Schutz des medizinischen Geheimnisses) schĂŒtzen.



Im Allgemeinen gehen wir. Per Definition, und es gibt einige davon, ist es nicht einmal leicht zu verstehen, dass es Code gibt. Die Autoren schreiben, dass der Code ein Algorithmus, eine Anzeige und etwas anderes ist. Ich werde hier nicht ĂŒber die Klassifizierung von Codes schreiben, ich werde nur sagen, dass der (7, 4) -Code blockiert ist .



Irgendwann wurde mir klar, dass es sich bei dem Code um spezielle Codewörter handelt, eine endliche Menge davon, die durch spezielle Algorithmen mit dem Originaltext der Nachricht auf der Sendeseite des Kommunikationskanals ersetzt und ĂŒber den Kanal an den EmpfĂ€nger gesendet werden. Das Ersetzen wird von der Codiervorrichtung durchgefĂŒhrt, und auf der Empfangsseite werden diese Wörter von der Decodiervorrichtung erkannt.



Da die Rolle der Parteien verĂ€nderbar ist, werden diese beiden GerĂ€te zu einem zusammengefasst und als abgekĂŒrzter Codec (Encoder / Decoder) bezeichnet und an beiden Enden des Kanals installiert. Da es Wörter gibt, gibt es auch ein Alphabet. Das Alphabet besteht aus zwei Zeichen {0, 1}, BlockbinĂ€rCodes. Das natĂŒrliche Sprachalphabet (NL) besteht aus einer Reihe von Symbolen - Buchstaben, die die Laute der mĂŒndlichen Sprache beim Schreiben ersetzen. Hier werden wir uns nicht mit Hieroglyphenschrift in Silben- oder Knotenschrift befassen.



Das Alphabet und die Wörter sind bereits eine Sprache, es ist bekannt, dass natĂŒrliche menschliche Sprachen redundant sind, aber was dies bedeutet, wo Sprachredundanz schwer zu sagen ist, ist Redundanz nicht sehr gut organisiert, chaotisch. Beim Codieren und Speichern von Informationen verringern sie tendenziell die Redundanz, z. B. Archivierer, Morsecode usw.



Richard Hemming hat wahrscheinlich frĂŒher als andere erkannt, dass Redundanz, wenn sie nicht beseitigt, sondern angemessen organisiert ist, in Kommunikationssystemen verwendet werden kann, um Fehler zu erkennen und sie automatisch in den Codewörtern des ĂŒbertragenen Textes zu korrigieren. Er erkannte, dass alle 128 7-Bit-BinĂ€rwörter verwendet werden können, um Fehler in Codewörtern zu erkennen, die einen Code bilden - eine Teilmenge von 16 7-Bit-BinĂ€rwörtern. Es war eine brillante Vermutung.



Vor der Erfindung von Hamming wurden Fehler auch von der Empfangsseite erkannt, wenn der decodierte Text nicht gelesen werden konnte oder sich herausstellte, dass nicht ganz das erforderlich war. In diesem Fall wurde eine Anfrage an den Absender der Nachricht gesendet, um die Blöcke bestimmter Wörter zu wiederholen, was natĂŒrlich sehr unpraktisch war und die Kommunikationssitzungen verlangsamte. Dies war ein großes Problem, das seit Jahrzehnten nicht mehr gelöst worden war.



Konstruktion eines (7, 4) Hamming-Codes



Gehen wir zurĂŒck nach Hamming. Wörter des (7, 4) -Codes werden aus 7 Bits j = gebildet , j = 0 (1) 15, 4-Informations- und 3-PrĂŒfsymbole, d.h. im Wesentlichen redundant, da sie keine Nachrichteninformationen enthalten. Es war möglich, diese drei PrĂŒfziffern durch lineare Funktionen von 4 Informationssymbolen in jedem Wort darzustellen, wodurch sichergestellt wurde, dass ein Fehler und seine Position in Wörtern erkannt wurden, um eine Korrektur vorzunehmen. Ein (7, 4) -Code erhielt ein neues Adjektiv und wurde zu einerlinearen BlockbinĂ€rdatei. Lineare funktionale AbhĂ€ngigkeiten (Regeln (*)) zur Berechnung von Symbolwerten(ich1,ich2,ich3,ich4,p1,p2,p3)





sind wie folgt:pich



p1+ich2+ich3+ich4=0,→p1=ich2+ich3+ich4,

p2+ich1+ich3+ich4=0,→p2=ich1+ich3+ich4,(∗)

Das Korrigieren des Fehlers wurde zu einer sehr einfachen Operation - ein Zeichen (Null oder Eins) wurde im fehlerhaften Bit bestimmt und durch ein anderes entgegengesetztes 0 durch 1 oder 1 durch 0 ersetzt. Wie viele verschiedene Wörter bilden den Code? Die Antwort auf diese Frage fĂŒr den (7, 4) -Code ist sehr einfach. Da es nur 4 Informationsziffern gibt, hat ihre Vielfalt, wenn sie mit Symbolen gefĂŒllt istp3+ich1+ich2+ich4=0,→p3=ich1+ich2+ich4...





= 16 Optionen, dann gibt es einfach keine anderen Möglichkeiten, dh ein Code, der nur aus 16 Wörtern besteht, stellt sicher, dass diese 16 Wörter das gesamte Schreiben der gesamten Sprache darstellen. Die Informationsteile dieser 16 Wörter sind mit # (24





): 0 = 0000; 4 = 0100; 8 = 1000; 12 = 1100; 1 = 0001; 5 = 0101; 9 = 1001; 13 = 1101; 2 = 0010; 6 = 0110; 10 = 1010; 14 = 1110; 3 = 0011; 7 = 0111; 11 = 1011; 15 = 1111. Jedes dieser 4-Bit-Wörter muss berechnet und rechts durch 3 PrĂŒfbits hinzugefĂŒgt werden, die gemĂ€ĂŸ den Regeln (*) berechnet werden. Zum Beispiel haben wir fĂŒr das Informationswort Nr. 6 gleich 0110ich1,ich2,ich3,ich4













und Berechnungen von PrĂŒfsymbolen ergeben das folgende Ergebnis fĂŒr dieses Wort:ich1=0,ich2=1,ich3=1,ich4=0



(R.1=0,R.2=1,R.3=1)

R.1=ich2+ich3+ich4=1+1+0(mÖd2)=2(mÖd2)=0,

R.2=ich1+ich3+ich4=0+1+0(mÖd2)=1(mÖd2)=1,

R.3=ich1+ich2+ich4=0+1+0(mÖd2)=1(mÖd2)=1.



In diesem Fall hat das sechste Codewort die Form: VON6=(ich1,ich2,ich3,ich4,p1,p2,p3)=(0110011)...Ebenso mĂŒssen die PrĂŒfsymbole fĂŒr alle 16 Codewörter berechnet werden. Bereiten wir eine 16-zeilige Tabelle K fĂŒr die Codewörter vor und fĂŒllen die Zellen nacheinander aus (ich empfehle dem Leser, dies mit einem Bleistift in der Hand zu tun).



Tabelle K - Codewörter j, j = 0 (1) 15, (7, 4) - Hamming-Codes



Beschreibung der Tabelle: 16 Zeilen - Codewörter; 10 Spalten: Sequenznummer, Dezimaldarstellung des Codeworts, 4 Informationssymbole, 3 PrĂŒfsymbole, W-Gewicht des Codeworts entspricht der Anzahl der Nicht-Null-Bits (≠ 0). 4 Codewortzeilen werden durch FĂŒllen hervorgehoben - dies ist die Basis des Vektorunterraums. Eigentlich ist das alles - der Code ist aufgebaut.



Somit enthĂ€lt die Tabelle alle Wörter (7, 4) - den Hamming-Code. Wie Sie sehen, war es nicht sehr schwierig. Als nĂ€chstes werden wir darĂŒber sprechen, welche Ideen Hamming zu dieser Codekonstruktion gefĂŒhrt haben. Wir alle kennen den Morsecode, das Marine-Semaphor-Alphabet und andere Systeme, die auf unterschiedlichen heuristischen Prinzipien basieren, aber hier im (7, 4) -Code werden zum ersten Mal strenge mathematische Prinzipien und Methoden verwendet. Die Geschichte wird nur ĂŒber sie sein.



Mathematische Grundlagen des Codes. Höhere Algebra



Es ist an der Zeit zu erzĂ€hlen, wie R. Hemming auf die Idee kam, einen solchen Code zu öffnen. Er machte sich keine besonderen Illusionen ĂŒber sein Talent und formulierte bescheiden eine Aufgabe fĂŒr sich: einen Code zu erstellen, der einen Fehler in jedem Wort erkennt und korrigiert (tatsĂ€chlich wurden sogar zwei Fehler entdeckt, aber nur einer von ihnen wurde korrigiert). Bei QualitĂ€tskanĂ€len ist sogar ein Fehler ein seltenes Ereignis. Daher war Hemmings Plan im Maßstab des Kommunikationssystems immer noch grandios. Nach ihrer Veröffentlichung gab es eine Revolution in der Codierungstheorie.



Es war 1950. Ich gebe hier meine einfache (ich hoffe, verstĂ€ndliche) Beschreibung, die ich von anderen Autoren nicht gesehen habe, aber wie sich herausstellte, ist nicht alles so einfach. Es brauchte Wissen aus zahlreichen Bereichen der Mathematik und Zeit, um alles tief zu verstehen und selbst zu verstehen, warum dies so gemacht wird. Erst danach konnte ich die schöne und ziemlich einfache Idee schĂ€tzen, die in diesem Korrekturcode implementiert ist. Die meiste Zeit habe ich mich mit der Technik der Berechnungen und der theoretischen BegrĂŒndung aller Handlungen beschĂ€ftigt, ĂŒber die ich hier schreibe.



Die Ersteller der Codes konnten sich lange Zeit keinen Code vorstellen, der zwei Fehler erkennt und korrigiert. Die von Hemming verwendeten Ideen haben dort nicht funktioniert. Ich musste schauen und neue Ideen wurden gefunden. Sehr interessant! Fesselt. Es dauerte ungefÀhr 10 Jahre, um neue Ideen zu finden, und erst danach gab es einen Durchbruch. Codes, die eine beliebige Anzahl von Fehlern anzeigen, wurden relativ schnell empfangen.



VektorrÀume, Felder und Gruppen . Der resultierende (7, 4) -Code (Tabelle K) reprÀsentiert einen Satz von Codewörtern, die Elemente eines Vektorunterraums (der Ordnung 16 mit der Dimension 4) sind, d.h. Teil eines Vektorraums der Dimension 7 mit Ordnung27=128.Von den 128 Wörtern sind nur 16 im Code enthalten, aber sie wurden aus einem bestimmten Grund in den Code aufgenommen.



Erstens sind sie ein Unterraum mit allen folgenden Eigenschaften und SingularitĂ€ten, zweitens sind Codewörter eine Untergruppe einer großen Gruppe der Ordnung 128, noch mehr eine additive Untergruppe eines endlichen erweiterten Galois-Feldes GF (27) Ausdehnungsgrad n = 7 und Merkmal 2. Diese große Untergruppe wird durch eine kleinere Untergruppe in benachbarte Klassen zerlegt, was durch die folgende Tabelle D gut veranschaulicht wird. Die Tabelle ist in zwei Teile unterteilt: obere und untere, sollte jedoch als eine lange gelesen werden. Jede benachbarte Klasse (Zeile der Tabelle) ist durch die Äquivalenz der Komponenten ein Element der Faktorgruppe.



Tabelle D - Zersetzung der Additivgruppe des Galois-Feldes GF (27) in Nebenmengen (Zeilen von Tabelle D) fĂŒr die Untergruppe 16. Ordnung.



Die Spalten der Tabelle sind Kugeln mit Radius 1. Die linke Spalte (wiederholt) ist das Syndrom des Wortes (7, 4) Hamming-Code, die nĂ€chste Spalte ist der AnfĂŒhrer der zusammenhĂ€ngenden Klasse. Öffnen wir die binĂ€re Darstellung eines der Elemente (das 25. wird durch FĂŒllen hervorgehoben) der Faktorgruppe und ihrer Dezimaldarstellung:



0· ·x6+0· ·xfĂŒnf+1· ·x4+1· ·x3+0x2+0x+1=1· ·24+1· ·23+1· ·20=Sechszehn+8+1=25



Technik zum Erhalten von Zeilen der Tabelle D. Ein Element aus der Spalte der Leiter der Klasse wird mit jedem Element aus der Kopfzeile der Spalte der Tabelle D summiert (die Summierung wird fĂŒr die Zeile des Leiters in binĂ€rer Form mod2 durchgefĂŒhrt). Da alle Klassenleiter das Gewicht W = 1 haben, unterscheiden sich alle Summen von dem Wort in der SpaltenĂŒberschrift nur an einer Position (gleich fĂŒr die gesamte Zeile, aber unterschiedlich fĂŒr die Spalte). Tabelle D hat eine wunderbare geometrische Interpretation. Alle 16 Codewörter werden durch die Zentren der Kugeln im 7-dimensionalen Vektorraum dargestellt. Alle Wörter in der Spalte unterscheiden sich vom oberen Wort an derselben Position, dh sie liegen auf der OberflĂ€che einer Kugel mit dem Radius r = 1.



Diese Interpretation verbirgt die Idee, einen Fehler in einem beliebigen Codewort zu erkennen. Wir arbeiten mit Kugeln. Die erste Bedingung fĂŒr die Fehlererkennung ist, dass sich Kugeln mit Radius 1 nicht berĂŒhren oder schneiden dĂŒrfen. Dies bedeutet, dass die Zentren der Kugeln einen Abstand von 3 oder mehr voneinander haben. In diesem Fall schneiden sich die Kugeln nicht nur nicht, sondern berĂŒhren sich auch nicht. Dies ist eine Voraussetzung fĂŒr die Eindeutigkeit der Entscheidung: Welche SphĂ€re sollte dem fehlerhaften Wort zugeordnet werden, das der Decoder auf der Empfangsseite empfangen hat (kein Code eins von 128 -16 = 112).



Zweitens ist der gesamte Satz von 7-Bit-BinĂ€rwörtern mit 128 Wörtern gleichmĂ€ĂŸig auf 16 Kugeln verteilt. Der Decoder kann nur ein Wort aus diesem Satz von 128 bekannten Wörtern mit oder ohne Fehler erhalten. Drittens kann die Empfangsseite ein Wort ohne Fehler oder mit Verzerrung empfangen, das jedoch immer zu einer der 16 Kugeln gehört, was vom Decodierer leicht bestimmt werden kann. In der letzteren Situation wird eine Entscheidung getroffen, dass ein Codewort gesendet wurde - der Mittelpunkt einer vom Decodierer bestimmten Kugel, die die Position (Schnittpunkt einer Zeile und einer Spalte) des Wortes in Tabelle D gefunden hat, d. H. Die Spalten- und Zeilennummern.



Hier ergibt sich eine Anforderung fĂŒr die Wörter des Codes und fĂŒr den Code als Ganzes: Der Abstand zwischen zwei beliebigen Codewörtern muss mindestens drei betragen, dh die Differenz fĂŒr ein Paar von Codewörtern, zum Beispiel i = 85 =(ich1,ich2,ich3,ich4,p1,p2,p3)= 1010101; j = 25 =(ich1,ich2,ich3,ich4,p1,p2,p3)= 0011001 muss mindestens 3 sein; 85 - 25 = 1010101 - 0011001 = 1001100 = 76, das Gewicht des Differenzworts W (76) = 3. (Tabelle D ersetzt die Berechnung von Differenzen und Summen). Hier wird der Abstand zwischen binĂ€ren Wortvektoren als die Anzahl nicht ĂŒbereinstimmender Positionen in zwei Wörtern verstanden. Dies ist die Hamming-Distanz, die in Theorie und Praxis weit verbreitet ist, da sie alle Axiome der Distanz erfĂŒllt.



Bemerkung . Der (7, 4) -Code ist nicht nur ein linearer Block-BinÀrcode , sondern auch ein Gruppencode, dh die Wörter des Codes bilden durch Addition eine algebraische Gruppe. Dies bedeutet, dass zwei beliebige Codewörter, wenn sie addiert werden, wieder eines der Codewörter ergeben. Nur ist dies keine gewöhnliche Additionsoperation, sondern Additionsmodulo zwei.



Tabelle E - Die Summe der Elemente der Gruppe (Codewörter), die zum Erstellen des Hamming-Codes verwendet wurden



Die Operation zum Summieren von Wörtern selbst ist assoziativ, und fĂŒr jedes Element in der Menge der Codewörter gibt es ein Gegenteil, dh das Summieren des ursprĂŒnglichen Wortes mit dem Gegenteil ergibt den Wert Null. Dieses Null-Codewort ist das neutrale Element in der Gruppe. In Tabelle D ist dies die Hauptdiagonale von Nullen. Der Rest der Zellen (Zeilen- / Spaltenschnittpunkte) sind Zahlen-Dezimal-Darstellungen von Codewörtern, die durch Summieren von Elementen aus einer Zeile und einer Spalte erhalten werden. Wenn Sie die Wörter an bestimmten Stellen neu anordnen (beim HinzufĂŒgen), bleibt das Ergebnis gleich, außerdem haben Subtraktion und Addition von Wörtern das gleiche Ergebnis. Ferner wird ein Codierungs- / Decodierungssystem in Betracht gezogen, das das Syndromprinzip implementiert.



Code-Anwendung. Codierer



Der Encoder befindet sich auf der Sendeseite des Kanals und wird vom Absender der Nachricht verwendet. Der Absender der Nachricht (der Autor) bildet die Nachricht im natĂŒrlichen Alphabet und prĂ€sentiert sie in digitaler Form. (Der Name des Zeichens im ASCII-Code und in BinĂ€rform).

Es ist praktisch, Texte in Dateien fĂŒr einen PC mit einer Standardtastatur (ASCII-Codes) zu generieren. Jedes Zeichen (Buchstabe des Alphabets) in dieser Codierung entspricht einem Oktett von Bits (acht Bits). FĂŒr den (7, 4) - Hamming-Code, in dessen Wörtern nur 4 Informationssymbole vorhanden sind, sind beim Codieren eines Tastatursymbols in einen Buchstaben zwei Codewörter erforderlich, d.h. Ein Oktett eines Buchstabens wird in zwei Informationswörter der natĂŒrlichen Sprache (NL) des Formulars aufgeteilt

ich<4> = <ich1,ich2,ich3,ich4>...



Beispiel 1 . Es ist notwendig, das Wort "Ziffer" nach NL zu ĂŒbertragen. Wir geben die ASCII-Codetabelle ein, die Buchstaben entsprechen: c –11110110 und –11101000, f - 11110100, p - 11110000 und - 11100000 Oktetten. Oder anders gesagt, in ASCII-Codes ist das Wort "Ziffer" = 1111 0110 1110 1000 1111 0100 1111 0000 1110 0000



mit einer Aufteilung in Tetraden (jeweils 4 Ziffern). Somit erfordert die Codierung des Wortes "Ziffer" NL 10 Codewörter des (7, 4) Hamming-Codes. Die Tetraden reprĂ€sentieren die Informationsbits der Nachrichtenwörter. Diese Informationswörter (Tetraden) werden in Codewörter (jeweils 7 Bit) umgewandelt, bevor sie an den Kommunikationsnetzwerkkanal gesendet werden. Dies erfolgt durch Vektor-Matrix-Multiplikation: das Informationswort durch die Erzeugungsmatrix. Die Bequemlichkeitszahlung ist sehr teuer und zeitaufwĂ€ndig, aber alles funktioniert automatisch und vor allem ist die Nachricht vor Fehlern geschĂŒtzt.

Die Erzeugungsmatrix des (7, 4) Hamming-Codes oder des Codewortgenerators wird erhalten, indem die Basisvektoren des Codes ausgeschrieben und zu einer Matrix kombiniert werden. Dies folgt aus dem Satz der linearen Algebra: Jeder Vektor eines Raums (Unterraums) ist eine lineare Kombination von Basisvektoren, d.h. linear unabhÀngig in diesem Raum. Dies ist genau das, was erforderlich ist - um Vektoren (7-Bit-Codewörter) aus 4-Bit-Informationsvektoren zu erzeugen.



Die Erzeugungsmatrix des (7, 4, 3) Hamming-Codes oder des Codewortgenerators hat die Form:





Rechts sind die Dezimaldarstellungen der Codewörter der Basis des Unterraums und ihre Seriennummern in der Tabelle K

Nr. I Zeilen der Matrix sind die Wörter des Codes, die die Basis des Vektorunterraums bilden.



Ein Beispiel zum Codieren der Wörter von Informationsnachrichten (die Erzeugungsmatrix des Codes wird aus den Basisvektoren aufgebaut und entspricht dem Teil der Tabelle K). In der ASCII-Codetabelle nehmen wir den Buchstaben q = <1111 0110>.



Informationswörter der Nachricht sehen aus wie:



ichk1= <1111>,ichk2= <0110>...



Dies ist die HĂ€lfte des Zeichens (c). FĂŒr den zuvor definierten (7, 4) -Code ist es erforderlich, die Codewörter zu finden, die dem Informationsnachrichtenwort (c) mit 8 Zeichen in der folgenden Form entsprechen:



ichk1= <1111>,ichk2= <0110>...



Um diese Buchstabennachricht (q) in Codewörter u umzuwandeln, wird jede HĂ€lfte der Buchstabennachricht i mit der Erzeugungsmatrix G [k, n] des Codes multipliziert (Matrix fĂŒr Tabelle K):







Wir haben zwei Codewörter mit den Seriennummern 15 und 6.



Zeigen detaillierte Bildung des unteren Ergebnisses Nr. 6 - ein Codewort (Multiplikation einer Zeile eines Informationsworts mit den Spalten einer Erzeugungsmatrix); Summation ĂŒber (mod2)



<0110> ∙ <1000> = 0 ∙ 1 + 1 ∙ 0 + 1 ∙ 0 + 0 ∙ 0 = 0 (mod2);

<0110> 01 <0100> = 0 ∙ 0 + 1 ∙ 1 + 1 ∙ 0 + 0 ∙ 0 = 1 (mod2);

<0110> 00 <0010> = 0 ∙ 0 + 1 ∙ 0 + 1 ∙ 1 + 0 ∙ 0 = 1 (mod2);

<0110> ∙ <0001> = 0 ∙ 0 + 1 ∙ 0 + 1 ∙ 0 + 0 ∙ 1 = 0 (mod2);

<0110> ∙ <0111> = 0 ∙ 0 + 1 ∙ 1 + 1 ∙ 1 + 0 ∙ 1 = 0 (mod2);

<0110> 10 <1011>= 0 ≀ 1 + 1 ≀ 0 + 1 ≀ 1 + 0 ≀ 1 = 1 (mod2);

<0110> ∙ <1101> = 0 ∙ 1 + 1 ∙ 1 + 1 ∙ 0 + 0 ∙ 1 = 1 (mod2).



Als Ergebnis der Multiplikation erhalten das fĂŒnfzehnte und sechste Wort aus Tabelle K. Die ersten vier Bits in diesen Codewörtern (Multiplikationsergebnisse) reprĂ€sentieren Informationswörter. Sie sehen aus wie:ichk1= <1111>,ichk2= <0110>, (in der ASCII-Tabelle ist es nur die HĂ€lfte des Buchstabens t). FĂŒr die Codierungsmatrix wird eine Reihe von Wörtern mit den Zahlen 1, 2, 4, 8 als Basisvektoren in Tabelle K ausgewĂ€hlt. In der Tabelle werden sie durch FĂŒllen hervorgehoben. Dann erhĂ€lt die Codierungsmatrix fĂŒr diese Tabelle K die Form G [k, n].



Als Ergebnis der Multiplikation wurden 15 und 6 Wörter der K-Codetabelle erhalten.



Code-Anwendung. Decoder



Der Decoder befindet sich auf der Empfangsseite des Kanals, auf dem sich der EmpfĂ€nger der Nachricht befindet. Der Zweck des Decoders besteht darin, dem EmpfĂ€nger die ĂŒbertragene Nachricht in der Form bereitzustellen, in der sie zum Zeitpunkt des Sendens beim Absender vorhanden war, d. H. Der EmpfĂ€nger kann den Text verwenden und die Informationen daraus fĂŒr seine weitere Arbeit verwenden.



Die Hauptaufgabe des Decoders besteht darin, zu prĂŒfen, ob das empfangene Wort (7 Bit) dasjenige ist, das auf der Sendeseite gesendet wurde, ob das Wort Fehler enthĂ€lt. Um dieses Problem zu lösen, wird fĂŒr jedes vom Decodierer empfangene Wort durch Multiplizieren mit der PrĂŒfmatrix H [nk, n] ein kurzes Vektorsyndrom S (3 Bits) berechnet.



FĂŒr Wörter, die Code sind, dh keine Fehler enthalten, nimmt das Syndrom immer einen Nullwert S = <000> an. FĂŒr ein Wort mit einem Fehler ist das Syndrom nicht Null S ≠ 0. Der Wert des Syndroms ermöglicht es, die Position des Fehlers bis zu einem Bit in dem auf der Empfangsseite empfangenen Wort zu erfassen und zu lokalisieren, und der Decodierer kann den Wert dieses Bits Ă€ndern. In der PrĂŒfmatrix des Codes findet der Decoder eine Spalte, die dem Wert des Syndroms entspricht, und die Ordnungszahl dieser Spalte entspricht dem durch den Fehler verzerrten Bit. Danach Ă€ndert der Decoder fĂŒr BinĂ€rcodes dieses Bit - ersetzen Sie es einfach durch den entgegengesetzten Wert, dh eins wird durch Null ersetzt und Null wird durch Eins ersetzt.



Der betreffende Code ist systematischDas heißt, die Symbole des Informationsworts werden in einer Reihe in den höchstwertigen Bits des Codeworts platziert. Die Wiederherstellung von Informationswörtern erfolgt durch einfaches Verwerfen der niedrigstwertigen (PrĂŒf-) Bits, deren Anzahl bekannt ist. Als nĂ€chstes wird eine Tabelle mit ASCII-Codes in umgekehrter Reihenfolge verwendet: Die Eingabe sind InformationsbinĂ€rsequenzen und die Ausgabe sind die Buchstaben des Alphabets in natĂŒrlicher Sprache. Der (7, 4) -Code ist also systematisch, gruppenweise , linear, blockweise, binĂ€r .



Die Basis des Decoders bildet die PrĂŒfmatrix H [nk, n], die die Anzahl der Zeilen gleich der Anzahl der PrĂŒfsymbole und alle möglichen Spalten mit Ausnahme von Null Spalten mit drei Zeichen enthĂ€lt23- -1=7... Die ParitĂ€tsprĂŒfmatrix ist aus den Wörtern der Tabelle K aufgebaut, sie sind so gewĂ€hlt, dass sie orthogonal zur Codierungsmatrix sind, d.h. ihr Produkt ist die Nullmatrix. Die PrĂŒfmatrix hat bei Multiplikationsoperationen die folgende Form, sie wird transponiert. FĂŒr ein spezifisches Beispiel ist die PrĂŒfmatrix H [nk, n] unten angegeben:











Wir sehen, dass das Produkt aus der Erzeugungsmatrix und der PrĂŒfmatrix eine Nullmatrix ergibt.



Beispiel 2. Dekodieren eines Wortes des Hamming-Codes ohne Fehler (e <7> = <0000000>).

Am Empfangsende des Kanals seien die Wörter # 7 → 60 und # 13 → 105 aus Tabelle K empfangen,

u <7> + e <7> = <0 1 1 1 1 0 0> + <0 0 0 0 0 0>,

Wenn kein Fehler vorliegt, hat er die Form e <7> = <0 0 0 0 0 0 0>.





Infolgedessen hat das berechnete Syndrom einen Nullwert, der das Fehlen eines Fehlers in den Wörtern des Codes bestÀtigt.



Beispiel 3 . Erkennung eines Fehlers in einem am Empfangsende des Kanals empfangenen Wort (Tabelle K).



A) Angenommen, es ist erforderlich, das 7. Codewort zu ĂŒbertragen, d.h.



u <7> = <0 1 1 1 1 0 0> und in einem dritten Bit von links wurde ein Fehler gemacht. Dann wird mod2 mit dem 7. Codewort summiert, das ĂŒber den Kommunikationskanal

u <7> + <7> = <0 1 1 1 1 0 0> + <0 0 1 0 0 0> = <0 1 0 1 ĂŒbertragen wird 1 0 0>,

wobei der Fehler die Form e <7> = <0 0 1 0 0 0 0> hat.



Das Feststellen der Tatsache der Verzerrung des Codeworts erfolgt durch Multiplizieren des empfangenen verzerrten Wortes mit der PrĂŒfmatrix des Codes. Das Ergebnis dieser Multiplikation ist ein Vektorgenannt Codewort-Syndrom.



Lassen Sie uns eine solche Multiplikation fĂŒr unsere ursprĂŒnglichen Daten (7. Vektor mit einem Fehler) durchfĂŒhren.





Als Ergebnis einer solchen Multiplikation am Empfangsende des Kanals erhielten wir ein Vektorsyndrom Snk, dessen Dimension (n - k) ist. Wenn das Syndrom S3 = <0,0,0> Null ist, wird geschlossen, dass das auf der Empfangsseite empfangene Wort zum C-Code gehört und ohne Verzerrung ĂŒbertragen wird. Wenn das Syndrom nicht gleich Null ist, zeigt sein Wert das Vorhandensein eines Fehlers und seinen Platz im Wort an. Das verzerrte Bit entspricht der Nummer der Spaltenposition der Matrix [nk, n], die mit dem Syndrom ĂŒbereinstimmt. Danach wird das verzerrte Bit korrigiert und das empfangene Wort vom Decodierer weiter verarbeitet. In der Praxis wird fĂŒr jedes akzeptierte Wort sofort ein Syndrom berechnet, und wenn ein Fehler vorliegt, wird er automatisch beseitigt.



WĂ€hrend der Berechnungen ist das Syndrom S = <110> fĂŒr beide Wörter gleich. Wir schauen uns die Check-Matrix an und finden darin die Spalte, die zum Syndrom passt. Dies ist die dritte Spalte von links. Daher wurde der Fehler in der dritten Ziffer von links gemacht, was mit den Bedingungen des Beispiels ĂŒbereinstimmt. Dieses dritte Bit wird auf den entgegengesetzten Wert geĂ€ndert, und wir haben die vom Decoder empfangenen Wörter an die Codeform zurĂŒckgegeben. Der Fehler wurde gefunden und behoben.



Das ist alles, so funktioniert und funktioniert der klassische (7, 4) Hamming-Code.



Zahlreiche Modifikationen und Upgrades dieses Codes werden hier nicht berĂŒcksichtigt, da nicht sie wichtig sind, sondern die Ideen und ihre Implementierungen, die die Codierungstheorie radikal verĂ€ndert haben, und infolgedessen Kommunikationssysteme, Informationsaustausch und automatisierte Steuerungssysteme.



Fazit



Das Papier betrachtet die wichtigsten Bestimmungen und Aufgaben der Informationssicherheit und nennt Theorien zur Lösung dieser Probleme.



Die Aufgabe, die Informationsinteraktion von Subjekten und Objekten vor Umweltfehlern und vor den Handlungen des Eindringlings zu schĂŒtzen, gehört zur Kodologie.



Der (7, 4) Hamming-Code, der eine neue Richtung in der Codierungstheorie einleitete - die Synthese von Korrekturcodes - wird im Detail betrachtet.



Die Anwendung strenger mathematischer Methoden bei der Codesynthese wird gezeigt.

Beispiele sollen die Effizienz des Codes veranschaulichen.



Literatur



Peterson W., Weldon E. Fehlerkorrekturcodes: Trans. aus dem Englischen. M.: Mir, 1976, 594 p.

Bleihut R. Theorie und Praxis von Fehlerkontrollcodes. Übersetzt aus dem Englischen. M.: Mir, 1986, 576 p.



All Articles