Signal knows who you're talking to (2023)

2025-11-2310:22107144sanesecurityguy.com

Or, at the very least, they can. Recently I got a friend to finally join me on Signal. He asked something about whether or not Signal is truly secure and private, like if it was safe from US…

Or, at the very least, they can.

Recently I got a friend to finally join me on Signal. He asked something about whether or not Signal is truly secure and private, like if it was safe from US government surveillance. I told him: “Well, it’s end-to-end encrypted, so they don’t know what we’re talking about, but they definitely know that we’re talking to each other.”

I said that because Signal uses our phone numbers as ID’s. So, Signal would know that Phone Number A is talking to Phone Number B, and if they can figure out that Phone Number A belongs to me, and Phone Number B belongs to my buddy (usually not too hard to figure out with some OSINT or the assistance of certain governments), then Signal would know that my buddy and I are talking, even if they don’t know what we’re talking about.

This is a limit of end-to-end encryption, which I’ve talked about before. End-to-end encryption provides confidentiality of data, but not anonymity or protection from identifying metadata.

However, I was surprised when my friend got back to me saying that, no, Signal actually doesn’t know who’s talking to who because of this feature called “Sealed Sender“.

“Woah! Seriously?! Cool!” I thought. But then I started reading how Sealed Sender actually works, according to none other than Signal themselves, and I found that this feature is very technically complex, and totally useless.

ʕ ಠ ᴥಠ ʔ: Woah! Seriously?! Not cool!

While Sealed Sender is pretty complicated under the hood, the result of it is one-way anonymity. That means that, when Phone Number A sends a message to Phone Number B, Signal won’t know that the message is coming from Phone Number A and will only know that the message is to be delivered to Phone Number B.

It does this in a way that’s very similar to snail mail without a return address: the letter inside the mail envelope might tell the recipient who the sender is, but the mail envelope itself tells the post office only who the recipient is so that it can be delivered to them. If the post office doesn’t or can’t open the envelope to read the letter itself, then they don’t know who the sender is. Later on, when the recipient wants to send a reply to the sender, they can do the same thing.

ʕ·ᴥ·ʔ: Hm, okay. This kind of sounds like it’s anonymous.

Well, yes, it sort of is, but only when there’s only one message to be sent. The problem comes up when multiple messages are being sent back-and-forth like this.

Sticking with the snail mail analogy, what happens when two pen pals keep sending mail to each other from their homes without including return addresses in their envelopes? The postal service might not know who exactly is sending each piece of mail but, over time, they would know that Address A in Lower Manhattan, New York, keeps on getting one-way mail from the post office in 3630 East Tremont Avenue, the Bronx, New York; and Address B in the Bronx keeps on getting one-way mail from the post office in 350 Canal Street, Lower Manhattan.

ʕ´•ᴥ•`ʔ: Oh. Then the postal service would be pretty sure that whoever is living at Address A and Address B are talking to each other.

Exactly. That’s the limitation of one-way anonymity: it works only one way! Once you start doing two-way communications, with replies going back-and-forth, then one-way anonymity is useless.

With multiple messages being sent back-and-forth over time, and with Signal knowing only the recipient phone number of each message, it would be pretty hard for Signal to figure out who’s talking to who when their servers are getting thousands of messages every second from different senders, with each message being conveyed to thousands of different recipients. But, Signal doesn’t know only the recipient phone number of each message; they also know the IP address of each sender. And this is where the snail mail analogy fails, because IP addresses are much more specific than post offices.

Signal messages, as we all know, get sent over the internet, and the internet sends data around using IP addresses. Sealed Sender only protects the sender’s phone number; it does not protect the sender’s IP address. So, if you’re sending Signal messages to your super secret pen pal from your house, and you aren’t using a VPN or Tor, then Signal knows that the messages being sent to your pen pal’s phone number are coming from your house’s IP address (not a post office, your house).

Even if you are using some method of masking your real IP address, you still have to use some IP address in order to communicate on the internet, and Signal will see that the same IP address keeps on sending messages to the same phone number. That’s enough to easily figure out that all of these different messages meant for the recipient are coming from the same sender. Sure, maybe you’re using the IP address of a VPN server or Tor exit node that has other Signal users sending messages at the same time, but that’s extremely unlikely. More likely: Even when you use a VPN or Tor, Signal can easily tell that every Sealed Sender message you’re sending to your pen pal are coming from one person: you.

And if your pen pal replies, the reply will have his IP address on it (the same IP address Signal sent your messages to) and your phone number on it. And then, when you want to receive the reply, you have to connect to Signal’s servers using, again, your IP address (the same IP address you used to send your messages to your pen pal earlier). Just like that, with two messages, Signal figured out which phone number (yours) is talking to which other phone number (your pen pal’s). If they ever decide to try and figure out who own these two phone numbers, they could ask your telecoms, or simply search Facebook and Twitter.

You can’t avoid using IP addresses on the internet; they are a necessity on the internet. But you can use a VPN or Tor to mask your real IP address with a fake one that’s not tied to your identity. But you can’t do that with phone numbers. A phone number is either tied to your identity or it isn’t; there is no masking possible, unless you use a service like MySudo which isn’t available for most of us (US and Canada only, as of this writing). If you’re fortunate enough to be able to buy a prepaid SIM without ID, then great, all you and your pen pal have to do is buy some SIM cards that aren’t tied to your identities. If buying a prepaid SIM without ID ain’t an option, then your phone number has to be tied to your identity, and Signal can use these unmasked phone numbers, in combination with masked or unmasked IP addresses, to figure out who’s talking to who, despite Sealed Sender’s promises, as long as there’s a two-way conversation going on.

Which brings up an interesting question: Why does Signal require phone numbers?

ʕ´•ᴥ•`ʔ: Hey, that is an interesting question…

Signal works over the internet, and the internet requires IP (internet protocol) addresses in order to figure out where a message should go. But sending messages over the internet does not require phone numbers; that’s a requirement when using SMS or cellular calls or mobile data, but not for using the internet. And yet, the “privacy-protecting” Signal app requires you to use a phone number to send and receive messages…

ʕ⚆ᴥ⚆ʔ: Hmmmm…

It gets worse. I keep repeating this: two-way communication. Sealed Sender doesn’t work with two-way communication. But, I’ve kind of been lying. The truth is: Signal already knows which phone numbers have been talking to which, even with Sealed Sender and only one-way communication.

ʕ ಠ ᴥಠ ʔ: What?!

Do these check marks look familiar to you? (Forgive the pixelation.)

ʕ·ᴥ·ʔ: Hm, yeah. Aren’t they the check marks that show up for at least a second whenever I send a Signal message? This is what’s shown after the lone check mark, and before they both turn white to indicate that my message was read, right?

That’s right. The lone check mark indicates that your Signal message was sent to Signal’s servers, these two check marks above indicate that your Signal message has been delivered to the recipient, and the two white check marks indicate that the recipient has read your Signal message.

Now, the thing about the two check marks above is that your Signal app only shows them when your phone has received what’s called a “delivery receipt” from the recipient’s phone. Whenever your pen pal gets a message from you, their Signal app sends a delivery receipt from their phone, through Signal’s servers, to your phone. Their Signal app does this automatically and instantly, and neither of you can turn it off. You can turn off read receipts (the two white check marks) and typing indicators, but you can’t turn off the very first reply: delivery receipts.

The delivery receipt is – ahem – also “protected” using Sealed Sender, but what was it that I’ve been saying this whole time is wrong with Sealed Sender?

ʕ·ᴥ·ʔ: It works only one-way…

ʕ   • ᴥ •   ʔ: It works only one-way…

ʕ   º ᴥ º   ʔ: …and the delivery receipt automatically makes it two-way.

Exactly. And you can’t turn it off. Go figure why.

So if you can’t trust Signal, who can you trust? Well, if all you need is a private text-based communication channel that won’t falsely advertise their privacy guarantees to you, Proton Mail and Tutanota (now called Tuta) are pretty good. But if you want private voice-based communication, then that’s gonna’ be a problem. WhatsApp is even worse than Signal, Telegram is even worse than WhatsApp, Wire requires an email address to use it (another unnecessary requirement), and most of the rest can’t be trusted because they aren’t open-source.

You could use Jitsi for voice communications, but you’d have to use a separate service for text communications. You could use Matrix for both text and voice, but that’s a software and communication protocol, so you’d have to set up your own server running it. You could use Element, which runs Matrix servers, but you’d have to trust Amazon and Cloudflare with your metadata, making this a rather messy solution to a privacy problem.

What that leaves us with is a single service that is still a work in progress: SimpleX. It asks for no global identifiers like phone numbers or email addresses. It at least tries, unlike Signal, to make sure that it doesn’t know who’s talking to who. It does this with the use of proxies that you randomly send your messages through to get to your recipient (the technical details of which are too complicated to get into here). Of course it is open-source and end-to-end encrypted, otherwise I wouldn’t be mentioning it. It even goes so far as to allow you to use Tor with it, or any SOCKS proxy. It’s pretty cool, actually; the most technically amazing communications platform I’ve ever seen.

