Nach Nordkurves Vortrag und einer längeren Nerd-Diskussion ist bei uns endlich der Groschen gefallen: Es gibt zwei verschiedene Bitcoin-Angriffsflächen.
1) Seed-Angriff: Man versucht die Seedphrase/Mnemonic zu erraten. Bei 12 BIP39-Wörtern sprechen wir über ca. 2^128 Entropie, also astronomisch groß, wenn die Wörter wirklich zufällig erzeugt wurden.
2) Public-Key-Angriff: Wenn der vollständige Public Key bekannt ist, kann man theoretisch direkt den zugehörigen Private Key auf secp256k1 angreifen. Die klassische Sicherheitsstärke liegt dort ebenfalls bei ungefähr 128 Bit. Man bräuchte ebenfalls unglaublich gute Computer und astronomisch hohe Mengen Energie. Dieser Angriff ist effizienter als das Seedphrase raten, da man bei weitem weniger Zwischenschritte im Ableiten durchläuft.
Der wichtige Unterschied: Ohne Public Key bleibt dem Angreifer eher nur: Seeds raten, Keys ableiten, Adressen prüfen. Mit Public Key wird ein direkter kryptographischer Angriff überhaupt erst möglich.
Relevant ist das in folgenden Fällen wo man den Public Key auf der Blockchain doxxt:
- alten P2PK-Outputs
- Address Reuse
- Taproot (wobei dort Schnorr, nicht ECDSA, genutzt wird)
Normalerweise bleibt dieser nämlich hinter einem Hash aus diesem verborgen, welcher der Bitcoin Adresse entspricht wo man die Bitcoin erhält.
Mein wichtigstes Learning: 12 zufällige Wörter sind nicht „zu wenig“ sie würden nicht angegriffen werden solange nicht die Bitcoin von Satoshi Nakamoto erfolgreich angegriffen worden sind, bei denen der Public Key bereits auf der Blockchain zu finden ist.
