***

Verschlüsselungsalgorithmen

Eine leicht verständliche Einführung in die Kryptographie
mit einem einfachen mathematischen Algorithmus
und einem Programmbeispiel

Verfasser: Otto Praxl

Inhalt

Einleitung
Hauptprinzipien der Verschlüsselung
Symmetrische und asymmetrische Verfahren
Verschlüsselung von Dateien
Kryptologie
Einfache Algorithmen

Mathematischer Algorithmus
Algorithmus ohne Kennwort
Algorithmus mit Kennwort
Symmetrische Verschlüsselung

Praktische Programmierung
Programm WINCRPT.EXE (Download)
Verschlüsselungs-Gleichung von WINCRPT.EXE
Erläuterung zum Programm

Sicherheit und Grenzen des beschriebenen Verfahrens

Schlusswort

Literatur- und Quellenhinweis
Internetadresse


Einleitung

Seit die Menschen die Schrift erfunden haben, verwenden sie auch Geheimcodes, um eine Nachricht zu verschlüsseln, die nicht jeder lesen soll. Waren ursprünglich die Schriftzeichen selbst das Geheimnisvolle für Menschen, die nicht lesen und schreiben konnten, so hat sich mit wachsender Kenntnis der Schriften die Verschlüsselung (Chiffrierung) durchgesetzt.

Gaius Julius Caesar soll ein Chiffriersystem verwendet haben, bei dem jeder Buchstabe der ursprünglichen Nachricht um 3 Stellen im Alphabet nach hinten verschoben wurde. Aus einem A wurde ein D, aus einem B ein E usw. Die folgende Tabelle zeigt den verwendeten Schlüssel (das Alphabet der klassischen lateinischen Sprache hatte damals 21 Buchstaben):

A B C D E F G H I K L M N O P Q R S T V X
D E F G H I K L M N O P Q R S T V X A B C

Die Buchstaben des Klartextes stehen in der oberen Reihe, die Buchstaben des Geheimtextes in der unteren Reihe. Beim Verschlüsseln verwendete man die Tabelle von oben nach unten, während man beim Entschlüsseln die Buchstaben der unteren Reihe durch die Buchstaben der oberen Reihe ersetzen musste.

Beispiel:

Klartext: VENI VIDI VICI
Geheimtext: BHQM BMGM BMFM

Kaiser Augustus verwendete eine ähnliche Methode, bei der die Geheimschrift nur um einen Buchstaben im Alphabet versetzt war. Aus einen A wurde ein B, aus einem B ein C, usw.

Die Griechen (Sparta) verwendeten einen Chiffrierstab (Skytale), um den ein schmaler Papyrusstreifen spiralförmig gewickelt wurde. Der Klartext wurde in nebeneinanderstehenden senkrechten Reihen der Länge nach auf den Stab geschrieben, wobei die Höhe des Buchstabens die Breite des Streifens ausfüllte. Nach Abwickeln des Streifens ergab der Text längs des Streifens für Uneingeweihte keinen Sinn. Der Empfänger hatte einen identischen Stab. Er wickelte den Streifen (in der gleichen Weise wie vorher der Absender) auf den Stab und konnte die Nachricht aus den senkrechten Reihen lesen.

Hauptprinzipien der Verschlüsselung

Aus den oben gezeigten antiken Verschlüsselungsmethoden lassen sich die beiden Hauptprinzipien der Verschlüsselung erkennen:

  1. Ersetzung oder Verschiebung (Substitution)
  2. Verwürfelung oder Versetzung (Transposition)

Bei der Substitution wird ein Buchstabe um eine bestimmte Anzahl Positionen im Alphabet verschoben oder durch fest zugeordnete Zeichen aus einer Chiffriertabelle ersetzt, während bei der Transposition die Buchstaben des Klartextes so durcheinandergebracht werden, dass durch die veränderte Reihenfolge eine Geheimbotschaft entsteht.

Beispiel für Transposition:

