204 karma · joined May 22, 2022
https://github.com/signalapp/Signal-Android/blob/main/app/sr...
Instead of linking to source code examples, which is easily misunderstood, here is Matthew Green's summary:
https://blog.cryptographyengineering.com/2020/07/10/a-few-th...
Alternatively, you can just open the app settings, which tells you that it will attempt to restore your contacts if you create a PIN:
> PINs keep information stored with Signal encrypted so only you can access it. Your profile, settings, and contacts will restore when you reinstall. You won’t need your PIN to open the app
https://github.com/signalapp/Signal-iOS/blob/main/SignalServ...
The primary developer has stated previously that cloud storage is still used even with the PIN disabled:
https://community.signalusers.org/t/beta-feedback-for-the-up...
As it stands now, people who create a Signal PIN aren't even warned about the security implications of using weak numeric PINs, which is among the worst of all possible worlds.
If this feature is critical, it should have been gated behind prominent passphrase entropy warnings, along with the data being put at risk [1], or it should have enforced actual strength requirements.
Signal is still better than most other messengers. I am mostly comparing it to its former self. And its former self worked flawlessly without needing to upload persisted contacts information.
1. https://github.com/signalapp/Signal-Android/blob/main/libsig...
1. Support phone number contact discovery, with persistence provided by the contacts provider. This is seamless and causes the least amount of complaints.
2. Support username discovery, with persistence provided by passphrase-encrypted online storage. This is painful and risks backlash from people losing access to data. Also, now the threat model must account for or ignore weak derived keys (which is probably most of them).
- 2a. Enforce strong passphrase requirements. Many users will abandon the product.
- 2b. Sync usernames between linked devices (using a generated key). Requires multiple devices, risks people losing data, more complaints.
- 2c. Sync usernames using custom contacts provider fields (e.g. email). Nobody is accustomed to doing this, but it might work. Automatic discovery rates would be low. Possibly requires an odd workflow for people adding Signal contacts by their email/username.
- Tailscale’s coordination server
- Tailscale’s cloud provider
- anyone who compromises the coordination server
- SSO provider you have chosen
- SSO’s cloud provider
- anyone who compromises the SSO provider
Why would you expect anything else? That’s like saying Wireguard or SSH servers should just accept any client. The purpose of mesh VPN controllers is to automate redundant key management, not to subvert the original security model.
- Tailnet traffic needs to be associated with an approved device key
- Tailnet device addition needs to be signed by the offline key of another approved device
If a compromised control plane and/or SSO provider can add and approve devices on their own then the security architecture of Tailscale would be fundamentally broken. I wouldn't even call it end-to-end encrypted.