Kryptologie

author
18 minutes, 25 seconds Read
Krypto-Kram? Klingt lustig.

Ziele der Einheit

Ziemlich gut verstehen, worum es bei Kryptographie und Kryptoanalyse geht, und vor allem wissen, was sie garantieren kann und was nicht.

Hintergrund

Alice und Bob können Menschen sein, aber auch Clients und Server, Peer-Computer, Datenspeicher, Netzwerk-Router usw. Mallory kann einen der Teilnehmer fälschen, aktuelle Nachrichten hinzufügen, ändern oder löschen, die Verbindung entführen, eine Dienstverweigerung durchführen, Schadsoftware einschleusen usw.

Ziele:

  • Vertraulichkeit: Es sollte Eve mehr kosten, $m$ wiederherzustellen, als $m$ wert ist.
  • Authentifizierung: Bob sollte in der Lage sein zu verifizieren, dass es Alice war, die $m$ gesendet hat.
  • Integrität: Bob sollte in der Lage sein, zu überprüfen, dass $m$ nicht manipuliert wurde.
  • Unleugbarkeit: Alice sollte nicht in der Lage sein, das Senden von $m$ zu leugnen.

Die besten Kryptosysteme gehen davon aus, dass Eve und Mallory $E$, $D$, $c$ und, wenn $k_e \neq k_d$, dann auch $k_e$ kennen. Die meisten Kryptosysteme verlassen sich nicht darauf, dass ihre Algorithmen geheim gehalten werden, denn:

  • Wenn Ihr geheimer Algorithmus kompromittiert wird (jemand könnte Ihre Gruppe verlassen), müssen Sie ihn ändern, und das ist viel schwieriger als das Ändern eines Schlüssels!
  • Öffentliche Algorithmen können von Tausenden von Experten auf Fehler untersucht werden, so dass Sie ein gewisses Maß an Vertrauen in diejenigen haben, die einer Prüfung standhalten.

Weitere Lektüre:Security Through Obscurity,Kerchoff’s Principle unddiese Diskussion.

Das Studium der Kryptologie umfasst die Entwicklung verschiedener Chiffren, Kryptoanalysemethoden (Angriffe), Schlüsselaustausch, Schlüsselauthentifizierung, kryptografisches Hashing, digitales Signieren und soziale Fragen (rechtlich, politisch, usw.). Siehe Wikipedia’s topics in cryptography page.

DON’T DO THIS STUFF ON YOUR OWN IN REAL APPLICATIONS

Sicher, es ist in Ordnung, zu Hause herumzuspielen, aber versuchen Sie NIEMALS, Ihre eigene Kryptographie für irgendetwas Reales zu entwickeln. Überlassen Sie das den Profis. Wenn du selbst ein Profi wirst, dann, mmmmm, okay.
Dies war eine wichtige öffentliche Bekanntmachung.

Definitionen

Wörter, die man wissen sollte:

Kryptographie Die Kunst und Wissenschaft der Herstellung von Chiffren. Kryptoanalyse Die Kunst und Wissenschaft, Chiffren zu brechen, d.h. die Extraktion von $m$ bei gegebenem $c$, $E$, $D$ und eventuell $k_e$. Kryptologie Das Studium der Kryptographie und Kryptoanalyse.

Übung: Informiere dich über Steganographie. Wie unterscheidet sie sich von der Kryptographie?

Kryptosystem Eine bestimmte Reihe von Algorithmen und Protokollen zur Verschlüsselung, Entschlüsselung und Schlüsselerzeugung. Beispiele: Cramer-Shoup-Kryptosystem, Rabin-Kryptosystem, Benaloh-Kryptosystem, RSA-Kryptosystem. Kryptografisches System Jedes System, das Kryptografie verwendet. Chiffre Ein Algorithmus, der in einem Kryptosystem verwendet wird.

Übung: Was ist der Unterschied zwischen einem „Code“ und einer „Chiffre“? Sind Codes sicherer als Chiffren? Warum werden sie nicht so oft verwendet?

