fraction / oasis

Free, open-source, peer-to-peer social application that helps you follow friends and discover new ones on Secure Scuttlebutt (SSB).
http://oasis-demo.fraction.io
GNU Affero General Public License v3.0
286 stars 42 forks source link

More granular networking controls for local, internet syncing #121

Open cinnamon-bun opened 4 years ago

cinnamon-bun commented 4 years ago

What's the problem you want solved? Local and internet syncing have different privacy implications.

Local syncing lets nearby people on the same WiFi match your face to your account. Anonymity scenarios: teens vs parents; coworkers; coffee shop.

Internet syncing lets distant people match your IP address to your account. Anonymity scenarios: harassment by internet trolls. Also internet data sometimes costs money.

Local on Local off
Internet on typical non-paranoid use hide from parents / coworkers / coffee shop people
Internet off hide from internet trolls but sync with local people (SSB meetup / activists) hide from everyone (I use this when my VPN is turned off)

Is there a solution you'd like to recommend? Add separate controls for local syncing and internet syncing, on the CLI and as web buttons. --offline would still control both.

We'd pass these options to ssb-conn but I don't know exactly how.


Extra credit Separate "internet" into "pubs" and "rooms" which have different privacy properties; or add option to require approval before connecting to a pub or room-peer.

Right now SSB syncs with every pub it can discover even if you have no relationship with them. One of them could easily be logging everyone's IP addresses and SSB keys.

christianbundy commented 4 years ago

We'd pass these options to ssb-conn but I don't know exactly how.

Same. It's also worth mentioning that SSB-CONN doesn't expose db, hub, staging, or query over MuxRPC, so we'd need to either:

nickwynja commented 4 years ago

I imagine the CLI option for this could be like --connections where options could be one of all | local | internet | pubs | peers | none. --connections=none would be synonymous with --offline.