kurse:ef05a-2021:crypto-crash-course

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».

  • 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.

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).
  • 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!)
  • 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

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!
  • Besitznachweis eines privaten Schlüssels, ohne den Schlüssel zu zeigen.
  • Don't do RSA anymore
    • Schwierig das korrekt hinzukriegen
    • Rechenaufwendiger, grössere Schlüssellänge (min 2048 Bits)
  • Authentifizierung.
  • Integrität der Nachricht.

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).

Proof of work, z.B. Bitcoin.

Antwort: Nein.

Vergleichbar mit Autogramm. Wertvoll für den Fan, sonst Altpapier.

  • kurse/ef05a-2021/crypto-crash-course.1652684097.txt.gz
  • Last modified: 2022/05/16 08:54
  • by Ivo Blöchliger