Verwirrung Die Eigenschaft, dass die Beziehung zwischen Klartext, Chiffretext und Schlüssel so kompliziert ist, dass sie für den Kryptoanalytiker nutzlos ist. Diffusion Die Eigenschaft, dass statistische Muster im Klartext im Geheimtext weit verbreitet sind.

Zeitleisten

Wenn Sie sich für Geschichte interessieren….

  • Wikipedias Artikel zur Geschichte der Kryptographie
  • Wikipedias Zeitleiste
  • Carl Ellisons Zeitleiste

Arten von Chiffren

Hier sind einige nützliche Kategorien von Chiffren. Beachten Sie, dass eine bestimmte Chiffre zu mehr als einer dieser Kategorien gehören kann.

  • Klassisch: Eine Chiffre, die einfach genug ist, um von Hand ausgeführt zu werden, und in der Regel auf Zeichen basiert. Auch manuell genannt.
  • Modern: So ziemlich jede Chiffre, die nicht klassisch ist.
  • Substitution: Jedes Zeichen des Klartextes wird durch ein oder mehrere Zeichen ersetzt, um den Chiffretext zu bilden.
  • Transposition: Zeichen des Klartextes werden neu angeordnet, um den Chiffretext zu bilden.
  • Monoalphabetisch: Eine Substitutions-Chiffre, bei der ein Zeichen des Klartextes immer durch das gleiche Zeichen ersetzt wird.
  • Polyalphabetisch: Eine Substitutions-Chiffre, die im Wesentlichen mehrere monoalphabetische Substitutions-Mappings verwendet.
  • Homophon: Eine Substitution, bei der ein Zeichen auf eines aus einer Reihe von Zeichen abgebildet werden kann.
  • Polygraphisch: Eine Substitution von Zeichenblöcken für Zeichenblöcke.
  • Periodisch: Eine polyalphabetische Chiffre, bei der sich das Ersetzungsschema wiederholt.
  • Nichtperiodisch: Selbsterklärend, wenn man periodisch versteht.
  • Block: Die Verschlüsselung erfolgt nicht pro Zeichen, sondern in Blöcken von Zeichen.
  • Stream: Eine Chiffre, die mit einem Datenstrom unbekannter Länge arbeitet und in der Regel eine Rückkopplung beinhaltet.
  • Geheimschlüssel: Eine Chiffre, bei der $k_e$ und $k_d$ gleich oder trivial voneinander ableitbar sind; erfordert ein geheimes Treffen der Parteien, um die zu verwendenden Schlüssel auszutauschen. Auch symmetrisch genannt.
  • Öffentlicher Schlüssel: Ein Verfahren, bei dem der Verschlüsselungsschlüssel eines jeden öffentlich bekannt ist, der Entschlüsselungsschlüssel jedoch geheim gehalten wird. Auch asymmetrisch genannt.

Geheimschlüsselkryptographie

Geheimschlüssel (auch symmetrischer Schlüssel genannt) sind viel schneller als öffentliche Schlüssel, aber die Schlüsselverwaltung kann ein großes Problem darstellen.

  • Wenn $n$ Personen in einer Gruppe kommunizieren müssen, benötigen sie $\frac{n(n-1)}{2}$ Schlüssel.
  • Schlüssel müssen sicher (geheim) verteilt werden.
  • Schlüssel müssen sicher aufbewahrt werden.
  • Schlüssel sollten häufig gewechselt werden, was sich auf die Verteilung auswirkt.

ANMERKUNG

In den folgenden zeichenbasierten Beispielen gehen wir (ohne Verlust der Allgemeinheit) von einem Alphabet mit 26 Symbolen aus (A..Z).

Caesar-Chiffre

Eine nach modernen Maßstäben völlig armselige und unsichere Chiffre. Der Chiffrierschlüssel $k_e$ ist eine kleine ganze Zahl und $k_d = k_e$. Zum Verschlüsseln wird $k_e$ zu jedem Klartextzeichen addiert, zum Entschlüsseln subtrahiert.

Beispiel: Für k=5 wird ATTACKATDAWN zu FYYFHPFYIFBS

Trivial zu knacken: einfach $k_e$ erraten.

Monoalphabetische Substitution

