SimpleX workflow

Trying to get my head around proper use of this software.

Is it possible to use it on Tails? as far as I can I see, it requires local storage as it creates an encrypted database. However, could you save this database somewhere, and load it anytime you need to use it within a Tails live session? I want to avoid using persistent storage.

Also, when sharing a link with someone, most people use email, WhatsApp and if you are lucky Telegram. If you are sharing a SimpleX link to start a conversation, doesn’t this defeat the point a bit?

While the link is a one-time link, it reveals you are a SimpleX user if a third party where to find the link there.

As far as privacy IP wise, from what im seeing, SimpleX uses Tor onion technology by default which is great, im just not sure about the link sharing step.

Im also not sure about Incognito mode. If the person you want to talk to clicks on the link while you are using Incognito mode, they would not be able to contact you again since you are using a temporary profile, so you would need to share a one-time link in another probably insecure medium each time. Should you share this link once and then share a permanent username with the person you want to talk to if you need to talk often or you want to remain available if they want to talk to you without having to share the link each time?

How do you guys go about using this software?

@epoberezkin how many examples do you need to start communicating upfront that SimpleX is not anonymous or using Tor or masking user IP from servers by default?

I’m surprised that such a misconception exists when there is seemingly no marketing from SimpleX which says that the app uses Tor. Do you have an inkling of where the confusion originates?

@maqp many people do have misconception about what is IP address and who/what it can and cannot be protected from.

Tor cannot and does not protect users’ IP addresses from Tor relays. It protects them from the destination websites, and to some degree prevents relays from knowing which users IP addresses connect to which websites (provided the relays in the chain didn’t collude).

SimpleX cannot and does not protect users’ IP addresses from SimpleX relays. It protects users’ IP addresses from their contacts, and it also prevents servers from knowing which IP address communicates with which. Unlike Tor it also provides per-packet anonymity - Tor provides only per-circuit anonymity. Using Tor as the main anonymity layer for messaging is a bad idea - messaging anonymity requires mixnet-like routing, which is what SimpleX relays provide.

You could similarly request that Tor marketing includes the notice that Tor does not protect users’ IP addresses from Tor relays. Or that hidden addresses provide anonymity only if they are rotated frequently enough (which is something very few Tor users do). Especially given that for many Tor relays operators are unknown, and most users don’t know how to control which relays are used, and there is no obligations on Tor relays to the users - they can freely aggregate, share and sell their data.

Tor’s trust model is based on the assumption that Tor relays are independent, and this assumption is incorrect to a large degree - the concentration of Tor relay control is quite substantial. SimpleX trust model is also based on the assumption of relay independence, and it is enforced in the client app by default with zero configuration for the users - servers in message routing chain are controlled by independent entities, and their privacy policy prohibits them from sharing any data.

For comparison, SimpleX relays are known to users, they are simple to choose, and preset relays are bound by privacy policy. As for Tor, we very clearly state that Tor is supported as an additional layer via SOCKS protocol, and at no point we stated that it’s enabled by default - this is covered here: Frequently Asked Questions

I believe you’re possibly misunderstanding some things about SimpleX. I’m also not sure what your threat model is. It’s not quite clear to me just based off your questions. However, I’ll try to answer some of these points the best I can.

SimpleX on Tails

You can certainly use SimpleX on Tails. Local storage only becomes an issue the moment you reboot without saving the main database to a persistent storage, be it external or on the flash drive Tails is installed on. This is just what is required, as nothing is centrally stored on a server with SimpleX. Either way, you will ultimately be saving the database to something persistent, so expect to be exporting and importing the database periodically in this scenario.

Out-of-Band Connections

SimpleX one-time invite links are designed to be shared off-platform. This is their intended use-case. It doesn’t defeat its goals unless knowledge of you merely using SimpleX is itself a threat in your threat model, which depends on who or what are your threat vectors or actors. Otherwise, it is not practical or trivial for an outside observer to correlate a specific Chat Profile or queue(s) from the one-time invite link to you as a person on the SimpleX network. However, one exception would be for maybe your contact who you are establishing communications with and the SMP routers.

There are nuances when going into a network observer’s perspective, especially for the SMP routers, but I do not feel qualified to speak with confidence on the exact implications there and how the Simplex related protocols actually look like in active network flow. All I can say is that the whitepaper does account for this, and really the only, relevant, potential problem at this point is the recipient and sender SMP router(s)/relays seeing your IP address, which *could* be problematic depending on who may have control over these relays and whether them knowing your IP address is a problem.

