Dark Skippy is a powerful method for a malicious signing device to leak secret keys.
With Dark Skippy, a malicious signer can use a modified signing function to efficiently and covertly exfiltrate their master secret seed by embedding it within transaction signatures.
This attack was discovered and discussed within the context of Bitcoin signing devices and hardware wallets, though it may be applicable to contexts outside of Bitcoin.
Dark Skippy requires a signer to be corrupted via malicious firmware. Dark Skippy has not yet been seen in the wild.
Dark Skippy is not an attack against any particular hardware
wallet/signing device and has not been seen in the wild; but rather is
is a general method that a malicious signing device could use to steal
your funds.
As long you are using a genuine device with honest firmware then it
should not be carrying out this attack. Ideally verifying open source
firmware against your vendor's public keys, many devices verify firmware
signatures automatically. You should ensure no one has the opportunity
to tamper with your device's firmware in-between uses.
See FAQ for more details.
It might be useful to refresh your knowledge of malicious signing attacks with our Taxonomy of Malicious Signer Attacks which includes a refresher on Schnorr signatures.
First, an attacker needs to corrupt a signing device:
The malicious signing firmware uses a signing function that differs from regular Schnorr signing:
The attacker scans the mempool for transactions with affected signatures
produced by the malicious signer.
Upon detecting an affected transaction, the attacker runs an algorithm
like
Pollard's Kangaroo algorithm
(hence the name Dark Skippy) on the signature's public nonces to solve
for the secret nonces.
Once solved, the attacker concatenates the results to reconstruct the
full 16 bytes of entropy that the malicious signer was trying to
exfiltrate.
This is the most rudimentary version of the attack but a sophisticated attacker is likely to enhance it so that only they can extract the seed. This can be done by blinding the nonce with an attacker controlled key embedded in the malicious device. Additionally, affected transactions can be watermarked so that the attacker can easily identify them on-chain.
An attacker who corrupts a signing device watches on-chain until they spot a watermarked transaction, unblind and invert the low entropy nonces to learn the master secret seed, then wait and steal the funds whenever they decide best. For the user, the attack is impractical to detect and difficult to forensically determine what has occurred.
Dark Skippy was discovered by Robin Linus in a
twitter discussion.
We investigated this attack as part of a security workshop we were
running for a conference and found it to be
even more effective than previously speculated, in that we were
able to extract a 12 word seed with minor computational resources. In
fact a decent laptop suffices to achieve what Linus claimed.
Nonce covert channel attacks have been publicly discussed (and mitigated) in the past, within Bitcoin contexts [1] [2] [3] so this attack does not represent a new vulnerability but rather a new way of exploiting an existing vulnerability.
We believe that Dark Skippy is now the best-in-class attack for malicious signing devices. So despite the attack vector not being new we deem disclosure to be worthwhile.
There are a number of existing mitigations including 'anti-exfil'
signing protocols which are offered by some signing devices. We also
have some new ideas for mitigations which require substantial developer
review and input.
See our
Mitigations page.
See our FAQ.
You should check out our Worked Example where we walkthrough a step-by-step example, extrating the seedphrase from the transaction in our demonstration video.
On the 8th of March 2024 we privately disclosed this attack to around 15
different vendors in order to collect feedback on threat relevance
within security models, our ideas for mitigations, and this disclosure.
Mitigations beyond those which already exist require substantial public
collaboration and review (e.g. additions to PSBT and signing
specifications), so rapid and subtle mitigation was deemed infeasible.
Further delaying the public release of this information is against the
interest of users who would like to mitigate this attack.
We will make our demonstrating code publicly available sometime around
September 2024. This code will provide functionality to build these
malicious signatures, identify affected transactions in the mempool, and
decode the exfiltrated seed words.
Lloyd Fournier, Nick Farrow, Robin Linus
Lloyd and Nick are
Co-Founders of an upcoming next-generation hardware wallet -
Robin works on
ZeroSync and BitVM among other things.
This work was self-funded and pursued with our passion for improving
security within the Bitcoin ecosystem, as well as academic interest. It
was also great fun 🦘.
Contact for requests, comments, press: contact@darkskippy.com
Alex Hanley for lending us his seedsigners and his work developing the device side python code for the seedsigner demo.
Tim Ruffing & Jonas Nick for their tips regarding a disclosure process, and conversations surrounding mitigations.
The hardware vendors who explained applicability of this attack within their security models, and feedback for our mitigation ideas.