Theoretische Grundlagen
Was ist Kryptographie
Kryptographie beschäftigt sich mit dem Schutz von Informationen. Dabei wird der Klartext in einen Geheimtext umgewandelt. Dafür wird ein geheimer Schlüssel verwendet, der nur autorisierten Personen bekannt ist.
Sogenannte Kryptographische Verfahren kommen in nahezu allen digitalen Kommunikations- und Datensicherungssystemen zum Einsatz, z.B. bei E-Mail-Verkehr, Speicherung von sensiblen Daten oder der Authentifizierung von Nutzern/Systemen (Zertifikate).
Verschlüsselungsverfahren
Moderne Kryptographie unterscheidet zwei grundlegende Arten der Verschlüsselung:
- Symmetrische Verfahren: Sender und Empfänger nutzen denselben geheimen Schlüssel zum Ver- und Entschlüsseln der Daten. Dieses Verfahren ist besonders schnell und effizient, setzt aber voraus, dass der Schlüssel sicher ausgetauscht wird. Beispiel: AES (Advanced Encryption Standard)
Vereinfachter Ablauf symmetrischer Verfahren
- Asymmetrische Verfahren: Hierbei existieren zwei verschiedene Schlüssel: Ein öffentlicher Schlüssel zum Verschlüsseln und ein geheimer privater Schlüssel zum Entschlüsseln. Der öffentliche Schlüssel kann frei verteilt werden, der private bleibt beim Eigentümer. Beispiele: RSA, ECC (Elliptic Curve Cryptography)
Vereinfachter Ablauf asymmetrische Verfahren
Weitere kryptographische Konzepte
Neben der reinen Verschlüsselung gibt es weitere Verfahren:
- Hashfunktionen: Hashes erzeugen aus beliebigen Daten einen eindeutigen Wert mit einer festen Länge (z.B. mit SHA-256). Hashes sind nicht umkehrbar und dienen u.a. zur Integritätsprüfung von Dateien und Nachrichten (z.B. checksum einer Linux Distribution).
- Digitale Signatur: Durch asymmetrische Kryptographie und Hashfunktionen lässt sich nachweisen, dass eine Nachricht von einem bestimmten Absender stammt und nicht verändert wurde.
- Schlüsselaustausch und Schlüsselmanagement: Damit man öffentlichen Schlüsseln trauen kann, braucht es gewisse Mechanismen:
- Keyserver: Öffentliche Schlüssel werden zentral gespeichert, aber ohne Echtheitsprüfung.
- Public-Key-Infrastruktur (PKI): Zertifizierungsstellen bestätigen die Echtheit öffentlicher Schlüssel.
- Web of Trust (WOT): Nutzer bestätigen gegenseitig ihre Schlüssel. Wird u.a. in GPG verwendet.
- WKD (Web Key Directory): Schlüssel werden über eine Domainstruktur automatisiert und verifizierbar bereitgeste
Ziele der Kryptographie
Moderne kryptographische Systeme verfolgen insbesondere vier Schutzziele:
- Vertraulichkeit: Nur berechtigte Personen können Informationen lesen (z. B. durch Verschlüsselung).
- Integrität: Es kann geprüft werden, ob Daten vollständig und unverändert sind (z. B. mit Hashes).
- Authentizität: Der Absender oder Urheber von Daten kann eindeutig identifiziert werden (z. B. durch digitale Signaturen).
- Verbindlichkeit: Der Nachweis, dass eine Aktion tatsächlich von einer bestimmten Person durchgeführt wurde, kann nicht nachträglich bestritten werden.
Kryptographische Verfahren/Systeme erfüllen nicht unbedingt alle gleichzeitig. Oft werden sie gezielt kombiniert, um den gewünschten Schutz zu gewährleisten.
GPG: The GNU Privacy Guard
GPG (GnuPG) ist ein freies Public-Key-Verschlüsselungsverfahren, das auf dem offenen OpenPGP-Standard basiert. Es ermöglicht die Ver- und Entschlüsselung von Daten sowie das Erzeugen und Prüfen elektronischer Signaturen. GPG wurde 1997 eingeführt und hat sich in vielen Bereichen etabliert, insbesondere in der E-Mail-Verschlüsselung (PGP/MIME) und beim Signieren von Softwarepaketen, wie etwa in den Paketmanagern der meisten Linux-Distributionen.
GPG unterstützt verschiedene Algorithmen zur Verschlüsselung, Signierung und Kompression. Welche konkret zur Verfügung stehen, zeigt der Befehl gpg --version
.
Ausgabe von gpg --version
(gekürzt)
Supported algorithms:Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSACipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224Compression: Uncompressed, ZIP, ZLIB, BZIP2
Die Pubkey-Algorithmen erzeugen das Schlüsselpaar, Cipher dienen der symmetrischen Verschlüsselung, Hashfunktionen prüfen die Integrität, und Kompression reduziert die Dateigröße vor der Verschlüsselung.
- Schlüsselverwaltung: Unterstützt Web of Trust, Keyserver, WKD
age: Actually Good Encryption
Age ist ein modernes (2019), minimalistisches Kommandozeilenwerkzeug zur asymmetrischen Datei-Verschlüsselung. Im Gegensatz zu GPG liegt der Fokus von age auf der einfachen und schnellen Verschlüsselung von Dateien, ohne den zusätzlichen Funktionsumfang von GPG. Age setzt auf moderne Kryptographie und zeichnet sich durch seine benutzerfreundliche Handhabung aus.
- Verschlüsselungsalgorithmen: X25519 + ChaCha20-Poly1305, Scrypt für passwortbasierte Verschlüsselung
- Schlüsselverwaltung: Nicht integriert
Basierend auf age gibt es eine in Rust implementierte alternative.
Grundbegriffe
- Klartext: Lesbare und unverschlüsselte Nachricht.
- Geheimtext: Geheime und verschlüsselte Nachricht.
- Verschlüsselung: Umwandlung von Klartext in Geheimtext.
- Schlüssel: Geheimnis eines kryptographischen Verfahrens.
- AES: Advanced Encryption Standard, basiert auf einem Substitutions-Permutations-Netzwerk.
- RSA: Erstes asymmetrisches Verschlüsselungsverfahren. Basiert auf Faktorisierungsproblem.
- ECC: Elliptic Curve Cryptography. Basiert auf dem mathematischen Konstrukt der elliptischen Kurve.
- Hash: Das Ergebnis einer Hashfunktion.