But, it ain’t perfect. It’s kinda’ slow, and messages sometimes don’t come in in the right order or don’t come in at all. Voice calls are… iffy, particularly when using Tor. It is still a young, developing project, though it has been making great strides in improving itself, including getting a security audit.

Time will tell how it turns out, but at least I can say one thing: we’ve got a viable alternative.

Hey, Kuma!

ʕ •̀ᴥ•́ ʔ: Where have you been for the past 11 months?!

I actually started writing this article months ago and then got busy again.

ʕ ಠ ᴥಠ ʔ: Well at least visit me with some tips and tricks every once in a while.

I’ll try, buddy, but real life comes first before imaginary friends.

ʕ •̀ᴥ•́ ʔ: I know I’m imaginary, but are your subscribers?

I dunno’. Maybe they should give me a hint by signing up below!

Or don’t; my RSS feed’s in the site menu. Unlike Signal, I don’t need you to sign up with a global identifier.


Read the original article

Comments

  • By jwr 2025-11-2310:578 reply

    Signal is in an impossible position. On one hand, it needs to appeal to the crowds currently using WhatsApp and happily syncing their entire contact list to Facebook/Meta, so that they can be profiled and a social graph can be built. That crowd needs it to be super simple and "just work". If it doesn't do that, people will criticize it for being difficult to use.

    On the other hand, it needs to provide ultimate security, even though there is always a compromise between security and convenience. If it doesn't, geeks will criticize it for not being secure enough.

    • By jeroenhd 2025-11-2311:27

      I this case, Signal could give users the option to protect their privacy by giving users the option to disable/mask/randomize timings on delivery receipts. I think there's a way to do it.

      Thanks to this leak, surveillance states don't need to work around sealed sender stuff, though. They can just mass collect the Signal data and figure out IP patterns over time. Without proxying your traffic through ever-changing proxy networks such as Tor, it's only a matter of gathering data. Especially if someone accidentally hits the call button, which arranges a peer to peer setup immediately identifying the two parties.

      Signal is still the best general purpose messenger out there if you value privacy and security. My government uses it as a communication mechanism between people and embassies in places with terrorist presence.

      It looks like SimpleX has some protocol advantages but reading the reviews, the app doesn't seem good enough for the general population. It's probably because they value privacy above usability, but with problems like "messages don't get delivered if the other party doesn't open their app for a few days", that app isn't going to work for the people I talk to. I also can't really find who's paying for SimpleX, all I can find is anonymous donation links and a company listing in the UK (the country known for forcing Apple's hand in disabling E2EE backups). Probably fine, but once again, no messenger is perfect.

    • By dijit 2025-11-2311:472 reply

      Signal would have had a better time if it had opened the idea that they don't have to be the ultimate authority and intermediate message broker..

      Messaging your friends? What about your family?

      One of you a nerd? Have one of those people stand up a server and federate it.

      If Signal remains the "authority" here, then there can be mechanisms for spam reports across federated lines, distributed blacklisting and an appeal process.

      That would alleviate their burden significantly, it would retire the notion that they have to always have perfect security and it would be in-keeping with their idea that "we don't want to have the information that could expose users". The easiest way to not have information at all is to not even relay it.

      • By nik_ca 2025-11-2314:221 reply

        That's actually done already in XMPP (Jabber). Federativity, voice calls, E2EE, direct and offline file exchange, no sms verification and other bs, max privacy and convenience.

        • By dijit 2025-11-2314:40

          Sure, XMPP could go a lot further with a central body which set a minimum set of XEPs to standardise and maintained a blacklist of bad hosts though.

          Signal could have helped a lot here (so could others, to be honest).

    • By Vinnl 2025-11-2311:361 reply

      IMHO it's a very feasible position to just let those geeks keep criticising while meaningfully raising the bar on privacy for the average user. There will always be geeks who complain, but also plenty of them that see that perfect doesn't have to be the enemy of the good.

      • By binary132 2025-11-2315:471 reply

        Aren’t YOU the one saying perfect (“complaining geeks”) is the enemy of the good-enough (“raising the privacy bar for everyone, but not really that much”)?

        I’d go as far as to say good-enough is the enemy of the better.

        • By Vinnl 2025-11-2319:09

          Yes, I am saying that perfect is the enemy of good enough. I think that if Signal were to keep chasing the complaining geeks, it would cease to be good enough. In the sense that it would be far less widely used, and thus not raise the privacy bar of society even a little bit. Which is why I advocate for not worrying about the complaints too much, i.e. to not let perfect be the enemy of good.

          (Obviously there's always room for improvement, but even if there wasn't, the complaining still wouldn't stop.)

    • By baiac 2025-11-2311:27

      Signal have chosen to put themselves in an impossible position would be a better assessment of the situation. Their choices have made it impossible to appeal to either part of the aisle.

    • By bossyTeacher 2025-11-2313:28

      >there is always a compromise between security and convenience

      This is the eternal struggle. You can only hope that Whatsapp will mess up bad enough to outweigh the gigantic convenience it offers to users

    • By fragmede 2025-11-2313:151 reply

      This seems like a good place to drop Blue Sky's RFC on contact list sharing. Basically, they're got a way that you can share your contact list without sharing your contact list.

      Through the magic of cryptography, there's now (maybe) a way to "encrypt" your contact list, upload it, the server can then find your contacts without decrypting it, and connect you with them.

      That's not remotely technically accurate a way to describe what is happening under the hood, but the point is, you can share your contact list without sharing your contact list.

      This magic is in RFC status from Blue Sky here: https://docs.bsky.app/blog/contact-import-rfc

    • By dist-epoch 2025-11-2311:163 reply

      Sounds like 2 apps to me, maybe they should split it into Signal and SignalUltraSafeTM, for the paranoid, but more inconvenient, with some interoperability between them.

      • By CrossVR 2025-11-2311:192 reply

        What if people on SignalUltraSafeTM want to talk to people on regular Signal?

        Telegram solved this already though, they allow users to register using either their phone number or a unique username. But Telegram has a huge spam problem. Which is likely the real reason Signal requires a phone number.

        • By Esophagus4 2025-11-2311:49

          And then you have to pay for premium to prevent unknown users from spamming you!

          Booooo you telegram

        • By nalekberov 2025-11-2311:321 reply

          > But Telegram has a huge spam problem. Which is likely the real reason Signal requires a phone number.

          I was able to register with fake number I got for free on the internet. That clearly doesn't solve SPAM problem. If I know that, Signal certainly knows that.

          • By Sophira 2025-11-2315:261 reply

            Did you have to supply your personal details to anybody in order to get that free number?

            • By nalekberov 2025-11-2315:45

              Not at all, but the downside is it works until someone takes over.

      • By danelski 2025-11-2311:21

        The paranoid crowd already has decentralised apps that you might not have heard of because… well.

      • By udev4096 2025-11-2311:233 reply

        Ultra paranoid group already despises Signal because of it's strict phone number requirement and moxie's stubborn and unreasonable stance on refusing anyone to self-host. Matrix is far better than Signal

        • By jeroenhd 2025-11-2311:341 reply

          If you're looking to protect yourself from metadata analysis, Matrix is not the protocol for you.

          Matrix and XMPP are excellent protocols for decentralisation, but their E2EE implementation leaves all kinds of metadata exposed outside of the E2EE envelope.

          You need to trust the server to not expose any of this information to anyone else (which is difficult to do when the police comes in with a warrant). If you use your own Matrix server(s) this isn't a direct problem, but then the communication links between you and the people you talk to would stand out immediately, so protection fails in other ways.

          I'm not saying you should drop Matrix or anything, its decentralized nature and clear finances do have some trust advantages over Signal's occasional behaviour, but on a protocol level, an ultra paranoid person would probably be better off using (an audited client for) Signal.

          • By udev4096 2025-11-2317:491 reply

            What metadata exactly? Matrix only publishes the absolute required metadata for functioning of federation. Unless you can pin point exactly what metadata and how harmful that is, stop throwing that word around. Whoever is pushing this narrative of "metadata leak" in matrix needs to come up with actual facts

            • By Arathorn 2025-11-2320:04

              Speaking as project lead for Matrix, the protocol does currently expose more metadata to the server than it should. Specifically, the main issues are:

              * no sealed-sender (but see the OP on why this is not a panacea)

              * server can see which users are in which rooms

              * plaintext room names & topics (so serverside search can work)

              * aggregations (metadata around reactions, edits, replies, threads - ie who reacted to what and with what emoji)

              We’ve been working away improving this - for instance MSC3414 defines a way to encrypt key/value events like the above, and an implementation landed this summer. Similarly per-room user ids are planned too. However, it’s not trivial to get right, and we are underresourced so the work is going slower than we’d like. Also, decentralisation at least means the metadata doesn’t pool in some centralised place (as signal’s traffic footprint does, for instance). If you run your own server, then the threat may be acceptable.

        • By longitudinal93 2025-11-2316:26

          Unfortunately Matrix hasn't yet implemented any PQ encryption so you are subject to store and harvest attacks.

        • By pcthrowaway 2025-11-2311:312 reply

          I think Moxie's issue is with using their server for custom clients, but I'm curious if you have a link to him stating opposition to self-hosting?

          • By writebetterc 2025-11-2311:34

            Moxie doesn't want to federate, that's the main issue I believe.

          • By udev4096 2025-11-2317:51

            Moxie thinks everyone in the world is a fucking normie and people shouldn't be running servers because he hates freedom and loves centralizing everything. It's rare when such a genius cryptographer has hatred towards decentralization

    • By hacker_homie 2025-11-2311:09

      I mean you could always see where a letter was addressed, so knowing who your talking too seems like a reasonable compromise.

      Sealed sender feels like a get out subpoena feature.

  • By newscracker 2025-11-2311:141 reply

    I read through this. I don't think Proton Mail is a good replacement for Signal (it's worse because Proton does log and share IP addresses of users with a court order).

    One thing I dislike about Signal on its privacy posture is that the moment you register, anyone who already has Signal and has your phone number in their contacts list will get a message saying you're on Signal. This is a good way for others with bad intentions to know about your presence on the platform. The options to hide your phone number are available only after registering on Signal (after this broadcast has already happened) and when the user figures out that this is possible somewhere deep in the settings.

    On registration Signal could ask whether to inform all random people who happen to have your number. But since unused/discarded phone numbers are recycled by carriers to other customers within a matter of weeks or months or years (depending on where you are), your presence on Signal may be sent to someone you've never ever known or has known you. Signal ought to remove this broadcast on registration. Telegram (and I guess WhatsApp) also suffer from the same issue.

    • By udev4096 2025-11-2311:173 reply

      That's false. You can set your phone number discovery to None and even your contacts cannot find you unless you explicitly message them or share your username

      • By Fiveplus 2025-11-2311:482 reply

        So...who's right? This comment or the parent comment? I don't use signal and these are contradictory to me. Just wanna know what's the actual policy.

        • By nextstep 2025-11-2312:56

          udev4096 is correct. Discoverability via your phone number is optional and opt-in.

      • By shevy-java 2025-11-2311:21

        NSA will know.

      • By baxuz 2025-11-2311:281 reply

        Why do you even need a phone number in the first place?

        • By baiac 2025-11-2311:334 reply

          To curb abuse.

          • By johnisgood 2025-11-2312:29

            And to curb privacy / anonimity.

          • By sandblast 2025-11-2312:011 reply

            What types of abuse it really curbs?

            • By Arnt 2025-11-2314:50

              Those that depend on creating new accounts to replace blocked ones.

              Getting a new phone number isn't expensive, but it's infinitely more expensive than zero. And if a service is willing to block the phone companies that offer the cheapest new numbers, the price rises again.

          • By baxuz 2025-11-2314:44

            Number spoofing is trivial, and SIM cards can be bought retail for as little as 1€ in the EU and many countries around the world.

            You can buy them in bulk on shady sites for as little as 5c per pop.

            Most abuse happens on an industrial scale, and it's trivially easy and practically free to bypass this kind of "security" feature.

          • By udev4096 2025-11-2311:371 reply

            Hardly an actual mitigation. Temp phone numbers are in abundance and a dedicated spammer can definitely overcome it

            • By baiac 2025-11-2311:38

              No system is perfect. It’s about making it time-consuming and financially expensive to the spammer.

  • By sturza 2025-11-2310:501 reply

    The critique of metadata being hard is fair, the claim that sealed sender is “totally useless” is not. It’s a small, incremental hardening step in a very messy design space, not a magic invisibility cloak, and judging it as the latter sets the bar unrealistically high for anything that still wants to be a drop-in WhatsApp replacement.

    • By sandblast 2025-11-2312:031 reply

      It's useless in the sense that it makes an anonymity promise to users that it cannot fulfill.

      • By halJordan 2025-11-2313:23

        But it doesn't make the claims OP says are broken. Op makes several logical leaps and because each leap is a reasonable leap, he assumes it must be THE leap. Which isnt true and it's simple to come up with counterfactuals, and it's a common pitfall in analysis (he's confirming his bias)

HackerNews