SimpleX goes into fine detail regarding this threat modeling in their whitepaper, which I encourage more people to read and go through when they have questions about SimpleX: (simplexmq/protocol/simplex-messaging.md at 27a37387be98d9c7ec0e62373e125539675d0095 · simplex-chat/simplexmq · GitHub)

Again, you need a concrete threat model to make this determination of whether your adversary or adversaries knowing you are using SimpleX itself poses a danger to your life or person. Because in that case, this may warrant different or other measures one needs to take in order to communicate safely and discreetly.

IP Address Privacy

SimpleX doesn’t use “Tor onion technology by default” in the way you may think. And to be fair, their wording in earlier iterations of their front page is somewhat, initially misleading for those who don’t read further than their highlighted and touted features, or perhaps got lost in details of their whitepaper and blogs. The way SimpleX approaches each part of this is very layered, so it is hard to boil down some of these dtails.

SimpleX implements 2-hop private message routing since version 5.8, the relevant part to IP address privacy, which puts a forwarding relay between you and your receipient’s selected relays for receiving messages. This forwarding relay will be from what is considered a “known” relay, which would either be the included Flux or SimpleX operated relays at present moment: (Frequently Asked Questions)

Of course, support for the private message routing protocol depends on the support provided by the relays. The client has some control over this in network settings.

The objective is not solely protection of the IP address, but the transport session too, as the metadata properties of a transport session can be used in an attempt to deanonymize of a pair of users using correlation analysis. SimpleX’s private message routing protocol mitigates this via a multi-layered encryption approach, encrypting certain routing information both away from and between the relays in the event TLS is compromised, mitigating effective traffic correlation in conjunction with the design of their unidrectional queues: (SimpleX blog: SimpleX network: private message routing, v5.8 released with IP address protection and chat themes)

Elements of the private message routing protocol were inspired by Tor, as said by SimpleX themselves in the linked blog post in the previous paragraph.

In the parts that actually use Tor, XFTP and SMP relays have dual addressing, so they have both accessible URIs over the clearnet and onion services. The onion services for these relays are accessible over a Tor-SOCKS proxys setup within the SimpleX client application.

Incognito Mode

Incognito mode is just a feature to reduce needing to create multiple chat profiles to avoid leakage of pseuodnyms that could identify you in other platforms or places. Basically, when your contact connects to you via an invite-link, and incognito mode is enabled, instead of sending content and information you set in your Chat Profile, it sends a randomized profile, that’s all.

Final words

I’m sure those more experienced than me can go into further details about the realities of netflow analysis and all that other stuff that might make some of these features not as effective or perhaps ineffective altogether. However, I am writing at this at a very late hour, and I am tired.

As for how I use SimpleX, it’s pretty simple; I just have a permanent invite link for people who know me as Gabby. I have separate chat profiles and one-time invite links for other company. Private message routing addresses my needs already. My threat model as it stands right now doesn’t have relevant threat actors to need more than this. And still, you can use Tor in conjunction with SimpleX if you really need it, or just a VPN, but in the end it all depends who or what your threats are, and who or what you need to protect and to what extents.

What are you actually trying to accomplish. You’ve asked if the tools are good and possible to work with, but we don’t know the job. Could you specify what you are actually trying to do so we can recommend optimal tools / workflows.

When you go around telling people your messaging app is improving on Cwtch by having no identifiers as opposed to Cwtch’s Onion Service profiles, people might get the idea you’re actually providing a superset of privacy features instead of having the client leak the IP address to the server by default.

From an Entry Node*

Yes let’s dive straight into the substance.

End-to-end correlation attacks are indeed a problem, which is why it’s so important to minimize the likelyhood a single entity can control both entry and exit node. How many hosting provider organizations like Akamai run the entire public SimpleX server infrastructure today? Last time time answer was 2. Tor was 2000+

So you be so kind to inform the users upfront in the marketing material, a trivially easy to find threat model, or the application itself, so we can get this over with?

You’re talking about colluding Tor nodes, but fail to note you have to large organizations that can end-to-end correlate about 50% of default config connections, and 100% if the two organizations collude.

The end-to-end correlation capable servers can correlate sessions based on IP-addresses. Nothing you do inside the protocol provides additional anonymity. Just because same IP puts packet to different hole with different number in the server, doesn’t mean the server can’t see which IP address does that.

