Hi all,

A [thread](https://groups.google.com/g/bitcoindev/c/7jkVS1K9WLo) was recently 
started on this list about cryptographic agility in Bitcoin. I believe there 
are important limitations around that idea, and wanted to offer my own 
perspective. It's more a philosophical consideration, and is not intended as an 
argument against (or for) any particular proposal today.

The idea is giving users/wallets the ability to choose the cryptographic 
primitives used to protect their own coins, from a set of available primitives 
that may change over time. I think this ignores how important it is what others 
do with their coins. If others' coins lose value, for example due to fears 
about them becoming vulnerable to theft with cryptographic breakthroughs, so do 
your own due to fungibility, regardless of how well protected they are.

As an extreme thought-experiment, imagine that tomorrow a new cryptographic 
signature scheme FancySig is published, with all the features that Bitcoin 
relies on today: small signatures, fast to verify, presumed post-quantum, 
BIP32-like derivation, taproot-like tweaking, multisignatures, thresholds, ... 
Further assume that within the next year or two, voices (A) start appearing 
arguing that such a scheme should be adopted, because it's the silver bullet 
the ecosystem has been waiting for. At the same time, another camp (B) may 
appear cautioning against this, because the scheme is new, hasn't stood the 
test of time, and isn't well-analyzed. These two camps may find themselves in a 
fundamental disagreement:

- Camp (A), fearing an EC-break (CRQC or otherwise), wouldn't just want 
FancySig as an option - they would want (feasible or not) that near-everyone 
migrates to it, because the prospect of millions of BTC in EC-vulnerable coins 
threatens their own hodling.

- Camp (B), fearing the possibility that FancySig gets broken soon, possibly 
even 
[classically](https://www.quantamagazine.org/post-quantum-cryptography-scheme-is-cracked-on-a-laptop-20220824/),
 don't want to just not use FancySig; they would want near-nobody to migrate to 
it, because the prospect of a potential break of FancySig threatens their own 
hodling.

This is of course an extreme scenario, and in reality the divergence between 
camps may be much less incompatible, but I still think it's a good 
demonstration of the fact that despite being a currency for enemies, Bitcoin 
essentially requires users to share trust assumptions in the cryptography, and 
its technology in general.

A small note aside: you can argue that it is possible for people to store coins 
insecurely, like in an OP_TRUE script output, or with private keys that are 
made public. I don't think this possibility affects the point above, because it 
is not about what possibilities exist, but which approaches people are likely 
to / asked to adopt. Nobody is incentivized or encouraged to store coins in an 
OP_TRUE.

It is also good to ask what amounts are relevant here, to which I do not know 
the answer. Possibly, the prospect of 100k BTC becoming vulnerable to theft 
won't threaten the value of the other coins, while the prospect of 10M BTC 
becoming vulnerable may. Depending on where your belief about this lies, you 
may end up with very different conclusions. Still, to me it is clear that some 
threshold exists above which I would be uncomfortable with seeing that many 
coins move into an untrustworthy scheme, even if they are not my own coins.

This brings us to the question then how at all Bitcoin users can migrate to new 
cryptography, because we cannot assume that secp256k1 will last forever. And I 
think the answer is essentially that it requires the entire ecosystem to change 
their assumptions. This does not mean that adding a new opt-in cryptographic 
primitive is infeasible or a bad idea; it just means that adding FancySig as an 
option is changing the collective security assumption from "secp256k1 is 
secure" to "secp256k1 AND FancySig are secure" once FancySig gets adopted at 
scale, and the discussion about adding new primitives should be treated with 
the gravity that entails. And it means that disabling secp256k1 EC operations 
(or near-everyone migrating to FancySig, but I think that is unlikely) is the 
only way to change the collective security assumption from "secp256k1 AND 
FancySig are secure" to "FancySig is secure".

Because of that, if CRQCs or other EC-breaks become reality, or just the fear 
about them becomes significant enough, I do believe that disabling EC opcodes 
will be necessary in any economically-relevant surviving chain, due to the 
millions of BTC that are unlikely to ever move. Note that I am not arguing that 
"Bitcoin" will, should, or even can do this, and I'm quite sure that the 
inherent confiscation required will make the result uninteresting to me 
personally. It may be that such disabling only happens in a fork that doesn't 
end up being called Bitcoin, or it may be that this happens only after a CRQC 
has been demonstrated to exist. Still, given a severe enough threat I think it 
is inevitable, and I think that this means we shouldn't worry too much about 
what happens in chains in which EC is not disabled while simultaneously EC is 
considered insecure: such chains will be worthless anyway.

--
Pieter

-- 
You received this message because you are subscribed to the Google Groups 
"Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/bitcoindev/THqOJuI_s5C8B9jkklN73BB_Hzb9SsiLM6BFp4zFP3zWQoRevKoLVspdwjwh8NxxYbXwv4v6ikpStguW-QEvef4WgBZ7AQDz00P0st91FMA%3D%40wuille.net.

Reply via email to