Top
Best
New

Posted by e_daigle 14 hours ago

“Super secure” messaging app leaks everyone's phone number(ericdaigle.ca)
581 points | 277 comments
josh2600 14 hours ago|
This is why signal’s encrypted phone number lookup system is so cool. The server uses a bitwise xor when querying for numbers using hardware encrypted ram. The result is that even if you’re examining the machine at the most basic levels you can’t tell the difference between a negative or positive hit for the phone number unless you’re the phone requesting the api.

Obviously ratelimiting is a separate and important issue in api management.

The thing about building secure systems is that there are a lot of edges to cover.

heavyset_go 12 hours ago||
I don't think it's cool at all, a secure messaging app should not require personal/tracking identifiers like phone numbers in the first place.
maqp 12 hours ago|||
The sad part is, that's what's keeping Signal safe from spam.

Also, average Joe is not using proxy to hide the IP-address of their device so they leak their identity to the server anyway. Signal is not keeping those logs so that helps.

Messaging apps cater to different needs, sometimes you need only content-privacy. It's not a secret you're married to your partner and you talk daily, but the topics of the conversation aren't public information.

When you need to hide who you are and who you talk to (say Russian dissident group, or sexual minorities in fundamentalist countries), you might want to use Tor-exclusive messaging tools like Cwtch. But that comes at a near-unavoidable issue of no offline-messaging, meaning you'll have to have a schedule when to meet online.

Signal's centralized architecture has upsides and downsides, but what matters ultimately is, (a) are you doing what you can in the architectural limitations of the platform (strong privacy-by-design provides more features at same security level), and (b), are you communicating the threat model to the users so they can make informed decision whether the applications fits their threat model.

coppsilgold 9 hours ago|||
If you intend to use SMS (phone numbers) as a resource constraint (sign up requires 'locking up' a resource that is worth at least a few cents) then at least you can offer a ZKP system where the 'consumed' phone number is not tied to an account. You could also offer to accept cryptocurrency for this function - call it a donation.

That Signal did none of those things implies that privacy was not their objective. Only secure communications was.

It's possible that the reason behind their anti-privacy stand is strategic, to discourage criminal use which could be used as a vector of attack against them. Doesn't change the fact that Signal is demonstrably anti-privacy by design.

ethersteeds 6 hours ago|||
Your first formulation I agree with:

> privacy was not their objective. Only secure communications was.

> Signal is demonstrably anti-privacy by design.

But your second is uncharitable and misses Signal's historical context.

The value of a phone number for spam prevention has been mentioned, but that's not the original reason why phone numbers were central to Signal. People forget that Signal was initially designed around using SMS as transport, as with Twitter.

Signal began as an SMS client for Android that transparently applied encryption on top of SMS messages when communicating with other Signal users. They added servers and IP backhaul as it grew. Then it got an iOS app, where 3rd party SMS clients aren't allowed. The two clients coexisted awkwardly for years, with Signal iOS as a pure modern messenger and Signal Android as a hybrid SMS client. Finally they ripped out SMS support. Still later they added usernames and communicating without exposing phone numbers to the other party.

You can reasonably disdain still having to expose a phone number to Signal, but calling it "anti-privacy by design" elides the origins of that design. It took a lot of refactoring to get out from under the initial design, just like Twitter in transcending the 140-character limit.

coppsilgold 5 hours ago||
> Signal is demonstrably anti-privacy by design.

> You can reasonably disdain still having to expose a phone number to Signal, but calling it "anti-privacy by design" elides the origins of that design.

They introduced usernames without removing the requirement for phone numbers.

I rest my case.

hnarn 3 hours ago||
Not a very good case made since you obviously didn’t read the parent discussion.
coppsilgold 2 hours ago||
The parent attempted to excuse them by pointing out that the initial design was based on phone numbers. Putting aside the fact that initial design is irrelevant to present design criticism, they went out of their way to design usernames yet deliberately disallow signup without phone numbers.

> Not a very good case made since you obviously didn’t read the parent discussion.

This isn't an argument, do you have anything to back up your assertion?

lukeschlather 6 hours ago|||
If privacy wasn't their objective they would just have a database of all the phone numbers.

Perfect privacy would mean not sending any messages at all, because you can never prove the message is going to the intended recipient. Any actual system is going to have tradeoffs, calling Signal anti-privacy is not serious, especially when you're suggesting cryptocurrency as a solution.

A ZKP system where you make a public record of your zero-knowledge proof sounds anti-privacy to me. Even if you're using something obfuscated like Monero, it's still public. I see where you're coming from, but I think I would prefer Signal just keep a database of all their users and promise to try and keep it safe rather than rely on something like Monero.

coppsilgold 6 hours ago||
> have a database of all the phone numbers

They have exactly that. They rely on TPMs for "privacy" which is not serious.

> Perfect privacy would mean not sending any messages at all

Not sending messages is incompatible with secure messaging which is the subject of the discussion...

> ZKP system where you make a public record of your zero-knowledge proof sounds anti-privacy to me.

A zero-knowledge proof provably contains zero information. Even if you use a type of ZKP vulnerable to a potential CRQC it's still zero information and can never be cracked to reveal information (a CRQC could forge proofs however).

> especially when you're suggesting cryptocurrency as a solution

Would you elaborate on why cryptocurrencies are not a solution? Especially if combined with ZKPs to sever the connection between the payment and the account. When combined with ZKPs, they could even accept Paypal for donations in exchange for private accounts.

rendaw 2 hours ago||||
I get zero spam on Line... I don't allow people to add me by phone number. Line isn't known for their cryptography/security skills.
wkat4242 5 hours ago||||
I get lots of spam on WhatsApp which also requires a number. And some on signal too for that matter.

Signal is just much smaller in terms of users so the potential value is lower.

kragen 11 hours ago|||
If you wanted to keep it safe from spam, you'd use a proof-of-work scheme using a memory-hard hash function like scrypt, or a Captcha, or an invite-code system like lobste.rs or early Gmail. Signal's architects already knew that when they started designng it.
maqp 11 hours ago|||
>proof-of-work scheme using a memory-hard hash function like scrypt

