Kryptographie und Zugriffskontrolle - Grundlagen

Aus FernFH MediaWiki
Version vom 22. September 2022, 12:02 Uhr von JUNGBAUER Christoph (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Grundlagen der Kryptographie

Einleitung

Kryptographie ist an sich keine moderne Wissenschaft, sondern spielte schon in der Antike eine Rolle. Schon damals wurden vor allem im militärischen Bereich Nachrichten mit einfachen Methoden verschlüsselt. Mit Beginn des digitalen Zeitalters und durch starkes Vorantreiben durch militärische Organisationen entwickelte sich die Kryptographie zu einem der zentralen Themen in der heutigen Informationstechnologie.
Unter Kryptographie versteht man die Lehre der Methoden des Ver- und Entschlüsseln von Nachrichten . Als primäres Ziel gilt es, den Inhalt einer übertragenen Nachricht vor Dritten zu schützen. Die Kryptoanalyse beschäftigt sich hingegen mit der Entschlüsselung von Nachrichten ohne dabei Zugriff auf den verwendeten Schlüssel zu haben. Sie befasst sich somit mit dem Knacken von verschlüsseltem Text, der Aufdeckung von Schwachstellen und trägt somit dazu bei kryptographische Verfahren und Algorithmen sicherer zu machen. Kryptographie und Kryptoanalyse lassen sich zur Kryptologie zusammenfassen und sind eng miteinander verbunden. Ein weiterer Teilbereich der Kryptologie stellt die Steganografie dar. Diese zielt darauf ab eine geheime Nachricht zu verbergen. Sie teilt sich in die technische Steganographie, welche sich zum Beispiel mit verborgenen Copyright-Informationen innerhalb von digitalen Medien beschäftigt, und der linguistischen Steganographie die Geheimschriften und Semagramme im Fokus hat. Auf den Teilbereich der Steganographie wird allerdings nicht weiter eingegangen.

Begriffserklärungen

Um Verschlüsselungsverfahren zu erklären, bedarf es zunächst einiger Begriffserklärungen und Definitionen. Diese richten sich primär nach dem von der Internet Engineering Task Force (IETF) publiziertem RFC 4949 (Internet Security Glossary, Version 2) . In Fachbüchern, wie auch im Internet, werden oft unterschiedliche Begriffe und Nomenklaturen verwendet. Auch unterscheiden sich manchmal die deutschen Übersetzungen der englischen Begriffe. In der nachfolgenden Arbeit, wird versucht auf unterschiedliche Nomenklaturen und Bedeutungen hinzuweisen, sowie die englischen Begriffe ebenfalls anzuführen.

Die originale Nachricht, die es verschlüsselt zu übermitteln gilt, wird als Klartext (engl. Plaintext) bezeichnet. Im mathematischen Kontext wird die unverschlüsselte Nachricht auch als Message tituliert. In Kapitel [hashing], geht es nicht direkt darum Daten zu verschlüsseln, sondern ein Abbild der Daten zu generieren, daher einen sogenannten Hashwert (engl. Message Digest) zu bilden. Die verschlüsselte Nachricht nennt man Geheimtext (engl. Ciphertext). Plaintext und Ciphertext setzen sich aus Zeichen aus zwei endlichen Zeichenmengen, den sogenannten Alphabeten (engl. alphabets) zusammen. Daher existiert ein Klartext-Alphabet und ein Geheimtext-Alphabet.
Der Vorgang, welcher den Klartext in den Geheimtext überführt, wird als Verschlüsselung (engl. Encryption) bezeichnet. Der umgekehrte Vorgang, welcher wiederum Geheimtext lesbar macht, heißt Entschlüsselung (engl. Decryption). Der mathematische Vorgang welcher in umwandelt, wird als Verschlüsselungs-Funktion (eng. Encryption Function) bezeichnet. Daher muss gelten . Die Entschlüsselungs-Funktion (engl. Decrypt Function) wandelt wieder um C in M um, daher . Für einen Algorithmus muss also gelten , ansonsten könnte man den ursprünglichen Klartext nicht mehr herstellen.

Ver- und Entschlusselungsvorgang (nach [3])

Der geheime Schlüssel (engl. Secret Key) ist eine entscheidende Variable eines Ver- beziehungsweise Entschlüsselungs - Algorithmus. Im Speziellen bezeichnet man den Encryption Key als und den Decryption Key als . Bei manchen Verfahren, wie vor allem bei den symmetrischen Verfahren (siehe Kapitel [symmetrischeVerfahren]), stellt der Decryption Key sogleich den Encryption Key dar. Bei anderen Verfahren können sich die Schlüssel natürlich auch unterscheiden. Der sogenannte Schlüsselraum (eng. keyspace) beinhaltet alle möglichen zur Verfügung stehenden Schlüssel. Die verwendete Methode zur Ver- und Entschlüsselung wird als Chiffre (engl. Cipher) bezeichnet.

Alice, Bob und Eve

Um Protokolle und Verfahren zu erklären werden im Security Umfeld die fiktiven Personen Alice, Bob und Eve herangezogen . Im Normalfall wird Alice als jene Person beschrieben, von welcher ein Anfrage ausgeht beziehungsweise die eine Verbindung aufbaut. Bob ist die Person die auf diese Anfrage antwortet. Eve (von Eavesdropper) stellt die dritte Partei dar, welche Interesse an der Kommunikation von Alice und Bob hat. Sie stellt den Angreifer dar. Mit Hilfe dieser drei Personen werden in den nachfolgenden Kapiteln Sachverhalte dargestellt und Protokolle und Verfahren erklärt.

Kryptoanalyse

Die Kryptoanalyse befasst sich, wie schon bereits in Kapitel 1 erwähnt, mit Methoden um Informationen aus verschlüsselten Texten zu extrahieren. Angriffsszenarien gegen Verschlüsselungsmethoden liegen meist 4 grundlegenden Klassen zugrunde . Natürlich kann sich ein Angriff beziehungsweise eine Kryptoanalyse auch aus mehreren dieser Klassen zusammensetzen. Vorausgesetzt wird dabei das Kerckhoff’ sche Prinzip, welches in Kapitel [moderncrypto] vorgestellt wird.

  • Ciphertext-Only-Attack: Wird eine Attacke genannt, bei welcher der Angreifer oder Kryptoanalyst im Besitz eines oder mehrerer verschlüsselten Texte oder eines Auszuges davon ist. Die Beschaffung eines Ciphertexts ist in der Regel relativ leicht zu erhalten. Für einen erfolgreichen Angriff bedarf es allerdings einen großen Auszug des verschlüsselten Textes.
  • Known-Plaintext-Attack: Bei einer Known-Plaintext-Attack ist ein Angreifer sowohl im Besitz eines oder mehrerer Ciphertexte als auch des dazugehörigen Plaintextes.
  • Chosen-Plaintext-Attack: Bei der Chosen-Plaintext-Attack wird davon ausgegangen, dass sich der Angreifer zufällige Auszüge des Klartexte aussuchen kann, zu welchen er die entsprechenden verschlüsselten Texte erhält.
  • Chosen-Ciphertext-Attack: Im Gegensatz zu Chosen-Plaintext, kann sich der Angreifer hier verschlüsselte Auszüge des Textes aussuchen zu welchen er den Klartext erhält.

klassische Verschlüsselungsverfahren

Klassische Verschlüsselungsverfahren gelten heutzutage als nicht sicher. Dennoch sind sie hilfreich um die grundlegenden Attribute und Eigenschaften eines kryptographischen Systems darzustellen. Sie lassen sich in zwei Verfahren aufteilen, dem Substitutions-Verfahren und dem Transpositions-Verfahren. Bessere Verschlüsselungsverfahren kombinieren diese beiden Methoden miteinander und führen diese auch mehrmals hintereinander aus.

Substitutions-Verfahren

Beim Substitutions-Verfahren wird jedes Klartext-Zeichen durch ein Geheimtext-Zeichen ersetzt. Die Reihenfolge der einzelnen Zeichen bleibt dabei bestehen. In der klassischen Kryptographie gibt es vier Arten der Substitution :

  • monoalphabetische Substitution: Jedem Klartextzeichen wird genau ein Zeichen im Ciphertext zugeordnet. Das bekannteste Beispiel für eine monoalphabetische Substitution ist die Cäsar-Verschiebung, siehe dazu Kapitel 1.5.1.
  • homophone Substitution: Ein Zeichen im Klartext kann auf verschiedene Zeichen im Ciphertext abgebildet werden. Damit wird versucht Häufigkeitsverteilungen in der Sprache zu verschleiern. Häufig vorkommende Zeichen, wie zum Beispiel E und A, können jeweils einem anderen Zeichen im Ciphertext zugeordnet werden. Die homophone Substitution stellt somit eine Weiterentwicklung der monoalphabetischen Substitution dar.
  • polygraphische Substitution: Wie bei der homophonen Substitution wird versucht die Anfälligkeit für eine Häufigkeitsanalyse zu umgehen. Bei der polygraphischen Substitution werden allerdings gleich ganze Buchstabengruppen, sogenannte Polygramme, durch andere getauscht.
  • polyalphabetische Substitution: Wie der Name schon sagt, verwendet die polyalphabetische Substitution mehrere Geheimtext-Alphabete um den Klartext abzubilden. Das berühmteste Beispiel dafür ist die Viginière Verschlüsselung, siehe dazu Kapitel 1.5.3.

Cäsar-Verschiebung

Die Cäsar-Verschiebung (engl. Caesar Code) ist auch als Cäsar-Verschlüsselung oder als Cäsar-Chiffre bekannt. Er wurde von Julius Cäsar zur Verschlüsselung militärischer Nachrichten verwendet. Der Cäsar-Code gilt als einer der am Einfachsten zu knackenden Algorithmen. Trotzdem war er damals sehr wirksam, da ein Großteil der Bevölkerung nicht lesen und schreiben konnte.
Der Algorithmus basiert darauf, dass jeder Buchstabe um eine bestimmte Anzahl an Stellen im Alphabet zyklisch verschoben wird. Eine zyklische Verschiebung bedeutet an dieser Stelle, dass nach dem letzten Buchstaben im Alphabet wieder mit dem Ersten begonnen wird. Cäsar selbst verwendete eine Verschiebung um 3 Stellen.

Cäsar-Verschiebung um 3 Zeichen
plaintext A B C D E F .. U V W X Y Z
ciphertext D E F G H I .. X Y Z A B C


Der Cäsar-Code basiert auf einem einzigen festgesetzten Alphabet (monoalphabetisch). Jedes Zeichen des Klartext-Alphabets wird genau auf ein Zeichen im Geheimtext-Alphabet abgebildet (bijektiv). Somit wird jedes Zeichen mit einer Permutation von sich selbst ausgetauscht. Dies wird als einfache Substitution bezeichnet. Der Cäsar-Code ist somit eine monoalphabetische Substitution.

Ein mathematische Darstellung des Cäsar-Codes lässt sich wie folgt darstellen . Beachtet man Groß- und Kleinschreibung, sowie Sonderzeichen und Leerzeichen nicht, handelt es sich beim Cäsar-Code um ein Alphabet mit Länge 26, den Buchstaben von A bis Z. Die Buchstaben (A bis Z) werden durch ihre entsprechenden Stellen im Alphabet (0 bis 25) beschrieben. Da das Geheimtext-Alphabet ebenfalls aus den Buchstaben A bis Z besteht ist das Klartext-Alphabet mit dem Geheimtext-Alphabet ident. Daher . Der geheime Schlüssel stellt die Anzahl der Verschiebungen dar. Der Decryption Key und auch der Encryption Key kann daher nur einen Wert innerhalb der Alphabete annehmen, daher . Das Verfahren zur Verschlüsselung kann daher als Addition mit Modulo dargestellt werden. So sei ein Klartext-Buchstabe, ein Geheimtext-Buchstabe und der Encryption Key beziehungsweise der Decryption Key.

Eine Verschiebung ist einfach wieder rückgängig zu machen durch das umgekehrte Verfahren.

Um einen Ciphertext, der mit Cäsar-Code verschlüsselt wurde, zu knacken, ist natürlich die einfachste Variante alle verfügbaren Möglichkeiten zu probieren. In unserem Alphabet ist dies noch Recht überschaubar mit 26 möglichen Lösungen. Allerdings lässt auch ein Ausprobierenmöglicherweise Interpretationsspielraum besonders bei kurzen Nachrichten zu. So kann ein Ciphertext in mehrere mögliche Klartext-Nachrichten übersetzt werden.

Beispiel möglicher Klartexte einer Cäsar-Verschiebung
ciphertext D S P
shift by 2 F U R
shift by 8 L A X
shift by 15 S H E


Die möglichen Lösungen machen für Außenstehende wenig Sinn, allerdings können auf diesem Weg zum Beispiel Codeworte übermittelt werden.

Ein besondere Form des Cäsar-Code wird sogar heute noch eingesetzt. ROT13 (Rotate by 13) stammt ursprünglich aus dem Usenet und wird dazu verwendet um Texte zu verschleiern beziehungsweise unlesbar zu machen, zum Beispiel für obszöne Witze oder sogenannten Spoilern. ROT13 verwendet eine Cäsar Verschiebung um 13 Stellen. Die Verwendung von 13 Stellen hat die Eigenschaft, dass eine Ver- beziehungsweise Entschlüsselung genau ident verläuft. Bei einer zweimaligen Verschlüsselung findet eine doppelte Verschiebung um 13 Stellen statt. In einem Alphabet mit 26 Buchstaben bringt dies wiederum den Klartextbuchstaben zum Vorschein. Zudem existieren weitere Versionen von ROT, bei welchen Sonderzeichen oder Zahlen miteinbezogen werden.

einfache Substitution

Eine einfache Substitution (engl. Simple Substitution) ersetzt einen Buchstaben des Klartext-Alphabets mit einer Permutation von sich selbst. Ein Buchstabe wird somit mit dem Buchstaben des Substitutions-Alphabets, dass an derselben Stelle steht, ersetzt. Ein Beispiel dafür ist in Tabelle [table: substitution] ersichtlich.

Ein Ausprobieren, wie beim Cäsar-Code, ist diesmal nicht so einfach möglich, da Möglichkeiten bestehen um alle Permutationen abzudecken. Die einfache Substitution ist noch immer monoalphabetisch und basiert daher auf einem einzigen festgelegten Alphabet. Jeder Buchstabe für sich selbst verschlüsselt. Aus diesem Grund ist es möglich einen Ciphertext anhand statistischer Angriffe zu entschlüsseln . Die Buchstaben natürlicher Sprachen weisen unterschiedliche Häufungs-Verteilungen auf. Diese Häufungen können auf den Ciphertext umgelegt werden. Die Häufungen der deutschen Sprache sind in Tabelle [table: haeuffigkeiten] dargestellt.

Erforderlich für einen statistischen Angriff ist, dass der Klartext in einer natürlichen Sprache verfasst ist und ein genügend langer Ciphertext zur Verfügung steht, um die Buchstaben des Geheimtextes laut Statistik und Häufigkeitsverteilung einem Buchstaben im Klartextalphabet zuordnen zu können.
Um die Kryptoanalyse einer monoalphabetischen Verschlüsselung zu erschweren, können unterschiedliche Techniken angewendet werden. So wurden im ersten Weltkrieg Codebücher verwendet, um gebräuchliche Wörter mit einer Kunstsprache zu verschleiern. Außerdem wurden Homophone verwendet, sinnlose Zeichen eingefügt um Häufigkeiten zu verschleiern oder einem Klartextbuchstaben gleich eine Reihenfolge von Buchstaben zugeordnet.

Viginière-Verschlüsselung

Die Vigenière-Verschlüsselung ist eine polyalphabetische Verschlüsselung. Ein Buchstabe wird dabei nicht immer auf denselben Geheimtextbuchstaben abgebildet. Als Schlüssel wird ein Schlüsselwort gewählt, welches wiederholend über den Klartext gelegt wird . Im Beispiel der Tabelle 1.3 wird als Secret Key "BLAU" verwendet, welcher sich immer wiederholt.

Beispiel einer Vigenère-Verschlüsselung
plaintext D A S I S T G E H E I M
key B L A U B L A U B L A U


ciphertext E L S C T E G Y I P I G



Dies macht statistische Angriffe wie bei der einfachen Substitution in Kapitel 1.5.2 schwieriger aber nicht unmöglich. Der Knackpunkt der Vigenère-Verschlüsselung ist die Länge des eingesetzten Schlüssels. Es treten auch hier im Ciphertext Wiederholungen auf, welche auf die Länge des Schlüssels schließen lassen. Ist die Länge des Schlüssels wiederum bekannt, kann zur weiteren Kryptoanalyse ein statistischer Angriff erfolgen.
Theoretisch wäre die Vigenère-Verschlüsselung sicher, wenn die Länge des Keys gleich lang wie der Plaintext, nur einmalig verwendet wird und der Secret Key zufällig zusammengestellt ist. Somit gäbe es keine Wiederholungen und jeder Buchstabe wäre zufällig auf eine andere abgebildet. Dies wäre ein sogenanntes One Time Pad, siehe Kapitel 1.5.4. Dies ist natürlich nicht praktikabel, da bei einer Verschlüsselung von einem 1GB großen File, der Secret Key ebenfalls 1GB sein müsste und man unterschiedliche Keys jedes mal aufs Neue mit seinem Kommunikationspartner austauschen müsste.

One-Time Pad

Das One-Time Pad (OTP) [1] ist ein Theorem aus der Informationstheorie und wurde von Gilbert Vernam patentiert . Das OTP wird daher auch manchmal als Vernam Cipher bezeichnet. Ein One-Time Pad gilt als die perfekte Verschlüsselung da sie als beweisbar sicher gilt. Mehr zu beweisbarer Sicherheit ist in Kapitel [cryptoSec] zu finden.

OTP verwendet einen Secret Key, welcher gleich lang ist wie der Plaintext. Der Key wird nur einmal verwendet und ist durch einen echten Zahlenzufallsgenerator generiert (mehr zu Zufallsgeneratoren siehe Kapitel [moderncrypto]). Das OTP ist perfekt sicher. Das OTP kann nur durch Kenntnis des Secret Keys entschlüsselt werden. Diesen Secret Key zu erraten oder zu errechnen ist unmöglich, da jeder mögliche Schlüssel mit der selben Wahrscheinlichkeit auftreten kann. Leider ist ein OTP nicht praktikabel beziehungsweise durchführbar.

Transpositions-Verfahren

Bei der Transposition wird die Reihenfolge der Zeichen vertauscht, nicht aber die Zeichen selbst. Die Zeichen des Klartext bleiben somit an sich erhalten, sie werden nur an eine andere Stelle gesetzt. Somit bleibt auch die Anfälligkeit gegenüber Häufigkeitsanalysen bestehen. Die Sicherheit lässt sich etwas erhöhen, indem eine erneute Transposition durchgeführt wird.

Skytale

Das Skytale (oder auch Scytale) wurde ca. 500 vor Christus von den Spartanern entwickelt und verwendet um geheime Botschaften zu übermitteln . Das Skytale war ein einfacher Holzstab eines bestimmten Durchmessers. Um diesen Holzstab wurde ein Streifen Pergament gewickelt. Die Botschaft wurde längsseitig des Stabes auf das Pergament geschrieben und danach wieder abgewickelt. Um die Nachricht lesen zu können wurde daher ein Stab mit demselben Durchmesser benötigt. Der Durchmesser des Stabes stellt somit den Secret Key dar.

Skytale

Spaltentransposition

Bei der (einfachen) Spaltentransposition (engl. Simple Transposition) wird der Klartext in eine Tabelle eingetragen . Die Anzahl der Spalten wird durch die Länge des Schlüssels (oder der Keywords) bestimmt. Die Anzahl der Zeilen richtet sich nach der Länge des Klartextes.


Beispiel einer Spaltentransposition
key 2 4 5 1 3


D A S T R


E F F E N


F I N D E


T A M F R


E I T A G


S T A T T


Beispiel: Als Secret Key wird 2-4-5-1-3 verwendet. Der zu übertragende Klartext ist: "DASTREFFENFINDETAMFREITAGSTATT’. Die Anzahl der Spalten ist 5, da der Key die Länge 5 hat. Der Klartext wird nun, wie in 1.4 dargestellt in die Tabelle geschrieben:

Danach werden die Spalten aufgrund des Schlüssels in Blöcken dargestellt. Daher wird, wie in Tabelle 1.5 ersichtlich, bei Spalte 1 begonnen:

Auslesen der Spalten
ausgelesene Spalte 1 2 3 4 5


TEDFAT DEFTES RNERGT AFIAIT SFNMTA


Um die Länge des Schlüssels nicht zu verraten können die Blöcke auch in Gruppen vorgegebener Länge eingeteilt werden. Die einfache Spaltentransposition kann durch die doppelte Spaltentransformation (engl. Double Transposition) erweitert werden. Hierzu wird der erhaltene Geheimtext erneut in eine neue Tabelle anderer Spaltengröße eingetragen.

  1. nicht zu verwechseln mit One-Time Password, siehe Kapitel [OTP]