Gehen Sie mit der App Player FM offline!
STP043: Kryptografische Primitiven
Manage episode 376357048 series 2920733
Im zweiten Teil unserer Reihe über Kryptografie besehen wir uns einzelne Klassen von Bausteinen, welche dann zu Verschlüsselungsprotokollen zusammengesetzt werden können.
Shownotes
Rückblick zu STP041
- Kryptografische Systeme dienen dem Erreichen der vier Schutzziele (Vertraulichkeit, Integrität, Authentizität, Verbindlichkeit)
- Implementierung vollständiger Kryptosysteme braucht Primitiven (Grundbausteine)
- heute: Vorstellung grundlegender Klassen von Primitiven
-
- Schritt 1: Klartext (Plaintext) + Schlüssel (Key) -> Geheimtext (Ciphertext)
- Schritt 2: Geheimtext + selber Schlüssel -> Klartext
- üblicherweise als Blockchiffre mit Beschränkung des Klartexts auf eine Blockgröße von z.B. 128 oder 256 Bits, übliche Schlüsselgrößen ähnlich groß
- zwei Probleme:
- Wie verschlüsselt man mehr als einen Block?
- Wie einigt man sich auf einen gemeinsamen Schlüssel, ohne dass Beobachter den Schlüssel abgreifen können?
zu Problem 1: Erweiterung der Blockchiffre zu einem Stromchiffre mittels eines geeigneten Betriebsmodus
- Datenstrom wird in einzelne Blöcke der gewünschten Größe zerteilt; Betriebsmodus beschreibt dann die Anwendung des Blockchiffre auf die Folge von Blöcken
- einfachster Betriebsmodus ist ECB (Electronic Codebook): der Blockchiffre wird auf jeden Block komplett separat angewendet -> offensichtliche Probleme (siehe Bild im verlinkten Abschnitt)
- bei den meisten modernen Betriebsmodi werden meist Daten aus dem aktuellen Blockchiffre in den nächsten Block übertragen, um die Analyse des Geheimtextes zu erschweren -> Problem: schwer parallelisierbar, Lesezugriff nur sequentiell
- CTR-Betriebsmodus (Counter): jeder Block wird beim Verschlüsseln mit einem Zähler kombiniert, damit sich keine wiederkehrenden Muster wie bei ECB ergeben -> Vorteil: wahlfreier Schreib- und Lesezugriff möglich (interessant für Festplattenverschlüsselung)
- siehe unten: Beispiel für die Geschwindigkeit moderner Stromchiffern insb. mit Hardwareunterstützung
$ cryptsetup benchmark ... # Algorithm | Key | Encryption | Decryption ... aes-xts 512b 3547,4 MiB/s 3540,4 MiB/s serpent-xts 512b 742,7 MiB/s 729,4 MiB/s twofish-xts 512b 398,9 MiB/s 404,8 MiB/s
zu Problem 2 (Einigung auf einen gemeinsamen Schlüssel) zwei Ansätze:
- Schlüsselaustausch-Protokolle wie Diffie-Hellman
- asymmetrische Verschlüsselung
-
- statt einem einzelnen Schlüssel ein Schlüsselpaar
- wir haben keine gute Bildmetapher dazu; Xyrills Vorschlag: zwei Ratschen; eine dreht nur nach rechts und eine nur nach links
- Schritt 1: Klartext + öffentlicher Schlüssel -> Geheimtext
- Schritt 2: Geheimtext + privater Schlüssel -> Klartext
- Beispiel RSA:
- Grundgeheimnis sind zwei sehr große Primzahlen (
p
undq
, jeweils z.B. 500 Dezimalstellen) - aus dem Produkt dieser Primzahlen (
N = p * q
) werden zwei weitere Zahlen (d
unde
) mittels günstiger Rechenoperationen abgeleitet - dann ist der öffentliche Schlüssel das Zahlenpaar
d,N
und der private Schlüssel das Zahlenpaare,N
- Ableitung des privaten aus dem öffentlichen Schlüssel erfordert Primzahlfaktorisierung von
N
, was extrem teuer ist (siehe Beispiel unten)
- Grundgeheimnis sind zwei sehr große Primzahlen (
- Problem 1 teilweise gelöst: Empfänger muss nur seinen öffentlichen Schlüssel offenbaren, der kein Geheimnis enthält
- Problem 2 ungelöst: auch asymmetrische Verschlüsselung arbeitet nur pro Block
- statt einem einzelnen Schlüssel ein Schlüsselpaar
$ time factor 1350918345091284620469824069824602946802496824562049682046982406982406980 1350918345091284620469824069824602946802496824562049682046982406982406980: 2 2 3 5 7 193 941 5077 3488395463852632669275489205712092360621005476304268749586169 factor 1,92s user 0,00s system 99% cpu 1,926 total $ time factor 1350918345091284620469824069824602946802496824562049682046982406982406981 1350918345091284620469824069824602946802496824562049682046982406982406981: 11 3931 5242879872157046321 5958863859256362497309559371496021100634736129421 factor 462,19s user 0,01s system 99% cpu 7:43,24 total
neues Problem: asymmetrische Verfahren sind sehr viel rechenaufwändiger als symmetrische Verfahren -> hybrides Kryptosystem
- asymmetrische Verschlüsselung wird nur zum Austausch eines symmetrischen Schlüssels verwendet
- Beispiel "verschlüsselte E-Mail": Alice hat den öffentlichen Schlüssel
O
, Bob hat den privaten SchlüsselP
dazu- Alice erstellt die Nachricht
N
im Klartext - Alice erzeugt einen zufälligen symmetrischen Schlüssel
S
- Alice verschlüsselt
N
mitS
und einem Stromchiffre zuN'
- Alice verschlüsselt
S
mitO
zuS'
- Alice schickt
N'
undS'
an Bob - Bob entschlüsselt
S'
mitP
zuS
- Bob entschlüsselt
N'
mitS
zuN
- Alice erstellt die Nachricht
zweite Anwendung von asymmetrischer Kryptografie: Signaturen
- Verschlüsselung: vorwärts mit dem öffentlichen Schlüssel, rückwärts mit dem privaten Schlüssel
- bei Signierung umgekehrt: vorwärts mit dem privaten Schlüssel (Erzeugung), rückwärts mit dem öffentlichen Schlüssel (Überprüfung)
- im Detail: erst Komprimierung der zu signierenden Daten auf eine feste Größe mittels einer Hashfunktion (siehe STP004), dann Verschlüsselung dieses Hash-Wertes mit dem privaten Schlüssel
- Überprüfung: Berechnung des Hashes auf dieselbe Weise, Vergleich mit entschlüsselter Signatur
noch eine Primitive zum Schluss: Geheimnisteilung
- Problem: Ein Geheimnis soll in N Teile so aufgeteilt werden, dass M beliebige Teile zum Entschlüsseln genutzt werden können.
- Beispiel: Backup des Passwortspeichers in 5 Fragmente aufteilen und bei 5 Freunden so einlagern, dass man später nur 3 beliebige Fragmente zum Wiederherstellen braucht
- Illustrationen: Visuelle Kryptografie, Blakley-Schema
im Gespräch erwähnt
66 Episoden
Manage episode 376357048 series 2920733
Im zweiten Teil unserer Reihe über Kryptografie besehen wir uns einzelne Klassen von Bausteinen, welche dann zu Verschlüsselungsprotokollen zusammengesetzt werden können.
Shownotes
Rückblick zu STP041
- Kryptografische Systeme dienen dem Erreichen der vier Schutzziele (Vertraulichkeit, Integrität, Authentizität, Verbindlichkeit)
- Implementierung vollständiger Kryptosysteme braucht Primitiven (Grundbausteine)
- heute: Vorstellung grundlegender Klassen von Primitiven
-
- Schritt 1: Klartext (Plaintext) + Schlüssel (Key) -> Geheimtext (Ciphertext)
- Schritt 2: Geheimtext + selber Schlüssel -> Klartext
- üblicherweise als Blockchiffre mit Beschränkung des Klartexts auf eine Blockgröße von z.B. 128 oder 256 Bits, übliche Schlüsselgrößen ähnlich groß
- zwei Probleme:
- Wie verschlüsselt man mehr als einen Block?
- Wie einigt man sich auf einen gemeinsamen Schlüssel, ohne dass Beobachter den Schlüssel abgreifen können?
zu Problem 1: Erweiterung der Blockchiffre zu einem Stromchiffre mittels eines geeigneten Betriebsmodus
- Datenstrom wird in einzelne Blöcke der gewünschten Größe zerteilt; Betriebsmodus beschreibt dann die Anwendung des Blockchiffre auf die Folge von Blöcken
- einfachster Betriebsmodus ist ECB (Electronic Codebook): der Blockchiffre wird auf jeden Block komplett separat angewendet -> offensichtliche Probleme (siehe Bild im verlinkten Abschnitt)
- bei den meisten modernen Betriebsmodi werden meist Daten aus dem aktuellen Blockchiffre in den nächsten Block übertragen, um die Analyse des Geheimtextes zu erschweren -> Problem: schwer parallelisierbar, Lesezugriff nur sequentiell
- CTR-Betriebsmodus (Counter): jeder Block wird beim Verschlüsseln mit einem Zähler kombiniert, damit sich keine wiederkehrenden Muster wie bei ECB ergeben -> Vorteil: wahlfreier Schreib- und Lesezugriff möglich (interessant für Festplattenverschlüsselung)
- siehe unten: Beispiel für die Geschwindigkeit moderner Stromchiffern insb. mit Hardwareunterstützung
$ cryptsetup benchmark ... # Algorithm | Key | Encryption | Decryption ... aes-xts 512b 3547,4 MiB/s 3540,4 MiB/s serpent-xts 512b 742,7 MiB/s 729,4 MiB/s twofish-xts 512b 398,9 MiB/s 404,8 MiB/s
zu Problem 2 (Einigung auf einen gemeinsamen Schlüssel) zwei Ansätze:
- Schlüsselaustausch-Protokolle wie Diffie-Hellman
- asymmetrische Verschlüsselung
-
- statt einem einzelnen Schlüssel ein Schlüsselpaar
- wir haben keine gute Bildmetapher dazu; Xyrills Vorschlag: zwei Ratschen; eine dreht nur nach rechts und eine nur nach links
- Schritt 1: Klartext + öffentlicher Schlüssel -> Geheimtext
- Schritt 2: Geheimtext + privater Schlüssel -> Klartext
- Beispiel RSA:
- Grundgeheimnis sind zwei sehr große Primzahlen (
p
undq
, jeweils z.B. 500 Dezimalstellen) - aus dem Produkt dieser Primzahlen (
N = p * q
) werden zwei weitere Zahlen (d
unde
) mittels günstiger Rechenoperationen abgeleitet - dann ist der öffentliche Schlüssel das Zahlenpaar
d,N
und der private Schlüssel das Zahlenpaare,N
- Ableitung des privaten aus dem öffentlichen Schlüssel erfordert Primzahlfaktorisierung von
N
, was extrem teuer ist (siehe Beispiel unten)
- Grundgeheimnis sind zwei sehr große Primzahlen (
- Problem 1 teilweise gelöst: Empfänger muss nur seinen öffentlichen Schlüssel offenbaren, der kein Geheimnis enthält
- Problem 2 ungelöst: auch asymmetrische Verschlüsselung arbeitet nur pro Block
- statt einem einzelnen Schlüssel ein Schlüsselpaar
$ time factor 1350918345091284620469824069824602946802496824562049682046982406982406980 1350918345091284620469824069824602946802496824562049682046982406982406980: 2 2 3 5 7 193 941 5077 3488395463852632669275489205712092360621005476304268749586169 factor 1,92s user 0,00s system 99% cpu 1,926 total $ time factor 1350918345091284620469824069824602946802496824562049682046982406982406981 1350918345091284620469824069824602946802496824562049682046982406982406981: 11 3931 5242879872157046321 5958863859256362497309559371496021100634736129421 factor 462,19s user 0,01s system 99% cpu 7:43,24 total
neues Problem: asymmetrische Verfahren sind sehr viel rechenaufwändiger als symmetrische Verfahren -> hybrides Kryptosystem
- asymmetrische Verschlüsselung wird nur zum Austausch eines symmetrischen Schlüssels verwendet
- Beispiel "verschlüsselte E-Mail": Alice hat den öffentlichen Schlüssel
O
, Bob hat den privaten SchlüsselP
dazu- Alice erstellt die Nachricht
N
im Klartext - Alice erzeugt einen zufälligen symmetrischen Schlüssel
S
- Alice verschlüsselt
N
mitS
und einem Stromchiffre zuN'
- Alice verschlüsselt
S
mitO
zuS'
- Alice schickt
N'
undS'
an Bob - Bob entschlüsselt
S'
mitP
zuS
- Bob entschlüsselt
N'
mitS
zuN
- Alice erstellt die Nachricht
zweite Anwendung von asymmetrischer Kryptografie: Signaturen
- Verschlüsselung: vorwärts mit dem öffentlichen Schlüssel, rückwärts mit dem privaten Schlüssel
- bei Signierung umgekehrt: vorwärts mit dem privaten Schlüssel (Erzeugung), rückwärts mit dem öffentlichen Schlüssel (Überprüfung)
- im Detail: erst Komprimierung der zu signierenden Daten auf eine feste Größe mittels einer Hashfunktion (siehe STP004), dann Verschlüsselung dieses Hash-Wertes mit dem privaten Schlüssel
- Überprüfung: Berechnung des Hashes auf dieselbe Weise, Vergleich mit entschlüsselter Signatur
noch eine Primitive zum Schluss: Geheimnisteilung
- Problem: Ein Geheimnis soll in N Teile so aufgeteilt werden, dass M beliebige Teile zum Entschlüsseln genutzt werden können.
- Beispiel: Backup des Passwortspeichers in 5 Fragmente aufteilen und bei 5 Freunden so einlagern, dass man später nur 3 beliebige Fragmente zum Wiederherstellen braucht
- Illustrationen: Visuelle Kryptografie, Blakley-Schema
im Gespräch erwähnt
66 Episoden
Alle Folgen
×Willkommen auf Player FM!
Player FM scannt gerade das Web nach Podcasts mit hoher Qualität, die du genießen kannst. Es ist die beste Podcast-App und funktioniert auf Android, iPhone und im Web. Melde dich an, um Abos geräteübergreifend zu synchronisieren.