Kryptographie

Kryptographie ist die Wissenschaft, die Informationen verschlüsselt. Das bedeutet: Die Informationen werden so verändert, dass fremde Personen sie nicht lesen können.
Nur Personen mit dem richtigen Schlüssel können die Informationen wieder lesen.

Wichtig

Es gibt zwei Arten von Sicherheit in der Kryptographie:

  1. Einfache Verschlüsselung - schützt vor normalen Personen
  2. Starke Verschlüsselung - schützt vor Regierungen und Geheimdiensten

Alles dazwischen ist nicht sicher genug!

I. Grundlagen der Kryptographie

Kryptographie besteht aus vielen verschiedenen Techniken. Zusammen bilden sie ein System zum Schutz von Daten.
Die Geschichte der Kryptographie ist über 2000 Jahre alt.


Kryptographie - Die Basis

Kryptographie macht aus lesbaren Daten (Klartext) einen unlesbaren Text (Geheimtext). Später kann man den Geheimtext wieder in lesbaren Text verwandeln.

Die drei Hauptziele:

Verschlüsselung vs Entschlüsselung

Verschlüsselung macht aus lesbarem Text einen Geheimcode. Entschlüsselung verwandelt den Geheimcode wieder zurück in lesbaren Text.

Einfaches Beispiel:

  1. Du schreibst: "Hallo Welt" (Klartext)
  2. Verschlüsselung: "Hallo Welt" → "Xp2mK9sL" (Geheimtext)
  3. Dein Freund erhält: "Xp2mK9sL"
  4. Entschlüsselung: "Xp2mK9sL" → "Hallo Welt"

Schlüssel - Das Geheimnis

Ein Schlüssel ist wie ein Passwort für deine Verschlüsselung. Ohne den richtigen Schlüssel kann niemand den Geheimtext lesen.

Schlüssellänge: Je länger der Schlüssel, desto sicherer ist die Verschlüsselung.


II. Symmetrische Verschlüsselung

Bei Symmetrische Verschlüsselung benutzen Sender und Empfänger denselben Schlüssel. Das ist wie zwei Personen, die beide denselben Tresor-Code kennen.

Das Problem: Wie bringst du den Schlüssel sicher zum Empfänger? Das nennt man das Schlüsselaustausch-Problem.


Block-Chiffre vs Stream-Chiffre

Es gibt zwei verschiedene Methoden für Symmetrische Verschlüsselung: Entweder verschlüsselt man Datenblöcke oder einzelne Zeichen.

Verfahren Funktionsweise Beispiel
Block-Chiffre Verschlüsselt Daten in festen Blöcken (z.B. 128 Bit) AES
Stream-Chiffre Verschlüsselt Daten Bit für Bit oder Byte für Byte ChaCha20

AES - Der Standard

AES (Advanced Encryption Standard) ist der beste Standard für Symmetrische Verschlüsselung. Man benutzt AES überall - von WLAN bis zu verschlüsselten Festplatten.

Eigenschaften von AES:

Wo wird AES benutzt?

  • HTTPS-Verbindungen (zusammen mit TLS)
  • Verschlüsselte Festplatten
  • VPN-Verbindungen
  • Messenger-Apps (wie Signal, WhatsApp)

Betriebsmodus

Block-Chiffren wie AES brauchen einen Betriebsmodus. Der Betriebsmodus sagt, wie man mehrere Blöcke nacheinander verschlüsselt.

Wichtige Betriebsmodi:


III. Asymmetrische Verschlüsselung

Asymmetrische Verschlüsselung löst das Schlüsselaustausch-Problem auf elegante Weise: Jede Person hat zwei Schlüssel - einen öffentlichen und einen privaten Schlüssel.

Einfach erklärt:


Public-Key-Kryptographie - Das Konzept

Bei Public-Key-Kryptographie gibt es zwei mathematisch verbundene Schlüssel: Was mit dem einen Schlüssel verschlüsselt wird, kann nur mit dem anderen Schlüssel entschlüsselt werden.

So funktioniert es:

  1. Alice möchte Bob eine Nachricht schicken
  2. Alice holt sich Bobs öffentlichen Schlüssel (jeder kann ihn sehen)
  3. Alice verschlüsselt die Nachricht mit Bobs öffentlichem Schlüssel
  4. Nur Bob kann mit seinem privaten Schlüssel die Nachricht entschlüsseln

RSA - Der Klassiker

RSA ist das bekannteste asymmetrische Verfahren. RSA basiert auf einem mathematischen Problem: Es ist sehr schwer, große Zahlen in ihre Primfaktoren zu zerlegen.

Mathematische Basis:
Zwei große Primzahlen p und q multiplizieren ist einfach: n=p×q
Aber aus n wieder p und q herauszufinden ist extrem schwer (bei großen Zahlen)!

RSA-Parameter:

ECC - Elliptic Curve Cryptography

ECC ist die moderne Alternative zu RSA. ECC basiert auf elliptischen Kurven und braucht viel kürzere Schlüssel für dieselbe Sicherheit.

Sicherheitslevel RSA Schlüssellänge ECC Schlüssellänge
Standard 2048 Bit 256 Bit
Hoch 3072 Bit 384 Bit
Sehr hoch 4096 Bit 512 Bit

Vorteile von ECC:


IV. Hash-Funktionen

Hash-Funktionen sind wie digitale Fingerabdrücke: Sie verwandeln beliebig lange Daten in eine kurze, eindeutige Zeichenkette mit fester Länge.

Wichtig: Eine Hash-Funktion ist eine Einbahnstraße - aus dem Hash-Wert kann man die Originaldaten nicht zurückrechnen.


Kryptographische Hash-Funktion - Eigenschaften

Eine gute kryptographische Hash-Funktion muss drei wichtige Eigenschaften haben, damit sie sicher ist.

Die drei Sicherheitseigenschaften:

Lawineneffekt Beispiel

  • Eingabe: "Hallo" → Hash-Wert: "a3f5b8c9..."
  • Eingabe: "Hallo!" → Hash-Wert: "7d2e1f4a..." (völlig anders!)

SHA-Familie - Die Standards

Die SHA-Familie (Secure Hash Algorithm) sind die am meisten benutzten Hash-Funktionen. SHA-2 und SHA-3 gelten heute als sicher.

Algorithmus Hash-Wert-Länge Status
SHA-1 160 Bit ❌ UNSICHER - nicht mehr verwenden!
SHA-256 256 Bit ✅ Sicher - weit verbreitet
SHA-512 512 Bit ✅ Sehr sicher
SHA-3 224-512 Bit ✅ Neuester Standard

Anwendungen von Hash-Funktionen

Hash-Funktionen sind überall - oft ohne dass du es merkst. Sie schützen deine Passwörter und prüfen die Integrität von Daten.

Typische Einsatzgebiete:

Warum nicht direkt das Passwort speichern?

  1. Du gibst Passwort "geheim123" ein
  2. Server berechnet Hash-Wert: [02 - RESOURCES/Notes/SHA-256|SHA-256] = "a3f5b8..."
  3. Server speichert nur "a3f5b8..." in der Datenbank
  4. Wenn die Datenbank gehackt wird, sehen Angreifer nur den Hash-Wert, nicht dein Passwort

HMAC - Hash mit Schlüssel

HMAC (Hash-based Message Authentication Code) kombiniert eine Hash-Funktion mit einem geheimen Schlüssel. So garantiert man Integrität UND Authentizität.

Funktionsweise:

HMAC(K,M)=H((Kopad)||H((Kipad)||M))

Einfach gesagt: Die Hash-Funktion wird zweimal angewendet und mit einem Schlüssel K gemischt

Verwendung:


V. Digitale Signaturen

Digitale Signaturen sind wie deine handschriftliche Unterschrift in der digitalen Welt - sie beweisen, dass DU eine Nachricht geschickt hast und sie nicht verändert wurde.

Unterschied zur Verschlüsselung: Verschlüsselung hält Nachrichten geheim. Digitale Signaturen beweisen Authentizität und Integrität.


