This is an old revision of the document!
Prinzipien moderner Kryptographie
Es geht hier nicht um die mathematischen Details, sondern um de Prinzipien und grundlegenden Eigenschaften moderner kryptographischer «Bauteile».
Hash-Funktionen
- Input: Irgendeine Anzahl an Bytes
- Output: Konstante Anzahl an Bytes, z.B. 32 Bytes bei SHA-256
- Deterministisch (gleicher Input liefert immer gleichen Output)
- Kollisionssicher
- D.h. für $x\neq y$ gilt $P(H(x)=H(y)) \approx \frac{1}{2^{0.5l}} \qquad \text{mit $l$ der Länge des Hashes in Bits}$
- Zu einem gegeben Hash-Wert $h$ ist es praktisch unmöglich $x$ zu bestimmen mit $H(x)=h$.
- Zu einem gegebenen $x$ ist es praktisch unmöglich, ein $y$ zu bestimmen mit $H(x)=H(y)$.
- Daraus folgt, dass der Output einer Hashfunktion von Zufall nicht zu unterscheiden ist. Oder anders ausgedrückt: Ändert man ein einziges Bit im Input, ändern sich in etwas die Hälfte aller Bits im Output.
Aktuelle Hashfunktionen
Zur Zeit empfohlene Hashfunktionen sind
- SHA-2 (vor allem SHA-256 und SHA-512)
- SHA-3 («Backup», sollte ein Problem mit SHA-2 auftauchen).
Veraltete Hashfunktionen (nicht mehr brauchen!) sind:
- SHA-1 (noch halbwegs sicher, erste Kollisionen wurden aber berechnet).
- MD5 (komplett kaputt). Kann aber noch zur Detektion von zufälligen Übertragungsfehlern dienen (aber nicht gegen Attacken schützen).
Symmetrische Krypto
- Ver- und Entschlüsseln brauchen den gleichen Schlüssel.
- Problem: Schlüsselaustausch!
- Standard heute: AES (128, 192 oder 256 Bits für Schlüssel)
- Super schnell (bis zu 15GiB/s auf modernen Prozessoren) → Verschlüsselung ist tranparent (Harddisk, aber auch RAM!)
Public/Private-Key Cryptography
Praktische Umsetzung
- Nur ein zufälliger AES-Key wird verschlüsselt mitgesendet.
- Die Nachricht wird mit AES verschlüsselt.
- Vorteile
- Mehrere Empfänger für eine verschlüsselte Nachricht (Nur AES-Schlüssel wird mehrfach verschlüsselt).
- Geringer Rechenaufwand
Diffie-Hellman Vefahren
Klassisches Verfahren
- Grundprinzip: der diskrete Logarithmus kann nicht effizient berechnet werden (d.h. nicht viel besser als alles ausprobieren).
$$ b^e = x \mod n \qquad \text{Aus $b$ und $x$ kann $e$ nicht berechnet werden.} $$ * Schlüsseltausch über unsicheren Kanal von $A$ und $B$:
- $A$ wählt zufällige Basis $b$, zufällige Primzahl $n$ und geheime Zufallszahl $x$. $A$ berechnet $p = b^x \mod n$.
- $A$ übermittelt (einsehbar) $b$, $n$ und $p$ and $B$.
- $B$ wählt eine geheime Zufallszahl $y$ und berechnet $q=b^y \mod n$ und $s=p^y \mod n = \left(b^x\right)^y = b^{xy}$.
- $B$ übermittelt $q$ and $A$.
- $A$ berechnet $s=q^x \mod n = \left(b^y\right)^x \mod n = b^{xy} \mod n$.
- Beide haben nun die gleiche Geheimzahl $s$, die zur Erzeugung eines Schlüssel für die geheime Kommunikation gebraucht werden kann.
- Probleme:
- Woher weiss $A$, dass es sich wirklich um $B$ handelt? $E$ könnte sich dazwischen hängen und den Austausch mit $A$ und $B$ machen, hat dann zwei Schlüssel und kann sich so einklinken.
- Authenzität von $A$ und $B$ muss überprüft werden!
Challenge/Response
- Besitznachweis eines privaten Schlüssels, ohne den Schlüssel zu zeigen.
Bemerkung zu RSA vs. Elliptic Curves
- Don't do RSA anymore
- Schwierig das korrekt hinzukriegen
- Rechenaufwendiger, grössere Schlüssellänge (min 2048 Bits)
Digitale Unterschrift
- Authentifizierung.
- Integrität der Nachricht.
Prinzipien
Effektive Umsetzung
Nur der Hash der Nachricht wird verschlüsselt, nicht die Nachricht selbst.
- Effizienter (nur eine kleine Datenmenge wird mit aufwendiger Krypto verschlüsselt).
- Nachricht bleibt im Klartext lesbar (auch ohne Software für die Bestätigung der Unterschrift).
Anwendung bei https
POW-Blockchain
Proof of work, z.B. Bitcoin.
Welches «Problem» löst eine Blockchain?
Braucht es für $xy$ eine Blockchain?
Antwort: Nein.
NFT
Vergleichbar mit Autogramm. Wertvoll für den Fan, sonst Altpapier.