-
m-relay
<rucknium:monero.social> MRL meeting in this room in two hours
-
m-relay
<rucknium:monero.social> Meeting time!
monero-project/meta #1138
-
m-relay
<rucknium:monero.social> 1) Greetings
-
m-relay
<chaser:monero.social> hello
-
m-relay
<vtnerd:monero.social> Hi
-
rbrunner
Hello
-
m-relay
<articmine:monero.social> Hi
-
m-relay
<jberman:monero.social> *waves*
-
m-relay
<rucknium:monero.social> 2) Updates. What is everyone working on?
-
m-relay
<syntheticbird:monero.social> Hello
-
m-relay
<rucknium:monero.social> me: Finishing up milestone 3 of my OSPEAD CCS.
-
m-relay
<rucknium:monero.social> jeffro256 in case you need a meeting time reminder.
-
m-relay
<vtnerd:monero.social> working on typing another ccs, I’ll likely finally do another one soon
-
m-relay
<rucknium:monero.social> 3) Discussion: Post-quantum security and ethical considerations over elliptic curve cryptography
monero-project/research-lab #131
-
m-relay
<rucknium:monero.social> I think jeffro256 wanted to discuss something about Carrot and its extra bits when self-sending.
-
m-relay
<syntheticbird:monero.social> Last time Jeffro talked about
monero-project/research-lab #106, as being a quick solution to get post quantum security for monero. However, i still agree with kayabanerve, i hate this UX
-
m-relay
<jberman:monero.social> my update: continuing integrating FCMP++ prove
-
m-relay
<syntheticbird:monero.social> I think compared to december meeting, we stoped talking about economic viability/amount security with a QC. Afaik FCMP++ doesn't prevent a QC to double spend, iiuc the switch commitment revision for Carrot doesn't address this or help at addressing this?
-
m-relay
<rucknium:monero.social> I thought that the Carrot switch commitments were proposed to help prevent quantum counterfeiting, in combination with more steps that would have to be taken.
-
rbrunner
I don't remember anything so specific about these things, thus I am no help there ...
-
m-relay
<rucknium:monero.social> With the proposal in MRL issue 106, all transactions would have to have off-chain communication, right? It could not be opt-in like Carrot, correct?
-
m-relay
<chaser:monero.social> FCMP++/Carrot *alone* can't prevent quantum counterfeiting. I think Jeffro talked about modifying Carrot to prepare the future introduction of switch commitments.
-
m-relay
<syntheticbird:monero.social> Chaser Rucknium, yes, switch commitment is here to prepare a migration to a pq resistance for amount. But I don't remember it addressing the double spend issue, since a QC can forge two outputs with the same key image.
-
m-relay
<vtnerd:monero.social> why the sudden concern about QC? the hype over recent Google claims? Haven’t they always over-stated QC capabilities (scammers)? Anyway switch commitments don’t really help with counterfeiting unfortunately. They simply allow us to safely “reveal” amounts as we transition to a new system
-
m-relay
<syntheticbird:monero.social> Yes.
-
m-relay
<syntheticbird:monero.social> Anticipating worst case scenario. Kayabanerve and other share these concerns. We also have to assume governments might have better advancements in quantum computing than private companies.
-
m-relay
<rucknium:monero.social> vtnerd: From what I've observed, you can almost draw a separating line between those who are concerned about QC and those who are not, based on age.
-
rbrunner
Based on age? Indeed?
-
m-relay
<rucknium:monero.social> This is my observation as a social scientists hahaha
-
m-relay
<rucknium:monero.social> Age is strongly correlated with experience, of course
-
rbrunner
So old people must mostly not fear those QC, because I am firmly in that camp :)
-
m-relay
<jeffro256:monero.social> So sorry I'm late....
-
rbrunner
But well, what was described seemed like a pretty cheap thing to have, in comparison, which would help just in case they do arrive
-
m-relay
<syntheticbird:monero.social> To copy what i said in my mrl issue. It's not a matter of "will we be ready for QC era" but also "we should be ready N years prior to avoid people being in trouble in face of law retroactively, as the current blockchain will be transparent"
-
m-relay
<syntheticbird:monero.social> In most countries the statute of limitations is of minimum 10 years
-
m-relay
<chaser:monero.social> vtnerd: I think Kayaba's recommendation in their stepping-back note is what created this momentum for the QC theme. personally, I was always concerned, and I think any opportunity is the best yet to start tackling the potential threat.
-
m-relay
<syntheticbird:monero.social> so we should be PQ 10 years before
-
m-relay
<vtnerd:monero.social> and to clarify on my previous comment, old amounts are “statistical bound” (via hash) to a value, so you cannot create money in old transactions, assume hashes are not broken by QC. IIRC, you could theoretically inflate _just before_ the turnstile/reveal was made mandatory
-
m-relay
<vtnerd:monero.social> so presumably this is why some people dont like switch commitments, a secret ECDLP solver is still wrecking havoc
-
m-relay
<articmine:monero.social> I don't see a reason for panic, but given the likely timelines on our, realistically ~ 5 years minimum for a QC main chain HF starting the research and work now is just prudent.
-
m-relay
<articmine:monero.social> Our end
-
m-relay
<jeffro256:monero.social> Carrot has a 16 byte field per enote called the anchor which is required for normal transfers, but is unused for change outputs and other selfsends (when using the new Carrot key hierarchy). We can use this field to send encrypted transaction memos for free. The question is whether or not we should expose this feature to users to put arbitrary data in there, since a quantum comput<clipped messag
-
m-relay
<jeffro256:monero.social> er may come along and decrypt it at some point
-
m-relay
<vtnerd:monero.social> this is insane, we stopped seraphis for fcmp++ to suddenly just drop all the work?
-
m-relay
<syntheticbird:monero.social> ? we're not planning on dropping fcmp++
-
m-relay
<vtnerd:monero.social> ok, I guess just some people dropped out (temporarily), not the entire thing stopping. Misread the room a bit
-
m-relay
<vtnerd:monero.social> just skimmed through the Ruffing paper on QC, my understanding seems correct if others could follow it
-
m-relay
<chaser:monero.social> FCMP++ is still full steam ahead, from what I gather.
-
m-relay
<vtnerd:monero.social> *on switch commitments
-
m-relay
<rucknium:monero.social> AFAIK, the plan is still to activate FCMP, hopefully this year. kayabaNerve suggested that after its activation, non-QC-resistant cryptography should not be on the Monero research agenda. Instead, QC-resistant cryptography should be researched.
-
m-relay
<chaser:monero.social> I would be for not exposing that field for such. broken crypto and security bugs could both make a lot of privacy mess out of on-chain memos.
-
m-relay
<jeffro256:monero.social> Switch commitments alone can't prevent counterfeiting in Monero, we also nee the key images to be intact. However, they are a crucial component of preventing counterfeiting in the future
-
m-relay
<kayabanerve:matrix.org> vtnerd: The issue today is to set up integrity even against a QC. There's minimal changes which can be made now which prevent a QC from counterfeiting years from now, and means anyone who uses a wallet made next year won't be at risk at having their funds burnt.
-
m-relay
<kayabanerve:matrix.org> Yes, the old protocol has to be turned off before a QC becomes active for integrity. The migration scheme would withstand a QC.
-
rbrunner
I don't remember, was the hope that we could get those switch commitments into "the" hardfork to FCMP++, in about a year?
-
rbrunner
If we don't take too long to research and decide of course ...
-
m-relay
<vtnerd:monero.social> yes, I think the plan was to incorporate switch commitments into the fcmp++ fork
-
m-relay
<kayabanerve:matrix.org> The rest can be done without a hard fork.
-
m-relay
<jeffro256:monero.social> This is correct: mainly switch commitments + key image binding proofs would prevent counterfeiting. Then, we also need PQ resistant proofs of opening of pubkeys to prevent theft
-
m-relay
<jeffro256:monero.social> But strictly speaking, if we didn't care about theft, just inflation, we just need switch commitments and key images to be statistically binding
-
m-relay
<kayabanerve:matrix.org> jeffro256: If the 16 bytes is only for change outputs and uses a key not at risk to a quantum adversary who has your address, I don't see the issue.
-
m-relay
<kayabanerve:matrix.org> If a quantum adversary with your address can recover these messages, I don't believe we should represent Monero as a private messenger, even njst to yourself. It's reckless and unsafe.
-
m-relay
<kayabanerve:matrix.org> *just to yourself
-
rbrunner
Maybe it will be a bit hard to become *really* sure those switch commitments do what we hope for, but maybe we could ask the opposite question: Could something go seriously wrong if we add them?
-
rbrunner
Right now we don't have any candidates for something else to add instead, do we?
-
m-relay
<rucknium:monero.social> jeffro256: Say I'm a merchant. My database gets corrupted and I have to sync my wallet from its seed words. I hope to recover my accounting records as much as possible. Could those 16 bytes help me at all? AFAIK, the status quo is that I lose the addresses that I sent funds to.
-
m-relay
<rucknium:monero.social> By "database" I mean wallet cache file and associated records in my payment system.
-
m-relay
<kayabanerve:matrix.org> rbrunner: it's an additional hash of the randomness. It can't go wrong. We also can prove the scheme secure for an adversary who can't find preimages to a hash function (chosen collision).
-
m-relay
<rucknium:monero.social> Or maybe just the wallet cache
-
m-relay
<jeffro256:monero.social> Switch commitments could definitely be part of a solution that DOES allow for mitigating of counterfeiting theoretically. And the changes that we have had to make to FCMP / Carrot aren't all that big IMO. For example, for our switch commitments, in Carrot, we just changed how the blinding factor was bound to certain information.
-
m-relay
<jeffro256:monero.social> The changes to output pubkeys will likely be similar: hash them a certain way that guarantees opening it and providing a preimage to the opening is computationally intractable even for a QC
-
m-relay
<jeffro256:monero.social> I definitely am not proposing we try to stuff PQ proving systems with actual PQ cryptography into the upgrade at the moment
-
m-relay
<jeffro256:monero.social> But cheap stuff like this which may (or may not) give us security in the future is just low hanging fruit IMO
-
m-relay
<kayabanerve:matrix.org> CARROT already implements the necessary output key derivation, no? It's changes to *address derivation* we'd need?
-
m-relay
<jeffro256:monero.social> > I don't remember, was the hope that we could get those switch commitments into "the" hardfork to FCMP++, in about a year?
-
m-relay
<jeffro256:monero.social> Much shorter than than, and it doesn't have to be a hard/soft fork decision, it can be completely off-chain loose consensus
-
m-relay
<jeffro256:monero.social> Yes
-
m-relay
<jeffro256:monero.social> > Maybe it will be a bit hard to become really sure those switch commitments do what we hope for, but maybe we could ask the opposite question: Could something go seriously wrong if we add them?
-
m-relay
<jeffro256:monero.social> Not AFAIK
-
rbrunner
Thanks for the clarifications. So I guess we go for them? (Maybe the decision was already taken, I just was too busy mentally to really get that)
-
m-relay
<kayabanerve:matrix.org> We can't change output derivation without synchrony across wallets? Wouldn't we need a hard fork to ensure that?
-
m-relay
<syntheticbird:monero.social> Reasking what i said at the end of last meeting. Would a PQ addressing protocol using KEM be possible? Afaik, serpahis-pq only made use of DSA, so i wonder.
-
m-relay
<kayabanerve:matrix.org> The point is switch commitments in this HF, as they need a HF, and the new address derivation later, as that doesn't need a HF.
-
m-relay
<kayabanerve:matrix.org> SyntheticBird: Completely different discussion to supply integrity.
-
m-relay
<syntheticbird:monero.social> Ah yes you are right, sry :p
-
m-relay
<jeffro256:monero.social> It couldn't help with this specific problem without adding additional data. We could derive the ephemeral private keys deterministically, which is also a piece of data that gets lost after a wallet cache is lost. The ephemeral private keys can be used to proving that you *sent* payments to another address. However, you still need the public address on-hand. If your wallet cache ge<clipped messag
-
m-relay
<jeffro256:monero.social> ts corrupted, and you don't know the address, then you're in the same position. But if you would've known the address, just not the ephemeral private keys, then deterministic derivation of those keys would help you on a corrupted wallet cache
-
m-relay
<jeffro256:monero.social> But that doesn't require this 16-byte field
-
m-relay
<jeffro256:monero.social> And the field is too small to put a full Monero address in it
-
m-relay
<jeffro256:monero.social> So TLDR no
-
rbrunner
I think we should leave those 16 bytes in peace. Yes, they are there for free, but using them would complicate things, and it could entice some people to do unfortunate things
-
m-relay
<syntheticbird:monero.social> yeah i agree, no compelling reason to use them, more risk
-
rbrunner
As far as I remember we intend to carry the "traditional" tx_extra forward, so people can still play with that.
-
rbrunner
With those 16 bytes we would have two mechanisms then, right?
-
m-relay
<kayabanerve:matrix.org> The 16 bytes are fixed, unavoidable, and would be encrypted under CARROT so it isn't immediately the same.
-
rbrunner
Yeah, but also unused, unless I think of something for me personally?
-
m-relay
<jeffro256:monero.social> So it's encrypted by default to your view-balance secret, which is PQ resistant, as it is a uniform 32 byte secret only used in key derivation functions. But it's a 16-byte field, so it could be encrypted to anything, hence it's usability for transaction memos. It would have the same privacy implications characteristics as normal transfers: if a quantum computer could see your pub<clipped messag
-
m-relay
<jeffro256:monero.social> lic address, then they could calculate your private view-incoming key and decrypt the memo, as they can the amount received, the address received to, the payment ID, etc. I wonder if the temptation for doing it, with it being indistinguishable on-chain, will be so high that some wallets will implement it anyways.
-
m-relay
<jeffro256:monero.social> Quantum computers can already decipher which subaddress the payments go to even knowing just one address in the account
-
rbrunner
I think it will still make a difference how we label and comment that field, and what we "officially" recommend
-
m-relay
<kayabanerve:matrix.org> ACK for internal memos if we care, NACK external memos. Those schemes already largely suck in that they generally assume 2-output so the output the receiver didn't receive is the change output.
-
m-relay
<chaser:monero.social> so, practically, is this only about how the field is labeled?
-
m-relay
<jeffro256:monero.social> Basically. It's completely possible to use it this way, and we can't really stop it, it's just a matter of official support
-
m-relay
<rucknium:monero.social> Is there any benefit from officially supporting the 16 byte arbitrary data that will discourage "third-party" wallet implementors from doing it "badly", if it can be done badly? Or maybe the benefit is that I don't have to add the Nth private memos paper to moneroresearch.info because some researchers needed to "discover" another way to add private messaging to Monero.
-
rbrunner
Yes, like many other things that we could not stop. But what we can do is stating clearly that we don't recommend to use it, if we can agree on that.
-
m-relay
<chaser:monero.social> I generally assume all crypto to be broken on a long-enough time frame, so I encourage putting as little data into quasi-permanent storage as possible.
-
m-relay
<syntheticbird:monero.social> *16 bytes of arbitrary data, we recommend not using them and relying on tx_extra. This will be decrypted by a quantum adversary. cordially, Monero Project.*
-
rbrunner
Exactly :)
-
m-relay
<jeffro256:monero.social> Recommending tx_extra over this field is objectively worse since the memos would be *possibly* decrypted BUT guaranteed to be distinguishable on-chain trivially
-
m-relay
<chaser:monero.social> I think one of the first references to public key crypto was someone in the 19th century assuming that factoring a 10-digit number is intactable. we are those people for cryptographers in 2150
-
m-relay
<syntheticbird:monero.social> well, it's always a matter of buying time
-
rbrunner
I wait for people to produce 10 change outputs to have 160 bytes to use ...
-
m-relay
<chaser:monero.social> SyntheticBird I think that will do
-
m-relay
<chaser:monero.social> rbrunner: not under the max 8-out regime :)
-
m-relay
<rucknium:monero.social> Mordinals did something clever with brunt outputs and ring signatures, to show transfer of them. I guess Mordinals in the 16 bytes is unlikely since you could only put a hash there, not a full image, but is there anything about the 16 bytes that is not being considered that could make it more attractive to a Mordinal revival?
-
rbrunner
Duh ...
-
m-relay
<jeffro256:monero.social> But moving memos to a different part of the transaction doesn't magically make the encryption stronger, it just signals that you're definitely using this feature
-
m-relay
<syntheticbird:monero.social> Oh no no, i didn't meant that this would be safer, at the opposite; just signaling in the recommendation that they shouldn't expect a stronger encryption. You're still right on the deniability of extra data use.
-
m-relay
<jeffro256:monero.social> Not AFAIK over the 1060 bytes we already allow in tx_extra
-
m-relay
<syntheticbird:monero.social> 1080*
-
m-relay
<rucknium:monero.social> The 16 bytes is provably linked to a key, right? That's a little different from the data in tx_extra
-
m-relay
<chaser:monero.social> could this field be multiple times larger and then tx_extra, assuming some tweaks to the tx format, be deprecated?
-
rbrunner
But it's encrypted with a secret key? The receiver can't read it?
-
m-relay
<syntheticbird:monero.social> this would fall back into the discussion of whether deprecating tx_extra. What size should user be expecting. Also whether you are using it or not doesn't change the tx will be N time larger than it needs
-
m-relay
<syntheticbird:monero.social> If a lot of people were using tx_extra it would make sense to make every tx 64 bytes larger for uniformity, but right now tx_extra is rare
-
m-relay
<jeffro256:monero.social> Its 1060
-
m-relay
<syntheticbird:monero.social> If a lot of people were using tx\_extra it would make sense to make every tx 64 bytes larger for uniformity, but right now tx\_extra is rare afaik
-
m-relay
-
m-relay
<chaser:monero.social> oh, can of worms.
-
m-relay
<rucknium:monero.social> Isn't the receiver always yourself? So you could always read it. And if you give they key to someone else, they can read it
-
m-relay
<syntheticbird:monero.social> thx I literally looked at it yesterday but misread 👓️
-
rbrunner
I mean that tx_extra is a lot more flexible in this regard. You can even send things in the clear there
-
m-relay
<rucknium:monero.social> I am just trying to get some adversarial thinking about what a Mordinal reviver might want to do.
-
m-relay
<kayabanerve:matrix.org> FWIW unless there's an explicit use case posited here, I'd say no official support, acknowledgement of potential for *internal use*, but no endorsement.
-
m-relay
<jeffro256:monero.social> Depends on what you mean by "provably linked". Its just space in some enote that can be written to by anyone signing the transaction
-
m-relay
<jeffro256:monero.social> Its not necessarily "linked" by any force greater than convention
-
m-relay
<kayabanerve:matrix.org> SyntheticBird: I considered advocating for a fixed, encrypted blob in TX extra and decided against it for how much of a mess it'd be. Making TX extra larger to provide uniformity to bad TXs doesn't change how we shouldn't be encouraging bad TXs which are fundamentally bad.
-
rbrunner
Can't we tweak the format of change enotes a little bit and get something that we *must* put into those 16 bytes? So they are not free anymore, discussion closed?
-
m-relay
<kayabanerve:matrix.org> jeffro256: but the only idea officially posited, and safely posited, is to encrypt with the sender's key which is symmetric and not recoverable by a QC
-
rbrunner
(I am about 50% serious with this question)
-
m-relay
<kayabanerve:matrix.org> So while yes, it's not ZK proven to be encrypted to that key, and is arbitrary, that's not the use-case posited here today
-
m-relay
<jeffro256:monero.social> > <rbrunner> Can't we tweak the format of change enotes a little bit and get something that we *must* put into those 16 bytes? So they are not free anymore, discussion closed?
-
m-relay
<jeffro256:monero.social> Like any regular encrypted data, we can't enforce the contents without adding some kind of verifiable encryption scheme which would put compute load on the nodes and probably make transactions sizes bigger
-
rbrunner
No, I mean we add some short key, or some hash, or whatever, that is needed for processing change enotes
-
rbrunner
So the statement "Those 16 are unused" becomes false
-
m-relay
<rucknium:monero.social> If I'm a third-party wallet dev and I put the same thing in those 16 bytes every time instead of random data, e.g. `000000`, is there any cryptographic risk of re-using plaintext again and again? Just trying to understand how things could go wrong.
-
m-relay
<chaser:monero.social> maybe add something that only the one doing the enote scanning has to compute, not all full nodes.
-
rbrunner
Yes
-
rbrunner
But well, maybe that whole idea could be just nonsense ...
-
m-relay
<kayabanerve:matrix.org> Rucknium: You'd create a fingerprint
-
m-relay
<rucknium:monero.social> I am always thinking about mistakes wallet devs can make since I see them on the blockchain too often
-
rbrunner
Which is ... unfortunate, but can happen easily?
-
m-relay
<jeffro256:monero.social> > No, I mean we add some short key, or some hash, or whatever, that is needed for processing change enotes
-
m-relay
<jeffro256:monero.social> Hmmm I will think about this more but probably not. The field is on an internal selfsend enote , not the transferred one, so it would mean that enotes can fail to scan based on the contents of other enotes which is kind of gross
-
rbrunner
Maybe the thing that they want to put in there really does not change much, or hardly at all?
-
m-relay
<jeffro256:monero.social> Also if the check is trivial and I lose money adhering to it, I'm probably going to run a wallet which let's me recover those funds even if it means breaking some trivial rule
-
rbrunner
If one part of the change enote is encrypted with the key that is in those 16 bytes? How would you circumvent that and still (ab)use the field?
-
rbrunner
But I agree that goes pretty far, just to prevent use of the bytes
-
m-relay
<jeffro256:monero.social> I think Rucknium meant 0s BEFORE encryption to self, right ?
-
m-relay
<rucknium:monero.social> Yeah I do mean that. But also after "encryption" if a wallet dev can somehow get around that encryption step
-
m-relay
<kayabanerve:monero.social> Oh, sorry if I misunderstood Rucknium
-
m-relay
<kayabanerve:monero.social> A wallet dev can do whatever they want there
-
m-relay
<kayabanerve:monero.social> *if they sufficiently fork the stack
-
m-relay
<rucknium:monero.social> IMHO, it is best to have the path of least resistance (least dev work) to be the safest. So if the path is to enable an "easy" API to add data, but make it add no data by default, then maybe that is best.
-
m-relay
<rucknium:monero.social> And good docs are needed. Don't forget that :)
-
m-relay
<syntheticbird:monero.social> yeah Docs are the key here
-
m-relay
<jeffro256:monero.social> Yeah it could be a fingerprint if they screw it up and put the 0s into the tx without fingerprinting
-
m-relay
<rucknium:monero.social> Remember, recently Siren (comfy) was adding a fingerprint to their MoneroPay txs accidentally because the docs were not clear.
-
m-relay
<vtnerd:monero.social> Sorry got behind on the list. Probably want to do it a hardfork though, otherwise people might use wrong version and get locked out of the switch phase
-
m-relay
<jeffro256:monero.social> If we do it now, then there won't HAVE to be any fork
-
m-relay
<rucknium:monero.social> The meeting has gone pretty long. I think the 16 free bytes can be put on next agenda's meeting, unless people think that everything is settled.
-
m-relay
<jeffro256:monero.social> Out of curiosity, What was the fingerprint ?
-
m-relay
<rucknium:monero.social> Unlock time 10
-
m-relay
<rucknium:monero.social> Should be 0
-
m-relay
<jeffro256:monero.social> I'm fine for now not officially supporting external memos until it comes back up again downstream
-
m-relay
<vtnerd:monero.social> does this mean no payment id like functionality? I assume thats what you mean by memo?
-
m-relay
<vtnerd:monero.social> I need to re-read your carrot proposal I think, things have changed since I first looked
-
m-relay
<jeffro256:monero.social> Payment IDs are separately supported
-
m-relay
<jeffro256:monero.social> They also have the same PQ privacy issues
-
m-relay
<jeffro256:monero.social> Except that they're smaller so they allow "less" arbitrary data
-
m-relay
<rucknium:monero.social> --- Meeting end ---
-
m-relay
<rucknium:monero.social> Feel free to continue discussing :)
-
m-relay
<chaser:monero.social> a remark re: Carrot address format. AFAIK it's he first change in Monero's history where the same mnemonic will be able to resolve to two different key chains (barring a potential feature bit flipping for *newly generated* Polyseeds, but that's out of scope for my point here).
-
m-relay
<chaser:monero.social> this seems like a good opportunity to unify prefixes, doing away with the 4/8 (primary/subaddress) distinction for Carrot addresses.
-
m-relay
<chaser:monero.social> IMHO, ideally all becoming 8... addresses, so Carrot users can blend into the already existing crowd of legacy subaddress users.
-
m-relay
<chaser:monero.social> *the
-
m-relay
<jeffro256:monero.social> You have to have a signifier between main/integrated addresses and subaddresses because the sender handles them differently. Namely, they construct the ephemeral pubkey differently. But Carrot addresses will already be indistinguishable from legacy addresses
-
m-relay
<jeffro256:monero.social> Thanks everyone for the meeting BTW!
-
m-relay
<syntheticbird:monero.social> thanks delicious meeting as always
-
m-relay
<chaser:monero.social> jeffro256 got it, thank you. so is this is a requirement on the consensus side, not related to the derivation scheme?
-
m-relay
<chaser:monero.social> and, likewise, thank you all!
-
m-relay
<jeffro256:monero.social> No not a consensus requirement at all. The ephemeral pubkey is indistinguishable as belonging to either a main address or a subaddress, but if you try to make an enote ephemeral pubkey like you would for a subaddresses, when the address is actually a main address, then the payment simply won't be scannable by the receiver
-
m-relay
<jeffro256:monero.social> And vice cersa
-
m-relay
<jeffro256:monero.social> versa
-
m-relay
<articmine:monero.social> There is also an important cultural benefit in China by moving entirely to all becoming 8... Addresses
-
m-relay
<syntheticbird:monero.social> TIL ArticMine is not only knowledgeable on scalability
-
m-relay
<chaser:monero.social> I once listened to Artic speaking 2 hours about the dynamic block size algorithm, and they eventually drove it back to how holes were arranged on punched cards for 1960s' computers. so, yeah, pretty much.
-
m-relay
<vtnerd:monero.social> I _think_ this may have been asked+answered before, but what happens to the existing ring-ct outputs if we transition to switch comittments? Those outputs have to move before the “switch” occurs, otherwise they have to be locked out. Any existing pre-ringct outputs can still be converted. Anyway, it’s an unfortunate that the only mitigation is a PSA to move outputs, etc.
-
m-relay
<syntheticbird:monero.social> Yes they will need to transition during the pre-QC period. And after a reasonable amount of time (2~3 years?) the migration will be completed and old outputs will be locked. Pre-ringCT outputs will have to transition too. Kayabnerve argued that most of these outputs are probably lost/burnt.
-
m-relay
<vtnerd:monero.social> yes, I remember the prior discussion now.
-
m-relay
<jeffro256:monero.social> Previously, I mistakenly stated that we could migrate pre-RingCT outputs, since they have a cleartext amount, but I didn't take into account how FCMP++ will interact with key images for those outputs
-
m-relay
<jeffro256:monero.social> Hypothetically, we might be able to make them spendable if we chose the `T` generator for FCMP++ in a way that is cryptographically verifiable that guessing the generator before some point in time, after the RingCT hard fork, is intractable
-
m-relay
<jeffro256:monero.social> Because the problem with making them spendable is that if pre-RingCT outputs are constructed O = x G + y T with a known y value known s.t. y != 0, then the key image spending in a FCMP++ is L = x Hp(O), which is different than what we expect them to be, which is L = dlog(O, G) * Hp(O)
-
m-relay
<jeffro256:monero.social> But if `T` isn't guessable until some point in the future, then it would be impossible to create a valid key image in a FCMP++ for that output that ISN'T L = dlog(O, G) * Hp(O)
-
m-relay
<jeffro256:monero.social> Then, during the PQ migration, we can check that if-and-only-if the originating height of the spent output is < v6 hard fork height, we allow the output to be migrated if the key image is exactly L = dlog(O, G) * Hp(O)
-
m-relay
<jeffro256:monero.social> If we made the `T` generator a function of the current Monero block ID, then the trust assumption for preventing inflation would be 1-of-N honest participants, where N is the number of total transaction creators on the Monero blockchain, ever
-
m-relay
<jeffro256:monero.social> Actually, not ever, just sincev6
-
m-relay
<kayabanerve:matrix.org> jeffro256: FYI, non-RingCT outputs can still be created today.
-
m-relay
<jeffro256:monero.social> Yes, namely "unmixable sweep" txs. Hence, the height requirement
-
m-relay
<kayabanerve:matrix.org> We'd need a HF banning non-RingCT outputs, then to decide T via the blockchain if that's considered secure, then to activate FCMP++.
-
m-relay
<kayabanerve:matrix.org> Or at least a designation height for which non-RingCT outputs won't be migrateable.
-
m-relay
<jeffro256:monero.social> I'd vote the latter
-
m-relay
<kayabanerve:matrix.org> I'd vote none of this mess.
-
m-relay
<jeffro256:monero.social> TBF It's a small tweak to a single value and we don't actually have to handle the implications *now*
-
m-relay
<kayabanerve:matrix.org> Also, AFAICT, your security analysis is wrong.
-
m-relay
<jeffro256:monero.social> Certainly possible. How so?
-
m-relay
<kayabanerve:matrix.org> Considering the entire blockchain as a transcript, and T a sampled challenge, makes it effectively impossible to define a key on the blockchain which uses T. It's secure in general, not under a 1-of-n trust assumption.
-
m-relay
<kayabanerve:matrix.org> An adversary who could could break our proofs.
-
m-relay
<kayabanerve:matrix.org> But I also don't want to debate this ad infinitum. We should define a migration scheme and rely on it. I don't believe we should work on alternative schemes to expand the class of migratable outputs when the existing class is sufficiently wide to the point this is complexity without sufficient benefit.
-
m-relay
<kayabanerve:matrix.org> Also, your proposal, if implemented, cryptographically binds a checkpoint into the blockchain and technically means Monero either doesn't follow the chain with most work OR Monero may fork to an chain where the security is broken.
-
m-relay
<kayabanerve:matrix.org> It also mandates T not be a constant but variable to each network (unless we allow inflation on testnet and co) which would be a mess to implement.
-
m-relay
<jeffro256:monero.social> I wonder how well the current reference node can currently handle a 1.9 million block reorg....
-
m-relay
<kayabanerve:matrix.org> Would that be if you used the RCT activation height?
-
m-relay
<jeffro256:monero.social> Pre-RingCT deactivation height, excluding unmixable v1 sweep txs
-
m-relay
<jeffro256:monero.social> I don't care to try to migrate those
-
m-relay
<jeffro256:monero.social> Or we could just hash in all three block IDs into `T` and it works across all networks
-
m-relay
<kayabanerve:matrix.org> Verifying that as a NUMS constant now requires syncing three different blockchains?
-
m-relay
<jeffro256:monero.social> If you care about all three blockchains, then yes. But if you just cared about mainnet, it would suffice to check just the mainnet block ID, because adding in more block IDs won't reduce the entropy of the `T` result
-
m-relay
<kayabanerve:matrix.org> It does change the security analysis?
-
m-relay
<kayabanerve:matrix.org> It makes the T generator malleable w.r.t. the mainnet blockchain. There's no longer a single choice but 2**512 (which presumably collapse into most of the ~2**252 results).
-
m-relay
<jeffro256:monero.social> I understand what you're saying, but we're already assuming for our PQ migration that adversaries cannot find hash collisions or preimages, even with large entropy inputs
-
m-relay
<jeffro256:monero.social> For example, our switch commitmen blinding factors hash a lot of information, including a 32-byte secret, a 32-byte address, and an amount into a scalar, then the preimage is revealed
-
m-relay
<kayabanerve:matrix.org> I was trying to point how that your proposal of multiple inclusions can't be so trivially stated, not claiming that breaks the scheme.
-
m-relay
<kayabanerve:matrix.org> I've somehow allowed this to take half an hour of my time. I still personally find this proposal messy and not sufficiently worthwhile. I will be withdrawing from further conversation on it tonighy.
-
m-relay
<jeffro256:monero.social> Fair enough, thanks for the discussion thus far though :)