So who's doing the computation? The spammer can't afford to run 3 second key derivation time per spam device? Or how long do you think normal user will wait while you burn their battery power before saying "Screw it, I'll just use WA"? Or is this something the server should be doing?

>Captcha

LLMs are getting quite good at getting around captchas.

>invite-code system

That works in lobste.rs when everyone can talk together, and recruit interesting people to join the public conversation. Try doing that with limited invites to recruit your peers to build a useful local network of peers and relatives. "I'm sorry Adam, I'm out of invites can you invite my mom's step-cousin, my mom needs to talk to them?"

>Signal's architects already knew that when they started designng it.

I think they really did, and they did what the industry had already established as the best practice for a hard problem.

The only reasonable alternative would've been email with heavy temp-mail hardening, or looking into the opposite end of Zooko's triangle and having long, random, hard-to-enumerate usernames like Cwtch and other Tor-based messengers do. But even that's not removing the spam-list problem of any publicly listed address ending up in a list that gets spammed with contact requests or opening messages with spam.

kragen 10 hours ago||
Those are reasonable questions, but they suggest that you don't understand the landscape very well.

The user's device has to do the computation for it to be effective. How long does it normally take to sign up for a new messaging service like WhatsApp? Five minutes? You should burn the user's cellphone battery for about half that long, 150 seconds, 50 times more than you were thinking. Plus another half-minute every time you add a new contact. Times two for every time someone blocks you, up to a limit of 150 seconds. Minus one second for each day you've been signed up. Or something like that.

The value of signing up for Signal is much higher to a real user than it is to a spammer, so you just have to put the signup cost somewhere in the wide range in between.

LLMs didn't exist when Signal was designed, and Captchas still seem to be getting a lot of use today.

Invite codes worked fine for Gmail, and would work even better for any kind of closed messaging system like Signal; people who don't know any users of a particular messaging system almost never try to use it. The diameter of the world's social graph is maybe ten or twelve, so invite codes can cover the world's social graph with only small, transitory "out of invites" problems.

The "industry" had "established" that they "should" gather as much PII as possible in order to sell ads and get investments from In-Q-Tel.

lukeschlather 6 hours ago|||
> How long does it normally take to sign up for a new messaging service like WhatsApp? Five minutes? You should burn the user's cellphone battery for about half that long, 150 seconds

If you actually do that you're going to crash a lot of cellphones and people will rightly blame your app for being badly coded.

kragen 3 hours ago||
What, their CPUs will overheat? I've run infinite loops on cellphones lots of times without that happening. In fact, I'm running four of them right now, and have been for the last five minutes as I write this comment. The battery drain is annoying but I haven't seen instability. I've run plenty of compiles on cellphones (things like BLAS and Numpy) that take longer than that, and I've never seen one crash a phone.
cyphar 10 hours ago||||
> Invite codes worked fine for Gmail

Back in 2004, sure. Today, Gmail asks you for a phone number when signing up because of the spam problem.

NorwegianDude 8 hours ago|||
To be fair, Gmail asks for a phone number, but you dont have to add one.
cyphar 5 hours ago||
This might depend on the country you're in, but I'm quite certain I've gotten locked out of the signup flow in the past when I refused to provide a phone number.
wkat4242 5 hours ago||
It depends what you do it from. If you do it from an android device you don't have to. If you do it from the web you do.
kragen 9 hours ago|||
I don't think that's why they ask for it, no.
account42 18 minutes ago||
Exactly, just like all those site that added SMS 2FA didn't do it for the extra security.
maqp 10 hours ago||||
>but they suggest that you don't understand the landscape very well.

Yeah, what could I possibly know about secure messaging.

>Plus another half-minute every time you add a new contact.

Can you point to some instant messaging app that has you wait 30 seconds before talking to them? Now niché is it?

You want proper uptake and accessibility to everyone, you need something like Samsung A16 to run the work in 150 seconds. Some non-amateur spammer throws ten RTX 5090s to unlock access to random accounts at 80x parallelism (capped by memory cost), with the reasonable time cost of whatever iterations that is, with quite a bit shorter time than 150 seconds. 121.5GFLOPs vs 10x104.8 TFLOPs leads to overall performance difference of 8,800x. And that account is then free to spam at decent pace for a long time before it gets flagged and removed.

The accounts are not generated in five minutes per random sweat shop worker: https://www.youtube.com/watch?v=CHU4kWQY3E8 has tap actions synced across sixty devices. And that's just to deal with human-like captchas that need to show human-like randomness. Proof-of-work is not a captcha, so you can automate it. Signal's client is open source for myriad of reasons, the most pressing of which is verifiable cryptographic implementations. So you can just patch your copy of the source to dump the challenge and forward it to the brute force rig.

Either the enumeration itself has to be computationally infeasible, or it has to be seriously cost limited (one registration per 5 dollar prepaid SIM or whatever).

>Invite codes worked fine for Gmail

Yeah and back in ~2004 when Hotmail had 2MB of free storage, GMail's 1,000MB of free storage may have also "helped".

kragen 9 hours ago||
All I know about your level of knowledge is what you post.

Scrypt is memory-hard precisely to defeat attacks like that, which reinforces my belief that you don't know what you're talking about. It doesn't matter how many FLOPS or integer MIPS you have.

maqp 8 hours ago||
So why don't you present your claim with more nuance than nu-uh, then?
vel0city 8 hours ago||||
Invite codes worked fine for Gmail, but you weren't limited to only the people on Gmail to talk to. It was a full, regular email service. You could email anyone and receive mail from anyone. I doubt it would have been very successful if it was invite only and you could only email other Gmail users for the first few years.

Waze was also invite-only, G+ was initially invite only. Did that model help or hurt them?

kragen 6 hours ago|||
I think it helped them. Gmail had more trouble with invite codes because some people wanted a Gmail account, but didn't know any existing Gmail users, because Gmail was useful for communication with non-Gmail users.

