Dan J. Bernstein: Krypto-Algorithmen sicher designen
Der Kryptograph Dan Bernstein fordert auf der Real World Crypto seine Kollegen auf, kryptographische Algorithmen so zu entwickeln, dass ein fehlerhafter Einsatz vermieden wird. Es sei keine gute Idee, immer den Programmierern die Schuld zu geben.

"Der arme Nutzer erhält ein Seil, mit dem er sich selbst erhängen kann - das ist etwas, was ein Standard nicht tun sollte" - dieses Zitat ist über zwanzig Jahre alt (1992) und stammt von Ron Rivest, einem der Erfinder des RSA-Standards. Dan Bernstein, bekannt unter seinem Kürzel DJB, nutzt es als Einleitung, um seinen Kollegen auf der Real-World-Krypto-Konferenz in London zu erläutern, wie seiner Ansicht nach Algorithmen oft falsch entwickelt werden. Rivests Zitat bezog sich auf die Standardisierung des DSA-Verfahrens (Digital Signature Algorithm) in den frühen 90er Jahren.
DSA und schlechte Zufallszahlen
- Dan J. Bernstein: Krypto-Algorithmen sicher designen
- Seitenkanalangriffe auf AES
Der DSA-Algorithmus hat eine besonders problematische Eigenschaft: Zum Erzeugen einer Signatur benötigt man eine Zufallszahl k, die sich niemals wiederholen darf. Denn wennn für zwei unterschiedliche Signaturen dieselbe Zahl k verwendet wird, hat das katastrophale Folgen: Mit einigen sehr einfachen Rechenschritten kann ein Angreifer dann den privaten Schlüssel berechnen. Rivests Kommentar von 1992 bezog sich auf diese Eigenschaft von DSA. Auch das ECDSA-Verfahren hat diese Eigenschaft. ECDSA ist eine Weiterentwicklung von DSA und basiert auf elliptischen Kurven.
Die Konsequenz: Wer DSA verwendet, muss darauf achten, dass ein guter Zufallszahlengenerator verwendet wird. Doch die Erfahrung zeigt, dass Probleme in Zufallszahlengeneratoren häufig sind. Das ist kein rein theoretisches Problem. Sony ist dieser Fehler beim Code-Signing der Playstation 3 unterlaufen. Damit konnten Angreifer den privaten Schlüssel von Sony regenerieren, ein Angriff, der als Fail-Overflow-Exploit bekanntwurde. Auch Bitcoin hatte bereits Probleme mit dieser Eigenschaft des ECDSA-Algorithmus, etwa in einigen Android-Clients für Bitcoins. Da die Bitcoin-Signaturen in der Blockchain öffentlich sind, konnten Angreifer die fehlerhaften Signaturen aufspüren und die Bitcoin-Konten der Betroffenen leerräumen.
Laut Bernstein ist die übliche Reaktion auf derartige Fehler, den Programmierern die Schuld zu geben. Vertritt man aber die Ansicht von Rivest, ist das falsch: Vielmehr ist die Schuld Bernstein zufolge ein kryptographischer Standard, durch den Programmierern leicht solche Fehler unterlaufen. Für DSA und ECDSA gibt es inzwischen - fast 20 Jahre später - mit RFC 6979 eine Spezifikation, der für das k keinen Zufallswert, sondern einen aus der Nachricht und dem privaten Schlüssel berechneten Wert verwendet. Damit ist gewährleistet, dass bei unterschiedlichen Eingaben sich der k-Wert nie wiederholt. Auch der von Bernstein mitentwickelte Signaturalgorithmus Ed25519 verwendet ein derartiges Konzept zur Vermeidung des Zufallszahlenproblems.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Seitenkanalangriffe auf AES |
- 1
- 2
Der größte Angriffsvektor ist der Mensch, der keinen Bock darauf hat, Verschlüsselung...
Danke für den Hinweis, das war tatsächlich ein Fehler im Artikel. Ich habe das jetzt...