Asymmetrische Verschlüsselungsverfahren

6 Kernkonzepte
Die wichtigsten asymmetrischen Verschlüsselungsverfahren und Konzepte: RSA · ECC · Diffie-Hellman · PKI · Digitale Signaturen · OpenSSL Asymmetrische Verfahren verwenden ein Schlüsselpaar (öffentlich/privat) für Ver- und Entschlüsselung sowie für digitale Signaturen. Sie sind die Grundlage für sichere Kommunikation im Internet.

RSA – Rivest-Shamir-Adleman

RSA-2048 · RSA-4096
// RSA basiert auf der Faktorisierung großer Zahlen Öffentlicher Schlüssel: (e, n) Privater Schlüssel: (d, n) Verschlüsselung: c = m^e mod n Entschlüsselung: m = c^d mod n

RSA ist das bekannteste asymmetrische Verfahren und basiert auf der Schwierigkeit, große Zahlen in ihre Primfaktoren zu zerlegen. Es wird für Verschlüsselung, digitale Signaturen und Schlüsselaustausch verwendet.

RSA-Schlüssellängen

Schlüssellänge Sicherheitsniveau Empfehlung Anwendung
1024 Bit Unsicher (gebrochen) Nicht mehr verwenden Veraltet
2048 Bit Hoch (Standard) Empfohlen SSL/TLS, SSH, E-Mail-Verschlüsselung
3072 Bit Höher Für erhöhte Sicherheit Langzeitdokumente, Zertifikate
4096 Bit Maximal Für höchste Anforderungen Root-CAs, langfristige Speicherung
Beispiele (OpenSSL)
# RSA-Schlüsselpaar generieren (2048 Bit)
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
# Öffentlichen Schlüssel extrahieren
openssl rsa -pubout -in private.pem -out public.pem
# Datei mit öffentlichem Schlüssel verschlüsseln
openssl rsautl -encrypt -pubin -inkey public.pem -in datei.txt -out datei.enc
# Datei mit privatem Schlüssel entschlüsseln
openssl rsautl -decrypt -inkey private.pem -in datei.enc -out datei.txt
Tipp: RSA wird heutzutage meist mit 2048 Bit eingesetzt. Für zukunftssichere Anwendungen sollte 3072 Bit oder 4096 Bit verwendet werden. RSA ist langsam – für große Datenmengen wird oft hybride Verschlüsselung (RSA + AES) verwendet.

ECC – Elliptic Curve Cryptography

ECDSA · ECDH · Ed25519
// ECC basiert auf elliptischen Kurven Kurven: secp256k1, P-256, Ed25519 Sicherheit: 256 Bit ECC ≈ 3072 Bit RSA

ECC (Elliptic Curve Cryptography) bietet vergleichbare Sicherheit wie RSA mit deutlich kürzeren Schlüsseln. Das macht ECC schneller und speichereffizienter – ideal für mobile Geräte und IoT.

ECC vs. RSA

ECC (Bit) RSA (Bit) Sicherheitsniveau
160 Bit 1024 Bit Veraltet (unsicher)
224 Bit 2048 Bit Standard (gut)
256 Bit 3072 Bit Hoch (empfohlen)
384 Bit 7680 Bit Sehr hoch
512 Bit 15360 Bit Maximal
Beispiele (OpenSSL)
# ECC-Schlüsselpaar generieren (P-256 Kurve)
openssl ecparam -name prime256v1 -genkey -out private.pem
# Öffentlichen Schlüssel extrahieren
openssl ec -pubout -in private.pem -out public.pem
# Ed25519 Schlüsselpaar (modern, schnell, sicher)
openssl genpkey -algorithm ed25519 -out private.pem
# Öffentlichen Schlüssel extrahieren
openssl pkey -pubout -in private.pem -out public.pem
Tipp: ECC ist die Zukunft der asymmetrischen Kryptographie. Ed25519 ist die empfohlene Kurve für moderne Anwendungen – sie bietet hohe Sicherheit und Geschwindigkeit.

Diffie-Hellman – Schlüsselaustausch

DH · ECDH · DHE · ECDHE
// Diffie-Hellman ermöglicht gemeinsamen Schlüssel ohne Übertragung g: Basis (öffentlich) p: Primzahl (öffentlich) a: privater Schlüssel (Alice) b: privater Schlüssel (Bob) A = g^a mod pB = g^b mod ps = A^b mod p = B^a mod p

Diffie-Hellman ermöglicht zwei Parteien, einen gemeinsamen geheimen Schlüssel über einen unsicheren Kanal auszutauschen. ECDH ist die ECC-basierte Variante, DHE/ECDHE sind ephemer (kurzlebig) für Perfect Forward Secrecy (PFS).

Beispiele
# DH-Parameter generieren (2048 Bit)
openssl dhparam -out dhparam.pem 2048
# DH-Parameter anzeigen
openssl dhparam -in dhparam.pem -text -noout
# ECDH-Schlüssel generieren (P-256)
openssl ecparam -name prime256v1 -genkey -out ecdh.pem
# TLS mit ephemerem DH (OpenSSL Server)
openssl s_server -cert cert.pem -key key.pem -dhparam dhparam.pem -accept 4433
Tipp: ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) ist der bevorzugte Schlüsselaustausch für TLS – er bietet Perfect Forward Secrecy (PFS) und ist deutlich schneller als DHE.