Mixnets are adding to Tor mostly the higher latency packet proxies. If you want to offer that without protecting the IP-addresses, you’re free to do that. You’re just not providing anonymity to users from the SimpleX server infrastructure.

The fact you yourself have spoken about adding Tor as an opt-in “paranoid” option tells exactly how highly you actually think of Tor. You’re supporting Tor already: Changing proxy settings to localhost:9150 automatically switches to Tor Onion Service servers, but you just don’t want to openly tell people if they should enable it to meet their threat model. Your corporate puff is hurting your own users.

Tor does not learn as an organization when you run Tor and visit bbc.com. Nor does BBC know who you are.

You’re selling SimpleX as platform that is giving an impression users are anonymous from you but the fine print says the opposite. This thread is another great example of how it it actually goes. It’s exactly the same as Telegram’s strategy for encryption. People think it’s E2EE but the fact is the messages leak to the server. And what you’re saying here is the equivalent of “Just as well you might demand Signal to reveal they have access to ciphertexts” Yeah no shit they do. That’s obviously part of the deal. When you use Tor, entry node will know you’re using Tor.

It’s Onion Service address, not hidden address. It was Hidden Service address. Also this isn’t case. You’ll have to provide source for this.

How exactly do you think Onion Services get deanonymized by rogue nodes outside normal end-to-end correlation? Both parties use long-lived guard nodes. If you’re not lucky on first try, you’ll have to wait a long time for another chance.

Asserted without evidence, dismissed without evidence.

And what data is that? Entry node fight-the-fascism sent 38,000 AES-encrypted packets to us on June 3rd 11pm and we forwarded them to suck-it-FBI exit node? This just doesn’t get more dumb. Where are you getting these talking points?

Again, the ENTIRE public node network was, last time I checked, run by Akamai and RunOnFlux. Two organizations. How’s that for distributed trust?

So looks like the client lists two server operators, both enabled by default. I take it the Akamai is the Simplex Chat Network operator and that’s all your own servers running under Akamai hosting?

Explain this. Are they the Akamai and RunOnFlux? Are they other, smaller organizations? Are they individual people like those hosting the Tor network? Why are you being so vague about this? Why aren’t you giving context about at what level Akamai and RunOnFlux are in this hierarchy?

So if I now go to SimpleX FAQ to see if it says SimpleX is masking my IP address, it communicates it with nuance that contacts can’t see your IP, but server can?

So that’ll be no, yes?

You’ll have to read all the way until the end of the next part to get this totally logical sentence

providing better transport anonymity than general-purpose networks, like Tor or VPN. You still can use Tor or VPN to connect to known servers, to protect your IP address from them.

It’s almost like GCHQ has forced you to dance on the bullshit mountain of self-contradiction. You’re second only to Pavel Durov in walk matches the talk, Evegeny.

EDIT: Added full response.

Correct. But Tor puts no administrative or technical efforts in preventing collusion - these 2000 organizations (I would challenge the number, real number is likely much smaller) are not making any commitment to the users to not sell or share data. And Tor clients do not enforce that different operators are used in circuit, as SimpleX clients do, afaik, or do they?

Tor organization, given that they control the registry of relays (unlike we do - running SimpleX server is unpermissioned), could have required a very simple thing as a condition of being in this registry - sign an operator deed that promises that:

  1. data can’t be sold.
  2. data can’t be shared, except via compulsory requests (or allow operators to declare compliance with voluntary requests too).
  3. binding declaration of whether IP addresses logged or not (many jurisdications require it, so relay operators may have to do it).
    And then allow clients to take this information into account when deciding which relays to use.

It would not preclude anonymous relay participation, as signing a deed is possible without disclosing identity or any KYB process. Even if it’s not unenforceable, it is legally binding. Why not do it? As we plan the extension of preset operators, we will be making such a requirement that operator signs the deed as a condition of participation.

What many people think, incorrectly, that a large number of relays make collusion hard or deanymization unlikely, and that a large number of relays have to collude for deanonymization to happen. But this is not the case. Statistically, if 2% of relays collude (and in case of Tor I think it’s certainly a higher number), and clients choose relays randomly, then after ~1750 random choices the probability of deanonymization becomes over 50%. That’s why it’s very important that clients know who runs these relays, and chooses only independent relays in each circuit.

Is it smaller than 2? Yes or no will do.

How are you preventing CIA from running covert businesses who appear as independent. Does your hosting policy agreement have a super-duper clause that says “If you’re a government agency, you HAVE TO TELL!!!11” How are you enforcing that clause from dishonest organizations that have legal obligation to lie to you, and secret laws that give them legal immunity?