In den verschlüsselten Botschaften in Spalte 2 der gezeigten Tabelle müssen die Buchstaben abwechselnd von vorne und von hinten gelesen werden. Man nimmt die Buchstaben sozusagen von rechts und von links abwechselnd weg und baut daraus einen neuen Satz. Die zweite Botschaft enthält auch Leerzeichen und verwendet sie mit.

Klartext Verschlüsselte Botschaft
MORGENISTSONNTAG MREITONAGTNSSNGO
MORGEN IST SONNTAG MRE S ONAGTNSTINGO

Symmetrische und asymmetrische Verfahren

Die Vorgänge des Verschlüsselns und des Entschlüsselns sind bei den gezeigten antiken Verfahren entgegengesetzt, das heißt, man muss beim Entschlüsseln aus der Geheimbotschaft durch den umgekehrten Vorgang den Klartext wieder herstellen. Es sind asymmetrische Verfahren, weil die Vorgänge des Verschlüsselns und des Entschlüsselns verschiedene Arbeitsweisen erfordern.

Sind beide Vorgänge identisch, so spricht man von symmetrischen Verfahren.

Beispiel eines symmetrischen Verfahrens:

Gegeben ist ein Alphabet mit 26 Buchstaben.
Verschlüsselung durch Verschiebung im Alphabet um 13 Buchstaben, nach dem letzten Buchstaben wird wieder vom Anfang an weitergezählt. Hier wird dies durch zweimaliges Hinschreiben des Alphabets dargestellt:

ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ

Aus einem K wird durch den Verschiebevorgang ein X.

Wendet man die Verschiebung um 13 Buchstaben erneut an, diesmal auf die Geheimbotschaft, erhält man wieder den Klartext. Aus einem X wird wieder ein K.

Kryptologie

Die Kryptologie, die Wissenschaft von der Verschlüsselung, besteht aus zwei getrennten Zweigen, der Kryptographie und der Kryptanalyse. Die moderne Kryptographie ist ein Teilgebiet der Informatik und beschäftigt sich mit der Entwicklung von Verschlüsselungsverfahren, die möglichst sicher sein sollen. Ein Schlüssel (Chiffre, Geheimcode) ist ein System von Regeln, mit deren Hilfe man einen Klartext in eine chiffrierte Botschaft oder ein Kryptogramm verwandelt

Die Kryptanalyse dagegen versucht, Verfahren zum Knacken von Geheimcodes und Verschlüsselungen zu entwickeln. Ein Verschlüsselungsverfahren ist dann sicher, wenn es der Kryptanalyse nicht gelingt, den Geheimcode zu entschlüsseln.

Verschlüsselung von Dateien

Begriffe:
Daten sind in den Dateien binär abgespeichert. Ein Binärsystem kennt nur zwei eindeutig voneinander unterscheidbare (logische) Zustände: ja/nein, 1/0, wahr/falsch, Strom vorhanden/nicht vorhanden. Jeder Binärspeicher enthält Speicherelemente, die zwei eindeutig voneinander unterscheidbare Zustände annehmen können. Ein Speicherelement kann jeweils nur einen der beiden logischen Zustände haben, man sagt, es kann ein Bit (binary digit) speichern. 8 Speicherelemente werden zu einem Byte zusammengefasst. Den Inhalt eines Bytes nennt man Bitmuster. Nimmt man für die Zustände die Ziffern 1 oder 0 (Binärziffern), so erhält man Binärzahlen, die man mathematisch wie Dualzahlen (siehe Buch Nr. 7) verwenden kann.

Einfache Algorithmen

Wendet man die oben beschriebenen antiken Verfahren zur Dateiverschlüsselung an, so erhält man Verschlüsselungen, die durch Probieren leicht zu knacken sind. Es sind monoalphabetische Chiffren. Bei diesen Verfahren wird immer ein Buchstabe einem anderen Buchstaben oder einem Zeichen fest zugeordnet. Aus dieser festen Zuordnung lassen sich mit der Zählung der Häufigkeit der vorkommenden Zeichen im Kryptogramm Rückschlüsse auf die Häufigkeit der Buchstaben im Klartext ziehen. Die Häufigkeiten der Buchstaben in den einzelnen Sprachen sind bekannt. In der folgenden Tabelle ist die Reihenfolge der statistischen Häufigkeit der Buchstaben in deutschen Texten, absteigend von links nach rechts nach Häufigkeit geordnet:

