Lineare Codes

Werbung
Lineare Codes
Dipl.-Inform. Wolfgang Globke
Institut für Algebra und Geometrie
Arbeitsgruppe Differentialgeometrie
Universität Karlsruhe
1 / 19
Codes
Ein Code ist eine eindeutige Zuordnung von Zeichen aus einem
gegebenen Zeichenvorrat zu einem Codewort aus einem anderen
Zeichenvorrat.
Matrikelnummern codieren Studenten.
ASCII-Zeichen codieren das lateinische Alphabet (und etliche
weitere Zeichen).
Bitfolgen codieren im Rechner natürliche Zahlen und mit
etwas Geschick auch einige rationale Zahlen.
2 / 19
Achtung
Code 6= Chiffre
3 / 19
Binäre Codes
Wir konzentrieren uns nun auf die Codierung durch endliche
Bitfolgen fester Länge k:
0, 1, 0, 1, 0, 0, 1, 0
{z
}
|
k
In diesem Fall sprechen wir von einem binären Code.
4 / 19
Binäre Arithmetik
Die Bits gehorchen bestimmten Regeln:
AND
0
1
0 1
0 0
0 1
Was hat das mit dem Körper
•
0
1
XOR
0
1
0 1
0 1
1 0
F2 = Z/2Z zu tun?
0 1
0 0
0 1
+
0
1
0 1
0 1
1 0
5 / 19
Binäre Codes
Und wenn wir gerade dabei sind. . .
0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0
010101110110110
c = (0 1 0 1 0 1 1 1 0 1 1 0 1 1 0) ∈ Fn2
Wir können eine Bitfolge c der Länge n als Vektor im Vektorraum
Fn2 auffassen.
6 / 19
Lineare Codes
Ein linearer Code C ist ein Untervektorraum von
C enthält 2k Codeworte für dim C = k ≤ n.
Fn2 .
7 / 19
Nachrichtenübertragung
Rauschen
e
Nachricht
x
Codierer
c
Kanal
v
decodierte
Nachricht
Decodierer
8 / 19
Effizienz vs. Fehlerkorrektur
Bei der Konstruktion von Codes hat man zwei Ziele im Auge:
1
Effizienz der Darstellung.
2
Möglichkeiten zur Fehlerkorrektur.
Dies sind zwei gegensätzliche Ziele:
Korrekturfähigkeit wird verbessert, wenn man zusätzliche Bits
zur Darstellung hinzufügt (also die Redundanz erhöht).
Dadurch wird die Darstellung weniger effizient.
9 / 19
Fehlerkorrektur
Wir betrachten die Fehlerkorrektur.
Hinzufügen redundanter Bits geschieht durch Einbetten des
Codes C der Dimension k in Fn2 mit n > k.
Der Hamming-Abstand zweier Codeworte
c = (c1 . . . cn ), c0 = (c10 . . . cn0 ) ist die Anzahl der Stellen,
an denen sich die beiden unterscheiden:
dist(c, c0 ) = #{j | cj 6= cj0 }.
Die Minimaldistanz d ist der minimale Abstand zwischen zwei
Codeworten aus C ,
d = min{dist(c, c0 ) | c, c0 ∈ C }.
Sie ist entscheidend für die Fehlerkorrekturfähigkeit des Codes.
10 / 19
Fehlerkorrektur
Die Minimaldistanz d bestimmt,
wieviele Fehler erkannt bzw. korrigiert werden können.
ccc
c!!
!
ddd− 1
d−1
"
d2
!
!
dd − 1
2
"
d−1
d2
cc
dcc c! ) = 5
dist(c,
"
◦ vc
"∈ C
cc
c!
Es können bis zu d − 1 Fehler erkannt
oder b d−1
2 c Fehler korrigiert werden
(hängt vom Übertragungskanal ab).
11 / 19
Lineare Codes vs. beliebige Codes
Nutze die Vektorraumstruktur des linearen Codes:
Fn2 .
Ein linearer Code C ist ein Untervektorraum von Fn2 .
Ein beliebiger Code B ist eine Teilmenge von
Ein beliebiger Code B hat keine Struktur, es müssen alle
Codeworte separat gespeichert werden.
linearer Speicheraufwand.
Ist C ein k-dimensionaler Unterraum, so reichen
k Basisvektoren, um alle 2k Codeworte darzustellen.
logarithmischer Speicheraufwand.
12 / 19
Codierungsabbildung
Nutze die Vektorraumstruktur des linearen Codes:
Wir haben 2k Informationsworte x ∈ Fk2 ,
die wir durch Bitfolgen c der Länge n > k codieren wollen.
Codierung erfolgt durch die lineare Codierungsabbildung
Γ : Fk2 → Fn2 ,
x 7→ c = x · G .
Sie ist durch die Erzeugermatrix G definiert,
deren Zeilen eine Basis unseres Codes C sind.
Es ist also
C = Bild Γ ( Fn2 .
13 / 19
Fehlererkennung
Nutze die Vektorraumstruktur des linearen Codes:
Problem: Sender schickt ein Codewort c ∈ Fn2 über den Kanal,
Empfänger erhält v ∈ Fn2 .
Ein Fehler liegt vor, wenn v 6= c gilt.
Wie kann man Fehler erkennen?
Prüfe, ob v ein Codewort aus C ist:
Löse das LGS
v =x·G
nach x ∈ Fk2 .
14 / 19
Fehlererkennung
Der Code C ist als Untervektorraum die Lösungsmenge eines
homogenen LGS.
Es gibt also eine Prüfmatrix H mit
G · H > = O.
Mit H kann man ein empfangenes v auf Fehler prüfen:
v∈C
⇔
v · H > = 0.
15 / 19
Fehlerkorrektur
Das Fehlersyndrom s von v ist
s = v · H > ∈ Fn−k
.
2
Es hängt nur von einem additiven Fehler e ab, nicht von c:
v =c+e
⇒
v · H > = c| ·{z
H >} +e · H > = e · H > = s.
=0
Aus v kann man also das ursprüngliche Codewort c
rekonstruieren, wenn man eine Lösung e des LGS
e · H> = s
findet.
Zur Fehlerkorrektur finde Vektor e mit möglichst kleinem
Hamming-Gewicht. Dieses Problem ist NP-schwer.
16 / 19
Weitere Eigenschaften und Problemstellungen
Systematische Codierung: Durch geeigneten Basiswechsel S
die Erzeugermatrix G auf eine einfachere Form S · G bringen.
Zyklische Codes: Periodische Struktur der Erzeugermatrix
liefert Abschätzungen für Minimaldistanz d.
Bestimmung der Minimaldistanz d bei gegebener
Erzeugermatrix G .
Bestimmung der maximalen Anzahl der Codeworte bei
gegebener Minimaldistanz.
Aufzählen aller Codeworte.
17 / 19
Codierungstheorie in Karlsruhe
IKS (vormals IAKS Beth)
Institut für Kryptographie und Sicherheit
(Leitung Dr. Jörn Müller-Quade)
Vorlesung: Signale, Codes und Chiffren I - II
Vorlesung: Grundlagen der Computersicherheit
Vorlesung: Public Key Kryptographie
Vorlesung: Embedded Security
diverse Praktika zur Computersicherheit
18 / 19
G. Goos
Vorlesungen über Informatik, Band 1 (Springer)
M. Grassl, W. Globke
Algorithmen für Gruppen und Codes
K. Jacobs, D. Jungnickel
Einführung in die Kombinatorik (de Gruyter)
F.J. MacWilliams, N.J.A. Sloane
The Theory of Error-Correcting Codes (North-Holland)
19 / 19
Herunterladen