You can’t be this naive :smiley: You’re in the big boy’s league now Evgeny.

FVEY agencies routinely hack servers in each others’ countries and exchange information. Russia doesn’t give a shit about your contract. Nor will China. Or Iran.

You’re changing the topic. Explain the hosting diversity of SimpleX. Why is it TWO organizations for the entire public server infra?

Perhaps I’m using too small font as you skipped over this question for at least the second time.

Thanks for input. Im going to explain briefly without identifying information what im trying to achieve. Im trying to talk to my lawyer in a way that I can do so without holding a phone conversation, as I am constantly in plane trips, in public, and so on, and many times I cannot attend a meeting in a private way that allows me to talk without a lot of people listening. I manage client’s data and my own data if I have any doubts, and so I don’t want to have be talking about banking details, contracts and so on, so I wanted to find a way to safely have a written conversation. I don’t need to share big documents, only small files. I also wanted to avoid phones, as phones suck in general, and I certainly never enjoyed the fact that all these apps like Telegram and Signal force you to attach a phone number to it. I have looked at Signal and there is no way to isolate it into a Linux machine as any incoming chats on Signal show up on the laptop as well. Signal may be good to have a private phone conversation but that’s about it. I don’t feel confident typing anything relevant on a phone. And that’s assuming the phone isn’t recording the Signal’s call as well. Of course you also have to always trust the other end keeps things private.

So basically, I was looking to have a chat with temporary destruction enabled, and I have been testing Signal and SimpleX. Signal has temporary chat destruction, and it’s great since you can set it as low as 30 seconds, but the other end can disable it at any time. And like I said, I don’t really trust writting with a phone.

SimpleX seems like the only alternative that doesn’t attach your activity to a phone, and I can isolate this into my laptop, which I trust way more. However, im still not sure how the temporary chat thing works.

Why I can only enable temporary chat destruction for one week and beyond? Why I cannot set a custom amount of time, or just 30 seconds like Signal to simulate a spoken conversation? This is annoying.

Also, once the messages are deleted, are they really not recoverable? I don’t want banking details, contracts and so on, stored forever. I think I can keep them safely, but I have no control on the other end of the conversation, so we would rather not store everything that we chat about unless really needed, which we would move locally elsewhere.

Another question would be, once you set it to 1 week (I guess I will use this, since I cannot find anything lower than that) is the timer locally set, or while you are not online this timer does not continue to count?

Could you make a backup of the messages before the 1 week mark hits to permanently archive this chat, or is it impossible and the messages are deleted from both databases (both ends of the conversation) no matter what?

Also why isn’t there a mode to manually delete chats from both ends of the conversation? This is so annoying, same as on Signal. Why can’t one just choose what information is within the conversation? If someone says something I don’t like or don’t want to know or anything like that, and I don’t want to be connected to that, I should I have the freedom of deleting it from myself and from the other end, if both parties agree to this for the duration of the chat (not being disabled at will at any time). This is something I like about Telegram’s secret-chat feature, you can at least manually delete chats on both end of the conversation (however buggy it is, since sometimes previews show even tho the message was deleted…)

Anyway, just trying to learn about how this works.

That being said, im not sure from what im reading above. My lawyer is not a tech guy, but he has some good understandings on privacy and FOSS. I have known him for years, but sometimes I talk to people that I don’t know as much and may want to ask certain things, and I don’t want to be identified, so I thought this could be a good way to ask for things without revealing yourself until you really want to establish a professional relationship.

If the other person is not using a VPN or Tor, but has a decent setup such as not using Windows at least, and if I enable the 1-week deletion for the contents, and is overall a decent person that will keep things private, is this good enough? I would not be revealing any doxing information until I felt like it. What I want is to have a temporary written conversation, and get things deleted on both ends, until we agree to have a more stable work relationship and we know what is and isn’t safe to speak on a phone conversation so I can work on the move.

And is SimpleX any good for audio calls compared to Signal? Should I stick to Signal even tho phones generally suck? Sometimes I can do audio calls and im on the move, so a phone is better than having to carry a laptop.