E N R I S T U D A H G L O C M B Z F W K V P J Q X Y

Der häufigste Buchstabe ist E (18 %), der Anteil der Vokale beträgt 40 %. Außerdem sind die häufigsten Kombinationen aus zwei und drei Buchstaben ebenfalls statistisch genau bekannt.

Mit diesen Angaben lässt sich der Geheimcode und das Verschlüsselungsverfahren knacken, wenn es sich um verschlüsselte Texte handelt. Edgar Allen Poe hat in seiner Erzählung "The Gold Bug" ("Der Goldkäfer") ein ausführliches Beispiel geliefert, wie man so eine Dechiffrierung durchführt, ohne den Schlüssel zu kennen.

Handelt es sich nicht um Texte, sondern um Binärdateien, die mit solchen einfachen Verfahren verschlüsselt wurden, so ist die Entschlüsselung schon schwieriger, weil man zuerst wissen müsste, ob es sich um binären Programmcode oder für Menschen lesbare Daten oder Texte handelt. Die statistischen Häufigkeiten der einzelnen Bitmuster innerhalb von Binärdateien sind nicht bekannt. Trotzdem ist es mit Hilfe des Computers nicht schwierig, auch solche Verschlüsselungen zu knacken. Eine gute Übung für Programmieranfänger wäre es, ein Programm zu erstellen, das die Bytes der Dateien liest und eine Statistik über die Zeichenhäufigkeit liefert.

Mathematischer Algorithmus

Vorbemerkung: Im nachfolgenden Text wird ein einfacher mathematischer Algorithmus vorgestellt. Die kommerziellen Verschlüsselungsverfahren, die mit privaten und öffentlichen Schlüsseln arbeiten, werden hier nicht behandelt, weil die mathematischen Theorien in der entsprechenden Literatur, in Fachzeitschriften und im Internet zur Genüge besprochen wurden.

Voraussetzungen und Ziele:

Wir gehen von einer beliebigen zu verschlüsselnden Datei aus, die eine bestimmte Anzahl Bytes enthält, die alle verschlüsselt werden sollen. Es soll kein unverschlüsselter Header gebildet werden. Die Bitmuster dieser Bytes können die Binärzahlen von 0 bis 255 annehmen. Außerdem wollen wir ein symmetrisches Verfahren entwickeln, mit dem wir verschlüsseln und anschließend wieder entschlüsseln können. Das Verfahren soll jedes Byte innerhalb einer Datei anders verschlüsseln und zwar so, dass keine feste Zuordnung erfolgt, das heißt, dass die Verschlüsselung vom Inhalt der Datei und von den Bitmustern völlig unabhängig ist. Die Längen der Originaldatei und der daraus resultierenden verschlüsselten Datei sind dann identisch, weil jedes Byte nur einen anderen Wert bekommt. Eine Datei mit lauter gleichen Bytes soll nach der Verschlüsselung verschiedene Bytes enthalten.

Algorithmus ohne Kennwort

Der Algorithmus muss eine Variable enthalten, die vom Inhalt der Datei unabhängig ist. Damit ist sie auch unabhängig davon, ob das Byte schon verschlüsselt ist oder nicht. Als Variable bietet sich die Byteposition x innerhalb der Datei an. Mit dieser Variablen x wird ein Schlüsselbyte (Binärzahl) berechnet, mit dem das Originalbyte an der Stelle x verschlüsselt wird. Bei der Entschlüsselung ergibt sich aufgrund der Byteposition x dasselbe Schlüsselbyte, aus dem über das verschlüsselte Byte wieder das Originalbyte hergestellt wird.

In der Festlegung der mathematischen Gleichung für das Schlüsselbyte v sind wir frei. Wir wählen eine Gleichung mindestens zweiten Grades, wobei die Koeffizienten a, b und c passend gewählt werden müssen. Der Wert v des Schlüsselbytes gilt für die Verschlüsselung an der Stelle x:

