--
You received this message because you are subscribed to a topic in the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/bitcoindev/aWYtPLVPZ3U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to bitcoindev+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/002f2395-7d5d-4cb6-852c-e991aa1f0eb3%40app.fastmail.com.
An obvious question to raise: would we consider tripwiring a 192 bit group break of a similar type (NUMS)? I find that ... plausible?
w.r.t. 'This guarantees that the NUMS point cannot predate G' yes based on SHA2 preimage resistance, but: isn't the real point that we're relying on SHA-2 not being a naughty function so that you couldn't find G = a * B and SHA2(G) = b*B for some base B in some feasible computation (sans CQRC of course, as was likely back then!). I have no idea what precise name you give to that property. OK, this is a ridiculous thing to discuss, perhaps, given when SHA2 and secp256k1 were standardized :) And given the encoding choices for our BIP341 NUMS (iirc the same as for Elements back in the day? using uncompressed encoding?) were able to be counted on the fingers of the hand which the sleeve does not cover :)
G = a * B. Just generate a key and invert your secret key.P = a * Gb*G = SHA256(G).G is fixed, we see SHA256(G) is also fixed as a pseudorandom challenge point. The reason for using SHA256 instead of, say, picking an arbitary point by committee or using digits of pi or some other trickery, is that hash outputs are supposed to be random and so SHA256(G) is (assumably) a random ECDLP challenge. This matches the classical definition of ECDLP more tightly: Given an arbitrary point P, find p such that P = p * G. The assumption is that if an attacker can factor an honestly-sampled challenge point, they can factor any point. SHA256 is just a stand-in for the "honestly-sampled" part.a such that a*G = lift_x(SHA256(G)).a and message m such that a*G = lift_x(SHA256(m)).m1 and m2, and compute ECDLP target points T1 = lift_x(SHA256(m1)) and T2 = lift_x(SHA256(m2)). Then if I sample a random scalar r and compute R = r*G, I have two potential chances of success: R == T1 OR R == T2. I can scale up this advantage by generating more targets, T3, T4, ... and so on.t and fix the target point T = t*G, then I can run a brute-force preimage search on SHA256 until I find m such that SHA256(m) == x(T). This can also be scaled up using a multi-target attack [1].m = G, and so the attacker can't use those multi-target cheat codes. They can parallelize, use pollard-rho or Shor or other algorithms, but they have only a single target point that they must break to win the game.OP_SHA256 OP_CHECKSIG as a canary, where any spend of such a script would trigger the canary. This would be multi-target ECDLP.G, find scalar a and 32-bit integer i such that a*G = lift_x(SHA256(G || i)).t and compute T0 = t * G, T1 = T0 + T0, and T2 = T1 + T1, and T3 = T2 + T2, etc. Why double each point? point doubling is cheaper than addition or multiplication, and still covers the whole curve. Then we run a multi-target SHA256 preimage search over all targets [x(T0), x(T1), x(T2), x(T3), ...]. If we have n targets and curve order N, then each message hash has an n/N chance of success. If we find a valid message m, such that SHA256(m) == x(R_i) for some target index i, then we have found T_i = t * 2**i * G = lift_x(SHA256(m)).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 bitcoindev+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/f6d78499-d551-45ea-89b1-2b9cbd52f5can%40googlegroups.com.
This is relevant because the hypothetical evil curve-generator who is trying to poison the future H=SHA2(G) has an easier time in doing so, than a future canary-solver who obviously cannot try different values of G :)
interesting point is that Shor can target any specific dlog problem, right. So I do think the ST is the correct version of the problem?
To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/fd947d7c-86fd-407c-98aa-0a63b8be28fan%40googlegroups.com.
I'm hesitant to say I support a 192-bit canary outright, but I like the idea and I think more research is needed to confirm whether it would work, or if such a system would be over- or under-sensitive (i.e. triggered too late by the first powerful quantum computer, or triggered exceptionally early by a classical attack). I'm especially interested in any attempts to estimate a rough time delta between the "secp192r is broken" and "secp256k1 is broken" events. I suppose that's more a question for the QC experts (not me). I'll have a go anyway.Based on logical qubit count estimates in the google paper (see page 7), a QC needs at least 4.5 * n qubits to crack a curve of n bits (with a practical Toffoli gate count). So secp192r1 might be broken by more than 192 * 4.5 = 900 logical qubits. Breaking secp256k1 requires at least 1200.So how difficult would it be for a QC to scale from 900 to 1200 qubits? If we assume QC scaling will follow moore's law (if it ever scales at all), then that's worrisome: less than half a doubling of margin. The first QC that breaks secp192r1 might very well also be able to break secp256k1.Also: I read the QCAP thread, and my initial impression is that using DLEQAG proofs to share the secret among a trusted group is overkill: If breaking a 192-bit curve such as secp192r1 suffices to prove "QCs are coming" and so activate a soft fork, then why go through the effort to map that statement to secp256k1? We can just use a secp192r1 canary proof on its own as a self-contained cryptographic statement published on-chain. Then the proof can use a NUMS point generated in some honest fashion, same as for secp256k1. Nodes could activate the canary as soon as they see the canary proof published anywhere on-chain (e.g. OP_RETURN). As discussed before in this thread, there's no need to tie the canary specifically to a Bitcoin UTXO being spent.regards,conduition
--
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 bitcoindev+...@googlegroups.com.
Oh wait, it's much simpler (not perhaps in character, but concretely): we don't need to talk about some general ZKP system here, right. If we all agree on a 192 bit curve, and a NUMS point on that curve, then in the OP_RETURN (say), we just need to put the point's dlog and consensus nodes only have to do a single scalar multiplication on that curve to verify.
Exactly. Also, the canary proof need not be the NUMS discrete log itself, it could also be a signature proving knowledge of the dlog without revealing it outright. Dlog exposure is simpler and faster to verify; Signature allows the first QC to identify itself later. (IDK if useful)
Right, so: the QCAP thread was about a canary rather than a full tripwire
While it's certainly possible it's actually triggered by a cooperative CRQC, that's not how I expect ECC disabling to happen (instead I expect a community consensus-changing effort, effected through Miner Lockdown or otherwise). The Tripwire just sets an unambiguous expectation that disabling is intended by Q-day.
I don't think the presence of a 192-bit canary changes this expectation much. 192-bit ECDLP broken (or breakable) is certainly a legitimate reason for panic, but nothing prevents that information from being used at the human layer without it needing to have been part of consensus rules.
Given broad progress across multiple hardware architectures, the safe assumption is that there may be little time between the breaking of 256-bit ECDLP and the breaking of 1024-bit ECDLP.
This makes me wonder about using a subgroup of a very related curve: for example y^2 = x^3 + 3 (mod 2^256-2^32-977) has a subgroup of order ~2^187.11, which would use all the same finite field arithmetic and almost the same multiplication logic (only doubling is affected). Keeping the field modulus the same does mean the q-bit count is unaffected though, only the gate count decreases (proportional to logarithm of group order). Like other weaker-curve constructions, I don't think this is worth it, but want to throw the idea out there.
I also don't think optimizing for multi-target ECDLP adds much.
From a simplicity standpoint, I think just having a "a UTXO with scriptPubKey X is spent" is ideal, because it reuses all existing block and transaction validation logic, and just adds a trivial trigger.
Hi all,
I'm unconvinced the complexity of a 192-bit canary is worth it. Picking a curve and a NUMS point on it are not hard, but very little of libsecp256k1's code can be reused (even field arithmetic is optimized specifically for the secp256k1 prime). A more generic implementation is possible of course, but it's still a pretty big piece of engineering for what is IMO very little gain.
There is a pretty fundamental difference between a secp256k1 Tripwire and a canary for weaker curves, in that the former isn't intended to be predictive. Its purpose is setting a codified upper bound on when ECC (within PQC output types) is expected to be disabled. While it's certainly possible it's actually triggered by a cooperative CRQC, that's not how I expect ECC disabling to happen (instead I expect a community consensus-changing effort, effected through Miner Lockdown or otherwise). The Tripwire just sets an unambiguous expectation that disabling is intended by Q-day.
I don't think the presence of a 192-bit canary changes this expectation much. 192-bit ECDLP broken (or breakable) is certainly a legitimate reason for panic, but nothing prevents that information from being used at the human layer without it needing to have been part of consensus rules.
Relatedly, something I don't know is how "similar" a canary needs to be to the real secp256k1 ECDLP for people to bother building/programming/running a QC for it. This is of course a question that exists for secp256k1 itself: whether a cooperative entity with the capability of building a secp256k1-ECDLP QRQC would bother doing so. But it's even more tenuous for weaker problems, if they're not so much weaker that they're trivial. This makes me wonder about using a subgroup of a very related curve: for example y^2 = x^3 + 3 (mod 2^256-2^32-977) has a subgroup of order ~2^187.11, which would use all the same finite field arithmetic and almost the same multiplication logic (only doubling is affected). Keeping the field modulus the same does mean the q-bit count is unaffected though, only the gate count decreases (proportional to logarithm of group order). Like other weaker-curve constructions, I don't think this is worth it, but want to throw the idea out there.
I also don't think optimizing for multi-target ECDLP adds much. My understanding is that Shor's doesn't benefit from multiple targets? I'm not opposed to giving freedom of finding (m,x) such that H(m) = x*G, but I don't see why that would encourage a cooperative CRQC to work on breaking it.
Regarding using the BIP-341 H itself as canary, I don't think that's a problem if the ECDLP break proof is a Schnorr signature (as opposed to revealing the DLP itself). But it also makes sense to be as conservative as possible here; it may make sense to make a selection of hash functions, feed them all as much input as possible (the genesis block is a good idea, the existing generator G, maybe a block hash from a time when the activation parameters are decided, or even a block hash when the block goes live as suggested by Tadge though that adds hash-to-curve logic to consensus too), and then XOR (or hash) all hash results together.
From a simplicity standpoint, I think just having a "a UTXO with scriptPubKey X is spent" is ideal, because it reuses all existing block and transaction validation logic, and just adds a trivial trigger. It's not compatible with any weaker curve construction of course, or with AJ's H-dependent DLP proof which could enlist non-cooperative CRQC, but I don't think that's worth complicating matters for.
Cheers,
--
Pieter
--
You received this message because you are subscribed to a topic in the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/bitcoindev/aWYtPLVPZ3U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to bitcoindev+...@googlegroups.com.