The developer of SimpleX is participating here, so I hope I can get some input on this model from him, as well as the other guy which is also participating challenging this whole Tor or not Tor situation, and see what’s best for my use case here. Im not a tech guy myself, but I was also suprised to see you have to trust 2 servers with this, I tought this worked differently, but isn’t the same with Signal and others? There is always some server that gets information, and so the deal is that the software is properly coded and the server cannot ever access the information because it’s encrypted from end to end, but I thought SimpleX somehow worked fully locally without servers and was P2P but somehow allowed privacy with some clever things involving Tor or something. Anyway not a tech guy like I said, just trying to remain private when dealing with sensible information. No one’s lives is under treat here or anything wild, however I don’t want to take any chances when dealing with personal information, and I want to have as much control as possible of what happens on both ends of the conversation, and only reveal my identiy when I really want to.

Your threat model sits decently well with SimpleX. You’re looking for content-privacy by design and some metadata privacy. Your OP post asked if it works with Tails. It can in principle work given that Tails allows restoring dotfiles from persistence. But there’s no apt-repository that the OS would cache, so AFAIK you’ll have to manually install it from the .deb file for every session.

The remote bootstrapping issue still follows the laws of physics. Whatever platform you use to exchange one account is breadcrumbs someone could follow. But if you exchange the SimpleX link over E2EE, your main concern is mainly the “outer” app’s backdoors.

The main problem is what can you get the other party to install. Once you have the professional relationship established, then you can start planning what tools you need.

It depends. If someone tracks them by their IP address, your lawyer might be able to tell who you are even though you’d always use Tor. If you’re doing business anonymously, then it might work. But most business is about trusting the other person so chances are you don’t really benefit from anonymity. What you can benefit from is metadata privacy, i.e. if you want to hide that you talk to them in the first place, metadata resistant messaging systems like https://docs.cwtch.im/, https://tryquiet.org/ and https://www.ricochetrefresh.net/ can work. But if it’s just content you want protected, SimpleX will work fine. You can use SimpleX anonymously if you configure proxy settings:

Get the installer anonymously

$ sudo apt install tor -y  # or whatever
$ torsocks wget https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-desktop-ubuntu-24_04-x86_64.deb

Click Create your profile → Enter profile name → Click Create profile
Enter and confirm passphrase → Click Set database passphrase → Click Encrypt
Click Continue and Accept

Then before you do ANYTHING ELSE:

Click the bottom left corner avatar → Click Settings → Click Network and Servers
1. Toggle Use SOCKS proxy, click confirm
2. Click SOCKS proxy settings → Change the Use .onion hosts setting from When available to Required. The settings should say by default localhost and 9050.
3. Click Back arrow and then Save and reconnect

That should ensure your account will be as anonymous as it can be from the beginning.

The gripe I have with the SimpleX project is the marketing and threat model communication of the project is so bad it leads to misconceptions about SimpleX’s security design and default privacy properties. The very same misconceptions your OP post had. Getting it wrong is not your fault. SimpleX needs to communicate it better: transparently and upfront.

  • SimpleX is fine if you only need it for content-private by design (=E2EE) messaging.
  • SimpleX is fine if you need metadata privacy and you jump through those hoops of installing and configuring Tor proxy settings in the beginning.
  • SimpleX is not fine if you want to use its default security for the threat model your OP post described (anonymity from service provider; if you don’t want Signal to have your phone number, why would you want SimpleX to have ~equally identifying IP-address?).

No for that you’ll want Cwtch, Quiet, Ricochet Refresh, OnionShare Chats, Briar, or TFC, in the order of most recommended to least. I’m the author of TFC so there’s conflict of interest so that’s why it’s last.

So the quick tl;dr is, if you’re concerned about hiding only what you say, but not with whom you talk, Signal and SimpleX are more than enough. If you also need to hide metadata, like the fact you’re talking to that person in the first place, with privacy technology comparable to end-to-end encryption, you’ll want Cwtch, Quiet etc.

You are correct about limitations of SimpleX threat model. You are very wrong to recommend Tor only or Cwtch via Tor for any advanced threat models. Tor traffic data is available commercially. Tor itself acknowledges that it takes weeks to break hidden addresses: Announcing the Vanguards Add-On for Onion Services | The Tor Project. Cwtch uses persistent hidden addresses, and while it allows to create a separate profile per contact, very few people actually do that.

You are naive to think that any changes to our marketing would help people with advanced threat models to achieve security - they unfortunately need to understand technical details. And for advanced threat models SimpleX over Tor provides better security than Cwtch (that has only Tor, and Tor relays know users’ IP address in the same way as SimpleX relays do).

