-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[discussion] swarm id coverage of individual service node operator #479
Comments
The code below prints the number of nodes controlled by a wallet and the number of unique swarm IDs covered by these nodes.
|
By the way, according to my tests, a simple simulation based on a random number generator can accurately predict the number of unique swarm IDs, based on the number of nodes owned by an operator.
|
This swarm ID distribution presents an intriguing potential issue. An attacker intending to scrape Session user IDs and messages may only need to control 263 selective service nodes in the most optimal case. This scenario becomes feasible if the attacker can strategically bribe specific service node operators controlling the nodes with the desired Swarm IDs. Consider a hypothetical scenario: a Session competitor creates a new app, "Tession." This competitor markets Tession as "Session-compatible," secretly operating a substantial number of Session service nodes. By doing so, they could clone messages from the Session storage server to their new Tession storage server. In the future, they could encourage Session users to restore their Session accounts on Tession, instantly gaining access to their previous social connections from the Session network. This would be akin to entering your phone number and importing your contacts to WhatsApp, but in a more decentralized and private way. Moreover, Tession could potentially bribe 263 Oxen service nodes, offering them Tession Network Tokens to stake on the Tession Network in exchange for helping scrape Session storage. This process can happen in a long time during the competitor trying to onboard Session users to their app gradually, a bidirectional bridge between Tession storage server and Session storage server can also be built in theory. It's crucial to note that the network effect typically serves as a barrier preventing a later competitor from surpassing its predecessor. However, this rule is a bit weaker in a decentralized setting. The theoretical scraping attack described above highlights a possibility for a competitor to expend a relatively limited budget to "hard fork" an existing user base, akin to how Bitcoin Cash hard forked from Bitcoin. While this doesn't imply it would be easy for a competitor to convince users to switch and gain an advantage, it does lower the barrier and suggest the importance of maintaining alignment between the service node operator community and the development team. If service node operators share the same interests as the development team, they're less likely to sell user data to support a competitor. Notably, such an action wouldn't directly infringe upon user privacy, although it would contradict the initial assumptions we implicitly made about service node operators' behavior. |
This is not a bug, it is a reference and reminder for reasoning about the threat model of the Session network. (There is no way to submit an issue without the default
bug
label.)The OPTF wallet currently controls 10% of nodes; however, it covers 131 unique swarm IDs, accounting for about 50% of all 263 swarm IDs.
The second-largest operator is L6qq, which controls 120 nodes but covers 95 unique swarm IDs, accounting for about 36% of all swarm IDs.
The text was updated successfully, but these errors were encountered: