Right now that's not a problem because your social graph is in the address book on your phone, and isn't managed by Signal. This is one of the primary reasons that Signal uses phone numbers for addressing: it leverages an existing user-owned and user-managed social graph. However, what we've repeatedly heard from users is that they don't want addressing to be based exclusively on phone numbers for a variety of reasons.
If we're not using that social graph, then where does the Signal-specific social graph live? For every other app in the world, the answer is that it lives in a server-side plaintext database. Snapchat, WhatsApp, Telegram, Matrix, Wire, FB Messenger, Skype, etc etc... they're all just storing your entire social graph in a plaintext database (along with a bunch of other stuff, like your groups, profiles, etc).
Given the way that technology has developed (devices are fundamentally designed for a world of clients and servers), it's probably not possible for us to build something that makes no use of servers. Instead, we've focused on building something that doesn't store or transmit any sever-side plaintext.
For instance, when you set your Signal profile name and avatar, that lives "in the cloud" so that other Signal users can retrieve and display it. But it's encrypted (https://signal.org/blog/signal-profiles-beta/), so only your contacts can see it (not us).
With Signal Private Groups (https://signal.org/blog/signal-private-group-system/), again we have to store data "in the cloud," so that there's a canonical data source for group management, but again all of the contents are encrypted so that only group members can see it (not us).
In this case, we're using Secure Value Recovery to ensure that a future addressing scheme that's not based on phone numbers is available across app reinstalls, phone switches, phone loss, etc. We could have just done what every other consumer messaging app in the world has done (store it in plaintext on the server), but we built this instead. It is the most user-friendly option that we could conceive of while still being privacy preserving, and took a lot of engineering work.
We're going to keep looking at all the feedback we've gotten, though, to try to make it the best experience we can.
Instead of typing in a pin few days/weeks for years, why not just have an export feature that users can select. Have users fill out an encryption key, then 1 minute later when they grab their new phone they can type it in again.
Ideally this would work from the desktop client, a tablet client, and phone clients. So if my device dies, is stolen, or sold I can restore my history from any other signal client I run.
Or maybe use the IOS approach which allows users to cloud sync to keep history (if they want), or to turn it off, which is less convenient, but more secure.
Either approach would save 10s or 100s of pin entries, and still provide a good user experience when switching phones.
Why not just allow users to load their data into the cloud with a pin or password? My friends that use Signal because I pressure them into it (remember, that's why a lot of people use Signal) just want a one click upload/download. Generally these are also iPhone users, which currently doesn't allow this. Why not just give a one-click option to sync into drive or iCloud? Make it optional too (for the privacy folk who are generating your userbase). Doesn't this solve the whole problem?
Edit: it's especially stupid if you can't use a pw manager with it. I haven't tried it because I don't want to set one. Once I'm forced, I'm going to ditch signal. Fuck that.
Right now, if I re-install Signal on a new device, it will (hopefully) prompt me for a Signal-generated passphrase that I've stored very securely, and then allow me to restore everything, messages and address book, from a backup that I've diligently made and stored under an additional layer of encryption together with the rest of my data.
Will that facility remain available? Will the backup remain encrypted with the strong passphrase, or will any app with access to external storage be able to exfiltrate something that the Signal Foundation would be able to decrypt under the assumption that SGX is broken?
While I've so far been impressed with Signals' choices (prioritizing security but staying usable), I'm extremely disappointed with the new reliance on SGX, and forcing me into this scheme would likely get me to ditch Signal.
In particular, if I get a dialog forcing me to set a PIN, I'm out (at that point, Signal will be broken for me anyways - I'm using it to talk to very non-technical users that react to UX changes with a blank stare; they won't be able to use the app if a mandatory modal popup shows up, and flying over to teach them how to deal with it isn't exactly an option right now.)
I use Signal so I don't have to trust opaque stuff happening at a third party. From my understanding, Secure Value Recovery relies heavily on SGX, and becomes mostly equivalent to plain text (brute-forcing a short PIN) if you don't trust SGX.
This is true for today's Matrix network, but we do have peer-to-peer Matrix working now too (as previewed at https://fosdem.org/2020/schedule/event/dip_p2p_matrix/) which stores the metadata purely on the clients. There are no servers, other than rendezvous points to seed the network. (It's still vulnerable to traffic pattern analysis, but we're working on that - and Signal suffers this even more).
It's also worth noting that because Matrix doesn't tie identity to phone numbers (or anything else), the 'social graph' which is built up is of limited use if it's built up of anonymous personae.
for signal pins today, there should be an option to not be reminded of it because the user has a password manager. The option to not remind could be buried in the settings with a big scary warning that says if you do not get reminded again you will lose everything.
Signal pens can be bypassed entirely in the cases where users have multiple devices such as a linked phone or desktop.
One device sets a strong alphanumeric pin and sends it to the server. Users can share an ID unique to each signal installation on each of their devices. Each individual device has the ID for every other individual device. For each device that does not know the signal pin, it can request it from a device that does have the signal pin and or the device that made it. If a signal installation has the pin and gets a request for the pain from another device ID that it knows about, it provides it.
This device ID exchange behavior is used in syncthing to support e2ee peer-to-peer file sync, and could be used for syncing metadata in the situation where one device has its installation lost or reinstalled and needs to be repulled from the central servers.
An existing device(s) is told the Id of a new device and the new device is told about the existing device(s). None will communicate with the other without already having the user enter the device ID.
Once the two installations have handshaked, the existing device tells the new device what the seignal pin is and it can download it from the signal server.
For users who do not wish for cloud storage could have their device treat another device as the canonical source for the data post handshake and the data could be synced over lan or using stun/turn.
How about letting people back this up? There's no way to do this on iOS or in the desktop app. You're solving a problem of your own making with a solution your core audience of privacy conscious users does not want.
Why force this "feature" on everyone? There is ZERO reason for Signal to do this. I might as well use WhatsApp if you're going to start doing this shit, but I guess that's the point.
One of the things that made me optimistic about broad adoption for Signal prior to this change is that it was basically zero-friction for Android users to use Signal over the stock messaging app, aside from the few seconds it takes to download Signal and enter your phone number. But bugging the user for a PIN all the time is a significant reason to stick to the stock messaging app (or any other one, for that matter) and makes it a lot harder for me to recommend Signal in good faith to friends and family who don't care about privacy.
In my opinion as power users we forget what regular users want and need, and are not willing to give up a little of what we like. But think of the benefits (phoneless sign ups and much much better private groups, to begin with) and tell me they don't outweigh the cons (a PIN prompt once every 2 weeks, in the marginal case).
This cannot be stressed enough
Imagine needing to configure and remember a PIN on the spot when you need to urgently read your messages.
Their handling of PINs seems quite contrary to their goal of pretty good security for the largest possible number of people.
It's VERY frustrating to have your device asking for pins every time you use it. I'm trying to protect from attackers on the internet, not someone who is going to assault me. After all if they assault me for my phone they can assault me for my pin. Single devs need to read https://xkcd.com/538/
They should explain what the pins is BEFORE they ask. What it looks like is you are going to be locked out of signal if you make a mistake. Not like the average signal user is watching the whisper systems blog.
It's kind of a difficult thing to ask. "Do you want this app to work like every other app in the world in the ways you've come to expect?" If people were to simply reinstall Signal and find that all of their contacts were gone, all of their groups were gone, all of their block lists were gone, etc... they'd almost certainly be surprised. It's not a behavior anyone expects.
Every other consumer messaging app in the world solves this by storing all of that information in plaintext on their servers. We're trying to do something privacy preserving instead, and have done a fair amount of engineering work to try to make it as frictionless as we possibly can.
If you have ideas for how we can achieve the same ends with less friction, we're definitely interested in the feedback.
> Not like it's going to be hard to brute force a user's PIN.
Check out this blog post for more information about the technology:
You could say:
"Hi there! Do you want to keep a backup of your conversation metadata locally, or via the cloud? The latter requires you to be badgered for a pin every day and lose all your data, even the information that the pin doesn't protect, if you lose it. The former allows you to backup to a file you can save on your computer, and store a password in your password manager!"
Asking for it once at the time of a new registration, install, or a restore/reinstall would be far more preferable to me. Treating it more like a "filevault" key or an "encryption phrase/password", would certainly encourage me to use a much longer key and just put it into a password manager (and/or write it down and put it somewhere physically safe).
I see a lame excuse.
Lets be real: Groups have never worked very well in Signal, so people use alternatives. It's been my experience that at some point it screws up and everyone has to delete the group and we start over again.
Contacts are stored by Apple, Google, Microsoft, and/or their work email provider for a large majority of the population. Only the minority using burners might care and they are likely already used to setting up lists every time they burn a device.
Put a checkbox in the app for: 'Store my blocklist and profile info in Apple/Google's backup system. This will share info with them'. Some users will want that, others won't. Quite a few people would like to have Signal's message backups included in an offline iOS backup, their complaints have fallen on deaf ears. Stop pontificating and give the option. It was a bigger compromise on your end creating a Signal Desktop app than it was to provide an option to include message exports in an encrypted backup.
Say what you will about Telegram, they made a much more reasonable compromise with their 'secure messaging'. This feature is not in their desktop apps as the attack surface of a desktop/laptop is too large. Secure chats instead focus on ephemerality and are torn down after completion. It's a more realistic threat model.
>Check out this blog post for more information about the technology:
Ah yes, the complex technology that relies on the insecure broken thing from Intel: https://arstechnica.com/information-technology/2020/03/hacke...
I guess it depends on if you buy into SGX. Lots of people don't.
> Still stupid
Yeah, this isn't making anyone happy it seems. Still, they are a small organization and having configuration increases maintenance burden. As long as Signal keeps operating as non-commercial product, I will keep cutting them slack.
Edit: Now I see. Signal wants to save data in the cloud. My Threema PIN is just for my device.
Yeah: particularly given how Intel SGX gets broken every year :/... prime+probe, foreshadow, load value injection, plundervolt... Moxie's fetish for Intel SGX is extremely concerning.
They want to add signal identifiers that aren't phone numbers. If such identifiers are to communicate with you, you need to store what's necessary.
I don't blame signal for forcing strong PINs, I don't know what's their purpose, but non phone number identifiers don't require cloud storage. The contact list (with the associated public keys) does.
What? How? You just need a key (password). If you are able to log into that "identified" then you are online with that and others can message you on that, and the network will route messages to your client.
There's nothing to store up to this point.
And if people want backups they can optionally enable that. Or the network could support multiple clients signed in for the same "identified" and allow those authenticated and authorized clients to sync/backup among themselves.
>Because Signal doesn’t have access to your keys – or your data – your PIN isn’t recoverable if you forget it, so our apps help you remember your PIN with periodic reminders. Don’t worry, these reminders get less frequent over time.
Having read that, I doubt I'll get too irritated at the reminders and eventually they'll go away. You have a point that anyone who hasn't read the update blog will have no similar hope and might use something easy. I guess I'd hope the Signal user base is more security conscious than that. For instance, I know my PIN is going to be alphanumeric and immediately stored my password database.
There is a large segment of people who don't like complicated passwords and will not use a password manager, so the PIN scheme w/ advanced options and password manager integration is the way to thread that needle.
I haven't built that stuff yet though so the current version requires that your home computer has a public IP address and that you open a port in your router. Obviously it's only usable by technical people right now, but I do eventually want this to be something my mom can install and use on her own.
Which, imo, is a pretty reasonable decision.
My partner uninstalled Signal when it failed to work from within the UAE and could not contact me. If she wouldn't have done it then, she would now with this PIN nonsense. At least we can text via Wire.
I don't understand why it isn't just optional. They claim they want to protect my Signal data stored in the cloud. I don't want my data stored in the cloud. I want them to store nothing. I don't care about their Intel SGX whatever because I don't want to have to trust their servers in the first place.
Cloud storage is a complete non-starter for me. I started my company to get away from cloud storage [2]. The fact that they are forcing this on their users is making me seriously consider dumping Signal. I just don't know if there are any sane alternatives.
[1]: https://github.com/signalapp/Signal-Android/issues/9632
[2]: https://homefort.app/