Kryptografische Schlüssel erzeugen und aufbewahren

Code zum Erstellen und Ablegen kryptografischer Schlüssel ist nicht komplex, hält aber zahlreiche Fallstricke bereit.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
,
Lesezeit: 16 Min.
Von
  • Dr. Reinhard Wobst
Inhaltsverzeichnis

Bei der Implementierung von Kryptografie denken viele an Algorithmen, Protokolle und die Speicherverwaltung und übersehen dabei einen kritischen Punkt: das Erzeugen und Speichern der kryptografischen Schlüssel. Das ist ausgerechnet die Stelle, an der sich besonders einfach Hintertüren einbauen lassen.

Kryptografie vertiefen

Eine Datei per AES beispielsweise mit CBC- (Cipher Block Chaining Mode) oder GCM (Galois/Counter Mode) zu chiffrieren, klingt nach einer einfachen Aufgabe: Man nehme einen zufälligen Startblock, den sogenannten Initialisierungsvektor, einen zufälligen Sitzungsschlüssel und eine geprüfte Implementierung in der Sprache der Wahl, füttere sie mit Schlüssel, Startblock und Daten und erhält das Ergebnis.

Die tückische Frage lautet: Was heißt zufällig? Es gibt gute Zufallszahlengeneratoren, die man verwenden kann. Sie benötigen einen Startwert. Dazu bietet sich ein einen Zeitstempel an – und hier kann schon ein Trugschluss liegen. Der Autor sah mehrmals Programme, in denen die Tageszeit in Sekunden als Ausgangspunkt diente. Ein Tag hat jedoch nur 86.400 Sekunden. Unabhängig davon, was der Code mit dem Ausgangswert anstellen mag, können höchstens 86.400 verschiedene Ergebnisse herauskommen. Bis die Details dieser Schlüsselerzeugung bekannt sind, ist häufig nur eine Frage der Zeit. Anschließend lassen sich alle Schlüssel in wenigen Millisekunden durchprobieren.

Das war die Leseprobe unseres heise-Plus-Artikels "Kryptografische Schlüssel erzeugen und aufbewahren". Mit einem heise-Plus-Abo können sie den ganzen Artikel lesen und anhören.