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.
Es gibt zwei Arten von Sicherheit in der Kryptographie:
- Einfache Verschlüsselung - schützt vor normalen Personen
- 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:
- Vertraulichkeit - Nur du und der Empfänger können die Nachricht lesen (wie ein Brief im verschlossenen Umschlag)
- Integrität - Niemand kann die Nachricht heimlich ändern (wie ein Siegel auf einem Brief)
- Authentizität - Du weißt genau, wer die Nachricht geschickt hat (wie eine Unterschrift)
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:
- Du schreibst: "Hallo Welt" (Klartext)
- Verschlüsselung: "Hallo Welt" → "Xp2mK9sL" (Geheimtext)
- Dein Freund erhält: "Xp2mK9sL"
- 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:
- Schlüssellänge: 128, 192 oder 256 Bit
- Blockgröße: 128 Bit
- Sehr schnell (funktioniert gut in Hardware und Software)
- Gilt als unknackbar, wenn man es richtig benutzt
Betriebsmodus
Block-Chiffren wie AES brauchen einen Betriebsmodus. Der Betriebsmodus sagt, wie man mehrere Blöcke nacheinander verschlüsselt.
Wichtige Betriebsmodi:
- ECB (Electronic Codebook) - Verschlüsselt jeden Block einzeln, UNSICHER bei gleichen Blöcken
- CBC (Cipher Block Chaining) - Jeder Block hängt vom vorherigen Block ab
- CTR (Counter Mode) - Verwandelt Block-Chiffre in Stream-Chiffre
- GCM (Galois/Counter Mode) - CTR + Authentizität, moderner Standard
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:
- Der öffentliche Schlüssel ist wie deine Adresse (jeder darf sie kennen)
- Der private Schlüssel ist wie dein Haustürschlüssel (nur für dich!)
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:
- Alice möchte Bob eine Nachricht schicken
- Alice holt sich Bobs öffentlichen Schlüssel (jeder kann ihn sehen)
- Alice verschlüsselt die Nachricht mit Bobs öffentlichem Schlüssel
- 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
Aber aus
RSA-Parameter:
- Schlüssellänge: mindestens 2048 Bit, besser 4096 Bit
- Langsamer als Symmetrische Verschlüsselung
- Wird meist nur für Schlüsselaustausch benutzt
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:
- Kleinere Schlüssel = weniger Speicher und Bandbreite
- Schneller als RSA bei gleicher Sicherheit
- Ideal für mobile Geräte und IoT-Geräte
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:
- Einwegfunktion - Aus dem Hash-Wert kann niemand die Originaldaten berechnen
- Kollisionsresistenz - Es ist praktisch unmöglich, zwei unterschiedliche Eingaben mit gleichem Hash-Wert zu finden
- Lawineneffekt - Die kleinste Änderung der Eingabe ändert den Hash-Wert komplett
- 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:
- Passwort-Speicherung - Websites speichern nur den Hash-Wert deines Passworts, nie das Passwort selbst
- Checksummen - Prüfen, ob eine heruntergeladene Datei korrekt ist
- Digitale Signatur - Signiert wird der Hash-Wert, nicht die ganze Datei
- Blockchain - Jeder Block enthält den Hash-Wert des vorherigen Blocks
Warum nicht direkt das Passwort speichern?
- Du gibst Passwort "geheim123" ein
- Server berechnet Hash-Wert: [02 - RESOURCES/Notes/SHA-256|SHA-256] = "a3f5b8..."
- Server speichert nur "a3f5b8..." in der Datenbank
- 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:
Einfach gesagt: Die Hash-Funktion wird zweimal angewendet und mit einem Schlüssel
Verwendung:
- API-Authentifizierung (z.B. bei REST-APIs)
- TLS-Verbindungen für Integrität
- JWT (JSON Web Tokens)
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
- Alice schreibt Nachricht "Überweise 100€ an Bob"
- Alice berechnet Hash-Wert der Nachricht: [02 - RESOURCES/Notes/SHA-256|SHA-256] = "a3f5..."
- Alice verschlüsselt den Hash-Wert mit ihrem privaten Schlüssel → Digitale Signatur
- Alice schickt: Nachricht + Digitale Signatur
Schritt-für-Schritt: Prüfen
- Bob erhält: Nachricht + Digitale Signatur
- Bob berechnet Hash-Wert der Nachricht: [02 - RESOURCES/Notes/SHA-256|SHA-256] = "a3f5..."
- Bob entschlüsselt Digitale Signatur mit Alice's öffentlichem Schlüssel → sollte "a3f5..." ergeben
- 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)
- Certificate Authority (CA) - Vertrauenswürdige Organisation, die Zertifikate ausstellt
- Root-Zertifikat - Die CAs, denen dein Browser/System vertraut
- Zertifikatskette - Hierarchie von Zertifikaten bis zur Root-CA
- Du besuchst https://bank.de
- Server schickt X.509-Zertifikat mit öffentlichem Schlüssel
- Zertifikat ist von CA "DigiCert" signiert
- Dein Browser prüft: Ist DigiCert eine vertrauenswürdige Root-CA? ✅
- Ist die Digitale Signatur der CA gültig? ✅
- 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):
- Alice und Bob einigen sich öffentlich auf Startwerte
und - Alice wählt geheime Zahl
, berechnet und schickt an Bob - Bob wählt geheime Zahl
, berechnet und schickt an Alice - Alice berechnet:
- Bob berechnet:
- Beide haben jetzt denselben geheimen Schlüssel
! 🎉
Warum ist das sicher?
Ein Angreifer sieht
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?
- Authentizität - Server beweist Identität mit Zertifikat
- Vertraulichkeit - Daten werden verschlüsselt übertragen
- Integrität - Daten können nicht unbemerkt verändert werden
TLS-Handshake - So läuft es ab:
- Client Hello: Browser sagt welche Verschlüsselungen er unterstützt
- Server Hello: Server wählt Verschlüsselung und schickt Zertifikat
- Schlüsselaustausch: Mit Diffie-Hellman oder RSA wird gemeinsamer Schlüssel erzeugt
- 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:
- TLS 1.2 - Aktueller Standard, PFS optional
- TLS 1.3 - Neueste Version, PFS verpflichtend, schnellerer Handshake
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:
- Einfach: Zwei Primzahlen multiplizieren:
⚡ - Schwer: Von
zurück zu und finden 🐌
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
geht es bei 0 los.
Notation:
Bedeutet:
Beispiele:
(wie 17 Uhr = 5 Uhr am Nachmittag) (Rest von 25 ÷ 7 ist 4) (100 mod 7 = 2)
Diskreter Logarithmus
Das Diskreter Logarithmus-Problem ist die mathematische Basis für Diffie-Hellman und ECC.
Das Problem:
- Einfach: Gegeben
, , , berechne ⚡ - Schwer: Gegeben
, , , finde sodass 🐌
Beispiel:
- Einfach:
- Schwer: Finde
, wenn (Antwort: , aber nur durch Ausprobieren!)
Elliptische Kurven
Elliptische Kurven sind spezielle mathematische Kurven mit einer Gruppenstruktur. ECC nutzt diese für sehr effiziente Kryptographie.
Kurven-Gleichung:
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.
Zufallszahlen und Entropie
Gute Zufallszahlen sind EXTREM wichtig für Kryptographie. Schlechte Zufallszahlen = unsichere Verschlüsselung.
Unterschied:
- Pseudozufallszahlen - Von Algorithmus berechnet, vorhersagbar wenn man den Startwert kennt
- Kryptographisch sichere Zufallszahlen - Nicht vorhersagbar, aus Entropie-Quellen (Mausbewegungen, Netzwerk-Timing, Hardware-Rauschen)
✅ 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! |
- 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:
- Verwende TLS 1.3 oder mindestens TLS 1.2
- Deaktiviere TLS 1.0 und TLS 1.1 (unsicher)
- Aktiviere Perfect Forward Secrecy (PFS)
- Verwende starke Cipher Suites (z.B. mit AES-GCM)
- Nutze HSTS (HTTP Strict Transport Security)
- 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:
- Signal-Protokoll - Wird in Signal, WhatsApp, Facebook Messenger benutzt
- PGP - Für verschlüsselte E-Mails
- Matrix - Offenes Protokoll für verschlüsselte Chats
VPN und IPsec
VPNs verschlüsseln deinen gesamten Netzwerk-Traffic. IPsec ist das Standard-Protokoll dafür.
IPsec-Modi:
- Transport Mode - Nur Daten werden verschlüsselt
- Tunnel Mode - Komplettes IP-Pakete wird verschlüsselt (für VPNs)
Moderne VPN-Protokolle:
- WireGuard - Sehr schnell, modernes Design, nur 4000 Zeilen Code
- OpenVPN - Etabliert, flexibel, aber komplex
- IKEv2/IPsec - Standard für Firmen-VPNs
Blockchain und Kryptowährungen
Blockchain kombiniert Hash-Funktionen, Digitale Signaturen und Proof-of-Work zu einem dezentralen, manipulationssicheren System.
Wie Blockchain Kryptographie nutzt:
- Hash-Kette - Jeder Block enthält Hash-Wert des vorherigen Blocks
- Digitale Signatur - Transaktionen werden mit ECDSA signiert
- Merkle-Tree - Effiziente Verkettung vieler Transaktionen mit Hash-Funktionen
- Public Key = deine Bitcoin-Adresse (vereinfacht)
- Alice signiert mit ihrem privaten Schlüssel: "Sende 0.5 BTC an Bob"
- Netzwerk prüft Digitale Signatur mit Alice's öffentlichem Schlüssel
- Miner packen Transaktion in Block
- 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:
- 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!
Zusammenfassung 🎯
Die wichtigsten Punkte:
- Symmetrische Verschlüsselung (AES) = schnell, beide haben gleichen Schlüssel
- Asymmetrische Verschlüsselung (RSA, ECC) = löst Schlüsselaustausch, aber langsam
- Hash-Funktionen (SHA-256) = digitaler Fingerabdruck, Einbahnstraße
- Digitale Signaturen = beweisen Authentizität und Integrität
- Protokolle (TLS, Diffie-Hellman) = kombinieren alles zu sicherer Kommunikation
- In der Praxis: Verwende etablierte Bibliotheken, niemals selbst programmieren!
"Don't roll your own crypto!" - Verwende immer erprobte, standardisierte Verfahren und Bibliotheken. Kryptographie ist zu komplex, um sie selbst zu erfinden.