G+ didn't have that problem so much, but I don't remember it using invite codes.

vel0city 5 hours ago|||
Sorry, not Waze, Wave.
immibis 10 hours ago|||
If the PoW cost is a low-end cellphone CPU for 2.5 minutes, then it's nothing to the spammer with the 200-core hourly AWS server. If each spammer can create 10000 identities (not connections, identities) per hour, then you might as well not have a limit at all. If they could even create only 2 identities per day that would be enough to spam with (yet still unacceptable to actual users). 250000 identities per day is way too many.
kragen 9 hours ago||
The speed ratio is much smaller than you say with memory-hard PoW problems, which depend on the amount of RAM you have (and its response time). But it's surely true that a spammer could create many accounts per day, perhaps 1000 per hour on a big server, which could then go on to spam a few accounts each before becoming uneconomical to keep using.

But that would still put the CPM of the spam around US$2, which very few spammers can afford. Maybe mesothelioma lawyers and spearphishers.

You don't have to make spamming physically impossible, just unprofitable.

codedokode 11 hours ago||||
Or a small payment in cryptocurrency.
kragen 10 hours ago||
Yes, that would also work, but you should probably offer alternatives.
creata 11 hours ago|||
> you'd use a proof-of-work scheme

I thought the general belief (e.g., '“Proof-of-Work” Proves Not to Work') was that proof-of-work isn't very good anti-spam.

> or a Captcha

Aren't bots better at those than humans by now?

And making people do captchas in an instant messenger is a great way to make people not use that instant messenger.

> or an invite-code system like lobste.rs or early Gmail.

That's not a long-term option if you want to make something mainstream.

kragen 10 hours ago|||
There are people who believe that proof-of-work isn't very effective, but none of them have succeeded in spamming the Bitcoin network with blocks they've mined, driving the other miners out of business, nor (for the last several years) with spamming the Bitcoin network with dust transactions they've signed, so I don't think we should take their opinions very seriously.

Bots may be better than humans at Captchas now, although I'm not certain of that, but they certainly weren't when Signal was designed.

I don't see why invite codes would be a problem for mainstream use.

Ieghaehia9 10 hours ago|||
> There are people who believe that proof-of-work isn't very effective, but none of them have succeeded in spamming the Bitcoin network with blocks they've mined, driving the other miners out of business, nor (for the last several years) with spamming the Bitcoin network with dust transactions they've signed, so I don't think we should take their opinions very seriously.

Different system. The parent and GP are talking about proof-of-work being used directly for account creation. If a chat service required mining-levels of PoW (and hence any prospective new users to have an ASIC), it would not be very popular. Nor would it be very popular if it used a relative difficulty system and the spammers used dedicated servers while the legitimate users had to compete using only their phones.

creata 9 hours ago|||
> none of them have succeeded in spamming the Bitcoin network with blocks they've mined

I'm not saying you're wrong, but I have no idea what you're getting at, because the sentence sounds kind of absurd. As a result, I'm not sure if it addresses your point, but just to throw it out there: Bitcoin and anti-spam are different applications of proof of work. Anti-spam has to strike a compromise between being cheap for the user (who is often on relatively low-powered mobile hardware), and yet annoying enough to deter the spammer. It's not unreasonable to believe that such a compromise does not exist.

> Bots may be better than humans at Captchas now, although I'm not certain of that, but they certainly weren't when Signal was designed.

Fair point, but again, even in 2014, an instant messenger with captchas would have much more friction than every other messenger. And captchas aren't just bad because they introduce enough friction to drive away pretty much everybody: they also make users feel like they're being treated as potential criminals.

> I don't see why invite codes would be a problem for mainstream use.

Can you elaborate? Invite codes blocking access to the service itself "like lobste.rs" mean that no one can use your service unless they've been transitively blessed by you. That's obviously going to limit its reach...

kragen 8 hours ago||
Bitcoin had a spam transaction problem ("dust transactions") which was a bigger problem than email spam, because every transaction is received by every node. It was easy to solve because Bitcoins are minted by proof of work.

I don't think a Captcha for signup would have been much friction. Certainly less than providing a phone number.

Why would someone want to use a closed messaging service like Signal unless they knew an existing user? I don't think that the requirement for that existing user to invite them would be a significant barrier. So I think it's not going to limit its reach.

alkindiffie 10 hours ago|||
> That's not a long-term option if you want to make something mainstream.

Groups in messaging apps rarely contain more than 100 users. So invite codes can work well for messaging apps.

robot-wrangler 11 hours ago||||
Signal blasted my whole contacts list the day I signed up so that I was surprised to see lots of people saying "finally you got signal". That was also the moment I uninstalled the app. Leaking contact info appears to be part of the design.

Should have deleted my account instead of just removing the app, because it turns out the difference between using signal and using SMS is obscured for most phones, and when people thought they were texting me they weren't. I was just out of contact for a long time as people kept sending me the wrong kind of messages. I suppose one could argue protecting contact/identity is not a real goal for e2e encryption, but what I see is a "privacy oriented" service that's clearly way too interested in bootstrapping a user base with network effects and shouldn't be trusted.

mmooss 10 hours ago|||
> Leaking contact info appears to be part of the design.

Those people already had your contact info, probably.

Also, I think there is a setting in Signal to prevent that - and via the OS you can block Signal's access to your contacts, of course.

robot-wrangler 8 hours ago||
> Those people already had your contact info, probably.

What leaked was that I was a signal user, and that the person on the other side was a signal user. The security implications are obvious, and by itself, that's already enough to get someone who really needs to care about privacy killed.

> Also, I think there is a setting in Signal to prevent that

False. It happened without my permission as soon as the app was installed, and there was no way to opt out. Maybe they changed it since then, but the fact remains they obviously cared more about network-effects and user-counts than user privacy.

Sigh, there's just no need for this kind of apologism. You could just admit that a) it's bad behavior, b) they did it on purpose, and c) it's not possible to trust someone who does something like this. I'm aware they are nonprofit, so I don't know why it's like this, but the answer is probably somewhere in the list of donors.