krypto1.gif: Formel für
          Algorithmus ohne Paßwort

Datentechnisch wird diese Gleichung für jedes Byte in der Datei ausgewertet. Jeder der drei Terme dieser Gleichung wird auf 8 Bit maskiert, das heißt, er wird auf den Wertebereich 0 bis 255 begrenzt. Die Summe aus den drei Termen wird ebenfalls auf 8 Bit maskiert. Diese Maskierung erfolgt über die Modulo-Funktion oder die AND-Funktion mit dem Wert 255 (Bitmuster = 11111111). Damit schließt man einen Zahlenüberlauf (Integer-Overflow) aus. Als Ergebnis steht nun ein Schlüsselbyte für den Verschlüsselungsvorgang zur Verfügung.

Algorithmus mit Kennwort

Das Kennwort hat m Zeichen. Daraus ergibt sich das Schlüsselbyte nach folgender Formel:

krypto2.gif: Formel für
          Algorithmus mit Paßwort

Der Klammerausdruck in der Formel ist bereits auf 8 Bit maskiert und wird mit dem Bytewert p(i) des Zeichens an der Kennwortposition i multipliziert. Das Ergebnis wird wieder auf 8 Bit maskiert.

Symmetrische Verschlüsselung:

Aus dem Schlüsselbyte und dem an dieser Byteposition der Datei stehenden Byte wird über eine XOR-Funktion ein Ergebnisbyte gebildet, das in die Ergebnisdatei geschrieben wird.

Zur Erinnerung:

Die XOR-Funktion bildet für jede Stelle des Bitmusters aus zwei unterschiedlichen Bitwerten einen 1-Wert und aus zwei gleichen Bitwerten einen 0-Wert.

Beispiel:

Originalbyte: 11100101
Schlüsselbyte: 10101100

Originalbyte 1 1 1 0 0 1 0 1 XOR-Funktion
Schlüsselbyte 1 0 1 0 1 1 0 0
Verschlüsseltes Byte 0 1 0 0 1 0 0 1 Ergebnisbyte

Bei der Entschlüsselung ergibt sich aus der Byteposition innerhalb der Datei wieder dasselbe Schlüsselbyte, woraus mit dem verschlüsselten Byte über die XOR-Funktion wieder das Originalbyte ermittelt wird:

Verschlüsseltes Byte 0 1 0 0 1 0 0 1 XOR-Funktion
Schlüsselbyte 1 0 1 0 1 1 0 0
Originalbyte (zurückgewonnen) 1 1 1 0 0 1 0 1 Ergebnisbyte

Praktische Programmierung

Programm WINCRPT.EXE

Der Verfasser stellt sein nach diesem Algorithmus programmiertes Verschlüsselungsprogramm WINCRPT.EXE für Windows zum Herunterladen im Archiv wincrpt.zip (873 kB) zur Verfügung. Entpacken Sie dieses Archiv in einem beliebigen Verzeichnis (z:B. wincrpt). Starten Sie den Setup, das Programm wird installiert. Wenn die Runtime-Dateien von Visual Basic 4 bereits auf dem Rechner sind, genügt es, nur "wincrpt.exe" und Readme.txt" aus dem Archiv zu extrahieren.

Das Programm ist für 32-Bit-Systeme geschrieben. Bei neueren 64-Bit-Betriebssystemen oder Rechnern verwendet man am besten den Modus "Als Administrator ausführen" oder den Kompatibilitätsmodus für 32-Bit-Systeme.

Der Bedienungshinweis ist im Programm enthalten (siehe folgendes Bild).

Nachstehend wird der für die Ver- und Entschlüsselung maßgebende Teil des Programms in FORTRAN77-Syntax wiedergegeben. Dieser Quelltext enthält zur einfacheren Darstellung der Verschlüsselungsschleife ein GOTO 100, damit die Syntax für den Leser übersichtlicher wird. Der Quellcode für Visual Basic ist sinngemäß und enthält selbstverständlich eine optimierte Schleifenstruktur.

