© DrHitch/Shutterstock.com
Kryptografie mit .NET

4 Die BouncyCastle-Bibliothek und Informationsverschlüsselung mittels Steganografie


Die in den beiden vorgestellten Implementierungen aus dem Hause Microsoft sind aus zweierlei Gründen nicht optimal: Zum einen sind sie abhängig von Microsofts Kodierern, zum anderen stehen die APIs unter Mono nur eingeschränkt zur Verfügung.

Beide Probleme lassen sich durch die Nutzung einer quelloffenen Bibliothek umgehen, die von einem Drittanbieter bereitgestellt wird. Die in Australien ansässige „Legion of the Bouncy Castle“ bietet mit ihrem gleichnamigen Produkt eine Lösung an, die sich sowohl im Java- als auch im C#-Bereich als „Quasistandard“ etabliert hat.

Bouncy Castle

Nach rund vier Jahren Wartezeit erschien eine neue Version der Bibliothek. Die Version 1.8 bringt diverse Änderungen an Algorithmen mit. Da das NuGet-Paket zum Zeitpunkt der Drucklegung noch nicht aktualisiert wurde, laden wir stattdessen die unter [1] bereitstehende DLL herunter (Abb. 4.1). Extrahieren Sie die Datei BouncyCastle.Crypto.dll danach an einen gut zugänglichen Ort.

hanna_4_1.png

Abbildung 4.1: Der „Bouncy Castle“-Downloadlink ist gut versteckt

Öffnen Sie im nächsten Schritt Visual Studio 2015 und erstellen Sie ein neues Projekt vom Typ Windows | Classic Desktop | WPF Application. Im Quellcode zu diesem Kapitel hört das Produkt auf den Namen SUSBouncy1, Sie können allerdings auch einen beliebigen anderen Namen vergeben.

Klicken Sie im nächsten Schritt den References-Ordner mit der rechten Maustaste an, um im Kontextmenü die Option Add Reference zu aktivieren. Nutzen Sie danach den unter Browse | Browse bereitgestellten CommonDialog zum Einpflegen der im vorigen Schritt extrahierten DLL.

Manche Versionen von Visual Studio „beklagen“ sich, wenn man eine aus dem Netz stammende Assembly in ein Projekt einbindet. Dieses Problem lässt sich im Explorer beheben: Klicken Sie die Datei rechts an, und öffnen Sie den in Abbildung 4.2 gezeigten Einstellungsdialog. Klicken Sie dort auf den Button Zulassen, und schon gehört die Assembly offiziell zu Ihrem Computer.

hanna_4_2.png

Abbildung 4.2: Dieser Knopf löst viele Probleme

Einfache Verschlüsselung

Als erste Aufgabe wollen wir BouncyCastle zur Implementierung einer AES-Verschlüsselung einspannen. BouncyCastle arbeitet – analog zum im vorherigen Kapitel besprochenen .NET-Crypto-API – mit generischen Klassen, die in einem Folgeschritt mit den zu verwendenden Algorithmen versorgt werden. Im Fall unseres Programmbeispiels handelt es sich dabei um PaddedBufferedBlockCipher, die als globales Member des Formulars entsteht:

public partial class MainWindow : Window
{...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang