All Projects → simplex-chat → simplex-chat

simplex-chat / simplex-chat

Licence: AGPL-3.0 license
SimpleX - the first messaging platform operating without user identifiers of any kind - 100% private by design! iOS and Android apps are released 📱!

Programming Languages

haskell
3896 projects
kotlin
9241 projects
swift
15916 projects
HTML
75241 projects
typescript
32286 projects
CSS
56736 projects

Projects that are alternatives of or similar to simplex-chat

rfc
Modular p2p messaging stack, with a focus on secure messaging.
Stars: ✭ 81 (-95.9%)
Mutual labels:  protocol, messaging
Specs
Modular p2p messaging stack, with a focus on secure messaging.
Stars: ✭ 40 (-97.97%)
Mutual labels:  protocol, messaging
Zenoh
zenoh unifies data in motion, data in-use, data at rest and computations. It carefully blends traditional pub/sub with geo-distributed storages, queries and computations, while retaining a level of time and space efficiency that is well beyond any of the mainstream stacks.
Stars: ✭ 182 (-90.78%)
Mutual labels:  protocol, messaging
numspy
A python module for sending free sms as well as finding details of mobile number via website Way2sms.
Stars: ✭ 57 (-97.11%)
Mutual labels:  messaging
gosd
A library for scheduling when to dispatch a message to a channel
Stars: ✭ 21 (-98.94%)
Mutual labels:  messaging
android-chat-tutorial
Sample apps for the Stream Chat Android SDK's official tutorial
Stars: ✭ 44 (-97.77%)
Mutual labels:  messaging
axesync
🎛 blockchain framework for iOS
Stars: ✭ 12 (-99.39%)
Mutual labels:  protocol
ethereum-crowdsale
0xcert protocol crowdsale contracts for Ethereum blockchain.
Stars: ✭ 15 (-99.24%)
Mutual labels:  protocol
RabbitMQTools
PowerShell module containing cmdlets to manage RabbitMQ.
Stars: ✭ 27 (-98.63%)
Mutual labels:  messaging
Credits
Credits(CRDS) - An Evolving Currency For An Evolving Society
Stars: ✭ 14 (-99.29%)
Mutual labels:  protocol
vscode-dms
Direct Messages for VS Code
Stars: ✭ 88 (-95.54%)
Mutual labels:  messaging
Adium-Steam-IM
Adium protocol plugin to support Steam instant messaging
Stars: ✭ 50 (-97.47%)
Mutual labels:  protocol
How-to-Deconstruct-Ping-with-C-and-NodeJS
🙈 Simple examples that show how to work with binary headers in C and NodeJS
Stars: ✭ 51 (-97.42%)
Mutual labels:  protocol
gobroker
golang wrapper for all (to-be) kinds of message brokers
Stars: ✭ 15 (-99.24%)
Mutual labels:  messaging
xmpp-php
PHP client library for XMPP (Jabber) protocol
Stars: ✭ 33 (-98.33%)
Mutual labels:  protocol
open-dis-java
Java implementation of the IEEE-1278.1 Distributed Interactive Simulation (DIS) application protocol v6 and v7 💥
Stars: ✭ 30 (-98.48%)
Mutual labels:  protocol
UniTaskPubSub
UniTask & IUniTaskAsyncEnumerable baseed pub/sub messaging. this is like the UniTask version of UniRx.MessageBroker.
Stars: ✭ 61 (-96.91%)
Mutual labels:  messaging
mnm-hammer
mnm implements TMTP protocol. Let Internet sites message members directly, instead of unreliable, insecure email. Contributors welcome! (Client)
Stars: ✭ 66 (-96.66%)
Mutual labels:  messaging
OpenProtocolInterpreter
Converts the ugly package that came from Open Protocol to an object
Stars: ✭ 94 (-95.24%)
Mutual labels:  protocol
chatcola
chatcola.com messaging server - self-host your messages without multi-domain nightmare!
Stars: ✭ 25 (-98.73%)
Mutual labels:  messaging

SimpleX logo

SimpleX - the first messaging platform that has no user identifiers of any kind - 100% private by design!

build GitHub downloads GitHub release Join on Reddit Follow on Mastodon Follow on Twitter

iOS app   Android app   F-Droid   iOS TestFlight   APK

  • 🖲 Protects your messages and metadata - who you talk to and when.
  • 🔐 Double ratchet end-to-end encryption, with additional encryption layer.
  • 📱 Mobile apps for Android (Google Play, APK) and iOS.
  • 🚀 TestFlight preview for iOS with the new features 1-2 weeks earlier - limited to 10,000 users!
  • 🖥 Available as a terminal (console) app / CLI on Linux, MacOS, Windows.

NEW: Security audit by Trail of Bits, the new website and v4.2 released! See the announcement

Contents

Why privacy matters

Everyone should care about privacy and security of their communications - innocuous conversations can put you in danger even if there is nothing to hide.

One of the most shocking stories is the experience of Mohamedou Ould Salahi that he wrote about in his memoir and that is shown in The Mauritanian movie. He was put into Guantanamo camp, without trial, and was tortured there for 15 years after a phone call to his relative in Afghanistan, under suspicion of being involved in 9/11 attacks, even though he lived in Germany for the 10 years prior to the attacks.

It is not enough to use an end-to-end encrypted messenger, we all should use the messengers that protect the privacy of our personal networks - who we are connected with.

SimpleX approach to privacy and security

Complete privacy of your identity, profile, contacts and metadata

Unlike any other existing messaging platform, SimpleX has no identifiers assigned to the users - not even random numbers. This protects the privacy of who are you communicating with, hiding it from SimpleX platform servers and from any observers. Read more.

The best protection against spam and abuse

As you have no identifier on SimpleX platform, you cannot be contacted unless you share a one-time invitation link or an optional temporary user address. Read more.

Complete ownership, control and security of your data

SimpleX stores all user data on client devices, the messages are only held temporarily on SimpleX relay servers until they are received. Read more.

Users own SimpleX network

You can use SimpleX with your own servers and still communicate with people using the servers that are pre-configured in the apps or any other SimpleX servers. Read more.

Frequently asked questions

  1. How SimpleX can deliver messages without any user identifiers? See v2 release annoucement explaining how SimpleX works.

  2. Why should I not just use Signal? Signal is a centralised platform that uses phone numbers to identify its users and their contacts. It means that while the content of your messages on Signal is protected with robust end-to-end encryption, there is a large amount of meta-data visible to Signal - who you talk with and when.

  3. How is it different from Matrix, Session, Ricochet, Cwtch, etc., that also don't require user identites? Although these platforms do not require a real identity, they do rely on anonymous user identities to deliver messages – it can be, for example, an identity key or a random number. Using a persistent user identity, even anonymous, creates a risk that user's connection graph becomes known to the observers and/or service providers, and it can lead to de-anonymizing some users. If the same user profile is used to connect to two different people via any messenger other than SimpleX, these two people can confirm if they are connected to the same person - they would use the same user identifier in the messages. With SimpleX there is no meta-data in common between your conversations with different contacts - the quality that no other messaging platform has.

News and updates

Recent updates:

Dec 06, 2022. November reviews and v4.3 released - with instant voice messages, irreversible deletion of sent messages and improved server configuration.

Nov 08, 2022. Security audit by Trail of Bits, the new website and v4.2 released

Sep 28, 2022. v4.0: encrypted local chat database and many other changes

Sep 1, 2022. v3.2: incognito mode, support .onion server hostnames, setting contact names, changing color scheme, etc. Implementation audit is arranged for October!

All updates

Make a private connection

You need to share a link or scan a QR code (in person or during a video call) to make a connection and start messaging.

The channel through which you share the link does not have to be secure - it is enough that you can confirm who sent you the message and that your SimpleX connection is established.

Make a private connection Conversation Video call

Quick installation of a terminal app

curl -o- https://raw.githubusercontent.com/simplex-chat/simplex-chat/stable/install.sh | bash

Once the chat client is installed, simply run simplex-chat from your terminal.

simplex-chat

Read more about installing and using the terminal app.

SimpleX Platform design

SimpleX is a client-server network with a unique network topology that uses redundant, disposable message relay nodes to asynchronously pass messages via unidirectional (simplex) message queues, providing recipient and sender anonymity.

Unlike P2P networks, all messages are passed through one or several server nodes, that do not even need to have persistence. In fact, the current SMP server implementation uses in-memory message storage, persisting only the queue records. SimpleX provides better metadata protection than P2P designs, as no global participant identifiers are used to deliver messages, and avoids the problems of P2P networks.

Unlike federated networks, the server nodes do not have records of the users, do not communicate with each other and do not store messages after they are delivered to the recipients. There is no way to discover the full list of servers participating in SimpleX network. This design avoids the problem of metadata visibility that all federated networks have and better protects from the network-wide attacks.

Only the client devices have information about users, their contacts and groups.

See SimpleX whitepaper for more information on platform objectives and technical design.

