This commit is contained in:
MSarmadQadeer
2022-07-31 09:44:07 +00:00
parent f715b01279
commit db43839d61
33 changed files with 1027 additions and 13 deletions

View File

@@ -0,0 +1,10 @@
<h1>Simplex chat</h1>
<p><strong>Published:</strong> Oct 22, 2020</p>
<p>https://simplex.chat</p>
<p>I'd really appreciate your feedback, criticism and suggestions on the open-source idea I was slowly working on since early 2020. I recently made the demo server for the low-level message queue protocol (&quot;simplex messaging protocol&quot;) and the website to try to explain the chat idea that would use this protocol.</p>
<p>Haskell protocol implementation: https://github.com/simplex-chat/simplexmq</p>
<p>In short, the protocol defines a minimalist set of commands and server responses (just 7 commands and 5 responses sent over TCP) to operate encrypted message queues with in-memory persistence - the implementation uses STM.</p>
<p>If anything, it was definitely helping to get to know Haskell types etc. much deeper than before :)</p>
<p>Any criticism would be great - thank you in advance!</p>
<hr>
<p>Originally published at https://www.reddit.com/r/haskell/comments/jg6uh4/simplex_chat/</p>

View File

@@ -0,0 +1,18 @@
<h2>Announcing SimpleX Chat Prototype!</h2>
<p><strong>Published:</strong> May 12, 2021</p>
<p>For the last six months <a href="https://github.com/epoberezkin">me</a> and my son <a href="https://github.com/efim-poberezkin">Efim</a> have been working to bring you a working prototype of SimpleX Chat. We're excited to announce SimpleX Chat terminal client is now available <a href="https://github.com/simplex-chat/simplex-chat">here</a> on Linux, Windows and Mac (you can either build from source or download the binary for Linux, Windows or Mac from the latest release).</p>
<p>Weve been using the terminal client between us and a few other people for a couple of months now, eating our own “dog food”, and have developed up to version 0.3.1, with most of the messaging protocol features we originally planned</p>
<h3>Features</h3>
<ul>
<li>End-to-end encryption with protection from man in the middle attack. The connection invitation must be passed out-of-band (see <a href="https://github.com/simplex-chat/simplex-chat#how-to-use-simplex-chat">how to use SimpleX Chat</a> in the repo).</li>
<li>No global identity or any usernames visible to the server(s), ensuring full privacy of your contacts and conversations.</li>
<li>Message signing and verification with automatically generated RSA keys, with keys being unique per each connection.</li>
<li>Authorization of each command/message by the servers with automatically generated RSA key pairs, also unique per connection.</li>
<li>Message integrity validation (via passing the digests of the previous messages).</li>
<li>Encrypted TCP transport, independent of certificates.</li>
<li>You can deploy your own server, but you dont have to - the demo SMP server to relay your messages is available at smp1.simplex.im:5223 (pre-configured in the client).</li>
</ul>
<h3>We need your help!</h3>
<p>We're building a new kind of chat network - the only network that lets you control your chat. We'd really appreciate your feedback, criticism and support - a star on the github repo, signing up to the mailing list or any contribution to the project will help. There is so much more to do!</p>
<hr>
<p>Originally published at https://www.reddit.com/r/haskell/comments/naw6lz/simplex_chat_prototype_terminal_ui_made_in_haskell/</p>

View File

@@ -0,0 +1,22 @@
<h1>SimpleX announces SimpleX Chat v0.4</h1>
<h2>Open-source decentralized chat that uses privacy-preserving message routing protocol</h2>
<p><strong>Published:</strong> Sep 14, 2021</p>
<p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter. <a href="https://github.com/simplex-chat/simplex-chat">SimpleX Chat</a> is our first application, a chat application built on the SimpleX platform that serves as an example of the power of the platform and as a reference application.</p>
<h2>What is SimpleX?</h2>
<p>We recognised that there is currently no messaging application which respects user privacy and guarantees metadata privacy -- in other words, messages could be private, but a third party can always see who is communicating with whom by examining a central service and the connection graph. SimpleX, at it's core, is designed to be truly distributed with no central server. This allows for enormous scalability at low cost, and also makes it virtually impossible to snoop on the network graph.</p>
<p>The first application built on the platform is Simplex Chat, which for now is terminal (command line) based with mobile apps in the pipeline. The platform can easily support a private social network feed and a multitude of other services, which can be developed by the Simplex team or third party developers.</p>
<h2>What's new in v0.5?</h2>
<p>We're exicted to announce that SimpleX Chat now supports group chat and file transfer!</p>
<h3>Chat groups</h3>
<p>To create a group use the <code>/g &lt;group&gt;</code> command. You can then invite contacts to the group by entering the <code>/a &lt;group&gt; &lt;name&gt;</code> command. Your contact(s) will need to use the <code>/j accept</code> command to accept the invitation to the group. To send messages to the group, simply enter <code>#&lt;group&gt; &lt;message&gt;</code>.</p>
<p><strong>Please note:</strong> Groups are not stored on any server; they are maintained as a list of members in the app database. Sending a message to the group sends a message to each member of the group.</p>
<p><img src="/img/images/groups.gif" alt="simplex-chat"></p>
<h3>File transfer</h3>
<p>Sharing files is simple! To send a file to a contact, use the <code>/f @&lt;contact&gt; &lt;file_path&gt;</code> command. The recipient will have to accept before the file is sent.</p>
<p><img src="/img/images/files.gif" alt="simplex-chat"></p>
<h2>We're always looking for help!</h2>
<p>We'd really appreciate your comments, criticism and support - a star on the GitHub repo, downloading and testing the chat or any contribution to the project will help a lot thank you for all your support!</p>
<p><strong>Please note:</strong> SimpleX Chat is in early stage development: we are still iterating protocols, improving privacy and security, so if you have communication scenarios requiring high security, you should consider some other options for now.</p>
<p>Our goal is to create a new kind of chat platform that lets you control your chat!</p>
<hr>
<p>Originally published at https://www.reddit.com/r/selfhosted/comments/poal79/simplex_chat_an_opensource_decentralized_chat/</p>

View File

@@ -0,0 +1,17 @@
<h1>SimpleX announces SimpleX Chat v0.5</h1>
<h2>Simplex Chat is the first chat platform that is 100% private by design - SimpleX no access to your connections graph</h2>
<p><strong>Published:</strong> Dec 08, 2021</p>
<p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter. <a href="https://github.com/simplex-chat/simplex-chat">SimpleX Chat</a> is our first application, a chat application built on the SimpleX platform that serves as an example of the power of the platform and as a reference application.</p>
<h2>What is SimpleX?</h2>
<p>We recognised that there is currently no messaging application which respects user privacy and guarantees metadata privacy -- in other words, messages could be private, but a third party can always see who is communicating with whom by examining a central service and the connection graph. SimpleX, at it's core, is designed to be truly distributed with no central server. This allows for enormous scalability at low cost, and also makes it virtually impossible to snoop on the network graph.</p>
<p>The first application built on the platform is Simplex Chat, which for now is terminal (command line) based with mobile apps in the pipeline. The platform can easily support a private social network feed and a multitude of other services, which can be developed by the Simplex team or third party developers.</p>
<h2>What's new in v0.5?</h2>
<h3>Long-term chat addresses</h3>
<p>Users can now create long-term chat addresses that they can share with many people (e.g. in email signature, or online), so that any chat user can send them a connection request.</p>
<p>This is an ALPHA feature, and we have not yet added any protection against spam contact requests. However, if the address you created starts receiving spam connection requests, you can simply delete it without losing any of your accepted connections and create another address - as many times as you like!</p>
<h2>We need your help!</h2>
<p>We'd really appreciate your comments, criticism and support - a star on the GitHub repo, downloading and testing the chat or any contribution to the project will help a lot thank you for all your support!</p>
<p><strong>Please note:</strong> SimpleX Chat is in early stage development: we are still iterating protocols, improving privacy and security, so if you have communication scenarios requiring high security, you should consider some other options for now.</p>
<p>Our goal is to create a new kind of chat platform that lets you control your chat!</p>
<hr>
<p>Originally published at https://www.reddit.com/r/haskell/comments/rc0xkn/simplex_chat_the_first_chat_platform_that_is_100/</p>

View File

@@ -0,0 +1,30 @@
<h1>SimpleX announces SimpleX Chat v1</h1>
<p><strong>Published:</strong> Jan 12, 2022</p>
<h2>The most private and secure chat and application platform</h2>
<p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter. <a href="https://github.com/simplex-chat/simplex-chat">SimpleX Chat</a> is our first application, a messaging application built on the SimpleX platform.</p>
<h2>What is SimpleX?</h2>
<p>There is currently no messaging application which respects user privacy and guarantees metadata privacy - in other words, messages could be private, but a third party can always see who is communicating with whom by examining a central service and the connection graph. SimpleX, at it's core, is designed to be truly distributed with no central server. This allows for enormous scalability at low cost, and also makes it virtually impossible to snoop on the network graph.</p>
<p>The first application built on the platform is Simplex Chat, which for now is terminal (command line) based with mobile apps in the pipeline. The platform can easily support a private social network feed and a multitude of other services, which can be developed by the Simplex team or third party developers.</p>
<h2>What's new in v1?</h2>
<h3>Stable protocol implementation</h3>
<p>All releases from v1 onwards will be forwards and backwards compatible.</p>
<h3>Message encryption has been completely re-engineered to provide forward secrecy and recovery from break-in.</h3>
<p>SimpleX Chat v1 now uses:</p>
<ul>
<li><a href="https://www.signal.org/docs/specifications/doubleratchet/">double-ratchet</a> E2E encryption using AES-256-GCM cipher with <a href="https://www.signal.org/docs/specifications/x3dh/">X3DH key agreement</a> using 2 ephemeral Curve448 keys to derive secrets for ratchet initialization. These keys and secrets are separate for each contact, group membership and file transfer.</li>
<li>in addition to double ratchet, there is a separate E2E encryption in each message queue with DH key exchange using Curve25519 and <a href="https://nacl.cr.yp.to/index.html">NaCl crypto-box</a> - separate E2E encryption has been added to avoid having any cipher-text in common between message queues of a single contact (to prevent traffic correlation).</li>
<li>additional encryption of messages delivered from servers to recipients, also using Curve25519 DH exchange and NaCl crypto-box - to avoid shared cipher-text in sent and received traffic (also to prevent traffic correlation).</li>
</ul>
<h3>Improved user and server authentication and transport</h3>
<p>SimpleX now uses ephemeral Ed448 keys to sign and verify client commands to the servers. As before, these keys are different per message queue and do not represent a user's identity.</p>
<p>Instead of ad-hoc encrypted transport we now use TLS 1.2+ limited to the most performant and secure cipher with forward secrecy (ECDHE-ECDSA-CHACHA20POLY1305-SHA256), Curve448 groups and Ed448 keys.</p>
<p>Server identity is validated as part of TLS handshake - the fingerprint of offline server certificate is used as a permanent server identity which is included in server address, to protect against MITM attacks between clients and servers.</p>
<p>SimpleX also uses <a href="https://datatracker.ietf.org/doc/html/rfc5929#section-3">tls-unique channel binding</a> in each signed client command to the server to protect against replay attacks.</p>
<h3>Changes in protocol encoding</h3>
<p>We switched from inefficient text-based low level protocol encodings, that simplified early development, to space and performance efficient binary encodings, reducing protocol overhead from circa 15% to 3.7% of transmitted application message size.</p>
<h2>Learn more about Simplex</h2>
<p>Further details on platform objectives and technical design are available <a href="https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/">here</a>.</p>
<p>SimpleX Chat client can be used in the terminal on all major desktop platforms (Windows/Mac/Linux) and also on Android devices with <a href="https://github.com/termux">Termux</a>.</p>
<p>SimpleX also allows people to host their own servers and own their own chat data. SimpleX servers are exceptionally lightweight and require a single process with the initial memory footprint of under 20 Mb, which grows as the server adds in-memory queues (even with 10,000 queues it uses less than 50Mb, not accounting for messages).</p>
<h2>We look forward to you using it!</h2>
<p>We look forward to your feedback and suggestions - via GitHub issues or via SimpleX Chat - you can connect to the team with <code>/simplex</code> command once you run the chat.</p>

View File

@@ -0,0 +1,28 @@
<h1>SimpleX announces SimpleX Chat public beta for iOS</h1>
<p><strong>Published:</strong> Feb 14, 2022</p>
<h2>Private and secure chat and application platform - <a href="https://testflight.apple.com/join/DWuT2LQu">public beta is now available</a> for iPhones with iOS 15.</h2>
<p>Our new iPhone app is very basic - right now it only supports text messages and emojis.</p>
<p>Even though the app is new, it uses the same core code as our terminal app, that was used and stabilized over a long time, and it provides the same level of privacy and security that has been available since the release of v1 a month ago:</p>
<ul>
<li><a href="https://www.signal.org/docs/specifications/doubleratchet/">double-ratchet</a> E2E encryption.</li>
<li>separate keys for each contact.</li>
<li>additional layer of E2E encryption in each message queue (to prevent traffic correlation when multiple queues are used in a conversation - something we plan later this year).</li>
<li>additional encryption of messages delivered from servers to recipients (also to prevent traffic correlation).</li>
</ul>
<p>You can read more details in our recent <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/blog/20220112-simplex-chat-v1-released/">v1 announcement</a>.</p>
<h2>Join our public beta!</h2>
<p>Install the app <a href="https://testflight.apple.com/join/DWuT2LQu">via TestFlight</a>, connect to us (via <strong>Connect to SimpleX team</strong> link in the app) and to a couple of your friends you usually send messages to - and please let us know what you think!</p>
<p>We would really appreciate any feedback to improve the app and to decide which additional features should be included in our public release in March.</p>
<p>Should it be:</p>
<ul>
<li>images,</li>
<li>link previews,</li>
<li>or maybe something else we couldn't think of.</li>
</ul>
<p>Please vote on the features you think are the most needed in our <a href="https://app.loopedin.io/simplex">app roadmap</a>.</p>
<h2>What is SimpleX?</h2>
<p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter.</p>
<p>We aim to provide the best possible protection of messages and metadata. Today there is no messaging application that works without global user identities, so we believe we provide better metadata privacy than alternatives. SimpleX is designed to be truly distributed with no central server, and without any global user identities. This allows for high scalability at low cost, and also makes it virtually impossible to snoop on the network graph.</p>
<p>The first application built on the platform is Simplex Chat, which is available for terminal (command line in Windows/Mac/Linux) and as iOS public beta - with Android app coming in a few weeks. The platform can easily support a private social network feed and a multitude of other services, which can be developed by the Simplex team or third party developers.</p>
<p>SimpleX also allows people to host their own servers to have control of their chat data. SimpleX servers are exceptionally lightweight and require a single process with the initial memory footprint of under 20 Mb, which grows as the server adds in-memory queues (even with 10,000 queues it uses less than 50Mb, not accounting for messages). It should be considered though that while self-hosting the servers provides more control, it may reduce meta-data privacy, as it is easier to correlate the traffic of servers with small number of messages coming through.</p>
<p>Further details on platform objectives and technical design are available <a href="https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/">in SimpleX platform overview</a>.</p>

View File

@@ -0,0 +1,46 @@
<h1>SimpleX announces SimpleX Chat mobile apps for iOS and Android</h1>
<p><strong>Published:</strong> March 8, 2022</p>
<h2>SimpleX Chat is the first chat platform that is 100% private by design - it has no access to your connections graph</h2>
<p>We have now released iPhone and Android apps to <a href="https://apps.apple.com/us/app/simplex-chat/id1605771084">Apple AppStore</a> and <a href="https://play.google.com/store/apps/details?id=chat.simplex.app">Google Play Store</a>, <a href="https://github.com/simplex-chat/website/raw/master/simplex.apk">APK for Android</a> is also available for direct download.</p>
<p><strong>Please note</strong>: the current version is only supported on iPhone 8+ and on Android 10+ - we are planning to add support for iPad and older devices very soon, and we will announce it on our <a href="https://www.reddit.com/r/SimpleXChat/">Reddit</a> and <a href="https://twitter.com/SimpleXChat">Twitter</a> channels - please subscribe to follow our updates there.</p>
<h2>What is SimpleX</h2>
<p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter.</p>
<p>We aim to provide the best possible protection of messages and metadata. Today there is no messaging application that works without global user identities, so we believe we provide better metadata privacy than alternatives. SimpleX is designed to be truly distributed with no central server, and without any global user identities. This allows for high scalability at low cost, and also makes it virtually impossible to snoop on the network graph.</p>
<p>The first application built on the platform is Simplex Chat. The platform can easily support a private social network feed and a multitude of other services, which can be developed by the Simplex team or third party developers.</p>
<p>Further details on platform objectives and technical design are available <a href="https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/">in SimpleX platform overview</a>.</p>
<h2>Why we are building it</h2>
<p>Evgeny (SimpleX Chat founder): I have been working on this platform for a long time to provide a place where all people can communicate freely with each other, without fear of persecution because of what they said and who they are connected with. Not sharing information about your connections is very important, particularly for people living in oppressive regimes. Because of the terrible conflict between Russia and Ukraine, people of both countries I have friends and family there could be at risk when sharing their opinions or just from being connected to people who were prosecuted. Every messenger app that knows who you are can end up sharing all of your connections with undesirable third parties, either as a result of a court order or as a result of attack - so even Signal, which has strong encryption, cannot protect your connection graph. I hope our messenger can help people living in the oppressive regimes to express their opinions without fear and risk of prosecution.</p>
<h2>Huge thanks to our testers!</h2>
<p>Thanks a lot to everybody who helped testing and improving the apps!</p>
<p>If you have a <a href="https://testflight.apple.com/join/DWuT2LQu">TestFlight version</a> installed you can continue using it.</p>
<p>We plan to keep it as stable as we can, and it will give you access to all new features 1-2 weeks earlier - it's limited to 10,000 users, so you can grab it while it's available. You can still communicate with people who use a public version we are committed to maintaining backwards compatibility.</p>
<p>You can always migrate from a public App Store version to a TestFlight version. The opposite migration - from TestFlight to public version - is only possible when we have the same app versions released, as there are usually some database migrations that cannot be reversed. To migrate to public version you have to disable automatic updates on TestFlight, wait until public version catches up and then install it from App Store. In any case, it is safe installing the public version, but it might crash if you have a newer version from TestFlight - in this case you just need to re-install the app from TestFlight and install App Store version a bit later - you would not lose any of your data.</p>
<h2>It's not all new - our core code has been used for a long time by a few thousand people in our terminal app.</h2>
<p>The apps use the same core code as our terminal app, that was used and stabilized over a long time, and it provides the same level of privacy and security that has been available since the release of v1 earlier this year:</p>
<ul>
<li><a href="https://www.signal.org/docs/specifications/doubleratchet/">double-ratchet</a> E2E encryption.</li>
<li>separate keys for each contact.</li>
<li>additional layer of E2E encryption in each message queue (to prevent traffic correlation when multiple queues are used in a conversation - something we plan later this year).</li>
<li>additional encryption of messages delivered from servers to recipients (also to prevent traffic correlation).</li>
</ul>
<p>You can read more technical details in our recent <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/blog/20220112-simplex-chat-v1-released/">v1 announcement</a>.</p>
<p>A big thank you to <a href="https://github.com/angerman">@angerman</a> for making it possible to compile our Haskell code to mobile platforms and getting it approved on app stores - it has been a non-trivial project, and it is still ongoing.</p>
<h2>Install the apps and make a private connection!</h2>
<p>Once you install the app, you can connect to anybody:</p>
<ol>
<li>Create your local chat profile - it is not shared with SimpleX servers, it is local to your devices, and it will be shared with your contacts when you connect.</li>
<li>To make a private connection, you need to create a one-time connection link / QR code via &quot;Add contact&quot; button in the app. You can either show the QR code to your contact in person or via a video call - this is the most secure way to create a connection - or you can share the link via any other channel - only one user can connect via this link.</li>
<li>Once another user scans the QR code or opens the app via the link (they also should create their profile first) the connection will be created and you can send e2e encrypted messages privately, without anybody knowing you are connected.</li>
</ol>
<h2>New features and improvements that are coming soon</h2>
<ul>
<li>push notification server. Currently the apps load messages in the background periodically, that can be quite infrequent on iOS if you don't open the app regularly. With push notifications you would know about the new messages instantly.</li>
<li>e2e encrypted audio and video calls via WebRTC.</li>
<li>export and import of the chat database.</li>
<li>&quot;reply to message&quot; - feature allowing you to quote the message you are replying to.</li>
<li>localization - we will let you know once you can contribute the translations to your languages.</li>
<li>configuring your servers in the apps - this will be released this week, both for iOS and Android. By default the apps are using SimpleX Chat servers, but you will be able to configure your own and still be connected to other users who use our app with our servers.</li>
<li>user profile images.</li>
<li>sending images and files - image preview will be sent via the servers, so it can be asynchronous, and large files/full resolution images via WebRTC, so both devices will have to be online.</li>
</ul>
<p>Please let us know what else you think is important and if you find any bugs.</p>

View File

@@ -0,0 +1,87 @@
<h1>Instant notifications for SimpleX Chat mobile apps</h1>
<p><strong>Published:</strong> April 04, 2022</p>
<h2>SimpleX Chat is the first chat platform that is 100% private by design - it has no access to your connections</h2>
<p>Since we released SimpleX Chat mobile apps couple of weeks ago we've had a lot of excitement from our users - nearly 2000 people downloaded the app after <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/blog/20220308-simplex-chat-mobile-apps/">the announcement</a>!</p>
<p>Huge thanks to everybody who downloaded and connected to us via the chat - there were many great questions and suggestions, and on some days I spent most of the time chatting to our users :)</p>
<p>Since we released the app, we've added and released:</p>
<ul>
<li>support for iPhone 7.</li>
<li>configurable SimpleX servers.</li>
<li>message replies, editing and deletion.</li>
<li>profile images.</li>
<li>and, most importantly, private instant message notifications on Android devices - more on that below.</li>
</ul>
<h2>Install the apps and make a private connection!</h2>
<p>Once you install the app, you can connect to anybody:</p>
<ol>
<li>Create your local chat profile - it is not shared with SimpleX servers. It is local to your devices, and it will be shared with your contacts only when you connect.</li>
<li>To make a private connection, you need to create a one-time connection link or a QR code via the &quot;Add contact&quot; button in the app. You can show the QR code to your contact in person or via a video call - this is the most secure way to create a connection - or you can share the link via any other channel. Only one user can connect via this link.</li>
<li>Once another user scans the QR code or opens the app via the link the connection will be created and you can send end-to-end encrypted messages privately, without anybody knowing you are connected.</li>
</ol>
<p>See <a href="https://youtu.be/rZeVhsv_JAY">demo video</a> that shows how two users connect and send the first messages.</p>
<h2>Why we are doing it</h2>
<p>We are building SimpleX Chat because we believe that privacy is a fundamental human right, and that protecting our personal network of contacts is even more important than the content of the messages - sharing this network can lead to various adverse consequences, from manipulating us into buying goods we don't need, manipulating election processes, and in some cases, prosecuting innocent people. For example, <a href="https://en.wikipedia.org/wiki/Mohamedou_Ould_Slahi">Mohamedou Ould Salahi</a> was detained in Guantanamo prison for 15 years after a single &quot;wrong&quot; phone call. His story is told in his memoir and in The Mauritanian movie.</p>
<h2>Problem - users expect to be instantly notified when messages arrive!</h2>
<p>Our first users realized that what we take for granted in messaging apps - instant message notifications - is missing in our first release of SimpleX Chat apps. Quite a few people thought that it was a bug, rather than a missing feature. Sorry to disappoint!</p>
<h2>Why can't we just do what messenger X does?</h2>
<p>SimpleX Chat is the first and the only messenger we know of that operates without user identities of any kind. There are no phone numbers, emails, usernames, public keys, or any other addresses or identifiers to uniquely identify the users to the network or servers. That is why we say it is 100% private by design, and fundamentally different than other chat platforms.</p>
<p>Instead, SimpleX Chat assigns these identifiers to unidirectional message queues. What looks to SimpleX Chat users like contacts and groups [1], to SimpleX servers looks like an unorganized and unrelated collection of unidirectional message queues. Our servers do not know which queues belong to which users, contacts or groups. Even a single conversation can happen via two different servers (one for sent and another for received messages). This makes our personal network of contacts invisible to the servers.</p>
<p>But it also creates a problem for instant notifications - all push notification services require having a device token.</p>
<p>So, how can we operate without identities and still have instant notifications?</p>
<p>[1] yes, we have groups in our terminal app, and the UI to manage them is coming to mobile apps soon. Some users have already firgured out how to <a href="https://medium.com/@vsevolod.mineev/how-to-collaborate-across-multiple-devices-whilst-protecting-your-metadata-371af87d0ba0">create groups via chat console</a>.</p>
<h2>We've cracked it for Android!</h2>
<p>After some research into how push notifications work on Android, and open-source alternatives to Google push notifications, we discovered how to avoid sharing device tokens with any servers.</p>
<p>We have implemented message reception as a background service (in Android terminology, a &quot;foreground service&quot; showing a notification icon when the service is running) following the same design as <a href="https://github.com/binwiederhier/ntfy-android">ntfy.sh</a> created by <a href="https://github.com/binwiederhier">Philipp Heckel</a>, who, in turn, credits the design to <a href="https://robertohuertas.com/2019/06/29/android_foreground_services/">the blog post by Roberto Huertas</a>. Big thanks to them!</p>
<p>How does it work? When the app is first started on an Android device, it starts the background service that keeps the TCP connections to the messaging servers open with almost no traffic (only doing periodic checks that connections still exist). It consumes only a few percents of battery per day, depending on how stable your internet connection is, and delivers message notifications as soon as messages arrive.</p>
<p>This service continues running when the app is switched off, and it is restarted when the device is restarted even if you don't open the app - so the message notifications arrive instantly every time. To maximize battery life, it can be turned off by switching off &quot;Private notifications&quot;. You will still receive notifications while the app is running or in the background.</p>
<p>So, for Android we can now deliver instant message notifications without compromising users' privacy in any way. The app version 1.5 that includes private instant notifications is now available on <a href="https://play.google.com/store/apps/details?id=chat.simplex.app">Play Store</a>, in our <a href="https://app.simplex.chat/">F-Droid repo</a> and via direct <a href="https://github.com/simplex-chat/website/raw/master/simplex.apk">APK</a> downloads!</p>
<p>Please let us what needs to be improved - it's only the first version of instant notifications for Android!</p>
<h2>Our iOS approach has one trade-off</h2>
<p>iOS is much more protective of what apps are allowed to run on the devices, and the solution that worked on Android is not viable on iOS.</p>
<p>We already have background refresh in the iOS app that periodically checks for new messages, and if you use the app every day it delivers notifications within 10 or 20 minutes. It is not instant, but it may be usable for some. If you use the app infrequently, however, this delay can become several hours, or your phone may stop checking for the new messages completely. This is not ideal!</p>
<p>The only solution known to us is using Apple's push notifications service (APN) to deliver push notifications.</p>
<p>We planned for it, so we added to <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/blog/20220112-simplex-chat-v1-released/">v1 of SMP</a> (the protocol used by our servers) an extension allowing the client to subscribe to notifications from message queues, via separate queue addresses, and using separate cryptographic keys for each queue. This has to be enabled by the client for each queue separately. We haven't used this extension so far, and now we are building a SimpleX notification service based on it.</p>
<p>If the user enables push notifications, then for each contact the app would enable a notification subscription and pass credentials to the notification server together with the device token required to deliver push notifications to user's device.</p>
<p>The notification server will subscribe to these notifications from SMP servers. The notifications do not include any message content, only the signal that a message has arrived to the server. Notification server is only allowed to send 2-3 hidden notifications per hour to the device. The notification is end-to-end encrypted and contains information about which server has a message, so that the client can connect to the server, retrieve and decrypt the message, and show the notification to the users including sender name and the message content. None of this information is shared with any server.</p>
<p>If the user receives more than 2-3 messages per hour, the notification server can send additional visible notifications that would simply say &quot;you have a new message&quot;, and the user will have to open the app to receive and see these messages. We are also investigating whether we can use &quot;mutable-content&quot; notifications that allow doing some processing when the notification arrives before showing it to the users.</p>
<p>It is a substantial amount of development, we are aiming to release it later this month.</p>
<p>This design is a compromise between privacy and convenience. The notification server will have to have a device token to deliver notifications. Several things we did (or plan to do) to improve this compromise:</p>
<ol>
<li>The notification server will only store device tokens and queue addresses in memory, making it more complex for a potential attacker to access. If server has to be restarted, they would lose all configured notification subscriptions and the clients would have to create them again. We will program the clients to periodically check for the existence of notification subscriptions on the notification server.</li>
<li>The notificaiton server will not know the addresses of the messaging queues used to receive or send messages. A different address is used to subscribe to notifications. So while the notification server would have the knowledge of how many queues your device has (and on which servers), it still won't know who is sending you the messages.</li>
<li>We are also planning to split the logic of notification subscriptions and delivering notifications to the devices to two different servers. The server that subscribes to the notifications could be self-hosted, allowing you full control of how you deploy it. Only this server would know which messaging servers you use or how many messaging queues you have. The server that delivers notifications to the devices will be managed by SimpleX Chat as we have to authorize it with Apple's push notification service. This split will not be available in the first release. We plan to add it a bit later.</li>
</ol>
<p>So, with the notification servers added, our network design will look like this:</p>
<pre><code> User's iOS device Internet Servers
--------------------- | ------------------------ | -------------------------
| |
| | (can be self-hosted now)
+--------------+ | | +----------------+
| SimpleX Chat | -------------- TLS --------------- | SimpleX |
| client |------&gt; SimpleX Messaging Protocol (SMP) ---&gt; | Messaging |
+--------------+ ---------------------------------- | Server |
^ | | | +----------------+
| | | | | |
| | | | | S | T
| | | | | M | L
| | | | | P | S
| | | | | |
| | | | +----------------+ +----------------+
| | -------------- TLS --------------- | SimpleX | | SimpleX |
| |-----------&gt; Notifications management ----&gt; | Notifications | ----&gt; | Push |
| ---------------------------------- | Subscriber | | Server |
| | | +----------------+ +----------------+
| | | (can be self-hosted |
| | | in the future) |
| | | V
| -------------- TLS --------------- +-----------------+
|----------------- Notification delivery &lt;----------------------------- | Apple PN server |
---------------------------------- +-----------------+
| |
</code></pre>
<p>Please let us know what you think about this design and about this privacy / usability trade-off:</p>
<ul>
<li>For you, is this an acceptable compromise, if you can choose to disable instant notifications?</li>
<li>Do you have any ideas about how this design could be improved upon?</li>
</ul>
<p>Thank you!</p>

View File

@@ -0,0 +1,22 @@
<h1>SimpleX Chat v2.0 - sending images and files in mobile apps</h1>
<p><strong>Published:</strong> May 11, 2022</p>
<h2>New in version 2.0 - sending images and files privately</h2>
<p>To send image and files SimpleX Chat uses privacy-preserving system components, both in iOS and Android apps. We do not ask for permission to access multiple or selected files, as, for example, Signal and Telegram do - it compromises either privacy or convenience.</p>
<p>How does it work? The gallery and files are accessed from a system provided dialogue that runs in a separate process, and provides a temporary URI to access only one file selected by the user, only until the app is restarted.</p>
<p>To make file and images work for mobile apps we made a breaking change in SimpleX Chat core. The current version can exchange files with the previous version 1.6 of the terminal app, but not with the version before that.</p>
<p>In the mobile app, to send and receive files both devices must have version 2.0 installed - so please check it with your contacts. Receiving images works in the previous version, so even if your contacts did not yet upgrade the app, they should be able to receive the images.</p>
<h2>The first messaging platform without user identifiers.</h2>
<p>To protect identities of users and their connections, SimpleX Chat has no user identifiers visible to the network unlike any other messaging platform.</p>
<p>Many people asked: <em>if SimpleX has no user identifiers, how can it deliver messages?</em></p>
<p>To deliver mesages, instead of user IDs used by all other platforms, SimpleX has identifiers for message queues, separate for each of your contacts. In the current version of the protocol each queue is used until the contact is deleted. Later this year we plan to add queue rotation to the client protocol, so that even conversations don't have long term identifiers visible to the network. This design prevents leaking any users metadata on the application level.</p>
<p>You define which server(s) to use <strong>to receive</strong> the messages, your contacts the servers you use <strong>to send</strong> the messages to them. It means that every conversation is likely to use two different servers - one for each message direction.</p>
<p>Only client devices store user profiles, contacts, groups, and messages sent with <strong>2-layer end-to-end encryption</strong>.</p>
<p>Read more in <a href="https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/">SimpleX whitepaper</a>.</p>
<h2>How to connect with your contacts in SimpleX Chat</h2>
<p>Once you install the app, you can connect to anybody:</p>
<ol>
<li>Create your local chat profile - it is not shared with SimpleX servers. It is local to your devices, and it will be shared with your contacts only when you connect.</li>
<li>To make a private connection, you need to create a one-time connection link or a QR code via the app. You can show the QR code to your contact in person or via a video call - this is the most secure way to create a connection - or you can share the link via any other channel. Only one user can connect via this link.</li>
<li>Once another user scans the QR code or opens the app via the link the connection will be created and you can send end-to-end encrypted messages privately, without anybody knowing you are connected.</li>
</ol>
<img src="https://github.com/simplex-chat/.github/blob/master/profile/images/conversation.png" alt="Make a private connection" width="594" height="360">

