libsodium: eine gegen Fehlverwendung robuste Kryptobibliothek
Erkunden Sie die bewusst restriktive API von libsodium, die es erschwert, unsichere Parameter auszuwählen.
libsodium: eine gegen Fehlverwendung robuste Kryptobibliothek ist eine kostenlose Cryptology Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cryptology Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.
Philosophie und Ursprung von libsodium
libsodium wurde von Frank Denis als portable, plattformübergreifende Variante der von Daniel Bernstein, Tanja Lange und Peter Schwabe entwickelten Bibliothek NaCl (Networking and Cryptography library) erstellt. Die zentrale Philosophie besteht darin, die korrekte Verwendung von Kryptografie so einfach wie möglich und eine falsche Verwendung so schwierig wie möglich zu machen. Sichere Standardeinstellungen, einfache APIs und bewusst festgelegte Algorithmen verhindern die häufigen Fehler, die bei Bibliotheken auf niedrigerer Ebene auftreten.
Authentifizierte Verschlüsselung mit geheimem Schlüssel
crypto_secretbox bietet authentifizierte Verschlüsselung mit geheimem Schlüssel mithilfe von XSalsa20-Poly1305. Die API erwartet eine Nachricht, eine 24 Byte lange Nonce (zufällig generiert) und einen 32 Byte langen Schlüssel. Das Ergebnis ist ein Chiffrat, das sowohl verschlüsselt als auch authentifiziert ist. crypto_secretbox_open entschlüsselt das Chiffrat und verifiziert das Authentifizierungs-Tag atomar; bei erkannter Manipulation wird ein Fehler zurückgegeben. Dadurch wird verhindert, dass beschädigte oder böswillig veränderte Chiffrate entschlüsselt werden.
Authentifizierte Verschlüsselung mit öffentlichem Schlüssel
crypto_box ermöglicht authentifizierte Verschlüsselung mit öffentlichem Schlüssel zwischen zwei Parteien mithilfe von X25519-XSalsa20-Poly1305. Mit dem privaten Schlüssel des Senders und dem öffentlichen Schlüssel des Empfängers verschlüsselt und authentifiziert die Funktion die Nachricht, sodass nur der vorgesehene Empfänger sie entschlüsseln und die Identität des Senders überprüfen kann. crypto_box_seal ist die anonyme Variante: Der Sender bleibt verborgen, und es wird nur Verschlüsselung, nicht jedoch eine Authentifizierung des Senders, bereitgestellt.
Digitale Signaturen mit Ed25519
crypto_sign implementiert digitale Signaturen mithilfe von Ed25519. Die Schlüsselgenerierung erzeugt einen 64 Byte langen privaten Schlüssel (tatsächlich einen Seed, der mit dem öffentlichen Schlüssel verkettet ist) und einen 32 Byte langen öffentlichen Schlüssel. Beim Signieren wird eine 64 Byte lange Signatur erzeugt. Die Verifizierung ist schnell und erfolgt in konstanter Zeit. Ed25519-Signaturen sind deterministisch: Dieselbe Nachricht und derselbe Schlüssel erzeugen immer dieselbe Signatur. Dadurch werden Sicherheitslücken aufgrund von Zufallsfehlern vermieden, die ECDSA in einigen Implementierungen betrafen.
Hashing mit BLAKE2b
crypto_generichash bietet Hashing für allgemeine Zwecke mithilfe von BLAKE2b. Anders als SHA-256 benötigt BLAKE2b für schlüsselbasiertes Hashing keine separate HMAC-Konstruktion, sondern akzeptiert direkt einen optionalen Schlüssel. Die Ausgabelänge kann zwischen 16 und 64 Byte eingestellt werden. BLAKE2b ist auf modernen 64-Bit-Prozessoren schneller als SHA-256 und SHA-512 und bietet dabei gleichwertige oder bessere Sicherheitseigenschaften.
Schlüsselableitung mit BLAKE2b
crypto_kdf ermöglicht die Ableitung von Schlüsseln aus einem Master-Schlüssel mithilfe von BLAKE2b. Ausgehend von einem 32 Byte langen Master-Schlüssel, einer Kontextzeichenfolge (8 Byte zur Identifizierung des Verwendungszwecks) und einer Subschlüssel-ID (64-Bit-Zahl) wird ein kryptografisch unabhängiger Subschlüssel mit konfigurierbarer Länge abgeleitet. So können Sie für unterschiedliche Zwecke mehrere unabhängige Schlüssel aus einem einzigen Master-Schlüssel ableiten, ohne dass eine Korrelation zwischen den abgeleiteten Schlüsseln besteht.
Passwort-Hashing mit Argon2id
crypto_pwhash bietet Passwort-Hashing mithilfe von Argon2id, dem Gewinner des Password Hashing Competition. Argon2id kombiniert speichergebundene Berechnungen, die Angriffen mit GPUs widerstehen, mit zeitintensiven Berechnungen, die Angriffen mit ASICs widerstehen. Zu den Parametern gehören ein Operationslimit (Zeitaufwand) und ein Speicherlimit, die an die Sicherheitsanforderungen angepasst werden können. crypto_pwhash_str erzeugt eine standardisierte, zur Speicherung geeignete Zeichenfolge, die den Algorithmus und die Parameter enthält.
Versiegelte Boxen für anonyme Verschlüsselung
crypto_box_seal verschlüsselt eine Nachricht für einen Empfänger, ohne den Sender preiszugeben. Die Funktion erzeugt ein temporäres ephemeres Schlüsselpaar, führt einen Schlüsselaustausch mit dem öffentlichen Schlüssel des Empfängers durch und verwirft anschließend den ephemeren privaten Schlüssel. Der Empfänger kann die Nachricht mit seinem privaten Schlüssel entschlüsseln, den Sender jedoch nicht identifizieren. Dies eignet sich für anonyme Übermittlungssysteme und unidirektionale verschlüsselte Kanäle.
Sprach-Bindings für libsodium
libsodium verfügt über Bindings für nahezu jede wichtige Programmiersprache. PyNaCl bietet idiomatische Python-Bindings mit Python-typischen Ausnahmen und Byte-Objekten. libsodium-wrappers stellt JavaScript-/Node.js-Bindings bereit (WASM für Browser). libsodium.js ist eine reine JavaScript-Portierung. Die Qualität der Bindings variiert: Bevorzugen Sie offizielle oder breit gepflegte Bindings, die die C-Bibliothek kapseln, anstatt die Algorithmen neu zu implementieren.
Vergleich mit der Low-Level-API von OpenSSL
Die Low-Level-API von OpenSSL erfordert explizite Entscheidungen über Algorithmen, Schlüssellängen, Modi, Padding und IV-Verwaltung. Falsche Kombinationen werden stillschweigend akzeptiert. libsodium stellt für jeden Anwendungsfall eine einzige korrekte Implementierung ohne erforderliche Konfiguration bereit. Beim Verschlüsseln mit OpenSSL müssen Sie beispielsweise Verschlüsselungsverfahren, Modus, Schlüsselableitung, IV-Erzeugung und Padding auswählen; mit libsodiums crypto_secretbox übergeben Sie einen Schlüssel, eine Nonce und eine Nachricht, während der Rest korrekt behandelt wird.
libsodium für neue Projekte auswählen
libsodium ist der empfohlene Ausgangspunkt für jedes Projekt, das in unterstützten Sprachen kryptografische Operationen benötigt. Die kleine API-Oberfläche verringert die Wahrscheinlichkeit einer fehlerhaften Verwendung, die Algorithmen sind modern und umfassend analysiert, und die plattformübergreifende C-Implementierung ist gründlich getestet. Der Wechsel zu einer Low-Level-Bibliothek wie OpenSSL sollte nur erforderlich sein, wenn Sie bestimmte, in libsodium nicht verfügbare Algorithmen benötigen oder eine FIPS 140-2-Validierung vorausgesetzt wird.
libsodium-Operationen
Welche libsodium-Funktion sollten Sie verwenden, um ein Passwort für die Speicherung in einer Datenbank zu hashen?
Zusammenfassung zu libsodium
Zusammenfassung zu libsodium: sichere Standardeinstellungen und eine schwer fehlerhaft zu verwendende API, aufgebaut auf den NaCl-Primitiven von Bernstein et al.; crypto_secretbox für Verschlüsselung mit geheimem Schlüssel (XSalsa20-Poly1305), crypto_box für Verschlüsselung mit öffentlichem Schlüssel (X25519), crypto_sign für Ed25519-Signaturen, crypto_generichash für BLAKE2b-Hashing, crypto_pwhash für Argon2id-Passwort-Hashing, versiegelte Boxen für anonyme Verschlüsselung und Sprach-Bindings für die meisten wichtigen Plattformen.
Häufig gestellte Fragen
Ist die Lektion „libsodium: eine gegen Fehlverwendung robuste Kryptobibliothek“ kostenlos?
Ja — der vollständige Text von „libsodium: eine gegen Fehlverwendung robuste Kryptobibliothek“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cryptology Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „libsodium: eine gegen Fehlverwendung robuste Kryptobibliothek“?
Erkunden Sie die bewusst restriktive API von libsodium, die es erschwert, unsichere Parameter auszuwählen. Du übst Cryptology Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cryptology Academy zu starten?
Keine Vorkenntnisse erforderlich. Cryptology Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „libsodium: eine gegen Fehlverwendung robuste Kryptobibliothek“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cryptology Academy-Lektion Code schreiben und ausführen?
Ja. Jede Cryptology Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- libsodium: eine gegen Fehlverwendung robuste Kryptobibliothek
- OpenSSL-API: zentrale Strukturen und Fallstricke
- Google Tink: sichere Kryptografie auf hoher Abstraktionsebene
- Kryptografische Abhängigkeiten prüfen und auswählen