Anstatt einfach einen festen Offset zu jedem Zeichen hinzuzufügen, kann man eine Substitutionstabelle vorberechnen, indem man eine zufällige Permutation des Alphabets erzeugt. Zum Beispiel:

 ABCDEFGHIJKLMNOPQRSTUVWXYZ MQHPSVJYCURFTBILAKWNGZDOEX

Jetzt ist ATTACKATDAWN MNNMHRMNPMDB.

Dieses Verfahren lässt sich nicht durch Erraten des Schlüssels knacken (es gibt $n!$ mögliche Schlüssel), aber die Häufigkeitsanalyse kann jede monoalphabetische Substitutions-Chiffre knacken, sofern die Nachricht lang genug ist.

Bei Verfahren, deren Schlüssel eine Permutation ist, kann man sich den Schlüssel leichter merken, indem man eine Phrase auswählt, ihre eindeutigen Buchstaben auslegt und dann die fehlenden Buchstaben der Reihe nach auffüllt. Zum Beispiel ergibt PREMATURE OPTIMIZATION IS THE ROOT OF ALL EVIL diese Substitutionszuordnung:

 PREMATUOIZNSHFLVBCDGJKQWXY

Homophone Substitution

Jeder Buchstabe des Klartextes entspricht einem oder mehreren Symbolen im Chiffretext. Die Anzahl der Ziele sollte proportional zu ihrer Häufigkeit sein (um die Frequenzanalyse zu umgehen). Beispiel:

 A 12 15 36 50 56 70 81 95 B 51 84 C 16 44 65 D 04 06 48 82 E 01 17 19 34 47 49 58 60 67 77 85 90 F 13 27 G 09 28 H 26 42 53 59 68 71 I 35 73 76 86 91 96 J 18 K 07 L 29 40 54 87 M 25 30 N 21 61 62 69 74 94 O 02 03 08 10 57 75 93 P 41 98 Q 97 R 32 38 43 45 80 83 S 14 22 39 79 89 99 T 00 20 23 33 46 52 72 78 88 U 11 64 66 V 37 W 63 92 X 31 Y 24 55 Z 05

Zur Verschlüsselung ist eine zufällige Auswahl von Möglichkeiten zu treffen. Beispiel: Eine mögliche Verschlüsselung von ATTACKATDAWN ist

 56 78 20 95 65 07 12 72 06 50 92 61

Einfache Vigenère-Chiffre

Die Chiffre, die als einfache Vigenère-Chiffre bekannt ist, wurde gar nicht von Vigenère erfunden… sie scheint zuerst von Giovan Battista Bellaso beschrieben worden zu sein. Der Schlüssel ist eine Zeichenkette, die man dem Klartext durch modulare Addition hinzufügt, wie in diesem Beispiel (A=0, B=1, C=2, …, Z=25):

 Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUAR Ciphertext: JUKVKSIPPYVSOLBFILZMONOEYHGANSBWOOYDNHVDXCRUPBIOI

Um den Chiffretext von Hand zu erzeugen, kann man ein Code-Rad oder eine Tabula recta verwenden.

Dieses Schema ist nicht sicher, da sich der Schlüssel wiederholt. Wenn die Schlüssellänge bestimmt werden kann, kann der Kryptoanalytiker mehrere Frequenzanalysen durchführen (eine für jeden Verschiebungswert im Schlüssel). Methoden zur Bestimmung der Schlüssellänge sind die Kaisiski-Methode und der Friedman-Test.

Für binäre Daten (d.h. eine Folge von Bits) ist die modulare Addition zur Basis 2 nur ein einfaches xor. Beispiel:

 Plaintext: 0110000101010000111101001010101010010000001111101 Key: 0000011100000111000001110000011100000111000001110 Ciphertext: 0110011001010111111100111010110110010111001110011

Auto-Key Vigenère

Vigenère hat tatsächlich eine Auto-Key-Chiffre entwickelt, die stärker ist, weil der Schlüssel sich nie wiederholt. Stattdessen besteht der „Schlüssel“ aus der Schlüsselphrase, gefolgt vom Klartext, etwa so:

 Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKTAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRD Ciphertext: JUKVKVOZCOHMDSFUMZCTNHZVQPFOJWCOOTWYVVBHUBYHYSWFU