View File

@@ -0,0 +1,9 @@
<h1>SimpleX Chat v2.1 - better conversation privacy</h1>
<p><strong>Published:</strong> May 24, 2022</p>
<h2>New in version 2.1 - clearing conversations without deleting contacts</h2>
<p>In this version you can irreversibly delete individual messages after they were deleted by a sender, and also completely clear the conversation.</p>
<p>The only way to do it before this version was by deleting the contact, now you can keep the connection when you clear the conversation.</p>
<p><img src="/img/images/20220524-clear-chat1.png" width="240"> <img src="/img/images/20220524-clear-chat2.png" width="240"></p>
<p>See <a href="/blog/20220112-simplex-chat-v1-released/">v1 announcement</a> for information on how SimpleX protects the security of the messages.</p>
<p>See <a href="/blog/20220511-simplex-chat-v2-images-files/">v2 announcement</a> for more information about SimpleX platform and how it works.</p>
<p>Read about SimpleX design in <a href="https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/">whitepaper</a>.</p>

View File

@@ -0,0 +1,27 @@
<h1>SimpleX Chat v2.2 - the first messaging platform without user identities - 100% private by design!</h1>
<p><strong>Published:</strong> June 4, 2022</p>
<p>See <a href="/blog/20220511-simplex-chat-v2-images-files/">v2 announcement</a> for more information about SimpleX platform and how it protects your privacy by avoiding user identities of any kind in its design - SimpleX, unlike any other messaging platfom, has no identity keys or any numbers that identify its users.</p>
<h2>New Privacy and Security settings in version 2.2</h2>
<img src="/img/images/20220604-privacy-settings.png" width="480">
<h3>Protect your chats</h3>
<p>To protect your chats you can enable SimpleX Lock. Every time you open the chat after it was in the background for 30 second, you will need to pass biometric or pin code authentication to use the app (provided it is enabled for your device).</p>
<h3>Save data and avoid sharing you are online</h3>
<p>In case you want to save your mobile data or to avoid showing to your contacts that you are online, you can disable automatic image downloads. For many users it is more convenient to have images downloaded automatically, so it is enabled by default.</p>
<p>Low resolution image previews would still be shown, the senders have no way to see if you received them or not.</p>
<h3>Avoid visiting websites of the links you send</h3>
<p>When you receive the links that include link previews, it is fully private - these previews are generated by the sender, and they do not expose your IP address in any way.</p>
<p>When you send the links, the app automatically downloads the link description and the picture from the website of the link. While it is convenient, it exposes your IP address to the website. To avoid it you can disable sending link previews.</p>
<h3>Identify any lost messages in the chat</h3>
<p>The app tracks the integrity of the messages you receive by cheching their sequential numbers and by validating that the hash of the previous message matches the hash included in the message each conversation, effectively, is two blockchains that only you and your contact have access to.</p>
<p>In case some of the messages are lost, you would see it in the chat. It can happen because of one the following reasons:</p>
<ul>
<li>the messages have expired on the server after 30 days not being delivered.</li>
<li>the messages were removed when the server was restarted. We will add server redundancy later this year to avoid message loss in this case, for now if you see an indication that some messages were lost in the chat, you can check with your contact what it was.</li>
<li>some other app error. Please notify us via chat - we will investigate possible root causes.</li>
<li>the connection is compromised. This is very unlikely, but not an impossible scenario.</li>
</ul>
<h3>There is more</h3>
<p>You can discover additional features we are currently testing in Experimental Features - they will be announced later!</p>
<h2>More information</h2>
<p>See <a href="/blog/20220112-simplex-chat-v1-released/">v1 announcement</a> for information on how SimpleX protects the security of the messages.</p>
<p>Read about SimpleX design in <a href="https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/">whitepaper</a>.</p>

View File

@@ -0,0 +1,60 @@
<h1>SimpleX announces SimpleX Chat v3</h1>
<p><strong>Published:</strong> Jul 11, 2022</p>
<h2>New in version 3</h2>
<ul>
<li><a href="#instant-notifications-for-ios">instant notifications for iOS</a></li>
<li><a href="#database-export-and-import">database export and import</a></li>
<li><a href="#protocol-privacy-and-performance-improvements">protocol privacy and performance improvements</a></li>
</ul>
<h3>Instant notifications for iOS</h3>
<p>I wrote previously about <a href="/blog/20220404-simplex-chat-instant-notifications/#problem---users-expect-to-be-instantly-notified-when-messages-arrive">our design for iOS notifications</a> - this is now released. The app will offer to migrate the database when updated, and then you need to choose notifications mode instant or periodic push notifications, or previously available periodic background refresh that does not use push notifications.</p>
<p>To deliver the notifications to iOS devices we use our notification server, as there is a single private key that Apple issues for the app. This server has minimal amount of information about your chat activity:</p>
<ul>
<li>it does not have the addresses of messaging queues used to send and receive messages - there is an additional address used for notification server to receive notifications from the messaging servers.</li>
<li>notifications themselves do not include message content or contacts, even in encrypted form - they only contain end-to-end encrypted metadata about the server and the queue that has available messages - so Apple servers cannot access the information about how many contacts you have or how frequently each of them messages you - they can only see the total number of notifications your device receives.</li>
<li>message senders do not connect to the notification server, so it cannot in any way correlate sent and received traffic across multiple devices.</li>
</ul>
<img src="/img/images/20220711-notifications.png" width="480">
<p><strong>Please note</strong>: for periodic notifications to work the app has to be in the background - if the app is completely stopped (removed from the recent apps), it will not check the new messages and you will not receive notifications. Instant notifications work even when the app is completely stopped.</p>
<h3>End-to-end encrypted audio/video calls</h3>
<p>You can now call your contacts via WebRTC, connecting via SimpleX Chat relay servers or peer-to-peer, and in the near future you will be able to configure your own STUN/TURN servers used to establish the connection. The calls are end-to-end encrypted - the key is negotiated via the connection you already have with your contact in the chat, that is also used as a signalling layer for WebRTC - in most cases only three messages in total have to be sent by your and your contact's clients for the call to start, including the initial call invitation.</p>
<img src="/img/images/20220711-call-in-progress.png" width="480">
<p>The calls are still quite limited, especially on iOS, - for example, you cannot continue the call while the app is in the background.</p>
<h3>Database export and import</h3>
<p>Quite a few users asked - <em>how can I move my chat profile to a new device</em>? SimpleX Chat v3 has a solution for that - you can now export chat database from one device and import it into another - even to another platform, e.g. you can move chat database from Android phone to iOS or to the terminal (console) client.</p>
<img src="/img/images/20220711-database-chat-stopped.png" width="480">
<p>Some important limitations:</p>
<ul>
<li>you cannot run the same chat profile from two devices, neither at the same time nor in turns. You should only use the latest database version - every time you want to move it to another device you need to export a new chat archive from the device that was the latest to use it, and import it to the device where you want to use it next.</li>
<li>we plan to add internal database encryption soon, but currently it is stored on the device without encryption, and the exported archive is also not encrypted. You should store it securely, and encrypt it if you store it in the cloud or send via email.</li>
</ul>
<p>This feature can be useful in some other scenarios:</p>
<ul>
<li>managing multiple chat profiles - it's not very convenient, and a better support of multiple profiles is coming soon.</li>
<li>share access to the same profile with other people, as long as it is not used at the same time. For that use case it may be better to run SimpleX Chat terminal client in the cloud, as we do with our public account that you can connect to via the app.</li>
<li>preserve chat profile when you need to temporarily delete the app from your device.</li>
</ul>
<h3>Protocol privacy and performance improvements</h3>
<p>Adding push notifications for iOS required SimpleX Messaging Protocol changes. We managed not just to keep the same level of meta-data privacy from passive observers, but to improve it - now all message meta-data that is passed from the server to the recipient is included into the same encrypted envelope as the message itself - as before, there is no identifiers or ciphertext in common inside TLS traffic between received and sent traffic of the server, and now there is no message timestamp inside TLS as well.</p>
<p>We also improved the protocol flow for establishing bidirectional connection between two users - it is substantially faster now, consuming much less network traffic and battery. It improves the time it takes to connect to your contacts and to start delivering images and files.</p>
<p>All these changes did not affect backward compatibility - if your contact has the previous version of the client, or you are connecting to a previous version of the server, the previous version of the protocol will be used - SimpleX has independent version negotiation in 4 protocol layers <a href="/blog/20220112-simplex-chat-v1-released/#stable-protocol-implementation">since v1</a>, allowing us to evolve the protocols without any disruption to the users.</p>
<h2>SimpleX platform</h2>
<p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter. <a href="https://github.com/simplex-chat/simplex-chat">SimpleX Chat</a> is our first application, a messaging application built on the SimpleX platform.</p>
<h3>The first (and we believe the only) messaging platform without user identifiers of any kind - 100% private by design!</h3>
<p>To protect identities of users and their connections, SimpleX Chat has no user identifiers visible to the servers and the network unlike any other messaging platform. Not only SimpleX doesn't use phone numbers or emails, as Signal and many other platforms, it also does not have any persistent identifiers to identify users - unlike many other messengers considered private - Session, Cwtch, Ricochet, Briar, Jami, etc., - all these platforms have global user identifiers, uniquely identifying their users and creating the risks of de-anonymising the users.</p>
<h3>Why having users' identifiers is bad for the users?</h3>
<p>When each user has a unique identifier on the platform, even if this is just a random number, e.g. as a Session ID, it creates risks that whoever gains access to the platform data can observe how the users are connected and how many messages are transmitted between them, and then correlate this information with the existing public social networks, determining the real identities of some users. Even with the most private messengers built on top of Tor network, having a persistent identity means that if you talk to two different users via the same profile they can prove that they communicate with the same person, as they would use the same address to send messages.</p>
<p>SimpleX platform avoids these risks by not having any user identity in its design - so even if you talk to two different people from the same chat profile, they would not be able to prove they are talking to the same person - only that user profiles look the same. And we are planning to add a feature allowing to have a different display name for each contact you connect to - quite a few users asked for it.</p>
<h3>How does it work</h3>
<p>Many people asked: <em>if SimpleX has no user identifiers, how can it deliver messages?</em></p>
<p>I wrote about it in <a href="/blog/20220511-simplex-chat-v2-images-files/">v2 release announcement</a> and you can get more information about SimpleX platform objectives and technical design in <a href="https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/">the whitepaper</a>.</p>
<h2>We ask you to help us pay for 3rd party security audit</h2>
<p>I will get straight to the point: I ask you to support SimpleX Chat with donations.</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support we were lucky to have so far.</p>
<p>We are planning a 3rd party security audit for the app, and it would hugely help us if some part of this $20000+ expense could be covered with donations.</p>
<p>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 for 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.</p>
<p>If you are already using SimpleX Chat, or plan to use it in the future when it has more features, please consider making a donation - it will help us to raise more funds. Donating any amount, even the price of the cup of coffee, would make a huge difference for us.</p>
<p>It is possible to <a href="https://github.com/sponsors/simplex-chat">donate via GitHub</a>, which is commission-free for us, or <a href="https://opencollective.com/simplex-chat">via OpenCollective</a>, that also accepts donations in crypto-currencies, but charges a commission.</p>
<p>Thank you,</p>
<p>Evgeny</p>
<p>SimpleX Chat founder</p>

View File

@@ -0,0 +1,77 @@
<h1>SimpleX Chat v3.1-beta is released</h1>
<p><strong>Published:</strong> Jul 23, 2022</p>
<h2>What's new</h2>
<ul>
<li>terminal app: <a href="#terminall-app-access-to-messaging-servers-via-socks5-proxy--tor">access to messaging servers via SOCKS5 proxy</a> (e.g., Tor).</li>
<li>mobile apps: <a href="#mobile-apps-join-and-leave-chat-groups">join and leave chat groups</a>.</li>
<li><a href="#optimized-battery-and-traffic-usage---up-to-90x-reduction">optimized battery and traffic usage - up to 90x reduction!</a>.</li>
<li><a href="#docker-configuration-for-self-hosted-smp-servers">two docker configurations for self-hosted SMP servers</a>.</li>
</ul>
<h3>Terminall app: access to messaging servers via SOCKS5 proxy / Tor</h3>
<img src="/img/images/20220723-tor.jpg" width="480">
<p>While SMP protocol is focussed on protecting application-level meta-data by using pairwise connection identifiers instead of user identifiers (that are used by all other messaging platforms), there are scenarios when it is important for the users to protect their IP addresses from the servers - quite a few users have been somewhat disappointed that we didn't add it earlier.</p>
<p>This release of terminal app supports accessing the servers via Tor, but the servers themselves are still available on their usual addresses. We are planning to add .onion addresses (v3 hidden service) to all messaging servers we provide, and the users who self-host the servers will also be able to have dual servers addresses - so that one party in the conversation can access the servers via .onion address without necessarily requiring that the other party uses Tor as well.</p>
<p>To access SimpleX servers via Tor you need to install Tor proxy and run simplex-chat with <code>-x</code> option. See <a href="../docs/CLI/#access-messaging-servers-via-tor-beta">terminal app docs</a> for more information.</p>
<p>As this is a beta release, to install it you need to use this command:</p>
<pre><code class="language-sh">curl -o- https://raw.githubusercontent.com/simplex-chat/simplex-chat/stable/install.sh | sh -s -- v3.1.0-beta.0
</code></pre>
<h3>Mobile apps: join and leave chat groups</h3>
<p><img src="/img/images/20220723-group-invite.png" width="330"> <img src="/img/images/20220723-group-accept.png" width="330"> <img src="/img/images/20220723-group-leave.png" width="330"></p>
<p>Groups have been supported by SimpleX Chat core for a very long time, but there was no user interface in the mobile apps to use them - users had to use chat console to create groups, add members, and accept invitations.</p>
<p>This release allows accepting the invitations to join groups via mobile apps UI, making it much easier to create groups - only one user (a group owner) needs to use chat console, while all other groups members just need to tap a button in the UI to join or leave the group. Full group UI is coming in v3.1 in 1-2 weeks, but you can already start using groups today by installing beta-versions of mobile apps via <a href="https://testflight.apple.com/join/DWuT2LQu">TestFlight</a>, <a href="https://play.google.com/apps/testing/chat.simplex.app">Google PlayStore Beta</a> and <a href="https://github.com/simplex-chat/simplex-chat/releases/download/v3.1.0-beta.0/simplex.apk">APK download</a>.</p>
<p>To manage groups via terminal app or via chat console in the mobile apps you have to use these commands:</p>
<ul>
<li>to create group: <code>/g &lt;group_name&gt; [&lt;description&gt;]</code></li>
<li>to add member (admin by default): <code>/a &lt;group_name&gt; &lt;contact_name&gt; [owner/admin/member]</code></li>
<li>to remove member from the group: <code>/rm &lt;group_name&gt; &lt;contact_name&gt;</code></li>
</ul>
<p>Accepting group invitations, leaving and deleting groups no longer requires using console commands.</p>
<h3>Optimized battery and traffic usage - up to 90x reduction!</h3>
<p>To reduce battery and traffic usage this release updated SMP protocol to allow batching multiple server commands (up to 90!) into one traffic block provided both the server and the client are upgraded. It means that if you have 90 contacts (or group members) on one server, to subscribe to all messaging queues you now need to send only one 16kb block instead of ~1.5Mb of traffic (90 blocks). It also hides how many contacts you have from any attackers who observe your network.</p>
<p>You might notice that sending commands to multiple queues in one block would allow the server to correlate that all these queues belong to the same user, even though the current server implementation we use does not do it. But even without batching, as the commands are sent via the same TCP connection, this correlation was already possible, so compared with the previous version it has no downsides.</p>
<p>To mitigate the risk of servers correlating your messaging queues we will soon add an option to access each queue via a separate TCP connection, which will have to be used together with access via Tor (as otherwise the servers would still see the same IP address). While it will increase battery and traffic consumption, it will also provide the highest level of privacy.</p>
<h3>Docker configuration for self-hosted SMP servers</h3>
<p>When we released SimpleX Chat v3 two weeks ago many users wanted to host messaging servers in docker containers. So, we are now offering <a href="https://github.com/simplex-chat/simplexmq/tree/stable/scripts/docker">two versions of docker configurations</a>:</p>
<ul>
<li>fast and convenient - it downloads SMP server binary from GitHub.</li>
<li>more secure - it builds SMP server from the source code.</li>
</ul>
<p>Let us know how it works for you!</p>
<h2>SimpleX platform</h2>
<p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter. <a href="https://github.com/simplex-chat/simplex-chat">SimpleX Chat</a> is our first application, a messaging application built on the SimpleX platform.</p>
<h3>The first (and the only?) messaging platform without user identifiers of any kind - 100% private by design!</h3>
<p>To protect identities of users and their connections, instead of user identifiers visible to the servers and/or the network (that are used by all other messaging platforms), SimpleX Chat uses <a href="https://csrc.nist.gov/glossary/term/Pairwise_Pseudonymous_Identifier">pairwise identifiers</a> of connections between the users there are two queues in each connection, each queue having 2 different identifiers to send and to receive the messages. It increases the number of used identifiers to the square of the number of users, making it more difficult (or impossible) to determine who is talking to whom. I <a href="/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements/#why-having-users-identifiers-is-bad-for-the-users">wrote previously</a> why it is bad for the users' privacy to have any identifiers, even random numbers, associated with their profiles.</p>
<h3>If SimpleX has no user identifiers, how can it deliver messages?</h3>
<p>I wrote about it in <a href="/blog/20220511-simplex-chat-v2-images-files/">v2 release announcement</a> and you can get more information about SimpleX platform objectives and technical design in <a href="https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/">the whitepaper</a>.</p>
<h3>Privacy: technical details and limitations</h3>
<p>SimpleX design follows &quot;defence in depth&quot; security principles having multiple overlapping defensive mechanisms to protect users privacy and security:</p>
<ul>
<li>TLS transport with server identity validation and channel binding, limited to the most secure cryptographic algorithms.</li>
<li>Three levels of encryption that both protect message content and meta-data, preventinc trafic correlation even if TLS is compromised:
<ul>
<li>end-to-end encryption in each messaging queue.</li>
<li>end-to-end encryption of the conversation using double-ratchet algorithms, that provides OTR messaging with forward secrecy and break-in recovery.</li>
<li>additional encryption layer between the server and message recipient, to prevent traffic correlation by ciphertext or any identifiers.</li>
</ul>
</li>
<li>Four levels of message padding to prevent any attack based on the content size - the TLS transport block is padded to a fixed 16kb size, and each of 3 encrypted envelopes is padded to a constant size before encryption as well.</li>
</ul>
<p>What we plan to add soon to further improve privacy and security:</p>
<ul>
<li>message queue rotation, so that pairwise identifiers become temporary, and your conversations move from server to server automatically.</li>
<li>access to the messaging servers via Tor v3 hidden services.</li>
<li>message mixing - adding latencies to message delivery, to protect against traffic correlation by message time.</li>
<li>using Tor v3 hidden service addresses for messaging servers.</li>
<li>passphrase-based local database encryption.</li>
</ul>
<p>SimpleX Chat <a href="../README/#privacy-technical-details-and-limitations">README page</a> has more details about it.</p>
<h2>We ask you to help us pay for 3rd party security audit</h2>
<p>I will get straight to the point: I ask you to support SimpleX Chat with donations.</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support we were lucky to have so far.</p>
<p>We are planning a 3rd party security audit for the app, and it would hugely help us if some part of this $20000+ expense could be covered with donations.</p>
<p>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 for 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.</p>
<p>If you are already using SimpleX Chat, or plan to use it in the future when it has more features, please consider making a donation - it will help us to raise more funds. Donating any amount, even the price of the cup of coffee, would make a huge difference for us.</p>
<p>It is possible to <a href="https://github.com/sponsors/simplex-chat">donate via GitHub</a>, which is commission-free for us, or <a href="https://opencollective.com/simplex-chat">via OpenCollective</a>, that also accepts donations in crypto-currencies, but charges a commission.</p>
<p>Thank you,</p>
<p>Evgeny</p>
<p>SimpleX Chat founder</p>

