Skip to content
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

Facilitate sharing of keys and client binaries behind internet restrictions #1832

Closed
shakiba opened this issue Feb 3, 2024 · 17 comments
Closed

Comments

@shakiba
Copy link

shakiba commented Feb 3, 2024

What would you like the app to enable you to do?

Currently installing a client and sharing server configs with a new device behind internet restrictions is not easy. I have a few suggestions for making it easier:

  • Proxying Outline client downloads over Outline servers
  • Using readable short urls for an invitation page hosted on the server (for example 142.251.32.110/YPCU8T7KGN)
  • Using QR code in Outline clients (and manager) to share server configs, and client apps download links
  • Using Access Request or something similar to WiFi WPS to allow a new client connect to a server without a key

Describe alternatives you've considered
Sometimes there is no alternative. A new device needs to already have a secure messaging app and/or a proxy/vpn tool installed.

Additional context

@shakiba shakiba added the feature request New feature, we are tracking it label Feb 3, 2024
@daniellacosse daniellacosse changed the title Sometimes cold-start is frozen Facilitate sharing of keys and client binaries behind internet restrictions Feb 12, 2024
@daniellacosse
Copy link
Contributor

Great ideas! A couple of questions on our end:

  • Do you mean a link that's the literal download location of the client binary? Or a link to the app store location? The former I think would only really be for Android (hard to scan codes on desktop, apple doesn't support sideloading in most places)
  • How do you propose people fetch outline clients and keys over a connection that could potentially be restricted (with the exception of the WiFi/LAN transfer)? Put another way: in your situation, is it a UX issue or is it a network issue?

Also, I put up a PR last week that allows providers to turn on sharing, it's a start: #1836

@daniellacosse daniellacosse self-assigned this Feb 12, 2024
@shakiba
Copy link
Author

shakiba commented Feb 12, 2024

Hi, thanks for picking this up!

  • Yes, my suggestion was related to android sideloading.

  • My suggestion is fetching it from the server itself via a temporary short url. I assumed access to the server is not restricted, otherwise the server would not be useful anyway? You would just communicate the short url verbally, so it’s helpful when you start on a device from scratch.

Your PR is a great start, thanks for your work!

@daniellacosse
Copy link
Contributor

Hi, thanks for picking this up!

  • Yes, my suggestion was related to android sideloading.
  • My suggestion is fetching it from the server itself via a temporary short url. I assumed access to the server is not restricted, otherwise the server would not be useful anyway? You would just communicate the short url verbally, so it’s helpful when you start on a device from scratch.

Your PR is a great start, thanks for your work!

I guess if it's a separate service with a separate IP address that rotates, maybe that's okay? What do you think @fortuna

@shakiba
Copy link
Author

shakiba commented Feb 12, 2024

Why a separate IP? If it needs to be not discoverable, how about making path after the IP a random and rotating token?

@daniellacosse
Copy link
Contributor

daniellacosse commented Feb 12, 2024

In that scenario the IP is still leaked. If someone goes to the authorities saying "I got a key from x.x.x.x/<random>" then the authorities just have to block x.x.x.x

@fortuna
Copy link
Collaborator

fortuna commented Feb 14, 2024

@shakiba just send people to the download links directly: https://www.reddit.com/r/outlinevpn/wiki/index/download_links/
We keep them on s3.amazonaws.com domain, so it's not blockable without blocking all of Amazon S3.

I don't understand the QR code idea. If you can send a QR code, you can send a link.

@fortuna fortuna added the needs more info We need more information in order to help or verify label Feb 14, 2024
@daniellacosse
Copy link
Contributor

daniellacosse commented Feb 14, 2024 via email

@shakiba
Copy link
Author

shakiba commented Feb 14, 2024

The idea behind the QR code is people can share in person without having to go over the network. You're in the same room, you pull up the QR code on your phone and your friend scans it.

Yup, QR code and short url are helpful to set up a new device that has restricted connectivity.

In that scenario the IP is still leaked. If someone goes to the authorities saying "I got a key from x.x.x.x/" then the authorities just have to block x.x.x.x

I may be missing something here, please feel free to correct me: my understanding is that when you invite someone you share the server ip address with them, so a short url to an invitation page doesn't increase the risk.

@daniellacosse
Copy link
Contributor

The idea behind the QR code is people can share in person without having to go over the network. You're in the same room, you pull up the QR code on your phone and your friend scans it.

Yup, QR code and short url are helpful to set up a new device that has restricted connectivity.

In that scenario the IP is still leaked. If someone goes to the authorities saying "I got a key from x.x.x.x/" then the authorities just have to block x.x.x.x

I may be missing something here, please feel free to correct me: my understanding is that when you invite someone you share the server ip address with them, so a short url to an invitation page doesn't increase the risk.

I guess I don't quite understand what your proposal buys. Why not use a dynamic key?

@shakiba
Copy link
Author

shakiba commented Feb 15, 2024

Dynamic config is actually critical for updating configs, but for the first setup it’s not helpful. Eventually there are alternatives ways, but currently onboarding a new device is not very smooth.

@daniellacosse
Copy link
Contributor

daniellacosse commented Feb 15, 2024 via email

@shakiba
Copy link
Author

shakiba commented Feb 16, 2024

Passing the direct download link to the new device, then sharing the configs with the new client (all with very limited internet access).

@daniellacosse
Copy link
Contributor

Ah, so your proposal is to send the html invite from the server, is that right?

@shakiba
Copy link
Author

shakiba commented Feb 16, 2024

No. My suggestion is showing invitation when they visit ‘server-ip/readable-short-token’ (and potentially expire token after a limited time).

The workaround is making a public online doc, and then using another service to make a short url or a QR code to the doc.

@daniellacosse
Copy link
Contributor

@fortuna didn't you use an appscript to make something like this?

@fortuna
Copy link
Collaborator

fortuna commented Feb 16, 2024

@shakiba
Copy link
Author

shakiba commented Feb 16, 2024

Very cool, it would be great if this is integrated into Outline manager and server

@daniellacosse daniellacosse added has workaround and removed needs more info We need more information in order to help or verify labels Feb 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants