3 ms·
> Interestingly, there was a lot of speculation and misinformation. So even on Hacker News, this topic is still only vaguely understood. Indeed - and thanks a
by csdvrx 4y ago
> Interestingly, there was a lot of speculation and misinformation. So even on Hacker News, this topic is still only vaguely understood.
Indeed - and thanks a lot for the link, that was a super interesting reading!
> The way I understand it, the wallet can chose from a large number of possible signatures and thereby signal many bits to its creator. In every transaction.
Isn't it possible to make that deterministic by adding some rank-ordering heuristic? (ex: always prefer the smallest numerical signature, or with the most consecutive numbers etc)
Then if 2 wallets from 2 different providers disagree, you would know there's a problem!
In a way, it would be doing like in reproducible software builts: controlling the randomness, except it would be done ex-post (ranking the possible choices and selecting one) instead of ex-ante (setting the clock etc).
If that's impractical, a simpler way may be to require the wallet to make say 100 possible signatures, but then randomize which one is used in another independent step.
Also, from the article:
>> “deterministic signing” means that at least one deterministic way to generate signatures exist. It does not imply that a signer can only generate one valid signature. Due to the nature of the signing algorithms, an observer cannot detect if a standard algorithm or a customization was used.
The core problem seems to be that the hardware device obfuscates the algorithm, which should be less of a problem with software you can compile.
> 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.
That's because of the above: you need to control for different things (ex: good source of randomness, correct implementation of the algorithm etc)
- jakelazaroff 4y ago> The core problem seems to be that the hardware device obfuscates the algorithm, which should be less of a problem with software you can compile. Can you trust your compiler, though? What if it changes the algorithm when it compiles your source code? (See also "Reflections on Trusting Trust" by Ken Thompson: https://www.win.tue.nl/~aeb/linux/hh/thompson/trust.html https://www.win.tue.nl/~aeb/linux/hh/thompson/trust.html)
- operator-name 4y agoSee "Fully Countering Trusting Trust through Diverse Double-Compiling" by David Wheeler: https://dwheeler.com/trusting-trust/ https://dwheeler.com/trusting-trust/
- operator-name 4y agoThis is exactly what is done! This was known about and discussed in 2013: https://bitcointalk.org/index.php?topic=285142 https://bitcointalk.org/index.php?topic=285142 At the end of the day nothing can be achieved if you don't have a trusted device to compare your untrusted device against. Bitcoin's threat model assumes that the client device is trusted.