lukeschlather 6 hours ago|||
How would you suggest Signal allow you to communicate with your contacts without leaking the fact that both of you are Signal users? Should it just blackhole the message if the other number doesn't have an account?

I understand the unease about the notifications, but there are some hard tradeoffs between how you can store as little information as possible, remain as decentralized as possible, while getting the same benefits as centralized systems like Facebook.

I'm really of the opinion that a messenger similar to Signal but more centralized in the fashion of WhatsApp or even Facebook Messenger should exist, but I also understand why Signal works the way it does.

mmooss 4 hours ago|||
That's a lot to pile on people who disagree with you. Maybe other people have perspectives that are both 1) different from yours and, 2) valid?
robot-wrangler 2 hours ago||
> Maybe other people have perspectives

Yeah, no. The whole "every perspective has some validity" thing won't really apply to most safety/security issues. The most charitable thing to say here is that the workflow is completely broken. Less charitable but also valid is pointing out that it's actively harmful, and deliberate. I would be really surprised if this hadn't ever caused serious consequences whether a whistle blower was fired, an abused spouse got extra abused, or an informant was killed. If you think you've got a "valid perspective" that prioritizes mere user-discovery over user-safety, then you should not be attempting work that's close to safety and security, full stop.

guizadillas 9 hours ago||||
The people that already had your contact info in their devices were notified that you joined Signal via that contact info?

Seems like it was working as designed, if you don't want any app to get your contact info don't share your contact info to anyone ever. Eventually they will share that info with any app.

immibis 10 hours ago|||
When someone on your contacts list gets Signal, Signal displays this in its UI. I don't think this is a privacy violation. Signal aims to hide your messages, but it does not have its own contacts system, and piggybacks on your existing phone number and phone number contacts. Nor does it attempt to hide the fact you have Signal.
overfeed 12 hours ago||||
Security and usability are frequently at odds. The ease with which users can discover and exchange messages with their contacts is a major usability issue. Phone number as a proxy for identity mostly works, at the cost of some privacy risks.
soulofmischief 12 hours ago||
This made sense when Signal/TextSecure allowed users to send regular SMS, making it easy to convince others to set it as their default messenger.

Now that this crucial adoption feature has been removed, it makes zero sense for Signal to continue to rely on phone numbers. Since that feature has been removed, the utility of Signal has been lost anyway and many in my groups returned to regular SMS. So the system is already compromised from that perspective. At least forks such as Session tried to solve this (too bad Session removed forward secrecy and became useless)

stavros 10 hours ago||||
What's more secure? A moderately secure messaging app all your friends have installed, or a very secure messaging app nobody else has?
josh2600 5 hours ago||||
Signal requires a phone number for signup but you only have to share a username.

We know from subpoenas that signal only holds the user phone number, creation timestamp, and last login timestamp. That’s it.

K0balt 12 hours ago||||
I agree, but since a messaging apps utility is some fraction of the square of the # of users on the platform, a facile way to propagate virally is a de facto requirement for an app targeting wide spread adoption / discovery rather than targeted cells of individuals focused around a pre shared idea.

It’s a compromise meant to propagate the network, and it has a high degree of utility to most users. There are also plenty of apps that are de-facto anonymous and private. Signal is de facto non-anonymous but private, though using a personally identifiable token is not a hard requirement and is trivial to avoid. (A phone number of some kind is needed once for registration only)

immibis 10 hours ago||||
Signal's security model does not include metadata, and this is a valid design.
0x1ch 12 hours ago|||
There's no alternative to reduce spam and fake accounts, unless we collectively are fine with blocking Russia, India, China, and friends from the internet.
codedokode 13 hours ago|||
Does Signal protect from the scheme when the government sends discovery requests for all existing phone numbers (< 1B) and gets a full mapping between user id and phone number?

While slightly unrelated, I thought, how we can fix this for truly secure and privacy-aware, non-commercial communication platforms like Matrix? Make it impossible to build such mapping. The core idea is that you should be able to find the user by number only if you are in their contact list - strangers not welcome. So every user, who wishes to be discovered, uploads hash(A, B) for every contact - a hash of user's phone number (A) and contact's phone number (B), swapped if B < A. Let's say user A uploaded hashes h(A,B) and h(A,C). Now, user B wishes to discover contacts and uploads hashes h(A, B) and h(B, D). The server sees matching hashes between A and B and lets them discover each other without knowing their numbers.

The advantages:

- as we hash a pair of 9-digit numbers, the hash function domain space is larger and it is more difficult to reverse the hashes (hash of a single phone number is reversed easily)

- each user can decide who may discover them

Disadvantages:

- a patient attacker can create hashes of A with all existing numbers and discover who are the contacts of A. Basically, extract anyone's phone book via discovery API. One way to protect against this would be to verify A's phone number before using discovery, but the government, probably, can intercept SMS codes and pass the verification anyway. However, the government can also see all the phone calls, so they know who is in whose phone book anyway.

- if the hash is reversed, you get pairs of phone numbers instead of just one number

Arathorn 12 hours ago|||
There's some really interesting stuff we've been looking into on the Matrix side to solve this - e.g. https://github.com/asonnino/arke aka https://eprint.iacr.org/2023/1218 or https://martin.kleppmann.com/2024/07/05/pudding-user-discove....

Meanwhile, Matrix for now does support hashed contact lookup, although few clients implement it given the privacy considerations at https://spec.matrix.org/unstable/identity-service-api/#secur...

wkat4242 5 hours ago||
Yeah you're doing a lot better job on the privacy side than signal is IMO.

Especially just being able to run my own service will be priceless when something like chatcontrol eventually makes it through. Signal can only comply or leave, but they'll never manage to kill all the matrix servers around.

godelski 12 hours ago||||
Signal publicly shares government requests AND the data that they send them

The data Signal has is: 1) registration time for a given phone number, 2) knowledge of daily login (24hr resolution). That's it. That's the metadata.

