Bei den im Artikel angesprochenen Angriffen war doch die Rede davon, dass bei einer manipulierten Wallet eine bestimmte und gleiche Nonce Information über die öffentlichen Adressen preis gibt. Die öffentlichen Adressen können ja üblicherweise nur einseitig errechnet werden, aber in diesem Fall dann auch irgendwann rückwärts.
Wann generiert denn der Ledger eine neue Nonce?
Beim errechnen einer öffentlichen Adresse oder auch, wenn ich über die Sparrow Wallet eine Adresse signiere? Wenn ich pro Adresse mehrmals signiere, wird dann immer die gleiche Nonce verwendet?
Ich weiß, dass du geschrieben hast, dass das Alles nur zum tragen kommt, wenn man öfters von gleichen Adressen sendet.
Danke für deine Geduld! Das ist Alles wirklich sehr interessant. Die Fragen sollte ja dann kein Zweiter stellen.
Eine Bitcoin-Adresse ist in der Regel nur ein Hash des öffentlichen Schlüssels mit ein bisschen Schmuck vorne und hinten. Nicht mehr und nicht weniger.
Dein Ledger und jede andere gescheite Bitcoin-Wallet generiert für jede digitale Signatur eine neue, effektiv zufällige Nonce, egal mit welchem Schlüssel signiert wird. Eine Wiederverwendung der Nonce wäre wie gesagt fatal und würde höchstwahrscheinlich sofort in gestohlenen Bitcoin enden.
Das betrifft jetzt wieder den spezifischen Kontext vom Beitrag bzw. diesem Angriff. Grundsätzlich ist eine Signatur unsicher, sobald ich die verwendete Nonce kenne. Das reicht schon, um den privaten Schlüssel zu berechnen.
In der Regel ist aber genau das nicht der Fall. Niemand kennt die verwendete Nonce und diese in Erfahrung zu bringen, ist mindestens genauso schwierig wie direkt die privaten Schlüssel zu kompromittieren (da diese in der Regel sowieso deterministisch voneinander abhängen).
Aber, für den Sonderfall, dass man mehrere Signaturen mit der gleichen Nonce erstellt, kann man sich diese durch ein bisschen Mathematik einfach ausrechnen und anschließend den privaten Schlüssel berechnen. Es ist einfach eine Möglichkeit, die Nonce in Erfahrung zu bringen, die in der Praxis durch einen Implementierungsfehler realistisch ist.
Und die von Dir zitierte Aussage stellt jetzt eben klar, dass dies im Kontext von Bitcoin nur Anwendung findet, wenn man mehrmals von der gleichen Adresse Bitcoin ausgegeben hat, da ansonsten nicht mehrere Signaturen mit dem gleichen Schlüssel vorliegen.
Das Fazit bleibt natürlich: Für den normalen Nutzer einer etablierten Bitcoin-Wallet gibt es keinen Grund zu Sorge, auch wenn man Adressen mehrmals benutzt. Das ist überhaupt kein Problem.
Weil das ein öffentlicher Schlüssel ist, der eine „Stufe höher“ im Ableitungsbaum sitzt. Aus diesem können beliebig viele weitere öffentliche Schlüssel abgeleitet werden, aus denen dann wiederum erst Adressen abgeleitet werden.
Theoretisch könntest du aber auch mit dem öffentlichen Schlüssel auf Accountebene, also wie der xpub, eine Adresse bilden. Das wäre dann halt eine Abweichung vom Standard.