Hinweis zum Programmablauf:
Das Programm ist ein Testprogramm und arbeitet sehr langsam. Es holt das zu verschlüsselnde Byte einzeln von der Quelldatei, verschlüsselt es und schreibt es einzeln in die Zieldatei. Dann holt es das nächste Byte und bearbeitet es auf dieselbe Weise. Man könnte den Programmablauf optimieren und viele Bytes je nach verfügbarer Größe des Arbeitsspeichers auf einmal von der Quelldatei holen, bearbeiten und wieder zurückschreiben. Aber hier kommt es darauf an, den Verschlüsselungsvorgang an jeder beliebigen Stelle abbrechen zu können.

Während der Verschlüsselung wird der Bearbeitungsstatus und der bereits erreichte Fortschritt in % angegeben. Der Vorgang kann an jeder beliebigen Stelle abgebrochen werden. Die bis dahin erzeugte Ergebnisdatei ist ordnungsgemäß verschlüsselt. Sie läßt sich korrekt entschlüsseln. Dadurch ist es möglich, Dateien teilweise (ab Anfang bis x%) zu verschlüsseln. Dies hat natürlich nur dann einen Sinn, wenn die gekürzte Datei für den vorgesehenen Zweck nach dem Entschlüsseln noch brauchbar ist. Ausführbare Dateien dürfen nicht gekürzt werden, da sie sonst unvollständig sind und nicht mehr laufen. Auch ZIP-Dateien dürfen nicht gekürzt werden.

Bei den schnellen Rechnern mit den schnellen Plattenzugriffen merkt man kaum, dass das Programm die Bytes einzeln holt und einzeln in die Zieldatei schreibt.

Syntax des Verschlüsselungsprogramms in FORTRAN77

C______ Deklarierung der Variablen  
  CHARACTER PASS*100 Kennwortpuffer mit 100 Zeichen
  INTEGER*4 IZ,INI,INI1,IZP Bytezähler, Koeffizienten, Kennwortposition
  INTEGER*2 LPASS Länge des Kennworts
  INTEGER*1 IB,BYTE Originalbyte, verschlüsseltes Byte
     
C______ Initialisierung der Variablen  
  INI=10 Bytezähler-Offset (Primärschlüssel)
  INI1=5 Sekundärschlüssel
  PASS=CHAR(1) Kennwortvorgabe (neutrales Element)
  LPASS=1 Kennwortlänge 1 Byte
  ............ Dateinamen werden eingelesen
und die Dateien geöffnet.
Kennwort wird eingelesen, in
PASS geschrieben,
die Kennwortlänge wird festgestellt
und in
LPASS geschrieben.
Quelltext dazu wird hier nicht gezeigt.
C______ Verschlüsselungsschleife  
  IZ=INI Bytezähler auf Anfangswert setzen
  IZP=1 Kennwortposition auf 1 setzen
100 READ(1,END=110)IB Originalbyte binär aus Originaldatei lesen,
bei End of file Sprung zu 110
C______ Wenn kein Kennwort eingegeben wurde,  
C______ wird nur mit IZ verschlüsselt.  
  IZP=MOD(IZ,LPASS) Kennwortposition
  IF(IZP.eq.0)IZP=LPASS Kennwortposition
  BYTE=(IB.and.255).xor.  
# (((IZ.and.255)*  
# ((IZ/INI1).and.255)*  
# (ICHAR(PASS(IZP:IZP)))).and.255) Byte-Konvertierung durch XOR
  IZ=IZ+1 Byte-Zähler hochzählen
  WRITE(2)BYTE verschlüsseltes Byte binär in Datei schreiben
  GOTO 100 Schleifenwiederholung, wenn kein EOF (= End of file)
110 CLOSE(1) Originaldatei schließen
  CLOSE(2) verschlüsselte Datei schließen
C______ Ende der Verschlüsselungsschleife  

Die mit # bezeichneten Zeilen im Quellcode sind Fortsetzungszeilen des rot gekennzeichneten Statements. Die AND-Verknüpfung mit der Zahl 255 stellt eine 8-Bit-Maskierung dar (siehe oben).


