-
derbleak
I like the idea of making the index deterministic
-
knaccc
sweet. i'm thinking that'll help a little with the view-only wallet balances
-
derbleak
what about removing tx creator control of indexes altogether? would deterministic indexing achieve that?
-
knaccc
i'm not sure if it's necessary, but maybe also concatenate real_index_seed as part of the change_tag hash, as a sanity-check on whether the tx constructor pledged to choose real indices deterministically
-
knaccc
derbleak i'd be interested if you could figure out how to let the outside world check that without disclosing the real indices
-
derbleak
zkp to the rescue :)
-
derbleak
mb even just pedersen commitments
-
derbleak
idk
-
knaccc
btw i was looking at your 454.pdf earlier. i don't understand the math, but what an awesome achievement
-
derbleak
right 0.0 still reading through it
-
derbleak
so excite
-
knaccc
is that borat or doggolingo
-
derbleak
lol
-
derbleak
upick
-
knaccc
i'll err on the side of doge, since borat would say "i very excite"
-
sarang
knaccc: you can't check that though, right?
-
sarang
Whereas the deterministic scalar method _can_ be checked
-
sarang
(but a wallet not doing it will be missed)
-
knaccc
sarang right, you can't check that the sender isn't someone who has stolen your private view key and is lying, and you can't verify there wasn't a bug in their wallet software. so this is purely to make view-only wallet balances more useful than they currently are, with the proviso that you should always use key images to verify funds have not been stolen and that the view-only balance is correct
-
knaccc
i'm trying to not let the perfect be the enemy of the good, since there is no verification or storage cost to making the real index deterministic
-
sarang
No, I mean that the deterministic index is unreliable
-
sarang
in a way that deterministic _scalars_ are not
-
knaccc
i think perhaps i don't understand what you mean by deterministic scalars
-
knaccc
i thought you were referring to the change_tag stuff
-
knaccc
i.e. that you can verify the commitments match your alternatively-encrypted ecdhinfo amount
-
UkoeHB_
How would you define the order for ring membership? Afaik right now the order is just member age
-
knaccc
interesting, i'd assumed they were currently shuffled randomly
-
knaccc
i guess actually they were never shuffled randomly right? due to the way indices are encoded
-
knaccc
yeah that's a good question.
-
moneromooo
The order within a ring is blockchain order. Delta encoded. There's no point in shuffling them really, is there ?
-
knaccc
i think you'd have to decide the real indices first, then choose the decoys such that the output global indices are such that they do order correctly
-
knaccc
moneromooo right yes the delta encoding
-
moneromooo
That's... a point for shuffling ?
-
knaccc
i'm agreeing that the delta encoding prevents shuffling
-
knaccc
and therefore you'd have to choose the decoys such that the intended real indices work out
-
moneromooo
Well, doesn't really. It just is the smallest way to encode it (in the general case).
-
knaccc
yeah i'm assuming we wouldn't want to mess with the compactness of the delta scheme
-
knaccc
or have to invent negative varints
-
moneromooo
They can use the same system.
-
moneromooo
MRL had been talking for a while about deterministic picks, so that you wouldn't encode the offets, just a seed which could generate them.
-
moneromooo
I think one of Matthew Green's students actually made an actual test of this.
-
knaccc
interesting, i am in favor of deterministic decoy selection
-
knaccc
i guess the method that they'd come up with involved brute forcing an IV until the scatter included your real input in the selection of outputs?
-
moneromooo
Might take a long time for old outs. You could also include an offset. You generate once, then include an offset such that one of the generated outs matches your input.
-
knaccc
oh yes, that's a much better idea
-
moneromooo
I'm unsure whether that offset would leak anything.
-
moneromooo
The offset thing will likely skew the distribution, so *some* amount of brute forcing will likely be wanted anyway.
-
knaccc
in that case, it's pretty easy to choose the offset such that you end up with your real input in the position you deterministically want it to be in
-
derbleak
imho, removing the offset entirely would be ideal (via deterministic decoys or w/e)
-
knaccc
what is w/e?
-
derbleak
whatever
-
derbleak
whatever means work + meet design reqs
-
knaccc
i'd image brute forcing isn't a significant computation compared to the EC ops that also need to be done to construct a tx
-
derbleak
EC ops are more cryptographically sound
-
derbleak
some cryptographic method of generating decoys is preferable, imho
-
knaccc
hashes count as a cryptographic method, and those are very lightweight compared to EC ops
-
derbleak
where is the bruteforcing involved with hashes in this context?
-
knaccc
i'm assuming the scattershot that would need to have an IV brute forced to ensure the scatter contained your intended real input in the correct position in the scatter would be hash based
-
knaccc
this is just about decoy selection, EC ops should never need to come into it
-
derbleak
why not make the index a hash(pubkey | input | w/e)?
-
knaccc
i'm sure constructs like that will go into the more complex task of determining a good scatter of decoys
-
derbleak
then receiver search for index matching hash(signing/view pubkey | input | ... )
-
gingeropolous
ironically larger ringsizes might reduce the amount of bruteforcing required
-
gingeropolous
if you have to align 1024 points across the blockchain, the offsets / transform could be smaller. or at least they might get to optimal quicker. basically there's less space to search
-
knaccc
great point
-
sarang
The method suggested by Green's student doesn't play nicely with the more complex distribution we use
-
sarang
But it's a hashed shuffle with an offset
-
sarang
You need a transform from uniform selection to the desired distribution
-
derbleak
-
derbleak
mentions use of TLV for auth tags
-
derbleak
similar to one of the points discussed in monero/6456
-
derbleak
(implicit PFS is a big win)
-
sarang
Hello all
-
Inge-
hi
-
UkoeHB_
good monrign
-
Inge-
Anyone heard from Surae ?
-
sarang
I chatted with him a couple of days ago, briefly
-
Inge-
I'll take that as a positive sign.
-
sarang
New PR to fix up in-memory key encryption:
monero-project/monero #6474
-
sarang
Review requested
-
sarang
So I'm considering the implications of adding message authentication to encrypted files within the ecosystem, after a suggestion was presented about this
-
sarang
Any particular downsides to this?
-
sarang
I'm considering how an adversary might remove the authentication tag and trick the user into simply performing non-authenticated decryption, which is what would need to happen to older files before they could be transitioned over
-
sarang
If that happens, the authentication is useless
-
UkoeHB_
examples of encrypted files that would need to transition?
-
sarang
e.g. ringdb information
-
sarang
-
sarang
Since key derivation is different between plain-old ChaCha20 and ChaCha20-Poly1305, the risk may be low
-
derpy_bridge
<[keybase] unseddd>: an attacker tricking a user to use an old client to perform decryption sans MAC is no worse than the current situation
-
UkoeHB_
although a user who believes MAC would protect them, might be mistaken
-
sarang
correct
-
derpy_bridge
<[keybase] unseddd>: a user being tricked to use an old client to decrypt wallet files has more problems than MACs
-
sarang
It's not about an old client necessarily. It's that old files legitimately have no MAC
-
sarang
and need to be decrypted successfully in order to transition to a MAC construction
-
sarang
However, using the chacha20-poly1305 keying protocol means that falling back to the chacha20 keying in the absence of a poly1305 tag would not attempt to decrypt a malicious file with the expected key anyway
-
sarang
and therefore may not be a problem
-
derpy_bridge
<[keybase] unseddd>: not necessarily, a non-standard key derivation could be used to gen the Poly1305 key, and compute a MAC over the current ciphertext (not sure it adds any security if wallet is considered compromised)
-
derpy_bridge
<[keybase] unseddd>: if Poly1305 is rolled out for wallets, users could be advised of the potential chosen-ciphertext attack on previous wallet files, and encouraged to regen from seed using the new encryption
-
derpy_bridge
<[keybase] unseddd>: obviously not as workable to start from scratch with everything, but maybe for the ultra-paranoid
-
derpy_bridge
<[keybase] unseddd>: the attacker window is also pretty small, only has one chance post-upgrade: user has chacha20 wallet - (potential cca) - user decrypts wallet - user encrypts using standard ChaCha20Poly1305
-
sarang
Yes. I mean that I don't consider there to be a risk of a downgrade attack
-
sarang
That is, CCA for an attacker who takes a post-poly wallet and tries to downgrade by stripping out the tag
-
derpy_bridge
<[keybase] unseddd>: tangent: have a stable fuzz test running! will PR after letting it run a bit longer
-
derpy_bridge
<[keybase] unseddd>: ^ for CLSAG
-
sarang
neat
-
derpy_bridge
<[keybase] unseddd>: would you like me to include a seed corpus with the PR, sarang?
-
sarang
Sure, why not
-
derpy_bridge
<[keybase] unseddd>: ok
-
sarang
Any findings of note?
-
derpy_bridge
<[keybase] unseddd>: with the fuzzer? not yet, so yay! had an unstable fuzzer that caused crashes using a 1MB file, but it was because my fuzzer was borked :/
-
derpy_bridge
<[keybase] unseddd>: have let the current fuzzer run for ~10hrs, no crashes and over 100 paths explored
-
selsta
btw current monero codebase could also benefit from fuzzing if this is something you want to look into after clsag :)
-
derpy_bridge
<[keybase] unseddd>: selsta: definitely :) I <3 fuzzing, makes me feel all warm and ...
-
derpy_bridge
<[keybase] unseddd>: _sees themself out_
-
sarang
There's already fuzz testing in place for some code
-
derpy_bridge
<[keybase] unseddd>: sarang: absolutely, I basically copied an existing fuzz harness for the CLSAG fuzzer
-
derpy_bridge
<[keybase] unseddd>: I'm pretty impressed with Monero's test suite
-
derpy_bridge
<[keybase] unseddd>: happy to help make it even more awesome
-
sarang
I don't think there are any fuzz tests for MLSAG; that would be useful too
-
sarang
(unless they do exist but I missed them)
-
derpy_bridge
<[keybase] unseddd>: for sure, will look at MLSAG next
-
moneromooo
There's a tx one, though I can't recall whether I made those pre-rct or not. In any case, it'd just be a matter of adding a rct tx in the dictionary.
-
moneromooo
I have a feeling that most of the fuzzing is spent bashing one's CPU on "this hash is wrong" though, and so never going past early outs.
-
derpy_bridge
<[keybase] unseddd>: moneromooo: that's why I asked about including a seed corpus, as they can greatly increase fuzzer effectiveness
-
moneromooo
Feel free to add small interesting test cases which aren't easily reached by the existing ones.
-
moneromooo
IIRC I added a typical and a minimal for each or so.
-
derpy_bridge
<[keybase] unseddd>: will do. currently using a dumb random seed, will include seeds for: serialized valid CLSAG, serialized CLSAG with randomized {c,s,I,D}
-
derpy_bridge
<[keybase] unseddd>: moneromooo: fuzzer is running much more efficiently now, thanks for the tip :)
-
moneromooo
Cool, thanks :)
-
derpy_bridge
<[keybase] unseddd>: no problem