10:08:28 Hello to all the community members of Monero. 10:08:36 I was contacted by Rucknium on queries regarding the paper "On the anonymity of peer-to-peer network anonymity schemes used by cryptocurrencies" 10:08:44 I could sense that there was some confusion regarding what the assumptions are with regards to learning the privacy subgraph. 10:09:04 I think this statement from the previous chat captures it well 10:09:19 "Their wording is "We send 50 transactions per honest node before analyzing the distribution of diffusions per node." I'm not sure if the adversary nodes or the honest nodes are sending these txs." 10:09:28 I will try to clarify this in the following point. If you still have doubts please feel free to ask. 10:09:37 (1) The assumption is that the adversary will send transactions to honest nodes (Appendix point 4 of the description of learning the subgraph). 10:09:47 Now, whether these transactions are generated by other nodes and forwarded to the adversary or the adversary itself generates them doesn't matter for the analysis. 10:10:02 If there are sufficient transactions being generated and forwarded to the adversary nodes in the network, there would not be any need for generating extra transactions by the adversary themselves. 10:10:10 However, if the transactions are low in the network, the adversary nodes would generate more transactions so that they can observe more diffusions per honest node. 10:10:16 (2) To analyze the diffusions, it is essential that the adversary keeps track of what transaction was forwarded to which honest node. 10:10:24 Thus, we analyze the diffusions of only the transactions that were forwarded by the adversary to some honest node for which it wants to learn its edges. 10:12:42 Hi. Can you idle in there today ? Might be a bit before people who know about this read what you wrote. 10:18:57 Sure, no problem! 13:56:08 p2p_anon: Thanks for coming to talk here :) 13:59:13 I see. The adversary could launch an active attack by flooding honest nodes with transactions. In Monero's case that could get expensive since the adversary would have to bid above the minimum transaction fee when the mempool starts to get full and nodes drop low-fee transactions. 14:01:52 The crux of my concern with the paper's results is that it assumes a ratio of 50 transaction broadcast per node (not necessarily broadcast by honest nodes) to learn the private subgraph. But the original Dandelion++ protocol instructed nodes to change their private subgraphs every ten minutes. (I'm not sure what Monero does. vtnerd may know). 14:03:08 We don't have a reliable number of how many Monero nodes there are today. Cao, T., Yu, J., Decouchant, J., Luo, X., & Verissimo, P. (2020) "Exploring the monero peer-to-peer network" counted about 3,000 Monero nodes at a time when the average transactions per day was 5,000. 14:03:20 -!- p2p_anon [~pks⊙p1iatb] has quit [Ping timeout: 265 seconds 14:03:33 About... half an hour ago. 14:04:09 :( I think p2p_anon has the link to the IRC logs. 14:07:15 Taking 3,000 Monero nodes as a lower bound, using your paper's methods an adversary would have to broadcast 6 * 24 * 50 * 3000 = 21,600,000 transactions per day. (number of 10-minute epochs per hour) * (hours/day) * (required txs/node) * (lower bound of Monero nodes in network) 14:09:03 All of those transactions don't have to be confirmed in the blockchain, but they would have to manage the mempool tx eviction policies of nodes. And some of the adversary transactions would have to be confirmed, paying a high fee. This active attack would also be very evident to attentive users. 14:12:29 A more realistic scenario is a larger proportion of adversary surveillance nodes and a lower transaction count. What happens when 50% of nodes belong to the adversary and the average tx count per node is just 1? Since you provide the code on GitHub (thanks!), I suppose I could try out different assumptions. 14:12:43 No Wallet Left Behind Meeting today at 1800 UTC in Matrix room. 14:14:15 Yes, the calculations you have performed are in a sense correct, and portray that an adversary may eventually observing large transactions. 14:14:39 But as you could rightly recognize there is more to the learning that just the number of honest nodes 14:15:10 The number of adversary nodes in the network has an influence as well. 14:18:30 For example, if you have a network of 3000 nodes in total with 300 adversary nodes and 2700 honest ones, you will ideally not need to know the connections for all the 2700 honest nodes, because some of them will be connecting to adversary nodes and you will already learn something about the privacy subgraph without sending any transaction at all. For the remaining ones, the adversary would have to perform 14:18:30 the diffusion analysis, bu the number will be less than 2700, maybe 2550 or in the worst case 2400. 14:19:07 If you increase the adversary to 50%, then I believe most of the privacy subgraph will already be known to the adversary 14:22:05 Also keep in mind, that my assertion above is based on certain assumptions about how Dandelion++ is implemented. Specifically, I assume that the privacy subgraph is roughly 4-regular as described in the original paper 14:23:08 So, every node should have 2 outgoing connections in the monero p2p network. 14:23:08 Right. But knowledge of the private subgraph itself is not the target of the adversary. The IP origin of each transaction is the target. So it would still be useful to know how much an adversary could know if it controlled a very large share of the nodes. (The possibility that multiple adversaries are operating would put a limit on the share that each of them could control, of course.) 14:24:40 Thatś correct! adversaryś eventual goal is to now the IP of each transaction. But, for that analysis, the knowledge of the privacy subgraph is important. 14:24:49 *know 14:25:44 I personally am open to changing the Dandelion++ parameters as suggested by your section VII-E if it would improve Monero's privacy. At this point in time I think the attack in the paper is not very feasible to carry out against the Monero network. 14:26:05 Thanks for writing the paper! You're presenting it at a conference soon, right? 14:27:46 If you need funding for research that would improve Monero, you can apply for a grant at https://monerofund.org/apply_research 14:29:17 I will read more about monero p2p network and will let you know my views as well. From what I know of the p2p structure of monero, I think its much more flexible in terms of the outgoing connections which can be high (>250), in comparison to Bitcoin which limits it to 8 outgoing + 2 anchor. So the analysis and the conclusions can slightly change. Nevertheless, I will look into it in more detail and would 14:29:17 be happy to contribute in any constructive way I can. 14:30:37 And yes, the work will be presented at NDSS 2023. Would be great to chat in person if you are also planning to visit. 14:31:22 For listeners, the paper we are discussing is Sharma, P. K., Gosain, D., & Diaz, C. (2022). "On the anonymity of peer-to-peer network anonymity schemes used by cryptocurrencies. " 14:32:05 Regarding the changes suggested in Section VII-E, they were a bit Bitcoin specific, but as I said, I will relook into the monero p2p network in detail and get back to you. 14:32:24 https://moneroresearch.info/index.php?action=resource_RESOURCEVIEW_CORE&id=130 14:33:30 To me, it makes sense to check applicability to Monero since it is the only major cryptocurrency that actually implements D++. Bitcoin doesn't implement it -- not in every node, at least. 14:34:37 I totally agree with you and it is one of the top priority todo I have. 14:35:01 :) 14:36:45 Unfortunately many things in Monero are not formally documented. They are "documented in the source code". You can ask in this room specific questions and the developers could answer. 14:37:44 I won't be at NDSS 2023, but I wish you luck! 14:47:05 *wonders how many nodes broadcast new TXs over i2p / tor* 15:05:37 @Rucknium[m], Yes, was planning to look at the source code to learn more about the p2p implementation. I also know about the paper ¨Exploring the Monero Peer-to-Peer Network¨ by Cao et al. Is this a good resource to look for some structured information and then following up in the code for details? 15:17:46 p2p_anon: I _think_ it's a good resource, but I cannot really read the C++ code to check if it's accurate. #monero-dev:libera.chat is another good room if Monero developers don't answer here. 15:18:53 Cao et al. (2020) said that they were going to release the node scanning tools "soon", but I wasn't able to find them. endor00 wrote a node scanner: https://github.com/endorxmr/monero-node-p2p-scanner It tends to fail with an error if you set the node search count too high. 15:20:01 There's this short paper that analyzes the feasibility of eclipse attacks against Monero nodes: https://moneroresearch.info/index.php?action=resource_RESOURCEVIEW_CORE&id=132 15:20:50 I believe that vtnerd was responsible for most of the Dandelion++ implementation in Monero: https://github.com/monero-project/monero/pulls?q=dandelion 15:21:37 endor forked a node scanner written by dsc_ 15:49:16 (technically py-levin is supposed to be an implementation of the levin protocol, though only the basic handshake+peer retreival is fully implemented) 15:50:06 "Cao et al. (2020) said that they..." <- btw you can just set the limit to 500 or so and then run it multiple times in a row - all the results will be cumulatively saved in the same output file 15:52:35 I tried to run a full scan of the network and got ~40k peers in total (where a peer is an (ip:p2p_port) pair), though approximately ~10k of those are what I call "fake" nodes (i.e. I believe it's the same node, advertised under thousands of ip:port combinations); not sure if it's just someone doing some experiments, or something actually malicious though 15:59:33 "I tried to run a full scan of..." <- Are these 10k IPs under a few asn? Maybe you can give more details on it so these rouge networks can be blocked 16:02:34 Yep, they are all under a few /24 ranges. Three of these ranges (with the majority of these weird peers) belong to AS54098 https://www.cidr-report.org/cgi-bin/as-report?as=AS54098&view=2.0 , the other two-three were Hetzner's iirc 16:04:19 * merope sent a code block: https://libera.ems.host/_matrix/media/v3/download/libera.chat/10c630db72784f2f29c7add50eb47aea02b72f40 16:06:17 These are the most obvious ones that I found just by eyeballing the results. Some of these ranges have 3-4k nodes each. There is definitely a pattern: they always have p2p ports like 18080, 18180, ..., 18580, 19080, ... 19590 16:07:12 Some of them also list an rpc port as well (again, following a similar pattern as the p2p ports), and some of them are pruned (always the same pruning seed, 387) 16:07:55 And pretty every single one I've tried to contact via rpc (by hand) is unresponsive/dead 16:09:24 "Yep, they are all under a few /2..." <- Should report to herzner, they don’t allow crypto nodes ; if they don’t go offline anytime soon then it’s a state actor 16:10:02 Like I said, they all seem to be dead 16:10:36 Though I have not yet tried going through all of these "weird" peers yet, so there might be some live ones 16:12:20 I have no idea why they show up in peerlists so much. One of the next steps I'm considering is to create a visual network graph, to see if it's just a handful of nodes sharing these weird peers, or if they're more widespread 16:12:58 Though I'm not very well-versed in analyzing p2p networks, so if you have better ideas then go for it 16:16:33 I'm also not familiar with monerod's peer-sharing policy, so I don't know if it just sends every peer that it has ever known, or just the "white" peers, or a subset of these (like i2p), or whatever else 16:16:34 There are a number of different metrics for node/vertex connectivity in graph theory. Probably a better idea than trying to visualize the whole graph. 16:42:52 the dandelion++ epoch is indeed 10-10.5 minutes 16:42:58 https://github.com/monero-project/monero/blob/master/src/cryptonote_config.h#L107 16:46:39 the number of outgoing stems, fluff probability, and embargo timeout should all be tunable from that config file 16:47:23 so you could run a mini-experiment on some isolated testnet if you needed to see how different parms changed semi-real world results 16:48:09 unfortunately the simulations are probably always sub-optimal but far easier to analyze than whatever the crazy monero p2p network is really doing 16:48:57 because we know that there were definitely some kind of node variants connecting to the network in the past - perhaps a ground-up variant too (moo may have more details on those attacks) 16:49:49 someone did a test on a mimblewimble chain - grin? - and showed that the network was so small he could run 90% of the nodes and then ruin grin privacy pretty good 16:50:21 their situation was different though, because they were hoping to use d++ to merge txes into a larger tx to obscure the tx graph 16:50:53 this was their attempt to have ring-signature like effects but interactive (and more compact since it was merging only real spent coins) 16:51:34 basically it failed because even if he couldnt determine the source ip, it was enough to "see" the isolated tx before it got merged by an honest node 16:51:46 interesting research by just some random person 16:54:41 Thanks, vtnerd 19:12:11 evening sirs