SimpleX Chat

Private & encrypted - the only platform without user identifiers!

You can download terminal chat app from GitHub or using this command:

curl -o- https://raw.githubusercontent.com/simplex-chat/simplex-chat/master/install.sh | bash Copy to clipboard

Alice

Bob

Tom

Privacy redefined

SimpleX advantage:

SimpleX ensures data and meta-data privacy

with a new protocol design – it delivers messages

without using senders' and recipients' identifiers,

unlike any other messaging platform.

Security

Two-layer encryption and communication integrity

Privacy

Your contacts and messages are stored on your device

Convenience

Easy to add contacts and start talking

Problem: chat security

End-to-end encryption?

Alice sends the key to Bob (e.g. via p2p network or via chat server)

Alice
Alice sends the key to Bob
Bob

Now Bob can send encrypted messages to Alice - he believes it is secure!

Alice
They believe it is secure
Bob

Man-in-the-middle attack!

But the key can be intercepted and substituted by Tom (the attacker)

Alice
key is intercepted
Bob
Tom

Now the attacker can read the messages without Alice or Bob knowing

Alice
attacker can read messages
Bob
Tom

What is the solution?

To create secure encrypted channel you need an existing secure channel
where you can pass the encryption key (or key fingerprint).

Any alternative solution can be compromised.

Make a private connection!

To add contact and to start chat

Adding a contact in mobile app will require sharing your one-time QR code.
In the terminal UI you need to share an invitation with your contact.

After creating your chat profile in the app:

1.
Show QR code or share link

mobile app: show QR code to add contact
Alice

2.
Your contact scans QR code or opens link

mobile app: scan QR code
Bob

3.
A private connection is established

mobile app: confirm contact
Alice

4.
Now you can chat privately!

mobile app: start chat
Bob

Comparison with other protocols

simplex logo SimpleX chat Signal, big platforms XMPP, Matrix P2P protocols
Requires global identity No - private Yes 1 Yes 2 Yes 3
Possibility of MITM No - secure Yes 4 Yes Yes
Dependence on DNS No - resilient Yes Yes No
Single or centralized network No - decentralized Yes No - federated 5 Yes 6
Central component or other network-wide attack No - resilient Yes Yes 2 Yes 7
  • Good
  • Bad
  1. Usually based on a phone number, in some cases on usernames
  2. DNS-based addresses
  3. Public key or some other globally unique ID
  4. If operator’s servers are compromised
  5. Does not protect users' metadata
  6. While P2P are distributed, they are not federated - they operate as a single network
  7. P2P networks either have a central authority or the whole network can be compromised - see here

SimpleX messaging protocol

Unidirectional (simplex) queues

Simplex messaging protocol (SMP) for messaging via secure persistent queues will serve as the low level protocol for SimpleX chat - see demo server implementation.
It uses different encryption keys for each message queue - the key is passed via existing secure channel - e.g. QR code or another simplex queue.

simplex messaging protocol

Chat

Communication integrity

Each chat uses two (or more) simplex queues for duplex communication. Each message contains the hash of the previous message to detect if messages are lost or changed.

simplex chat: duplex conversation

Use SimpleX

SimpleX chat terminal client v2.0.0 is released!
– groups and files
– two-layer E2E encryption, with double-ratchet algorithm
– protocol is compatible with mobile apps

You can use our servers or deploy your own, e.g. using StackScript on Linode.

Sign up to be updated about the new releases.