Dieser Schlüssel verwendet den Klartext als Teil des Schlüssels. Sie könnten auch den Chiffretext verwenden. Sehen Sie, wie?

Moderne Auto-Key-Chiffren

Sie können Auto-Key-Vigenère-Chiffren immer noch durch linguistische Analyse knacken, weil der Schlüssel Text enthält und daher wahrscheinlich hochfrequente Buchstaben enthält. Moderne Auto-Key-Chiffren erzeugen die Verschiebungswerte mit einem Zufallszahlengenerator. Der Schlüssel setzt den Generator in Gang.

Übung: Implementieren Sie eine Auto-Key-Chiffre in einer Programmiersprache Ihrer Wahl.

One Time Pad

Wenn der Schlüssel:

  • genauso lang oder länger als die zu verschlüsselnde Nachricht ist
  • wirklich zufällig erzeugt wird
  • einmal und nur einmal verwendet wird

Dann haben Sie eine nachweislich sichere Chiffre, die One Time Pad genannt wird. Der eigentliche Algorithmus kann eine polyalphabetische Substitution oder sogar ein einfaches Xoring der Nachricht mit dem Schlüssel verwenden, solange die drei oben genannten Kriterien erfüllt sind.

Das One-Time-Pad kann niemals geknackt werden. Es ist ein perfektes Verschlüsselungsverfahren, jedenfalls aus mathematischer Sicht.

Übung: Warum werden One-Time-Pads nicht häufig verwendet, wenn sie doch die sichersten Chiffren überhaupt sind?

Playfair

Dies ist ein Beispiel für eine polygraphische Substitutions-Chiffre, bei der Paare von Zeichen ersetzt werden. Der Schlüssel ist eine Permutation von {A..I,K..Z}, zum Beispiel:

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

Um zu verschlüsseln, schreibt man den Klartext (ohne Leerzeichen oder Interpunktion) und fügt ein X zwischen Doppelbuchstaben und gegebenenfalls am Ende ein, damit der Text eine gerade Länge hat.Dann für jedes Buchstabenpaar:

  • Lass $(a,b)$ die Zeile und Spalte des ersten Zeichens und $(c,d)$ die Zeile und Spalte des zweiten Zeichens sein.
  • Wenn $a \neq c$ und $b \neq d$ dann gib $(a,d)(b,c)$ zurück.
  • Wenn $a = c$, dann gib $(a,(b+1) \bmod 5)(c,(d+1) \bmod 5)$.
  • Wenn $b = d$, dann gib $((a+1) \bmod 5,b)((c+1) \bmod 5,d)$.
Beispiel: THEN ATTACK FROM THE EASTTH EN AT XT AC KF RO MT HE XE AS TXUT HW GO FO DB TV YK ZK NH NA DX OFUTHWGOFODBTVYKZKNHNADXOF

Die Entschlüsselung läuft nach den umgekehrten Regeln. Die Playfair-Chiffre ist ziemlich unsicher.

Four-square

Verschlüsselt Digraphen wie die Playfair-Chiffre, ist aber etwas stärker, weil sie Doppelbuchstaben zulässt und keine umgekehrten Chiffretext-Digraphen für umgekehrte Klartext-Digraphen liefert. Beispiel

 a b c d e G I V E M f g h i k L B R T Y l m n o p O D A H C q r s t u F K N P Q v w x y z S U W X Z P R E M A a b c d e T U O I Z f g h i k N S H F L l m n o p V B C D G q r s t u K Q W X Y v w x y z
Beispiel: THEN ATTACK FROM THE EASTTH EN AT TA CK FR OM TH EE AS TXNI VL EV FM MO BV DF NI MA VV NX

Okay, also etwas stärker als Playfair, aber was soll’s? Computer können diese Dinger in Sekunden oder vielleicht Minuten knacken (wenn man genug Chiffretext hat).

Einfache Blocktransposition

Die einfachste Transpositions-Chiffre zerlegt die Nachricht in Blöcke der Größe n und verschlüsselt dann jeden Block gemäß einer Permutation von $(1..n)$.