They do not have information on who is communicating with who, when messages are sent, if messages are sent, how many, the size, or any of that. Importantly, they do not have an identity (your name) associated with the account nor does that show for contacts (not even the phone number needs be shared).

Signal is designed to be safe from Signal itself.

Yes, it sucks that there is the phone number connected to the account, but you can probably understand that there's a reason authorities don't frequently send Signal data requests; because the information isn't very useful. So even if you have a phone number associated with a government ID (not required in America) they really can only show that you have an account and potentially that the account is active.

Like the sibling comment says, there's always a trade-off. You can't have a system that has no metadata, but you can have one that minimizes it. Signal needs to balance usability and minimize bots while maximizing privacy and security. Phone numbers are a barrier to entry for bots, preventing unlimited or trivial account generation. It has downsides but upsides too. One big upside is that if Signal gets compromised then there's can be no reconstruction of the chat history or metadata. IMO, it's a good enough solution for 99.9% of people. If you need privacy and security from nation state actors who are directly targeting you then it's maybe not the best solution (at least not out of the box) but otherwise I can't see a situation where it is a problem.

FWIW, Signal does look to be moving away from phone numbers. They have usernames now. I'd expect it to take time to completely get away though considering they're a small team and need to move from the existing infrastructure to that new one. It's definitely not an easy task (and I think people frequently underestimate the difficulty of security, as quoted in the article lol. And as suggested by the op: it's all edge cases)

https://signal.org/bigbrother/

codedokode 11 hours ago|||
> Phone numbers are a barrier to entry for bots, preventing unlimited or trivial account generation.

What's wrong with account generation? Nothing. The problem is if they start sending spam to random people. So we can make registration or adding contacts paid (in cryptocurrency) and the problem is gone.

jfindper 10 hours ago|||
>So we can make registration or adding contacts paid (in cryptocurrency) and the problem is gone.

The majority of the user base would be gone, too.

I had a hard enough time convincing my friend group to use Signal as is. If they had to pay (especially if it had to be via cryptocurrency) none of them would have ever even considered it.

codedokode 10 hours ago||
I would rather pay $1 than with my phone number which is much much much more valuable. Telegram did an experiment with paid anonymous registration, but the prices were ridiculous and targeted for the riches.
jfindper 10 hours ago||
>I would rather pay $1 than with my phone number which is much much much more valuable.

Most people would not, though, and that's the issue.

codedokode 10 hours ago||
So let everyone pay with their preferred method and let evil governments go mind their own business.
godelski 10 hours ago||||

  > What's wrong with account generation?
Your comment *literally* explains one issue...
wtfwhateven 10 hours ago||||
>What's wrong with account generation?

What's right with it? Accounts being generated (i.e. many inauthentic accounts controlled by few people) are always used to send spam, there are no exceptions. The perpetrators should be in prison.

0xCMP 11 hours ago|||
Ah yes, and convincing friends/family/partners to use Signal instead of Whatsapp clearly what will convince them is that they need to setup, acquire, and use cryptocurrency to register or connect with me on the encrypted messaging service. "No thanks, I just use Whatsapp/iMessage. I heard they're actually e2e encrypted too, so what's the problem?"
mmooss 10 hours ago|||
That doesn't answer the GP question:

> Does Signal protect from the scheme when the government sends discovery requests for all existing phone numbers (< 1B) and gets a full mapping between user id and phone number?

Signal does have the phone numbers, as you say. Can they connect a number to a username?

godelski 9 hours ago||

  > That doesn't answer the GP question:
It does.

They asked

   >>> Does Signal protect from the scheme when the government sends discovery requests for all existing phone numbers (< 1B) and gets a full mapping between user id and phone number?
Which yes, this does protect that. There is no mapping between a user id and phone number. Go look at the reports. They only show that the phone number has a registered account but they do not show what the user id is. Signal doesn't have that information to give.

  > Can they connect a number to a username?
From Signal

  Usernames in Signal are protected using a custom Ristretto 25519 hashing algorithm and zero-knowledge proofs. Signal can’t easily see or produce the username if given the phone number of a Signal account. Note that if provided with the plaintext of a username known to be in use, Signal can connect that username to the Signal account that the username is currently associated with. However, once a username has been changed or deleted, it can no longer be associated with a Signal account. 
This is in the details on[0] right above the section "Set it, share it, change it"

So Signal cannot use phone numbers to identify usernames BUT Signal can use usernames to identify phone numbers IF AND ONLY IF that username is in active use. (Note that the usernames is not the Signal ID)

If you are worried about this issue I'd either disable usernames or continually rotate them. If the username is not connected with your account at the time the request is being made then no connection can be made by Signal. So this is pretty easy to thwart, though I wish Signal included a way to automate this (perhaps Molly has a way or someone can add it?) Either rotating after every use or on a timer would almost guarantee that this happens given that it takes time to get a search warrant and time for Signal to process them. You can see from the BigBrother link that Signal is not very quick to respond...

[0] https://signal.org/blog/phone-number-privacy-usernames/

heavyset_go 12 hours ago||||
The hash space for phone numbers is so small that you can enumerate them all.
ruined 12 hours ago||||
yes. users can disable phone number discovery
Groxx 11 hours ago||
can they disable it before or after it tells other people that they joined, if those other people had their number in their synced contacts list?

