12. Jun 2023
Lesedauer 5 Min.
Cryptography Libraries
Verschlüsseln und Entschlüsseln von Daten
Mit Verschlüsselungsbibliotheken unterbinden Sie das unerwünschte Auslesen, Verteilen und Manipulieren von Daten und Kennworten.

Immer dann, wenn Sie das unberechtigte Einsehen, Verarbeiten und Verteilen von (sensiblen) Daten unterbinden wollen und müssen, greifen Sie auf Kryptografiefunktionen zurück. Diese helfen nicht nur beim Verschlüsseln und Entschlüsseln von Daten, sondern auch bei der Generierung von Hashwerten. Letztgenannte werden zur Bestätigung von korrekten Kennworteingaben genutzt, ohne das tatsächliche Kennwort ablegen zu müssen.
.NET vor, wird permanent durch ein Entwicklerteam weiterentwickelt und unterliegt einer angepassten MIT-X11-Lizenz, die eine freie und umfassende Nutzung, Verteilung und Anpassung sicherstellt. Die Bibliothek nutzt eine angepasste Version der BZip2-Bibliothek, die ihrerseits der Apache-2.0-Lizenz unterliegt. Die bereitgestellte Funktionalität lässt keine Wünsche offen. Sie generieren und verarbeiten PKCS-12-Dateien, erzeugen und verarbeiten X.509-Zertifikate, verarbeiten PBE-Algorithmen (Password-based Encryption) und nutzen Algorithmen zur Signierung (zum Beispiel MD2withRSA, MD4withRSA, MD5withRSA, RIPEMD128withRSA). Ferner verarbeiten Sie symmetrische Schlüssel (wie AES, Blowfish, Camellia, ChaCha, DES, IDEA, Rijndael, Salsa20), symmetrische Schlüsselmodi (CBC, CFB, CTS, OFB, OpenPGPCFB, SIC), asymmetrische Schlüsselalgorithmen (etwa ElGamal, DSA, ECDSA, RSA) oder auch unterschiedliche Verarbeitungstypen (zum Beispiel MD2, MD4, MD5). Außerdem stehen Signiermechanismen bereit. Neben OpenPGP werden zudem die Cryptographic Message Syntax (CMS), das Online Certificate Status Protocol (OCSP) und das Time Stamp Protocol (TSP) unterstützt. Bouncy Castle kann per NuGet-Paket mit dem Namen BouncyCastle.Cryptography an eigene Projekte angebunden werden.www.bouncycastle.org/csharp
1
Eine der bekanntesten und funktional umfassendsten Open-Source-Bibliotheken für die Datenverschlüsselung ist Bouncy Castle. Die Bibliothek liegt in Fassungen für Java und.NET vor, wird permanent durch ein Entwicklerteam weiterentwickelt und unterliegt einer angepassten MIT-X11-Lizenz, die eine freie und umfassende Nutzung, Verteilung und Anpassung sicherstellt. Die Bibliothek nutzt eine angepasste Version der BZip2-Bibliothek, die ihrerseits der Apache-2.0-Lizenz unterliegt. Die bereitgestellte Funktionalität lässt keine Wünsche offen. Sie generieren und verarbeiten PKCS-12-Dateien, erzeugen und verarbeiten X.509-Zertifikate, verarbeiten PBE-Algorithmen (Password-based Encryption) und nutzen Algorithmen zur Signierung (zum Beispiel MD2withRSA, MD4withRSA, MD5withRSA, RIPEMD128withRSA). Ferner verarbeiten Sie symmetrische Schlüssel (wie AES, Blowfish, Camellia, ChaCha, DES, IDEA, Rijndael, Salsa20), symmetrische Schlüsselmodi (CBC, CFB, CTS, OFB, OpenPGPCFB, SIC), asymmetrische Schlüsselalgorithmen (etwa ElGamal, DSA, ECDSA, RSA) oder auch unterschiedliche Verarbeitungstypen (zum Beispiel MD2, MD4, MD5). Außerdem stehen Signiermechanismen bereit. Neben OpenPGP werden zudem die Cryptographic Message Syntax (CMS), das Online Certificate Status Protocol (OCSP) und das Time Stamp Protocol (TSP) unterstützt. Bouncy Castle kann per NuGet-Paket mit dem Namen BouncyCastle.Cryptography an eigene Projekte angebunden werden.www.bouncycastle.org/csharp
System.Security.Cryptography: Datenverschlüsselung in .NET
.NET stellt ein Kryptografiemodell mitsamt symmetrischen und asymmetrischen Ver- und Entschlüsselungs- sowie Hashwertalgorithmen bereit. Darüber generieren Sie Schlüssel, verschlüsseln und entschlüsseln Daten, generieren Hashwerte oder greifen auf spezielle Hardware-Komponenten zu, die sich der hardwareseitigen Verschlüsselung widmen (Hardware Encryption Devices). Alle kryptografischen Dienste werden über den Namensraum <em>System.Security.Cryptography</em> bereitgestellt.
2
Neben Bouncy Castle ist mittlerweile die Inferno Crypto Library die beste Bibliothek, wenn es um die Datenverschlüsselung geht. Sie unterliegt der MIT-Lizenz und wurde vollständig mit C# realisiert. In der umfassenden Online-Dokumentation werden nicht nur die Entwurfsprinzipien und Ziele zusammengefasst. Sie finden auch Hintergrundinformationen und C#-Quelltextbeispiele. Per High-Level-API verschlüsseln und entschlüsseln Sie Daten, berechnen Hashwerte, generieren Zufallswerte für die Verschlüsselung (CryptoRandom), leiten kryptografische Schlüssel ab (KDF, Key Derivation Function), PBKDF2 und SP800_108_Ctr), ver- und entschlüsseln Streams (AEAD Transform) und verarbeiten DSA-Signaturen. Die einfache Projektanbindung erfolgt über das NuGet-Paket Inferno.https://securitydriven.net/infernoNaCl.Core: Moderne Verschlüsselungsgrundfunktionen
Die Open-Source-Bibliothek NaCl.Core stellt neue Grundfunktionen und datenstrombasierte Verschlüsselungsgrundfunktionen bereit, darunter Salsa20, ChaCha20, XChaCha20, Poly- 1305, ChaCha20Poly1305 und XChaCha20Poly1305. Die verwaltete Lösung unterliegt der MIT-Lizenz, wurde mit C# realisiert und lässt sich einfach über ein NuGet-Paket in eigene Projekte einbinden.
3
Hashwertfunktionen sind Einwegfunktionen und nicht umkehrbar. Im Open-Source-Bereich stehen zur Hashwertberechnung unter .NET die Bibliotheken SharpHash, HashLib und acryptohashnet bereit. SharpHash unterliegt der Mozilla Public License in der Version 2.0 und hilft bei der Ermittlung von nicht kryptografischen (zum Beispiel AP, XXHash32, FNV64, Murmur2_64, MumurHash3_x64_128) und kryptografischen Hashwerten (etwa MD2, MD4, MD5, SHA-0, SHA-1, SHA-2, Grindahl, HAS160) sowie Prüfsummen (CRC, CRC3, CRC64 und Adler32).HashLib ist eine alternative Bibliothek, die mit C++ und C# entwickelt wurde und ebenfalls eine Vielzahl an 32-, 64- und 128-Bit-Hash-Algorithmen bereitstellt (beispielsweise Bernstein, Bernstein1, DEK, DJBJenkins3, Murmur2, Murmur3, ShiftAndXor, SuperFast, FNV, FNV1a, SipHash). Ebenso wie SharpHash stehen auch bei HashLib die bereits zuvor genannten Prüfsummenfunktionen bereit.Acryptohashnet ist eine weitere, vollständig in C# umgesetzte Hashwertbibliothek, die der LGPL-Lizenz in der Version 2.1 unterliegt. Sie ist unter .NET Standard 2.0 und dazu kompatiblen Plattformen nutzbar. Sie unterstützt alle wichtigen Hashwertfunktionen wie SHA0, SHA1, SHA2, SHA256, SHA512, MD2, MD4, MD5, RIPEMD, Tiger, Haval, Snefru.www.dotnetpro.de/SL2307HighFive14
Die Bibliothek StreamCryptor widmet sich der (a-)synchronen Ver- und Entschlüsselung von Datenströmen, die über Dateien bezogen werden (FileStream). Zu verarbeitende Dateien müssen dabei nicht komplett in den Speicher geladen werden. Dementsprechend gibt es auch keine Größenbeschränkungen für die zu verarbeitenden Dateien. Verschlüsselte Dateien nutzen das SCCEF-Format (StreamCryptor Chunked Encrypted File).Für die Serialisierung der Dateien wird auf die Google-Bibliothek protobuf zurückgegriffen. Alle Ver- und Entschlüsselungen werden mit der Bibliothek libsodium-net realisiert. Jede verschlüsselte Datei wird mit einem Header und Footer ausgestattet. Der Header enthält Versions- und Dateilängeninformationen sowie Dateinamen und Schlüssel. Der Footer verwaltet eine Prüfsumme, über die eine Dateimanipulation unterbunden wird. StreamCryptor adressiert das .NET Framework in der Version 4.5 und höher, unterliegt der MIT-Lizenz und kann per NuGet-Paket an Projekte gebunden werden.www.dotnetpro.de/SL2307HighFive2Crypto: Plattformübergreifende Dateiverschlüsselung in C#
Das in C# entwickelte Open-Source-Tool Crypto ist eine plattformübergreifende x86-Anwendung für das .NET Framework 2.0 und Mono. Es wird an der Eingabeaufforderung ausgeführt und erlaubt das (De-)Codieren, Verschlüsseln und Entschlüsseln von Dateien beliebiger Größe. Das Tool unterliegt der MIT-Lizenz und definiert 64 Bases, 35 Ciphers und 126 digestive (a-)symmetrische Algorithmen (darunter AWS, 3DES, DES, Blowfish, RC4, Salsa20, XSalsa20, ChaCha, PGP). Auch Hash- und Prüfsummenfunktionen stehen in großem Umfang bereit.