Verschlüsselungs-Gleichung von WINCRPT.EXE

Aus dem rot gekennzeichneten Teil des vorstehenden Quellcodes ergibt sich folgende Verschlüsselungsgleichung:

krypto4.gif: Formel für
          Algorithmus von CRPT.EXE

x ist die Byteposition in der Datei (wobei für das erste Byte in der Datei x = 0 gilt),
LPass ist die Länge des Kennworts,
Pass(i) ist das i-te Zeichen des Kennworts,
Z ist das Schlüsselbyte für die Position x (hängt nur von x und vom Kennwort ab).

Das Byte Z wird beim Verschlüsseln mit dem Originalzeichen bzw. beim Entschlüsseln mit dem verschlüsselten Zeichen XOR verknüpft. Das Ergebnis ist das verschlüsselte bzw. das entschlüsselte Zeichen. Wenn ein Kennwort vorhanden ist, wird mit dem Kennwortbyte multipliziert, ist kein Kennwort vorhanden, wird das Kennwortbyte auf den Wert 1 (= neutrales Element) gesetzt.

Erläuterung zum Programm:

Wichtig ist die Wahl der Koeffizienten der Gleichung. Im Programm wurde ein Primärschlüssel INI und ein Sekundärschlüssel INI1 gewählt, die dafür sorgen, dass das Berechnungsergebnis nicht NULL wird. INI setzt den Bytezähler auf einen bestimmten Anfangswert.

Sicherheit und Grenzen des beschriebenen Verfahrens

Der beschriebene Algorithmus verwendet eine Gleichung zweiten Grades. Diese wird bei Verwendung eines Kennwortes zu einer Gleichung dritten Grades erweitert.

Falls ein potentieller Hacker die verschlüsselten Dateien knacken will, wird er dies kaum durch Probieren oder Lösen der Gleichungen zweiten Grades versuchen, sondern er wird sich das Programm WINCRPT besorgen und es damit versuchen. Wenn beim Verschlüsseln kein Kennwort verwendet wurde, kann er die Datei damit sofort entschlüsseln. Diese Nutzung des Programms ist gewollt, damit eMail-Partner sich Dateien zusenden können, die nicht für jeden offen lesbar sind. Soll dagegen etwas wirklich so verschlüsselt werden, dass es nicht mit geringem Aufwand zu knacken ist, so wird empfohlen, immer ein möglichst langes Kennwort zu benutzen (maximal 40 Bytes = 320 Bit). Ohne Kenntnis des Kennworts ist es auch mit dem Programm WINCRPT nicht möglich, eine mit Kennwort verschlüsselte Datei zu entschlüsseln.

Es leuchtet jedem ein, dass der Absender dem Empfänger das Kennwort nicht mit derselben eMail schicken darf, sondern auf getrenntem Weg übermitteln muss, wenn es nicht vorher zwischen beiden vereinbart wurde.

Mehrmalige Verschlüsselung

Zusätzlich hat man die Möglichkeit, die Datei mehrmals zu verschlüsseln. Man kann sie z.B. mit einem Packer erst komprimieren, dann mit WINCRPT und Kennwort verschlüsseln und dann mit dem Packer nochmals komprimieren und mit einem anderen Kennwort noch einmal verschlüsseln.

Programmierhinweise:

Vorsicht! Der Algorithmus hat seine Schwächen.