Beispiel: Für den Schlüssel $(4,1,6,3,2,5)$ wird die Nachricht GETTHATHEALTHINSPECTOR zu TGATEHATTEHLSHENIPRCOT.

Spaltenweise Transposition

Die Nachricht wird zeilenweise in ein Gitter geschrieben und dann spaltenweise ausgelesen. Völlig unsicher. Der Schlüssel ist nur die Anzahl der Zeilen. Errate es.

Schienenzaun

Der Schienenzaun ist nicht besser als der letzte, nur lustiger. Der Schlüssel ist die Anzahl der Schienen, auf die man den Klartext auf- und abwärts schreibt und den Chiffriertext durch Lesen einer Schiene nach der anderen erzeugt.

Beispiel: Um "fill out and file a WS2475 form" auf 4 Schienen zu verschlüsseln:

 f t l 4 m i u a i e 2 7 r l o n f a s 5 o l d w f

lesen Sie dann den Chiffretext "ftl4miuaie27rlonfas5oldwf" aus. Dies ist trivial zu knacken. Raten Sie einfach $k$.

Kombination von Substitution und Transposition

Transposition allein ist sehr schwach; Substitution ist schwach; die Kombination beider ist besser. Man kann viele der klassischen Substitutions-Chiffren mit verschiedenen Transpositionen mischen oder einige spezielle Kombinations-Chiffren wie Bifid verwenden. Auch die meisten der berühmten Rotormaschinen und modernen Chiffren verwenden diese Kombination; tatsächlich wenden sie diese Transformationen oft an.

Bifid

Diese Chiffre ersetzt Buchstaben mit ihren Koordinaten in einem Gitter und führt eine spaltenweise Transposition der Koordinaten durch. Beispiel:

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

Schreibe die Koordinaten (Zeile, Spalte) unter jeden Buchstaben des Klartextes (z.B., „A“ steht in Zeile 1, Spalte 2; „T“ steht in Zeile 2, Spalte 0 usw.):

 ATTACKATDAWN 122102121143 200213201244

Dann zeilenweise auslesen, nach Zweiergruppen gruppieren und die Buchstaben des Geheimtextes nachschlagen:

 122102121143200213201244 A U B A D R T B Q T A W

Trifid

Wie Bifid, aber auf einem Würfel. Beispiel:

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

Zur Verschlüsselung schreibt man zunächst die Koordinaten:

 ATTACKATDAWN 000001000022 122102121110 200210201221
 000001000022122102121110200210201221 Z C Z O S F H Q V I N .

Enigma

Die Enigma war die berühmte deutsche Rotormaschine aus dem Zweiten Weltkrieg (eigentlich eine Familie von Maschinen), die in den meisten Versionen eine polyalphabetische Substitutions-Chiffre mit einer Periode von 16900 plus einem Steckbrett zur Verwürfelung (Transposition) enthielt. Der Schlüssel bestand aus der Reihenfolge der Rotoren, der Startposition jedes Rotors, den Ringeinstellungen und den Einstellungen der Steckplatte (etwa 1,6 × 1020 Möglichkeiten). Es gab jeden Tag (mehr oder weniger) einen neuen Schlüssel, der in Codebüchern veröffentlicht wurde.

Die Alliierten waren in der Lage, ihn dank einiger Schwächen in seinem Design zu knacken…

  • Kein Buchstabe würde sich selbst verschlüsseln
  • Selbstreziprozität bedeutete, dass es weniger Möglichkeiten gab, einen Scrambler einzurichten

…aber, was noch wichtiger war, viele Schwächen in der Art und Weise, wie er benutzt wurde…

  • Es war wirklich einfach, Spickzettel zu finden. Die meisten Nachrichten begannen mit einem Wetterbericht.
  • Früh erschienen die Nachrichtenschlüssel zweimal hintereinander.

…und durch die Beschaffung von Codebüchern von gekaperten Schiffen.

Sie können bei der NSA und beiWikipedia nachlesen, wie die Enigma geknackt wurde.

Moderne kryptographische Methoden