See SimpleX Chat Protocol for the format of messages sent between chat clients over SimpleX Messaging Protocol.

Privacy: technical details and limitations

SimpleX Chat is a work in progress – we are releasing improvements as they are ready. You have to decide if the current state is good enough for your usage scenario.

What is already implemented:

  1. Instead of user profile identifiers used by all other platforms, even the most private ones, SimpleX uses pairwise per-queue identifiers (2 addresses for each unidirectional message queue, with an optional 3rd address for push notificaitons on iOS, 2 queues in each connection between the users). It makes observing the network graph on the application level more difficult, as for n users there can be up to n * (n-1) message queues.
  2. End-to-end encryption in each message queue using NaCl cryptobox. This is added to allow redundancy in the future (passing each message via several servers), to avoid having the same ciphertext in different queues (that would only be visible to the attacker if TLS is compromised). The encryption keys used for this encryption are not rotated, instead we are planning to rotate the queues. Curve25519 keys are used for key negotiation.
  3. Double ratchet end-to-end encryption in each conversation between two users (or group members). This is the same algorithm that is used in Signal and many other messaging apps; it provides OTR messaging with forward secrecy (each message is encrypted by its own ephemeral key), break-in recovery (the keys are frequently re-negotiated as part of the message exchange). Two pairs of Curve448 keys are used for the initial key agreement, initiating party passes these keys via the connection link, accepting side - in the header of the confirmation message.
  4. Additional layer of encryption using NaCL cryptobox for the messages delivered from the server to the recipient. This layer avoids having any ciphertext in common between sent and received traffic of the server inside TLS (and there are no identifiers in common as well).
  5. Several levels of content padding to frustrate message size attacks.
  6. Starting from v2 of SMP protocol (the current version is v4) all message metadata, including the time when the message was received by the server (rounded to a second) is sent to the recipients inside an encrypted envelope, so even if TLS is compromised it cannot be observed.
  7. Only TLS 1.2/1.3 are allowed for client-server connections, limited to cryptographic algorithms: CHACHA20POLY1305_SHA256, Ed25519/Ed448, Curve25519/Curve448.
  8. To protect against replay attacks SimpleX servers require tlsunique channel binding as session ID in each client command signed with per-queue ephemeral key.
  9. To protect your IP address all SimpleX Chat clients support accessing messaging servers via Tor - see v3.1 release announcement for more details.
  10. Local database encryption with passphrase - your contacts, groups and all sent and received messages are stored encrypted. If you used SimpleX Chat before v4.0 you need to enable the encryption via the app settings.

We plan to add soon:

  1. Message queue rotation. Currently the queues created between two users are used until the contact is deleted, providing a long-term pairwise identifiers of the conversation. We are planning to add queue rotation to make these identifiers termporary and rotate based on some schedule TBC (e.g., every X messages, or every X hours/days).
  2. Local files encryption. Currently the images and files you send and receive are stored in the app unencrypted, you can delete them via Settings / Database passphrase & export.
  3. Message "mixing" - adding latency to message delivery, to protect against traffic correlation by message time.

For developers

You can:

If you are considering developing with SimpleX platform please get in touch for any advice and support.

Roadmap

  • Easy to deploy SimpleX server with in-memory message storage, without any dependencies.
  • Terminal (console) client with groups and files support.
  • One-click SimpleX server deployment on Linode.
  • End-to-end encryption using double-ratchet protocol with additional encryption layer.
  • Mobile apps v1 for Android and iOS.
  • Private instant notifications for Android using background service.
  • Haskell chat bot templates.
  • v2.0 - supporting images and files in mobile apps.
  • Manual chat history deletion.
  • End-to-end encrypted WebRTC audio and video calls via the mobile apps.
  • Privacy preserving instant notifications for iOS using Apple Push Notification service.
  • Chat database export and import.
  • Chat groups in mobile apps.
  • Connecting to messaging servers via Tor.
  • Dual server addresses to access messaging servers as v3 hidden services.
  • Chat server and TypeScript client SDK to develop chat interfaces, integrations and chat bots (ready for announcement).
  • Incognito mode to share a new random name with each contact.
  • Chat database encryption.
  • Automatic chat history deletion.
  • Links to join groups and improve groups stability.
  • Voice messages (with recipient opt-out per contact).
  • Basic authentication for SMP servers (to authorize creating new queues).
  • View deleted messages, full message deletion by sender (with recipient opt-in per contact).
  • Block screenshots and view in recent apps.
  • Advanced server configuration.
  • 🏗 SMP queue redundancy and rotation (manual is supported).
  • 🏗 Contact verification via a separate out-of-band channel.
  • 🏗 Ephemeral/disappearing/OTR conversations with the existing contacts.
  • Optionally avoid re-using the same TCP session for multiple connections.
  • Access password/pin (with optional alternative access password).
  • Media server to optimize sending large files to groups.
  • Video messages.
  • Message delivery confirmation (with sender opt-in or opt-out per contact, TBC).
  • Multiple user profiles in the same chat database.
  • Feeds/broadcasts.
  • Unconfirmed: disappearing messages (with recipient opt-in per-contact).
  • Web widgets for custom interactivity in the chats.
  • Programmable chat automations / rules (automatic replies/forward/deletion/sending, reminders, etc.).
  • Supporting the same profile on multiple devices.
  • Desktop client.
  • Privacy-preserving identity server for optional DNS-based contact/group addresses to simplify connection and discovery, but not used to deliver messages:
    • keep all your contacts and groups even if you lose the domain.
    • the server doesn't have information about your contacts and groups.
  • Channels server for large groups and broadcast channels.

