<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>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>
<p>Originally published at <a href="https://www.reddit.com/r/haskell/comments/jg6uh4/simplex_chat/">https://www.reddit.com/r/haskell/comments/jg6uh4/simplex_chat/</a></p>
<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>We’ve 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>
<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 don’t have to - the demo SMP server to relay your messages is available at <a href="http://smp1.simplex.im:5223/">smp1.simplex.im:5223</a> (pre-configured in the client).</li>
</ul>
<h2 id="we-need-your-help" tabindex="-1">We need your help!</h2>
<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>
<p>Originally published at <a href="https://www.reddit.com/r/haskell/comments/naw6lz/simplex_chat_prototype_terminal_ui_made_in_haskell/">https://www.reddit.com/r/haskell/comments/naw6lz/simplex_chat_prototype_terminal_ui_made_in_haskell/</a></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 id="what-is-simplex" tabindex="-1">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 id="whats-new-in-v05" tabindex="-1">What's new in v0.5?</h2>
<p>We're exicted to announce that SimpleX Chat now supports group chat and file transfer!</p>
<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>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>
<h2 id="were-always-looking-for-help" tabindex="-1">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>
<p>Originally published at <a href="https://www.reddit.com/r/selfhosted/comments/poal79/simplex_chat_an_opensource_decentralized_chat/">https://www.reddit.com/r/selfhosted/comments/poal79/simplex_chat_an_opensource_decentralized_chat/</a></p>
<p><strong>Published:</strong> Dec 08, 2021</p>
<h2 id="simplex-chat-is-the-first-chat-platform-that-is-100percent-private-by-design-simplex-no-access-to-your-connections-graph" tabindex="-1">Simplex Chat is the first chat platform that is 100% private by design - SimpleX no access to your connections graph</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 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 id="what-is-simplex" tabindex="-1">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 id="whats-new-in-v05" tabindex="-1">What's new in v0.5?</h2>
<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 id="we-need-your-help" tabindex="-1">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>
<p>Originally published at <a href="https://www.reddit.com/r/haskell/comments/rc0xkn/simplex_chat_the_first_chat_platform_that_is_100/">https://www.reddit.com/r/haskell/comments/rc0xkn/simplex_chat_the_first_chat_platform_that_is_100/</a></p>
<p><strong>Published:</strong> Jan 12, 2022</p>
<h2 id="the-most-private-and-secure-chat-and-application-platform" tabindex="-1">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 id="what-is-simplex" tabindex="-1">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 id="whats-new-in-v1" tabindex="-1">What's new in v1?</h2>
<p>All releases from v1 onwards will be forwards and backwards compatible.</p>
<h3 id="message-encryption-has-been-completely-re-engineered-to-provide-forward-secrecy-and-recovery-from-break-in" tabindex="-1">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 id="improved-user-and-server-authentication-and-transport" tabindex="-1">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 id="changes-in-protocol-encoding" tabindex="-1">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 id="learn-more-about-simplex" tabindex="-1">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.md">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 id="we-look-forward-to-you-using-it" tabindex="-1">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>
</content>
</entry>
<entry>
<title>SimpleX announces SimpleX Chat public beta for iOS</title>
<content xml:lang="en" type="html"><h1 id="simplex-announces-simplex-chat-public-beta-for-ios" tabindex="-1">SimpleX announces SimpleX Chat public beta for iOS</h1>
<p><strong>Published:</strong> Feb 14, 2022</p>
<h2 id="private-and-secure-chat-and-application-platform-public-beta-is-now-available-for-iphones-with-ios-15" tabindex="-1">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>
<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://simplex.chat/blog/20220112-simplex-chat-v1-released.html">v1 announcement</a>.</p>
<h2 id="join-our-public-beta" tabindex="-1">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 id="what-is-simplex" tabindex="-1">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.md">in SimpleX platform overview</a>.</p>
</content>
</entry>
<entry>
<title>SimpleX announces SimpleX Chat mobile apps for iOS and Android</title>
<content xml:lang="en" type="html"><h1 id="simplex-announces-simplex-chat-mobile-apps-for-ios-and-android" tabindex="-1">SimpleX announces SimpleX Chat mobile apps for iOS and Android</h1>
<p><strong>Published:</strong> March 8, 2022</p>
<h2 id="simplex-chat-is-the-first-chat-platform-that-is-100percent-private-by-design-it-has-no-access-to-your-connections-graph" tabindex="-1">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/simplex-chat/releases/latest/download/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 id="what-is-simplex" tabindex="-1">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.md">in SimpleX platform overview</a>.</p>
<h2 id="why-we-are-building-it" tabindex="-1">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 id="huge-thanks-to-our-testers" tabindex="-1">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 id="its-not-all-new-our-core-code-has-been-used-for-a-long-time-by-a-few-thousand-people-in-our-terminal-app" tabindex="-1">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>
<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://simplex.chat/blog/20220112-simplex-chat-v1-released.html">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 id="install-the-apps-and-make-a-private-connection" tabindex="-1">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 id="new-features-and-improvements-that-are-coming-soon" tabindex="-1">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>
</content>
</entry>
<entry>
<title>Instant notifications for SimpleX Chat mobile apps</title>
<content xml:lang="en" type="html"><h1 id="instant-notifications-for-simplex-chat-mobile-apps" tabindex="-1">Instant notifications for SimpleX Chat mobile apps</h1>
<p><strong>Published:</strong> April 04, 2022</p>
<h2 id="simplex-chat-is-the-first-chat-platform-that-is-100percent-private-by-design-it-has-no-access-to-your-connections" tabindex="-1">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://simplex.chat/blog/20220308-simplex-chat-mobile-apps.html">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>
<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 id="install-the-apps-and-make-a-private-connection" tabindex="-1">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 id="why-we-are-doing-it" tabindex="-1">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 id="problem-users-expect-to-be-instantly-notified-when-messages-arrive" tabindex="-1">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 id="why-cant-we-just-do-what-messenger-x-does" tabindex="-1">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 id="weve-cracked-it-for-android" tabindex="-1">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/simplex-chat/releases/latest/download/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 id="our-ios-approach-has-one-trade-off" tabindex="-1">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://simplex.chat/blog/20220112-simplex-chat-v1-released.html">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
<content xml:lang="en" type="html"><h1 id="simplex-chat-v20-sending-images-and-files-in-mobile-apps" tabindex="-1">SimpleX Chat v2.0 - sending images and files in mobile apps</h1>
<p><strong>Published:</strong> May 11, 2022</p>
<h2 id="new-in-version-20-sending-images-and-files-privately" tabindex="-1">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 id="the-first-messaging-platform-without-user-identifiers" tabindex="-1">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.md">SimpleX whitepaper</a>.</p>
<h2 id="how-to-connect-with-your-contacts-in-simplex-chat" tabindex="-1">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://simplex.chat/images/conversation.png" alt="Make a private connection" width="594" height="360" />
<p><strong>Published:</strong> May 24, 2022</p>
<h2 id="new-in-version-21-clearing-conversations-without-deleting-contacts" tabindex="-1">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>See <a href="https://simplex.chat/blog/20220112-simplex-chat-v1-released.html">v1 announcement</a> for information on how SimpleX protects the security of the messages.</p>
<p>See <a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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.md">whitepaper</a>.</p>
</content>
</entry>
<entry>
<title>SimpleX Chat v2.2 - the new privacy and security features</title>
<content xml:lang="en" type="html"><h1 id="simplex-chat-v22-the-new-privacy-and-security-features" tabindex="-1">SimpleX Chat v2.2 - the new privacy and security features</h1>
<p><strong>Published:</strong> June 4, 2022</p>
<p>See <a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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 platform, has no identity keys or any numbers that identify its users.</p>
<h2 id="new-privacy-and-security-settings-in-version-22" tabindex="-1">New Privacy and Security settings in version 2.2</h2>
<h3 id="protect-your-chats" tabindex="-1">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 id="save-data-and-avoid-sharing-you-are-online" tabindex="-1">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 id="avoid-visiting-websites-of-the-links-you-send" tabindex="-1">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 id="identify-any-lost-messages-in-the-chat" tabindex="-1">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 id="there-is-more" tabindex="-1">There is more</h3>
<p>You can discover additional features we are currently testing in Experimental Features - they will be announced later!</p>
<p>See <a href="https://simplex.chat/blog/20220112-simplex-chat-v1-released.html">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.md">whitepaper</a>.</p>
</content>
</entry>
<entry>
<title>SimpleX announces SimpleX Chat v3 &mdash; with encrypted calls and iOS push notifications</title>
<h2 id="new-in-version-3" tabindex="-1">New in version 3</h2>
<ul>
<li><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#instant-notifications-for-ios">instant notifications for iOS</a></li>
<li><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#database-export-and-import">database export and import</a></li>
<li><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#protocol-privacy-and-performance-improvements">protocol privacy and performance improvements</a></li>
</ul>
<h3 id="instant-notifications-for-ios" tabindex="-1">Instant notifications for iOS</h3>
<p>I wrote previously about <a href="https://simplex.chat/blog/20220404-simplex-chat-instant-notifications.html#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>
<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>
<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>
<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 id="database-export-and-import" tabindex="-1">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>
<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 id="protocol-privacy-and-performance-improvements" tabindex="-1">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="https://simplex.chat/blog/20220112-simplex-chat-v1-released.html#stable-protocol-implementation">since v1</a>, allowing us to evolve the protocols without any disruption to the users.</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 messaging application built on the SimpleX platform.</p>
<h3 id="the-first-and-we-believe-the-only-messaging-platform-without-user-identifiers-of-any-kind-100percent-private-by-design" tabindex="-1">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 id="why-having-users-identifiers-is-bad-for-the-users" tabindex="-1">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 id="how-does-it-work" tabindex="-1">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="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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.md">the whitepaper</a>.</p>
<h2 id="we-ask-you-to-help-us-pay-for-3rd-party-security-audit" tabindex="-1">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>
</content>
</entry>
<entry>
<title>SimpleX Chat v3.1-beta is released &mdash; improved battery/traffic usage</title>
<li>terminal app: <a href="https://simplex.chat/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html#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="https://simplex.chat/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html#mobile-apps-join-and-leave-chat-groups">join and leave chat groups</a>.</li>
<li><a href="https://simplex.chat/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html#optimized-battery-and-traffic-usage---up-to-90x-reduction">optimized battery and traffic usage - up to 90x reduction!</a>.</li>
<li><a href="https://simplex.chat/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html#docker-configuration-for-self-hosted-smp-servers">two docker configurations for self-hosted SMP servers</a>.</li>
</ul>
<h3 id="terminall-app-access-to-messaging-servers-via-socks5-proxy-tor" tabindex="-1">Terminall app: access to messaging servers via SOCKS5 proxy / Tor</h3>
<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="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/CLI.md#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 id="mobile-apps-join-and-leave-chat-groups" tabindex="-1">Mobile apps: join and leave chat groups</h3>
<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/latest/download/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>
<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 id="optimized-battery-and-traffic-usage-up-to-90x-reduction" tabindex="-1">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 id="docker-configuration-for-self-hosted-smp-servers" tabindex="-1">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>
<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 id="the-first-and-the-only-messaging-platform-without-user-identifiers-of-any-kind-100percent-private-by-design" tabindex="-1">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="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#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 id="if-simplex-has-no-user-identifiers-how-can-it-deliver-messages" tabindex="-1">If SimpleX has no user identifiers, how can it deliver messages?</h3>
<p>I wrote about it in <a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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.md">the whitepaper</a>.</p>
<h3 id="privacy-technical-details-and-limitations" tabindex="-1">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="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#privacy-technical-details-and-limitations">README page</a> has more details about it.</p>
<h2 id="we-ask-you-to-help-us-pay-for-3rd-party-security-audit" tabindex="-1">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>
</content>
</entry>
<entry>
<title>SimpleX Chat v3.1 is released &mdash; with secret groups and server access via Tor</title>
<content xml:lang="en" type="html"><h1 id="simplex-chat-v31-is-released-with-secret-groups-and-server-access-via-tor" tabindex="-1">SimpleX Chat v3.1 is released - with secret groups and server access via Tor</h1>
<p><strong>Published:</strong> Aug 8, 2022</p>
<li><a href="https://simplex.chat/blog/20220808-simplex-chat-v3.1-chat-groups.html#access-messaging-servers-via-tor">access to messaging servers via Tor</a></li>
<li><a href="https://simplex.chat/blog/20220808-simplex-chat-v3.1-chat-groups.html#other-changes-since-v3">other changes since v3</a>:
<ul>
<li>optimized battery and traffic usage - up to 90x reduction!</li>
<li>two docker configurations for self-hosted SMP servers</li>
<p>It's been <a href="https://simplex.chat/blog/20210914-simplex-chat-v0.4-released.html">nearly a year</a> since the users of SimpleX Chat terminal app started experimenting with the groups, and now it is available to mobile app users as well. Many bugs were fixed, the stability was improved, but there are both the features we need to add and the bugs we need to fix to make groups more useful - we really look forward to your feedback. You can send any suggestions via the app by choosing <code>Chat with the developers</code> via app Settings (or using <code>/simplex</code> command in the terminal app) – this would connect you to SimpleX team via its <a href="https://simplex.chat/contact#/?v=1&amp;smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23MCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%3D">fixed chat address</a>.</p>
<p>SimpleX network is decentralized, so how do groups work? Unlike Matrix or Signal that host the group profile and the list of group members on their servers, SimpleX servers have no information about the group's existence - only its members do. SimpleX network does not assign any globally unique identifiers to the group, there is only a local database identifier and the list of members stored on members' devices. A user has an independent connection to each member in a group. When a user sends a message to the group, the app sends this message independently to each member. You can read more about how groups work in <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/simplex-chat.md#sub-protocol-for-chat-groups">SimpleX Chat Protocol</a>.</p>
<p>But how can it scale, you might ask? It simply won't, and the current design for the groups is only suitable for relatively small groups of people who know each other well, definitely not larger than few hundred members – this design prioritized privacy and security of the group over its size or performance. For example, to send a message to the group of 100 members a user would need to send a total of ~1.6mb of data (as each message uses a fixed size block of 16kb). And if you were to send a 1mb file then it would also require sending it 100 times (provided each member accepts it).</p>
<p>What if you need to send many large files to group members? We will be developing a file hosting server where the users will be able to upload the file (or image) once, and only send the file link and credentials to all group members, without the need to send the actual file. A small hosting quota will be available to all users for free, paid for by donations, and for larger files or to increase the total quota the users would either have to pay a small hosting cost or to self-host this server – it will be available as an open-source code.</p>
<p>What if you need to have a large group - e.g. 100,000 members or more? We will be introducing SimpleX channels later this year, that can be both public and private. These channels would require a server to host them, either provided by SimpleX Chat or self-hosted - same as for a website. If this is a public channel it would be optionally accessible via the web browser as well, and it will be possible to embed it into any webpage.</p>
<p>Other group improvements we will add soon:</p>
<ul>
<li>manage notifications in each group independently.</li>
<li>search for messages - it is useful for direct conversations too, but more important for groups.</li>
</ul>
<h3 id="access-messaging-servers-via-tor" tabindex="-1">Access messaging servers via Tor</h3>
<p>SimpleX protocols are focussed on protecting application-level meta-data – they don't have any user identifiers used by all other messaging platforms, instead relying on pairwise connection identifiers.</p>
<p>But there are scenarios when users need to protect their IP addresses from the servers and any network observers – this is best done by using Tor to access any network services.</p>
<p>This release allows to access SimpleX messaging servers via Tor on all platforms:</p>
<ul>
<li>terminal app beta supported it for a couple weeks now: to access SimpleX servers via Tor you need to install Tor proxy and run simplex-chat with <code>-x</code> option. See <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/CLI.md#access-messaging-servers-via-tor-beta">terminal app docs</a> for more information.</li>
<li>Android app supports access via Tor using Orbot SOCKS proxy. Once you install and start Orbot, you need to enable <code>Network &amp; Servers / Use SOCKS proxy</code> setting in the app to access SimpleX servers via Tor.</li>
<li>iOS app can also be used with Orbot iOS app (that is installed as a system-wide VPN provider). The only setting you might need to change is to increase network timeouts in the app - to do that you have to enable <code>Developer tools</code>, and then chose <code>Network &amp; Servers / Advanced network settings / Set timeouts for proxy</code>.</li>
</ul>
<p>Currently all servers are accessed via their public Internet addresses, and while users can self-host messaging servers on .onion addresses (as v3 hidden services), it would require both connected contacts to use Tor. We are planning to add support for dual server addresses very soon, to allow the same server to be accessed both via its public Internet address and via .onion address, so that users can access servers without exiting Tor (via .onion address), but their contacts can access the same servers without using Tor.</p>
<p>To reduce traffic on slow networks we added network access settings. To use these settings, you need to first enable <code>Developer tools</code> and then choose <code>Network &amp; Servers / Advanced network settings</code>:</p>
<ul>
<li>if your connections to the servers are unstable, and you frequently see the spinners in the list of chats, please increase the connection and protocol timeouts - it should reduce the traffic, but it may also make the app a bit slower when your Internet connection is slow.</li>
<li>if your connection to the servers appears stable, but the traffic usage is high, please try disabling TCP keep-alive setting or increasing keep-alive idle period (<code>TCP_KEEP_IDLE</code>) and interval (<code>TCP_KEEP_INTVL</code>).</li>
</ul>
<p>Once we investigated how these settings affect traffic and user experience we will simplify them - huge thanks to everyone testing them and reporting any traffic issues.</p>
<p>Many users asked to allow customizing the app, this is just a start - you can now choose either light or dark icon option via <code>Appearance</code> settings.</p>
<p>More options to customize the app are coming - please let us know what are the most important.</p>
<p>The <a href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/">low level SimpleX protocols</a> were published long time ago, and updated to reflect the evolution of the protocols, the high level chat protocol was not published before. The reason for that was to allow us to iterate it quickly, without committing to any of the decisions.</p>
<p>This is the <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/simplex-chat.md">first draft of SimpleX Chat Protocol</a> - let us know any questions or suggestions.</p>
<h3 id="other-changes-since-v3" tabindex="-1">Other changes since v3</h3>
<p>Since v3 release we also optimized battery and traffic usage - with up to 90x traffic reduction in some cases – and published two docker configurations for self-hosted SMP servers. Read more about it in the previous <a href="https://simplex.chat/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html">beta version announcement</a>.</p>
<p>Some links to answer the most common questions:</p>
<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html#the-first-messaging-platform-without-user-identifiers">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#why-having-users-identifiers-is-bad-for-the-users">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://simplex.chat/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<h2 id="we-ask-you-to-help-us-pay-for-3rd-party-security-audit" tabindex="-1">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 donate via:</p>
<ul>
<li><a href="https://github.com/sponsors/simplex-chat">GitHub</a>: it is commission-free for us.</li>
<li><a href="https://opencollective.com/simplex-chat">OpenCollective</a>: it also accepts donations in crypto-currencies, but charges a commission.</li>
<li><a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#assign-names-to-your-contacts">assign names to your contacts</a></li>
<li><a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#using-onion-server-addresses-with-tor">use .onion server addresses with Tor</a></li>
<li><a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#endless-scrolling-and-search-in-chats">endless scrolling and search in chats</a></li>
<li><a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#choose-accent-color-and-dark-mode">choose accent color and dark mode</a></li>
<li>disable notifications per contact / group</li>
<li>on Android:
<ul>
<li>swipe to reply</li>
<li>reduced APK size for direct download and in F-Droid repo from 200 to 50Mb!</li>
</ul>
</li>
</ul>
<p><a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#we-ask-you-to-help-us-pay-for-3rd-party-security-audit">Implementation audit is arranged for October</a>!</p>
<p><em>SimpleX is already private, so why do we need an incognito mode</em>, you may ask.</p>
<p>You indeed can choose a pseudonym as your main profile name, but there are several problems:</p>
<ul>
<li>many users want to have their real name as their main profile, so that their friends recognise them. SimpleX objective is to provide anonymity from the network operators, but not necessarily from your contacts.</li>
<li>even if you choose a pseudonym, it would be used for all your contacts. And if two of them meet, while they cannot prove they are talking to the same person, as they use different addresses in SimpleX network to send you the messages, they could <em>suspect it</em>.</li>
<li>any pseudonym you manually choose leaks some information about you, as it's not really random.</li>
</ul>
<p>You could also use multiple chat profiles - currently you can only switch between them via export/import, we will make it easier very soon! But there are problems with multiple profiles too:</p>
<ul>
<li>if you make many anonymous connections, each in its own user profile, you would end up having too many profiles - it is very inconvenient to manage.</li>
<li>sometimes, as your relationship with your contact evolves, you may want to share your main profile with them and have them among your friends - multiple profiles don't make it possible.</li>
</ul>
<p>So, the new Incognito mode allows having a new random name shared with each new contact, while having them all in the same user profile, and without the hassle of managing it manually. It's like a private mode in the browsers, where you can temporarily enable it when you connect to somebody you don't trust, and then disable it when connecting to the friend who knows you. It can be turned on via the app settings - see the pictures.</p>
<p>I don't know any other messenger with this feature, and I always wanted to have this mode, so we are really looking forward to your feedback about it!</p>
<h3 id="assign-names-to-your-contacts" tabindex="-1">Assign names to your contacts</h3>
<p>You can now change the name under which your contacts appear in the chats. This is particularly useful when somebody connected to you using a random name – you can change it to be related to the context of the connection.</p>
<h3 id="using-onion-server-addresses-with-tor" tabindex="-1">Using .onion server addresses with Tor</h3>
<p>We have released support for using SOCKS proxy to access messaging servers via Tor, but previously the servers were still available via their public Internet addresses. It means that while your IP address was protected from the server, the whole Tor circuit could have been observed by some actors, and for some communication scenarios it is not desirable.</p>
<p>This release adds support for servers with multiple hostnames - all servers provided by SimpleX Chat now have dual addresses (one public and one .onion), and you can have your own servers available via two addresses as well - all you have to do is to install Tor client on your server and register its address with Tor. If you server has both public and .onion address, it is not really hidden, so you should enable HiddenServiceSingleHopMode to reduce the latency of connection - it protects anonymity of the people who connect to the server, but not of the server itself. The server address would include both its public and onion address, as you can see in the server addresses in the app (in the contacts pages) - you should use the same format for the addresses of your servers.</p>
<p>Both android and iOS app allow managing whether .onion addresses are used, and you can also enforce using .onion addresses - in this case the app will not connect to the server unless one of its hostname is .onion address. On Android, .onion addresses are used by default when SOCKS proxy is enabled.</p>
<h3 id="endless-scrolling-and-search-in-chats" tabindex="-1">Endless scrolling and search in chats</h3>
<p>Now you can access the full chat history via the app - it's embarrassing how long it took us to add it! And you can search the messages as well.</p>
<h3 id="choose-accent-color-and-dark-mode" tabindex="-1">Choose accent color and dark mode</h3>
<p>Many of you said that blue is the worst possible color, so you can now make the app buttons and links look like you want! My favourite colours are green and orange.</p>
<p>And you can choose dark or light mode independently of the system settings.</p>
<p>Some links to answer the most common questions:</p>
<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html#the-first-messaging-platform-without-user-identifiers">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#why-having-users-identifiers-is-bad-for-the-users">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://simplex.chat/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<h2 id="we-ask-you-to-help-us-pay-for-3rd-party-security-audit" tabindex="-1">We ask you to help us pay for 3rd party security audit</h2>
<p>Our great news is that we have already signed the agreement and paid for the security audit!</p>
<p>It is planned in October, and if there are no major issues we will publish this report straight away, otherwise - once we fix them.</p>
<p>This is a major expense for use - over $20,000 - I would really appreciate if you could help us cover some part of this cost with the donations.</p>
<p>Our promise to our users is that SimpleX protocols are and will remain open, and in public domain, - so anybody can build the future implementations of the clients and the servers. We will be establishing a legal framework this year to ensure that it doesn't change if the ownership of SimpleX Chat Ltd changes at any future point.</p>
<p>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 donate via:</p>
<ul>
<li><a href="https://github.com/sponsors/simplex-chat">GitHub</a>: it is commission-free for us.</li>
<li><a href="https://opencollective.com/simplex-chat">OpenCollective</a>: it also accepts donations in crypto-currencies, but charges a commission.</li>
<content xml:lang="en" type="html"><h1 id="simplex-chat-v4-with-encrypted-local-database-is-released" tabindex="-1">SimpleX Chat v4 with encrypted local database is released</h1>
<h2 id="whats-new-in-v4" tabindex="-1">What's new in v4</h2>
<ul>
<li><a href="https://simplex.chat/blog/20220928-simplex-chat-v4-encrypted-database.html#local-chat-database-encryption">encrypted local chat database</a>.</li>
<li><a href="https://simplex.chat/blog/20220928-simplex-chat-v4-encrypted-database.html#self-hosted-webrtc-ice-servers">support for self-hosted WebRTC ICE servers</a>.</li>
<li><a href="https://simplex.chat/blog/20220928-simplex-chat-v4-encrypted-database.html#improved-stability-of-creating-new-connections">improved stability of creating new connections: more reliable groups, files and contacts</a>.</li>
<li><a href="https://simplex.chat/blog/20220928-simplex-chat-v4-encrypted-database.html#deleting-files-and-media">deleting files and media</a>.</li>
<li><a href="https://simplex.chat/blog/20220928-simplex-chat-v4-encrypted-database.html#for-developers---typescript-sdk-for-integrating-with-simplex-chat">For developers - TypeScript SDK for integrating with SimpleX Chat</a> (e.g., chat bots or chat assistants).</li>
<li>animated images in Android app.</li>
<li>disable messages per contact / group in terminal app (it is already supported in mobile apps).</li>
</ul>
<p>Also, this version adds German language to mobile apps UI - huge thanks to <a href="https://github.com/mlanp">Michael</a> who contributed them!</p>
<p>Other new features since v3:</p>
<ul>
<li>secret chat groups (see details in <a href="https://simplex.chat/blog/20220808-simplex-chat-v3.1-chat-groups.html#secret-chat-groups">v3.1 announcement</a> - they are fully decentralized, only their members know these groups exist.</li>
<li>accessing messaging servers via Tor with support for .onion server addresses (see details in <a href="https://simplex.chat/blog/20220808-simplex-chat-v3.1-chat-groups.html#access-messaging-servers-via-tor">v3.1</a> and <a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#using-onion-server-addresses-with-tor">v3.2</a> announcements) - to protect users anonymity on the TCP transport level.</li>
<li>Incognito mode - sharing a random profile name with each new contact, to completely eliminate any shared data between them (see details in <a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#incognito-mode">v3.2</a> announcement).</li>
<li>endless scrolling and search in chats.</li>
<li>reduced Android APK size for direct download and in F-Droid repo from 200 to 50Mb!</li>
</ul>
<p><a href="https://simplex.chat/blog/20220928-simplex-chat-v4-encrypted-database.html#we-ask-you-to-help-us-pay-for-3rd-party-security-audit">Implementation audit is arranged for October</a>!</p>
<p>SimpleX Chat focus has always been on protecting messages in delivery, not when they are stored on the device. This release changes it - now all messages that you receive and send are stored on the device encrypted with <a href="https://github.com/sqlcipher/sqlcipher">SQLCipher</a>.</p>
<p><strong>Please note</strong>: If you are already using SimpleX Chat, your database will remain unencrypted until you enter the passphrase via the app settings. You have to remember the passphrase you choose, as there is no way to recover it if it is lost.</p>
<p>By default your passphrase will be stored securely on the device (in KeyChain on iOS or encrypted with the key stored in TPM, if available, on Android) - it is only accessible to the app, and only on one device. Storing passphrase is required for instant notifications to work. In this case, if you lose the passphrase, the app will continue to work, but you will not be able to change the passphrase and to migrate your user profile to another device.</p>
<p>For additional security of your messages you also have the option to remove the passphrase from the device. In this case you will need to enter the passphrase every time you start the app. The notifications will continue to work only while the app is in the background. For iOS it means that periodic and local notifications will work, but instant notifications will only show that there is a message available, but not message content or who it is from - you will need to open the app and enter the passphrase to see the messages. In this case, if you lose the passphrase, you will not be able to open the app or decrypt the database - so make sure you store it safely.</p>
<p>You could make audio and video calls via SimpleX Chat WebRTC servers since <a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#end-to-end-encrypted-audiovideo-calls">v3</a> - that meant that our servers could observe your IP addresses. This release adds configuration to use your own STUN/TURN servers, helping you protect your privacy.</p>
<p>See <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/WEBRTC.md">this guide</a> to learn how to deploy your own <code>coturn</code> server and to configure the mobile apps to use it.</p>
<h3 id="improved-stability-of-creating-new-connections" tabindex="-1">Improved stability of creating new connections</h3>
<p>Secret groups made SimpleX Chat much more useful, but because SimpleX groups are completely decentralized and for them to work each member should connect to all other members, sometimes these connections fail and the group becomes fragmented - some members do not receive all messages. That was more common for larger groups, as the number of required member connections is O(n^2) of the group size.</p>
<p>The reason for that problem was that some network operations required for group connections were not retried. This release improves stability of all network operations - receiving messages, making new contact connections, receiving files and connecting to members in the groups you join.</p>
<h3 id="deleting-files-and-media" tabindex="-1">Deleting files and media</h3>
<p>While the database with messages and all contacts is now encrypted, the files you receive and send are not (we are planning to improve it later). To protect the security of the files we have added an option to delete all files from the app storage - just make sure not to do it before the files you send are delivered to the recipients, or they won't receive them.</p>
<h3 id="for-developers-typescript-sdk-for-integrating-with-simplex-chat" tabindex="-1">For developers - TypeScript SDK for integrating with SimpleX Chat</h3>
<p>It's been quite some time since it's been possible to create a chat-bot using SimpleX Chat as a library - but you had to either write Haskell code or use foreign function interface in any other language.</p>
<p>With v4 we are announcing <a href="https://github.com/simplex-chat/simplex-chat/tree/stable/packages/simplex-chat-client/typescript">TypeScript SimpleX Chat Client SDK</a> that you can use to create any integrations with SimpleX Chat CLI.</p>
<p>You can run SimpleX Chat CLI as a local WebSockets server on any port, we use 5225 here:</p>
<p>Then you can create a JavaScript or TypeScript application that would connect to it and control it via a simple WebSocket API. TypeScript SDK defines all necessary types and convenience functions to use in your applications. See this <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/packages/simplex-chat-client/typescript/examples/squaring-bot.js">sample bot</a> and <a href="https://github.com/simplex-chat/simplex-chat/tree/ep/blog-v4/packages/simplex-chat-client/typescript">README page</a>.</p>
<p>SimpleX Chat API allows you to:</p>
<ul>
<li>create and change user profile (although in most cases you would do it manually, via SimpleX Chat terminal app).</li>
<li>create and accept invitations or connect with the contacts.</li>
<li>create and manage long-term user address, accepting connection requests from the code or automatically.</li>
<li>create, join and manage groups - this can be used, for example, to connect two different people who connected to chat-bot.</li>
<li>send and receive files.</li>
</ul>
<p>Some possible applications you can create:</p>
<ul>
<li>peer-to-peer trading bots, that would connect people with matching buy/sell orders,</li>
<li>bots to access information,</li>
<li>language translation bots,</li>
<li>etc.</li>
</ul>
<p>As SimpleX Chat protocols provide strong encryption and authorization of the connections, you could use it not only in various communication scenarios, but also to remotely control any equipment where high level of security is required, for example:</p>
<ul>
<li>smart home automation,</li>
<li>network services,</li>
<li>remote deletion of application data,</li>
<li>etc.</li>
</ul>
<p>We are really looking forward to seeing what applications you create - please submit your ideas and implementations, we will publish the links on a separate page on the website and GitHub repository.</p>
<p>Some links to answer the most common questions:</p>
<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html#the-first-messaging-platform-without-user-identifiers">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#why-having-users-identifiers-is-bad-for-the-users">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://simplex.chat/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<h2 id="we-ask-you-to-help-us-pay-for-3rd-party-security-audit" tabindex="-1">We ask you to help us pay for 3rd party security audit</h2>
<p>We have already signed the agreement and paid for the security audit!</p>
<p>It is planned for October, and if there are no major issues we will publish this report straight away, otherwise - once we fix them.</p>
<p>This is a major expense for use - over $20,000 - I would really appreciate if you could help us cover some part of this cost with the donations.</p>
<p>Our promise to our users is that SimpleX protocols are and will remain open, and in public domain, - so anybody can build the future implementations of the clients and the servers. We will be establishing a legal framework this year to ensure that it doesn't change if the ownership of SimpleX Chat Ltd changes at any future point.</p>
<p>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 donate via:</p>
<ul>
<li><a href="https://github.com/sponsors/simplex-chat">GitHub</a>: it is commission-free for us.</li>
<li><a href="https://opencollective.com/simplex-chat">OpenCollective</a>: it also accepts donations in crypto-currencies, but charges a commission.</li>
<content xml:lang="en" type="html"><h1 id="security-assessment-by-trail-of-bits-the-new-website-and-v42-released" tabindex="-1">Security assessment by Trail of Bits, the new website and v4.2 released</h1>
<p><strong>Published:</strong> Nov 8, 2022</p>
<h2 id="security-assessment-by-trail-of-bits" tabindex="-1">Security assessment by Trail of Bits</h2>
<p>When we first launched the app in March the response on Reddit was: <em>&quot;Have you been audited or should we just ignore you?&quot;</em>.</p>
<p>We have a growing number of enthusiasts using SimpleX Chat who can accept the security risks of unaudited system, but the users who depend on their security were patiently waiting until some independent experts review our codebase.</p>
<p><a href="https://www.trailofbits.com/about">Trail of Bits</a>, a US based security and technology consultancy whose clients include big tech companies, governmental agencies and major blockchain projects, had 2 engineers reviewing SimpleX Chat for one calendar week, specifically <a href="https://github.com/simplex-chat/simplexmq">simplexmq library</a> that is responsible for all cryptography and networking of SimpleX platform.</p>
<p>2 medium and 2 low severity issues were identified, all of which require a high difficulty attack to exploit – the attacker would need to have a privileged access to the system, may need to know complex technical details, or must discover other weaknesses to exploit them. 3 of these issues are already fixed in v4.2.</p>
<p>In the course of the audit, Trail of Bits assessed the maturity of the <a href="https://github.com/simplex-chat/simplexmq">simplexmq library</a> across eight categories and found five of them to be strong or satisfactory.</p>
<p>Explained below is our understanding of the issues, as well as fixes implemented by the SimpleX Chat team after project completion. The full security review is available via <a href="https://github.com/trailofbits/publications/blob/master/reviews/SimpleXChat.pdf">Trail of Bits publications</a>.</p>
<p>We are hugely thankful to Trail of Bits and their engineers for the work they did, helping us identify these issues and supporting the ongoing efforts to make Simple Chat more secure.</p>
<h4 id="x3dh-key-exchange-for-double-ratchet-protocol" tabindex="-1">X3DH key exchange for double ratchet protocol</h4>
<p>We made a mistake implementing X3DH key exchange - the key derivation function was not applied to the result of concatenation of three DH operations. The attack to exploit this mistake has high difficulty, as it would require compromising one of private keys generated by the clients, and also it would only affect forward secrecy until break-in recovery happens (after both sides sent some messages).</p>
<p>Please note that SimpleX does not perform X3DH with long-term identity keys, as the SimpleX protocol does not rely on long-term keys to identify client devices. Therefore, the impact of compromising a key will be less severe, as it will affect only the secrets of the connection where the key was compromised.</p>
<p>This issue is fixed in version 4.2 in <a href="https://github.com/simplex-chat/simplexmq/pull/548/files">this PR</a>, and if both clients are updated the key exchange will not have this vulnerability. Also, previously created connections should be secure as long as both sides sent the messages, but if you believe that your private key(s) could have been compromised (for example, if you used SimpleX Chat since before we added database encryption), we recommend that you create the new connections with your contacts, at least with the security-critical ones. Simply rotating the connection queue (manual queue rotation is added in version 4.2) will not be sufficient, as this rotation does not re-initialize the ratchets - this is something we will be adding in the future.</p>
<h4 id="keys-are-stored-in-unpinned-memory-and-not-cleared-after-their-lifetime" tabindex="-1">Keys are stored in unpinned memory and not cleared after their lifetime</h4>
<p>The problem here is that the memory with cryptographic keys can be swapped to the storage and potentially accessed by an attacker who has root-level access to the device (or the level of access required to access swap file of the application). So, if you are running SimpleX Chat on desktop you could improve its security by running it in an isolated container.</p>
<p>In our opinion, on mobile operating systems it is less severe as each application already runs in its own container, and applications do not share access to their swap areas (e.g., on Android swap is a <a href="https://developer.android.com/topic/performance/memory-management">compressed area in RAM</a> not accessible to other applications).</p>
<p>To exploit this issue an attacker needs to have a privileged system access to the device. Also, we believe <a href="https://www.microsoft.com/en-us/research/wp-content/uploads/1993/01/gen-gc-for-haskell.pdf">Haskell generational garbage collection</a> makes the lifetime of unused memory lower than in other languages.</p>
<p>We will be addressing this issue in the near future, possibly by using library <a href="https://hackage.haskell.org/package/secure-memory-0.0.0.2">secure-memory</a> created by Kirill Elagin, an engineer at Serokell, or some other similar approach.</p>
<h4 id="the-string-padding-function-is-incorrect-for-long-messages-and-the-string-unpadding-function-throws-exception-for-short-messages" tabindex="-1">The string padding function is incorrect for long messages, and the string unpadding function throws exception for short messages</h4>
<p>Both these issues are fixed in 4.2 in <a href="https://github.com/simplex-chat/simplexmq/pull/547/files">this PR</a>, with the additional unit tests, and we also validated that even before the fix the strings that would cause such exception were never passed to this function – The SimpleX Chat team could not find the possibility of the attack that would succeed because of this issue.</p>
<p>There are areas of SimpleX Chat that were out of scope of this review, specifically:</p>
<ul>
<li>the chat protocol implementation and mobile UIs, as they includes no cryptography of networking (with the exception of Android app storing encrypted database passphrase and key exchange/encryption for WebRTC calls).</li>
<li>push notifications server that is used by iOS clients.</li>
</ul>
<p>We will be arranging to review these areas separately.</p>
<h2 id="the-new-website" tabindex="-1">The new website</h2>
<p>Our <a href="https://old-website.simplex.chat/">previous website</a> was created 2 years ago to present SimpleX idea, there was no SimpleX Chat at the time - we only had a prototype implementation of SimpleX Messaging Protocol server then.</p>
<p>A lot of people told us that our website didn't explain well enough who SimpleX Chat is for, what problems it solves, and how it is different from the alternatives. So, while we love to be focused on the chat application, we decided to make the new one.</p>
<p>We hope that our <a href="https://simplex.chat/">new website</a> better answers these questions. If you think something should be added/removed/changed - please let us know. Thank you!</p>
<p>It's been requested by many users - to be able to join a group via link. Because SimpleX Chat groups are fully decentralised, and there is no server-side state, joining via these links requires the participation of the link creator who has to be online to accept the group joining request.</p>
<p>The way it works under the hood is similar to how contact addresses work:</p>
<ol>
<li>Group admin or owner creates a long term address that is technically the same as a user address, but it is associated with a specific group.</li>
<li>The user that joins the group can identify that this link belongs to some group by an additional piece of data in the link - <code>{&quot;type&quot;: &quot;group&quot;, &quot;groupLinkId&quot;: &quot;some random string&quot;}</code>. The ID in this link does not represent a group identity, every time any user creates a new link for the same group, this ID will be different. This ID is used by the joining client to identify the group and automatically accept the invitation when it is received.</li>
<li>When admin receives a connection request, they automatically accept it and send invitation link to join the group.</li>
<li>The joining user compares the ID in the invitation with the ID in the link, and if they match – automatically accepts the invitation.</li>
</ol>
<p>After that it works as when joining via the manual invitation - the joining user will be establishing the connection with all existing members to be able to send messages to the group.</p>
<p>The link can be created via the group page, as shown on the picture.</p>
<p>We have several groups you can join to ask any questions or just to test the app:</p>
<ul>
<li>
<p><a href="https://simplex.chat/contact#/?v=1-2&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FWHV0YU1sYlU7NqiEHkHDB6gxO1ofTync%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAWbebOqVYuBXaiqHcXYjEHCpYi6VzDlu6CVaijDTmsQU%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion&amp;data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22mL-7Divb94GGmGmRBef5Dg%3D%3D%22%7D">#SimpleX-Group</a>: a general group with more than a 100 members where you can ask any questions.</p>
<p>You can join these groups either by opening these links in the app or by opening them in desktop browser and scanning QR code.</p>
<p>Let me know if you'd like to add some other countries to the list. Join via the apps to share what's going on and ask any questions!</p>
<p>When somebody connects to you via your long-term address you have to manually accept a connection request (it shows in blue color in the list of chats). The feature that we added in this release allows to configure the app to accept contact requests automatically, and also choose whether this contact should receive your main profile or a random incognito profile (independent of the current app setting), and add an optional auto-reply message.</p>
<p>This feature is useful if you publish your address on your webpage or social profile, and do not want to screen people who want to connect to you. You may want to send a standard welcome message, for example, if it is an online store, and you need to share any information with everybody who contacts you.</p>
<p>Our @simplex account that you connect to when you choose &quot;Connect to developers&quot; in the app used this feature for a long time, and now it is available to mobile app users.</p>
<h3 id="some-small-things" tabindex="-1">Some small things</h3>
<ol>
<li>
<p>Changing group member role is a very basic feature, but it was only added in this release.</p>
</li>
<li>
<p>You can now mark a conversation as unread, for example if you accidentally marked all messages as read and you want to review it later.</p>
</li>
<li>
<p>Send stickers and GIFs from Android keyboards, and, finally, the bug with backspace button is resolved as well.</p>
</li>
</ol>
<h3 id="change-your-delivery-address-beta" tabindex="-1">Change your delivery address (BETA)</h3>
<p>To manually switch any of your contacts (or a group member to a new server address) enable Developer tools and choose &quot;Change receiving address&quot; on the contact page. As long as they run a new version of the app and online, the switch should only take a few seconds.</p>
<p>That is a major improvement of metadata privacy of SimpleX protocols, because previously, while we didn't have user identifiers, the pairwise identifiers of messaging queues used to deliver messages were used for as long as the contact existed. Now these identifiers are temporary, and in a near future we will be adding automatic rotation of these delivery addresses.</p>
<p>It is also useful when you want to migrate message delivery to another server, for example, if you used SimpleX Chat default servers and now want to self-host your own. Or, maybe, you need to change the address of your server. Previously it would require creating new contacts and losing conversation histories, and now all you have to do is to change server configuration in the app, and when the change of the address is triggered (currently, only manually, and in the near future - automatically), your contacts will be migrated to a new server, without you doing anything - it only requires each party sending 2 messages to negotiate the reconnection, and it would also rotate the encryption keys used for the outer layer of E2E encryption.</p>
<h3 id="receive-images-and-small-files-faster-beta" tabindex="-1">Receive images and small files faster (BETA)</h3>
<p>From version 4.2 all files smaller than ~92kb (equal to 6 message blocks) will be sent in the same connection where you have the chat, and files smaller than ~231kb (the limit for image size) can also be optionally received via the same connection – the latter requires enabling &quot;Transfer images faster&quot; in Privacy &amp; security settings (it will be available after you enable Developer tools). There are two reasons why it is not on by default yet: 1) we wanted to ensure it is stable; 2) there is a small effect on metadata privacy of having a burst of traffic in the same connection where you are having the main conversation.</p>
<p>This functionality was created for the future voice messages, as they need to be sent without acceptance, so that the recipients can listen to them even when the sender is offline.</p>
<p>Some links to answer the most common questions:</p>
<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html#the-first-messaging-platform-without-user-identifiers">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#why-having-users-identifiers-is-bad-for-the-users">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://simplex.chat/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Please also see the information on our <a href="https://simplex.chat/">new website</a> - it also answers all these questions.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>It is possible to donate via:</p>
<ul>
<li><a href="https://github.com/sponsors/simplex-chat">GitHub</a> - it is commission-free for us.</li>
<li><a href="https://opencollective.com/simplex-chat">OpenCollective</a> - it charges a commission, and also accepts donations in many crypto-currencies.</li>
<li>please let us know, via GitHub issue or chat, if you want to make a donation in some other cryptocurrency - we will add the address to the list.</li>
</ul>
<p>Thank you,</p>
<p>Evgeny</p>
<p>SimpleX Chat founder</p>
</content>
</entry>
<entry>
<title>SimpleX Chat reviews and v4.3 released – with instant voice messages, irreversible deletion of sent messages and improved server configuration.</title>
<content xml:lang="en" type="html"><h1 id="simplex-chat-reviews-and-v43-released-with-instant-voice-messages-irreversible-deletion-of-sent-messages-and-improved-server-configuration" tabindex="-1">SimpleX Chat reviews and v4.3 released – with instant voice messages, irreversible deletion of sent messages and improved server configuration.</h1>
<p><strong>Published:</strong> Dec 6, 2022</p>
<p>Since we published <a href="https://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html">the security assessment of SimpleX Chat</a> completed by Trail of Bits in November, several sites published the reviews and included it in their recommendations:</p>
<ul>
<li>Privacy Guides added SimpleX Chat to <a href="https://www.privacyguides.org/real-time-communication/#simplex-chat">the recommended private and secure messengers</a>.</li>
<li>Mike Kuketz – a well-known security expert – published <a href="https://www.kuketz-blog.de/simplex-eindruecke-vom-messenger-ohne-identifier/">the review of SimpleX Chat</a> and added it to <a href="https://www.messenger-matrix.de/">the messenger matrix</a>.</li>
<li>Supernova published <a href="https://supernova.tilde.team/detailed_reviews.html#simplex">the review</a> and increased <a href="https://supernova.tilde.team/messengers.html">SimpleX Chat recommendation ratings</a>.</li>
</ul>
<h2 id="whats-new-in-v43" tabindex="-1">What's new in v4.3</h2>
<li><a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html#irreversible-message-deletion">irreversible deletion of sent messages for all recipients</a></li>
<li><a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html#smp-servers-configuration-and-password">improved SMP server configuration and support for server passwords</a></li>
<li><a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html#privacy-and-security-improvements">privacy and security improvements</a>:
<ul>
<li>protect app screen in recent apps and prevent screenshots</li>
<li>improved privacy and security of SimpleX invitation links in the app</li>
<li>optional Android app data backup</li>
<li>optionally allow direct messages between group members</li>
<p>Voice messages, unlike normal files, are sent instantly, in the existing connection with your contact and without acceptance from the recipient. For this reason we limited the size of voice messages to ~92.5kb (an equivalent of 6 messages), that limits the duration to 30 seconds on iOS and to ~42 seconds on Android (the size is different because of different encoders), with an average sound quality. The voice messages are sent in MP4AAC format that is natively supported both on iOS and on Android, and you can play voice message files outside of SimpleX Chat app.</p>
<p>Users who do not want to receive voice messages can disable them, either globally, for all contacts, or for each contact independently. Please note that the global preference change will only affect the contacts where you shared your main profile (not incognito contacts) and where you didn't change the preference for the particular contact. Groups have a separate policy that allows disabling voice messages for all members (they are allowed by default). The owner can set this policy when creating a group or later, via Group preferences page.</p>
<p>When you receive email, you have full confidence that the sender cannot delete their email from your mailbox after you received it. And it seems correct – in the end, this is your device, and nobody should be able to delete any data from it.</p>
<p>Most existing messengers made an opposite decision – the senders can irreversibly delete their messages from the recipients' devices after they were delivered, whether recipients agree to that or not. And it seems correct too - this is your message, you should be able to delete it, at least for a limited time; that the message is on the recipient device doesn't change your ownership of this message.</p>
<p>While both these statements appear correct, at least to some people, they simply cannot both be correct at the same time, as they contradict each other - either one or both of them must be wrong. This appears to be a very polarising subject, and <a href="https://mastodon.social/@simplex/109461879089268041">the polls</a> <a href="https://www.reddit.com/r/SimpleXChat/comments/zdam11/poll_irreversible_message_deletion_by_sender_what/">I made</a> <a href="https://twitter.com/epoberezkin/status/1599797374389727233">yesterday</a> <a href="https://www.linkedin.com/feed/update/urn:li:activity:7005564342502842368/">show it</a> - the votes are split evenly.</p>
<p>You may want to be able to delete your messages even after they are received to protect your privacy and security, and you want the communication product you use to enforce it. But you may also have many reason to disagree to the deletion of messages on your device for several different reasons:</p>
<ul>
<li>it may be a business context, and either your organisation policy or a compliance requirement is that every message you receive must be preserved for some time.</li>
<li>these messages may contain threat or abuse and you want to keep them as a proof.</li>
<li>you may have paid for the the message (e.g., it can be a consulting report), and you don't want it to suddenly disappear before you had a chance to store it outside of the conversation.</li>
</ul>
<p>Instead of taking any side in this choice, we decided to allow to change this behaviour either globally or separately for each contact or group. That makes SimpleX Chat unique, being suitable both for the communication contexts where email is traditionally used and in informal or privacy sensitive contexts, that would allow the senders to delete messages irreversibly, provided that the recipients agree to that.</p>
<p>In any case, the senders can never be 100% certain that the message is deleted from the recipient's device - recipient can be running a modified client that does not honour the conversation setting, and there is no way to ascertain which code your contact runs on their device.</p>
<p>If irreversible message deletion is not allowed in the conversation, the senders can still mark their messages as deleted, and it would show &quot;mark deleted&quot; placeholder in the conversation. The recipients can then both reveal the content of the original message and fully delete it on their devices.</p>
<h3 id="smp-servers-configuration-and-password" tabindex="-1">SMP servers configuration and password</h3>
<p>When you self-host your own SMP server you may want to make it public so that anybody can use it to receive messages. But many users want to host their private servers, so that only they and their friends can use them to receive the messages.</p>
<p>v4.0 of SMP server and the new version of the apps adds support for server passwords. It is chosen randomly when you initialize the new server, and if you already have a server you can change it. Anybody can still message you, it doesn't require knowing the password, and the links you share do not include it, but to be able to receive the messages you need to know a server address that includes the password. In a way, it is similar to how basic authentication works in HTTP, and how browsers support the URIs with included credentials.</p>
<p>The new server configuration section now allows to test your servers before you start using them, and you can also share your server address via QR code, so that your friends or your team can use them too, without the need to copy paste the addresses.</p>
<p>You can read how to install and configure SMP servers in <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/SERVER.md">this guide</a>.</p>
<h3 id="privacy-and-security-improvements" tabindex="-1">Privacy and security improvements</h3>
<p>It is now enabled by default, but you can disable it via settings.</p>
<p>iOS app only hides the app screen in the recent apps, Android app in addition to that also prevents the screenshots.</p>
<p>This is not the security measure for the senders, and we made it optional, as the recipient could circumvent it anyway – this is for you to protect your app screen when you give your phone to somebody.</p>
<h4 id="privacy-and-security-of-simplex-invitation-links" tabindex="-1">Privacy and security of SimpleX invitation links</h4>
<p>Previously, when you sent somebody an invitation link, a contact address or a group link, they would take half a screen in the chat and they could open in the browser in some cases. Also, as these links are quire large, it is not easy to see if the page domain is maliciously replaced, what SMP server the connection would go through or what kind of link it is.</p>
<p>This version instead of showing the full link shows a short description, and it replaces a public web address with an internal URI scheme that the app uses (simplex:/) – such links open directly in the app. There is an option to show the full link, if you need it, and even to open it in the browser from the app, but in this case if this link is not using <a href="https://simplex.chat/">https://simplex.chat</a> website it will show as red to highlight it.</p>
<h3 id="optional-android-app-data-backup" tabindex="-1">Optional Android app data backup</h3>
<p>The previous version always backed up app data in the way it was configured by the system. Now you can override it from inside the app, preventing the backup even if it's enabled by the system settings. This version requires disabling it manually, we will make it disabled by default in the next release (v4.3.1).</p>
<h3 id="direct-messages-between-group-members" tabindex="-1">Direct messages between group members</h3>
<p>The new version does not allow them by default, but it can be enabled by group owners in the group settings when the group is created or at any later moment.</p>
<p>Some links to answer the most common questions:</p>
<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html#the-first-messaging-platform-without-user-identifiers">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#why-having-users-identifiers-is-bad-for-the-users">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://simplex.chat/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Please also see the information on our <a href="https://simplex.chat/">new website</a> - it also answers all these questions.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>It is possible to donate via:</p>
<ul>
<li><a href="https://github.com/sponsors/simplex-chat">GitHub</a> - it is commission-free for us.</li>
<li><a href="https://opencollective.com/simplex-chat">OpenCollective</a> - it charges a commission, and also accepts donations in many crypto-currencies.</li>
<li>please let us know, via GitHub issue or chat, if you want to make a donation in some other cryptocurrency - we will add the address to the list.</li>
</ul>
<p>Thank you,</p>
<p>Evgeny</p>
<p>SimpleX Chat founder</p>
</content>
</entry>
<entry>
<title>SimpleX Chat v4.4 released – with disappearing messages, live messages, connection security verification and French language!</title>
<content xml:lang="en" type="html"><h1 id="simplex-chat-v44-released-with-disappearing-messages-live-messages-connection-security-verification-and-french-language" tabindex="-1">SimpleX Chat v4.4 released – with disappearing messages, live messages, connection security verification and French language!</h1>
<p><strong>Published:</strong> Jan 3, 2023</p>
<h2 id="whats-new-in-v44" tabindex="-1">What's new in v4.4</h2>
<li><a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#animated-images-and-stickers">animated images and stickers</a> – now on iOS too.</li>
</ul>
<p>Also, we added <a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#french-language-interface">French language interface</a>, thanks to the users' community and Weblate!</p>
<p>It is now possible to send the messages that will be deleted from both sender and recipient device after set time – for the sender from the time they were sent, and for the recipient - from the time they were read.</p>
<p>Unlike in most other messengers, it requires agreement of both sides, not just the sender decision. I <a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html#irreversible-message-deletion">wrote previously</a> why we believe it is wrong to allow the senders to delete their messages without recipient consent, and the same logic applies here – if you want to send the message that will disappear after some time, your contact should be ok with that too.</p>
<p>In group conversations disappearing messages can be enabled by the group owners, by default they are disabled.</p>
<p>Pressing &quot;bolt&quot; button before you start typing the message will start a &quot;live&quot; message. Now, as you type it, it will be updated for all recipients every several seconds, including only complete words. To finish the message you need to press &quot;checkmark&quot; button.</p>
<p>You can also start a live message after you started typing or after you chose the image – long-press send button and then press &quot;Send live message&quot;.</p>
<p>SimpleX Chat design prevents the possibility of messaging servers substituting the key during the initial connection (man-in-the-middle attack) by requiring that the invitation link is passed via another channel. I wrote more about how MITM attack works in <a href="https://www.poberezkin.com/posts/2022-12-07-why-privacy-needs-to-be-redefined.html">this post</a>. But this other channel, however unlikely, could still have been compromised by an attacker to replace the invitation link you sent. That is the reason why we recommend sharing QR code in a video call – this is very complex for an attacker to replace it in this case.</p>
<p>This new feature allows you to verify, via yet another channel, that the connection is secure and the keys were not replaced. You can either scan the security code from your contact's app, or compare codes visually, or even read it in a voice call – if your and your contact's app have the same security code for each other then the connection is secure.</p>
<p>If you are sending direct messages to some group members then it might also be important to verify security of these connections, as in this case the invitations were exchanged via the member who added you or another member, and if this member's client was modified, they could have replaced the keys and the addresses, and intercept the entire conversation.</p>
<p>Regardless how connection is established, verifying the connection proves its security. Technically, this security code is the hash of associated data used in the end-to-end encryption, which in turn is taken by combining public keys from the initial key exchange.</p>
<h3 id="animated-images-and-stickers" tabindex="-1">Animated images and stickers</h3>
<p>Android app supported GIFs and stickers for some time, now you can view and send them from iOS app as well, e.g. using GIPHY keyboard - you no longer need to choose between privacy and stickers. Just bear in mind, that third party keyboards can be insecure, so you should not be using them for typing sensitive information.</p>
<h3 id="french-language-interface" tabindex="-1">French language interface</h3>
<p>Thanks to our users' community and to <a href="https://weblate.org/en-gb/">Weblate</a> kindly providing a free hosting plan for SimpleX Chat translations we can now support more languages in the interface – this version adds French.</p>
<p>Please get in touch if you want to translate the interface into your language!</p>
<p>Some links to answer the most common questions:</p>
<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html#the-first-messaging-platform-without-user-identifiers">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#why-having-users-identifiers-is-bad-for-the-users">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Please also see our <a href="https://simplex.chat/">website</a>.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>It is possible to donate via:</p>
<ul>
<li><a href="https://github.com/sponsors/simplex-chat">GitHub</a> - it is commission-free for us.</li>
<li><a href="https://opencollective.com/simplex-chat">OpenCollective</a> - it charges a commission, and also accepts donations in crypto-currencies.</li>
<li>please let us know, via GitHub issue or chat, if you want to create a donation in some other cryptocurrency - we will add the address to the list.</li>
</ul>
<p>Thank you,</p>
<p>Evgeny</p>
<p>SimpleX Chat founder</p>
</content>
</entry>
<entry>
<title>SimpleX Chat v4.5 released – with multiple chat profiles, message draft, transport isolation and Italian language!</title>
<content xml:lang="en" type="html"><h1 id="simplex-chat-v45-released-with-multiple-user-profiles-message-draft-transport-isolation-and-italian-interface" tabindex="-1">SimpleX Chat v4.5 released – with multiple user profiles, message draft, transport isolation and Italian interface!</h1>
<p><strong>Published:</strong> Feb 4, 2023</p>
<h2 id="whats-new-in-v45" tabindex="-1">What's new in v4.5</h2>
<p>Also, we added <a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#italian-interface">Italian interface</a>, thanks to the users' community and Weblate!</p>
<p>Incognito mode added in v3.2 allows to share a random profile name with your new contacts. It is quite popular - more than half of users connecting to our support profile use it. In case when you just want a throw-away profile name that doesn't share any information about you it is more convenient that creating a new profile for each contact manually.</p>
<p>But there are many cases when a disposable profile is not good enough enough, and you want to create separate profiles - one for your family, another for work, yet one more for your online contacts that only know your pseudonym rather than your real name.</p>
<p>Previously this was only possible by using separate chat databases. This version adds a chat profile manager that allows you to create unlimited number of profiles, and very quickly switch them. All these profiles are connected at the same time.</p>
<p>When you delete profile you no longer need you have two options - either delete both profile data on the device and any message queues that this profile created on SMP servers (e.g., when it is more important to leave as few meta-data on the servers), or delete only profile data without making any network requests (when it is more important to delete all data from the device quickly).</p>
<p>While most app settings apply to all profiles, several settings are profile-specific.</p>
<p>You can separately set which SMP servers are used to create the new contacts in each profile (via Network settings). Please note: changing SMP servers in one profile won't affect other profiles, and all new profiles are created with preset servers.</p>
<p>You can also separately set the retention time for messages in each profile (via Database settings).</p>
<p>Also, you have a different contact address in each profile, and different Chat preferences.</p>
<p>All other settings are used for all profiles. While you may want to have different settings for different security levels, it is much better to use different devices in this case.</p>
<p>Previously, if you've closed the conversation with unsent message, this message was disappearing. While it might be better for privacy, there are several scenarios when it is very inconvenient:</p>
<ul>
<li>you need to compose the message from several parts that you copy from other conversations.</li>
<li>some messages arrives that you need to answer urgently, so you can leave unfinished message to return to it later.</li>
</ul>
<p>Both are now possible - the message you wrote, together with any attachments, and even a voice message you recorded, will remain available as draft until you either close the app or leave another message unfinished - while you can send the message in another chat without losing the current draft, there can be only one draft at a time.</p>
<p>Even when you create different chat profiles you are still connecting to your contacts via the same device. Transport isolation, by default, makes connections belonging to the same profile use different TCP sessions, so while the server sees the same IP address, it doesn't see it as the same client connection. If you are connecting via Tor using SOCKS proxy (e.g. Orbot app on Android) not only the app will use different TCP sessions, it will also use separate Tor circuits for connections from different profiles, preventing the servers and network observers seeing this as traffic coming from the same device.</p>
<p>There is an additional BETA option to use a separate transport connection for each contact and group member connection you have – it is available in Network settings if you enable dev tools. In case you have a large number of contacts or participate in large groups across all profiles in the app, you should not use this option, as it may create a lot of traffic and also can exceed the quota for TCP sockets. Also creating a lot of separate Tor circuits can be slow. We will be testing at which number of connections this option starts failing and by the time it's available without dev tools we will add some limits.</p>
<p>Battery usage is one of the biggest complaints of SimpleX Chat users. The main reason for excess traffic is inefficient retry strategies for Network operations in these cases:</p>
<ul>
<li>the message queue capacity is exceeded - the app will keep retrying to send the message until there will be capacity.</li>
<li>the server is not available, e.g. if you connect to somebody via their server, and they later disable it. This case creates much less extra traffic than the first.</li>
</ul>
<p>This version makes retries for exceeded queue capacity 10x less frequent and adds SMP protocol extension that will allow to reduce retries even further by the next version. It works in the following way:</p>
<ul>
<li>when the sender encounters &quot;queue quota exceeded&quot; error, the sender stops trying to send the message.</li>
<li>the server also takes note of that error.</li>
<li>once recipient receives all messages from this queue, the server will notify the recipient that the sender had &quot;queue quota exceeded&quot; error.</li>
<li>the recipient will then send a special message to the sender client to instruct it that it can resume delivery.</li>
<li>the sender can still occasionally try sending the message, e.g. once every hours, but it won't need to retry once every few minutes as it does now.</li>
</ul>
<p>Reducing battery usage is our big priority - we expect to reduce it by at least 2-3x in the next few months.</p>
<p>When you send an image or voice message they are sent as files with filenames including timestamp. We didn't see it as a problem, as files are sent together with the message, and messages have server-side timestamps anyway. But the users pointed out that the timestamp we used was in the local timezone, and therefore leaked the country (or continent) where the user is located. A simple workaround was to reset timezone to UTC, and that is what most users who need to protect their location do anyway. But this version resolves it - these filenames now include UTC timezones – no workarounds are needed.</p>
<p>Thanks to our users' community and to Weblate providing a free hosting plan for SimpleX Chat translations we can now support more languages in the interface – this version adds Italian and many more is in progress - Chinese, Japanese, Czech, Dutch, etc.</p>
<p>You can <a href="https://github.com/simplex-chat/simplex-chat/tree/stable#translate-the-apps">contribute the translation</a> of the apps to your language too!</p>
<p>Some links to answer the most common questions:</p>
<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html#the-first-messaging-platform-without-user-identifiers">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#why-having-users-identifiers-is-bad-for-the-users">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Please also see our <a href="https://simplex.chat/">website</a>.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>See <a href="https://github.com/simplex-chat/simplex-chat/tree/master#help-us-with-donations">this section</a> for the ways to donate.</p>
<p>Thank you,</p>
<p>Evgeny</p>
<p>SimpleX Chat founder</p>
</content>
</entry>
<entry>
<title>SimpleX File Transfer Protocol - a new protocol for sending large files efficiently, privately and securely.</title>
<content xml:lang="en" type="html"><h1 id="simplex-file-transfer-protocol-a-new-protocol-for-sending-large-files-efficiently-privately-and-securely" tabindex="-1">SimpleX File Transfer Protocol – a new protocol for sending large files efficiently, privately and securely.</h1>
<p><strong>Published:</strong> Mar 1, 2023</p>
<ul>
<li><a href="https://simplex.chat/blog/20230301-simplex-file-transfer-protocol.html#%E2%9A%A1%EF%B8%8F-quick-start-send-a-file-with-xftp-cli-in-3-simple-steps">Quick start: how to send a file using XFTP CLI</a></li>
<li><a href="https://simplex.chat/blog/20230301-simplex-file-transfer-protocol.html#whats-the-problem">What's the problem</a></li>
<li><a href="https://simplex.chat/blog/20230301-simplex-file-transfer-protocol.html#why-didnt-we-just-use-some-existing-solution">Why didn't we just use some existing solution?</a></li>
<li><a href="https://simplex.chat/blog/20230301-simplex-file-transfer-protocol.html#what-is-xftp-and-how-does-it-work">What is XFTP and how does it work?</a></li>
<li><a href="https://simplex.chat/blog/20230301-simplex-file-transfer-protocol.html#what-is-next">What is next?</a></li>
</ul>
<h2 id="quick-start-send-a-file-with-xftp-cli-in-3-simple-steps" tabindex="-1">⚡️ Quick start: send a file with XFTP CLI in 3 simple steps</h2>
<p>Download XFTP binary for Linux from <a href="https://github.com/simplex-chat/simplexmq/releases/tag/v5.0.0-beta.3">the release</a> – you need the file <code>xftp-ubuntu-20_04-x86-64</code> - rename it as <code>xftp</code>.</p>
<p><strong>Step 1</strong>: To send the file:</p>
<p><strong>Step 2</strong>: Pass file description(s) (files <code>rcvN.xftp</code>) to the recipient(s) securely, e.g. send it as a file via SimpleX Chat.</p>
<p><strong>Step 3</strong>: To receive the file:</p>
<p>The sender also delete all file chunks from the relays before they expire in 48 hours with this command:</p>
<pre><code class="language-bash">xftp del ./filename.ext/snd.xftp.private
</code></pre>
<br />
<h2 id="whats-the-problem" tabindex="-1">What's the problem?</h2>
<p>If you are using SimpleX Chat apps you know that support of sending files and images is not very good, and sending videos and large files is simply impossible. There are currently these problems:</p>
<ul>
<li>the sender has to be online for file transfer to complete, once it was confirmed by the recipient.</li>
<li>when the file is sent to the group, the sender will have to transfer it separately to each member, creating a lot of traffic.</li>
<li>the file transfer is slow, as it is sent in small chunks - approximately 16kb per message.</li>
</ul>
<p>As a result, we limited the supported size of files in the app to 8mb. Even for supported files, it is quite inefficient for sending any files to large groups.</p>
<h2 id="why-didnt-we-just-use-some-existing-solution" tabindex="-1">Why didn't we just use some existing solution?</h2>
<p>We really hoped to find some existing open-source solution that we could integrate with SimpleX Chat.</p>
<p>We decided not to use torrent-like or any other P2P solutions because of their lack of privacy, challenging legality in some jurisdictions and, in many cases, because they are inefficient in groups.</p>
<p>We reviewed several S3-compatible solutions (e.g., <a href="https://github.com/minio/minio">minio</a>, <a href="https://git.deuxfleurs.fr/Deuxfleurs/garage">garage</a>, <a href="https://github.com/seaweedfs/seaweedfs">SeaweedFS</a>), but they all require the development of a separate service layer, making them unusable as standalone services and harder to deploy for the users who want to self-host the file transfer service. As a side note, the solution that we developed can still be composed with S3-compatible storage for higher capacity servers with some privacy/efficiency trade-offs.</p>
<p>We also looked at a few independent implementations of file sharing, with some ad-hoc protocols (e.g., <a href="https://github.com/ceph/ceph">ceph</a> and <a href="https://framagit.org/fiat-tux/hat-softwares/lufi">lufi</a>), but neither seemed sufficiently mature, and also not as private as we would like.</p>
<p>So after a lot of searching we decided to design and implement a new protocol for file transfers, that both solved the problems above, and provided a higher level of metadata privacy than any other file transfer solution has.</p>
<h2 id="what-is-xftp-and-how-does-it-work" tabindex="-1">What is XFTP and how does it work?</h2>
<pre><code> Sender Internet XFTP relays Internet Recipient
chunk N --------------------------- +---------+ --------------------- chunk N
| | (store file chunks) | |
| | | |
| | | |
</code></pre>
<p>XFTP stands for SimpleX File Transfer Protocol. Its design is based on the same ideas and has some of the qualities of SimpleX Messaging Protocol, that is used in SimpleX Chat:</p>
<ul>
<li>recipient cannot see sender's IP address, as the file fragments (chunks) are temporarily stored on multiple XFTP relays.</li>
<li>file can be sent asynchronously, without requiring the sender to be online for file to be received.</li>
<li>there is no network of peers that can observe this transfer - sender chooses which XFTP relays to use, and can self-host their own.</li>
<li>XFTP relays do not have any file metadata - they only see individual chunks, with access to each chunk authorized with anonymous credentials (using Edwards curve cryptographic signature) that are random per chunk.</li>
<li>chunks have one of the sizes allowed by the servers - currently we allow 256kb, 1mb and 4mb chunks, so if you send, say 1gb file, to XFTP relays it will look indistinguishable from sending many small files, and they would only know that chunks are sent by the same user only via the transport information, but none of the relays will see all chunks. Also, once this feature is available in mobile apps you can use transport isolation per chunk, when each file fragment will be uploaded via a separate TCP connection (and Tor circuit, if you use Tor) – the CLI we released does not yet support per-chunk transport isolation.</li>
<li>each chunk can be downloaded by multiple recipients, but each recipient uses their own key and chunk ID to authorize access, and the chunk is encrypted by a different key agreed via ephemeral DH keys (NaCl crypto_box (SalsaX20Poly1305 authenticated encryption scheme ) with shared secret derived from Curve25519 key exchange) on the way from the server to each recipient. XFTP protocol as a result has the same quality as SMP protocol - there are no identifiers and ciphertext in common between sent and received traffic inside TLS connection, so even if TLS is compromised, it complicates traffic correlation attacks.</li>
<li>XFTP protocol also supports redundancy - each file chunk can be sent via multiple relays, and the recipient can choose the one that is available. The released CLI does not support redundancy though.</li>
<li>the file as a whole is encrypted with a random symmetric key using NaCl secret_box.</li>
</ul>
<p>So, how would any recipient know where to get all these file fragments from and how to put them back together into the original file? Normally, when you send a file via any file-sharing service it provides you a link that you can pass to the recipient. The link allows to download the original file, but it also provides the server a lot of file meta-data, that often includes file name and exact size, and in many cases the server also has access to a file content.</p>
<p>Instead of using a link, XFTP protocol includes a special format for a &quot;file description&quot; - it is a small text file containing the locations, access keys and digests for all file chunks, and also the encryption key and digest (SHA512) for the whole file. This file description does not contain the original file name or exact file size, so if it is used after the file fragments are expired or removed from XFTP relays, this information is not accessible.</p>
<p>CLI generates a separate file description for each intended recipient - you need to specify how many people you want to be able to receive this file. You can specify a larger number of recipients to avoid revealing the real number of recipients from XFTP relays. Mobile apps, when this protocol is integrated, will do it automatically, choosing some large random number of possible recipients, so while the relays will be able to observe how many people time the file was downloaded, they won't know how many intended recipients you had - sending to a group of 10 people and to 1 recipient can look the same to the relays.</p>
<p>File description is a security-sensitive file that contains private keys and chunk addresses necessary to receive the whole file, and also a symmetric key to decrypt the file. Therefore you must use a secure channel to send file description - e.g., it can be sent via SimpleX Chat. But once the recipient downloaded the file, CLI invalidates the file fragment addresses on relays and the same file description cannot be used again to download the file.</p>
<h2 id="what-is-next" tabindex="-1">What is next?</h2>
<p>We released and deployed several XFTP relays for you to experiment with (they are hardcoded in the XFTP CLI), and you can deploy your own relays either from <a href="https://github.com/simplex-chat/simplexmq/releases/tag/v5.0.0-beta.3">downloadable binary</a> or by compiling <a href="https://github.com/simplex-chat/simplexmq">the source code</a>. We also released XFTP CLI - it is available in the same release.</p>
<p>We are currently integrating support for sending large files using XFTP protocol into SimpleX Chat clients. SimpleX Chat v5.0 will have support for receiving files sent via XFTP protocol (you will be able to send a file description via a SimpleX Chat CLI app, so that mobile apps will be able to receive them as normal files, only much faster), and v5.1 will fully support for sending large files (up to 1gb) in the mobile apps.</p>
<p>We will also publish a formal specification for XFTP protocol and overview of its security qualities and threat model. For now you can learn more about the protocol design and motivations from this internal <a href="https://github.com/simplex-chat/simplexmq/blob/stable/rfcs/2022-12-26-simplex-file-transfer.md">XFTP protocol RFC</a>.</p>
<p>Using and sending files with the available XFTP CLI will hugely help us stabilizing both the protocol and implementations. What we really like about this design is that it is completely independent from SimpleX Chat - you can use it on its own, sending files and passing file descriptions to your contacts via any other messenger - e.g. via Signal, – without this messenger being able to observe that you are in fact sending a large file.</p>
<p>We did not yet decide whether we will be making a separate security audit of XFTP implementation, or if we combine it with the next security audit of SimpleX Chat. The latter seems more likely, as XFTP uses the same cryptographic primitives that were reviewed during <a href="https://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html">SimpleX Chat security assessment by Trail of Bits</a> in November 2022.</p>
<p>Some links to answer the most common questions:</p>
<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html#the-first-messaging-platform-without-user-identifiers">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#why-having-users-identifiers-is-bad-for-the-users">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Please also see our <a href="https://simplex.chat/">website</a>.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>See <a href="https://github.com/simplex-chat/simplex-chat/tree/master#help-us-with-donations">this section</a> for the ways to donate.</p>
<p>Thank you,</p>
<p>Evgeny</p>
<p>SimpleX Chat founder</p>
</content>
</entry>
<entry>
<title>SimpleX Chat v4.6 – with hidden profiles, community moderation, improved audio/video calls and reduced battery usage.</title>
<li><a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#group--community-moderation">group / community moderation</a></li>
<li><a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#smp-server-monitoring">SMP server monitoring: status bot and page</a></li>
</ul>
<p>Also, we added <a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#chinese-and-spanish-interface---you-can-choose-the-language-via-the-app">Chinese and Spanish interface languages</a>, thanks to the users' community and Weblate!</p>
<h3 id="armv7a-32-bit-and-android-8-support" tabindex="-1">ARMv7a (32 bit) and Android 8+ support!</h3>
<p>It increases the number of supported Android devices twice - now most of your friends should be able to install SimpleX Chat. SimpleX Chat still doesn't support Android 7 and erlier versions.</p>
<p>If you install the app from GitHub or F-Droid you need to choose the correct APK, Play Store will provide it automatically.</p>
<p>For a long time the main way to protect SimpleX Chat app from people who have access to your phone was device authentication - it is requested when you open the app (and some of its sensitive functions).</p>
<p>Many users asked to allow setting the app password or PIN independently from the device PIN, as some other apps do. But it did not seem a good enough solution - if somebody has your device PIN, then in most cases they can also ask you to provide the app PIN as well.</p>
<p>So instead of having an app password, that reduces convenience and doesn't improve security too much, we did what we think could be better. You can now create hidden chat profiles, that are not visible anywhere in the app, and do not show any notifications, until you enter a correct passphrase. If multiple profiles are hidden with the same passphrase they will all show in the list when you enter it.</p>
<p>It's important to remember that these hidden profiles are still stored locally on your device, so if somebody has access to your chat database (they need to know database passphrase, that is independent from device PIN or profile passphrases) or to chat console in the app, they will be able to access these profiles data and reset their passwords. We are considering how chat console can be better protected - e.g., by requiring a separate password or by providing an option to remove it from the UI permanently - tell us what you think.</p>
<h3 id="group-community-moderation" tabindex="-1">Group / Community moderation</h3>
<p>Initially we did not design SimpleX Chat to support communities - our focus has always been maximum privacy and security.</p>
<p>SimpleX Chat supports small and fully decentralized groups, that are not hosted anywhere. But many users want to participate in and to discover communities. Since we added support for group links, the groups we created to let users test the app started to grow, and many other communities of over 100 people emerged.</p>
<p>We are already observing some less-than-friendly messages and undesirable content that is not welcome in some communities. So this version adds features allowing to moderate groups.</p>
<p>Firstly, group admins and owners can revoke members rights to send messages to the group by assigning members an &quot;observer&quot; role, and also make this role default for users joining via a group link.</p>
<p>Secondly, group admins can now delete messages sent by other members (excluding the messages sent by the group owners). &quot;Moderate&quot; action in the message menu will either mark the message as deleted or delete it irreversibly for all members, as set in group preferences by the owners.</p>
<p>These features will allow group owners to decide their own rules. More robust moderation tools are coming later when we build support for large communities.</p>
<p>Prior to this version audio and video calls in iOS app were very limited – they only worked while the app was in foreground. This version fully re-implemented audio/video calls in iOS – it now uses native WebRTC library instead of web view. These calls are still end-to-end encrypted, and compatible with the calls in the previous versions of the app, both on iOS and on Android platforms.</p>
<p>Where allowed by App Store policy, the calls on iOS now use Apple's native interface for calls CallKit, that allows to accept calls from the lock screen, prevents call interruption by incoming phone calls and optionally allows to include calls in the phone call history - the last option needs to be enabled separately.</p>
<p>Calls on Android were also improved – they now support bluetooth headphones, allow changing volume in video calls and support proximity sensor during the audio call, to prevent accidental interruption when you hold the phone close to your ear.</p>
<p>We know that battery usage of SimpleX Chat is suboptimal, and we are committed to reduce it. Unfortunately, there is no simple change that we could make to solve this problem, it requires many systematic improvements and fixes.</p>
<p>One of the big issues, particularly in large groups, was inefficient retry strategy for sending messages in cases when the receiving message queue (mailbox) was out of capacity.</p>
<p>This version increases the maximum retry period for &quot;out-of-capacity&quot; scenario to 1 hour, and also preserves this retry period in the database. So, if previously before the message expired in 48 hours there were up to ~2800 delivery attempts and up to ~45Mb wasted traffic per recipient (depending on how frequently the app was restarted), now there will be only ~50 retries, resulting in not more than 0.8Mb of traffic - up to 56x traffic reduction when sending messages to the large groups.</p>
<p>This issue might not have affected you at all, and also solving it won't reduce overall traffic/battery usage by that factor - there are other inefficiences we will be addressing. But if you actively sent messages to large groups you should observe a substantial reduction of battery and traffic consumption.</p>
<p>Please share your experience. If the battery usage is still suboptimal, please share your usage statistics - they can be requested in chat console with <code>/get stats</code> command - it will return the aggregated number of network operations, per server, since the app was started. Please note that these statistics include the addresses of the servers you connect to, so if you want to keep them private, please redact them. You can also reset usage statistics with <code>/reset stats</code> command.</p>
<h3 id="smp-server-monitoring" tabindex="-1">SMP server monitoring</h3>
<p>If you use preset servers in SimpleX Chat you can now see when we do any maintenance or when the server is down either by <a href="https://simplex.chat/contact#/?v=1-2&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FShQuD-rPokbDvkyotKx5NwM8P3oUXHxA%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEA6fSx1k9zrOmF0BJpCaTarZvnZpMTAVQhd3RkDQ35KT0%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion">connecting to status bot via the app</a> or by visiting a <a href="https://status.simplex.chat/">status page</a>. Status bot always sends automatic messages before the server is restarted for maintenance, but in case of downtime if the same server is down that you use to receive the messages from the bot, you may miss them - check the status page in this case.</p>
<h3 id="chinese-and-spanish-interface-you-can-choose-the-language-via-the-app" tabindex="-1">Chinese and Spanish interface - you can choose the language via the app!</h3>
<p>Thanks to our users' community and to Weblate providing a free hosting plan for SimpleX Chat translations we can now support more languages in the interface – this version adds Chinese and Spanish and more are in progress.</p>
<p>You can <a href="https://github.com/simplex-chat/simplex-chat/tree/stable#translate-the-apps">contribute the translation</a> of the apps to your language too!</p>
<p>The app now supports 8 languages in addition to English - Czech, German, Spanish, French, Italian, Dutch, Russian and Chinese. You can now choose the language via the app settings (Appearance page), independently from the system settings.</p>
<p><a href="https://simplex.chat/#how-simplex-works">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/#why-ids-bad-for-privacy">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Visit our <a href="https://simplex.chat/">website</a> to learn more.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>See <a href="https://github.com/simplex-chat/simplex-chat/tree/master#help-us-with-donations">this section</a> for the ways to donate.</p>
<p>Thank you,</p>
<p>Evgeny</p>
<p>SimpleX Chat founder</p>
</content>
</entry>
<entry>
<title>SimpleX Chat: vision and funding, v5.0 released with videos and files up to 1gb</title>
<content xml:lang="en" type="html"><h1 id="simplex-chat-vision-and-funding-v50-released-with-videos-and-files-up-to-1gb" tabindex="-1">SimpleX Chat: vision and funding, v5.0 released with videos and files up to 1gb.</h1>
<p>SimpleX Chat vision and funding:</p>
<ul>
<li><a href="https://simplex.chat/blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.html#why-is-it-a-commercial-company">why is it a commercial company?</a></li>
<li><a href="https://simplex.chat/blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.html#how-is-it-funded-and-what-is-the-business-model">how is it funded and what is the business model?</a></li>
<li><a href="https://simplex.chat/blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.html#what-is-next">what is next?</a></li>
</ul>
<p>What's new in v5.0:</p>
<ul>
<li><a href="https://simplex.chat/blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.html#send-videos-and-files-up-to-1gb">send videos and files up to 1gb</a></li>
<li><a href="https://simplex.chat/blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.html#app-passcode">app passcode independent from system authentication</a></li>
<p>Also, we added Polish interface language, thanks to <a href="https://github.com/simplex-chat/simplex-chat#help-translating-simplex-chat">the users' community and Weblate</a>.</p>
<p>SimpleX Chat apps are now available in 10 languages!</p>
<h2 id="simplex-chat-vision-and-funding" tabindex="-1">SimpleX Chat vision and funding</h2>
<h3 id="why-is-it-a-commercial-company" tabindex="-1">Why is it a commercial company?</h3>
<p>It was a big decision: whether SimpleX Chat should be a non-profit project or an open-source project led by a commercial company.</p>
<p>During the last 25 years of the Internet, commercial companies have shown a much higher ability to innovate than non-profit organizations. One of the most inspiring examples is NetScape that created the Web as we know it - not only as the destination to access information, but also as an application platform, inventing cookies, SSL and JavaScript, that to this day remain the main building blocks for all web applications.</p>
<p>While SimpleX Chat Ltd is a commercial company, SimpleX Chat software is and will remain open-source. We believe that this way we will create much more value both for the end users, and also for the shareholders and the employees of the company.</p>
<p>Many large tech companies prioritizing value extraction over value creation earned a bad reputation for all businesses, particularly in the communities that value decentralization and privacy. But commercial objectives do not have to result in exploitation. Our goal is to build a new kind of communication network, and also an application platform, that is private by design, fully decentralized and not owned by any single entity, where SimpleX Chat Ltd is one of many organizations that operate the network. I shared my thoughts about how the Internet and privacy might evolve in the interview in <a href="https://optoutpod.com/episodes/s3e02-simplexchat/">Opt Out Podcast</a>.</p>
<h3 id="how-is-it-funded-and-what-is-the-business-model" tabindex="-1">How is it funded and what is the business model?</h3>
<p>We started working full-time on the project in 2021 when <a href="https://www.linkedin.com/in/portmanwills/">Portman Wills</a> and <a href="https://www.linkedin.com/in/peterbriffett/">Peter Briffett</a> (the founders of <a href="https://wagestream.com/en/">Wagestream</a> where I led the engineering team) supported the company very early on, and several other angel investors joined later. In July 2022 SimpleX Chat raised a pre-seed funding from the VC fund <a href="https://www.villageglobal.vc/">Village Global</a> - its co-founder <a href="https://casnocha.com/">Ben Casnocha</a> was very excited about our vision of privacy-first fully decentralized messaging and community platform, both for the individual users and for the companies, independent of any crypto-currencies, that might grow to replace large centralized platforms, such as WhatsApp, Telegram and Signal.</p>
<p>Overall we raised from our investors approximately $370,000 for a small share of the company to allow the project team working full time for almost two years, funding product design and development, infrastructure, and also <a href="https://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html">the security assessment by Trail of Bits</a>. A large part of this money is not spent yet.</p>
<p>The project was hugely supported by the users as well - collectively, <a href="https://github.com/simplex-chat/simplex-chat#help-us-with-donations">you donated</a> over $25,000. Without these donations the investment we raised would not be possible, because we believe that voluntary user donations can sustain the project in the long term – it already covers all infrastructure costs. There are only two ways an Internet service can exist - either users are paying for it, or the users data becomes the product for the real customers, as happened with many large Internet companies. In the latter case the users are losing much more money than they are saving by giving away their privacy and the rights to the content they create on the centralized platforms.</p>
<p>Going forward we plan to keep the basic usage of the platform free, and at the same time we will be providing the benefits to the project sponsors. For example, there will be additional app icons and user profile badges. There also will be higher file transfer limits – currently we don't limit it at all, only limiting the file size, but it's unlikely to be sustainable. In any case, the app will remain highly usable for everyone for free, and fully open-source. Several other apps are already being developed based on our app core, leading to a fully decentralized network.</p>
<h3 id="what-is-next" tabindex="-1">What is next?</h3>
<p>Our goals for the next 1-2 years are to make the messaging network:</p>
<ul>
<li>more reliable and resilient, by adding redundancy into the message delivery and delivery receipts,</li>
<li>more private, by automating rotation of the servers used to deliver messages and by adding delivery relays to better protect IP addresses of the users,</li>
<li>more usable by adding and improving the functions users are expecting in messengers, and also adding some unique functions, like we did with <a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#incognito-mode">incognito mode</a>, <a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#live-messages">live messages</a> and <a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#hidden-chat-profiles">hidden profiles</a>.</li>
</ul>
<p>One major initiative we will kick-off this year is the support for large, fully decentralized and private communities and groups not hosted on any servers – something that no Internet platform achieved so far in as private and efficient way as we plan to build it.</p>
<p>To accelerate product development and growth we will be raising a seed funding this year, both from the VCs and angel investors, and we also might offer our users an opportunity to participate in the crowd funding round on the same terms as other investors, allowing to both support the project and to benefit from its future growth. <a href="https://simplex.chat/#join-simplex">Subscribe to our updates</a> not to miss it, connect to the team in SimpleX Chat and <a href="https://github.com/simplex-chat/simplex-chat#join-user-groups">join users' groups</a>.</p>
<h2 id="whats-new-in-v50" tabindex="-1">What's new in v5.0</h2>
<h3 id="send-videos-and-files-up-to-1gb" tabindex="-1">Send videos and files up to 1gb!</h3>
<p>In the beginning of March <a href="https://simplex.chat/blog/20230301-simplex-file-transfer-protocol.html">we released servers and command-line utility to send and receive files via XFTP protocol</a> - a very private and secure protocol that sends end-to-end encrypted files in chunks, protecting meta-data better than any alternatives we know of.</p>
<p>Now this protocol is fully integrated in SimpleX Chat, and all files except small voice messages are sent using this protocol (small voice messages are sent as usual messages). Not only it is much faster than before - with the fast Internet connection I can send 25Mb file in 3 seconds and 1gb file in 2 minutes (for most users it's capped at the available Internet bandwidth), it has two other major advantages making it more usable:</p>
<ul>
<li>the file sent to a group has to be uploaded only once, regardless of the group size.</li>
<li>once the file is uploaded (it will have the tick), you no longer need to be online for your contact (or group members) to be able to receive it.</li>
</ul>
<p>As for the metadata privacy, it has similar guarantee to SimpleX Messaging Protocol. The files are sent via TLS 1.2/1.3, with the same server identity verification, TLS channel binding and upload authorization as used with SMP servers. But the file metadata is protected even if TLS is compromised, as there are no identifiers and ciphertext in common in server received and sent traffic, allowing to correlate only by sending and receiving time. Correlating by time becomes less efficient as the server traffic grows.</p>
<p>We also added the ability to send videos in the chat, so they can be played right in the conversation or on full screen without leaving the app – thanks to the efficient and fast file transfer they are very usable.</p>
<p>We also plan to add support for longer and higher quality voice messages, and also for sending full resolution images in the next versions.</p>
<p>While we do think that app passcode does not increase security too much, compared with device passcode or biometric protection, there are cases when it may be preferable, and also many users really wanted that it is added.</p>
<p>Now you can choose whether to use faster and more convenient system biometric authentication or to use a separate app passcode. You can choose which one to use when it is first offered, or switch later in the settings.</p>
<p>Two small improvements to the app networking capabilities were added in this version.</p>
<p>Firstly, you can now make your self-hosted servers available on IPv6 addresses, and the app supports them as well. Please bear in mind that older clients won't be able to connect to you if you use IPv6 address, and also that some ISPs do not provide IPv6 addresses to their users, in which case they would also not be able to connect if IPv6 address is used. To allow connections in these cases you should make your servers available on some domain name that resolves to both IPv4 and IPv6 addresses, and use this domain name in the server address.</p>
<p>Secondly, Android client now supports configuring host and port of the SOCKS proxy, allowing to use apps other than Orbot and also to run SOCKS proxy in the local network, to save mobile device battery.</p>
<p><a href="https://simplex.chat/#how-simplex-works">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/#why-ids-bad-for-privacy">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Visit our <a href="https://simplex.chat/">website</a> to learn more.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>See <a href="https://github.com/simplex-chat/simplex-chat/tree/master#help-us-with-donations">this section</a> for the ways to donate.</p>
<li><a href="https://simplex.chat/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html#voice-messages-up-to-5-minutes-better-quality-playback-control">voice messages up to 5 minutes</a>.</li>
<li><a href="https://simplex.chat/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html#disappearing-messages-choose-any-time">custom time to disappear</a>.</li>
<li>new design and <a href="https://simplex.chat/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html#customize-and-share-color-themes">customizable themes</a> that you can share!<sup>*</sup></li>
<p>There are lots of small improvements and fixes in this release:</p>
<ul>
<li>setting to disable audio/video calls per contact.</li>
<li>group welcome message visible in a group profile - add the link to join the group there.</li>
<li>fixes for sending files.</li>
<li>configurable SOCKS proxy host and port<sup>*</sup>.</li>
<li>improved calls on lock screen<sup>*</sup>.</li>
<li>locale-dependent formatting of time and date<sup>*</sup>.</li>
</ul>
<p>Also, we added Japanese and Portuguese (Brazil)<sup>*</sup> interface languages, thanks to <a href="https://github.com/simplex-chat/simplex-chat#help-translating-simplex-chat">our users and Weblate</a>.</p>
<p>* These features are available in the Android version only.</p>
<p>No idea why it took us so long to add them – finally we have them, and they are great.</p>
<p>We didn't like the view of other messengers plagued by 40 different reactions on a message, and we were not quite sure what can be done about it, so we initially decided to limit available reactions to just 6: thumbs up 👍, down 👎, smile 😀, tear 😢, heart ❤️ and rocket 🚀. But unlike some other messengers, we don't limit the reactions to just one per message - you can put up to 3.</p>
<p>You can add them via the menu, or just by tapping the reaction already on the message.</p>
<p>The next app version will allow prohibiting the reactions per conversation, as you asked. Some groups work better with more substantive responses.</p>
<p>Since <a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html#instant-voice-messages">v4.3</a> voice messages were sent in small 16kb chunks, so we had to limit them to 30-40 seconds for better user experience, as sending larger files would require the sender to be online.</p>
<p>With the new XFTP protocol that allows sending files up to 1gb it is now possible to increase the message size - we decided to limit it at 5 min, increasing their quality 2x (the bitrate is increased from 16 to 32kbps). We also added a slider to control the playback.</p>
<h3 id="disappearing-messages-choose-any-time" tabindex="-1">Disappearing messages: choose any time!</h3>
<p>Since <a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#disappearing-messages">v4.4</a> disappearing messages were only configurable for the whole conversation, with a limited choice of allowed times between 30 seconds and 1 month.</p>
<p>This version allows to configure the time for messages to disappear more granularly, in the range from 1 second to 3 months. You can also set a different time to disappear when you send the message (hold the Send button), as long as disappearing messages are enabled in the conversation.</p>
<p>I <a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html#irreversible-message-deletion">wrote previously</a> why we decided to require the recipient concent before the messages can be fully deleted by the sender - in short, it is to support recipient's data sovereignty and prevent the possibility of offensive messages being removed without any trace. By default, when the sender deletes the message it is marked as deleted, rather than fully deleted, and you can reveal the original message.</p>
<p>You've found the workaround for it of course - it's enough to simply edit the message to hide the original content. This version adds a visible message editing history, together with other detailed information about when the message was sent, received or deleted, that wasn't visible in the conversation.</p>
<h2 id="customize-and-share-color-themes" tabindex="-1">Customize and share color themes</h2>
<p>Android app now allows choosing between three color themes - Light, Dark and SimpleX (a dark blue theme). You can customize any theme by setting 9 different colors used in the app, including titles, menus, accent colors and colors for sent and received messages.</p>
<p>You can share your theme with other users by exporting it to a file and sending to them. You can also <a href="https://simplex.chat/blog/docs/themes.html">contribute your favorite themes</a> to our GitHub repository.</p>
<p>This is something many of you asked before - when asked to enter the app passcode under duress, to be able to enter a special self-destruct code that would remove the app data. This feature is offered in many security tools, and now you can configure it in SimpleX Chat as well.</p>
<li>switch lock mode to Passcode and, if necessary, enable lock – Self-destruct passcode will become available.</li>
<li>enable it, enter the main passcode and then enter and confirm self-destruct passcode.</li>
<li>optionally, you can set the new display name of the profile that will be created after the data was wiped. If it is left blank, a new empty profile will have a random name.</li>
<p><a href="https://simplex.chat/#how-simplex-works">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/#why-ids-bad-for-privacy">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Visit our <a href="https://simplex.chat/">website</a> to learn more.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>See <a href="https://github.com/simplex-chat/simplex-chat/tree/master#help-us-with-donations">this section</a> for the ways to donate.</p>
<li><a href="https://simplex.chat/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html#message-delivery-receipts">message delivery receipts</a> – with opt-out per contact!</li>
<li><a href="https://simplex.chat/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html#filter-favorite-and-unread-chats">filter favorite and unread chats</a>.</li>
<li><a href="https://simplex.chat/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html#problems-of-public-groups">problems of public groups</a>:
<ul>
<li>why not all messages are received.</li>
<li>how to cope with these problems.</li>
<li>when will public groups be more usable.</li>
</ul>
</li>
<li><a href="https://simplex.chat/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html#what-about-read-receipts">what about read receipts?</a></li>
</ul>
<h2 id="whats-new-in-v52" tabindex="-1">What's new in v5.2</h2>
<p>Most messaging apps add two ticks to sent messages – the first one to show that the message is accepted by the server, and the second – that it is delivered to the recipient's device. It confirms that the network is functioning, and that the message is not lost or delayed. SimpleX Chat now has this feature too!</p>
<p>In some cases it may compromise recipients' privacy, as they show that the recipient is online, so we made sending delivery receipts optional – it can be disabled separately for each chat profile or contact. For the new chat profiles this feature is enabled by default.</p>
<p>To avoid compromising your privacy, sending delivery receipts is disabled for all your existing chat profiles. The first time you start the app after the update, you will be offered to enable them for all <a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#hidden-chat-profiles">visible profiles</a>, and they can be enabled later via Privacy and Security settings.</p>
<h3 id="filter-favorite-and-unread-chats" tabindex="-1">Filter favorite and unread chats</h3>
<p>You can now mark your contacts and groups as <em>favorite</em>, to be able to find them faster. With filter enabled, you will only see favorite chats, chats that contain unread messages and also any unaccepted group invitations and contact requests.</p>
<p>Active SimpleX Chat users know how broken the current group experience is, and that we plan some major overhaul of the groups protocol – more on that below. In the meanwhile, we added some simple features that make groups in their current state a bit more usable.</p>
<h4 id="what-is-this-in-reply-to" tabindex="-1">What is this in reply to?</h4>
<p>A major problem is that you can see replies to the messages you've not seen before - this would happen both when you just join the group, and didn't connect to most other members, and also when other new members join the group and they didn't yet connect to you – so literally all the time, and the bigger the group gets, the worse it becomes. While this problem cannot be solved without major group protocol changes, at least there is now ability to see the original message that was replied to via the message information.</p>
<h4 id="how-to-connect-to-this-member" tabindex="-1">How to connect to this member?</h4>
<p>To simplify direct connections with other group members, you can now share your SimpleX address via your chat profile, and group members can send you a contact request even if the group does not allow direct messages.</p>
<h4 id="how-to-find-a-member-in-the-list" tabindex="-1">How to find a member in the list?</h4>
<p>Large member lists (and also the long lists of contacts, if you have many of them) become hard to scroll through, so now there is a search in both lists.</p>
<p>This version fixes many long-standing problems with the message delivery, failed connections with group members (that also contributed to group fragmentation), and reduces traffic in groups (beta users experienced a traffic spike because of this fix, but it doesn't affect the final v5.2 release). It's not the end of the road to making SimpleX Chat as stable as mainstream messengers, but it is a big improvement.</p>
<p>Please report the cases when messages are not delivered – delivery receipts should help with that.</p>
<h4 id="messages-failed-to-decrypt-problem-solved" tabindex="-1">Messages failed to decrypt? Problem solved!</h4>
<p>Previously, a growing number of users had the issue when after restoring the chat database from backup, messages from some contacts failed to decrypt and were showing an error in the app.</p>
<p>This happens due to double ratchet protocol protecting the integrity of end-to-end encryption after the compromise - <a href="https://simplex.chat/blog/docs/glossary.html#post-compromise-security">post-compromise security</a>. The protocol logic does not allow to use the old version of the database to decrypt the message.</p>
<p>v5.2 added the extension to the messaging protocol allowing to negotiate the new ratchet keys in such cases - both with the contacts and the group members. This requires a user action, and it resets the security code verification status for this contact or member – you need to verify it again to have the additional protection from <a href="https://simplex.chat/blog/docs/glossary.html#man-in-the-middle-attack">man-in-the-middle attacks</a>.</p>
<p>The negotiation of the new ratchet keys still happens via the end-to-end encrypted messages, as the protocol has two layers of end-to-end encryption, so it cannot be compromised by the messaging relays.</p>
<p>You may still lose connection if you or your contact changed the receiving address after you made the backup, so make sure to make a new backup after any receiving address changes.</p>
<h4 id="reconnect-the-servers" tabindex="-1">Reconnect the servers</h4>
<p>While v5.2 solved many message delivery issues, there may be some others, but they are usually resolved with app restart. It was difficult to fully restart Android app, as there is a continuosly running background service for notifications that doesn't restart with the app. Now Android app has both Restart and Shutdown buttons that take background service into account.</p>
<p>On iOS you can now pull down the list of conversations to reconnect to all relays without restarting the app.</p>
<p>You can now send a separate disappearing message if the chat preferences allow them, but do not have any time to disappear enabled – this applies both to groups and to contacts. You can also set the time to disappear up to 12 months.</p>
<h3 id="problems-of-public-groups" tabindex="-1">Problems of public groups</h3>
<p>As I wrote above, the major problem is that not all messages are received by all members, or, at least, they may be substantially delayed. Additional problems are various scenarios when the list of members gets out of sync for different members.</p>
<p>How to cope with these problems?</p>
<p>It really helps to only use one link shared with the members to join the group - the one created by the client that is most frequently online, ideally always online. This is sometimes confusing, as any group admin can create another group link, and share it with the members, and if this admin is not online, the new member won't be able to join.</p>
<p>We will add new group features to manage fragmentation - there will be an option to fix the connection with the member that you failed to connect to by passing the link out-of-band. This can be particularly helpful for stable groups of 20-50 people where it's important to see all messages.</p>
<p>In the long term, the only way to make groups usable is to move to a new design. We considered several options.</p>
<h4 id="why-not-hosted-groups-with-mls" tabindex="-1">Why not hosted groups with MLS?</h4>
<p>Initially, we considered the design with the dedicated servers, potentially self-hosted, that host groups. This design would require adopting MLS (or similar) protocol for group-wide key agreement. Unfortunately, this design is not sufficiently resilient and easier to censor than decentralized design. Also, MLS protocol is very complex to implement, requires a centralized component, and reduces forward secrecy. So we decided against this approach.</p>
<h4 id="why-not-fully-decentralized-groups" tabindex="-1">Why not fully decentralized groups?</h4>
<p>We also <a href="https://simplex.chat/blog/docs/rfcs/2023-05-02-groups.html">considered</a> rumour-mongering protocol, where all members are equal and participate in message dissemination. The problem with this approach is that it adds a lot of traffic for all members, even those who mostly read messages. Also, it still requires establishing a fully connected graph, and with large groups it becomes prohibitively expensive and unreliable, given that many members join public groups for a limited time.</p>
<h4 id="members-host-the-groups" tabindex="-1">Members host the groups</h4>
<p>We are now considering a middle-ground - the design where the owners and admins host the group, synchronising the state between them, receiving and re-broadcasting the messages between all members. This puts a higher burden on these members, but these clients can be hosted in the cloud, and also group owners have a larger incentive to maintain group integrity. At the same time, this design is better for the rest of the group members, as they don't need to establish connections with all other members, only with a limited number of &quot;hosting&quot; members, and it also better protects their privacy, due to the lack of direct connections between most members.</p>
<p>This approach avoids the need for a group-wide key agreement protocol, as hosting members are expected to have access to all content anyway, so pair-wise ratchets are sufficient. At the same time the content remains end-to-end encrypted, and protected from the outsiders.</p>
<p>This approach also simplifies moderation - the message that needs to be removed simply won't reach the members before it is moderated (in case of automatic or policy-based moderation).</p>
<p>Discovery and content search in such groups will be provided via a dedicated discovery server that will participate in the group, provide an always-online client, and also automatic content moderation functionality - a possible approach to moderation is <a href="https://simplex.chat/blog/docs/rfcs/2023-05-22-groups-moderation.html">described here</a>.</p>
<p>We really look forward to your feedback on this design.</p>
<h3 id="what-about-read-receipts" tabindex="-1">What about read receipts?</h3>
<p>We have an approximately equal number of users who ask us to add receipts, and those who ask not to add them, even as optional.</p>
<p>While read receipts provide some convenience to the message senders, they introduce a lot of stress for the recipients.</p>
<p>As one of the users in the group wrote it: &quot;The existence of read receipts in other platforms is exhausting and is often a source of undue stress. I have to make a decision to read something and let someone know that I have read something and decided not to respond or merely didn't have the time to respond. The outcome of that is a complex social negotiation with non-theoretical social fallout as a consequence. All in all, it's an invasion of privacy of being able to read things at the pace of the individual as opposed to the pace dictated by others... Most people don't need a read receipt, so leave it to a group of individuals to decide if having read receipts make sense to them for their workflow&quot;.</p>
<p>Also read <a href="https://neilalexander.dev/2021/04/09/read-receipts-typing-notifs">this post</a> about the damage from read receipts and other invasive features, like typing and presense notifications.</p>
<p>There is also no discounting that the presense of read receipts functionality, even as opt-in, creates a social pressure to enable them, with the same consequences – there are many scenarios when they become non-optional in some relationships. So many users belive, and we share this view, that it is better not to have these features at all. We will be re-assessing this view.</p>
<p><a href="https://simplex.chat/#how-simplex-works">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/#why-ids-bad-for-privacy">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Visit our <a href="https://simplex.chat/">website</a> to learn more.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>See <a href="https://github.com/simplex-chat/simplex-chat/tree/master#help-us-with-donations">this section</a> for the ways to donate.</p>
<p>Thank you,</p>
<p>Evgeny</p>
<p>SimpleX Chat founder</p>
</content>
</entry>
<entry>
<title>SimpleX Chat v5.3 released: desktop app, local file encryption and improved groups with directory service</title>
<li><a href="https://simplex.chat/blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.html#group-directory-service-and-other-group-improvements">directory service and other group improvements</a>.</li>
<li><a href="https://simplex.chat/blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.html#encrypted-local-files-and-media-with-forward-secrecy">encrypted local files and media with forward secrecy</a>.</li>
<p>Also, we added 6 new interface languages: Arabic<sup><em></em></sup>, Bulgarian, Finnish, Hebrew<sup></sup>, Thai and Ukrainian - thanks to <a href="https://github.com/simplex-chat/simplex-chat#help-translating-simplex-chat">our users and Weblate</a>.</p>
<p>Thanks a lot to everybody who was testing the desktop app since July – it really helped to make it stable!</p>
<p>To use desktop app you need to <strong>create a new profile</strong>. As SimpleX platform has no user accounts, it's not as simple as for centralized apps to access the same profile from two devices.</p>
<p>The next app version will allow using your mobile profile from desktop app. For now, as a workaround, you can join groups from both mobile and desktop devices, and use small groups instead of direct conversations.</p>
<p>When you start the app first time, you will be offered to <strong>set database passphrase</strong> – you have to memorize it, as there is no way to recover it. If you skip it, a random passphrase will be generated and stored on your desktop device as plaintext (unencrypted) – you can change it later.</p>
<p>Other limitations of the desktop app:</p>
<p>You can download the desktop app for Linux and Mac via <a href="https://simplex.chat/downloads">downloads page</a>. Windows version will be available soon.</p>
<h2 id="group-directory-service-and-other-group-improvements" tabindex="-1">Group directory service and other group improvements</h2>
<p>Directory service provides a way to search for public groups submitted by the users. To use it, you need to connect to it via SimpleX Chat, as you would connect to any other contact, and type some words to search.</p>
<p>You can also create and register your group, with some limitations explained <a href="https://simplex.chat/blog/docs/directory.html">here</a>.</p>
<p>Other group improvements in this release:</p>
<ul>
<li>
<p>you can send delivery receipts to the groups up to 20 members.</p>
</li>
<li>
<p>if the group settings allow it, you can send direct messages to group members even after you deleted the contact.</p>
</li>
<li>
<p>connections between members are made faster, and the bug that prevented the connections in some cases is fixed in this release.</p>
</li>
</ul>
<p>The next release will reduce the time it takes to send messages to the group, especially when there are many members or when you have a slow device storage.</p>
<h2 id="encrypted-local-files-and-media-with-forward-secrecy" tabindex="-1">Encrypted local files and media with forward secrecy</h2>
<p>All messages, files and media sent via SimpleX Chat were always end-to-end encrypted from the very beginning. SimpleX Chat uses double-ratchet algorithm with encrypted message headers, for the best possible meta-data protection.</p>
<p>You contacts, groups and messages are stored in the local database on your device, and this database was encrypted from <a href="https://simplex.chat/blog/20220928-simplex-chat-v4-encrypted-database.html">v4.0 released a year ago</a>.</p>
<p>But until this version all files and media in the app storage were not encrypted, and when you exported the chat archive, they were unencrypted there as well.</p>
<p>From v5.3 all files and media (except videos, for now) are encrypted with a random symmetric key - in many cases they are encrypted before they are written to the storage. Local file encryption can be disabled via Privacy &amp; Security settings, for example, if you need to access the files from the storage outside of the app.</p>
<p>In addition to the videos that are stored unencrypted, there are other rare scenarios when the received files may be unencrypted in this release. Files have an open or closed lock icons to indicate whether they were encrypted locally. These limitations will be addressed in the next release. In any case, all files and media are always sent end-to-end encrypted, without any exceptions.</p>
<p>The keys used to encrypt files locally are associated with the messages and stored in the encrypted database. If you delete a message with the attached file or media, the key will be irreversibly deleted as well. Even if an attacker gains access to your database passphrase later and to the copy of the encrypted file, they won't be able to decrypt the file.</p>
<p>This approach provides forward secrecy for locally stored files, unlike file encryption schemes used in some other apps when the same passphrase is used for all files.</p>
<p>Incognito mode was <a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html">added a year ago</a> to improve anonymity of your profile, but it was confusing for some users - it was a global setting, but it only affected the new connections.</p>
<p>It is now simpler to use - you can decide whether to connect to a contact or join a group using your main profile at a point when you create an invitation link or connect via a link or QR code.</p>
<p>When you are connecting to people you know you usually want to share your main profile, and when connecting to public groups or strangers, you may prefer to use a random profile.</p>
<p><a href="https://simplex.chat/#how-simplex-works">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/#why-ids-bad-for-privacy">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Visit our <a href="https://simplex.chat/">website</a> to learn more.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>See <a href="https://github.com/simplex-chat/simplex-chat/tree/master#help-us-with-donations">this section</a> for the ways to donate.</p>
<p>Thank you,</p>
<p>Evgeny</p>
<p>SimpleX Chat founder</p>
</content>
</entry>
<entry>
<title>SimpleX Chat v5.4 - link mobile and desktop apps via quantum resistant protocol, and much better groups.</title>
<content xml:lang="en" type="html"><h1 id="simplex-chat-v54-link-mobile-and-desktop-apps-via-quantum-resistant-protocol-and-much-better-groups" tabindex="-1">SimpleX Chat v5.4 - link mobile and desktop apps via quantum resistant protocol, and much better groups.</h1>
<p><strong>Published:</strong> Nov 25, 2023</p>
<p><strong>What's new in v5.4:</strong></p>
<ul>
<li><a href="https://simplex.chat/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html#link-mobile-and-desktop-apps-via-secure-quantum-resistant-protocol">Link mobile and desktop apps via secure quantum-resistant protocol</a>.
<ul>
<li>⚡️ Quick start - how to use it.</li>
<li><a href="https://simplex.chat/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html#faster-to-join-with-more-reliable-message-delivery">Faster to join and more reliable</a>.</li>
<li><a href="https://simplex.chat/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html#new-group-features">New group features</a>:
<ul>
<li>create groups with incognito profile,</li>
<li>block group members to reduce noise,</li>
<li>prohibit files and media in a group.</li>
</ul>
</li>
</ul>
</li>
<li><a href="https://simplex.chat/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html#better-calls">Better calls</a>: faster to connect, with screen sharing on desktop.</li>
</ul>
<p>There are many <a href="https://simplex.chat/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html#other-improvements">other improvements</a> and fixes in this release:</p>
<ul>
<li>profile names now allow spaces.</li>
<li>when you delete contacts, they are optionally notified.</li>
<li>previously used and your own SimpleX links are recognized by the app.</li>
<li>and more - see the <a href="https://github.com/simplex-chat/simplex-chat/releases/tag/v5.4.0">release notes</a>.</li>
</ul>
<h2 id="link-mobile-and-desktop-apps-via-secure-quantum-resistant-protocol" tabindex="-1">Link mobile and desktop apps via secure quantum-resistant protocol</h2>
<p>This release allows to use chat profiles you have in mobile app from desktop app.</p>
<p>This is only possible when both devices are connected to the same local network. To send and receive messages mobile app has to be connected to the Internet.</p>
<h3 id="quick-start-how-to-use-it" tabindex="-1">⚡️ Quick start - how to use it</h3>
<p>If you don't have desktop app installed yet, <a href="https://simplex.chat/downloads/">download it</a> and create any chat profile - you don't need to use it, and when you create it there are no server requests sent and no accounts are created. Think about it as about user profile on your computer.</p>
<p>Then in desktop app settings choose <em>Link a mobile</em> - it will show a QR code.</p>
<p>In mobile app settings choose <em>Use from desktop</em>, scan the QR code and verify session code when it appears on both devices - it should be the same. Verifying session code confirms that the devices are connected directly via a secure encrypted connection. There is an option to verify this code on subsequent connections too, but by default it is only required once.</p>
<p>The devices are now paired, and you can continue using all mobile profiles from desktop.</p>
<p>If it is an Android app, you can move the app to background, but iOS app has to remain open. In both cases, while you are using mobile profiles from desktop, you won't be able to use mobile app.</p>
<p>The subsequent connections happen much faster - by default, the desktop app broadcasts its session address to the network, in encrypted form, and mobile app connects to it once you choose <em>Use from desktop</em> in mobile app settings.</p>
<h3 id="how-does-it-work" tabindex="-1">How does it work?</h3>
<p>The way we designed this solution avoided any security compromises, and the end-to-end encryption remained as secure as it was - it uses <a href="https://simplex.chat/blog/docs/glossary.html#double-ratchet-algorithm">double-ratchet algorithm</a>, with <a href="https://simplex.chat/blog/docs/glossary.html#forward-secrecy">perfect forward secrecy</a>, <a href="https://simplex.chat/blog/docs/glossary.html#post-compromise-security">post-compromise security</a> and deniability.</p>
<p>This solution is similar to WhatsApp and WeChat. But unlike these apps, no server is involved in the connection between mobile and desktop. The connection itself uses a new SimpleX Remote Control Protocol (XRCP) based on secure TLS 1.3 and additional quantum-resistant encryption inside TLS. You can read XRCP protocol specification and threat model in <a href="https://github.com/simplex-chat/simplexmq/blob/master/rfcs/2023-10-25-remote-control.md">this document</a>. We will soon be <a href="https://github.com/simplex-chat/simplex-chat/blob/master/docs/rfcs/2023-09-30-pq-double-ratchet.md">augmenting double ratchet</a> to be resistant to quantum computers as well.</p>
<p>The downside of this approach is that mobile device has to be connected to the same local network as desktop. But the upside is that the connection is secure, and you do not need to have a copy of all your data on desktop, which usually has lower security than mobile.</p>
<p>Please note, that the files you send, save or play from desktop app, and also images you view are automatically saved on your desktop device (encrypted by default except videos). To remove all these files you can unlink the paired mobile device from the desktop app settings – there will be an option soon allowing to remove the files without unlinking the mobile.</p>
<h3 id="connecting-to-remote-simplex-cli" tabindex="-1">🤖 Connecting to remote SimpleX CLI</h3>
<p><em>Warning</em>: this section is for technically advanced users!</p>
<p>If you run SimpleX CLI on a computer in another network - e.g., in the cloud VM or on a Raspberry Pi at home while you are at work, you can also use if from desktop via SSH tunnel. Below assumes that you have remote machine connected via SSH and CLI running there - you can use <code>tmux</code> for it to keep running when you are not connected via ssh.</p>
<p>Follow these steps to use remote CLI from desktop app:</p>
<ol>
<li>On the remote machine add the IP address of your desktop to the firewall rules, so that when CLI tries to connect to this address, it connects to <code>localhost</code> instead: <code>iptables -t nat -A OUTPUT -p all -d 192.168.1.100 -j DNAT --to-destination 127.0.0.1</code> (replace <code>192.168.1.100</code> with the actual address of your desktop, and make sure it is not needed for something else on your remote machine).</li>
<li>Also on the remote machine, run Simplex CLI with the option <code>--device-name 'SimpleX CLI'</code>, or any other name you like. You can also use the command <code>/set device name &lt;name&gt;</code> to set it for the CLI.</li>
<li>Choose <em>Link a mobile</em> in desktop app settings, note the port it shows under the QR code, and click &quot;Share link&quot;.</li>
<li>Run ssh port forwarding on desktop computer to let your remote machine connect to desktop app: <code>ssh -R 12345:127.0.0.1:12345 -N user@example.com</code> where <code>12345</code> is the port on which desktop app is listening for the connections from step 3, <code>example.com</code> is the hostname or IP address of your remote machine, and <code>user</code> is some username on remote machine. You can run port forwarding in the background by adding <code>-f</code> option.</li>
<li>On the remote machine, run CLI command <code>/connect remote ctrl &lt;link&gt;</code>, where <code>&lt;link&gt;</code> is the desktop session address copied in step 3. You should run this command within 1 minute from choosing <em>Link a mobile</em>.</li>
<li>If the connection is successful, the CLI will ask you to verify the session code (you need to copy and paste the command) with the one shown in desktop app. Once you use <code>/verify remote ctrl &lt;code&gt;</code> command, CLI can be used from desktop app.</li>
<li>To stop remote session use <code>/stop remote ctrl</code> command.</li>
<h3 id="faster-to-join-with-more-reliable-message-delivery" tabindex="-1">Faster to join, with more reliable message delivery</h3>
<p>We improved the protocols for groups, by making joining groups much faster, and also by adding message forwarding. Previously, the problem was that until a new member connects directly with each existing group member, they did not see each other messages in the group. The problem is explained in detail in <a href="https://www.youtube.com/watch?v=7yjQFmhAftE&amp;t=1104s">this video</a> at 18:23.</p>
<p>With v5.4, the admin who added members to the group forwards messages to and from the new members until they connect to the existing members. So you should no longer miss any messages and be surprised with replies to messages you have never seen once you and new group members upgrade.</p>
<h3 id="new-group-features" tabindex="-1">New group features</h3>
<p><strong>Create groups with incognito profile</strong></p>
<p>Previously, you could only create groups with your main profile. This version allows creating groups with incognito profile directly. You will not be able to add your contacts, they can only join via group link.</p>
<p><strong>Block group members to reduce noise</strong></p>
<p>You now can block messages from group members that send too many messages, or the messages you don't won't to see. Blocked members won't know that you blocked their messages. When they send messages they will appear in the conversation as one line, showing how many messages were blocked. You can reveal them, or delete all sequential blocked messages at once.</p>
<p><strong>Prohibit files and media in a group</strong></p>
<p>Group owners now have an option to prohibit sending files and media. This can be useful if you don't won't any images shared, and only want to allow text messages.</p>
<p>Calls in SimpleX Chat still require a lot of work to become stable, but this version improved the speed of connecting calls, and they should work for more users.</p>
<p>We also added screen sharing in video calls to desktop app.</p>
<p>This version also has many small and large improvements to make the app more usable and reliable.</p>
<p>The new users and group profiles now allow spaces in the names, to make them more readable. To message these contacts in CLI you need to use quotes, for example, <code>@'John Doe' Hello!</code>.</p>
<p>When you delete contacts, you can notify them - to let them know they can't message you.</p>
<p>When you try to connect to the same contact or join the same group, or connect via your own link, the app will recognize it and warn you, or simply open the correct conversation.</p>
<p>You can find the full list of fixed bugs and small improvements in the <a href="https://github.com/simplex-chat/simplex-chat/releases/tag/v5.4.0">release notes</a>.</p>
<p>Some links to answer the most common questions:</p>
<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html#the-first-messaging-platform-without-user-identifiers">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#why-having-users-identifiers-is-bad-for-the-users">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Please also see our <a href="https://simplex.chat/">website</a>.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>See <a href="https://github.com/simplex-chat/simplex-chat/tree/master#help-us-with-donations">this section</a> for the ways to donate.</p>
<p>Thank you,</p>
<p>Evgeny</p>
<p>SimpleX Chat founder</p>
</content>
</entry>
<entry>
<title>SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect.</title>
<content xml:lang="en" type="html"><h1 id="simplex-chat-free-infrastructure-from-linode-v55-released-with-private-notes-group-history-and-a-simpler-ux-to-connect" tabindex="-1">SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect.</h1>
<p><strong>Published:</strong> Jan 24, 2024</p>
<p><a href="https://simplex.chat/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html#simplex-chat-infrastructure-on-linode">SimpleX Chat infrastructure on Linode</a>:</p>
<ul>
<li>Free infrastructure.</li>
<li>SimpleX servers in Linode Marketplace.</li>
<li><a href="https://simplex.chat/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html#simpler-ux-to-connect-to-other-users">simpler UX to connect to other users</a></li>
<li><a href="https://simplex.chat/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html#message-delivery-stability-and-other-improvements">message delivery stability and other improvements</a></li>
</ul>
<p>Also, we added Hungarian (only Android) and Turkish interface languages, thanks to <a href="https://github.com/simplex-chat/simplex-chat#help-translating-simplex-chat">our users and Weblate</a>.</p>
<p>SimpleX Chat Android app is now available in 20 languages!</p>
<h2 id="simplex-chat-infrastructure-on-linode" tabindex="-1">SimpleX Chat infrastructure on Linode</h2>
<p>We chose Linode as our hosting provider as and they have been consistently reliable, cheaper than alternatives, with excellent support and great documentation.</p>
<p>When Linode was acquired by Akamai, we were a bit nervous about how it may affect service quality. So far it's been working out quite well.</p>
<p>As the usage of SimpleX network was growing, so did our hosting costs, and from being really small they started to become significant, particularly as we didn't yet manage to optimize the servers last year.</p>
<p>Linode helped - we're really excited to announce that Akamai decided to support SimpleX Chat growth by accepting it into their <a href="https://www.linode.com/linode-for-startups/">Linode Rise startup program</a>.</p>
<p>Thanks to this program:</p>
<ul>
<li>
<p>we received free infrastructure for the first year up to $10,000 per month, no strings attached. It already saved us some money, and gave us enough time to optimize the servers - the latest version of the servers are much less costly to operate with the current traffic, and can support a much larger traffic within this limit. In the year 2 of the program we will receive 50% discount with unlimited traffic, and in year 3 - 25% discount.</p>
</li>
<li>
<p>Linode Marketplace now includes <a href="https://www.linode.com/marketplace/apps/simplex-chat/simplex-chat/">SimpleX Chat messages and file servers</a> - you can get free $100 credits for the first 2 months and run your own servers in just a few clicks, and use them in SimpleX Chat apps. Anybody can submit their application to Linode marketplace, but dedicated support we have from Linode team via this program made it simpler.</p>
</li>
<li>
<p>Akamai solution engineers are helping us to design high capacity server solution, free of charge, so that a single host can provide horizontally scalable capacity for messaging, allowing for a much larger number of concurrent users on a single server address. Initially we considered using HAProxy, and the latest proof of concept uses OpenResty - a fork of Nginx with Lua script engine - to route requests from a single host to multiple SMP relays, reducing an overhead for the clients that would be configured with a smaller number of higher capacity servers. This project is still in progress, there will be more details as we roll it out.</p>
</li>
</ul>
<h2 id="whats-new-in-v55" tabindex="-1">What's new in v5.5</h2>
<p><em>&quot;Where do I put notes for myself?&quot;</em> was a very common support question. There was a workaround - you could create an empty group, just with yourself, and use it to save notes, but it was not very convenient, and you could accidentally add members there.</p>
<p>This version has a more convenient and private alternative - the Private notes. It looks like an ordinary conversation where you can put text messages, links with previews, and any media and files, but they are not sent anywhere - they are stored locally, only on your device, with encrypted files.</p>
<p>You can access the Private notes created in mobile app from desktop app too, by linking a mobile and desktop apps - the feature <a href="https://simplex.chat/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html">added in the previous version</a>. It allows to conveniently share files between the devices without sending them over the Internet.</p>
<p>In the previous version, when users joined groups, they only saw an empty conversation, and the notifications of being connected to other members. This version allows group admins sending recent group history to the new members - this option is enabled by default for new groups, and can be enabled for the existing groups in the preferences. So now new members can join the conversation as soon as they join.</p>
<p>This does not mean that these messages are stored on any servers - the admin member that adds a new member to the group sends these messages directly when a new member joins. Groups are still fully decentralized, do not have any identity on the network, and fully private - only their members know they exist.</p>
<p>That is, unless a group owner decides to make it public. Groups can be registered in <a href="https://simplex.chat/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion">SimpleX groups directory</a> to be discovered by the new members - group directory is also improved.</p>
<h3 id="simpler-ux-to-connect-to-other-users" tabindex="-1">Simpler UX to connect to other users</h3>
<p>SimpleX platform has no user accounts or identities, and while it improves metadata privacy, it also makes it harder to understand how to connect to other people, particularly for the new users who are not invited by the existing users.</p>
<p>This version simplifies this interface by allowing to connect via the received link just by pasting the address into the search bar, as is common in many wallet apps and some other decentralized messengers. We also improved the interface of creating invitation links.</p>
<p>We will continue working on improving and simplifying user interface throughout the year. Please send us any feedback and suggestions to the team's address available in the app.</p>
<h3 id="message-delivery-stability-and-other-improvements" tabindex="-1">Message delivery stability and other improvements</h3>
<p>One of the long standing issues was that message reception could get stuck in some rare occasions, and only get resumed once the app is fully restarted. As Android app includes an always-on notification service that runs in background, full restart should be done via the app settings.</p>
<p>This version fixed many issues with message delivery stability and also added some diagnostics to identify any other cases when message delivery may stop. These fixes should also reduce battery usage, particularly on slow internet connections.</p>
<p>Other improvements in this version:</p>
<ul>
<li>you can now reveal secret messages by tapping. To send a secret message wrap in &quot;#&quot; characters, e.g. &quot;#password#&quot;.</li>
<li>you can delete the last user profile, simplifying account deletion. If you have <a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html">hidden user profiles</a>, they won't be deleted in this case, and will be accessible again once you create a new profile.</li>
<p>Some links to answer the most common questions:</p>
<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html#the-first-messaging-platform-without-user-identifiers">How can SimpleX deliver messages without user identifiers</a>.</p>
<p><a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html#why-having-users-identifiers-is-bad-for-the-users">What are the risks to have identifiers assigned to the users</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
<p>Please also see our <a href="https://simplex.chat/">website</a>.</p>
<h2 id="help-us-with-donations" tabindex="-1">Help us with donations</h2>
<p>Huge thank you to everybody who donated to SimpleX Chat!</p>
<p>We are prioritizing users privacy and security - it would be impossible without your support.</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 of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.</p>
<p>Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us.</p>
<p>See <a href="https://github.com/simplex-chat/simplex-chat/tree/master#help-us-with-donations">this section</a> for the ways to donate.</p>