Das Unternehmen Kudelski Security Research stellt einen neuartigen Angriff auf ECDSA Signaturen vor. Doch was hat es damit auf sich?
Sehr spannend! Angenommen, man richtet einen Sparplan bei relai ein und lässt seine wöchentlich gekauften sats direkt in die eigene Hardware Wallet senden. Dafür muss man die Transaktion signieren und die Transaktion wird jeden Monat neu ausgelöst - immer wieder auf die selbe Adresse. Ist das ein Problem?
Weiters könnte man 4 Sparpläne einrichten, wenn die eigene Bank keine wöchentlichen Daueraufträge zulässt. So könnte man eben doch wöchentlich (4 mal pro Monat) sparen. Ich glaube mich allerdings zu erinnern, dass relai nur eine Adresse pro Bankkonto zulässt. Man müsste also alle vier Sparpläne auf die selbe Adresse laufen lassen, jede Transaktion allerdings separat signieren.
Kann es so zu dem angesprochenen Problem kommen?
-
Nein, weil das Thema mit Empfangen sowieso nichts zu tun hat. Du kannst so viele Eingänge auf deiner Adresse haben wie du willst, eine Signatur veröffentlichst du erst wenn du was ausgibst.
Natürlich muss Relai die Auszahlung an dich signieren, aber das kann dir doch egal sein.
-
Selbst wenn, dieser Angriff ist rein theoretisch. Das Fazit nach Lesen des Beitrags sollte sein dass du dir keine Gedanken machen sollst, erst recht wenn du eine Hardware Wallet nutzt.
Bei wöchentlichen Auszahlungen solltest du dir allerdings generell Gedanken um dein UTXO Management machen. Da sammelt sich über die Zeit ganz schön was an. Siehe: Was ist ein "Unspent Transaction Output" (UTXO) und was muss man beachten?
Danke @sutterseba! Das ist mir jetzt klarer. Trotzdem nicht unspannend. Ich zieh mir jetzt noch deinen UTXO Link rein
Das ist korrekt und stört mich auch, dafür ist das Verfahren einfach.
Darum nutze ich die Relai Wallet und transferiere die BTC nach dem Kauf weiter
oder neuerdings Pocket mit einer eigens dafüreingerichteten, eigenen Wallet, deren public key ich dafür an Pocket gesendet habe. Die Wallet für Pocket sollte dann auch ausschließlich dafür genutzt werden und auch von dort transferiere ich jeden Eingang sofort weiter, sodass die Wallet immer leer ist.
Nur wenn die notwendigen Voraussetzungen für dieses Problem erfüllt sind, ist z.B. eine digitale Signatur sicher.
Da fehlt irgendwas.
Ne, was fehlt da?
Jetzt raffe ich es. Zweimal gelesen und erst beim dritten Mal kapiert. Lag ein mir. Ist korrekt geschrieben.
Das ist mir erstmal zu einfach für mein Verständnis.
Wenn ich bei Relai einen Sparplan habe, transferiere auf eine öffentliche Adresse, die ich bei Relai signiert habe und konsolidiere hin und wieder UTXO aus dieser Adresse, dann wird das doch zu einem Problem oder nicht?
Wie verhält sich das, wenn ich einen Sparplan lösche und wieder einen neuen signiere und eine andere oder wieder die gleiche Adresse verwende?
Wie im Beitrag beschrieben, wird das überhaupt nicht zu einem Problem, solange du eine gescheite Wallet nutzt. Solange die Nonce für eine Signatur immer zufällig gewählt wird, findet der beschriebene Angriff keine Anwendung. Das ist bei allen gängigen Hard- und Software-Wallets der Fall.
Den Beweis dafür siehst du doch in Echtzeit. Würde jede zweite Wallet Noncen wiederverwenden oder z.B. einfach nur hochzählen, würden reihenweise Bitcoin gestohlen werden.
Das Ganze hat nichts direkt mit dem Verifizieren bei Relai zu tun.
Der Angriff ist – wie es im Beitrag steht – nur möglich, wenn beide dieser Voraussetzungen erfüllt sind:
-
Es liegen mehrere Signaturen vor, die zum gleichen Schlüssel gehören. Mit anderen Worten: Du hast oft von der gleichen Adresse Bitcoin ausgegeben (oder eine Nachricht bei Relai signiert).
-
Viel wichtiger: Die gewählten Noncen sind entweder identisch oder sind durch sonstige katastrophalen Implementierungen analysierbar „nahe“ aneinander.
Dass Punkt 1 bei dir zutrifft, ist nicht dramatisch, und eher ein Privatsphäre-Nachteil als irgendwas anderes.
Monatliche Auszahlungen sind sogar vom DCA besser, weil du früher mehr investierst. Das kannst du mit Rechnern im Internet selbst überprüfen. Man glaubt es nicht, ist aber so.
Die Idee eines DCAs ist aber eigentlich, dass man den besten Durchschnittspreis erzielt. Ich würde mich mal aus den Fenster lehnen und behaupten das ein Einmalinvestment (von mir aus auf Kredit) statistisch das schlauste ist.
DCA alle Millisekunden würde mir aber den besten Durchschnittspreis geben (Gebühren ausgeklammert)
Meine Aussage bezieht sich auf den besten Durchschnittspreis bei wöchentlichen oder monatlichen DCAs.
Ja und ich sage bei täglichen oder alle Millisekunden Einkäufen hat hat man einen besseren Durchschnittseinkaufspreis statistisch.
Ich meine nur dass es komisch ist, bei einem DCA größere Zeitabstände zu diskutieren. Denn dann kommt man darauf, dass villt ein Einmalinvestment schlauer ist…
Aber jetzt mal bezogen auf monatl. versus wöchentlich… ich habe mit dem Tool jetzt keine signifikanten Unterschiede bemerkt… auf welche Zeitrange beziehst du dich da?
Ich hatte 3-5+ Jahre gewählt. Bei den Beträgen hatte ich auch gespielt. Die Investments waren 400 - 1.000 € im Monat, wöchentlich oder monatlich verteilt. Der Vorteil des monatlichen DCAs war irgendwie meist da, aber nur marginal.
Dazu kommt selbst verständlich dein erwähnter Vorteil, dass wenn die UTXOs zu viel werden, die BTC-Gebühren steigen.
Ich muss hier nochmal nachhaken.
Mit Signatur ist das Ableiten der öffentlichen Adresse gemeint.
Die Signatur bei Relai hat nichts mit einer Nonce zu tun. Diese ist lediglich ein Hash aus der öffentlichen Adresse und der Nachricht von Relai und sonst nichts.
Ist das richtig?
Ich habe das Gefühl, dir fehlt das Grundverständnis, was eine digitale Signatur überhaupt ist. Hier eine sehr technische, aber sehr gute Erklärung wie ECDSA funktioniert: ECDSA | How To Create Public Keys and Signatures in Bitcoin
Auch auf der deutschen Wikipedia Seite sind die Abläufe schön dargestellt: Elliptic Curve DSA – Wikipedia
Nein, eine digitale Signatur hat erstmal nichts mit Bitcoin-Adressen zu tun.
Du möchtest mit einer digitalen Signatur im Kontext von Bitcoin beweisen, dass du den privaten Schlüssel für einen öffentlichen Schlüssel kennst, der z.B. in einem UTXO steht.
Dafür benötigst du eine Nachricht, die unterschrieben wird. Eine "gültige Signatur“ ist erstmal völlig wertlos, solange die signierte Nachricht deine gewünschte Behauptung nicht unterstützt.
Die Signatur selbst, also was das überhaupt ist, kann ich dir leider nicht in einem Satz technisch akkurat zusammenfassen, zumindest nicht in verständlichen Worten. Man könnte es vereinfacht als Zusammenspiel von verschiedenen mathematischen Zusammenhängen beschreiben: Der öffentliche Schlüssel hängt vom privaten Schlüssel ab. Die Signatur hängt von der Nachricht und dem privaten Schlüssel ab. Damit hängt die Signatur indirekt auch mit dem öffentlichen Schlüssel zusammen, womit die Verifizierung ermöglicht wird.
Jede ECDSA-Signatur hat etwas mit einer Nonce zu tun! Ich verstehe deinen ständigen Verweis auf Relai nicht. Technisch ist das genau das gleiche Prinzip.
Die Nonce ist einfach eine zufällige Zahl und wird benötigt, um auf der Elliptischen Kurve einen zufälligen Punkt zu wählen bzw. um allgemein Zufall in die Signatur einzuführen. Ich will jetzt nicht ins Detail gehen, aber der Punkt (lol) ist: Solltest du diesen Punkt mehrmals für unterschiedliche Nachrichten bzw. Signaturen benutzen, also die gleiche Nonce, kann man trivial auf den privaten Schlüssel zurückrechnen. Das ist dann einfach nur noch eine Rechenaufgabe, die ein Computer in einer Millisekunde gelöst hat.
Einen Hashwert über eine Adresse und eine Nachricht kann jeder bilden! Das hat nichts mit einer digitalen Signatur zu tun.
Zur Motivation von Digitalen Signaturen und um ein sehr grobes Verständnis zu bekommen, hatte ich hier mal ein bisschen was (nicht technisches) zusammengeschrieben:
Ich hatte extra das Kapital Adressen dazu in Mastering Bitcoin gestern und heute gelesen. Da war aber nirgends die Rede von einer Nonce. Dass man mit der Nonce dann den Punkt der elliptischen Kurve bestimmt, dachte ich mir, war mir aber nicht wirklich klar. Dann generiert eine gängige Hardware-Wallet jede öffentliche Adresse mit einer neuen Nonce.
Die Signatur bei Relai ist dann also keine. Korrekt? Relai stellt damit quasi nur sicher, dass die Adresse aus meiner Wallet ist und kein Tippfehler entsteht.
Jetzt kommst du schon wieder mit dieser „öffentlichen Adresse“… Nein, das hat doch damit überhaupt nichts zu tun. Du wirfst hier verschiedene Themen durcheinander.
Jede gängige Wallet generiert für jede digitale Signatur eine neue Nonce, richtig. Das ist die Definition von einer Nonce (Number used only once) und eine Voraussetzung von ECDSA.
Mit der Erzeugung von Schlüsseln und Adressen hat das aber nichts zu tun.
Da geht es auch nicht explizit um Signaturverfahren!
DOCH, NATÜRLICH!
Alles andere wäre völlig sinnfrei! Auf Tippfehler kann Relai auch durch die Prüfsumme achten. Durch die Signatur stellt Relai sicher, dass du den privaten Schlüssel der entsprechenden Adresse kontrollierst. Das hat regulatorische Gründe.