Wie funktioniert eine Digitale Signatur?

Digitale Signaturen nutzen Asymmetrische Verschlüsselung, aber andersherum: Du signierst mit deinem privaten Schlüssel, andere prüfen mit deinem öffentlichen Schlüssel.

Schritt-für-Schritt: Signieren

  1. Alice schreibt Nachricht "Überweise 100€ an Bob"
  2. Alice berechnet Hash-Wert der Nachricht: [02 - RESOURCES/Notes/SHA-256|SHA-256] = "a3f5..."
  3. Alice verschlüsselt den Hash-Wert mit ihrem privaten Schlüssel → Digitale Signatur
  4. Alice schickt: Nachricht + Digitale Signatur

Schritt-für-Schritt: Prüfen

  1. Bob erhält: Nachricht + Digitale Signatur
  2. Bob berechnet Hash-Wert der Nachricht: [02 - RESOURCES/Notes/SHA-256|SHA-256] = "a3f5..."
  3. Bob entschlüsselt Digitale Signatur mit Alice's öffentlichem Schlüssel → sollte "a3f5..." ergeben
  4. Stimmen die Hash-Werte überein? ✅ Signatur ist gültig!

RSA-Signatur vs ECDSA

Genau wie bei Verschlüsselung gibt es auch bei Digitale Signaturen verschiedene Algorithmen. Die wichtigsten sind RSA-Signatur und ECDSA.

Eigenschaft RSA-Signatur ECDSA
Basis Primfaktorzerlegung Elliptische Kurven
Signaturgröße 2048-4096 Bit 256-512 Bit
Geschwindigkeit Langsamer Schneller
Verwendung TLS, X.509-Zertifikate Bitcoin, moderne Systeme

Zertifikat und PKI

Ein Zertifikat ist wie ein digitaler Personalausweis - es bescheinigt, dass ein öffentlicher Schlüssel wirklich zu einer bestimmten Person oder Website gehört.

Das Problem ohne Zertifikat:
Woher weißt du, dass der öffentliche Schlüssel von "Alice" wirklich von Alice ist und nicht von einem Angreifer?

Die Lösung: PKI (Public Key Infrastructure)

Beispiel: HTTPS-Verbindung

  1. Du besuchst https://bank.de
  2. Server schickt X.509-Zertifikat mit öffentlichem Schlüssel
  3. Zertifikat ist von CA "DigiCert" signiert
  4. Dein Browser prüft: Ist DigiCert eine vertrauenswürdige Root-CA? ✅
  5. Ist die Digitale Signatur der CA gültig? ✅
  6. Browser zeigt 🔒 - Verbindung ist sicher!


VI. Kryptographische Protokolle

Kryptographische Protokolle kombinieren verschiedene Verfahren (Verschlüsselung, Hash-Funktionen, Digitale Signaturen), um sichere Kommunikation zu ermöglichen.

Was ist ein Protokoll? Ein Protokoll ist wie ein Rezept: Es definiert genau, wer wann was macht, damit am Ende sichere Kommunikation steht.


Diffie-Hellman - Schlüsselaustausch

Diffie-Hellman löst ein fundamentales Problem: Wie können zwei Personen über eine unsichere Leitung einen gemeinsamen geheimen Schlüssel vereinbaren?

Die Idee (vereinfacht):

  1. Alice und Bob einigen sich öffentlich auf Startwerte g und p
  2. Alice wählt geheime Zahl a, berechnet A=gamodp und schickt A an Bob
  3. Bob wählt geheime Zahl b, berechnet B=gbmodp und schickt B an Alice
  4. Alice berechnet: K=Bamodp
  5. Bob berechnet: K=Abmodp
  6. Beide haben jetzt denselben geheimen Schlüssel K! 🎉

Warum ist das sicher?
Ein Angreifer sieht g, p, A und B, aber aus diesen öffentlichen Werten a oder b zu berechnen ist extrem schwer (Diskreter Logarithmus-Problem)

TLS - Transport Layer Security

TLS (früher SSL genannt) ist DAS Protokoll für sichere Internet-Verbindungen. Jede HTTPS-Website nutzt TLS.

Was macht TLS?

TLS-Handshake - So läuft es ab:

  1. Client Hello: Browser sagt welche Verschlüsselungen er unterstützt
  2. Server Hello: Server wählt Verschlüsselung und schickt Zertifikat
  3. Schlüsselaustausch: Mit Diffie-Hellman oder RSA wird gemeinsamer Schlüssel erzeugt
  4. Fertig: Ab jetzt wird mit Symmetrische Verschlüsselung (AES) kommuniziert

Perfect Forward Secrecy

Perfect Forward Secrecy (PFS) bedeutet: Selbst wenn der private Schlüssel des Servers gestohlen wird, bleiben alte Verbindungen sicher.

Wie funktioniert das?
Statt RSA wird Diffie-Hellman mit temporären Schlüsseln benutzt. Für jede Verbindung wird ein neuer Schlüssel generiert und danach gelöscht.

Moderne TLS-Versionen:


VII. Mathematische Grundlagen

Moderne Kryptographie basiert auf mathematischen Problemen. Diese Probleme sind in eine Richtung leicht zu lösen, aber in die andere Richtung extrem schwer.

Wichtig: Du musst kein Mathe-Genie sein, aber die Grundideen zu verstehen hilft dir, Kryptographie richtig einzusetzen.


Primzahlen und Primfaktorzerlegung

Primzahlen sind die Bausteine der Zahlentheorie und die Basis für RSA.

Die Einbahnstraße:

Warum ist das schwer?

Bei kleinen Zahlen ist es noch machbar. Aber bei RSA benutzen wir Primzahlen mit 300+ Stellen. Die Primfaktorzerlegung würde selbst für Supercomputer Jahrmillionen dauern!

Modulare Arithmetik

Modulare Arithmetik ist wie Rechnen mit einer Uhr - nach 12 geht es wieder bei 1 los. In Kryptographie: nach p geht es bei 0 los.

Notation: ab(modm)
Bedeutet: a und b haben denselben Rest bei Division durch m

Beispiele:

Diskreter Logarithmus

Das Diskreter Logarithmus-Problem ist die mathematische Basis für Diffie-Hellman und ECC.

Das Problem:

Beispiel:

Elliptische Kurven

Elliptische Kurven sind spezielle mathematische Kurven mit einer Gruppenstruktur. ECC nutzt diese für sehr effiziente Kryptographie.

Kurven-Gleichung: y2=x3+ax+b

Punkt-Addition auf der Kurve:
Man kann zwei Punkte auf der Kurve "addieren" und erhält einen neuen Punkt auf der Kurve. Diese Operation ist effizient, aber schwer umkehrbar.

Warum sind Elliptische Kurven gut?

  • Das Diskreter Logarithmus-Problem auf Kurven ist NOCH schwerer
  • Deshalb braucht man viel kürzere Schlüssel
  • 256-Bit ECC ≈ 3072-Bit RSA

Zufallszahlen und Entropie

Gute Zufallszahlen sind EXTREM wichtig für Kryptographie. Schlechte Zufallszahlen = unsichere Verschlüsselung.

Unterschied:

Wichtig für Entwickler

✅ Verwende: /dev/urandom, CryptGenRandom(), crypto.getRandomValues()
❌ NICHT verwenden: rand(), Math.random() für Kryptographie


VIII. Praktische Anwendungen

Jetzt wird es konkret: Kryptographie ist nicht nur Theorie, sondern schützt dich jeden Tag im Internet, auf deinem Smartphone und beim Online-Banking.

Als IT-Profi musst du wissen: WANN welche Verfahren eingesetzt werden - und vor allem welche Fehler du vermeiden solltest.


Passwort-Hashing richtig gemacht

NIEMALS Passwörter im Klartext oder mit einfachem SHA-256 speichern! Verwende spezialisierte Passwort-Hash-Funktionen.

Die richtigen Werkzeuge:

Verfahren Status Verwendung
bcrypt ✅ Empfohlen Standard für Web-Apps
scrypt ✅ Sehr gut Hoher Speicherbedarf gegen Hardware-Angriffe
Argon2 ✅ Neuester Standard Gewinner Password Hashing Competition 2015
MD5, SHA-1 ❌ UNSICHER Nie für Passwörter verwenden!
Warum nicht einfach SHA-256?

  • SHA-256 ist ZU schnell - Angreifer können Milliarden Passwörter pro Sekunde testen
  • bcrypt, scrypt, Argon2 sind absichtlich langsam
  • Sie verwenden Salt, um Rainbow Table-Angriffe zu verhindern

HTTPS und TLS in der Praxis

Jede moderne Website MUSS HTTPS benutzen. Ohne TLS können Angreifer im WLAN alle Daten mitlesen.

TLS-Best-Practices:

Tools zum Testen

  • SSL Labs Server Test - bewertet deine TLS-Konfiguration
  • Let's Encrypt - Kostenlose Zertifikate
  • Certbot - Automatische Zertifikats-Erneuerung

End-to-End-Verschlüsselung

Bei End-to-End-Verschlüsselung (E2EE) können nur Sender und Empfänger die Nachricht lesen - nicht mal der Server-Betreiber.

Beispiele für E2EE:

VPN und IPsec

VPNs verschlüsseln deinen gesamten Netzwerk-Traffic. IPsec ist das Standard-Protokoll dafür.

IPsec-Modi:

Moderne VPN-Protokolle:

Blockchain und Kryptowährungen

Blockchain kombiniert Hash-Funktionen, Digitale Signaturen und Proof-of-Work zu einem dezentralen, manipulationssicheren System.

Wie Blockchain Kryptographie nutzt:

Bitcoin-Transaktion

  1. Alice signiert mit ihrem privaten Schlüssel: "Sende 0.5 BTC an Bob"
  2. Netzwerk prüft Digitale Signatur mit Alice's öffentlichem Schlüssel
  3. Miner packen Transaktion in Block
  4. Block wird mit Hash-Wert des vorherigen Blocks verkettet

Häufige Fehler vermeiden

Selbst beste Kryptographie wird unsicher, wenn man sie falsch benutzt. Hier die Top-Fehler:

❌ NIEMALS machen

  • Eigene Kryptographie erfinden - Verwende etablierte Bibliotheken!
  • ECB-Modus verwenden - Verwende CBC, CTR oder GCM
  • Schlüssel hardcoden - Verwende Key Management Systeme
  • Kleine Schlüssel - Mindestens 128 Bit für symmetrisch, 2048 Bit für RSA
  • Kein Salt - Immer Salt bei Passwort-Hashing!
  • MD5 oder SHA-1 für Sicherheit - Nur für Checksummen, nicht für Kryptographie
  • Keine IV (Initialization Vector) - Bei CBC und CTR verpflichtend und zufällig!

✅ Empfohlene Bibliotheken

Python: cryptography, PyNaCl
JavaScript: crypto (Node.js), Web Crypto API
Java: javax.crypto, Bouncy Castle
C/C++: OpenSSL, libsodium


Zusammenfassung 🎯

Die wichtigsten Punkte:

  1. Symmetrische Verschlüsselung (AES) = schnell, beide haben gleichen Schlüssel
  2. Asymmetrische Verschlüsselung (RSA, ECC) = löst Schlüsselaustausch, aber langsam
  3. Hash-Funktionen (SHA-256) = digitaler Fingerabdruck, Einbahnstraße
  4. Digitale Signaturen = beweisen Authentizität und Integrität
  5. Protokolle (TLS, Diffie-Hellman) = kombinieren alles zu sicherer Kommunikation
  6. In der Praxis: Verwende etablierte Bibliotheken, niemals selbst programmieren!
💡 Goldene Regel

"Don't roll your own crypto!" - Verwende immer erprobte, standardisierte Verfahren und Bibliotheken. Kryptographie ist zu komplex, um sie selbst zu erfinden.