PKI – Public Key Infrastructure

CA · Zertifikat · CSR · CRL
// PKI-Komponenten CA: Certificate Authority (vertrauenswürdige Instanz) CSR: Certificate Signing Request CRT: X.509 Zertifikat (öffentlich) CRL: Certificate Revocation List

PKI (Public Key Infrastructure) ist das System aus Zertifikaten, Zertifizierungsstellen und Richtlinien, das die Authentizität öffentlicher Schlüssel sicherstellt. Es ist die Grundlage für TLS/SSL, S/MIME und Code-Signing.

Beispiele (OpenSSL)
# CSR generieren (Certificate Signing Request)
openssl req -new -key private.pem -out request.csr -subj "/CN=example.com/O=Company/C=DE"
# Selbstsigniertes Zertifikat erstellen
openssl req -x509 -newkey rsa:2048 -keyout private.pem -out cert.pem -days 365 -subj "/CN=example.com"
# Zertifikat anzeigen
openssl x509 -in cert.pem -text -noout
# Zertifikat verifizieren
openssl verify -CAfile ca.pem cert.pem
Tipp: Für Produktionsumgebungen sollten Sie Zertifikate von einer öffentlichen Certificate Authority (CA) wie Let's Encrypt, DigiCert oder GlobalSign beziehen. Selbstsignierte Zertifikate sind nur für Tests geeignet.

Digitale Signaturen – Signieren & Verifizieren

RSA-Signatur · ECDSA · Ed25519
// Signieren: Daten mit privatem Schlüssel signieren Signatur = Sign(privater Schlüssel, Daten) Verifizieren = Verify(öffentlicher Schlüssel, Daten, Signatur)

Digitale Signaturen gewährleisten Authentizität, Integrität und Nichtabstreitbarkeit von Nachrichten. Sie werden mit dem privaten Schlüssel erstellt und mit dem öffentlichen Schlüssel verifiziert.

Beispiele (OpenSSL)
# RSA-Signatur erstellen (SHA-256 Hash)
openssl dgst -sha256 -sign private.pem -out datei.sig datei.txt
# RSA-Signatur verifizieren
openssl dgst -sha256 -verify public.pem -signature datei.sig datei.txt
# ECDSA-Signatur (P-256)
openssl dgst -sha256 -sign private.pem -out datei.sig datei.txt
# Ed25519-Signatur (modern, schnell)
openssl dgst -sign private.pem -out datei.sig datei.txt
# Ed25519 verifizieren
openssl dgst -verify public.pem -signature datei.sig datei.txt
Tipp: Verwenden Sie Ed25519 für moderne Signaturen – es ist sicherer und schneller als RSA und ECDSA. Für RSA-Signaturen sollte mindestens 2048 Bit mit SHA-256 verwendet werden.

OpenSSL – Praktische Befehle

genpkey · rsa · ec · req · x509 · dhparam · dgst
openssl genpkey # Schlüssel generieren openssl rsa/ec # Schlüssel verwalten openssl req # CSR erstellen openssl x509 # Zertifikate verwalten openssl dgst # Hashes & Signaturen

OpenSSL ist das wichtigste Kommandozeilen-Tool für Kryptographie. Es unterstützt alle wichtigen asymmetrischen Verfahren, Zertifikate und Signaturen.

Wichtige OpenSSL-Befehle
# RSA-Schlüssel (2048 Bit) generieren
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
# Öffentlichen Schlüssel extrahieren
openssl rsa -pubout -in private.pem -out public.pem
# ECC-Schlüssel (P-256) generieren
openssl ecparam -name prime256v1 -genkey -out private.pem
# CSR mit Schlüssel erstellen
openssl req -new -key private.pem -out request.csr -subj "/CN=example.com"
# Selbstsigniertes Zertifikat (1 Jahr)
openssl req -x509 -new -key private.pem -out cert.pem -days 365 -subj "/CN=example.com"
# Zertifikat-Kette prüfen
openssl verify -CAfile ca.pem -untrusted intermediate.pem cert.pem
# DH-Parameter generieren (2048 Bit)
openssl dhparam -out dhparam.pem 2048
Tipp: Für moderne Systeme sollten Sie ECC (insbesondere Ed25519) bevorzugen. 2048 Bit RSA ist jedoch weit verbreitet und wird noch lange unterstützt. Verwenden Sie openssl speed, um die Performance verschiedener Algorithmen zu testen.

Asymmetrische Verfahren im Überblick

RSA Faktorisierung großer Zahlen
2048+ Bit empfohlen
ECC Elliptische Kurven
256 Bit ≈ 3072 Bit RSA
Ed25519 Moderne ECC-Kurve
Schnell & sicher
DH/ECDH Schlüsselaustausch
DHE/ECDHE für PFS
PKI Zertifikate & CA
TLS, S/MIME, Code-Signing
Signatur Authentizität & Integrität
RSA, ECDSA, Ed25519

Quick Summary

RSA
Klassisches Verfahren
ECC
Moderne Alternative
ECDH
Schlüsselaustausch
PKI
Zertifikate
Ed25519
Moderne Signatur
openssl
Kommandozeile
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048 · openssl ecparam -name prime256v1 -genkey -out private.pem