Skip to main content

Bitcoin in Gefahr? Was hat es mit der neuen ECDSA „Schwachstelle“ auf sich?

Am von

Das Unternehmen Kudelski Security Research stellte vorgestern, mit einer wissenschaftlichen Arbeit und einem Blog-Artikel, einen neuartigen Ansatz vor, um private Schlüssel aus sogenannten ECDSA Signaturen (die auch bei Bitcoin benutzt werden) wiederherzustellen. Da bereits die ersten Falschinformationen und irreführenden Schlussfolgerungen in den Medien kursieren, wollen wir mit diesem Beitrag verständlich beantworten, was es mit dieser Schwachstelle überhaupt auf sich hat und vor allem wie man das Ganze einordnen sollte. Ist das ganze wirklich eine Gefahr für Bitcoin und andere Kryptowährungen?

Wir stellen vor: #Polynonce, ein neuartiger Angriff gegen ECDSA. Heute veröffentlichen wir das Paper, die Geschichte, wie wir den Angriff auf Datensätze wie #Bitcoin durchgeführt haben und Code, sodass ihr den Angriff selbst durchführen und verifizieren könnt, dass eure Systeme nicht gefährdet sind.

@nathanhamiel

ECDSA

Der seit 2009 im Bitcoin Netzwerk eingesetzte Elliptic Curve Digital Signature Algorithm, kurz ECDSA, erweist sich schon lange als zuverlässiger Algorithmus für digitale Signaturen und findet auch weit über das Bitcoin-Netzwerk hinaus in diversen Protokollen Anwendung.

Wenn es um neue Schwachstellen bei solchen etablierten Systemen geht, ist meistens nicht das Verfahren selbst betroffen, sondern vor allem Fehler in dessen Implementierung, also wie das Verfahren in der Praxis tatsächlich angewendet wird.

Die Sicherheit von ECDSA beruht verallgemeinert auf dem sogenannten Diskreten Logarithmus Problem (DLP), also vereinfacht einem mathematischen Problem, welches vor allem bei großen Zahlen sehr schwierig zu lösen ist. Nur wenn die notwendigen Voraussetzungen für dieses Problem erfüllt sind, ist z.B. eine digitale Signatur sicher.

Nonce

Beim Erzeugen einer ECDSA Signatur spielt die sogenannte Nonce, also eine einmalig verwendete Zahl, eine entscheidende Rolle. Bei jeder neuen Signatur, die wir mit einem privaten Schlüssel unterschreiben, wird diese Nonce komplett zufällig generiert, nur ein einziges Mal verwendet und geheim gehalten. Zumindest sollte es so sein.

Veröffentliche ich die Nonce einer Signatur oder benutzte die gleiche Nonce mehrmals, kann man mit relativ einfachen mathematischen Operationen auf den privaten Schlüssel zurückrechnen und dann natürlich selbst gültige Signaturen erzeugen, um z.B. Bitcoin zu stehlen.

Es besteht also eine mathematische Beziehung zwischen der verwendeten Nonce und dem privaten Schlüssel, auf die man bei der Verwendung von ECDSA entsprechend aufpassen muss. Das ist eine allgemein bekannte Tatsache und erstmal keine Schwachstelle.

Polynonce

Der von Kudelski Security Research vorgestellte Angriff versucht, sich eben dieser Beziehung zwischen verwendeter Nonce und privatem Schlüssel auf clevere Weise mathematisch anzunähern. Wir wollen hier nicht zu sehr ins Detail gehen, halten aber fest, dass dafür bestimmte Bedingungen erfüllt sein müssen, um einen erfolgreichen Angriff wahrscheinlicher zu machen. Darunter primär das Vorliegen von mehreren Signaturen, die mit dem gleichen Schlüssel erzeugt worden sind.

Wo findet man solche Signaturen? Im Bitcoin Netzwerk!

Die Autoren haben sich also Bitcoin Core installiert und somit massig ECDSA Signaturen ergattern können, um ihren neuen Angriff auf die Probe zu stellen.

Dieser funktioniert stark vereinfacht folgendermaßen: Mit jeder Signatur lernt man ein bisschen mehr über das Verhältnis zwischen Nonce und privatem Schlüssel. Solange man die Nonce komplett zufällig wählt, ist dies kein Problem. Doch tut man dies nicht, kann man eine daraus resultierende mathematische Schwachstelle ausnutzen!

Das Ergebnis: Von stolzen 773 Signaturen konnte der private Schlüssel wiederhergestellt werden!

Aber…

Diese 773 Wallets waren ausnahmslos bereits leer geräumt. Die Autoren gehen davon aus, dass diese Wallets bereits von anderen gehackt wurden und schätzen die insgesamt gestohlene Summe auf 484 BTC, also zum heutigen Kurs ungefähr 10 Millionen Euro.

Jedoch haben alle 773 Wallets eine entscheidende Gemeinsamkeit:

„Interessanterweise konnten wir alle diese Wallets brechen, nicht wegen einer linearen oder quadratischen Rekurrenz [dem eigentlich neuen Ansatz], sondern weil mindestens eine Nonce in den Signaturen wiederverwendet wurde. Es sieht also nach dem klassischen Fehler von ECDSA Implementierungen, das Wiederverwenden der Nonce, aus.“

Polynonce: A Tale of a Novel ECDSA Attack and Bitcoin Tears
Der eigentlich neue Ansatz war also in der Praxis an dieser Stelle gar nicht wirklich erfolgreich, da die betroffenen Wallets sowieso schon durch wiederverwendete Noncen kompromittiert und damit extrem unsicher waren.

Also alles nur FUD?

Nein, eigentlich nicht. Die Autoren stellen hier durchaus einen interessanten Ansatz vor, um ECDSA Signaturen anzugreifen. Sie haben gar nicht das Ziel Panik zu schüren, sondern wollen lediglich darauf aufmerksam machen, damit man sich z.B. davor schützen oder das Thema weiter untersuchen kann. In der Theorie funktioniert der Ansatz auch wunderbar, nur sind die Voraussetzungen in der Praxis, glücklicherweise, relativ unrealistisch. Die Autoren kommunizieren das auch genau so.

In diversen Medienberichten wird das Thema allerdings sehr verzerrt und teilweise einfach objektiv falsch dargestellt. Das Erforschen und Austesten von Schwachstellen ist in der Kryptografie völlig normal und extrem wichtig. Umso verlockender ist es, die Alarmglocken zu läuten, sobald Begriffe wie „Angriff“, „Schwachstelle“ und „Bitcoin“ in einem Satz fallen. Es sollte an dieser Stelle also nochmal klargestellt werden, dass es keinen Grund zur Panik gibt!

Bin ich vor dem Angriff sicher?

Mit ziemlich sicherer Wahrscheinlichkeit: Ja!

Bei den oben betroffenen Wallets handelt es sich hauptsächlich um veraltete Wallets, mit einem offensichtlichen Fehler in ihrer ECDSA Implementierung, den man bei modernen Soft- und Hardware Wallets so nicht wiederfinden wird.

Was den Schutz vor dem neuartigen Ansatz angeht, sollte man folgende Punkte beachten:

  1. Bitcoin-Wallets nutzen in aller Regel qualitativ hochwertigen Zufall, sowohl für das Erzeugen der Schlüssel selbst, als auch für die Auswahl der Nonce. Hardware-Wallets wie die von Blocktrainer.de empfohlene BitBox02 nutzen außerdem „echten“ und nicht reproduzierbaren Zufall zur Schlüsselerzeugung (z.B. durch physikalisches Rauschen) und leiten die Nonce nicht nur aus dem eigenen Schlüsselmaterial, sondern auch mit zusätzlich bereitgestellten Daten des angeschlossenen Endgeräts ab (Anti-Klepto-Protokoll). Ein erfolgreicher Angriff auf eine Signatur wird damit vernachlässigbar unwahrscheinlich.

  2. Zu mehreren Signaturen mit dem gleichen Schlüssel (einer der Voraussetzungen) kommt es ohnehin nur dann, wenn man die gleiche Adresse für mehrere Zahlungen verwendet, wovon alleine zum Schutz der Privatsphäre sowieso abgeraten wird. Die meisten Wallets sind mittlerweile darauf ausgerichtet, einem stets neue und unbenutzte Adressen vorzuschlagen und daran sollte man sich nach Möglichkeit auch halten.

Seit dem Taproot Update ist ECDSA übrigens nicht mehr das einzige Signaturverfahren, welches im Bitcoin Netzwerk verwendet wird. Mit sogenannten Schnorr-Signaturen eröffnen sich ohnehin einige neue Möglichkeiten und Vorteile gegenüber ECDSA. Alle Bitcoiner können also diesbezüglich relativ sorglos in die Zukunft blicken.

Empfohlen für Bitcoin

BitBox02

  • Sehr einfache Handhabung
  • USB „Typ C“ Unterstützung
  • Zusätzliche Sicherheit durch „Bitcoin only“ Version
  • Kann mit eigener Fullnode betrieben werden
  • Komplett Open Source
  • Bietet die Option die Mnemonic Phrase selbst zu erstellen (würfeln)
  • Aufgrund der Richtlinien von Apple leider nicht mit iPhones kompatibel (mit MacOS aber schon)
  • Unterstützt (bewusst) nur wenige verschiedene Kryptowährungen
  • Die Mnemonic Phrase (24 Wörter) kann optional und sicher auf einer SD Karte gespeichert werden