Whether users should use SimpleX with or without Tor is not so obvious, and depends on their threat model - it’s wrong to say that using Tor is better for all users. Some countries monitor and criminalize Tor usage - enabling Tor by default would put their security at risk. So I strongly believe that our support for Tor should end at providing SOCKS proxy capability - everything else users should configure for themselves - it takes minutes on Android, and provides better security than embedded Tor ever could.

So how about you communicate them to your users. It’s ok to not be able to accomplish everything. E.g. low latency calls won’t work through Tor. It’s OK that you choose what you provide. Just link to threat model from the front page like https://tryquiet.org/ Surely you agree it’s extremely professional up there. Then have it explain to users in plain terms what your project protects from and what it doesn’t. If you can’t do that in good conscience without revealing something nasty, maybe take a good look in the mirror :))

And yet Tor remains a paranoid setting for SimpleX:

tor routing to the clients as an option, with a separate tor connection per contact. “paranoid” privacy level for people who need it.

-You 4 years ago

We’ve been over this same shit for four years. I’m beginning to see a pattern here. You’re taking the Telegram route of puffing your product hard until there’s critical mass of users, and then the real security won’t matter because it’s shit-hard to get out of.

Tor traffic data is available commercially.

You repeat the claim without backing it up or even explaining what data is available and how valuable it is, who it is sold. Random node telling which random node sent data to which random node isn’t valuable. No individual Tor node has access to valuable data. End-to-end correlated data can tell this user visited this clearnet domain at this point in time. But the content is practically always TLS-encrypted.

Tor itself acknowledges that it takes weeks to break hidden addresses: Announcing the Vanguards Add-On for Onion Services | The Tor Project .

Yeah Tor isn’t a miracle product. But it’s actually doing something about the problem. Unlike SimpleX. You haven’t taken a single step to prevent SimpleX servers from learning user IPs, outside making setup of Tor a bit easier. Your own baked-in solution to the IP address leakage is Tor, yet you refuse to make it a “tell users upfront about the options and let them make the choice.” Here’s a quick shitty AI slop mockup for you:

Install Tor with the app, and put something like that to your desktop setup. Then work to get Tor integrated on other clients. It’s not Tor only messaging app, so you don’t have to provide it for every OS immediately.

SimpleX uses users persistent IP address for all connections to server by default. That’s worse.

Yeah after four years that thought has crossed my mind. Money apparently means more to you. You haven’t even converted the GitHub Wiki article into proper threat model article you’d dare to link on your front page. It’s been a year since I last proposed it to you. But you again just fled the conversation instead of taking action. Amazing leadership as always. It’s like this whole thing is threatening your ego.

Which is why it’s so damn good idea to write a proper threat model article that educates them and link it so that they can’t miss it.

The difference is, Tor isn’t an adversary. It’s a best practice routing protocol. Tor-only messaging apps like Cwtch are p2p: users run their own servers, so the servers can be trusted. Centralized SimpleX server infrastructure without Tor is NOT the same. Why is it ok for the servers to know the IP address but not the content, if the servers can be trusted? Either advertise it correctly, or fix your system to match the advertised security.

Which you should be TEACHING them about. Write a proper article about it and link it to front page.

And encrypted messaging apps are also illegal in countries like Iran, Saudi Arabia, and Turkmenistan. How are you handling that part?

You don’t have to bundle Tor. But as this thread already showed you, people mistakenly think it uses Tor. So you might want to be clear on that.

It is. It’s also wrong to claim you’re more anonymous than Tor-routed messaging systems when you’re doing fuck all about preventing the servers from learning the IP-address.

Then make it BLATANTLY CLEAR that your system does NOT hide the IP address from servers and that you need to follow the Tor instructions for that.

Why is making your app’s threat model communication orders of magnitude better so hard for you? Is it an ego thing? Or a money thing? Think about it.

May I ask why you’ve seemingly adopted a rather aggressive stance against @epoberezkin personally? I can certainly sympathize with the frustration of having your points fall on deaf ears. But the level of hostility I’m reading from just this thread seems odd to me. It’s the kind of language reserved for someone malicious or at least grossly incompetent.

Granted, I’m an outsider. You two could have a personal history of which I am not aware in which this kind of back-and-forth is okay. But surely you can understand my confusion seeing this kind of spat laid bare on a public forum without context.

This stalemate has continued for four years across Reddit, HN and under PG forums. Every single time the CEO eventually just disappears. Nothing gets fixed. There’s nothing personal about this. It’s about my firm stance that products the security of which does not match the marketing is snake oil. Snake oil is dangerous. Many people depend on strong cryptography and privacy tools with their lives.