Nachdem wir nun die Shannonsche Informationstheorie, sehr leistungsfähige Computer und Jahrhunderte von Theorie und Praxis hinter uns haben, sind die meisten modernen Techniken:

  • arbeiten mit Bitfolgen, nicht mit Zeichenketten
  • sorgen dafür, dass Muster und Redundanzen im Klartext vollständig ausgeblendet werden
  • verwenden Zufallsschlüssel (die auch wiederverwendet werden können)
  • sorgen dafür, dass sehr kleine Änderungen im Klartext einen großen Teil des Chiffretextes beeinflussen (und umgekehrt). Dies wird als Avalanche-Effekt bezeichnet.

Zudem ist es gut, wenn die Chiffre:

  • effizient
  • fehlertolerant

ist. Die meisten Chiffren sind entweder Blockchiffren oder Stromchiffren. Blockchiffren benötigen ein Padding und können in verschiedenen Modi arbeiten (siehe Schniers Buch oder den Wikipedia-Artikel.)

  • ECB – Electronic Codebook
  • CBC – Cipher Block Chaining
  • CFB – Cipher Feedback
  • OFB – Output Feedback
  • CTR – Counter
  • BC – Block Chaining
  • PCBC – Propagating Cipher Block Chaining
  • CBCC – Cipher Block Chaining with Checksum

DES

Auf Wikipedia

IDEA

Auf Wikipedia

RC4

Auf Wikipedia

RC6

Auf Wikipedia

Blowfish

Auf Wikipedia

Twofish

Auf Wikipedia

AES

Auf Wikipedia

AES ist der neue Standard, der DES ablöst. Er war der Gewinner des Wettbewerbs (2001), bei dem er unter dem Namen Rijndael eingereicht wurde, und setzte sich gegenRC6, Serpent, MARS und Twofish durch.

Schlüsselaustausch

Diffie und Hellman (die Turing-Preisträger von 2015) und ihr Freund Merkle zeigten 1976, dass es für zwei Personen möglich ist, einen geheimen Schlüssel auszutauschen, ohne sich tatsächlich heimlich treffen zu müssen:

  • Alice wählt eine Primzahl $n$ und sendet diese unerkannt an Bob
  • Alice wählt eine Primzahlwurzel mod $n$ (wie zu finden), genannt $g$, und sendet diese unerkannt an Bob
  • Alice wählt eine geheime ganze Zahl $a$, und sendet $g^a \bmod n$ im Klartext an Bob
  • Bob wählt eine geheime ganze Zahl $b$, und sendet $g^b \bmod n$ im Klartext an Alice
  • Alice berechnet ($g^b \bmod n)^a \bmod n$ und Bob berechnet ($g^a \bmod n)^b \bmod n$. Das ist der Schlüssel!(Es ist $g^{ab} \bmod n$)

Das ist wahrscheinlich sicher, vorausgesetzt $n$ ist sehr groß und $\frac{n-1}{2}$ ist ebenfalls eine Primzahl, denn obwohl Eve $g$, $n$, $g^a \bmod n$ und $g^b \bmod n$ kennt, gibt es keinen bekannten effizienten Weg, $a$ oder $b$ daraus zu erhalten.Das ist das Problem des diskreten Logarithmus, erinnerst du dich?

Beispiel mit kleinem $n$:

  • Alice wählt $n=208799$ und $g=13$ und schickt diese an Bob
  • Alice wählt $a=152335$ und Bob wählt $b=98113$
  • Alice schickt Bob $13^{152335} \bmod 208799 = 73033$
  • Bob schickt Alice $13^{98133} \bmod 208799 = 147540$
  • Alice errechnet $147540^{152335} \bmod 208799 = 8435$
  • Bob errechnet $73033^{98133} \bmod 208799 = 8435$
  • Der geheime Schlüssel ist $8435$.

Tun Sie dies nicht mit kleinen Werten von $n$.

Im Allgemeinen sollten Sie nicht versuchen, Systeme in der realen Welt selbst abzusichern, es sei denn, Sie erhalten eine Art Zertifizierung. Aber natürlich können Sie die Algorithmen lernen und das Programmieren üben.

Kryptographie mit öffentlichem Schlüssel