Falls ein Programmierer die beschriebene Gleichung zweiten oder dritten Grades und das symmetrische Verfahren mit der XOR-Funktion für ein eigenes Programm verwenden will, so muss er in der Gleichung die Koeffizienten a, b und c so wählen, dass für die Schlüsselbytes nicht mehrere Nullbytes hintereinander herauskommen. Sonst könnten durch die Maskierung in einem Bereich von bestimmten Bytepositionen die Schlüsselbytes aus einer Serie von Nullbytes bestehen. Einzelne, allein stehende Nullbytes sind erwünscht und erlaubt, aber es darf durch die Maskierung in einem bestimmten Intervall eines Zahlenbereichs nicht zu einer Serie von Nullbytes kommen. Die Maskierung führt zu einem Nullbyte, wenn das Ergebnis der Berechnung vor der Maskierung ohne Rest durch 256 teilbar ist. Die Ver- und Entschlüsselung könnte zwar dann noch störungsfrei durchgeführt werden, aber in der verschlüsselten Datei wären (auch bei Verwendung eines Kennworts) für diese Bytepositionen die Bytes unverschlüsselt, denn die XOR-Funktion liefert bei einem Nullbyte wieder das Originalbyte als Ergebnis zurück, wie das folgende Beispiel zeigt:

Beispiel:

Originalbyte: 11100101
Schlüsselbyte: 00000000 (= Nullbyte)

Originalbyte 1 1 1 0 0 1 0 1 XOR-Funktion
Schlüsselbyte = Nullbyte 0 0 0 0 0 0 0 0
Ergebnis = Originalbyte 1 1 1 0 0 1 0 1 Ergebnisbyte

Das ist der Nachteil eines symmetrischen Verfahrens, das mit der XOR-Funktion arbeitet. Um Nullbytes möglichst zu vermeiden, wurden beim Programm-Algorithmus von WINCRPT die Parameter indirekt durch zwei Schlüssel ersetzt, wobei der Primärschlüssel (INI) als Summand und der Sekundärschlüssel (INI1) als Divisor verwendet wird.

Für Krypto-Programmierer empfieht es sich, Testprogramme herzustellen, die Originaldatei und verschlüsselte Datei auf identische Zeichen auf derselben Byteposition untersuchen. Während der Programmierung des Krypto-Programms sollte man sich die Schlüsselbytes als dritte Datei neben den beiden anderen als Test ausgeben lassen um zu sehen, ob Serien identischer Schlüsselbytes vorkommen. Auf diese Weise könnte man Schwächen des gewählten Algorithmus herausfinden.

Einige Bemerkungen zur Maskierung:

Die Maskierung auf 8 Bit (Integerzahl 255) soll einen Zahlenüberlauf (Integer-Overflow) im Rechner verhindern. Verzichtet man auf diese Maskierung oder maskiert die Zwischenergebnisse auf 16 Bit, dann könnte bei älteren Systemen der Zahlenbereich überlaufen und das Ergebnis verfälschen. Die Datei würde dann zwar verschlüsselt und könnte auf demselben System auch wieder einwandfrei entschlüsselt werden, aber es könnte auf anderen Rechnern zu Entschlüsselungsfehlern kommen. Deshalb ist es empfehlenswert, dass die Zwischenergebnisse der Berechnung einzeln auf 8 Bit maskiert werden.

Schlusswort

Der Anwender des Algorithmus und der Programme muss für sich selber feststellen, ob ihm die von diesem Algorithmus gebotene Sicherheit ausreicht. Er kann mit WINCRPT seine Dateien mit und ohne Kennwort verschlüsseln und testen, ob sie mit Codeknackern (Shareware) dechiffriert werden können.


Literatur- und Quellenhinweis:

Die Angaben dieses Beitrags über die antiken Verfahren und die statistischen Werte der Buchstabenhäufigkeiten stammen aus dem Buch "Geheimschriften", ISBN 3-89350-162-3, Untertitel: Verschlüsseln und Enträtseln von Geheimtexten.
Autoren: Andrea Sgarro und Dr. Marcus Würmli, Verlag: Weltbild-Verlag. Dieses Buch kann zur allgemeinen Einstimmung in dieses Thema empfohlen werden. Es beschreibt auch das Prinzip der Verschlüsselung mit öffentlichem und privatem Schlüssel (RSA-Chiffre).


Internet-Adressen:

Im Internet findet man unter dem Stichwort "Kryptographie" die Beschreibung aller Verschlüsselungsverfahren, Literaturhinweise, wissenschaftliche Arbeiten und vieles andere mehr.


© 2017 Otto Praxl. Alle Rechte vorbehalten.

Zur Startseite