As the CEO Evgeny is supposed to know what’s best for his customers. Instead he’s taking the capitalist route where the marketing stretches to the very edges of what could barely be considered ethical; Puff is considered the norm, and users are expected to realize they’re being misled and the fine print is there if they really want to know what’s up.

I’ve given SimpleX the benefit of the doubt in the beginning. Like I did with Telegram and plenty of others. I’ve worked with privacy tech for 14 years now. A lot of projects have happily taken in good suggestions and shot down not-fully-thought-out critique. But the arm wrestling over something as simple as

  • Explain your threat model
  • Make threat model trivially easy to find
  • Make sure the threat model and marketing matches reality

is starting to tell me something is off with this project. There’s zero transparency into the server system as we obviously don’t run the servers ourselves. There’s zero guarantees here unless you run your own servers. The mixnet magic that supposedly runs inside the Akamai server farms is meaningless. It’s like Signal’s sealed sender. The server promises to strip sender data for cached messages but you don’t really have any guarantee of that. The project is putting way too much into “trust me bro” category.

Just like you don’t trust the server to not read your messages and you force the behavior on client’s end with E2EE, metadata should be treated the same: For author metadata protection, you make users register through Tor. For correspondence metadata protection you use traffic masking. All of that runs client side. It’s fine to offer mixnet like functionality with higher latency shuffled packet i/o on proxy chain nodes, but that mechanism can’t be controlled by two big companies.

This is all technical critique I’m presenting and yeah having it fall to deaf ears for years obviously brings out frustration. I care about this stuff enough to step out of my own project to recommend the best options.

Well I just said in the message above that I’ve been having the same conversation for four years.

The linked reddit thread offers some insight to the beginning. But here’s the previous big fight from about two years ago: SimpleX vs. Cwtch, who is right?


The absurd part here is that Evgeny doesn’t realize that if he’d make the threat model trivially easy to find and communicate what the app can and can’t do in it so that the lay person understands it, and not lie in the ad material, I’d be recommending it all the time along with Signal. He’d get free advertisement instead of getting called out over and over.

He doesn’t have to beat Cwtch which is not a mass market messaging app. He can just say he’s got Signal that has slightly more decentralized server system that exchanges ciphertexts with anonymous credentials to prevent incidental collection in a single server about who talks to whom, but that the service doesn’t make the user anonymous from the servers.

That’s more than fine. Like just say it like it is :smiley: It’s fantastic advertisement when you’re proud of what you have.

But he seems to be desperate to push the corporate puff that he has the most secure messenger SimpleX Chat: The World's Most Secure Messaging I’d rather not toot too much of my own horn here, but given that SimpleX lacks traffic masking to hide a lot of metadata, and it doesn’t do anything about remote key exfiltration, I’d say my borderline unusable-in-its-security system GitHub - maqp/tfc: Tinfoil Chat - Onion-routed, endpoint secure messaging system · GitHub takes the cake for the most secure messaging system. But I don’t go around recommending it to everyone. I didn’t write it to put others down or to their places. I wrote it to those who need it. I make nothing out of it.

So Evgeny should realize he’s never going to have the most secure thing, and instead build his own thing. He gets to spec it however he likes, and he gets to sell it to the target audience. The best part is, if he doesn’t put out bullshit marketing and he provides the threat model correctly, he’s actually got a perfect tool regardless of whether it ticks all security feature boxes: every user will know exactly what they can use it for, and thus, if it’s suitable for their needs, and that is the gold standard. That is what I want to see from every project.

So maybe that explains my position.

It would be easier to agree with you if you weren’t aggressive but still I see your point from focusing on the content.

  • Using SimpleX is not a strong data point
  • If the mentioned services are honest about their encryption, they probably can’t see that you share a SimpleX link

If the person you want to talk to sees the link in a regular email, is this a problem?

Yes, that is what im doing. For the database, I export it and import it later as needed in a live Tails session. This allows me to have a continuity and not lose my conversations while having no traces of using SimpleX.

As far as configuring Tor, if im using Tails since the beginning, then I guess I don’t need to bother with that option.

If the othe person does not use Tails and does not install Tor and does not enable the settings you described (so basically, uses default settings), then what can these 2 default servers see exactly?

