3 ms·
> Interestingly, there was a lot of speculation and misinformation. So even on Hacker News, this topic is still only vaguely understood. This is not a new reve
by operator-name 4y ago
> Interestingly, there was a lot of speculation and misinformation. So even on Hacker News, this topic is still only vaguely understood.
This is not a new revelation, and a similar vulnerability is discussed in Mastering Bitcoin: https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch06.asciidoc#the-importance-of-randomness-in-signatures https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch06...
> The way I understand it, it makes it completely impossible to use Bitcoin in a trustless way. Even with an air gapped hardware wallet, you are always at the mercy of the wallet manufacturer and the delivery chain that gets the wallet to you. If it gets swapped out on the way to you, you are at the mercy of whoever swapped it out.
Bitcoin's threat model assumes assumes your client software follows specifications. Airgapped hardware wallets aren't designed to eliminate "Reflections on Trusting Trust". Assuming your scenario, the attack can be tested in a similar way to that outlined in "Fully Countering Trusting Trust through Diverse Double-Compiling" (https://dwheeler.com/trusting-trust/ https://dwheeler.com/trusting-trust/).
Under a better defined threat model, a construction can be made to effectively prove any data exfiltration scenario to be false.
In conclusion the issue your proposing is not an issue with bitcoin, but with computation in general. The word trustless in the context of cryptocurrencies has slowly been taken out of the context "trusted third parties" and evolved into an epistemological rather than pragmatic issue.
- afiori 4y agoThe device you own is a third party, the same way that the GCC binary you download is a third party. In both cases you can (probably) analyze the artifact (formal methods for the GCC binary, but I have no idea how to analyze a maliciously designed hardware) and detect the attack. In both cases it is practically infeasible. The only solution seems to be what you propose, you buy an old device from before bitcoins were invented and code a client there from scratch to validate that your wallet is using the proper nonces.