Schlüsselchiffren mit öffentlichem Schlüssel lösen den Alptraum der Schlüsselverwaltung bei geheimen Schlüsselchiffren, allerdings auf Kosten der Geschwindigkeit. In einer Gruppe von $n$ Personen braucht man nur $n$ öffentliche Schlüssel und $n$ private Schlüssel.

RSA Kryptosystem

Diffie-Hellman verschlüsselt nicht, sondern tauscht nur einen Schlüssel aus.RSA kann verschlüsseln und entschlüsseln. So geht’s. Jede Person

  • Generiert zwei große Primzahlen, $p$ und $q$.
  • Wählt einen Wert $e$, der relativ prim zu $(p-1)(q-1)$ ist.
  • Veröffentlicht seinen oder ihren öffentlichen Schlüssel $(N,e)$, wobei $N = pq$.
  • Berechnet $d$ = modulare Inverse von $e$ relativ zu $(p-1)(q-1)$ und hält ihn geheim.
  • Zerstöre $p$ und $q$.

Nun überprüfe dies:

  • Für Alice, um eine Nachricht $m$ an Bob zu senden, sendet sie $c = m^e \bmod N$.
  • Bob entschlüsselt dies leicht, weil $m = c^d \bmod N$.
Übung: Recherchieren Sie die Mathematik hinter RSA. Warum funktioniert sie, und zwar im Detail? Ihre Antwort wird sich auf die Theoreme stützen, die der Eulerschen Totientenfunktion zugrunde liegen; zeigen Sie u.a., wie sie sich auf $(p-1)(q-1)$ reduziert, wenn $pq$ eine Primzahl ist.
Übung: Diffie-Hellman (DH) wird manchmal als Teil der Public-Key-Kryptographie betrachtet, obwohl es sich mit dem Schlüsselaustausch beschäftigt und selbst kein Verschlüsselungsalgorithmus ist. Warum wird es dann von manchen als öffentlicher Schlüssel betrachtet? (Die Antwort darauf erfordert einige Nachforschungen.)

Ein triviales Beispiel:

WARNUNG!
Dieses Beispiel dient nur zur Illustration. Implementieren Sie niemals Ihren eigenen Kryptoalgorithmus. Vergewissern Sie sich auch, dass Sie verstehen, wie schrecklich die Public-Key-Kryptographie mit solch winzigen Schlüsseln ist. Echte Schlüssel sollten Tausende von Bits haben.

Nehmen wir einen 16-Bit-Schlüssel (TUN SIE DAS NICHT IN DER REALITÄT). Erzeugen Sie zwei zufällige 8-Bit-Primzahlen:

$p = 163\\q = 173$

Erzeugen Sie eine 16-Bit-Primzahl für den Exponenten des Schlüssels:

$e = 64013$

Nun:

$n = pq = 28199 \\d = \mathsf{modInverse}(e, (p-1)(q-1)) = 6797$

Lassen Sie uns den String ¿Dónde está ud.? kodieren. Hier ist er in UTF-8:

c2 bf 44 c3 b3 6e 64 65 20 65 73 74 c3 a1 20 75 64 2e 3f

In dezimal:

194 191 68 195 179 110 100 101 32 101 115 116 195 161 32 117 100 46 63

Nun wenden wir die Kodierungsfunktion auf jeden an::

$194^{64013} \bmod 28199 = 15626$
$191^{64013} \bmod 28199 = 19945$
$68^{64013} \bmod 28199 = 27982$
$\vdots$
$63^{64013} \bmod 28199 = 18384$

Der Chiffriertext lautet:

15626 19445 27982 22746 2679 7739 16824 23107 9054 23107 8378 16412 22746 5566 9054 881 16824 17864 18384

Zum Entschlüsseln:

$15626^{6797} \bmod 28199 = 194$
$19445^{6797} \bmod 28199 = 191$
$27982^{6797} \bmod 28199 = 68$
$\vdots$
$16824^{6797} \bmod 28199 = 63$

Wir bekommen die ursprüngliche Nachricht zurück!

