-
knaccc
Very nice work on the interview guys. My short list of interesting things that were mentioned:
-
knaccc
1. "some exchanges share voluntarily, most do not, so there is an art to that"
-
knaccc
2. "ip address information is used" -> perhaps they use isp monitoring to assist?
-
knaccc
3. they are sending poisoned outputs to mount active attacks
-
knaccc
4. They didn't explicitly say they spam the blockchain with txs to reduce anonymous decoys available. But I would not be surprised if they send a burst of fake txs immediately after a tx of interest, to reduce the chances of a churned tx then sourcing good decoys
-
knaccc
if ISPs are assisting, then you can know when certain wallets jump online and make txs, if people only sync their wallets when about to send or receive a tx
-
fluffypony
might be time to consider some sort of automated background churn
-
fluffypony
I wonder if churn txs could be constructed in advance without waiting for the balance to become available, and the node they're sent to could just wait until they're spendable, or if that would mess up the output selection distribution (since it wouldn't be able to select more recent outs)
-
fluffypony
but maybe not selecting outs from the most recent few blocks isn't a bad thing
-
knaccc
i've been looking at "forward anonymity set sizes", meaning after an output is received, how many txs on the blockchain will end up directly or indirectly referencing those outputs
-
knaccc
and the results are good over significant periods
-
knaccc
but if churn is automated such that it happens quickly, it's not so good
-
knaccc
here are the stats I just ran on 10 random outputs from July:
-
knaccc
outputIds: [19584417, 19592166, 19583074, 19577487, 19588150, 19599373, 19578981, 19571263, 19594080, 19589986]
-
knaccc
observ. period (hours): 1, fwd tx anon set: 1, 0, 2, 4, 1, 0, 1, 0, 4, 3
-
knaccc
observ. period (hours): 2, fwd tx anon set: 3, 8, 8, 15, 12, 6, 6, 0, 60, 13
-
knaccc
observ. period (hours): 3, fwd tx anon set: 13, 89, 46, 70, 99, 42, 20, 0, 309, 72
-
knaccc
observ. period (hours): 4, fwd tx anon set: 94, 323, 260, 294, 378, 186, 100, 4, 729, 252
-
knaccc
observ. period (hours): 5, fwd tx anon set: 386, 840, 555, 721, 815, 588, 386, 22, 1416, 841
-
knaccc
observ. period (hours): 6, fwd tx anon set: 824, 1576, 959, 1168, 1281, 1044, 750, 115, 2048, 1402
-
knaccc
observ. period (hours): 12, fwd tx anon set: 4317, 4855, 4357, 3914, 5189, 3937, 3563, 2531, 5250, 5179
-
knaccc
observ. period (hours): 24, fwd tx anon set: 10765, 10546, 11150, 11097, 11174, 9735, 10700, 9536, 10886, 10935
-
knaccc
observ. period (hours): 48, fwd tx anon set: 22221, 22521, 22480, 22745, 22839, 22670, 22345, 21656, 23312, 22676
-
knaccc
observ. period (hours): 96, fwd tx anon set: 49754, 49763, 49942, 49717, 50276, 49118, 49446, 47691, 50150, 49792
-
fluffypony
ok so churn has to be automated, but the wallet has to be open so that it can do so intelligently?
-
fluffypony
s/has to/can be
-
monerobux
fluffypony meant to say: ok so churn can be be automated, but the wallet has to be open so that it can do so intelligently?
-
fluffypony
good bot
-
knaccc
yeah churn would need to happen automatically over longer periods than just "6 churns in 6 hours"
-
knaccc
but if we recommend churns, this causes a blockchain bloat problem, and a wallet scanning time problem
-
knaccc
See "The wallet scanning-time problem quantified" here:
monero-project/research-lab #75#issuecomment-663935804
-
knaccc
If the transaction volume were to increase 30x from here, it would take 86 hours per year of transactions scanned""
-
knaccc
so churning would help accelerate the increase in tx volume times, and wallet scanning times would be a major problem
-
knaccc
s/in tx volume times/in tx volume
-
monerobux
knaccc meant to say: so churning would help accelerate the increase in tx volume, and wallet scanning times would be a major problem
-
knaccc
sooner or later, we're going to need to take the wallet-scanning-time issue seriously
-
sech1
I've watched the whole interview and honestly I'm disappointed. The CEO Dave has unique ability to say a lot of words without disclosing a bit of information. He basically said they use "all known methods" and do use poisoned outputs.
-
sech1
Plus they do flag benign transactions if they happen to use wrong ring members, what a joke
-
knaccc
all of the interesting attacks on monero involve using off-chain information, and the extent of that information will be the extent of their ability to trace
-
knaccc
so we can't just dismiss this by talking about how ring signatures are great.
-
knaccc
or by saying "nothing new here". if anything, if this is nothing new, and it's a problem we've known about, we need to fix it and provide proper usage guidance, instead of just saying "yeah we did an episode of Breaking Monero about that, old news"
-
sech1
Not much we can do against guys who willingly want to paint benign transactions as tainted
-
sech1
but yes, people should be more aware of best usage practices
-
knaccc
yeah i don't have much confidence in his claim of being able to mark txs as involving tainted funds
-
knaccc
that seems a bit ridiculous
-
Inge-
it is COMPLETELY arbitrary
-
knaccc
what would make more sense is if they were doing this: exchanges might not generally be willing to share all tx data, but i can see them being willing to notify a tracing company if they encounter any txs (in the past or future) that reference a certain output
-
knaccc
and then share customer info only on those occasions
-
knaccc
maybe just account ids at first
-
knaccc
but if there is a pattern with certain account ids, they could easily be asked to then disclose more
-
knaccc
so their system would be a tool to get exchanges to disclose information they would not do so in a blanket fashion, and that would account for his statement that there is an "art" to getting exchanges to disclose info
-
knaccc
as long as they can claim a possible connection, even if they're wrong 95%+ of the time, that'd be enough to extract enough useful info to refine their tracing
-
knaccc
another stat: I took 1000 random outputs from July, and observed that 309 of them were not then referenced in further txs within an hour
-
knaccc
so higher ring sizes could help with that perhaps
-
knaccc
141 of 1000 not referenced within 2 hours
-
needmoney90
higher ring sizes or a larger amount weighted forwards
-
needmoney90
but higher ring sizes should be manageable atm
-
knaccc
good point, yes i like the idea of a 'hot zone' where we try and make sure everything gets picked up multiple times
-
dEBRUYNE
I suppose Triptych (or variant) will take care of that
-
Mochi101
Thanks sarang and sgp_ for the YT interview with Ciphertrace.
-
gingeropolous
<knaccc> or by saying "nothing new here". if anything, if this is nothing new, and it's a problem we've known about, we need to fix it and provide proper usage guidance, instead of just saying "yeah we did an episode of Breaking Monero about that, old news" >>> yeah, this sorta feels similar to when MRL001 indicated we needed bigger ringsizes, or something
-
gingeropolous
and then someone called us out, and the response was "well we knew about it"
-
gingeropolous
so ringsize a bajillion?
-
knaccc
ringsize 100k does solve the probem
-
gingeropolous
ok, what're the numbers on that puppy.
-
gingeropolous
processing times, sizes, etc.
-
sgp_
too big 4 u
-
sgp_
I'm putting together this document to send to CipherTrace this AM with some more specific questions. Please add questions if you have them, but of course take extra effort to keep them professional:
monero.sandcats.io/shared/QVo56B5-M76D88sArgVBbjnaJVltp7562CUuUsY3Nbc
-
sarang
Also please review the questions that are already there
-
knaccc
are they willing to take the time to write up an essay in response? i'd imagine it'd be much easier to get it out of a phone call
-
sarang
I don't have any reason to believe CipherTrace would be dishonest in their answers, but I also don't have any reason to believe they'd go out of their way to provide details (they aren't obligated to answer any of these!)
-
sarang
I'd be glad to ask them on a call if they prefer, sure
-
knaccc
i'd just imagine it's easier for a human to spend 20 mins on the phone with you than spend 20 mins writing an essay
-
sarang
On the other hand, Dave might not want his technical staff to answer directly without some kind of vetting of the responses and questions
-
knaccc
true
-
sarang
Who knows; might as well provide written questions and offer to discuss however they wish (if they choose to discuss at all)
-
sarang
I have added/updated questions
-
sgp_
questions sent, thanks
-
sarang
neat
-
gingeropolous
well, even if too big, would be nice to know what the "cost of ideal", and see how we can make successive approximations
-
caos
If what they are saying is true what should we do to protect our privacy?
-
sarang
TBH it's not entirely clear to me _what_ they're saying at this point, even after the interview
-
caos
How can they claim it? "This provides ways to track stolen Monero currencies or Monero currencies used in illegal transactions". I'm thinking that it could be a snowball attack
-
sarang
What do you mean by "snowball attack"?
-
caos
-
sarang
Oh, examining transaction paths between known endpoints?
-
sarang
That becomes a graph matching and probability problem
-
sarang
If I were them, that's probably a technique that I would use where applicable
-
caos
Maybe they got the majority of decoys tho
-
sgp_
There's a new set of ECC releases about "Halo 2." New sample code
-
sgp_
-
sarang
Interesting; they switch from Sonic to PLONK
-
sarang
I would view the deployment timeline with raised eyebrows, but who knows
-
sarang
Now to see benchmarks!
-
dEBRUYNE
That timeline seems a tad optimistic
-
sarang
Eh, it's a press release
-
sarang
Following the code will be far more interesting
-
sarang
It's neat research
-
dEBRUYNE
Were you able to find some benchmarks?
-
sarang
I'm still perusing
-
sarang
The post is a little confusing
-
sarang
It seems to imply that PLONK support is not there yet, but there is PLONK-related code in the repo
-
sarang
Hmm, commit messages imply some stuff may still be broken, so I dunno
-
sarang
Doesn't appear to be any benchmarking just yet
-
sarang
Would depend on circuit structure, presumably
-
sarang
and if they intend to deploy, they'd need it to scale to something the size of the Sapling/Heartwood/etc. circuit
-
sgp_
I'm told the questions have been forwarded
-
sethsimmons
Hopeful for at least some basic responses, but the more the merrier
-
sarang
Forwarded to whom? The people on Dave's team who build the tools?
-
sarang
I have set my expectations low (they are a company, after all), but hope to be pleasantly surprised :D
-
midipoet
I think it's pretty obvious what they do though isn't it?
-
midipoet
It's known attack vectors
-
midipoet
There isn't anything new
-
midipoet
Is it just confirmation that we are wishing for
-
midipoet
So we discredit the efficacy of it
-
midipoet
And the accuracy
-
sarang
In the interview, it was implied that the technique involved many known methods, but also some kind of unknown sauce
-
sarang
Without justification or evidence or details, it's not possible to verify any of this
-
midipoet
The unknown sauce is just spamming the network
-
midipoet
That is not documented in any research, is it?
-
needmoney90
no, I think they mean sending users txes
-
midipoet
No formal research anyways?
-
needmoney90
not network spam
-
needmoney90
for later recombination
-
midipoet
known suspects?
-
sarang
There's no way to know what they do
-
midipoet
What users?
-
sarang
They might have been telling the truth, stretching it, or being dishonest
-
sarang
Designing with any claims in mind that have no evidence is foolish anyway
-
sarang
The interview is all self-reported data
-
sarang
Whether or not they actually have a product that does what they have implied/claimed, they have absolutely succeeded at spreading the news about these implications/claims
-
Isthmus
Hmm, what if we put together a CCS to become a CT customer, so that we can analyze its capabilities
-
Isthmus
I'm sure MRL could have a field day testing their abilities
-
Isthmus
And it'd be a good investment. We're currently fighting blind in an arms race
-
needmoney90
"Monero community funds chain analysis companies"
-
sarang
Well, not so much fighting, as having someone else write a letter saying they have powerful tools
-
needmoney90
they have the best tools
-
needmoney90
some very smart people told them
-
needmoney90
the smartest
-
sarang
I think it's important not to blindly discount the potential risks of the protocol, but also important is:
en.wikipedia.org/wiki/Hitchens%27s_razor
-
monerobux
[WIKIPEDIA] Hitchens's razor | "Hitchens's razor is an epistemological razor expressed by writer Christopher Hitchens. It says that the burden of proof regarding the truthfulness of a claim lies with the one who makes the claim; if this burden is not met, then the claim is unfounded, and its opponents need not argue further in order..."
-
sarang
good bot
-
midipoet
Isthmus: that is a good idea I think. There is no reason the community couldn't buy the analysis tool
-
midipoet
it makes perfect sense to
-
sarang
There would 100% be an NDA
-
midipoet
Sure
-
sarang
and Big Fancy Legal Theats for violating it
-
midipoet
sure
-
sarang
I am not interested in talking to lawyers about this
-
sarang
that sounds like months of your life you don't get back
-
midipoet
Every month we don't get back
-
midipoet
Might as well smile along the way
-
sarang
I'm saying "buying" the tools doesn't work
-
sarang
You'd probably send them some txns, and get some data back, but are under strict NDA about not sharing them anyway
-
sarang
So unless you want to tangle with expensive lawyers, you gain nothing
-
sarang
And if you do want to tangle with expensive lawyers, you have strange ideas of fun...
-
midipoet
oh. I forgot the AaaS
-
sarang
?
-
midipoet
Analysis as a Service
-
sarang
aye
-
sarang
I don't know this is how it works, but it is my assumption
-
sarang
I would be super surprised if they just shipped you the whole damn tool
-
sarang
That seems terrible for business
-
sarang
Maybe you get some kind of viewing interface for your particular case
-
sarang
But still can't share anything under NDA
-
midipoet
Oh no. I wouldn't share my transaction information. That would be silly
-
sarang
And another brief reminder that sgp_ and I did write specific technical questions that were sent to Dave Jevans earlier today
-
sarang
They may respond with details, and they might not
-
sarang
But I am certainly willing to give them the professional courtesy of a few days to respond, should they choose to
-
knaccc
i have some interesting stats
-
knaccc
let's say you pick 100 pairs of outputs at random from the blockchain, where those outputs were created within 7 days of each other
-
knaccc
and all pairs were created during or after Jun 2020
-
knaccc
how many of those randomly picked pairs will be spent together, by chance, at some point in the future?
-
knaccc
the answer: merges detected: 0 of 100 for 2 poisoned outputs
-
knaccc
i'm running it again now to do the analysis again for 1000 random pairs, but it takes quite a while
-
knaccc
next question:
-
knaccc
what if users churned each output in each random pair, prior to merging?
-
needmoney90
wait, 0 of 100 means it would be very detectable?
-
needmoney90
so 'this would not happen by random chance'?
-
knaccc
exactly, the false positive rate is near 0%, so the spend is ultra-high probability
-
needmoney90
So this is effectively iterated EAE, right?
-
needmoney90
to clarify.
-
knaccc
yes. so now we look at merges detected for each random pair, during different levels of churn
-
knaccc
churn window (hours): 24
-
knaccc
merges detected: 1 of 10 for 2 poisoned outputs at churn level: 1
-
knaccc
merges detected: 0 of 10 for 3 poisoned outputs at churn level: 1
-
knaccc
merges detected: 0 of 10 for 4 poisoned outputs at churn level: 1
-
knaccc
merges detected: 0 of 10 for 5 poisoned outputs at churn level: 1
-
knaccc
merges detected: 0 of 10 for 6 poisoned outputs at churn level: 1
-
knaccc
merges detected: 10 of 10 for 2 poisoned outputs at churn level: 2
-
knaccc
merges detected: 8 of 10 for 3 poisoned outputs at churn level: 2
-
knaccc
merges detected: 1 of 10 for 4 poisoned outputs at churn level: 2
-
knaccc
merges detected: 1 of 10 for 5 poisoned outputs at churn level: 2
-
knaccc
merges detected: 0 of 10 for 6 poisoned outputs at churn level: 2
-
knaccc
merges detected: 9 of 10 for 2 poisoned outputs at churn level: 3
-
knaccc
merges detected: 10 of 10 for 3 poisoned outputs at churn level: 3
-
knaccc
merges detected: 10 of 10 for 4 poisoned outputs at churn level: 3
-
knaccc
merges detected: 10 of 10 for 5 poisoned outputs at churn level: 3
-
knaccc
merges detected: 3 of 10 for 6 poisoned outputs at churn level: 3
-
knaccc
ok so i'll explain this:
-
needmoney90
it explains itself
-
needmoney90
:D
-
knaccc
so what happens if someone churns n outputs independently inside a 24hr window
-
needmoney90
If you want to get effective privacy off of up to 5 outputs, churn 3 times and you're good
-
needmoney90
within the same window
-
knaccc
how many random sets taken from the blockchain show false positives
-
knaccc
and yes the false positive rate can get really good
-
knaccc
but the problem is you get no false positives if you simply increase the poisoned output count
-
needmoney90
nah
-
knaccc
but you also get higher false positives if you simply increase the number of churns
-
needmoney90
you havent run the numbers far enough
-
knaccc
what should i run
-
needmoney90
Its a growth rate thing
-
knaccc
well the thing is, you can get complete anonymity if you churn enough
-
needmoney90
poisoned outputs are linear
-
needmoney90
churns are exponential
-
knaccc
right, so you can always beat any number of poisoned outputs if outputs are churned enough, i think
-
needmoney90
I suspect if you push churns to like, 8, and poisoned outputs to 30, you'll be surprised at the result
-
needmoney90
'enough' is something like a log on the number of outputs
-
needmoney90
its not a linear growth thing
-
knaccc
there is a churn level where the anonymity set size starts to become "everything"
-
needmoney90
at least, I suspect.
-
needmoney90
Try 30 poisoned, 8 churn.
-
knaccc
8 churn probably way too high to do in reasonable time
-
knaccc
i'll try 30 at 6 churn
-
needmoney90
ok
-
needmoney90
3 is just starting to scrape exponentials
-
needmoney90
6 it should really kick in
-
needmoney90
8 is prolly overkill tbh
-
sgp_
30 is a huge number of poisoned outputs
-
needmoney90
Yes, but my mental model is telling me that scaling it up that far wont be too bad here
-
sgp_
are these 6 churns of the poisoned outputs independently?
-
needmoney90
idk
-
needmoney90
30 is a lot
-
needmoney90
maybe 20?
-
needmoney90
still a lot, but heh
-
sgp_
and then after the 6 churns is there a merge?
-
knaccc
right
-
needmoney90
idk why the rec isnt just to merge them all, then churn
-
knaccc
it's detecting false positives for merges after 6 churns
-
sgp_
needmoney90: depends on the threat model
-
needmoney90
'ah, they merged their outs right here! Aha! And then got lost in the crowd...'\
-
knaccc
so if you're really churning and merging, what is your anonymity set essentially
-
sgp_
if the treat model assuming 30 payments to 1 address, then yes fine to churn right away
-
knaccc
what does it look like is happening by chance
-
sgp_
if 30 payments to an unassociated entity, then maybe churn separately if the address identities are supposed to stay separate
-
sgp_
knaccc: what does it mean by merges detected then? how is this a static yes/no? does the model guess, and then if correct against ground truth, then say it's detected, no if not?
-
knaccc
i might not be able to test anything approaching these numbers, actually. it's really slow
-
knaccc
sgp_ we're essentially asking: if we pick 2 outputs on the blockchain, and then follow the forwards-in-time anonymity set N levels, does it look like there is ever a transaction afterwards that spends any two outputs together where each of those two outputs are from each of those forward-anonymity-sets
-
knaccc
so it's asking what % of other random output pairs on the blockchain look like they might have been churned N times and then merged so that someone could cash out
-
sgp_
don't you need to know what the user behavior will look like to test how many possible paths there are?
-
sgp_
you don't know an arbitrary user churns x times specifically
-
knaccc
i'm asking, at each level of churn, what will their cover be in terms of other outputs that could also look like they were churned and merged the same way
-
knaccc
the answer after a direct merge is almost no anonymity
-
knaccc
and the anonymity grows with churn distance from the original outputs
-
sgp_
just to be extremely clear, can you show how the anonymity is near 0 for a direct merge? I want to follow your application to this design
-
knaccc
so with the simple 2 outputs chosen at random then a direct merge, i've just rerun it with 1000 random pairs
-
knaccc
and there are merges detected: 6 of 1000 for 2 poisoned outputs
-
knaccc
so a 0.6% chance that a direct merge (like in the Ciphertrace example) could have been spent together by chance
-
sgp_
so do you look at 1000 random output pairs and see if they appear in an immediate transaction with one of these outputs in each ring?
-
knaccc
right, i look from the time of creation to present day
-
knaccc
and all pairs were created Jun 2020 or after
-
sgp_
okay, so given the shortened timeframe, the test may be slightly less reliable if we chose outputs including those 4 years ago? or at least that intuitively makes sense to me
-
sgp_
well, assuming the ringsizes were always 11 I guess. maybe since that point for simplicity
-
sgp_
in any case, that doesn't really matter, just trying to make sure I understand it
-
knaccc
yeah you understand perfectly i think
-
sgp_
so for 1 churn does that mean an immediate merge, or a merge within 2 transactions total?
-
knaccc
0 churns means merge after outputs received
-
sgp_
okay, so 1 churn = 2 transactions total
-
knaccc
1 churn means both outputs churned independently after being received, then merged
-
sgp_
sorry, your wording is clearer
-
knaccc
going to 1 auto churn makes things much better:
-
knaccc
merges detected: 31 of 100 for 2 poisoned outputs at churn level: 1
-
knaccc
so we can massively improve monero's privacy with just one level of autochurn
-
sgp_
and I assume you're using real Monero blockchain data for this then to test
-
knaccc
correct
-
sgp_
so to test arbitrary ringsizes it would take a lot of work to make a fake blockchain
-
knaccc
when constructing the blockchain graph, extra outputs could be added as decoys to simulate it
-
sgp_
hmm, that could be super useful actually. very clever too
-
knaccc
and care would need to be taken to apply the correct selection distribution
-
sgp_
of course
-
sgp_
so now walking through the results you posted, for example this line:
-
sgp_
merges detected: 1 of 10 for 2 poisoned outputs at churn level: 1
-
knaccc
the problem though is still that the more iterations, the less churn helps you, unless you are churning many times more than once, in which case churn is a panacea
-
sgp_
what does 1 of 10 mean?
-
knaccc
that means of 10 random pairs chosen, 1 merge was detected at churn level=1
-
knaccc
so 10% false positive rate
-
knaccc
that you can hide in
-
knaccc
the problem is that if you have 10 poisoned outputs instead of 2, then:
-
knaccc
merges detected: 0 of 100 for 10 poisoned outputs at churn level: 1
-
sgp_
can this be interpreted as 10% of the time, a "fake" merge of these 2 poisoned outputs occurs?
-
knaccc
right
-
knaccc
so essentially you need to look at how often you plan on transacting
-
knaccc
and set churn level accordingly
-
knaccc
and if you plan on transacting more than a few times, suddenly you need to go all the way up to churn level 6 or so
-
sgp_
are these 10 random pairs selected from the 1000 earlier somehow?
-
sgp_
or is this a completely independent test?
-
knaccc
always independent
-
sgp_
why only select 10 random pairs then?
-
knaccc
because it takes a really long time to run. i'd select 1000 if i could
-
sgp_
got it
-
sethsimmons
Super interesting stuff knaccc just finished reading backscroll
-
sethsimmons
Thanks for crunching the numbers :)
-
knaccc
np, i kinda got addicted to it
-
sgp_
I assume the time to run increases substantially with each churn more than it does each pair?
-
knaccc
yeah, it's already super-optimized by not talking to the daemon. it loads everything into memory and then darts around
-
knaccc
but still it takes time
-
sgp_
how much memory does that take lol
-
knaccc
only about 500mb, it only loads the essentials of the graph
-
knaccc
my recent code is only really good for low churn levels. i have different code that looks at anonymity set sizes for transactions generally
-
knaccc
=========================================================================================================================
-
knaccc
Anonymity set sizes for txs in block 2177013 for observation window size: 7 days
-
knaccc
=========================================================================================================================
-
knaccc
txid | Level=1 | Level=2 | Level=3 | Level=4 | Level=5
-
knaccc
------------------------------------------------------------------|----------|----------|----------|----------|----------
-
knaccc
fe39a21b57814a980aea6d69fe8ab9cad609713b84d9c09f97e4b8cf74580e5b | 9 | 100 | 1,942 | 29,205 | 187,841
-
knaccc
75cbf8e6805f0417c5f6160c47ca9db701e74f8583d33135f60dadf9ee1e3c6c | 6 | 66 | 1,119 | 17,488 | 146,782
-
knaccc
ffa60ba1161b700efd8effe7a85fd3e93a7b08c2f9f0e3adb0ede229458b80b1 | 9 | 119 | 1,643 | 22,785 | 166,487
-
knaccc
0b76935fa6b22da2e1baf41a8e9371dbf0ff727ebfe84928412179c8567e7774 | 11 | 147 | 2,180 | 31,761 | 191,051
-
knaccc
d74e2ceb424abab0baaf9e3c6a9695cd08bff69c7ca8539a4bffe61c933e8a05 | 7 | 81 | 967 | 13,891 | 130,696
-
knaccc
12b4af06464c29171f9ae857200ef343c7c3115ace8b2e78c528245330c86850 | 9 | 106 | 2,041 | 29,293 | 185,865
-
knaccc
e9f0eab46edded095f9c5a2726b4e4610df3b98391730b2862c98058a362be2b | 11 | 200 | 3,353 | 46,762 | 210,115
-
knaccc
1a223fd2c6ed9c64b1cd7e73370b93975edc89373f7ad8caab1cf601a9221948 | 8 | 97 | 1,401 | 18,670 | 139,589
-
knaccc
ea012a8bf1898cd7f100257bb699696450dbfb8351599801689c8cba3e168e1d | 8 | 87 | 1,252 | 18,160 | 151,164
-
knaccc
4a0b235f1e9f34d4a1adf185bdb0f4224c4925a2d3a4c5cfc736e46a3ff9cd44 | 7 | 416 | 7,149 | 86,880 | 235,023
-
knaccc
c001acce972fb25d88b4b7ec524baf40c2512538137733fd69d661c72706577c | 7 | 96 | 1,471 | 21,017 | 163,831
-
knaccc
824e016ab77108e808f706f2a3af95b949e23f5f7a6f8a182a893f2cf6cdd989 | 7 | 160 | 2,395 | 35,394 | 202,839
-
knaccc
771d4db8b4f7eecf7e4914acb1264a34842a057480625498f270b2d1d2971053 | 9 | 167 | 2,863 | 40,307 | 208,096
-
knaccc
207ca5090bb382e441820a21e807e22028d5f6970210c7df604d6b83236185db | 8 | 74 | 923 | 13,672 | 130,121
-
knaccc
2398a80e742070504123dde6057b9711492d64c22928abd80079459837322c3b | 7 | 204 | 3,404 | 48,961 | 219,691
-
knaccc
155e8c8c03e699c337e241232ec18bed9a155d923d33c6c19835a0ff3fdc3a82 | 9 | 196 | 2,927 | 39,841 | 208,513
-
knaccc
46f1e03ed2c1ca6ea075956bf123a48f1ad8ea0b26ab6b8bc707076ab4dfc422 | 8 | 110 | 2,054 | 28,871 | 183,053
-
knaccc
f164ca136b28611edef5c9939a882dd473b8d47772734d3cc2132beb720efab9 | 10 | 255 | 3,677 | 49,390 | 217,902
-
knaccc
a667874ccf43f27fc4c56b5142d3b9137c450f1c86f27f1d63c695c943c09713 | 8 | 129 | 2,075 | 33,952 | 195,938
-
knaccc
d2585dfc318f3bcb97f4d9ac1d11cfd120186383d7591d7f8611ef8ec011b749 | 5 | 68 | 912 | 13,995 | 130,375
-
knaccc
e05287eea35d42cdf4adae65da54183f566b8d5d693c5772c6474ff7d90d8539 | 9 | 191 | 2,958 | 43,535 | 202,102
-
knaccc
so you can see anonymity set sizes exploding
-
knaccc
level 6 or 7 should be enough for anyone to get perfect anonymity
-
knaccc
but of course, if we tell people to do that, it'll spam the blockchain, increase wallet scanning times to unacceptable levels, and people will get annoyed at how long they have to wait for the churns
-
knaccc
hmmm actually that output looks a bit broken
-
knaccc
i might have messed something up
-
UkoeHB_
paste as code snippet?
-
knaccc
level 11 normally look like multiples of 11
-
knaccc
level=1 i mean
-
sgp_
anonymity set sizes, defined how?
-
knaccc
defined as number of outputs that these txs could have sourced their inputs from
-
knaccc
that paste is definitely wrong, level 1 should always be multiples of 11
-
knaccc
i've messed something up in the last few hours i think
-
knaccc
i pasted stuff earlier today that made more sense
-
knaccc
some debian pastes
-
knaccc
ohhhhhh
-
sgp_
okay, is there better wording for that? easily confused with effective ringsizes
-
knaccc
ok no my code isn't broken at all
-
knaccc
it's because of the observation window
-
knaccc
so it's clipped at 7 days
-
sarang
What does this mean exactly?
-
knaccc
so the level 1 anonymity set size will only include any of the 11 outputs that existed in the 7 days prior to that tx
-
sarang
Hmm ok
-
moneromooo
That looks like one of the tools in src/blockchain_utilities.
-
moneromooo
Which I promptly forgot what they do.
-
sarang
c'est la vie
-
knaccc
UkoeHB_ this is the entire listing for all txs in that block
paste.debian.net/plain/1162186
-
knaccc
btw the anonymity set sizes listed there are not approximations by multiplying ring counts together or something. it literally actually finds all distinct output ids in the anonymity sets, and so sees intersections and does not count duplicates
-
sgp_
so this test takes these IDs and works backwards, not forwards?>
-
knaccc
correct, this one is now backwards
-
knaccc
in time
-
sgp_
okay, so explain how for fe39a21b57814a980aea6d69fe8ab9cad609713b84d9c09f97e4b8cf74580e5b that is would be 9 possible source transactions when it has 11 inputs/ring
-
sgp_
*it? idk lol
-
knaccc
because an observation window is applied
-
knaccc
so i could have said show me the anonymity set size going back forever
-
knaccc
and then the level=1 col woudl all be multiples of 11
-
knaccc
but i applied a 7 day observation window
-
knaccc
btw if i take just that first tx in the list, i can then see the anonymity set size at different window sizes and at higher levels
-
sgp_
so basically 9 of those outputs are within 7 days?
-
knaccc
============================================================================================
-
knaccc
Anonymity set sizes for txid: fe39a21b57814a980aea6d69fe8ab9cad609713b84d9c09f97e4b8cf74580e5b
-
knaccc
============================================================================================
-
knaccc
Window (days) | Level=1 | Level=2 | Level=3 | Level=4 | Level=5 | Level=6 | Level=7
-
knaccc
---------------|----------|----------|----------|----------|----------|----------|----------
-
sarang
gah
-
knaccc
1 | 6 | 43 | 700 | 5,439 | 18,833 | 25,354 | 27,873
-
knaccc
3 | 8 | 76 | 1,340 | 15,676 | 74,092 | 91,192 | 93,762
-
sarang
pastebin, my friend
-
knaccc
7 | 9 | 100 | 1,942 | 29,205 | 187,841 | 233,330 | 235,936
-
knaccc
14 | 9 | 108 | 2,330 | 39,611 | 335,643 | 460,474 | 463,143
-
knaccc
30 | 10 | 134 | 3,155 | 58,189 | 604,834 | 916,965 | 919,772
-
knaccc
============================================================================================
-
sarang
stahp
-
knaccc
correct
-
knaccc
oh do you not have monospaced font in your irc?
-
sarang
Pastebin is just classier for many reasons :)
-
iDunk
Not the point.
-
sarang
Fewer pings, easier to copy/paste/save
-
knaccc
here is pastebin
-
knaccc
-
sarang
:D
-
sarang
knaccc: interested in sharing a summary of this at tomorrow's meeting?
-
sarang
-
knaccc
i'm not sure what time i'd be around tomorrow, i'll make the meeting if i can
-
sgp_
I think at this point a write-up is warranted
-
knaccc
yeah
-
knaccc
i'll put something together
-
sarang
Great
-
sgp_
the churns test is the most directly applicable but also only 10 samples is quite small sadly
-
sarang
You're welcome to post anything onto the agenda issue if this is handy
-
knaccc
the bottom line is that if you have multiple poisioned outputs, you need e.g. 6-7 levels of churn, and that's not something we can really recommend without spamming the blockchain and making wallet scanning times too long
-
knaccc
so all of this fancy schmancy analysis is kinda moot
-
sarang
There's an interesting social aspect to the "are my outputs flagged" question
-
sgp_
would also be awesome to test arbitrary ringsizes :D
-
knaccc
yeah
-
knaccc
can someone point me to the current selection algo, preferably described in plain english?
-
selsta
zero to monero 2?
-
knaccc
oh that's up-to-date is it?
-
sgp_
I'm also most interested in 0-3 churns, anything more than that is hella niche (anything >1 is already super niche)
-
sarang
-
sarang
However, that paper does not account for block density
-
sarang
-
sarang
-
sarang
(that script tested several methods)
-
sarang
IIRC the window we use for estimating "output time" is 6 months
-
knaccc
selsta unless i've failed to locate it, i don't think z2m2 has the ring selection described
-
sarang
I recommend the python code
-
knaccc
sarang so if i copy the python code, that's exactly what monero currently does?
-
knaccc
gah numpy.random.geometric
-
sarang
With the exception of the overall block timing window, should be
-
knaccc
it'll take quite a while to figure out how to get equivalent libraries for java and reimplement this
-
Isthmus
Very interesting anlysis
-
Isthmus
just catching up
-
Isthmus
"the bottom line is that if you have multiple poisoned outputs, you need e.g. 6-7 levels of churn, and that's not something we can really recommend without spamming the blockchain and making wallet scanning times too long"
-
selsta
knaccc: it is mentioned but then miller et al paper is linked for more details
-
sarang
why java
-
sarang
python iz easy
-
Isthmus
In this case, what should we recommend for people whose threat model includes multiple poisoned outputs? Just to not use Monero, because the churn necessary for anonymity is considered spam to others?
-
knaccc
because you can't memory map a file in python to get ultra fast blockchain lookups
-
sethsimmons
Small amounts of churn are fine
-
sethsimmons
I believe he was meaning everyone churning all outputs 6-7x would be spam
-
knaccc
yeah
-
Isthmus
Oh gotcha, yea
-
sethsimmons
My idea was to allow "flagging" of subaddresses at creation time that enable auto-churning 1+ times of each received output
-
knaccc
we won't want monero to be untraceability-theater for most users unless they do special churn techniques
-
Isthmus
^^
-
sethsimmons
So, for instance, I have a subaddress per exchange used, I could flag those (manually or at creation of the subaddress) and the wallet would churn in the background.
-
Isthmus
That's a cool idea
-
sethsimmons
It has to be something that can be brain-dead for everyone to benefit from it, if this heuristic is a threat to most users
-
sethsimmons
Obviously power users can sweep_single easily in CLI already
-
sethsimmons
I know I don't need to churn the lunch money my friend sends me, so why waste the TX fees and spam the blockchain with that
-
sethsimmons
But I also don't want to manually sweep each "risky" output I receive
-
sethsimmons
And obviously dusting of addresses only works for known addresses in Monero, so if I only share one subaddress with each exchange their dust will always be churned
-
knaccc
i'm reminded of this
imgur.com/gB65bZg "Deep Anonymity Accounts"
-
sethsimmons
ah interesting!
-
sethsimmons
Basically that, but has to be forced as a choice to the user, not manual/hidden
-
knaccc
essentially in their wallet, where they already create multiple accounts, they can create a "Deep Anonymity Account" and a "Regular Privacy Account"
-
selsta
knaccc: is this basically a wallet feature with no extra crypto?
-
knaccc
and use the DAA when they are worried
-
knaccc
selsta correct
-
sethsimmons
so my ideal flow is: Receive>Create new address>Prompt appears asking if I will be using this address for exchanges and untrusted third parties (wording needs to be clear here)>Yes flags it for autochurn, no treats it like normal.
-
midipoet
knaccc: where did that come from?
-
knaccc
midipoet i made it in 2017, when i first started talking about EABE issues :)
-
selsta
so basically it should also work with subaccounts?
-
midipoet
knaccc: cool
-
sethsimmons
yes could work with anything
-
sethsimmons
It just changes wallet behavior
-
knaccc
selsta yes it's just like normal accounts, except the wallet automatically churns when you transfer between accounts
-
knaccc
instead of just letting you directly transfer funds
-
selsta
do you know if 7x churn is necessary with triptych?
-
selsta
or could that be reduced?
-
sethsimmons
So: Send from DAA>Wallet "intercepts" and churns > Sends when done churning?
-
knaccc
perhaps reduced
-
knaccc
the key insight in that DAA thing is that if someone doesn't know your real-world identity, you don't have to churn at all
-
knaccc
you can just receive from and spend with people that don't know your real-world identity
-
knaccc
no blockchain spam required
-
sethsimmons
true, thats a good differentiator
-
sethsimmons
Well, some, but only when the threat is real/clear
-
knaccc
unless you want to transfer to an account where you transact with an exchange or something
-
sethsimmons
Its not spam, per se, but still bloat
-
knaccc
at which point the wallet will do the churn
-
sethsimmons
But for a good and needed reason
-
sethsimmons
So wallet says "Will this address be linked in any way with your identity?" might be a better popup in my subaddress/subaccount idea
-
sethsimmons
And if yes, autochurn 1+ times
-
sethsimmons
Much better wording there, I like it knaccc
-
knaccc
still though, all of this is going to confuse the hell out of people
-
sethsimmons
Will need a clear doc to link to from the popup if we do something like that
-
knaccc
we're gonna have to explain that if you churn, you can make monero more private, not that it wasn't already private, but now it's more private, not that if you don't do this you won't have privacy
-
sethsimmons
But most will just answer yes or no and not care I think
-
knaccc
it's too complicated to try and explain
-
knaccc
that's why my preferred solution requires no churn
-
sethsimmons
the tagging?
-
knaccc
right.
-
sethsimmons
Yeah, that requires a lot of changes though
-
sethsimmons
So is likely a ways off
-
knaccc
yeah, it's an almost impossible ask
-
sethsimmons
Churning could be done today in theory, as the protocol obviously already supports it
-
sethsimmons
I like the tagging long term, but churning is a good interim solution
-
knaccc
but then we are going to hit immovable objects
-
knaccc
in terms of wallet scanning time.
-
sethsimmons
And we need to clearly explain that churning reduces a common attack vector against Monero, but isn't always needed
-
sethsimmons
It's not a big deal if a couple of transactions per user get churned every once in a while
-
sethsimmons
People aren't receiving from VASPs etc frequently
-
knaccc
if we wanted to do a quick fix to partially address these recent tracing concerns, i'd recommend 1 churn automatically done on each incoming output prior
-
knaccc
delete the word prior off the end
-
sethsimmons
Yeah, but thats a lot of interim, unrecoverable blockchain bloat
-
sethsimmons
For who knows how long
-
knaccc
correct
-
sethsimmons
2x the storage and compute for the foreseeable future is non-ideal, but if its that big of an issue it could be done I guess
-
knaccc
it all depends on how seriously we take the threat
-
sethsimmons
But I'd lean more towards selective churning if at all possible
-
sethsimmons
<knaccc "it all depends on how seriously "> Absolutely
-
knaccc
if we can kick the can down the road, and if this recent angst fades, we can go back to being content with untraceability-theater
-
sethsimmons
The other alternative is re-sharing the Breaking Monero on EABE and recommending users with advanced threat models churn 1+ time when receiving funds from a "risky" source
-
sethsimmons
<knaccc "if we can kick the can down the "> :P I don't think anyone is content with that
-
sethsimmons
But rather the pros are not clearly outweighing the cons until this CT stuff
-
sethsimmons
This could be a good fire under us to figure out a path forward for this specific heuristic
-
knaccc
the fire will fade, we'll announce that we're aware of certain heuristics and that MRL is working on research to enhance untraceability
-
knaccc
and then the pressure will be off
-
knaccc
XMRUSD is up 2.62% today, why rock the boat
-
sethsimmons
I don't want the pressure to be off :)
-
sethsimmons
This was a good push, lets ride it if there is a good solution forward
-
sethsimmons
knaccc: any good guides/docs on churning currently? I don't even see a way to do it in the GUI at all
-
sethsimmons
And, tbh, I've never done it before
-
sethsimmons
nvm, this is MRL channel, we can leave that topic for elsewhere/another day :)
-
thrmo
maybe we should have churn capabilities built into the GUI per output.
-
Isthmus
-
knaccc
sethsimmons since outputs need to be churned independently, it can be quite hard to do it yourself
-
Isthmus
We were thinking about adding churn functionality to the CLI / GUI
-
knaccc
so really there needs to be auto-churn queuing on incoming outputs as a wallet feature
-
sethsimmons
<Isthmus "Insight has some internal docs a"> Thanks!
-
sethsimmons
<knaccc "so really there needs to be auto"> Yeah has to be automatic to work for the masses, and has to be clear why it should be on/off
-
knaccc
i've long thought that tx queuing in general would be useful anyway, even if no churn
-
knaccc
because then people don't have to wait for transactions to complete before making more transactions with the change
-
knaccc
they just initiate the txs and the wallet queues them up and submits them when funds are unlocked
-
knaccc
the idea that people need to set a timer to return to their wallet to do a further tx is crazy
-
sethsimmons
Its true, I would love that, but that also requires leaving wallet unlocked in some way for long periods
-
sethsimmons
Because you can't sign the TX until the parent is confirmed, correct?
-
Isthmus
Yea, since ring members are referenced by output index instead of something intrinsic like tx_hash
-
knaccc
right, the wallet would need to keep your privspendkey around until the queued stuff is completed
-
knaccc
and churn would not be fun with hardware wallets
-
sethsimmons
<knaccc "and churn would not be fun with "> I don't think this is a problem, just recommend that people don't send straight from exchange to cold storage
-
knaccc
but then their funds are exposed
-
knaccc
negates the advantage of having your private key only on your hardware wallet
-
sethsimmons
True, then HW wallets are gonna suck in a major way lol
-
sethsimmons
Come back to your Lexger and sign every few hours
-
sgp_
Isthmus: it's always amusing to see my comments from over a year ago on rando docs haha
-
sgp_
knaccc: you still here? I have a question about the churn test. How are the other pairs selected? for example the 10 pairs