Join a user group

You can join a general group with more than 100 members: #SimpleX-Group.

You can also join smaller groups by countries/languages: #SimpleX-DE (German), #SimpleX-US (US/English), #SimpleX-France, #SimpleX-RU (Russian), #SimpleX-NL (Netherlands/Dutch), #SimpleX-IT (Italian).

You can join these groups either by opening these links in the app or by opening them in a desktop browser and scanning QR code.

Let us know if you'd like to add some other countries to the list.

Join via the app to share what's going on and ask any questions!

Contribute

We would love to have you join the development! You can contribute to SimpleX Chat with:

  • developing features - please connect to us via chat so we can help you get started.
  • writing a tutorial or recipes about hosting servers, chat bot automations, etc.
  • translate UI to some language - we are currently setting up the UI to simplify it, please get in touch and let us know if you would be able to support and update the translations.
  • translate website homepage - there is a lot of content we would like to share, it would help to bring the new users.

Help us with donations

Huge thank you to everybody who donated to SimpleX Chat!

We are prioritizing users privacy and security - it would be impossible without your support.

Our pledge to our users is that SimpleX protocols are and will remain open, and in public domain, - so anybody can build the future implementations of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.

Your donations help us raise more funds – any amount, even the price of the cup of coffee, would make a big difference for us.

It is possible to donate via:

  • GitHub - it is commission-free for us.
  • OpenCollective - it charges a commission, and also accepts donations in crypto-currencies.
  • Monero address: 8568eeVjaJ1RQ65ZUn9PRQ8ENtqeX9VVhcCYYhnVLxhV4JtBqw42so2VEUDQZNkFfsH5sXCuV7FN8VhRQ21DkNibTZP57Qt
  • Bitcoin address: 1bpefFkzuRoMY3ZuBbZNZxycbg7NYPYTG
  • Ethereum address: 0x83fd788f7241a2be61780ea9dc72d2151e6843e2
  • please let us know, via GitHub issue or chat, if you want to create a donation in some other cryptocurrency - we will add the address to the list.

Thank you,

Evgeny

SimpleX Chat founder

Disclaimers

SimpleX protocols and security model was reviewed, and had many breaking changes and improvements in v1.0.0.

The security audit was performed in October 2022 by Trail of Bits, and most fixes were released in v4.2.0 – see the announcement.

SimpleX Chat is still a relatively early stage platform (the mobile apps were released in March 2022), so you may discover some bugs and missing features. We would really appreciate if you let us know anything that needs to be fixed or improved.

The default servers configured in the app are provided on the best effort basis. We are currently not guaranteeing any SLAs, although historically our servers had over 99.9% uptime each.

We have never provided or have been requested access to our servers or any information from our servers by any third parties. If we are ever requested to provide such access or information, we will be following due legal process.

We do not log IP addresses of the users and we do not perform any traffic correlation on our servers. If transport level security is critical you must use Tor or some other similar network to access messaging servers. We will be improving the client applications to reduce the opportunities for traffic correlation.

Please read more in Terms & privacy policy.

Security contact

To report a security vulnerability, please send us email to [email protected]. We will coordinate the fix and disclosure. Please do NOT report security vulnerabilities via GitHub issues.

Please treat any findings of possible traffic correlation attacks allowing to correlate two different conversations to the same user, other than covered in the threat model, as security vulnerabilities, and follow this disclosure process.

License

AGPL v3

iOS app   Android app   F-Droid   iOS TestFlight   APK

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].