(I would be thrilled to learn that this changed, but it has been in place for many years and it's kinda hard to personally test)

ruined 8 hours ago||
yes before.

discoverability does default to "on", but there is an opportunity to disable it during registration, which prevents those notifications.

wizzwizz4 12 hours ago|||
And it's trivial to reverse a hash in such a scenario. This scheme is completely broken.
jazzyjackson 13 hours ago|||
Still lame that they require phone number at all, it took them a long time to add usernames so you don't have to expose your phone number to a new contact. Still skeeves me out that the account is associated with a SIM at all.
HNisCIS 13 hours ago|||
We need an established secure anonymous/subpoena-resistant chat app at this point. Signal is great for a minimal threat model but we're kinda past that now given everything going on.

Simplex was a decent option but they're going down the crypto rabbit hole and their project lead is...not someone who should be trusted by anyone in the crosshairs right now.

integralid 12 hours ago|||
Can you explain more about simplex? I remember reading about it a while ago and being really impressed. Sad to hear the project is going downhill.
heavyset_go 11 hours ago|||
Check out the developer/owner's social media, the chats they're in, and their responses to others and you'll see. They're much more interesting in crypto and politics than they are acting professional in public and towards others while representing their project and company.

It's not hard to do so, so if they're having difficulty doing that, what other simple things are they having difficulty with? Why would anyone hinge their safety and well being on the whims of such a person?

I say this as a person who bought into the initial concept, and who has used it myself.

maqp 12 hours ago|||
SimpleX front page lied by omission about it having no identifiers. The fine print threat model did not mention the server has access to your IP addresses, and the mitigation to create "decentralized" system of users talking via separate servers ran into the problem of there being two VPS companies hosting the entire public server infrastructure. These issues were major as SimpleX advertised itself as an improvement over Cwtch, which should've meant superset of metadata had been protected. But that obviously wasn't the case.

The CEO vanished from the discussion (again) so my proposals to improve ease of use of Tor never reached them. You can catch up on the discussion at https://discuss.privacyguides.net/t/simplex-vs-cwtch-who-is-...

miroljub 10 hours ago||
What do you use now? Catch? Briar? Tox?

I liked the SimpleX concept, but would prefer its relay server were replaced by Tor or i2p network.

And if they used Signal instead of NIH protocol.

Actually, the only unique SimpleX feature I really like is that it uses separate ids for every connection and group.

maqp 10 hours ago||
>What do you use now?

Signal mostly.

>separate ids for every connection and group

The thing is, there's Akamai and Runonflux, two companies hosting the entire public SimpleX infrastructure. If you're not using Tor and SimpleX Onion Services with your buddies, these two companies can perform end-to-end correlation attacks to spy on which IPs are conversing, and TelCos know which IPs belong to which customers at any given time. Mandatory data retention laws about the assigned IPs aren't rare.

miroljub 1 hour ago||
Yes, that's why I said I don't like their relays. It doesn't even have to be Akamai, you need to trust SimpleX first that not to track your IP. I'd rather use a messenger where something is not possible (or even hard) than trust.

As long as IP leaks are possible, I'd rather also use Signal, where at least the rest is battle tested and state of the art.

My concern with Signal is they'll either comply or move out of the EU with the incoming Chat Control, and I'd rather have a fully decentralized messenger with as few leaks as possible.

01HNNWZ0MV43FF 12 hours ago|||
Maybe DeltaChat?
maqp 12 hours ago||
No. https://delta.chat/en/help#pfs
nanomonkey 12 hours ago||||
I agree, but you can mitigate that to some extent by using a phone number that is not linked to your identity.

Phreeli [https://www.phreeli.com/] allows you to get a cell number with just a zip code. They use ZKP (Zero Knowledge Proofs) for payment tracking.

codedokode 11 hours ago||
In my country, you cannot legally get a phone number not linked to the identity, and the prices are relatively high on the black market. Also, the phone discloses your location with pretty good precision, especially in US where everyone is living in their own house.
sneak 13 hours ago|||
Signal accounts do not require a SIM. There is no requirement that the phone you use for running the app Signal has the phone number you use for Signal login.

My Signal number is a Google Voice number that has nothing to do with any mobile phone. The Google account has advanced protection turned on so you can’t port it or get the SMSes without a hardware login token.

the_gipsy 11 hours ago|||
In my country I cannot buy a SIM card / phone number without giving my full identification.
extraduder_ire 10 hours ago|||
Can you buy a phone number from a different country? (genuinely curious, I live somewhere I can buy a sim card with cash, and saw some in the impulse-purchase section of a store earlier today)
sneak 2 hours ago|||
So buy a number from a different country.
HNisCIS 13 hours ago||||
It's still associated with a credit card and your google account requires another phone number to create.
codedokode 13 hours ago|||
But has something to do with a bank card you used to pay for it?
jazzyjackson 12 hours ago||
That's cool that there are phonenumbers without SIMs, my concern was more about SIM swap takeover. (Signal only guards this with a 4 digit PIN iirc)
Zak 11 hours ago|||
The PIN can be longer than four digits. Signal also guards against this with safety numbers; if someone takes over an account, every contact will see that the safety number has changed and should consider that the account may be compromised until verifying out of band.
codedokode 10 hours ago|||
Google Voice doesn't look like a safe option, your number can be taken away if you forget to pay or you can be banned for arbitrary reason without a way to appeal.
ronsor 14 hours ago|||
> The server uses a bitwise xor when querying for numbers using hardware encrypted ram. The result is that even if you’re examining the machine at the most basic levels you can’t tell the difference between a negative or positive hit for the phone number unless you’re the phone requesting the api.

Do you have further reading on this?

dathinab 13 hours ago|||
This article https://signal.org/blog/building-faster-oram/ has some details but is more focused on improving their solution other blogs from the are "we want to build this soon" kind of blogs. It seems that most articles about this topic either have too little content to be of interest or are technology previews/"we maybe will do that" articles about things Signal wants to implement, where it's unclear if they did do that or something similar.

To cut it short they use Intel SGX to create a "trusted environment" (trusted by the app/user) in which the run the contact discovery.

In that trusted environment you then run algorithms similar to other messengers (i.e. you still need to rate limit them as it's possible to iterate _all_ phone numbers which exist).

If working as intended, this is better then what alternatives provide as it doesn't just protect phone numbers from 3rd parties but also from the data center operator and to some degree even signal itself.

But it's not perfect. You can use side channel attacks against Intel SGX and Signal most likely can sneak in ways for them to access things by changing the code, sure people might find this but it's still viable.

In the end what matters is driving up the cost of attacks to a point where they aren't worth in all cases (as in either not worth in general or in there being easier attack vectors e.g. against your phone which also gives them what they want, either way it should be suited for systematic mass surveillance of everyone or even just sub groups like politicians, journalists and similar).

tapoxi 13 hours ago||||
https://signal.org/blog/private-contact-discovery/
LunaSea 13 hours ago|||
I believe that the search term you can look for is constant time equality.
m4rtink 13 hours ago||
Do we relly know the server actually does this when you can't run your own Signal server instances you have compiled yourself from source code ?
maqp 12 hours ago|||
Short answer is no.

Signal provides content-privacy by design with E2EE. Signal provide metadata-privacy by policy, i.e. they choose to not collect data or mine information from it. If you need metadata-privacy by design, you're better off with purpose-built tools like Cwtch, Ricochet Refresh, OnionShare, or perhaps Briar.

master-lincoln 13 hours ago||||
I thought you could compile from source and run Signal server instances, but there is no federation, so you would need a client that points to your server and you could only talk to other people using that client.

https://github.com/signalapp/Signal-Server

GranPC 13 hours ago|||
They use remote attestation based on SGX. So, assuming SGX can be trusted, yes. See https://signal.org/blog/private-contact-discovery/
dathinab 13 hours ago||
and assuming you have a practical way to

- verify the attestation

- make sure it means the code they have published is the attested code

- make sure the published code does what it should

- and catch any divergence to this *fast enough* to not cause much damage

....

it's without question better then doing nothing

but it's fundamentally not a perfect solution

but it's very unclear if there even is a perfect solution, I would guess due to the characteristics of phone numbers there isn't a perfect solution

mjg59 5 hours ago||
Well, no - as long as someone you trust is able to do that verification, that's good enough.
codedokode 11 hours ago||
> What’s going on in that user object? The pin field seems suspiciously related to the PIN we were asked to input after creating our account

This might be the fault of opt-out serialization library (by default it serializes the whole object and you need to manually opt-out fields from it). So a programmer adds a field, forgets to add opt-out annotation and voilà.

Or they are just using plain JS dicts on the server and forgot to remove the key before using it in a response.

> The vulnerability they’re talking about was presented in a paper by researchers at the University of Vienna.

This vulnerability (mapping phone numbers to user id via rendevouz API) is old and was exploited in 2016 in Telegram [1] and allowed Iranian govt to build a phone book of 15M Telegram users. The paper also mentions that the vulnerability was known in 2012, still not fixed.

[1] https://telegram.org/blog/15million-reuters

Yoric 10 hours ago||
> This might be the fault of opt-out serialization library (by default it serializes the hole object and you need to manually opt-out fields from it). So a programmer adds a field, forgets to add opt-out annotation and voilà.

In a previous job, on my first audit of the code, I spotted such vulnerabilities pretty much everywhere.

Developers simply need to stop using these libraries.

SchemaLoad 11 hours ago|||
This is such a common issue I've seen in so many API backends, where sensitive fields on a record are getting sent to the client and no one notices because it's invisible in the UI.
Sardtok 11 hours ago|||
The fact that the PIN is leaked is bad enough, but it also happens to be plaintext. This is a password. It should not be stored unhashed, and it should be hashed with strong algorithms.
cbsks 8 hours ago|||
It’s a 6 digit pin. Doesn’t seem worthwhile to hash. What are the best practices here? I’m not sure
figassis 2 hours ago|||
There is never a need to store a pin in the database, store it in temporary storage like redis. Set the TTL to the expiration date. You can hash if needed, but I’m less concerned that someone hacks into your reds instance and steals your pins from the last 10 minutes, bc everything else is gone.

There should never be a need to return a pin to the client. You’ve already texted/emailed it to them. They are going to send it back to you. You will check against your temporary storage, verify/reject, and delete it immediately after.

dietr1ch 7 hours ago|||
Yeah, you can only delay attacks by a tiny little bit, but the search space of 10^6 is just too small. Salting it doesn't give you much more security.
figassis 3 hours ago||
Sure. But why are we blaming libraries. This is the development process. Are BE developers not looking at their output anymore? Are we just vibe coding everything? If the UI does not complain then go to prod? This can’t be the expectation. And then you claim that your app is secure. Based on what review. Does not look like you even did an internal review? If you’re going to design a PIN feature, and don’t consider securing it, what part of design did you do?

I keep seeing people try to explain away incompetence by blaming unaccountable things aka the tool or system. Exposed password? Must be the library. People really should stop using it. No, the library is not wrong, ppl should be better developers.

Peer reviewed paper is full of AI slop, must not be the reviewer’s fault, the citations were there, they were just fake. What is going on?

ericmcer 13 hours ago||
It's crazy how many security vulnerabilities are just people pinging http endpoints in ways they didn't expect. You would think in order to "hack" a system in 2025 you would need to be doing some crazy computer science wizardry but it really is just lazy engineers. Like how do you ship an API and have no rate-limiting. It literally takes a line to implement in Nginx.
thesuitonym 13 hours ago||
> It literally takes a line to implement in Nginx.

"Yeah but it wasn't in the docker tutorial I skimmed so I have no idea what it means."

verdverm 12 hours ago||
Soon to be... "Yeah, it was the Ai, I have no idea how any of this works"
serial_dev 12 hours ago|||
Though once s hits the fan, you can just tell AI “I have no idea how any of this works andI don’t really even care but I need rate limiting, so do what you must, I trust you”.
thesuitonym 12 hours ago||
Except the vibe coders aren't going to know to even ask about rate limiting.
SchemaLoad 11 hours ago|||
At least on the flipside. Code scanning tools are getting increasingly good. We finally moved to github at work and it's scanned the whole repo and pointed out tons of concerning security issues in the code. Not sure if it's powered by AI in any way (I assume not since they would scream from the rooftops if it was) but it's pretty useful.
verdverm 10 hours ago||
for sure, coding scanning tools are indispensable, just like linting and testing.

They are likely a bit of both, increasingly more so going forward.

- some checks are straightforward and it would be dumb to use AI for them

- some checks require AI

rainonmoon 13 hours ago|||
Obviously software development in general has become more ingenious (by some metrics) over the past few decades but very little of its growth has involved secure development principles. Often the primary goal is efficiency and scalability with as little friction for the customer. The priority is enabling commerce, not protecting user data (slightly more so company data, but not by much). I speak to devs every week who are unfamiliar with things like JavaScript injection and SSRF, things that can be exploited by virtually complete beginners. From their perspective they were just building a neat feature, that it could be used to render external scripts or internal file paths literally did not occur to them. This isn’t a judgement of them, I appreciate the chance to help them, but just to say development has unfortunately always had other priorities.
Ardren 13 hours ago|||
> It literally takes a line to implement in Nginx.

Lots of things are really simple. But you have to know about them first.

arcfour 12 hours ago||
I would hardly consider someone that doesn't even know what rate limiting is to be a "developer."
notesinthefield 9 hours ago|||
I once went to a B-Sides talk of a person that paid off their mortgage via API related bounties - you wouldve confused their presentation with a Postman 101 video if you were only half listening.
dathinab 13 hours ago|||
for quite a while I through many of those dump "internal network scanning automatized pentests" where pretty pointless

but after having seen IRL people accidentally overlooking very basic things I now (since a few years) think using them is essential, even through they often suck(1).

(1): Like due to false positives, wrong severity classifications, wrong reasoning for why something is a problem and in generally not doing anything application specific, etc.

I mean who would be so dump to accidentally expose some RCE prone internal testing helper only used for local integration tests on their local network (turns out anyone who uses docker/docker-compose with a port mapping which doesn't explicitly define the interface, i.e. anyone following 99% of docker tutorials...). Or there is no way you forget to set content security policies I mean it's a ticket on the initial project setup or already done in the project template (but then a careless git conflict resolution removed them). etc.

MangoToupe 12 hours ago|||
> You would think in order to "hack" a system in 2025 you would need to be doing some crazy computer science wizardry

Never heard of the wrench technique? It's always gonna work out great. Way cheaper and easier than "wizardy" too.

murderfs 12 hours ago||
Ratelimiting doesn't solve anything, you can just parallelize your queries across IP addresses.
overfeed 12 hours ago|||
The whole "defense in depth" principle disagrees. Having a layered defense can not only buy defenders time, but downgrades attacks from 100% data exfiltration to <10%
arcfour 12 hours ago||||
Increasing the barrier to entry from "trivial" to "less trivial" is always a good start.
pragma_x 12 hours ago||
Yup. This is some of the stuff that gets missed when understanding Security.

Ultimately, you're just buying time, generating tamper evidence in the moment, and putting a price-tag on what it takes to break in. There's no "perfectly secure", only "good enough" to the tune of "too much trouble to bother for X payout."

selcuka 7 hours ago|||
https://en.wikipedia.org/wiki/Nirvana_fallacy
ben_w 14 hours ago||
> but I like to provide only the best blog posts to my tens of readers

It may not be pertinent to the subject, but clearly I have found a kindred spirit in this author.

hypeatei 13 hours ago||
Does Freedom Chat® have a feature to prevent journalists from joining your group chat? Asking for a friend that works at the DoD (sorry, DoW)
Arch485 14 hours ago||
If I had a nickel for every "secure" app that handled sensitive user data and then subsequently leaked that data this year...

I'd only have 20 cents, which I guess is good. But I'm sure there's more I'm forgetting.

Related:

[1] https://news.ycombinator.com/item?id=44684373

[2] https://news.ycombinator.com/item?id=43964937

[3] https://news.ycombinator.com/item?id=45985036

sigwinch 14 hours ago||
For this specific movement, venturing outside Facebook Messenger is an important cue.
lawlessone 14 hours ago||
and these are just the ones we know about
CodingJeebus 13 hours ago||
I stumbled upon a GOP jobs board a year ago that stored submitted job applications in the same search index as the job listings themselves, so all you had to do was search "bob" and find a bunch of resumes and application answers for people who had applied, I couldn't believe it.
tonymet 13 hours ago|
Which one ?
CodingJeebus 10 hours ago||
gopjobs.com, looks like it’s been fixed though
tonymet 9 hours ago||
i tried to see if it has any ties to the actual GOP national or any state parties and it's unclear. I'm guessing it's not affiliated and GOP is not trademarked.

I asked because both political parties have chapters at national, regional, state & local levels so "GOP job board" on the face wasn't clear which organization was running it. Some parties cover rural counties of just a few thousand people.

password-app 6 hours ago||
This is why I'm skeptical of any app claiming "super secure" without open-source verification.

The real lesson: assume every service will eventually leak something. Use unique passwords everywhere, enable 2FA, and rotate credentials after breaches.

The tedious part is the rotation. I've seen people skip it because manually changing 50+ passwords is brutal. Automation helps but needs to be done securely (local-only, zero-knowledge).

sigwinch 14 hours ago||
Since Anom, we need a new word than “honeypot”. The next secure messenger will not be created by these types. But many will be incrementally marketed, and each campaign will succeed in reaching a new batch of near-hit recruits.
agentifysh 12 hours ago||
we have so many failure-as-a-feature ops these days im surprised we aren't discussing it more. something that consistently happens with enough frequency without any repercussions ultimately just becomes a feature of its own.

we consistently have data breaches in institutions we trust is converging to a point where its literally just a data harvesting ops and everybody stops caring. They won't even bother to join class action lawsuits anymore because the rewards enrich the lawyers while everybody gets their twenty bucks in the mail after providing more personal data to the law firm its like a loophole.

we now have legalized insider trading in the form of "prediction markets", legalized money laundering and pump and dump through crypto, all of these always lead to failures for the participant disguised as wins.

burnt-resistor 13 hours ago||
"Petepot"
pavel_lishin 14 hours ago|
> 2025-12-09: Freedom Chat notifies us issues have been patched

Have they?

More comments...