517
blog/index.html Normal file
View File

@@ -0,0 +1,517 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
Simplex Chat
<a href="/blog/20201022-simplex-chat/">Simplex Chat sss</a>
<!-- &lt;h1&gt;Simplex chat&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; Oct 22, 2020&lt;/p&gt;
&lt;p&gt;https://simplex.chat&lt;/p&gt;
&lt;p&gt;I&#39;d really appreciate your feedback, criticism and suggestions on the open-source idea I was slowly working on since early 2020. I recently made the demo server for the low-level message queue protocol (&amp;quot;simplex messaging protocol&amp;quot;) and the website to try to explain the chat idea that would use this protocol.&lt;/p&gt;
&lt;p&gt;Haskell protocol implementation: https://github.com/simplex-chat/simplexmq&lt;/p&gt;
&lt;p&gt;In short, the protocol defines a minimalist set of commands and server responses (just 7 commands and 5 responses sent over TCP) to operate encrypted message queues with in-memory persistence - the implementation uses STM.&lt;/p&gt;
&lt;p&gt;If anything, it was definitely helping to get to know Haskell types etc. much deeper than before :)&lt;/p&gt;
&lt;p&gt;Any criticism would be great - thank you in advance!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Originally published at https://www.reddit.com/r/haskell/comments/jg6uh4/simplex_chat/&lt;/p&gt;
-->
Simplex Chat Terminal UI
<a href="/blog/20210512-simplex-chat-terminal-ui/">Simplex Chat Terminal UI sss</a>
<!-- &lt;h2&gt;Announcing SimpleX Chat Prototype!&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; May 12, 2021&lt;/p&gt;
&lt;p&gt;For the last six months &lt;a href=&quot;https://github.com/epoberezkin&quot;&gt;me&lt;/a&gt; and my son &lt;a href=&quot;https://github.com/efim-poberezkin&quot;&gt;Efim&lt;/a&gt; have been working to bring you a working prototype of SimpleX Chat. We&#39;re excited to announce SimpleX Chat terminal client is now available &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat&quot;&gt;here&lt;/a&gt; on Linux, Windows and Mac (you can either build from source or download the binary for Linux, Windows or Mac from the latest release).&lt;/p&gt;
&lt;p&gt;Weve been using the terminal client between us and a few other people for a couple of months now, eating our own “dog food”, and have developed up to version 0.3.1, with most of the messaging protocol features we originally planned&lt;/p&gt;
&lt;h3&gt;Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;End-to-end encryption with protection from man in the middle attack. The connection invitation must be passed out-of-band (see &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat#how-to-use-simplex-chat&quot;&gt;how to use SimpleX Chat&lt;/a&gt; in the repo).&lt;/li&gt;
&lt;li&gt;No global identity or any usernames visible to the server(s), ensuring full privacy of your contacts and conversations.&lt;/li&gt;
&lt;li&gt;Message signing and verification with automatically generated RSA keys, with keys being unique per each connection.&lt;/li&gt;
&lt;li&gt;Authorization of each command/message by the servers with automatically generated RSA key pairs, also unique per connection.&lt;/li&gt;
&lt;li&gt;Message integrity validation (via passing the digests of the previous messages).&lt;/li&gt;
&lt;li&gt;Encrypted TCP transport, independent of certificates.&lt;/li&gt;
&lt;li&gt;You can deploy your own server, but you dont have to - the demo SMP server to relay your messages is available at smp1.simplex.im:5223 (pre-configured in the client).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;We need your help!&lt;/h3&gt;
&lt;p&gt;We&#39;re building a new kind of chat network - the only network that lets you control your chat. We&#39;d really appreciate your feedback, criticism and support - a star on the github repo, signing up to the mailing list or any contribution to the project will help. There is so much more to do!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Originally published at https://www.reddit.com/r/haskell/comments/naw6lz/simplex_chat_prototype_terminal_ui_made_in_haskell/&lt;/p&gt;
-->
Simplex Chat v0.4 released
<a href="/blog/20210914-simplex-chat-v0.4-released/">Simplex Chat v0.4 released sss</a>
<!-- &lt;h1&gt;SimpleX announces SimpleX Chat v0.4&lt;/h1&gt;
&lt;h2&gt;Open-source decentralized chat that uses privacy-preserving message routing protocol&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; Sep 14, 2021&lt;/p&gt;
&lt;p&gt;We are building a new platform for distributed Internet applications where privacy of the messages &lt;em&gt;and&lt;/em&gt; the network matter. &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat&quot;&gt;SimpleX Chat&lt;/a&gt; is our first application, a chat application built on the SimpleX platform that serves as an example of the power of the platform and as a reference application.&lt;/p&gt;
&lt;h2&gt;What is SimpleX?&lt;/h2&gt;
&lt;p&gt;We recognised that there is currently no messaging application which respects user privacy and guarantees metadata privacy -- in other words, messages could be private, but a third party can always see who is communicating with whom by examining a central service and the connection graph. SimpleX, at it&#39;s core, is designed to be truly distributed with no central server. This allows for enormous scalability at low cost, and also makes it virtually impossible to snoop on the network graph.&lt;/p&gt;
&lt;p&gt;The first application built on the platform is Simplex Chat, which for now is terminal (command line) based with mobile apps in the pipeline. The platform can easily support a private social network feed and a multitude of other services, which can be developed by the Simplex team or third party developers.&lt;/p&gt;
&lt;h2&gt;What&#39;s new in v0.5?&lt;/h2&gt;
&lt;p&gt;We&#39;re exicted to announce that SimpleX Chat now supports group chat and file transfer!&lt;/p&gt;
&lt;h3&gt;Chat groups&lt;/h3&gt;
&lt;p&gt;To create a group use the &lt;code&gt;/g &amp;lt;group&amp;gt;&lt;/code&gt; command. You can then invite contacts to the group by entering the &lt;code&gt;/a &amp;lt;group&amp;gt; &amp;lt;name&amp;gt;&lt;/code&gt; command. Your contact(s) will need to use the &lt;code&gt;/j accept&lt;/code&gt; command to accept the invitation to the group. To send messages to the group, simply enter &lt;code&gt;#&amp;lt;group&amp;gt; &amp;lt;message&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Please note:&lt;/strong&gt; Groups are not stored on any server; they are maintained as a list of members in the app database. Sending a message to the group sends a message to each member of the group.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/images/groups.gif&quot; alt=&quot;simplex-chat&quot;&gt;&lt;/p&gt;
&lt;h3&gt;File transfer&lt;/h3&gt;
&lt;p&gt;Sharing files is simple! To send a file to a contact, use the &lt;code&gt;/f @&amp;lt;contact&amp;gt; &amp;lt;file_path&amp;gt;&lt;/code&gt; command. The recipient will have to accept before the file is sent.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/images/files.gif&quot; alt=&quot;simplex-chat&quot;&gt;&lt;/p&gt;
&lt;h2&gt;We&#39;re always looking for help!&lt;/h2&gt;
&lt;p&gt;We&#39;d really appreciate your comments, criticism and support - a star on the GitHub repo, downloading and testing the chat or any contribution to the project will help a lot thank you for all your support!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Please note:&lt;/strong&gt; SimpleX Chat is in early stage development: we are still iterating protocols, improving privacy and security, so if you have communication scenarios requiring high security, you should consider some other options for now.&lt;/p&gt;
&lt;p&gt;Our goal is to create a new kind of chat platform that lets you control your chat!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Originally published at https://www.reddit.com/r/selfhosted/comments/poal79/simplex_chat_an_opensource_decentralized_chat/&lt;/p&gt;
-->
Simplex Chat v0.5 released
<a href="/blog/20211208-simplex-chat-v0.5-released/">Simplex Chat v0.5 released sss</a>
<!-- &lt;h1&gt;SimpleX announces SimpleX Chat v0.5&lt;/h1&gt;
&lt;h2&gt;Simplex Chat is the first chat platform that is 100% private by design - SimpleX no access to your connections graph&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; Dec 08, 2021&lt;/p&gt;
&lt;p&gt;We are building a new platform for distributed Internet applications where privacy of the messages &lt;em&gt;and&lt;/em&gt; the network matter. &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat&quot;&gt;SimpleX Chat&lt;/a&gt; is our first application, a chat application built on the SimpleX platform that serves as an example of the power of the platform and as a reference application.&lt;/p&gt;
&lt;h2&gt;What is SimpleX?&lt;/h2&gt;
&lt;p&gt;We recognised that there is currently no messaging application which respects user privacy and guarantees metadata privacy -- in other words, messages could be private, but a third party can always see who is communicating with whom by examining a central service and the connection graph. SimpleX, at it&#39;s core, is designed to be truly distributed with no central server. This allows for enormous scalability at low cost, and also makes it virtually impossible to snoop on the network graph.&lt;/p&gt;
&lt;p&gt;The first application built on the platform is Simplex Chat, which for now is terminal (command line) based with mobile apps in the pipeline. The platform can easily support a private social network feed and a multitude of other services, which can be developed by the Simplex team or third party developers.&lt;/p&gt;
&lt;h2&gt;What&#39;s new in v0.5?&lt;/h2&gt;
&lt;h3&gt;Long-term chat addresses&lt;/h3&gt;
&lt;p&gt;Users can now create long-term chat addresses that they can share with many people (e.g. in email signature, or online), so that any chat user can send them a connection request.&lt;/p&gt;
&lt;p&gt;This is an ALPHA feature, and we have not yet added any protection against spam contact requests. However, if the address you created starts receiving spam connection requests, you can simply delete it without losing any of your accepted connections and create another address - as many times as you like!&lt;/p&gt;
&lt;h2&gt;We need your help!&lt;/h2&gt;
&lt;p&gt;We&#39;d really appreciate your comments, criticism and support - a star on the GitHub repo, downloading and testing the chat or any contribution to the project will help a lot thank you for all your support!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Please note:&lt;/strong&gt; SimpleX Chat is in early stage development: we are still iterating protocols, improving privacy and security, so if you have communication scenarios requiring high security, you should consider some other options for now.&lt;/p&gt;
&lt;p&gt;Our goal is to create a new kind of chat platform that lets you control your chat!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Originally published at https://www.reddit.com/r/haskell/comments/rc0xkn/simplex_chat_the_first_chat_platform_that_is_100/&lt;/p&gt;
-->
Simplex Chat v1.0.0 released
<a href="/blog/20220112-simplex-chat-v1-released/">Simplex Chat v1.0.0 released sss</a>
<!-- &lt;h1&gt;SimpleX announces SimpleX Chat v1&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; Jan 12, 2022&lt;/p&gt;
&lt;h2&gt;The most private and secure chat and application platform&lt;/h2&gt;
&lt;p&gt;We are building a new platform for distributed Internet applications where privacy of the messages &lt;em&gt;and&lt;/em&gt; the network matter. &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat&quot;&gt;SimpleX Chat&lt;/a&gt; is our first application, a messaging application built on the SimpleX platform.&lt;/p&gt;
&lt;h2&gt;What is SimpleX?&lt;/h2&gt;
&lt;p&gt;There is currently no messaging application which respects user privacy and guarantees metadata privacy - in other words, messages could be private, but a third party can always see who is communicating with whom by examining a central service and the connection graph. SimpleX, at it&#39;s core, is designed to be truly distributed with no central server. This allows for enormous scalability at low cost, and also makes it virtually impossible to snoop on the network graph.&lt;/p&gt;
&lt;p&gt;The first application built on the platform is Simplex Chat, which for now is terminal (command line) based with mobile apps in the pipeline. The platform can easily support a private social network feed and a multitude of other services, which can be developed by the Simplex team or third party developers.&lt;/p&gt;
&lt;h2&gt;What&#39;s new in v1?&lt;/h2&gt;
&lt;h3&gt;Stable protocol implementation&lt;/h3&gt;
&lt;p&gt;All releases from v1 onwards will be forwards and backwards compatible.&lt;/p&gt;
&lt;h3&gt;Message encryption has been completely re-engineered to provide forward secrecy and recovery from break-in.&lt;/h3&gt;
&lt;p&gt;SimpleX Chat v1 now uses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.signal.org/docs/specifications/doubleratchet/&quot;&gt;double-ratchet&lt;/a&gt; E2E encryption using AES-256-GCM cipher with &lt;a href=&quot;https://www.signal.org/docs/specifications/x3dh/&quot;&gt;X3DH key agreement&lt;/a&gt; using 2 ephemeral Curve448 keys to derive secrets for ratchet initialization. These keys and secrets are separate for each contact, group membership and file transfer.&lt;/li&gt;
&lt;li&gt;in addition to double ratchet, there is a separate E2E encryption in each message queue with DH key exchange using Curve25519 and &lt;a href=&quot;https://nacl.cr.yp.to/index.html&quot;&gt;NaCl crypto-box&lt;/a&gt; - separate E2E encryption has been added to avoid having any cipher-text in common between message queues of a single contact (to prevent traffic correlation).&lt;/li&gt;
&lt;li&gt;additional encryption of messages delivered from servers to recipients, also using Curve25519 DH exchange and NaCl crypto-box - to avoid shared cipher-text in sent and received traffic (also to prevent traffic correlation).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Improved user and server authentication and transport&lt;/h3&gt;
&lt;p&gt;SimpleX now uses ephemeral Ed448 keys to sign and verify client commands to the servers. As before, these keys are different per message queue and do not represent a user&#39;s identity.&lt;/p&gt;
&lt;p&gt;Instead of ad-hoc encrypted transport we now use TLS 1.2+ limited to the most performant and secure cipher with forward secrecy (ECDHE-ECDSA-CHACHA20POLY1305-SHA256), Curve448 groups and Ed448 keys.&lt;/p&gt;
&lt;p&gt;Server identity is validated as part of TLS handshake - the fingerprint of offline server certificate is used as a permanent server identity which is included in server address, to protect against MITM attacks between clients and servers.&lt;/p&gt;
&lt;p&gt;SimpleX also uses &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc5929#section-3&quot;&gt;tls-unique channel binding&lt;/a&gt; in each signed client command to the server to protect against replay attacks.&lt;/p&gt;
&lt;h3&gt;Changes in protocol encoding&lt;/h3&gt;
&lt;p&gt;We switched from inefficient text-based low level protocol encodings, that simplified early development, to space and performance efficient binary encodings, reducing protocol overhead from circa 15% to 3.7% of transmitted application message size.&lt;/p&gt;
&lt;h2&gt;Learn more about Simplex&lt;/h2&gt;
&lt;p&gt;Further details on platform objectives and technical design are available &lt;a href=&quot;https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;SimpleX Chat client can be used in the terminal on all major desktop platforms (Windows/Mac/Linux) and also on Android devices with &lt;a href=&quot;https://github.com/termux&quot;&gt;Termux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;SimpleX also allows people to host their own servers and own their own chat data. SimpleX servers are exceptionally lightweight and require a single process with the initial memory footprint of under 20 Mb, which grows as the server adds in-memory queues (even with 10,000 queues it uses less than 50Mb, not accounting for messages).&lt;/p&gt;
&lt;h2&gt;We look forward to you using it!&lt;/h2&gt;
&lt;p&gt;We look forward to your feedback and suggestions - via GitHub issues or via SimpleX Chat - you can connect to the team with &lt;code&gt;/simplex&lt;/code&gt; command once you run the chat.&lt;/p&gt;
-->
<a href="/blog/20220214-simplex-chat-ios-public-beta/"> sss</a>
<!-- &lt;h1&gt;SimpleX announces SimpleX Chat public beta for iOS&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; Feb 14, 2022&lt;/p&gt;
&lt;h2&gt;Private and secure chat and application platform - &lt;a href=&quot;https://testflight.apple.com/join/DWuT2LQu&quot;&gt;public beta is now available&lt;/a&gt; for iPhones with iOS 15.&lt;/h2&gt;
&lt;p&gt;Our new iPhone app is very basic - right now it only supports text messages and emojis.&lt;/p&gt;
&lt;p&gt;Even though the app is new, it uses the same core code as our terminal app, that was used and stabilized over a long time, and it provides the same level of privacy and security that has been available since the release of v1 a month ago:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.signal.org/docs/specifications/doubleratchet/&quot;&gt;double-ratchet&lt;/a&gt; E2E encryption.&lt;/li&gt;
&lt;li&gt;separate keys for each contact.&lt;/li&gt;
&lt;li&gt;additional layer of E2E encryption in each message queue (to prevent traffic correlation when multiple queues are used in a conversation - something we plan later this year).&lt;/li&gt;
&lt;li&gt;additional encryption of messages delivered from servers to recipients (also to prevent traffic correlation).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can read more details in our recent &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat/blob/stable/blog/20220112-simplex-chat-v1-released/&quot;&gt;v1 announcement&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Join our public beta!&lt;/h2&gt;
&lt;p&gt;Install the app &lt;a href=&quot;https://testflight.apple.com/join/DWuT2LQu&quot;&gt;via TestFlight&lt;/a&gt;, connect to us (via &lt;strong&gt;Connect to SimpleX team&lt;/strong&gt; link in the app) and to a couple of your friends you usually send messages to - and please let us know what you think!&lt;/p&gt;
&lt;p&gt;We would really appreciate any feedback to improve the app and to decide which additional features should be included in our public release in March.&lt;/p&gt;
&lt;p&gt;Should it be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;images,&lt;/li&gt;
&lt;li&gt;link previews,&lt;/li&gt;
&lt;li&gt;or maybe something else we couldn&#39;t think of.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please vote on the features you think are the most needed in our &lt;a href=&quot;https://app.loopedin.io/simplex&quot;&gt;app roadmap&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;What is SimpleX?&lt;/h2&gt;
&lt;p&gt;We are building a new platform for distributed Internet applications where privacy of the messages &lt;em&gt;and&lt;/em&gt; the network matter.&lt;/p&gt;
&lt;p&gt;We aim to provide the best possible protection of messages and metadata. Today there is no messaging application that works without global user identities, so we believe we provide better metadata privacy than alternatives. SimpleX is designed to be truly distributed with no central server, and without any global user identities. This allows for high scalability at low cost, and also makes it virtually impossible to snoop on the network graph.&lt;/p&gt;
&lt;p&gt;The first application built on the platform is Simplex Chat, which is available for terminal (command line in Windows/Mac/Linux) and as iOS public beta - with Android app coming in a few weeks. The platform can easily support a private social network feed and a multitude of other services, which can be developed by the Simplex team or third party developers.&lt;/p&gt;
&lt;p&gt;SimpleX also allows people to host their own servers to have control of their chat data. SimpleX servers are exceptionally lightweight and require a single process with the initial memory footprint of under 20 Mb, which grows as the server adds in-memory queues (even with 10,000 queues it uses less than 50Mb, not accounting for messages). It should be considered though that while self-hosting the servers provides more control, it may reduce meta-data privacy, as it is easier to correlate the traffic of servers with small number of messages coming through.&lt;/p&gt;
&lt;p&gt;Further details on platform objectives and technical design are available &lt;a href=&quot;https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/&quot;&gt;in SimpleX platform overview&lt;/a&gt;.&lt;/p&gt;
-->
<a href="/blog/20220308-simplex-chat-mobile-apps/"> sss</a>
<!-- &lt;h1&gt;SimpleX announces SimpleX Chat mobile apps for iOS and Android&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; March 8, 2022&lt;/p&gt;
&lt;h2&gt;SimpleX Chat is the first chat platform that is 100% private by design - it has no access to your connections graph&lt;/h2&gt;
&lt;p&gt;We have now released iPhone and Android apps to &lt;a href=&quot;https://apps.apple.com/us/app/simplex-chat/id1605771084&quot;&gt;Apple AppStore&lt;/a&gt; and &lt;a href=&quot;https://play.google.com/store/apps/details?id=chat.simplex.app&quot;&gt;Google Play Store&lt;/a&gt;, &lt;a href=&quot;https://github.com/simplex-chat/website/raw/master/simplex.apk&quot;&gt;APK for Android&lt;/a&gt; is also available for direct download.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Please note&lt;/strong&gt;: the current version is only supported on iPhone 8+ and on Android 10+ - we are planning to add support for iPad and older devices very soon, and we will announce it on our &lt;a href=&quot;https://www.reddit.com/r/SimpleXChat/&quot;&gt;Reddit&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/SimpleXChat&quot;&gt;Twitter&lt;/a&gt; channels - please subscribe to follow our updates there.&lt;/p&gt;
&lt;h2&gt;What is SimpleX&lt;/h2&gt;
&lt;p&gt;We are building a new platform for distributed Internet applications where privacy of the messages &lt;em&gt;and&lt;/em&gt; the network matter.&lt;/p&gt;
&lt;p&gt;We aim to provide the best possible protection of messages and metadata. Today there is no messaging application that works without global user identities, so we believe we provide better metadata privacy than alternatives. SimpleX is designed to be truly distributed with no central server, and without any global user identities. This allows for high scalability at low cost, and also makes it virtually impossible to snoop on the network graph.&lt;/p&gt;
&lt;p&gt;The first application built on the platform is Simplex Chat. The platform can easily support a private social network feed and a multitude of other services, which can be developed by the Simplex team or third party developers.&lt;/p&gt;
&lt;p&gt;Further details on platform objectives and technical design are available &lt;a href=&quot;https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/&quot;&gt;in SimpleX platform overview&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Why we are building it&lt;/h2&gt;
&lt;p&gt;Evgeny (SimpleX Chat founder): I have been working on this platform for a long time to provide a place where all people can communicate freely with each other, without fear of persecution because of what they said and who they are connected with. Not sharing information about your connections is very important, particularly for people living in oppressive regimes. Because of the terrible conflict between Russia and Ukraine, people of both countries I have friends and family there could be at risk when sharing their opinions or just from being connected to people who were prosecuted. Every messenger app that knows who you are can end up sharing all of your connections with undesirable third parties, either as a result of a court order or as a result of attack - so even Signal, which has strong encryption, cannot protect your connection graph. I hope our messenger can help people living in the oppressive regimes to express their opinions without fear and risk of prosecution.&lt;/p&gt;
&lt;h2&gt;Huge thanks to our testers!&lt;/h2&gt;
&lt;p&gt;Thanks a lot to everybody who helped testing and improving the apps!&lt;/p&gt;
&lt;p&gt;If you have a &lt;a href=&quot;https://testflight.apple.com/join/DWuT2LQu&quot;&gt;TestFlight version&lt;/a&gt; installed you can continue using it.&lt;/p&gt;
&lt;p&gt;We plan to keep it as stable as we can, and it will give you access to all new features 1-2 weeks earlier - it&#39;s limited to 10,000 users, so you can grab it while it&#39;s available. You can still communicate with people who use a public version we are committed to maintaining backwards compatibility.&lt;/p&gt;
&lt;p&gt;You can always migrate from a public App Store version to a TestFlight version. The opposite migration - from TestFlight to public version - is only possible when we have the same app versions released, as there are usually some database migrations that cannot be reversed. To migrate to public version you have to disable automatic updates on TestFlight, wait until public version catches up and then install it from App Store. In any case, it is safe installing the public version, but it might crash if you have a newer version from TestFlight - in this case you just need to re-install the app from TestFlight and install App Store version a bit later - you would not lose any of your data.&lt;/p&gt;
&lt;h2&gt;It&#39;s not all new - our core code has been used for a long time by a few thousand people in our terminal app.&lt;/h2&gt;
&lt;p&gt;The apps use the same core code as our terminal app, that was used and stabilized over a long time, and it provides the same level of privacy and security that has been available since the release of v1 earlier this year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.signal.org/docs/specifications/doubleratchet/&quot;&gt;double-ratchet&lt;/a&gt; E2E encryption.&lt;/li&gt;
&lt;li&gt;separate keys for each contact.&lt;/li&gt;
&lt;li&gt;additional layer of E2E encryption in each message queue (to prevent traffic correlation when multiple queues are used in a conversation - something we plan later this year).&lt;/li&gt;
&lt;li&gt;additional encryption of messages delivered from servers to recipients (also to prevent traffic correlation).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can read more technical details in our recent &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat/blob/stable/blog/20220112-simplex-chat-v1-released/&quot;&gt;v1 announcement&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A big thank you to &lt;a href=&quot;https://github.com/angerman&quot;&gt;@angerman&lt;/a&gt; for making it possible to compile our Haskell code to mobile platforms and getting it approved on app stores - it has been a non-trivial project, and it is still ongoing.&lt;/p&gt;
&lt;h2&gt;Install the apps and make a private connection!&lt;/h2&gt;
&lt;p&gt;Once you install the app, you can connect to anybody:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create your local chat profile - it is not shared with SimpleX servers, it is local to your devices, and it will be shared with your contacts when you connect.&lt;/li&gt;
&lt;li&gt;To make a private connection, you need to create a one-time connection link / QR code via &amp;quot;Add contact&amp;quot; button in the app. You can either show the QR code to your contact in person or via a video call - this is the most secure way to create a connection - or you can share the link via any other channel - only one user can connect via this link.&lt;/li&gt;
&lt;li&gt;Once another user scans the QR code or opens the app via the link (they also should create their profile first) the connection will be created and you can send e2e encrypted messages privately, without anybody knowing you are connected.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;New features and improvements that are coming soon&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;push notification server. Currently the apps load messages in the background periodically, that can be quite infrequent on iOS if you don&#39;t open the app regularly. With push notifications you would know about the new messages instantly.&lt;/li&gt;
&lt;li&gt;e2e encrypted audio and video calls via WebRTC.&lt;/li&gt;
&lt;li&gt;export and import of the chat database.&lt;/li&gt;
&lt;li&gt;&amp;quot;reply to message&amp;quot; - feature allowing you to quote the message you are replying to.&lt;/li&gt;
&lt;li&gt;localization - we will let you know once you can contribute the translations to your languages.&lt;/li&gt;
&lt;li&gt;configuring your servers in the apps - this will be released this week, both for iOS and Android. By default the apps are using SimpleX Chat servers, but you will be able to configure your own and still be connected to other users who use our app with our servers.&lt;/li&gt;
&lt;li&gt;user profile images.&lt;/li&gt;
&lt;li&gt;sending images and files - image preview will be sent via the servers, so it can be asynchronous, and large files/full resolution images via WebRTC, so both devices will have to be online.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please let us know what else you think is important and if you find any bugs.&lt;/p&gt;
-->
<a href="/blog/20220404-simplex-chat-instant-notifications/"> sss</a>
<!-- &lt;h1&gt;Instant notifications for SimpleX Chat mobile apps&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; April 04, 2022&lt;/p&gt;
&lt;h2&gt;SimpleX Chat is the first chat platform that is 100% private by design - it has no access to your connections&lt;/h2&gt;
&lt;p&gt;Since we released SimpleX Chat mobile apps couple of weeks ago we&#39;ve had a lot of excitement from our users - nearly 2000 people downloaded the app after &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat/blob/stable/blog/20220308-simplex-chat-mobile-apps/&quot;&gt;the announcement&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Huge thanks to everybody who downloaded and connected to us via the chat - there were many great questions and suggestions, and on some days I spent most of the time chatting to our users :)&lt;/p&gt;
&lt;p&gt;Since we released the app, we&#39;ve added and released:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;support for iPhone 7.&lt;/li&gt;
&lt;li&gt;configurable SimpleX servers.&lt;/li&gt;
&lt;li&gt;message replies, editing and deletion.&lt;/li&gt;
&lt;li&gt;profile images.&lt;/li&gt;
&lt;li&gt;and, most importantly, private instant message notifications on Android devices - more on that below.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Install the apps and make a private connection!&lt;/h2&gt;
&lt;p&gt;Once you install the app, you can connect to anybody:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create your local chat profile - it is not shared with SimpleX servers. It is local to your devices, and it will be shared with your contacts only when you connect.&lt;/li&gt;
&lt;li&gt;To make a private connection, you need to create a one-time connection link or a QR code via the &amp;quot;Add contact&amp;quot; button in the app. You can show the QR code to your contact in person or via a video call - this is the most secure way to create a connection - or you can share the link via any other channel. Only one user can connect via this link.&lt;/li&gt;
&lt;li&gt;Once another user scans the QR code or opens the app via the link the connection will be created and you can send end-to-end encrypted messages privately, without anybody knowing you are connected.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;See &lt;a href=&quot;https://youtu.be/rZeVhsv_JAY&quot;&gt;demo video&lt;/a&gt; that shows how two users connect and send the first messages.&lt;/p&gt;
&lt;h2&gt;Why we are doing it&lt;/h2&gt;
&lt;p&gt;We are building SimpleX Chat because we believe that privacy is a fundamental human right, and that protecting our personal network of contacts is even more important than the content of the messages - sharing this network can lead to various adverse consequences, from manipulating us into buying goods we don&#39;t need, manipulating election processes, and in some cases, prosecuting innocent people. For example, &lt;a href=&quot;https://en.wikipedia.org/wiki/Mohamedou_Ould_Slahi&quot;&gt;Mohamedou Ould Salahi&lt;/a&gt; was detained in Guantanamo prison for 15 years after a single &amp;quot;wrong&amp;quot; phone call. His story is told in his memoir and in The Mauritanian movie.&lt;/p&gt;
&lt;h2&gt;Problem - users expect to be instantly notified when messages arrive!&lt;/h2&gt;
&lt;p&gt;Our first users realized that what we take for granted in messaging apps - instant message notifications - is missing in our first release of SimpleX Chat apps. Quite a few people thought that it was a bug, rather than a missing feature. Sorry to disappoint!&lt;/p&gt;
&lt;h2&gt;Why can&#39;t we just do what messenger X does?&lt;/h2&gt;
&lt;p&gt;SimpleX Chat is the first and the only messenger we know of that operates without user identities of any kind. There are no phone numbers, emails, usernames, public keys, or any other addresses or identifiers to uniquely identify the users to the network or servers. That is why we say it is 100% private by design, and fundamentally different than other chat platforms.&lt;/p&gt;
&lt;p&gt;Instead, SimpleX Chat assigns these identifiers to unidirectional message queues. What looks to SimpleX Chat users like contacts and groups [1], to SimpleX servers looks like an unorganized and unrelated collection of unidirectional message queues. Our servers do not know which queues belong to which users, contacts or groups. Even a single conversation can happen via two different servers (one for sent and another for received messages). This makes our personal network of contacts invisible to the servers.&lt;/p&gt;
&lt;p&gt;But it also creates a problem for instant notifications - all push notification services require having a device token.&lt;/p&gt;
&lt;p&gt;So, how can we operate without identities and still have instant notifications?&lt;/p&gt;
&lt;p&gt;[1] yes, we have groups in our terminal app, and the UI to manage them is coming to mobile apps soon. Some users have already firgured out how to &lt;a href=&quot;https://medium.com/@vsevolod.mineev/how-to-collaborate-across-multiple-devices-whilst-protecting-your-metadata-371af87d0ba0&quot;&gt;create groups via chat console&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;We&#39;ve cracked it for Android!&lt;/h2&gt;
&lt;p&gt;After some research into how push notifications work on Android, and open-source alternatives to Google push notifications, we discovered how to avoid sharing device tokens with any servers.&lt;/p&gt;
&lt;p&gt;We have implemented message reception as a background service (in Android terminology, a &amp;quot;foreground service&amp;quot; showing a notification icon when the service is running) following the same design as &lt;a href=&quot;https://github.com/binwiederhier/ntfy-android&quot;&gt;ntfy.sh&lt;/a&gt; created by &lt;a href=&quot;https://github.com/binwiederhier&quot;&gt;Philipp Heckel&lt;/a&gt;, who, in turn, credits the design to &lt;a href=&quot;https://robertohuertas.com/2019/06/29/android_foreground_services/&quot;&gt;the blog post by Roberto Huertas&lt;/a&gt;. Big thanks to them!&lt;/p&gt;
&lt;p&gt;How does it work? When the app is first started on an Android device, it starts the background service that keeps the TCP connections to the messaging servers open with almost no traffic (only doing periodic checks that connections still exist). It consumes only a few percents of battery per day, depending on how stable your internet connection is, and delivers message notifications as soon as messages arrive.&lt;/p&gt;
&lt;p&gt;This service continues running when the app is switched off, and it is restarted when the device is restarted even if you don&#39;t open the app - so the message notifications arrive instantly every time. To maximize battery life, it can be turned off by switching off &amp;quot;Private notifications&amp;quot;. You will still receive notifications while the app is running or in the background.&lt;/p&gt;
&lt;p&gt;So, for Android we can now deliver instant message notifications without compromising users&#39; privacy in any way. The app version 1.5 that includes private instant notifications is now available on &lt;a href=&quot;https://play.google.com/store/apps/details?id=chat.simplex.app&quot;&gt;Play Store&lt;/a&gt;, in our &lt;a href=&quot;https://app.simplex.chat/&quot;&gt;F-Droid repo&lt;/a&gt; and via direct &lt;a href=&quot;https://github.com/simplex-chat/website/raw/master/simplex.apk&quot;&gt;APK&lt;/a&gt; downloads!&lt;/p&gt;
&lt;p&gt;Please let us what needs to be improved - it&#39;s only the first version of instant notifications for Android!&lt;/p&gt;
&lt;h2&gt;Our iOS approach has one trade-off&lt;/h2&gt;
&lt;p&gt;iOS is much more protective of what apps are allowed to run on the devices, and the solution that worked on Android is not viable on iOS.&lt;/p&gt;
&lt;p&gt;We already have background refresh in the iOS app that periodically checks for new messages, and if you use the app every day it delivers notifications within 10 or 20 minutes. It is not instant, but it may be usable for some. If you use the app infrequently, however, this delay can become several hours, or your phone may stop checking for the new messages completely. This is not ideal!&lt;/p&gt;
&lt;p&gt;The only solution known to us is using Apple&#39;s push notifications service (APN) to deliver push notifications.&lt;/p&gt;
&lt;p&gt;We planned for it, so we added to &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat/blob/stable/blog/20220112-simplex-chat-v1-released/&quot;&gt;v1 of SMP&lt;/a&gt; (the protocol used by our servers) an extension allowing the client to subscribe to notifications from message queues, via separate queue addresses, and using separate cryptographic keys for each queue. This has to be enabled by the client for each queue separately. We haven&#39;t used this extension so far, and now we are building a SimpleX notification service based on it.&lt;/p&gt;
&lt;p&gt;If the user enables push notifications, then for each contact the app would enable a notification subscription and pass credentials to the notification server together with the device token required to deliver push notifications to user&#39;s device.&lt;/p&gt;
&lt;p&gt;The notification server will subscribe to these notifications from SMP servers. The notifications do not include any message content, only the signal that a message has arrived to the server. Notification server is only allowed to send 2-3 hidden notifications per hour to the device. The notification is end-to-end encrypted and contains information about which server has a message, so that the client can connect to the server, retrieve and decrypt the message, and show the notification to the users including sender name and the message content. None of this information is shared with any server.&lt;/p&gt;
&lt;p&gt;If the user receives more than 2-3 messages per hour, the notification server can send additional visible notifications that would simply say &amp;quot;you have a new message&amp;quot;, and the user will have to open the app to receive and see these messages. We are also investigating whether we can use &amp;quot;mutable-content&amp;quot; notifications that allow doing some processing when the notification arrives before showing it to the users.&lt;/p&gt;
&lt;p&gt;It is a substantial amount of development, we are aiming to release it later this month.&lt;/p&gt;
&lt;p&gt;This design is a compromise between privacy and convenience. The notification server will have to have a device token to deliver notifications. Several things we did (or plan to do) to improve this compromise:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The notification server will only store device tokens and queue addresses in memory, making it more complex for a potential attacker to access. If server has to be restarted, they would lose all configured notification subscriptions and the clients would have to create them again. We will program the clients to periodically check for the existence of notification subscriptions on the notification server.&lt;/li&gt;
&lt;li&gt;The notificaiton server will not know the addresses of the messaging queues used to receive or send messages. A different address is used to subscribe to notifications. So while the notification server would have the knowledge of how many queues your device has (and on which servers), it still won&#39;t know who is sending you the messages.&lt;/li&gt;
&lt;li&gt;We are also planning to split the logic of notification subscriptions and delivering notifications to the devices to two different servers. The server that subscribes to the notifications could be self-hosted, allowing you full control of how you deploy it. Only this server would know which messaging servers you use or how many messaging queues you have. The server that delivers notifications to the devices will be managed by SimpleX Chat as we have to authorize it with Apple&#39;s push notification service. This split will not be available in the first release. We plan to add it a bit later.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So, with the notification servers added, our network design will look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; User&#39;s iOS device Internet Servers
--------------------- | ------------------------ | -------------------------
| |
| | (can be self-hosted now)
+--------------+ | | +----------------+
| SimpleX Chat | -------------- TLS --------------- | SimpleX |
| client |------&amp;gt; SimpleX Messaging Protocol (SMP) ---&amp;gt; | Messaging |
+--------------+ ---------------------------------- | Server |
^ | | | +----------------+
| | | | | |
| | | | | S | T
| | | | | M | L
| | | | | P | S
| | | | | |
| | | | +----------------+ +----------------+
| | -------------- TLS --------------- | SimpleX | | SimpleX |
| |-----------&amp;gt; Notifications management ----&amp;gt; | Notifications | ----&amp;gt; | Push |
| ---------------------------------- | Subscriber | | Server |
| | | +----------------+ +----------------+
| | | (can be self-hosted |
| | | in the future) |
| | | V
| -------------- TLS --------------- +-----------------+
|----------------- Notification delivery &amp;lt;----------------------------- | Apple PN server |
---------------------------------- +-----------------+
| |
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Please let us know what you think about this design and about this privacy / usability trade-off:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For you, is this an acceptable compromise, if you can choose to disable instant notifications?&lt;/li&gt;
&lt;li&gt;Do you have any ideas about how this design could be improved upon?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thank you!&lt;/p&gt;
-->
<a href="/blog/20220511-simplex-chat-v2-images-files/"> sss</a>
<!-- &lt;h1&gt;SimpleX Chat v2.0 - sending images and files in mobile apps&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; May 11, 2022&lt;/p&gt;
&lt;h2&gt;New in version 2.0 - sending images and files privately&lt;/h2&gt;
&lt;p&gt;To send image and files SimpleX Chat uses privacy-preserving system components, both in iOS and Android apps. We do not ask for permission to access multiple or selected files, as, for example, Signal and Telegram do - it compromises either privacy or convenience.&lt;/p&gt;
&lt;p&gt;How does it work? The gallery and files are accessed from a system provided dialogue that runs in a separate process, and provides a temporary URI to access only one file selected by the user, only until the app is restarted.&lt;/p&gt;
&lt;p&gt;To make file and images work for mobile apps we made a breaking change in SimpleX Chat core. The current version can exchange files with the previous version 1.6 of the terminal app, but not with the version before that.&lt;/p&gt;
&lt;p&gt;In the mobile app, to send and receive files both devices must have version 2.0 installed - so please check it with your contacts. Receiving images works in the previous version, so even if your contacts did not yet upgrade the app, they should be able to receive the images.&lt;/p&gt;
&lt;h2&gt;The first messaging platform without user identifiers.&lt;/h2&gt;
&lt;p&gt;To protect identities of users and their connections, SimpleX Chat has no user identifiers visible to the network unlike any other messaging platform.&lt;/p&gt;
&lt;p&gt;Many people asked: &lt;em&gt;if SimpleX has no user identifiers, how can it deliver messages?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To deliver mesages, instead of user IDs used by all other platforms, SimpleX has identifiers for message queues, separate for each of your contacts. In the current version of the protocol each queue is used until the contact is deleted. Later this year we plan to add queue rotation to the client protocol, so that even conversations don&#39;t have long term identifiers visible to the network. This design prevents leaking any users metadata on the application level.&lt;/p&gt;
&lt;p&gt;You define which server(s) to use &lt;strong&gt;to receive&lt;/strong&gt; the messages, your contacts the servers you use &lt;strong&gt;to send&lt;/strong&gt; the messages to them. It means that every conversation is likely to use two different servers - one for each message direction.&lt;/p&gt;
&lt;p&gt;Only client devices store user profiles, contacts, groups, and messages sent with &lt;strong&gt;2-layer end-to-end encryption&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Read more in &lt;a href=&quot;https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/&quot;&gt;SimpleX whitepaper&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;How to connect with your contacts in SimpleX Chat&lt;/h2&gt;
&lt;p&gt;Once you install the app, you can connect to anybody:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create your local chat profile - it is not shared with SimpleX servers. It is local to your devices, and it will be shared with your contacts only when you connect.&lt;/li&gt;
&lt;li&gt;To make a private connection, you need to create a one-time connection link or a QR code via the app. You can show the QR code to your contact in person or via a video call - this is the most secure way to create a connection - or you can share the link via any other channel. Only one user can connect via this link.&lt;/li&gt;
&lt;li&gt;Once another user scans the QR code or opens the app via the link the connection will be created and you can send end-to-end encrypted messages privately, without anybody knowing you are connected.&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&quot;https://github.com/simplex-chat/.github/blob/master/profile/images/conversation.png&quot; alt=&quot;Make a private connection&quot; width=&quot;594&quot; height=&quot;360&quot;&gt;
-->
<a href="/blog/20220524-simplex-chat-better-privacy/"> sss</a>
<!-- &lt;h1&gt;SimpleX Chat v2.1 - better conversation privacy&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; May 24, 2022&lt;/p&gt;
&lt;h2&gt;New in version 2.1 - clearing conversations without deleting contacts&lt;/h2&gt;
&lt;p&gt;In this version you can irreversibly delete individual messages after they were deleted by a sender, and also completely clear the conversation.&lt;/p&gt;
&lt;p&gt;The only way to do it before this version was by deleting the contact, now you can keep the connection when you clear the conversation.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/images/20220524-clear-chat1.png&quot; width=&quot;240&quot;&gt; &lt;img src=&quot;/img/images/20220524-clear-chat2.png&quot; width=&quot;240&quot;&gt;&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;/blog/20220112-simplex-chat-v1-released/&quot;&gt;v1 announcement&lt;/a&gt; for information on how SimpleX protects the security of the messages.&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;/blog/20220511-simplex-chat-v2-images-files/&quot;&gt;v2 announcement&lt;/a&gt; for more information about SimpleX platform and how it works.&lt;/p&gt;
&lt;p&gt;Read about SimpleX design in &lt;a href=&quot;https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/&quot;&gt;whitepaper&lt;/a&gt;.&lt;/p&gt;
-->
<a href="/blog/20220604-simplex-chat-new-privacy-security-settings/"> sss</a>
<!-- &lt;h1&gt;SimpleX Chat v2.2 - the first messaging platform without user identities - 100% private by design!&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; June 4, 2022&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;/blog/20220511-simplex-chat-v2-images-files/&quot;&gt;v2 announcement&lt;/a&gt; for more information about SimpleX platform and how it protects your privacy by avoiding user identities of any kind in its design - SimpleX, unlike any other messaging platfom, has no identity keys or any numbers that identify its users.&lt;/p&gt;
&lt;h2&gt;New Privacy and Security settings in version 2.2&lt;/h2&gt;
&lt;img src=&quot;/img/images/20220604-privacy-settings.png&quot; width=&quot;480&quot;&gt;
&lt;h3&gt;Protect your chats&lt;/h3&gt;
&lt;p&gt;To protect your chats you can enable SimpleX Lock. Every time you open the chat after it was in the background for 30 second, you will need to pass biometric or pin code authentication to use the app (provided it is enabled for your device).&lt;/p&gt;
&lt;h3&gt;Save data and avoid sharing you are online&lt;/h3&gt;
&lt;p&gt;In case you want to save your mobile data or to avoid showing to your contacts that you are online, you can disable automatic image downloads. For many users it is more convenient to have images downloaded automatically, so it is enabled by default.&lt;/p&gt;
&lt;p&gt;Low resolution image previews would still be shown, the senders have no way to see if you received them or not.&lt;/p&gt;
&lt;h3&gt;Avoid visiting websites of the links you send&lt;/h3&gt;
&lt;p&gt;When you receive the links that include link previews, it is fully private - these previews are generated by the sender, and they do not expose your IP address in any way.&lt;/p&gt;
&lt;p&gt;When you send the links, the app automatically downloads the link description and the picture from the website of the link. While it is convenient, it exposes your IP address to the website. To avoid it you can disable sending link previews.&lt;/p&gt;
&lt;h3&gt;Identify any lost messages in the chat&lt;/h3&gt;
&lt;p&gt;The app tracks the integrity of the messages you receive by cheching their sequential numbers and by validating that the hash of the previous message matches the hash included in the message each conversation, effectively, is two blockchains that only you and your contact have access to.&lt;/p&gt;
&lt;p&gt;In case some of the messages are lost, you would see it in the chat. It can happen because of one the following reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the messages have expired on the server after 30 days not being delivered.&lt;/li&gt;
&lt;li&gt;the messages were removed when the server was restarted. We will add server redundancy later this year to avoid message loss in this case, for now if you see an indication that some messages were lost in the chat, you can check with your contact what it was.&lt;/li&gt;
&lt;li&gt;some other app error. Please notify us via chat - we will investigate possible root causes.&lt;/li&gt;
&lt;li&gt;the connection is compromised. This is very unlikely, but not an impossible scenario.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;There is more&lt;/h3&gt;
&lt;p&gt;You can discover additional features we are currently testing in Experimental Features - they will be announced later!&lt;/p&gt;
&lt;h2&gt;More information&lt;/h2&gt;
&lt;p&gt;See &lt;a href=&quot;/blog/20220112-simplex-chat-v1-released/&quot;&gt;v1 announcement&lt;/a&gt; for information on how SimpleX protects the security of the messages.&lt;/p&gt;
&lt;p&gt;Read about SimpleX design in &lt;a href=&quot;https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/&quot;&gt;whitepaper&lt;/a&gt;.&lt;/p&gt;
-->
<a href="/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements/"> sss</a>
<!-- &lt;h1&gt;SimpleX announces SimpleX Chat v3&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; Jul 11, 2022&lt;/p&gt;
&lt;h2&gt;New in version 3&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#instant-notifications-for-ios&quot;&gt;instant notifications for iOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#database-export-and-import&quot;&gt;database export and import&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#protocol-privacy-and-performance-improvements&quot;&gt;protocol privacy and performance improvements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Instant notifications for iOS&lt;/h3&gt;
&lt;p&gt;I wrote previously about &lt;a href=&quot;/blog/20220404-simplex-chat-instant-notifications/#problem---users-expect-to-be-instantly-notified-when-messages-arrive&quot;&gt;our design for iOS notifications&lt;/a&gt; - this is now released. The app will offer to migrate the database when updated, and then you need to choose notifications mode instant or periodic push notifications, or previously available periodic background refresh that does not use push notifications.&lt;/p&gt;
&lt;p&gt;To deliver the notifications to iOS devices we use our notification server, as there is a single private key that Apple issues for the app. This server has minimal amount of information about your chat activity:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it does not have the addresses of messaging queues used to send and receive messages - there is an additional address used for notification server to receive notifications from the messaging servers.&lt;/li&gt;
&lt;li&gt;notifications themselves do not include message content or contacts, even in encrypted form - they only contain end-to-end encrypted metadata about the server and the queue that has available messages - so Apple servers cannot access the information about how many contacts you have or how frequently each of them messages you - they can only see the total number of notifications your device receives.&lt;/li&gt;
&lt;li&gt;message senders do not connect to the notification server, so it cannot in any way correlate sent and received traffic across multiple devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;/img/images/20220711-notifications.png&quot; width=&quot;480&quot;&gt;
&lt;p&gt;&lt;strong&gt;Please note&lt;/strong&gt;: for periodic notifications to work the app has to be in the background - if the app is completely stopped (removed from the recent apps), it will not check the new messages and you will not receive notifications. Instant notifications work even when the app is completely stopped.&lt;/p&gt;
&lt;h3&gt;End-to-end encrypted audio/video calls&lt;/h3&gt;
&lt;p&gt;You can now call your contacts via WebRTC, connecting via SimpleX Chat relay servers or peer-to-peer, and in the near future you will be able to configure your own STUN/TURN servers used to establish the connection. The calls are end-to-end encrypted - the key is negotiated via the connection you already have with your contact in the chat, that is also used as a signalling layer for WebRTC - in most cases only three messages in total have to be sent by your and your contact&#39;s clients for the call to start, including the initial call invitation.&lt;/p&gt;
&lt;img src=&quot;/img/images/20220711-call-in-progress.png&quot; width=&quot;480&quot;&gt;
&lt;p&gt;The calls are still quite limited, especially on iOS, - for example, you cannot continue the call while the app is in the background.&lt;/p&gt;
&lt;h3&gt;Database export and import&lt;/h3&gt;
&lt;p&gt;Quite a few users asked - &lt;em&gt;how can I move my chat profile to a new device&lt;/em&gt;? SimpleX Chat v3 has a solution for that - you can now export chat database from one device and import it into another - even to another platform, e.g. you can move chat database from Android phone to iOS or to the terminal (console) client.&lt;/p&gt;
&lt;img src=&quot;/img/images/20220711-database-chat-stopped.png&quot; width=&quot;480&quot;&gt;
&lt;p&gt;Some important limitations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;you cannot run the same chat profile from two devices, neither at the same time nor in turns. You should only use the latest database version - every time you want to move it to another device you need to export a new chat archive from the device that was the latest to use it, and import it to the device where you want to use it next.&lt;/li&gt;
&lt;li&gt;we plan to add internal database encryption soon, but currently it is stored on the device without encryption, and the exported archive is also not encrypted. You should store it securely, and encrypt it if you store it in the cloud or send via email.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This feature can be useful in some other scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;managing multiple chat profiles - it&#39;s not very convenient, and a better support of multiple profiles is coming soon.&lt;/li&gt;
&lt;li&gt;share access to the same profile with other people, as long as it is not used at the same time. For that use case it may be better to run SimpleX Chat terminal client in the cloud, as we do with our public account that you can connect to via the app.&lt;/li&gt;
&lt;li&gt;preserve chat profile when you need to temporarily delete the app from your device.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Protocol privacy and performance improvements&lt;/h3&gt;
&lt;p&gt;Adding push notifications for iOS required SimpleX Messaging Protocol changes. We managed not just to keep the same level of meta-data privacy from passive observers, but to improve it - now all message meta-data that is passed from the server to the recipient is included into the same encrypted envelope as the message itself - as before, there is no identifiers or ciphertext in common inside TLS traffic between received and sent traffic of the server, and now there is no message timestamp inside TLS as well.&lt;/p&gt;
&lt;p&gt;We also improved the protocol flow for establishing bidirectional connection between two users - it is substantially faster now, consuming much less network traffic and battery. It improves the time it takes to connect to your contacts and to start delivering images and files.&lt;/p&gt;
&lt;p&gt;All these changes did not affect backward compatibility - if your contact has the previous version of the client, or you are connecting to a previous version of the server, the previous version of the protocol will be used - SimpleX has independent version negotiation in 4 protocol layers &lt;a href=&quot;/blog/20220112-simplex-chat-v1-released/#stable-protocol-implementation&quot;&gt;since v1&lt;/a&gt;, allowing us to evolve the protocols without any disruption to the users.&lt;/p&gt;
&lt;h2&gt;SimpleX platform&lt;/h2&gt;
&lt;p&gt;We are building a new platform for distributed Internet applications where privacy of the messages &lt;em&gt;and&lt;/em&gt; the network matter. &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat&quot;&gt;SimpleX Chat&lt;/a&gt; is our first application, a messaging application built on the SimpleX platform.&lt;/p&gt;
&lt;h3&gt;The first (and we believe the only) messaging platform without user identifiers of any kind - 100% private by design!&lt;/h3&gt;
&lt;p&gt;To protect identities of users and their connections, SimpleX Chat has no user identifiers visible to the servers and the network unlike any other messaging platform. Not only SimpleX doesn&#39;t use phone numbers or emails, as Signal and many other platforms, it also does not have any persistent identifiers to identify users - unlike many other messengers considered private - Session, Cwtch, Ricochet, Briar, Jami, etc., - all these platforms have global user identifiers, uniquely identifying their users and creating the risks of de-anonymising the users.&lt;/p&gt;
&lt;h3&gt;Why having users&#39; identifiers is bad for the users?&lt;/h3&gt;
&lt;p&gt;When each user has a unique identifier on the platform, even if this is just a random number, e.g. as a Session ID, it creates risks that whoever gains access to the platform data can observe how the users are connected and how many messages are transmitted between them, and then correlate this information with the existing public social networks, determining the real identities of some users. Even with the most private messengers built on top of Tor network, having a persistent identity means that if you talk to two different users via the same profile they can prove that they communicate with the same person, as they would use the same address to send messages.&lt;/p&gt;
&lt;p&gt;SimpleX platform avoids these risks by not having any user identity in its design - so even if you talk to two different people from the same chat profile, they would not be able to prove they are talking to the same person - only that user profiles look the same. And we are planning to add a feature allowing to have a different display name for each contact you connect to - quite a few users asked for it.&lt;/p&gt;
&lt;h3&gt;How does it work&lt;/h3&gt;
&lt;p&gt;Many people asked: &lt;em&gt;if SimpleX has no user identifiers, how can it deliver messages?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I wrote about it in &lt;a href=&quot;/blog/20220511-simplex-chat-v2-images-files/&quot;&gt;v2 release announcement&lt;/a&gt; and you can get more information about SimpleX platform objectives and technical design in &lt;a href=&quot;https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/&quot;&gt;the whitepaper&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;We ask you to help us pay for 3rd party security audit&lt;/h2&gt;
&lt;p&gt;I will get straight to the point: I ask you to support SimpleX Chat with donations.&lt;/p&gt;
&lt;p&gt;We are prioritizing users privacy and security - it would be impossible without your support we were lucky to have so far.&lt;/p&gt;
&lt;p&gt;We are planning a 3rd party security audit for the app, and it would hugely help us if some part of this $20000+ expense could be covered with donations.&lt;/p&gt;
&lt;p&gt;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 for 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.&lt;/p&gt;
&lt;p&gt;If you are already using SimpleX Chat, or plan to use it in the future when it has more features, please consider making a donation - it will help us to raise more funds. Donating any amount, even the price of the cup of coffee, would make a huge difference for us.&lt;/p&gt;
&lt;p&gt;It is possible to &lt;a href=&quot;https://github.com/sponsors/simplex-chat&quot;&gt;donate via GitHub&lt;/a&gt;, which is commission-free for us, or &lt;a href=&quot;https://opencollective.com/simplex-chat&quot;&gt;via OpenCollective&lt;/a&gt;, that also accepts donations in crypto-currencies, but charges a commission.&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Evgeny&lt;/p&gt;
&lt;p&gt;SimpleX Chat founder&lt;/p&gt;
-->
<a href="/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency/"> sss</a>
<!-- &lt;h1&gt;SimpleX Chat v3.1-beta is released&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; Jul 23, 2022&lt;/p&gt;
&lt;h2&gt;What&#39;s new&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;terminal app: &lt;a href=&quot;#terminall-app-access-to-messaging-servers-via-socks5-proxy--tor&quot;&gt;access to messaging servers via SOCKS5 proxy&lt;/a&gt; (e.g., Tor).&lt;/li&gt;
&lt;li&gt;mobile apps: &lt;a href=&quot;#mobile-apps-join-and-leave-chat-groups&quot;&gt;join and leave chat groups&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#optimized-battery-and-traffic-usage---up-to-90x-reduction&quot;&gt;optimized battery and traffic usage - up to 90x reduction!&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#docker-configuration-for-self-hosted-smp-servers&quot;&gt;two docker configurations for self-hosted SMP servers&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Terminall app: access to messaging servers via SOCKS5 proxy / Tor&lt;/h3&gt;
&lt;img src=&quot;/img/images/20220723-tor.jpg&quot; width=&quot;480&quot;&gt;
&lt;p&gt;While SMP protocol is focussed on protecting application-level meta-data by using pairwise connection identifiers instead of user identifiers (that are used by all other messaging platforms), there are scenarios when it is important for the users to protect their IP addresses from the servers - quite a few users have been somewhat disappointed that we didn&#39;t add it earlier.&lt;/p&gt;
&lt;p&gt;This release of terminal app supports accessing the servers via Tor, but the servers themselves are still available on their usual addresses. We are planning to add .onion addresses (v3 hidden service) to all messaging servers we provide, and the users who self-host the servers will also be able to have dual servers addresses - so that one party in the conversation can access the servers via .onion address without necessarily requiring that the other party uses Tor as well.&lt;/p&gt;
&lt;p&gt;To access SimpleX servers via Tor you need to install Tor proxy and run simplex-chat with &lt;code&gt;-x&lt;/code&gt; option. See &lt;a href=&quot;../docs/CLI/#access-messaging-servers-via-tor-beta&quot;&gt;terminal app docs&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;As this is a beta release, to install it you need to use this command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;curl -o- https://raw.githubusercontent.com/simplex-chat/simplex-chat/stable/install.sh | sh -s -- v3.1.0-beta.0
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Mobile apps: join and leave chat groups&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/img/images/20220723-group-invite.png&quot; width=&quot;330&quot;&gt; &lt;img src=&quot;/img/images/20220723-group-accept.png&quot; width=&quot;330&quot;&gt; &lt;img src=&quot;/img/images/20220723-group-leave.png&quot; width=&quot;330&quot;&gt;&lt;/p&gt;
&lt;p&gt;Groups have been supported by SimpleX Chat core for a very long time, but there was no user interface in the mobile apps to use them - users had to use chat console to create groups, add members, and accept invitations.&lt;/p&gt;
&lt;p&gt;This release allows accepting the invitations to join groups via mobile apps UI, making it much easier to create groups - only one user (a group owner) needs to use chat console, while all other groups members just need to tap a button in the UI to join or leave the group. Full group UI is coming in v3.1 in 1-2 weeks, but you can already start using groups today by installing beta-versions of mobile apps via &lt;a href=&quot;https://testflight.apple.com/join/DWuT2LQu&quot;&gt;TestFlight&lt;/a&gt;, &lt;a href=&quot;https://play.google.com/apps/testing/chat.simplex.app&quot;&gt;Google PlayStore Beta&lt;/a&gt; and &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat/releases/download/v3.1.0-beta.0/simplex.apk&quot;&gt;APK download&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To manage groups via terminal app or via chat console in the mobile apps you have to use these commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to create group: &lt;code&gt;/g &amp;lt;group_name&amp;gt; [&amp;lt;description&amp;gt;]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;to add member (admin by default): &lt;code&gt;/a &amp;lt;group_name&amp;gt; &amp;lt;contact_name&amp;gt; [owner/admin/member]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;to remove member from the group: &lt;code&gt;/rm &amp;lt;group_name&amp;gt; &amp;lt;contact_name&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Accepting group invitations, leaving and deleting groups no longer requires using console commands.&lt;/p&gt;
&lt;h3&gt;Optimized battery and traffic usage - up to 90x reduction!&lt;/h3&gt;
&lt;p&gt;To reduce battery and traffic usage this release updated SMP protocol to allow batching multiple server commands (up to 90!) into one traffic block provided both the server and the client are upgraded. It means that if you have 90 contacts (or group members) on one server, to subscribe to all messaging queues you now need to send only one 16kb block instead of ~1.5Mb of traffic (90 blocks). It also hides how many contacts you have from any attackers who observe your network.&lt;/p&gt;
&lt;p&gt;You might notice that sending commands to multiple queues in one block would allow the server to correlate that all these queues belong to the same user, even though the current server implementation we use does not do it. But even without batching, as the commands are sent via the same TCP connection, this correlation was already possible, so compared with the previous version it has no downsides.&lt;/p&gt;
&lt;p&gt;To mitigate the risk of servers correlating your messaging queues we will soon add an option to access each queue via a separate TCP connection, which will have to be used together with access via Tor (as otherwise the servers would still see the same IP address). While it will increase battery and traffic consumption, it will also provide the highest level of privacy.&lt;/p&gt;
&lt;h3&gt;Docker configuration for self-hosted SMP servers&lt;/h3&gt;
&lt;p&gt;When we released SimpleX Chat v3 two weeks ago many users wanted to host messaging servers in docker containers. So, we are now offering &lt;a href=&quot;https://github.com/simplex-chat/simplexmq/tree/stable/scripts/docker&quot;&gt;two versions of docker configurations&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fast and convenient - it downloads SMP server binary from GitHub.&lt;/li&gt;
&lt;li&gt;more secure - it builds SMP server from the source code.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let us know how it works for you!&lt;/p&gt;
&lt;h2&gt;SimpleX platform&lt;/h2&gt;
&lt;p&gt;We are building a new platform for distributed Internet applications where privacy of the messages &lt;em&gt;and&lt;/em&gt; the network matter. &lt;a href=&quot;https://github.com/simplex-chat/simplex-chat&quot;&gt;SimpleX Chat&lt;/a&gt; is our first application, a messaging application built on the SimpleX platform.&lt;/p&gt;
&lt;h3&gt;The first (and the only?) messaging platform without user identifiers of any kind - 100% private by design!&lt;/h3&gt;
&lt;p&gt;To protect identities of users and their connections, instead of user identifiers visible to the servers and/or the network (that are used by all other messaging platforms), SimpleX Chat uses &lt;a href=&quot;https://csrc.nist.gov/glossary/term/Pairwise_Pseudonymous_Identifier&quot;&gt;pairwise identifiers&lt;/a&gt; of connections between the users there are two queues in each connection, each queue having 2 different identifiers to send and to receive the messages. It increases the number of used identifiers to the square of the number of users, making it more difficult (or impossible) to determine who is talking to whom. I &lt;a href=&quot;/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements/#why-having-users-identifiers-is-bad-for-the-users&quot;&gt;wrote previously&lt;/a&gt; why it is bad for the users&#39; privacy to have any identifiers, even random numbers, associated with their profiles.&lt;/p&gt;
&lt;h3&gt;If SimpleX has no user identifiers, how can it deliver messages?&lt;/h3&gt;
&lt;p&gt;I wrote about it in &lt;a href=&quot;/blog/20220511-simplex-chat-v2-images-files/&quot;&gt;v2 release announcement&lt;/a&gt; and you can get more information about SimpleX platform objectives and technical design in &lt;a href=&quot;https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr/&quot;&gt;the whitepaper&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Privacy: technical details and limitations&lt;/h3&gt;
&lt;p&gt;SimpleX design follows &amp;quot;defence in depth&amp;quot; security principles having multiple overlapping defensive mechanisms to protect users privacy and security:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TLS transport with server identity validation and channel binding, limited to the most secure cryptographic algorithms.&lt;/li&gt;
&lt;li&gt;Three levels of encryption that both protect message content and meta-data, preventinc trafic correlation even if TLS is compromised:
&lt;ul&gt;
&lt;li&gt;end-to-end encryption in each messaging queue.&lt;/li&gt;
&lt;li&gt;end-to-end encryption of the conversation using double-ratchet algorithms, that provides OTR messaging with forward secrecy and break-in recovery.&lt;/li&gt;
&lt;li&gt;additional encryption layer between the server and message recipient, to prevent traffic correlation by ciphertext or any identifiers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Four levels of message padding to prevent any attack based on the content size - the TLS transport block is padded to a fixed 16kb size, and each of 3 encrypted envelopes is padded to a constant size before encryption as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What we plan to add soon to further improve privacy and security:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;message queue rotation, so that pairwise identifiers become temporary, and your conversations move from server to server automatically.&lt;/li&gt;
&lt;li&gt;access to the messaging servers via Tor v3 hidden services.&lt;/li&gt;
&lt;li&gt;message mixing - adding latencies to message delivery, to protect against traffic correlation by message time.&lt;/li&gt;
&lt;li&gt;using Tor v3 hidden service addresses for messaging servers.&lt;/li&gt;
&lt;li&gt;passphrase-based local database encryption.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SimpleX Chat &lt;a href=&quot;../README/#privacy-technical-details-and-limitations&quot;&gt;README page&lt;/a&gt; has more details about it.&lt;/p&gt;
&lt;h2&gt;We ask you to help us pay for 3rd party security audit&lt;/h2&gt;
&lt;p&gt;I will get straight to the point: I ask you to support SimpleX Chat with donations.&lt;/p&gt;
&lt;p&gt;We are prioritizing users privacy and security - it would be impossible without your support we were lucky to have so far.&lt;/p&gt;
&lt;p&gt;We are planning a 3rd party security audit for the app, and it would hugely help us if some part of this $20000+ expense could be covered with donations.&lt;/p&gt;
&lt;p&gt;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 for 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.&lt;/p&gt;
&lt;p&gt;If you are already using SimpleX Chat, or plan to use it in the future when it has more features, please consider making a donation - it will help us to raise more funds. Donating any amount, even the price of the cup of coffee, would make a huge difference for us.&lt;/p&gt;
&lt;p&gt;It is possible to &lt;a href=&quot;https://github.com/sponsors/simplex-chat&quot;&gt;donate via GitHub&lt;/a&gt;, which is commission-free for us, or &lt;a href=&quot;https://opencollective.com/simplex-chat&quot;&gt;via OpenCollective&lt;/a&gt;, that also accepts donations in crypto-currencies, but charges a commission.&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Evgeny&lt;/p&gt;
&lt;p&gt;SimpleX Chat founder&lt;/p&gt;
-->
</body>
</html>

View File

@@ -1,5 +1,5 @@
/*
! tailwindcss v3.1.6 | MIT License | https://tailwindcss.com
! tailwindcss v3.1.7 | MIT License | https://tailwindcss.com
*/
/*

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 KiB

BIN
img/images/20220723-tor.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
img/images/connection.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

BIN
img/images/files.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 KiB

BIN
img/images/groups.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 332 KiB

12
img/images/logo.svg Normal file
View File

@@ -0,0 +1,12 @@
<svg width="815" height="233" viewBox="0 0 815 233" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M40.5683 66.9141C43.9954 66.9141 47.376 67.2323 50.7104 67.8687C54.0448 68.5051 57.2403 69.3234 60.2968 70.3235C63.3533 71.3236 66.2014 72.4601 68.8411 73.7329C71.4809 75.0058 73.9122 76.2786 76.1351 77.5515L66.132 96.0987L65.9952 95.9474C65.6001 95.5596 64.6732 94.9282 63.2144 94.0531C61.5472 93.053 59.4632 92.0074 56.9624 90.9164C54.4616 89.8254 51.7293 88.8708 48.7654 88.0525C45.8015 87.2342 42.8376 86.8251 39.8737 86.8251C31.723 86.8251 27.6476 89.5072 27.6476 94.8713C27.6476 96.5079 28.0876 97.8716 28.9675 98.9627C29.8474 100.054 31.1441 101.031 32.8576 101.895C34.5711 102.758 36.7245 103.554 39.318 104.281C41.9114 105.009 44.9216 105.827 48.3486 106.736C53.0723 108.009 57.3329 109.395 61.1304 110.896C64.9279 112.396 68.1465 114.26 70.7862 116.487C73.4259 118.715 75.4636 121.419 76.8993 124.602C78.3349 127.784 79.0527 131.602 79.0527 136.057C79.0527 141.512 78.0107 146.126 75.9267 149.899C73.8427 153.673 71.0872 156.718 67.6602 159.037C64.2332 161.355 60.2968 163.037 55.8509 164.083C51.4051 165.128 46.8203 165.651 42.0966 165.651C38.4844 165.651 34.7795 165.378 30.982 164.833C27.1845 164.287 23.4796 163.492 19.8674 162.446C16.2551 161.401 12.7587 160.15 9.37796 158.696C5.99726 157.241 2.87128 155.559 0 153.65L10.0032 134.148L10.1812 134.338C10.6877 134.825 11.8324 135.625 13.6154 136.739C15.6531 138.012 18.177 139.285 21.1872 140.558C24.1974 141.83 27.555 142.967 31.2599 143.967C34.9647 144.967 38.7159 145.467 42.5134 145.467C50.5715 145.467 54.6006 143.058 54.6006 138.239C54.6006 136.421 53.9985 134.921 52.7944 133.739C51.5903 132.557 49.9231 131.489 47.7928 130.534C45.6625 129.579 43.1386 128.693 40.221 127.875C37.3034 127.056 34.1311 126.147 30.7041 125.147C26.1657 123.783 22.2292 122.306 18.8948 120.715C15.5605 119.124 12.805 117.283 10.6284 115.192C8.45174 113.1 6.83086 110.691 5.76571 107.964C4.70056 105.236 4.16798 102.054 4.16798 98.4171C4.16798 93.3257 5.14051 88.8253 7.08557 84.9158C9.03063 81.0063 11.6703 77.7106 15.0047 75.0285C18.3391 72.3464 22.2061 70.3235 26.6056 68.9597C31.0051 67.5959 35.6594 66.9141 40.5683 66.9141ZM131.47 67.7323V164.56H108.685V67.7323H131.47ZM191.39 67.7323L216.954 118.328L242.657 67.7323H267.248V164.56H244.463V106.6L223.067 148.74H210.841L189.445 106.6V164.56H166.66V67.7323H191.39ZM419.925 67.7323V144.922H467.718V164.56H397.14V67.7323H419.925ZM560.072 67.7323V87.3706H514.78V106.191H553.681V124.329H514.78V144.922H561.323V164.56H491.995V67.7323H560.072ZM341.818 67.7323L343.378 67.7677C347.5 67.9563 351.31 68.8991 354.809 70.5962C358.745 72.5055 362.126 75.0058 364.951 78.097C367.776 81.1882 369.999 84.6885 371.62 88.598C373.24 92.5075 374.051 96.4624 374.051 100.463C374.051 104.736 373.287 108.827 371.758 112.737C370.23 116.646 368.1 120.147 365.368 123.238C362.635 126.329 359.324 128.784 355.434 130.602C351.976 132.218 348.189 133.116 344.072 133.296L342.513 133.33H322.507V164.56H299.722V67.7323H341.818ZM340.29 87.3706H322.507V113.828H341.124C343.81 113.828 346.125 112.691 348.07 110.418C350.016 108.145 350.988 104.827 350.988 100.463C350.988 98.1898 350.687 96.2351 350.085 94.5986C349.483 92.9621 348.672 91.5983 347.654 90.5073C346.635 89.4163 345.477 88.6207 344.18 88.1207C342.884 87.6206 341.587 87.3706 340.29 87.3706Z" fill="#062D56"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M642.628 136.08L680.309 173.782L699.513 154.567L699.506 154.561L737.917 116.134L700.236 78.4367L700.243 78.4334L681.404 59.5826L642.993 98.014L642.99 98.0104L681.401 59.5829L643.725 21.881L662.929 2.6652L700.605 40.3673L739.016 1.93511L757.855 20.7859L719.443 59.2176L757.121 96.918L795.533 58.4875L814.373 77.3382L775.959 115.768L813.643 153.471L794.439 172.687L756.756 134.984L718.348 173.415L756.031 211.119L736.827 230.335L699.144 192.63L660.74 231.065L641.901 212.214L680.306 173.78L642.625 136.083L642.628 136.08Z" fill="#07B4B9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M604.77 59.7651L642.446 97.4664L680.856 59.035L699.696 77.8858L661.285 116.317L698.966 154.019L679.762 173.235L642.081 135.532L603.675 173.965L584.836 155.114L623.243 116.682L585.566 78.9809L604.77 59.7651Z" fill="#062D56"/>
</g>
<defs>
<clipPath id="clip0">
<rect width="815" height="233" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1,12 @@
<svg width="830" height="122" viewBox="0 90 830 122" fill="none" xmlns="http://www.w3.org/2000/svg">
<g>
<rect width="830" height="212" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M 166.2 130.5 C 167.6 130.5 169.1 130.6 170.5 130.9 C 171.9 131.2 173.2 131.5 174.5 132 C 175.8 132.4 177 132.9 178.1 133.4 C 179.3 133.9 180.3 134.5 181.2 135 L 177 142.9 L 176.9 142.8 C 176.8 142.6 176.4 142.4 175.8 142 C 175 141.6 174.2 141.1 173.1 140.7 C 172.1 140.2 170.9 139.8 169.6 139.5 C 168.4 139.1 167.1 138.9 165.9 138.9 C 162.4 138.9 160.7 140.1 160.7 142.3 C 160.7 143 160.9 143.6 161.3 144.1 C 161.6 144.5 162.2 145 162.9 145.3 C 163.6 145.7 164.5 146 165.6 146.3 C 166.7 146.6 168 147 169.5 147.4 C 171.5 147.9 173.3 148.5 174.9 149.1 C 176.5 149.8 177.8 150.6 179 151.5 C 180.1 152.4 180.9 153.6 181.5 154.9 C 182.2 156.3 182.5 157.9 182.5 159.8 C 182.5 162.1 182 164 181.1 165.6 C 180.3 167.2 179.1 168.5 177.6 169.5 C 176.2 170.5 174.5 171.2 172.6 171.6 C 170.8 172.1 168.8 172.3 166.8 172.3 C 165.3 172.3 163.7 172.2 162.1 172 C 160.5 171.7 158.9 171.4 157.4 171 C 155.9 170.5 154.4 170 153 169.4 C 151.5 168.7 150.2 168 149 167.2 L 153.2 159 L 153.3 159.1 C 153.5 159.3 154 159.6 154.8 160.1 C 155.6 160.6 156.7 161.1 158 161.7 C 159.2 162.2 160.7 162.7 162.2 163.1 C 163.8 163.6 165.4 163.8 167 163.8 C 170.4 163.8 172.1 162.7 172.1 160.7 C 172.1 159.9 171.9 159.3 171.3 158.8 C 170.8 158.3 170.1 157.8 169.2 157.4 C 168.3 157 167.3 156.7 166 156.3 C 164.8 156 163.4 155.6 162 155.2 C 160.1 154.6 158.4 154 157 153.3 C 155.6 152.6 154.4 151.8 153.5 150.9 C 152.6 150.1 151.9 149 151.4 147.9 C 151 146.7 150.8 145.4 150.8 143.8 C 150.8 141.7 151.2 139.8 152 138.1 C 152.8 136.5 153.9 135.1 155.3 133.9 C 156.8 132.8 158.4 132 160.3 131.4 C 162.1 130.8 164.1 130.5 166.2 130.5 Z M 204.6 130.9 V 171.8 H 195 V 130.9 H 204.6 Z M 230 130.9 L 240.8 152.3 L 251.7 130.9 H 262.1 V 171.8 H 252.5 V 147.3 L 243.4 165.1 H 238.2 L 229.2 147.3 V 171.8 H 219.5 V 130.9 H 230 Z M 326.7 130.9 V 163.5 H 347 V 171.8 H 317.1 V 130.9 H 326.7 Z M 386 130.9 V 139.2 H 366.9 V 147.1 H 383.3 V 154.8 H 366.9 V 163.5 H 386.6 V 171.8 H 357.2 V 130.9 H 386 Z M 293.7 130.9 L 294.3 130.9 C 296.1 130.9 297.7 131.3 299.2 132.1 C 300.8 132.9 302.3 133.9 303.5 135.2 C 304.7 136.6 305.6 138 306.3 139.7 C 307 141.3 307.3 143 307.3 144.7 C 307.3 146.5 307 148.3 306.3 149.9 C 305.7 151.6 304.8 153 303.6 154.4 C 302.5 155.7 301.1 156.7 299.4 157.5 C 298 158.2 296.4 158.5 294.6 158.6 L 294 158.6 H 285.5 V 171.8 H 275.9 V 130.9 H 293.7 Z M 293 139.2 H 285.5 V 150.4 H 293.4 C 294.5 150.4 295.5 149.9 296.3 148.9 C 297.1 148 297.5 146.6 297.5 144.7 C 297.5 143.7 297.4 142.9 297.2 142.2 C 296.9 141.5 296.6 141 296.1 140.5 C 295.7 140 295.2 139.7 294.7 139.5 C 294.1 139.3 293.6 139.2 293 139.2 Z" fill="#062d56"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M 421 159.8 L 436.9 175.8 L 445.1 167.6 L 445.1 167.6 L 461.3 151.3 L 445.4 135.4 L 445.4 135.4 L 437.4 127.4 L 421.1 143.7 L 421.1 143.7 L 437.4 127.4 L 421.4 111.4 L 429.6 103.3 L 445.5 119.3 L 461.8 103 L 469.7 111 L 453.5 127.3 L 469.4 143.2 L 485.7 126.9 L 493.7 134.9 L 477.4 151.2 L 493.4 167.2 L 485.2 175.3 L 469.3 159.3 L 453 175.6 L 469 191.6 L 460.8 199.7 L 444.9 183.7 L 428.6 200 L 420.7 192 L 436.9 175.7 L 421 159.8 L 421 159.8 Z" fill="#07b4b9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M 405 127.5 L 420.9 143.4 L 437.2 127.2 L 445.1 135.2 L 428.9 151.4 L 444.8 167.4 L 436.7 175.5 L 420.7 159.6 L 404.5 175.8 L 396.5 167.8 L 412.8 151.6 L 396.8 135.6 L 405 127.5 Z" fill="#062d56"/>
<path d="M 499.9 151.1 C 499.9 148.6 500.3 146.1 501.3 143.7 C 502.2 141.3 503.6 139 505.4 137.1 C 507.3 135.1 509.5 133.5 512.1 132.3 C 514.7 131.1 517.7 130.5 521 130.5 C 524.9 130.5 528.4 131.4 531.3 133 C 534.3 134.7 536.5 136.9 537.9 139.6 L 529.2 145.7 C 528.7 144.4 528 143.3 527 142.6 C 526.1 141.9 525.1 141.4 523.9 141.1 C 522.8 140.8 521.8 140.6 520.7 140.6 C 518.6 140.6 516.8 141.2 515.4 142.2 C 514 143.3 513 144.7 512.4 146.4 C 511.7 148 511.4 149.7 511.4 151.4 C 511.4 153.3 511.7 155.1 512.5 156.8 C 513.3 158.5 514.3 159.8 515.7 160.9 C 517.2 161.9 518.9 162.4 520.9 162.4 C 521.9 162.4 523 162.2 524 161.9 C 525.1 161.6 526.1 161 527 160.3 C 527.9 159.6 528.6 158.6 529 157.3 L 538.3 162.9 C 537.5 164.9 536.1 166.6 534.2 168 C 532.3 169.5 530.2 170.6 527.8 171.3 C 525.4 172.1 523 172.5 520.6 172.5 C 517.6 172.5 514.7 171.9 512.2 170.7 C 509.7 169.4 507.5 167.8 505.6 165.8 C 503.8 163.7 502.4 161.4 501.4 158.9 C 500.4 156.3 499.9 153.7 499.9 151.1 Z" fill="#ffc513"/>
<path d="M 588.2 130.8 V 172.1 H 576.8 V 155.9 H 563 V 172.1 H 551.6 V 130.8 H 563 V 146 H 576.8 V 130.8 H 588.2 Z" fill="#ffc513"/>
<path d="M 614.1 130.8 H 626.8 L 639.9 172.1 H 628.4 L 625.9 164 H 614.9 L 612.5 172.1 H 600.9 L 614.1 130.8 Z M 624.1 156.4 L 620.4 141.9 L 616.6 156.4 H 624.1 Z" fill="#ffc513"/>
<path d="M 681 140.7 H 669.1 V 172.1 H 657.8 V 140.7 H 645.9 V 130.8 H 681 V 140.7 Z" fill="#ffc513"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 MiB

View File

@@ -1,12 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>