Kryptografie in Go

Die Programmiersprache Go eignet sich zur Implementierung kryptografischer Anwendungen. Für Passwort-Hashing und Zufallserzeugung empfehlen sich Zusatzpakete.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Kryptografie in Go
Lesezeit: 15 Min.
Von
  • Dr. Reinhard Wobst
Inhaltsverzeichnis

Die Vorzüge der Programmiersprache Go bestehen unter anderem in der Einfachheit, oft fast nicht messbaren Kompilierzeiten, einer leistungsfähigen und vor allem sicheren Implementierung von Nebenläufigkeit mit Channels sowie hoher Fehlersicherheit – nicht zuletzt dank meist kurzer und klarer Compilerfehlermeldungen. Für einfache kryptografische Anwendungen wie die symmetrische Verschlüsselung von Daten, selbst noch mit per RSA chiffriertem Sitzungsschlüssel, reichen bereits die Standardpakete aus. Für mehr gibt es Zusatzangebote aus dem Pool freier Go-Software im Netz.

Programmieren mit GO

Ein Demoprogramm soll die Chiffrierung eines Bytefelds mit AES im Counter Mode (CTR) zeigen. Dabei wird ein nicht geheimer, aber unbedingt zufälliger erster Block (Nonce) fortlaufend chiffriert und bei jedem Schritt inkrementiert, wobei man ihn als 128-Bit-Zahl auffasst. Der so entstehende Schlüsselstrom wird bitweise per XOR mit dem Klartext verknüpft und ergibt den Geheimtext.

Das Programm ist in folgendem Listing im Kern zu sehen und schnell erklärt: Die Nonce wird mit Zufallswerten von rand.Reader gefüllt und in den ersten Block des Geheimtextes geschrieben. aes.NewCipher(key) liefert eine neue Instanz einer Blockchiffre zurück, in der Algorithmus (AES) und Schlüssel enthalten sind. Alle Listings stehen auf den iX-Servern als Zip-Download bereit.