Substitution Ciphers
Polygraphic substitution
Bei der polygraphischen substitutions Chiffrierung werden
nicht einzelne Zeichen ersetzt sondern es werden mehrere
Zeichen zu Blöcken zusammengefasst und dann durch andere
Blöcke ersetzt.
Beispiel: "NCD" -> "KLF", "JTZ" -> "KFP", usw.
Es handelt sich also wieder um eine Substitution, bei der
allerdings die Häufigkeit von einzelnen Zeichen besser
verschleiert wird als bei monoalphabetischen Chiffrierungen.
Dafür treten Bi- oder Trigramme mehr in den Vordergrund,
die allerdings eine etwas bessere Zeichen-Entropie besitzen
als Monogramme.
Playfair cipher
1854 wurde der sog. "Playfair" Algorithmus von Sir Charles
Wheatstone erfunden und von Lyon Playfair public gemacht.
Er wurde dann von den Briten im ersten Weltkrieg benutzt
um kriegsrelevante Texte zu verschlüsseln.
Jeder Block besteht aus zwei Zeichen. Zuerst muss ein Schüssel
erzeugt werden. Dazu wird ein Schlüsselwort in eine 5x5 Matrix
geschrieben. Zeichen die doppelt vorkommen werden gelöscht und
die Matrix wird mit dem restlichen Alphabet gefüllt:
z.B. k = "HALLO PLAYFAIR CIPHER"
| H |
A |
L |
L |
O |
| |
P |
L |
A |
Y |
| F |
A |
I |
R |
|
| C |
I |
P |
H |
E |
| R |
|
|
|
|
|
wird zu:
|
| H |
A |
L |
O |
P |
| Y |
F |
I/J |
R |
C |
| E |
B |
D |
G |
K |
| M |
N |
Q |
S |
T |
| U |
V |
W |
X |
Z |
|
Das Alphabet hat 26 Buchstaben, eine 5x5 Matrix jedoch nur 25,
daher teilen sich I und J ein Feld, was natürlich den
Algorithmus etwas schwächt, allerdings ist dies
vernachlässigbar.
Es wird nun nach folgendem Schema-Chiffriert:
Zuerst werden Paare aus dem Plaintext gebildet:
HALLO WELT DAS IST SCHÖN!
HA LL OW EL TD AS IS TS CH ON
und dann werden die Paare wie folgt codiert:
1. Beide Zeichen liegen in einer Zeile:
| H |
A |
L |
O |
P |
| Y |
F |
I/J |
R |
C |
| E |
B |
D |
G |
K |
| M |
N |
Q |
S |
T |
| U |
V |
W |
X |
Z |
Es werden jeweils die beiden Zeichen
rechts davon als Chiffre notiert.
EB -> GK
2. Beide Zeichen liegen in einer Spalte:
| H |
A |
L |
O |
P |
| Y |
F |
I/J |
R |
C |
| E |
B |
D |
G |
K |
| M |
N |
Q |
S |
T |
| U |
V |
W |
X |
Z |
Es werden jeweils die beiden Zeichen darunter davon als Chiffre notiert.
Falls der Rand der Matrix erreicht wird,
wird einfach am anderen Ende wieder
angefangen.
FV -> BA
3. Das Paar liegt weder in einer Spalte noch in einer Zeile:
| H |
A |
L |
O |
P |
| Y |
F |
I/J |
R |
C |
| E |
B |
D |
G |
K |
| M |
N |
Q |
S |
T |
| U |
V |
W |
X |
Z |
Erstes Zeichen des Chiffre befindet sich
in der Zeile des ursprünglichen
Zeichens. (F->R).
Zweites Zeichen des Chiffre befindet sich
in der Spalte des ursprünglichen
Zeichens. (S->N).
Also:
x = HA LL OW EL TD AS IS TS CH ON
e(x) = AL OO LX DH QK ON RQ MT YP AS
Für die Entschlüsselung müssen die Punkte 1-3 rückwärst durchlaufen
werden.
Implementation:
Quellcode in C (von PC Leyland)
Copyright (c) 1994 by PC Leyland, pcl@ox.ac.uk
|