Also, could someone explain How exactly do you enable autodestruction in messages? There are 2 settings on autodestruction of messages, and it’s really confusing. How I enable something reasonable, like 1 hour or so before autodestruction for both ends of the conversation? because im not seeing a way to do this. It’s just confusing how it is worded. I think one setting is to delete only on your end, which allows down to 1 day, another is for both ends, which allows only 1 week. Why I cannot enable anything I want, like 30 seconds as you can in Signal? because if you have to wait 1 week for the chats to be destroyed on both ends of the conversation it’s kinda dumb, the goal is to have a temporary conversation, simulating a spoken conversation but written, but this software does not have a way to do this?

As far as other software, im sure there are so many ones, but getting people to use Telegram and Signal is already an achievement, SimpleX is rather obscure, and then the other ones are even more obscure, for now I think I need to find a middle ground where I can have a conversation with autodestruction in both ends of the conversation, E2E, and at least not leak IPs to the participants. If people are not wise enough to use Tor, it is what it is, at least im protecting on my end by using Tails. Even in the (unlikely) scenario a, for instance, lawyer got his stuff taken because a client did something wrong, and then they could see your communications while they look for stuff, if I stay private using Tails, not revealing personal info and we use autodestruction, I should be safe. Of course if you become a real client long term client you are going to always be at risk with any communications that are written under your name.

Forgot to ask, what do you think of Incognito Mode? I have been messaging myself and I see that the reciever is informed that you are using Incognito Mode. Why are they informed? It’s the point to make yourself look as a legit profile but random new one?

Should you use this, or just set a cool nickname and stick to it, and when you need to, create another different profile with another nickname? Im not sure what to make of IncognitoMode.

Yes and no. It won’t be the same exact protocol. When you use SimpleX without proxy configuration, SimpleX will most likely connect to a clearnet server through an exit node. That’s much less ideal than the alternative, where you set the app to connect to the SimpleX Onion Services. The main difference is the person running the exit node will be able to tell someone is connecting to SimpleX server and they can mess with the connection. They won’t know who is connecting but still, the Onion Service is slightly better as the SimpleX client and server will have separate Tor-connection specific end-to-end encrypted link. I’m not sure if SimpleX client normally uses pinned certificates for server, but the Onion Addresses are pinned and those pin the server’s public key. The downside is 1-3 more Tor nodes for the proxcy chain (the exact depends on how the onion service is configured, some don’t care about server’s geolocation hiding so they don’t force that many nodes). So my recommendation is to at least test the Onion Service servers and see if it works well enough.

SimpleX has a footgun in that it silently falls back to non-anonymized connections if say someone messes with your app’s proxy settings and disables those. But since you’re always using Tails you’re on safe waters as misconfiguration on Tails is almost impossible. Thus your Tor connection will anonymize who you are from the server. Your contact without Tor will reveal to the server their IP. What is unclear at the moment is, can the server tie together single user’s queue numbers across sessions. That determines whether colluding SimpleX servers can determine that your contact is talking this amount at these hours with some specific anonymous contact (you). My recollection is that the clients deliver the queue addresses through the E2EE link so the servers indeed can’t perform that without end-to-end correlation via IP addresses.

So you should be mostly safe from contacts with less ideal practices, as long as the party interested in your communications isn’t so interested they’d track down all your buddies to read the conversations from their endpoints. That’s unlikely so I think you’re good.

My guess is this is just so that the contact has some time to react to the messages. Designing these apps usually has to be defensive against the inevitable reports of “my contact can’t see my messages”. But it could probably be a bit better in terms of resolution.

Mm, my advice is to spend the extra effort to get them to Signal instead of Telegram, it’ll pay off in the long run. Telegram is quite horrible as I’ve explained here WhatsApp vs Telegram - #8 by Gr86

Apparently it’s about generating a throwaway nickname for you as you join a 1:1 or group conversation. No idea why it’s advertised to contacts. Maybe it’s to reduce confusion spammy looking accounts contacting you might cause.

Depends on your use case. What you want associated with the cool nickname is best done under that. For the rest of the conversations an incognito mode alias might be better. Maybe you want to reveal something identifying but without associating it with your main account. It doesn’t have to be either or, flexibility helps.

Wrt this, it may be better to use the Onion Services for this feature, as if you’re the only person connecting to the server through some exit node on multiple occasions, the server, if present in the room making timing attacks, might be able to infer that the incognito alias belongs to same user as your main account. With Onion Services, all connections appear to originate from localhost on server side, so there’s no network level identifiers tying packets together.