Übrigens
Da die symmetrische Verschlüsselung so viel schneller ist, kann man zunächst einen geheimen Schlüssel erzeugen und ihn über eine mit öffentlicher Schlüsselkryptographie gesicherte Leitung übertragen. Nun kann die gesamte künftige Kommunikation den geheimen Schlüssel verwenden.

Kryptographisches Hashing

Ein Hash, auch Fingerabdruck, Prüfsumme oder Message Digest genannt, ist ein Bitmuster (normalerweise etwa 160 Bit), das von einer kryptographischen Hash-Funktion aus einer Nachricht erzeugt wird. Damit ein Hash sicher oder kryptographisch ist, muss es rechnerisch unmöglich sein,

  • eine Nachricht zu finden, die zu einem bestimmten Wert hasht (Einwegigkeit)
  • zwei Nachrichten zu finden, die zum gleichen Wert hashen (Kollisionssicherheit)

Mathematisch gesehen erzeugt eine kryptographische Hash-Funktion $H$ einen Hash aus einer Nachricht, $H(m) = c$, so dass $m$ nicht effizient aus $c$ bestimmt werden kann, und man kann nicht effizient $m_1 \neq m_2$ finden, so dass $H(m_1) = H(m_2)$,

In der Regel führt die Änderung eines einzigen Bits in der Nachricht dazu, dass der Digest völlig anders aussieht.

$ cat willThis is my will.I leave 1000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum willc18feb890752c9e680c99d1e909fd761 will$ sed "s/1/9/g" will > Will$ cat WillThis is my will.I leave 9000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum Will85570bc2d0458b1f98f484261dee7d4d Will

Ein sicherer Hash bietet eine Möglichkeit festzustellen, ob eine Nachricht manipuliert wurde.

Siehe Steve Friedl’s Illustrated Guide to Cryptpgraphic Hashes.

Message Authentication Codes

Diese sind ähnlich wie kryptographische Hashes, außer dass sie einen geheimen Schlüssel verwenden, während Hashes nur die Nachricht selbst verwenden.

$MAC(m, k) = c$

Für weitere Informationen:

  • MACs vs. Hashes bei StackOverflow
  • Digitale Signaturen bei Wikpedia
  • MACs bei Wikipedia

Digitale Signaturen

Wie kann Bob sicher sein, dass die Nachricht von Alice und nicht von jemand anderem stammt?Indem Alice sie signiert; so geht das. In der Praxis signiert man normalerweise einen Hash, nicht die ganze Nachricht.

RSA für digitale Signaturen

Für Alice, um eine Nachricht an Bob zu senden,

  • Alice verschlüsselt m mit ihrem privaten Schlüssel
  • Alice verschlüsselt mit dem öffentlichen Schlüssel von Bob
  • Bob entschlüsselt mit seinem privaten Schlüssel
  • Bob entschlüsselt mit Alices öffentlichem Schlüssel

$m = A(B'(B(A'(m)))$

DSA

Bei Wikipedia

Kryptoanalyse

Dies ist ein umfangreiches Thema und kann hier nicht behandelt werden. Stattdessen gibt es hier eine Liste von Techniken.

  • Häufigkeitsanalyse
  • Angriff auf bekannten Klartext
  • Angriff auf bekannten Chiffretext
  • Angriff auf ausgewählten Klartext
  • Angriff auf ausgewählten Schlüsselangriff
  • Lineare Kryptoanalyse
  • Differenzielle Kryptoanalyse
  • Diebstahl
  • Bestechung
  • Erpressung
Übung: Lernen Sie Kryptoanalyse im Selbststudium oder suchen Sie sich einen unterhaltsamen Online-Kurs.

Programmierbeispiele

Heh, wir werden nicht zeigen, wie man Krypto selbst entwickelt. Wir schauen uns einige aktuelle Bibliotheken an.

Übertragen Sie Daten über ein IP-Netzwerk?
Verwenden Sie TLS.
Lesen Sie weiter, wenn Sie einige lustige Krypto-Bibliotheken verwenden möchten.

JavaScript-Beispiele

Referenz: Node crypto.

Python Beispiele

Referenz:Python kryptographische Bibliotheken -Python hashlib -Python secrets

Java Beispiele

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.