diff --git a/blog/20201022-simplex-chat.html b/blog/20201022-simplex-chat.html index 035d4baa27..588e7ce4ce 100644 --- a/blog/20201022-simplex-chat.html +++ b/blog/20201022-simplex-chat.html @@ -378,26 +378,16 @@ window.addEventListener('scroll',changeHeaderBg);
-

Simplex chat

+

Simplex chat

Published: Oct 22, 2020

https://simplex.chat

-

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 ("simplex messaging protocol") and the website to try to explain the chat idea that would use this protocol.

+

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 ("simplex messaging protocol") and the website to try to explain the chat idea that would use this protocol.

Haskell protocol implementation: https://github.com/simplex-chat/simplexmq

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.

If anything, it was definitely helping to get to know Haskell types etc. much deeper than before :)

Any criticism would be great - thank you in advance!

Originally published at https://www.reddit.com/r/haskell/comments/jg6uh4/simplex_chat/

-
+
@@ -522,7 +512,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20210512-simplex-chat-terminal-ui.html b/blog/20210512-simplex-chat-terminal-ui.html index d864122edb..eff2d83b4d 100644 --- a/blog/20210512-simplex-chat-terminal-ui.html +++ b/blog/20210512-simplex-chat-terminal-ui.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
-

Announcing SimpleX Chat Prototype!

+

Announcing SimpleX Chat Prototype!

Published: May 12, 2021

For the last six months me and my son Efim have been working to bring you a working prototype of SimpleX Chat. We're excited to announce SimpleX Chat terminal client is now available here on Linux, Windows and Mac (you can either build from source or download the binary for Linux, Windows or Mac from the latest release).

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

@@ -395,17 +395,7 @@ window.addEventListener('scroll',changeHeaderBg);

We need your help!

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!

Originally published at https://www.reddit.com/r/haskell/comments/naw6lz/simplex_chat_prototype_terminal_ui_made_in_haskell/

-
+
@@ -530,7 +520,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20210914-simplex-chat-v0.4-released.html b/blog/20210914-simplex-chat-v0.4-released.html index 885a1c67f6..363cde825d 100644 --- a/blog/20210914-simplex-chat-v0.4-released.html +++ b/blog/20210914-simplex-chat-v0.4-released.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
-

SimpleX announces SimpleX Chat v0.4

+

SimpleX announces SimpleX Chat v0.4

Published: Sep 14, 2021

Open-source decentralized chat that uses privacy-preserving message routing protocol

We are building a new platform for distributed Internet applications where privacy of the messages and the network matter. SimpleX Chat 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.

@@ -390,26 +390,16 @@ window.addEventListener('scroll',changeHeaderBg);

Chat groups

To create a group use the /g <group> command. You can then invite contacts to the group by entering the /a <group> <name> command. Your contact(s) will need to use the /j accept command to accept the invitation to the group. To send messages to the group, simply enter #<group> <message>.

Please note: 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.

-

simplex-chat

+

simplex-chat

File transfer

Sharing files is simple! To send a file to a contact, use the /f @<contact> <file_path> command. The recipient will have to accept before the file is sent.

-

simplex-chat

+

simplex-chat

We're always looking for help!

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!

Please note: 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.

Our goal is to create a new kind of chat platform that lets you control your chat!

Originally published at https://www.reddit.com/r/selfhosted/comments/poal79/simplex_chat_an_opensource_decentralized_chat/

-
+
@@ -534,7 +524,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20211208-simplex-chat-v0.5-released.html b/blog/20211208-simplex-chat-v0.5-released.html index 19b2c34948..35e072e14d 100644 --- a/blog/20211208-simplex-chat-v0.5-released.html +++ b/blog/20211208-simplex-chat-v0.5-released.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
-

SimpleX announces SimpleX Chat v0.5

+

SimpleX announces SimpleX Chat v0.5

Published: Dec 08, 2021

Simplex Chat is the first chat platform that is 100% private by design - SimpleX no access to your connections graph

We are building a new platform for distributed Internet applications where privacy of the messages and the network matter. SimpleX Chat 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.

@@ -394,17 +394,7 @@ window.addEventListener('scroll',changeHeaderBg);

Please note: 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.

Our goal is to create a new kind of chat platform that lets you control your chat!

Originally published at https://www.reddit.com/r/haskell/comments/rc0xkn/simplex_chat_the_first_chat_platform_that_is_100/

-
+
@@ -529,7 +519,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220112-simplex-chat-v1-released.html b/blog/20220112-simplex-chat-v1-released.html index 778dc6aaf1..a20d3da2df 100644 --- a/blog/20220112-simplex-chat-v1-released.html +++ b/blog/20220112-simplex-chat-v1-released.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
-

SimpleX announces SimpleX Chat v1

+

SimpleX announces SimpleX Chat v1

Published: Jan 12, 2022

The most private and secure chat and application platform

We are building a new platform for distributed Internet applications where privacy of the messages and the network matter. SimpleX Chat is our first application, a messaging application built on the SimpleX platform.

@@ -388,7 +388,7 @@ window.addEventListener('scroll',changeHeaderBg);

What's new in v1?

Stable protocol implementation

All releases from v1 onwards will be forwards and backwards compatible.

-

Message encryption has been completely re-engineered to provide Forward secrecy and recovery from break-in.

+

Message encryption has been completely re-engineered to provide forward secrecy and recovery from break-in.

SimpleX Chat v1 now uses:

  • double-ratchet E2E encryption using AES-256-GCM cipher with X3DH key agreement 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.
  • @@ -397,7 +397,7 @@ window.addEventListener('scroll',changeHeaderBg);

Improved user and server authentication and transport

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.

-

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.

+

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.

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.

SimpleX also uses tls-unique channel binding in each signed client command to the server to protect against replay attacks.

Changes in protocol encoding

@@ -408,17 +408,7 @@ window.addEventListener('scroll',changeHeaderBg);

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).

We look forward to you using it!

We look forward to your feedback and suggestions - via GitHub issues or via SimpleX Chat - you can connect to the team with /simplex command once you run the chat.

-

Forward secrecy

Also known as perfect forward secrecy, it is a feature of a key agreement protocol that ensures that session keys will not be compromised even if long-term secrets used in the session key exchange are compromised. Forward secrecy protects past sessions against future compromises of session or long-term keys.

+
@@ -543,7 +533,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220214-simplex-chat-ios-public-beta.html b/blog/20220214-simplex-chat-ios-public-beta.html index 9aff4fc17c..3f503a50e9 100644 --- a/blog/20220214-simplex-chat-ios-public-beta.html +++ b/blog/20220214-simplex-chat-ios-public-beta.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
-

SimpleX announces SimpleX Chat public beta for iOS

+

SimpleX announces SimpleX Chat public beta for iOS

Published: Feb 14, 2022

Private and secure chat and application platform - public beta is now available for iPhones with iOS 15.

Our new iPhone app is very basic - right now it only supports text messages and emojis.

@@ -406,17 +406,7 @@ window.addEventListener('scroll',changeHeaderBg);

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.

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.

Further details on platform objectives and technical design are available in SimpleX platform overview.

-
+
@@ -541,7 +531,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220308-simplex-chat-mobile-apps.html b/blog/20220308-simplex-chat-mobile-apps.html index b20afffb79..f7e4275e2c 100644 --- a/blog/20220308-simplex-chat-mobile-apps.html +++ b/blog/20220308-simplex-chat-mobile-apps.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
-

SimpleX announces SimpleX Chat mobile apps for iOS and Android

+

SimpleX announces SimpleX Chat mobile apps for iOS and Android

Published: March 8, 2022

SimpleX Chat is the first chat platform that is 100% private by design - it has no access to your connections graph

We have now released iPhone and Android apps to Apple AppStore and Google Play Store, APK for Android is also available for direct download.

@@ -409,7 +409,7 @@ window.addEventListener('scroll',changeHeaderBg);

Once you install the app, you can connect to anybody:

  1. 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.
  2. -
  3. To make a private connection, you need to create a one-time connection link / QR code via "Add contact" 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.
  4. +
  5. To make a private connection, you need to create a one-time connection link / QR code via "Add contact" 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.
  6. 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.

New features and improvements that are coming soon

@@ -417,24 +417,14 @@ window.addEventListener('scroll',changeHeaderBg);
  • 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.
  • e2e encrypted audio and video calls via WebRTC.
  • export and import of the chat database.
  • -
  • "reply to message" - feature allowing you to quote the message you are replying to.
  • +
  • "reply to message" - feature allowing you to quote the message you are replying to.
  • localization - we will let you know once you can contribute the translations to your languages.
  • 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.
  • user profile images.
  • 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.
  • Please let us know what else you think is important and if you find any bugs.

    -
    +
    @@ -559,7 +549,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220404-simplex-chat-instant-notifications.html b/blog/20220404-simplex-chat-instant-notifications.html index 151af69c1d..b55decba94 100644 --- a/blog/20220404-simplex-chat-instant-notifications.html +++ b/blog/20220404-simplex-chat-instant-notifications.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    Instant notifications for SimpleX Chat mobile apps

    +

    Instant notifications for SimpleX Chat mobile apps

    Published: April 04, 2022

    SimpleX Chat is the first chat platform that is 100% private by design - it has no access to your connections

    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 the announcement!

    @@ -395,12 +395,12 @@ window.addEventListener('scroll',changeHeaderBg);

    Once you install the app, you can connect to anybody:

    1. 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.
    2. -
    3. To make a private connection, you need to create a one-time connection link or a QR code via the "Add contact" 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.
    4. +
    5. To make a private connection, you need to create a one-time connection link or a QR code via the "Add contact" 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.
    6. 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.

    See demo video that shows how two users connect and send the first messages.

    Why we are doing it

    -

    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, Mohamedou Ould Salahi was detained in Guantanamo prison for 15 years after a single "wrong" phone call. His story is told in his memoir and in The Mauritanian movie.

    +

    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, Mohamedou Ould Salahi was detained in Guantanamo prison for 15 years after a single "wrong" phone call. His story is told in his memoir and in The Mauritanian movie.

    Problem - users expect to be instantly notified when messages arrive!

    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!

    Why can't we just do what messenger X does?

    @@ -411,9 +411,9 @@ window.addEventListener('scroll',changeHeaderBg);

    [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 create groups via chat console.

    We've cracked it for Android!

    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.

    -

    We have implemented message reception as a background service (in Android terminology, a "foreground service" showing a notification icon when the service is running) following the same design as ntfy.sh created by Philipp Heckel, who, in turn, credits the design to the blog post by Roberto Huertas. Big thanks to them!

    +

    We have implemented message reception as a background service (in Android terminology, a "foreground service" showing a notification icon when the service is running) following the same design as ntfy.sh created by Philipp Heckel, who, in turn, credits the design to the blog post by Roberto Huertas. Big thanks to them!

    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.

    -

    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 "Private notifications". You will still receive notifications while the app is running or in the background.

    +

    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 "Private notifications". You will still receive notifications while the app is running or in the background.

    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 Play Store, in our F-Droid repo and via direct APK downloads!

    Please let us what needs to be improved - it's only the first version of instant notifications for Android!

    Our iOS approach has one trade-off

    @@ -423,7 +423,7 @@ window.addEventListener('scroll',changeHeaderBg);

    We planned for it, so we added to v1 of SMP (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.

    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.

    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.

    -

    If the user receives more than 2-3 messages per hour, the notification server can send additional visible notifications that would simply say "you have a new message", and the user will have to open the app to receive and see these messages. We are also investigating whether we can use "mutable-content" notifications that allow doing some processing when the notification arrives before showing it to the users.

    +

    If the user receives more than 2-3 messages per hour, the notification server can send additional visible notifications that would simply say "you have a new message", and the user will have to open the app to receive and see these messages. We are also investigating whether we can use "mutable-content" notifications that allow doing some processing when the notification arrives before showing it to the users.

    It is a substantial amount of development, we are aiming to release it later this month.

    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:

      @@ -465,17 +465,7 @@ window.addEventListener('scroll',changeHeaderBg);
    1. Do you have any ideas about how this design could be improved upon?
    2. Thank you!

      -
    +
    @@ -600,7 +590,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220511-simplex-chat-v2-images-files.html b/blog/20220511-simplex-chat-v2-images-files.html index 974406f9b8..237a8a90c4 100644 --- a/blog/20220511-simplex-chat-v2-images-files.html +++ b/blog/20220511-simplex-chat-v2-images-files.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v2.0 - sending images and files in mobile apps

    +

    SimpleX Chat v2.0 - sending images and files in mobile apps

    Published: May 11, 2022

    New in version 2.0 - sending images and files privately

    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.

    @@ -390,7 +390,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Many people asked: if SimpleX has no user identifiers, how can it deliver messages?

    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.

    You define which server(s) to use to receive the messages, your contacts – the servers you use to send the messages to them. It means that every conversation is likely to use two different servers - one for each message direction.

    -

    Only client devices store user profiles, contacts, groups, and messages sent with 2-layer End-to-end encryption.

    +

    Only client devices store user profiles, contacts, groups, and messages sent with 2-layer end-to-end encryption.

    Read more in SimpleX whitepaper.

    How to connect with your contacts in SimpleX Chat

    Once you install the app, you can connect to anybody:

    @@ -400,17 +400,7 @@ window.addEventListener('scroll',changeHeaderBg);
  • 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.
  • Make a private connection -

    End-to-end encryption

    A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    +
    @@ -535,7 +525,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220524-simplex-chat-better-privacy.html b/blog/20220524-simplex-chat-better-privacy.html index 9d27685642..2405b8484b 100644 --- a/blog/20220524-simplex-chat-better-privacy.html +++ b/blog/20220524-simplex-chat-better-privacy.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v2.1 - better conversation privacy

    +

    SimpleX Chat v2.1 - better conversation privacy

    Published: May 24, 2022

    New in version 2.1 - clearing conversations without deleting contacts

    In this version you can irreversibly delete individual messages after they were deleted by a sender, and also completely clear the conversation.

    @@ -387,17 +387,7 @@ window.addEventListener('scroll',changeHeaderBg);

    See v1 announcement for information on how SimpleX protects the security of the messages.

    See v2 announcement for more information about SimpleX platform and how it works.

    Read about SimpleX design in whitepaper.

    -
    +
    @@ -522,7 +512,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220604-simplex-chat-new-privacy-security-settings.html b/blog/20220604-simplex-chat-new-privacy-security-settings.html index 98898ae8fb..4765aa10c4 100644 --- a/blog/20220604-simplex-chat-new-privacy-security-settings.html +++ b/blog/20220604-simplex-chat-new-privacy-security-settings.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v2.2 - the new privacy and security features

    +

    SimpleX Chat v2.2 - the new privacy and security features

    Published: June 4, 2022

    See v2 announcement 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.

    New Privacy and Security settings in version 2.2

    @@ -405,17 +405,7 @@ window.addEventListener('scroll',changeHeaderBg);

    More information

    See v1 announcement for information on how SimpleX protects the security of the messages.

    Read about SimpleX design in whitepaper.

    -
    +
    @@ -540,7 +530,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html b/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html index 4b80983375..3a4fc23f72 100644 --- a/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html +++ b/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html @@ -378,17 +378,17 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX announces SimpleX Chat v3 - with encrypted calls and iOS push notifications

    +

    SimpleX announces SimpleX Chat v3 - with encrypted calls and iOS push notifications

    Published: Jul 11, 2022

    New in version 3

    Instant notifications for iOS

    -

    I wrote previously about our design for iOS notifications - 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.

    +

    I wrote previously about our design for iOS notifications - 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.

    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:

    • 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.
    • @@ -398,7 +398,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Please note: 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.

      End-to-end encrypted audio/video calls

      -

      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.

      +

      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.

      The calls are still quite limited, especially on iOS, - for example, you cannot continue the call while the app is in the background.

      Database export and import

      @@ -418,14 +418,14 @@ window.addEventListener('scroll',changeHeaderBg);

      Protocol privacy and performance improvements

      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.

      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.

      -

      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 since v1, allowing us to evolve the protocols without any disruption to the users.

      +

      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 since v1, allowing us to evolve the protocols without any disruption to the users.

      SimpleX platform

      We are building a new platform for distributed Internet applications where privacy of the messages and the network matter. SimpleX Chat is our first application, a messaging application built on the SimpleX platform.

      The first (and we believe the only) messaging platform without user identifiers of any kind - 100% private by design!

      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.

      Why having users' identifiers is bad for the users?

      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.

      -

      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.

      +

      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.

      How does it work

      Many people asked: if SimpleX has no user identifiers, how can it deliver messages?

      I wrote about it in v2 release announcement and you can get more information about SimpleX platform objectives and technical design in the whitepaper.

      @@ -439,17 +439,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Thank you,

      Evgeny

      SimpleX Chat founder

      -

      Peer-to-peer

      Peer-to-peer (P2P) is the network architecture when participants have equal rights and communicate directly via a general purpose transport or overlay network. Unlike client-server architecture, all peers in a P2P network both provide and consume the resources. In the context of messaging, P2P architecture usually means that the messages are sent between peers, without user accounts or messages being stored on any servers. Examples are Tox, Briar, Cwtch and many others.

      User identity

      In a communication system it refers to anything that uniquely identifies the users to the network. Depending on the communication network, it can be a phone number, email address, username, public key or a random opaque identifier. Most messaging networks rely on some form of user identity. SimpleX appears to be the only messaging network that does not rely on any kind of user identity - see this comparison.

    +
    @@ -574,7 +564,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html b/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html index 62c08b21a5..d06893e0c2 100644 --- a/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html +++ b/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html @@ -378,14 +378,14 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v3.1-beta is released - improved battery/traffic usage

    +

    SimpleX Chat v3.1-beta is released - improved battery/traffic usage

    Published: Jul 23, 2022

    What's new

    Terminall app: access to messaging servers via SOCKS5 proxy / Tor

    @@ -420,11 +420,11 @@ window.addEventListener('scroll',changeHeaderBg);

    SimpleX platform

    We are building a new platform for distributed Internet applications where privacy of the messages and the network matter. SimpleX Chat is our first application, a messaging application built on the SimpleX platform.

    The first (and the only?) messaging platform without user identifiers of any kind - 100% private by design!

    -

    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 pairwise identifiers 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 wrote previously why it is bad for the users' privacy to have any identifiers, even random numbers, associated with their profiles.

    +

    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 pairwise identifiers 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 wrote previously why it is bad for the users' privacy to have any identifiers, even random numbers, associated with their profiles.

    If SimpleX has no user identifiers, how can it deliver messages?

    I wrote about it in v2 release announcement and you can get more information about SimpleX platform objectives and technical design in the whitepaper.

    Privacy: technical details and limitations

    -

    SimpleX design follows "defence in depth" security principles having multiple overlapping defensive mechanisms to protect users privacy and security:

    +

    SimpleX design follows "defence in depth" security principles having multiple overlapping defensive mechanisms to protect users privacy and security:

    • TLS transport with server identity validation and channel binding, limited to the most secure cryptographic algorithms.
    • Three levels of encryption that both protect message content and meta-data, preventinc trafic correlation even if TLS is compromised: @@ -455,17 +455,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Thank you,

      Evgeny

      SimpleX Chat founder

      -
    +
    @@ -590,7 +580,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220808-simplex-chat-v3.1-chat-groups.html b/blog/20220808-simplex-chat-v3.1-chat-groups.html index ae0a5ea0fa..dd6631e7fa 100644 --- a/blog/20220808-simplex-chat-v3.1-chat-groups.html +++ b/blog/20220808-simplex-chat-v3.1-chat-groups.html @@ -378,16 +378,16 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v3.1 is released - with secret groups and server access via Tor

    +

    SimpleX Chat v3.1 is released - with secret groups and server access via Tor

    Published: Aug 8, 2022

    What's new

      -
    • secret chat groups!
    • -
    • access to messaging servers via Tor
    • -
    • advanced network settings
    • -
    • published chat protocol
    • -
    • new app icons
    • -
    • other changes since v3: +
    • secret chat groups!
    • +
    • access to messaging servers via Tor
    • +
    • advanced network settings
    • +
    • published chat protocol
    • +
    • new app icons
    • +
    • other changes since v3:
      • optimized battery and traffic usage - up to 90x reduction!
      • two docker configurations for self-hosted SMP servers
      • @@ -407,7 +407,7 @@ window.addEventListener('scroll',changeHeaderBg);
      • search for messages - it is useful for direct conversations too, but more important for groups.

      Access messaging servers via Tor

      -

       

      +

       

      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.

      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.

      This release allows to access SimpleX messaging servers via Tor on all platforms:

      @@ -435,9 +435,9 @@ window.addEventListener('scroll',changeHeaderBg);

      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 beta version announcement.

      SimpleX platform

      Some links to answer the most common questions:

      -

      How can SimpleX deliver messages without user identifiers.

      -

      What are the risks to have identifiers assigned to the users.

      -

      Technical details and limitations.

      +

      How can SimpleX deliver messages without user identifiers.

      +

      What are the risks to have identifiers assigned to the users.

      +

      Technical details and limitations.

      How SimpleX is different from Session, Matrix, Signal, etc..

      We ask you to help us pay for 3rd party security audit

      I will get straight to the point: I ask you to support SimpleX Chat with donations.

      @@ -454,17 +454,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Thank you,

      Evgeny

      SimpleX Chat founder

      -
    +
    @@ -589,7 +579,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220901-simplex-chat-v3.2-incognito-mode.html b/blog/20220901-simplex-chat-v3.2-incognito-mode.html index 3de987dcd3..c30e1fc18b 100644 --- a/blog/20220901-simplex-chat-v3.2-incognito-mode.html +++ b/blog/20220901-simplex-chat-v3.2-incognito-mode.html @@ -378,15 +378,15 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v3.2 is released - meet Incognito mode, unique to Simplex Chat

    +

    SimpleX Chat v3.2 is released - meet Incognito mode, unique to Simplex Chat

    Published: Sep 1, 2022

    What's new

    -

    Implementation audit is arranged for October!

    +

    Implementation audit is arranged for October!

    Incognito mode

    SimpleX is already private, so why do we need an incognito mode, you may ask.

    @@ -415,7 +415,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Assign names to your contacts

    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.

    Using .onion server addresses with Tor

    -

     

    +

     

    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.

    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.

    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.

    @@ -426,9 +426,9 @@ window.addEventListener('scroll',changeHeaderBg);

    And you can choose dark or light mode independently of the system settings.

    SimpleX platform

    Some links to answer the most common questions:

    -

    How can SimpleX deliver messages without user identifiers.

    -

    What are the risks to have identifiers assigned to the users.

    -

    Technical details and limitations.

    +

    How can SimpleX deliver messages without user identifiers.

    +

    What are the risks to have identifiers assigned to the users.

    +

    Technical details and limitations.

    How SimpleX is different from Session, Matrix, Signal, etc..

    We ask you to help us pay for 3rd party security audit

    Our great news is that we have already signed the agreement and paid for the security audit!

    @@ -445,17 +445,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you,

    Evgeny

    SimpleX Chat founder

    -
    +
    @@ -580,7 +570,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20220928-simplex-chat-v4-encrypted-database.html b/blog/20220928-simplex-chat-v4-encrypted-database.html index c92300c193..7986ed2480 100644 --- a/blog/20220928-simplex-chat-v4-encrypted-database.html +++ b/blog/20220928-simplex-chat-v4-encrypted-database.html @@ -378,28 +378,28 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v4 with encrypted local database is released

    +

    SimpleX Chat v4 with encrypted local database is released

    Published: Sep 28, 2022

    What's new in v4

    Also, this version adds German language to mobile apps UI - huge thanks to Michael who contributed them!

    Other new features since v3:

      -
    • secret chat groups (see details in v3.1 announcement - they are fully decentralized, only their members know these groups exist.
    • -
    • accessing messaging servers via Tor with support for .onion server addresses (see details in v3.1 and v3.2 announcements) - to protect users anonymity on the TCP transport level.
    • -
    • Incognito mode - sharing a random profile name with each new contact, to completely eliminate any shared data between them (see details in v3.2 announcement).
    • +
    • secret chat groups (see details in v3.1 announcement - they are fully decentralized, only their members know these groups exist.
    • +
    • accessing messaging servers via Tor with support for .onion server addresses (see details in v3.1 and v3.2 announcements) - to protect users anonymity on the TCP transport level.
    • +
    • Incognito mode - sharing a random profile name with each new contact, to completely eliminate any shared data between them (see details in v3.2 announcement).
    • endless scrolling and search in chats.
    • reduced Android APK size for direct download and in F-Droid repo from 200 to 50Mb!
    -

    Implementation audit is arranged for October!

    +

    Implementation audit is arranged for October!

    Local chat database encryption

    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 SQLCipher.

    @@ -408,7 +408,7 @@ window.addEventListener('scroll',changeHeaderBg);

    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.

    Self-hosted WebRTC ICE servers

    -

    You could make audio and video calls via SimpleX Chat WebRTC servers since v3 - 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.

    +

    You could make audio and video calls via SimpleX Chat WebRTC servers since v3 - 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.

    See this guide to learn how to deploy your own coturn server and to configure the mobile apps to use it.

    Improved stability of creating new connections

    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.

    @@ -448,9 +448,9 @@ window.addEventListener('scroll',changeHeaderBg);

    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.

    SimpleX platform

    Some links to answer the most common questions:

    -

    How can SimpleX deliver messages without user identifiers.

    -

    What are the risks to have identifiers assigned to the users.

    -

    Technical details and limitations.

    +

    How can SimpleX deliver messages without user identifiers.

    +

    What are the risks to have identifiers assigned to the users.

    +

    Technical details and limitations.

    How SimpleX is different from Session, Matrix, Signal, etc..

    We ask you to help us pay for 3rd party security audit

    We have already signed the agreement and paid for the security audit!

    @@ -468,17 +468,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you,

    Evgeny

    SimpleX Chat founder

    -
    +
    @@ -603,7 +593,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html b/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html index 97c5ebd823..a45b3525dd 100644 --- a/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html +++ b/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html @@ -378,22 +378,22 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    Security assessment by Trail of Bits, the new website and v4.2 released

    +

    Security assessment by Trail of Bits, the new website and v4.2 released

    Published: Nov 8, 2022

    Security assessment by Trail of Bits

    - -

    When we first launched the app in March the response on Reddit was: "Have you been audited or should we just ignore you?".

    + +

    When we first launched the app in March the response on Reddit was: "Have you been audited or should we just ignore you?".

    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.

    -

    Trail of Bits, 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 simplexmq library that is responsible for all cryptography and networking of SimpleX platform.

    +

    Trail of Bits, 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 simplexmq library that is responsible for all cryptography and networking of SimpleX platform.

    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.

    In the course of the audit, Trail of Bits assessed the maturity of the simplexmq library across eight categories and found five of them to be strong or satisfactory.

    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 Trail of Bits publications.

    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.

    Medium severity issues

    -

    X3DH Key exchange for double ratchet protocol

    -

    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).

    +

    X3DH key exchange for double ratchet protocol

    +

    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).

    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.

    -

    This issue is fixed in version 4.2 in this PR, 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.

    +

    This issue is fixed in version 4.2 in this PR, 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.

    Keys are stored in unpinned memory and not cleared after their lifetime

    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.

    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 compressed area in RAM not accessible to other applications).

    @@ -427,12 +427,12 @@ window.addEventListener('scroll',changeHeaderBg);
  • receive files faster (enable it in Privacy & Security settings)
  • -

      

    +

      

    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.

    The way it works under the hood is similar to how contact addresses work:

    1. 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.
    2. -
    3. The user that joins the group can identify that this link belongs to some group by an additional piece of data in the link - {"type": "group", "groupLinkId": "some random string"}. 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.
    4. +
    5. The user that joins the group can identify that this link belongs to some group by an additional piece of data in the link - {"type": "group", "groupLinkId": "some random string"}. 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.
    6. When admin receives a connection request, they automatically accept it and send invitation link to join the group.
    7. The joining user compares the ID in the invitation with the ID in the link, and if they match – automatically accepts the invitation.
    @@ -450,10 +450,10 @@ window.addEventListener('scroll',changeHeaderBg);

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

    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!

    Auto-accept contact requests

    -

      

    +

      

    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.

    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.

    -

    Our @simplex account that you connect to when you choose "Connect to developers" in the app used this feature for a long time, and now it is available to mobile app users.

    +

    Our @simplex account that you connect to when you choose "Connect to developers" in the app used this feature for a long time, and now it is available to mobile app users.

    Some small things

    1. @@ -468,18 +468,18 @@ window.addEventListener('scroll',changeHeaderBg);

    Change your delivery address (BETA)

    -

    To manually switch any of your contacts (or a group member to a new server address) enable Developer tools and choose "Change receiving address" 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.

    +

    To manually switch any of your contacts (or a group member to a new server address) enable Developer tools and choose "Change receiving address" 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.

    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.

    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.

    Receive images and small files faster (BETA)

    -

    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 "Transfer images faster" in Privacy & 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.

    +

    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 "Transfer images faster" in Privacy & 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.

    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.

    SimpleX platform

    Some links to answer the most common questions:

    -

    How can SimpleX deliver messages without user identifiers.

    -

    What are the risks to have identifiers assigned to the users.

    -

    Technical details and limitations.

    +

    How can SimpleX deliver messages without user identifiers.

    +

    What are the risks to have identifiers assigned to the users.

    +

    Technical details and limitations.

    How SimpleX is different from Session, Matrix, Signal, etc..

    Please also see the information on our new website - it also answers all these questions.

    Help us with donations

    @@ -498,17 +498,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you,

    Evgeny

    SimpleX Chat founder

    -

    Blockchain

    In a wide sense, blockchain means a sequence of blocks of data, where each block contains a cryptographic hash of the previous block, thus providing integrity to the whole chain. Blockchains are used in many communication and information storage systems to provide integrity and immutability of the data. For example, BluRay disks use blockchain. SimpleX messaging queues also use blockchain - each message includes the hash of the previous message, to ensure the integrity – if any message is modified it will be detected by the recipient when the next message is received. Blockchains are a subset of Merkle directed acyclic graphs.

    Break-in recovery

    Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

    Forward secrecy

    Also known as perfect forward secrecy, it is a feature of a key agreement protocol that ensures that session keys will not be compromised even if long-term secrets used in the session key exchange are compromised. Forward secrecy protects past sessions against future compromises of session or long-term keys.

    Key exchange

    Also known as key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for end-to-end encryption to work.

    +
    @@ -633,7 +623,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20221206-simplex-chat-v4.3-voice-messages.html b/blog/20221206-simplex-chat-v4.3-voice-messages.html index d0e28e86a3..88acda1ef5 100644 --- a/blog/20221206-simplex-chat-v4.3-voice-messages.html +++ b/blog/20221206-simplex-chat-v4.3-voice-messages.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat reviews and v4.3 released – with instant voice messages, irreversible deletion of sent messages and improved server configuration.

    +

    SimpleX Chat reviews and v4.3 released – with instant voice messages, irreversible deletion of sent messages and improved server configuration.

    Published: Dec 6, 2022

    SimpleX Chat reviews

    Since we published the security assessment of SimpleX Chat completed by Trail of Bits in November, several sites published the reviews and included it in their recommendations:

    @@ -389,10 +389,10 @@ window.addEventListener('scroll',changeHeaderBg);

    What's new in v4.3

      -
    • instant voice messages!
    • -
    • irreversible deletion of sent messages for all recipients
    • -
    • improved SMP server configuration and support for server passwords
    • -
    • privacy and security improvements: +
    • instant voice messages!
    • +
    • irreversible deletion of sent messages for all recipients
    • +
    • improved SMP server configuration and support for server passwords
    • +
    • privacy and security improvements:
      • protect app screen in recent apps and prevent screenshots
      • improved privacy and security of SimpleX invitation links in the app
      • @@ -406,7 +406,7 @@ window.addEventListener('scroll',changeHeaderBg);

        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.

        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.

        Irreversible message deletion

        -

          

        +

          

        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.

        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.

        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 the polls I made yesterday show it - the votes are split evenly.

        @@ -418,9 +418,9 @@ window.addEventListener('scroll',changeHeaderBg);

      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.

      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.

      -

      If irreversible message deletion is not allowed in the conversation, the senders can still mark their messages as deleted, and it would show "mark deleted" placeholder in the conversation. The recipients can then both reveal the content of the original message and fully delete it on their devices.

      +

      If irreversible message deletion is not allowed in the conversation, the senders can still mark their messages as deleted, and it would show "mark deleted" placeholder in the conversation. The recipients can then both reveal the content of the original message and fully delete it on their devices.

      SMP servers configuration and password

      -

           

      +

           

      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.

      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.

      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.

      @@ -440,9 +440,9 @@ window.addEventListener('scroll',changeHeaderBg);

      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.

      SimpleX platform

      Some links to answer the most common questions:

      -

      How can SimpleX deliver messages without user identifiers.

      -

      What are the risks to have identifiers assigned to the users.

      -

      Technical details and limitations.

      +

      How can SimpleX deliver messages without user identifiers.

      +

      What are the risks to have identifiers assigned to the users.

      +

      Technical details and limitations.

      How SimpleX is different from Session, Matrix, Signal, etc..

      Please also see the information on our new website - it also answers all these questions.

      Help us with donations

      @@ -462,17 +462,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Thank you,

      Evgeny

      SimpleX Chat founder

      -
    +
    @@ -597,7 +587,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20230103-simplex-chat-v4.4-disappearing-messages.html b/blog/20230103-simplex-chat-v4.4-disappearing-messages.html index 41cd6507cb..9f27074673 100644 --- a/blog/20230103-simplex-chat-v4.4-disappearing-messages.html +++ b/blog/20230103-simplex-chat-v4.4-disappearing-messages.html @@ -378,41 +378,41 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v4.4 released – with disappearing messages, live messages, connection security verification and French language!

    +

    SimpleX Chat v4.4 released – with disappearing messages, live messages, connection security verification and French language!

    Published: Jan 3, 2023

    What's new in v4.4

    -

    Also, we added French language interface, thanks to the users' community and Weblate!

    +

    Also, we added French language interface, thanks to the users' community and Weblate!

    Disappearing messages

    -

      

    +

      

    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.

    -

    Unlike in most other messengers, it requires agreement of both sides, not just the sender decision. I wrote previously 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.

    +

    Unlike in most other messengers, it requires agreement of both sides, not just the sender decision. I wrote previously 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.

    In group conversations disappearing messages can be enabled by the group owners, by default they are disabled.

    -

    "Live" messages

    +

    "Live" messages

    -

    Pressing "bolt" button before you start typing the message will start a "live" 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 "checkmark" button.

    -

    You can also start a live message after you started typing or after you chose the image – long-press send button and then press "Send live message".

    +

    Pressing "bolt" button before you start typing the message will start a "live" 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 "checkmark" button.

    +

    You can also start a live message after you started typing or after you chose the image – long-press send button and then press "Send live message".

    Connection security verification

    -

    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 this post. 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.

    +

    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 this post. 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.

    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.

    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.

    -

    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.

    +

    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.

    Animated images and stickers

    -

      

    +

      

    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.

    French language interface

    Thanks to our users' community and to Weblate kindly providing a free hosting plan for SimpleX Chat translations we can now support more languages in the interface – this version adds French.

    Please get in touch if you want to translate the interface into your language!

    SimpleX platform

    Some links to answer the most common questions:

    -

    How can SimpleX deliver messages without user identifiers.

    -

    What are the risks to have identifiers assigned to the users.

    +

    How can SimpleX deliver messages without user identifiers.

    +

    What are the risks to have identifiers assigned to the users.

    Technical details and limitations.

    How SimpleX is different from Session, Matrix, Signal, etc..

    Please also see our website.

    @@ -433,17 +433,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you,

    Evgeny

    SimpleX Chat founder

    -

    End-to-end encryption

    A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    Key exchange

    Also known as key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for end-to-end encryption to work.

    Man-in-the-middle attack

    The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

    MITM attack

    The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

    +
    @@ -568,7 +558,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html b/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html index 4e095d231c..5104272963 100644 --- a/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html +++ b/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html @@ -378,19 +378,19 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v4.5 released – with multiple user profiles, message draft, transport isolation and Italian interface!

    +

    SimpleX Chat v4.5 released – with multiple user profiles, message draft, transport isolation and Italian interface!

    Published: Feb 4, 2023

    What's new in v4.5

    -

    Also, we added Italian interface, thanks to the users' community and Weblate!

    +

    Also, we added Italian interface, thanks to the users' community and Weblate!

    Multiple chat profiles

    -

      

    +

      

    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.

    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.

    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.

    @@ -401,7 +401,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Also, you have a different contact address in each profile, and different Chat preferences.

    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.

    Message draft

    -

      

    +

      

    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:

    • you need to compose the message from several parts that you copy from other conversations.
    • @@ -420,9 +420,9 @@ window.addEventListener('scroll',changeHeaderBg);

    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:

      -
    • when the sender encounters "queue quota exceeded" error, the sender stops trying to send the message.
    • +
    • when the sender encounters "queue quota exceeded" error, the sender stops trying to send the message.
    • the server also takes note of that error.
    • -
    • once recipient receives all messages from this queue, the server will notify the recipient that the sender had "queue quota exceeded" error.
    • +
    • once recipient receives all messages from this queue, the server will notify the recipient that the sender had "queue quota exceeded" error.
    • the recipient will then send a special message to the sender client to instruct it that it can resume delivery.
    • 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.
    @@ -434,8 +434,8 @@ window.addEventListener('scroll',changeHeaderBg);

    You can contribute the translation of the apps to your language too!

    SimpleX platform

    Some links to answer the most common questions:

    -

    How can SimpleX deliver messages without user identifiers.

    -

    What are the risks to have identifiers assigned to the users.

    +

    How can SimpleX deliver messages without user identifiers.

    +

    What are the risks to have identifiers assigned to the users.

    Technical details and limitations.

    How SimpleX is different from Session, Matrix, Signal, etc..

    Please also see our website.

    @@ -448,17 +448,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you,

    Evgeny

    SimpleX Chat founder

    -
    +
    @@ -583,7 +573,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20230301-simplex-file-transfer-protocol.html b/blog/20230301-simplex-file-transfer-protocol.html index a5ed3ace7d..5940c1b3c2 100644 --- a/blog/20230301-simplex-file-transfer-protocol.html +++ b/blog/20230301-simplex-file-transfer-protocol.html @@ -378,14 +378,14 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX File Transfer Protocol – a new protocol for sending large files efficiently, privately and securely.

    +

    SimpleX File Transfer Protocol – a new protocol for sending large files efficiently, privately and securely.

    Published: Mar 1, 2023

    ⚡️ Quick start: send a file with XFTP CLI in 3 simple steps

    Download XFTP binary for Linux from the release – you need the file xftp-ubuntu-20_04-x86-64 - rename it as xftp.

    @@ -454,7 +454,7 @@ file ---> | XFTP | ------> XFTP ----> | Rela
  • the file as a whole is encrypted with a random symmetric key using NaCl secret_box.
  • 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.

    -

    Instead of using a link, XFTP protocol includes a special format for a "file description" - 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.

    +

    Instead of using a link, XFTP protocol includes a special format for a "file description" - 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.

    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.

    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.

    What is next?

    @@ -465,8 +465,8 @@ file ---> | XFTP | ------> XFTP ----> | Rela

    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 SimpleX Chat security assessment by Trail of Bits in November 2022.

    SimpleX platform

    Some links to answer the most common questions:

    -

    How can SimpleX deliver messages without user identifiers.

    -

    What are the risks to have identifiers assigned to the users.

    +

    How can SimpleX deliver messages without user identifiers.

    +

    What are the risks to have identifiers assigned to the users.

    Technical details and limitations.

    How SimpleX is different from Session, Matrix, Signal, etc..

    Please also see our website.

    @@ -479,17 +479,7 @@ file ---> | XFTP | ------> XFTP ----> | Rela

    Thank you,

    Evgeny

    SimpleX Chat founder

    -
    +
    @@ -614,7 +604,6 @@ file ---> | XFTP | ------> XFTP ----> | Rela - diff --git a/blog/20230328-simplex-chat-v4-6-hidden-profiles.html b/blog/20230328-simplex-chat-v4-6-hidden-profiles.html index 3352f9eceb..9cd2a912ce 100644 --- a/blog/20230328-simplex-chat-v4-6-hidden-profiles.html +++ b/blog/20230328-simplex-chat-v4-6-hidden-profiles.html @@ -378,24 +378,24 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v4.6 – with hidden profiles, community moderation, improved audio/video calls and reduced battery usage.

    +

    SimpleX Chat v4.6 – with hidden profiles, community moderation, improved audio/video calls and reduced battery usage.

    Published: Mar 28, 2023

    What's new in v4.6

    -

    Also, we added Chinese and Spanish interface languages, thanks to the users' community and Weblate!

    +

    Also, we added Chinese and Spanish interface languages, thanks to the users' community and Weblate!

    ARMv7a (32 bit) and Android 8+ support!

    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.

    If you install the app from GitHub or F-Droid you need to choose the correct APK, Play Store will provide it automatically.

    Hidden chat profiles

    -

         

    +

         

    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).

    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.

    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.

    @@ -404,8 +404,8 @@ window.addEventListener('scroll',changeHeaderBg);

    Initially we did not design SimpleX Chat to support communities - our focus has always been maximum privacy and security.

    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.

    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.

    -

    Firstly, group admins and owners can revoke members rights to send messages to the group by assigning members an "observer" role, and also make this role default for users joining via a group link.

    -

    Secondly, group admins can now delete messages sent by other members (excluding the messages sent by the group owners). "Moderate" 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.

    +

    Firstly, group admins and owners can revoke members rights to send messages to the group by assigning members an "observer" role, and also make this role default for users joining via a group link.

    +

    Secondly, group admins can now delete messages sent by other members (excluding the messages sent by the group owners). "Moderate" 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.

    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.

    Group welcome message

    Group owners can now set a welcome message that will be shown to new members when they join the group via a group link.

    @@ -417,7 +417,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Reduced battery usage

    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.

    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.

    -

    This version increases the maximum retry period for "out-of-capacity" 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.

    +

    This version increases the maximum retry period for "out-of-capacity" 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.

    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.

    Please share your experience. If the battery usage is still suboptimal, please share your usage statistics - they can be requested in chat console with /get stats 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 /reset stats command.

    SMP server monitoring

    @@ -443,17 +443,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you,

    Evgeny

    SimpleX Chat founder

    -
    +
    @@ -578,7 +568,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.html b/blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.html index 03bbc0b621..bb51b441ac 100644 --- a/blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.html +++ b/blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.html @@ -378,19 +378,19 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat: vision and funding, v5.0 released with videos and files up to 1gb.

    +

    SimpleX Chat: vision and funding, v5.0 released with videos and files up to 1gb.

    Published: Apr 22, 2023

    SimpleX Chat vision and funding:

    What's new in v5.0:

    Also, we added Polish interface language, thanks to the users' community and Weblate.

    SimpleX Chat apps are now available in 10 languages!

    @@ -404,13 +404,13 @@ window.addEventListener('scroll',changeHeaderBg);

    We started working full-time on the project in 2021 when Portman Wills and Peter Briffett (the founders of Wagestream 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 Village Global - its co-founder Ben Casnocha 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.

    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 the security assessment by Trail of Bits. A large part of this money is not spent yet.

    The project was hugely supported by the users as well - collectively, you donated 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.

    -

    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.

    +

    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.

    What is next?

    Our goals for the next 1-2 years are to make the messaging network:

    • more reliable and resilient, by adding redundancy into the message delivery and delivery receipts,
    • 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,
    • -
    • more usable by adding and improving the functions users are expecting in messengers, and also adding some unique functions, like we did with incognito mode, live messages and hidden profiles.
    • +
    • more usable by adding and improving the functions users are expecting in messengers, and also adding some unique functions, like we did with incognito mode, live messages and hidden profiles.

    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.

    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. Subscribe to our updates not to miss it, connect to the team in SimpleX Chat and join users' groups.

    @@ -427,7 +427,7 @@ window.addEventListener('scroll',changeHeaderBg);

    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.

    We also plan to add support for longer and higher quality voice messages, and also for sending full resolution images in the next versions.

    App passcode

    -

      

    +

      

    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.

    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.

    Networking improvements

    @@ -452,17 +452,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you,

    Evgeny

    SimpleX Chat founder

    -

    Decentralized network

    Decentralized network is often used to mean "the network based on decentralized blockchain". In its original meaning, decentralized network means that there is no central authority or any other point of centralization in the network, other than network protocols specification. The advantage of decentralized networks is that they are resilient to censorship and to the provider going out of business. The disadvantage is that they are often slower to innovate, and the security may be worse than with the centralized network.

    +
    @@ -587,7 +577,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html b/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html index 85f2c02ef1..7b4dbaf21e 100644 --- a/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html +++ b/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html @@ -378,20 +378,20 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v5.1 released: message reactions and self-destruct passcode

    +

    SimpleX Chat v5.1 released: message reactions and self-destruct passcode

    Published: May 23, 2023

    What's new in v5.1:

    There are lots of small improvements and fixes in this release:

      @@ -413,15 +413,15 @@ window.addEventListener('scroll',changeHeaderBg);

      Improved messages

      Voice messages: up to 5 minutes, better quality, playback control

      -

      Since v4.3 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.

      +

      Since v4.3 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.

      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.

      Disappearing messages: choose any time!

      -

        

      -

      Since v4.4 disappearing messages were only configurable for the whole conversation, with a limited choice of allowed times between 30 seconds and 1 month.

      +

        

      +

      Since v4.4 disappearing messages were only configurable for the whole conversation, with a limited choice of allowed times between 30 seconds and 1 month.

      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.

      Message editing history

      -

      I wrote previously 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.

      +

      I wrote previously 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.

      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.

      Customize and share color themes

      @@ -454,17 +454,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Thank you,

      Evgeny

      SimpleX Chat founder

      -
    +
    @@ -589,7 +579,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html b/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html index 6a8cf3a8b7..c00c0e9816 100644 --- a/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html +++ b/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html @@ -378,20 +378,20 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v5.2 released: message delivery receipts

    +

    SimpleX Chat v5.2 released: message delivery receipts

    Published: July 22, 2023

    What's new in v5.2:

      -
    • message delivery receipts – with opt-out per contact!
    • -
    • filter favorite and unread chats.
    • -
    • more usable groups: +
    • message delivery receipts – with opt-out per contact!
    • +
    • filter favorite and unread chats.
    • +
    • more usable groups:
      • view full original replied message in info.
      • share your address with your contacts and group members via your chat profile.
      • search new and existing members.
    • -
    • stability improvements: +
    • stability improvements:

      Platform evolution:

      What's new in v5.2

      Message delivery receipts

      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!

      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.

      -

      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 visible profiles, and they can be enabled later via Privacy and Security settings.

      +

      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 visible profiles, and they can be enabled later via Privacy and Security settings.

      Filter favorite and unread chats

      You can now mark your contacts and groups as favorite, 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.

      @@ -441,9 +441,9 @@ window.addEventListener('scroll',changeHeaderBg);

      Please report the cases when messages are not delivered – delivery receipts should help with that.

      Messages failed to decrypt? Problem solved!

      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.

      -

      This happens due to double ratchet protocol protecting the integrity of End-to-end encryption after the compromise - Post-compromise security. The protocol logic does not allow to use the old version of the database to decrypt the message.

      -

      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 man-in-the-middle attacks.

      -

      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.

      +

      This happens due to double ratchet protocol protecting the integrity of end-to-end encryption after the compromise - post-compromise security. The protocol logic does not allow to use the old version of the database to decrypt the message.

      +

      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 man-in-the-middle attacks.

      +

      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.

      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.

      Reconnect the servers

      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.

      @@ -460,19 +460,19 @@ window.addEventListener('scroll',changeHeaderBg);

      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.

      In the long term, the only way to make groups usable is to move to a new design. We considered several options.

      Why not hosted groups with MLS?

      -

      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.

      +

      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.

      Why not fully decentralized groups?

      -

      We also considered 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.

      +

      We also considered 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.

      Members host the groups

      -

      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 "hosting" members, and it also better protects their privacy, due to the lack of direct connections between most members.

      -

      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.

      +

      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 "hosting" members, and it also better protects their privacy, due to the lack of direct connections between most members.

      +

      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.

      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).

      -

      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 described here.

      +

      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 described here.

      We really look forward to your feedback on this design.

      What about read receipts?

      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.

      While read receipts provide some convenience to the message senders, they introduce a lot of stress for the recipients.

      -

      As one of the users in the group wrote it: "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".

      +

      As one of the users in the group wrote it: "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".

      Also read this post about the damage from read receipts and other invasive features, like typing and presense notifications.

      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.

      SimpleX platform

      @@ -492,17 +492,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Thank you,

      Evgeny

      SimpleX Chat founder

      -

      End-to-end encryption

      A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

      Forward secrecy

      Also known as perfect forward secrecy, it is a feature of a key agreement protocol that ensures that session keys will not be compromised even if long-term secrets used in the session key exchange are compromised. Forward secrecy protects past sessions against future compromises of session or long-term keys.

      Key agreement protocol

      Also known as key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for end-to-end encryption to work.

      Post-compromise security

      Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

    +
    @@ -627,7 +617,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.html b/blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.html index 9387d39fc8..d7ae81dc07 100644 --- a/blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.html +++ b/blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.html @@ -378,14 +378,14 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v5.3 released: desktop app, local file encryption and improved groups

    +

    SimpleX Chat v5.3 released: desktop app, local file encryption and improved groups

    Published: September 25, 2023

    What's new in v5.3:

    There are a lot of other improvements and fixes in this release:

      @@ -401,7 +401,7 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    Also, we added 6 new interface languages: Arabic, Bulgarian, Finnish, Hebrew, Thai and Ukrainian - thanks to our users and Weblate.

    +

    Also, we added 6 new interface languages: Arabic, Bulgarian, Finnish, Hebrew, Thai and Ukrainian - thanks to our users and Weblate.

    * Android app.

    ** iOS app.

    Multiplatform desktop app

    @@ -433,7 +433,7 @@ window.addEventListener('scroll',changeHeaderBg);

    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.

    -

    Encrypted local files and media with Forward secrecy

    +

    Encrypted local files and media with forward secrecy

    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.

    You contacts, groups and messages are stored in the local database on your device, and this database was encrypted from v4.0 released a year ago.

    @@ -441,7 +441,7 @@ window.addEventListener('scroll',changeHeaderBg);

    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 & Security settings, for example, if you need to access the files from the storage outside of the app.

    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.

    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.

    -

    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.

    +

    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.

    Simplified incognito mode

    Incognito mode was added a year ago 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.

    @@ -464,17 +464,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you,

    Evgeny

    SimpleX Chat founder

    -

    Forward secrecy

    Also known as perfect forward secrecy, it is a feature of a key agreement protocol that ensures that session keys will not be compromised even if long-term secrets used in the session key exchange are compromised. Forward secrecy protects past sessions against future compromises of session or long-term keys.

    +
    @@ -599,7 +589,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html b/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html index b4a9f38541..86ec13c09f 100644 --- a/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html +++ b/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html @@ -378,21 +378,21 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v5.4 - link mobile and desktop apps via quantum resistant protocol, and much better groups.

    +

    SimpleX Chat v5.4 - link mobile and desktop apps via quantum resistant protocol, and much better groups.

    Published: Nov 25, 2023

    What's new in v5.4:

      -
    • Link mobile and desktop apps via secure quantum-resistant protocol. +
    • Link mobile and desktop apps via secure quantum-resistant protocol.
      • ⚡️ Quick start - how to use it.
      • How does it work?
      • 🤖 Connecting to remote CLI.
    • -
    • Better groups. +
    • Better groups. -

      There are many other improvements and fixes in this release:

      +

      There are many other improvements and fixes in this release:

      • profile names now allow spaces.
      • when you delete contacts, they are optionally notified.
      • @@ -425,7 +425,7 @@ window.addEventListener('scroll',changeHeaderBg);

        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.

        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 Use from desktop in mobile app settings.

        How does it work?

        -

        The way we designed this solution avoided any security compromises, and the End-to-end encryption remained as secure as it was - it uses double-ratchet algorithm, with perfect Forward secrecy, Post-compromise security and deniability.

        +

        The way we designed this solution avoided any security compromises, and the end-to-end encryption remained as secure as it was - it uses double-ratchet algorithm, with perfect forward secrecy, post-compromise security and deniability.

        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 this document. We will soon be augmenting double ratchet to be resistant to quantum computers as well.

        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.

        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.

        @@ -436,7 +436,7 @@ window.addEventListener('scroll',changeHeaderBg);
        1. 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 localhost instead: iptables -t nat -A OUTPUT -p all -d 192.168.1.100 -j DNAT --to-destination 127.0.0.1 (replace 192.168.1.100 with the actual address of your desktop, and make sure it is not needed for something else on your remote machine).
        2. Also on the remote machine, run Simplex CLI with the option --device-name 'SimpleX CLI', or any other name you like. You can also use the command /set device name <name> to set it for the CLI.
        3. -
        4. Choose Link a mobile in desktop app settings, note the port it shows under the QR code, and click "Share link".
        5. +
        6. Choose Link a mobile in desktop app settings, note the port it shows under the QR code, and click "Share link".
        7. Run ssh port forwarding on desktop computer to let your remote machine connect to desktop app: ssh -R 12345:127.0.0.1:12345 -N user@example.com where 12345 is the port on which desktop app is listening for the connections from step 3, example.com is the hostname or IP address of your remote machine, and user is some username on remote machine. You can run port forwarding in the background by adding -f option.
        8. On the remote machine, run CLI command /connect remote ctrl <link>, where <link> is the desktop session address copied in step 3. You should run this command within 1 minute from choosing Link a mobile.
        9. 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 /verify remote ctrl <code> command, CLI can be used from desktop app.
        10. @@ -465,8 +465,8 @@ window.addEventListener('scroll',changeHeaderBg);

          You can find the full list of fixed bugs and small improvements in the release notes.

          SimpleX platform

          Some links to answer the most common questions:

          -

          How can SimpleX deliver messages without user identifiers.

          -

          What are the risks to have identifiers assigned to the users.

          +

          How can SimpleX deliver messages without user identifiers.

          +

          What are the risks to have identifiers assigned to the users.

          Technical details and limitations.

          How SimpleX is different from Session, Matrix, Signal, etc..

          Please also see our website.

          @@ -479,17 +479,7 @@ window.addEventListener('scroll',changeHeaderBg);

          Thank you,

          Evgeny

          SimpleX Chat founder

          -

          End-to-end encryption

          A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

          Forward secrecy

          Also known as perfect forward secrecy, it is a feature of a key agreement protocol that ensures that session keys will not be compromised even if long-term secrets used in the session key exchange are compromised. Forward secrecy protects past sessions against future compromises of session or long-term keys.

          Post-compromise security

          Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

    +
    @@ -614,7 +604,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html b/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html index 694813ee4c..e88bbbac6b 100644 --- a/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html +++ b/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html @@ -378,9 +378,9 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect.

    +

    SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect.

    Published: Jan 24, 2024

    -

    SimpleX Chat infrastructure on Linode:

    +

    SimpleX Chat infrastructure on Linode:

    • Free infrastructure.
    • SimpleX servers in Linode Marketplace.
    • @@ -388,10 +388,10 @@ window.addEventListener('scroll',changeHeaderBg);

    What's new in v5.5:

    Also, we added Hungarian (only Android) and Turkish interface languages, thanks to our users and Weblate.

    SimpleX Chat Android app is now available in 20 languages!

    @@ -415,7 +415,7 @@ window.addEventListener('scroll',changeHeaderBg);

    What's new in v5.5

    Private notes

    -

    "Where do I put notes for myself?" 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.

    +

    "Where do I put notes for myself?" 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.

    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.

    You can access the Private notes created in mobile app from desktop app too, by linking a mobile and desktop apps - the feature added in the previous version. It allows to conveniently share files between the devices without sending them over the Internet.

    Group history

    @@ -433,13 +433,13 @@ window.addEventListener('scroll',changeHeaderBg);

    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.

    Other improvements in this version:

      -
    • you can now reveal secret messages by tapping. To send a secret message wrap in "#" characters, e.g. "#password#".
    • +
    • you can now reveal secret messages by tapping. To send a secret message wrap in "#" characters, e.g. "#password#".
    • you can delete the last user profile, simplifying account deletion. If you have hidden user profiles, they won't be deleted in this case, and will be accessible again once you create a new profile.

    SimpleX platform

    Some links to answer the most common questions:

    -

    How can SimpleX deliver messages without user identifiers.

    -

    What are the risks to have identifiers assigned to the users.

    +

    How can SimpleX deliver messages without user identifiers.

    +

    What are the risks to have identifiers assigned to the users.

    Technical details and limitations.

    How SimpleX is different from Session, Matrix, Signal, etc..

    Please also see our website.

    @@ -452,17 +452,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you,

    Evgeny

    SimpleX Chat founder

    -
    +
    @@ -587,7 +577,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html b/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html index 871e69a09c..ed52f5a10d 100644 --- a/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html +++ b/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html @@ -378,34 +378,34 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat v5.6 beta: adding quantum resistance to Signal Double ratchet algorithm

    +

    SimpleX Chat v5.6 beta: adding quantum resistance to Signal double ratchet algorithm

    Published: Mar 14, 2024

    This is a major upgrade for SimpleX messaging protocols, we are really proud to present the results of the hard work of our whole team on the Pi day.

    -

    This post also covers various aspects of End-to-end encryption, compares different messengers, and explains why and how quantum-resistant encryption is added to SimpleX Chat:

    +

    This post also covers various aspects of end-to-end encryption, compares different messengers, and explains why and how quantum-resistant encryption is added to SimpleX Chat:

    -

    Why do we need End-to-end encryption?

    -

    The objective of End-to-end encryption is to make any potential attackers, such as traffic observers or communication providers who pass the messages between senders and recipients, unable to recover any message content or meaningful information about the messages, even if these attackers possess very advanced computing and mathematical capabilities.

    +

    Why do we need end-to-end encryption?

    +

    The objective of end-to-end encryption is to make any potential attackers, such as traffic observers or communication providers who pass the messages between senders and recipients, unable to recover any message content or meaningful information about the messages, even if these attackers possess very advanced computing and mathematical capabilities.

    While human eyes are unable to see any difference between simply scrambled and encrypted messages, the difference between unreadable scrambling and unbreakable encryption can be as huge as just a few seconds to unscramble a message on an average laptop and more time than the Universe existed required to break the encryption on the most powerful computer in the world.

    Achieving the latter requires a lot of mathematical precision in both the cryptographic algorithms and in how they are used, and effectively makes encrypted messages indistinguishable from random noise, without any discoverable patterns or statistical irregularities that a computer could use to break the message encryption any faster than it it would take to try every possible combination of bits in the key.

    -

    End-to-end encryption is an important component of our individual and business security, privacy and sovereignty. Having our private communications protected from any observers is both the natural condition and our inalienable human right.

    -

    It's very sad to see the same people who keep their financial affairs private to protect from financial crimes, lock their doors to protect from thieves, and curtain their windows to protect from the occasional prying eyes, when it comes to protecting their personal lives from the data criminals say "we don't care about privacy, we have nothing to hide". Everybody's safety depends on keeping their affairs and relations private, not visible to a vast and ruthless data gathering machines, that abuse our data for commercial gain, without any regard to our interests or even the safety of our families and children.

    +

    End-to-end encryption is an important component of our individual and business security, privacy and sovereignty. Having our private communications protected from any observers is both the natural condition and our inalienable human right.

    +

    It's very sad to see the same people who keep their financial affairs private to protect from financial crimes, lock their doors to protect from thieves, and curtain their windows to protect from the occasional prying eyes, when it comes to protecting their personal lives from the data criminals say "we don't care about privacy, we have nothing to hide". Everybody's safety depends on keeping their affairs and relations private, not visible to a vast and ruthless data gathering machines, that abuse our data for commercial gain, without any regard to our interests or even the safety of our families and children.

    Why is encryption even allowed?

    If encryption is such a powerful tool to protect our lives, it also can be used to conceal crimes, so why the governments don't consider it similar to arms, and don't heavily regulate its use?

    @@ -420,8 +420,8 @@ window.addEventListener('scroll',changeHeaderBg);

    Without DJB's work the world would have been in a much worse place privacy- and security-wise.

    Daniel, we are really grateful for the work you did and continue doing. Thank you, and congratulations on the International Mathematics Day!

    -

    End-to-end encryption security: attacks and defense

    -

    End-to-end encryption is offered by many messaging apps and protocols, but the security of different implementations are not the same. While many users know about the importance of Forward secrecy - the quality of End-to-end encryption that preserves security of the encryption of the past messages, even if the keys used to encrypt some of the messages were compromised - there are many other qualities that protect from different attacks. Below there is the overview of these attacks and the properties of End-to-end encryption schemes that mitigate these attacks.

    +

    End-to-end encryption security: attacks and defense

    +

    End-to-end encryption is offered by many messaging apps and protocols, but the security of different implementations are not the same. While many users know about the importance of forward secrecy - the quality of end-to-end encryption that preserves security of the encryption of the past messages, even if the keys used to encrypt some of the messages were compromised - there are many other qualities that protect from different attacks. Below there is the overview of these attacks and the properties of end-to-end encryption schemes that mitigate these attacks.

    1. Compromised message size - mitigated by padding messages to a fixed block size

    While the content encryption is the most important, concealing the actual message size is almost as important for several reasons:

      @@ -430,52 +430,52 @@ window.addEventListener('scroll',changeHeaderBg);

    The only effective mitigation to these attacks is to pad all messages to a fixed size. Using space-efficient schemes like Padme, or padding to encryption block size is ineffective for mitigating these attacks, as they still allow differentiating message sizes.

    To the best of our knowledge, the only messengers other than SimpleX Chat that pad all messages to a fixed packet size are Cwtch and no longer developed Pond - SimpleX design can be seen as an evolution of Pond design.

    -

    2. Compromised confidential messages - mitigated by Repudiation (deniability)

    -

    Many users are very interested in having ability to irreversibly delete sent messages from the recipients devices. But not only would this ability violate data sovereignty of device owners, it is also completely ineffective, as the recipients could simply put the device offline or use a modified client app to ignore message deletion requests. While SimpleX Chat provides such features as disappearing messages and the ability to irreversibly delete sent messages provided both parties agree to that, these are convenience features, and they cannot be considered security measures.

    -

    The solution to that is well known to cryptographers - it is the quality of the encryption algorithms called "Repudiation", sometimes also called "deniability". This is the ability of the senders to plausibly deny having sent any messages, because cryptographic algorithms used to encrypt allow recipients forging these messages on their devices, so while the encryption proves authenticity of the message to the recipient, it cannot be used as a proof to any third party.

    +

    2. Compromised confidential messages - mitigated by repudiation (deniability)

    +

    Many users are very interested in having ability to irreversibly delete sent messages from the recipients devices. But not only would this ability violate data sovereignty of device owners, it is also completely ineffective, as the recipients could simply put the device offline or use a modified client app to ignore message deletion requests. While SimpleX Chat provides such features as disappearing messages and the ability to irreversibly delete sent messages provided both parties agree to that, these are convenience features, and they cannot be considered security measures.

    +

    The solution to that is well known to cryptographers - it is the quality of the encryption algorithms called "repudiation", sometimes also called "deniability". This is the ability of the senders to plausibly deny having sent any messages, because cryptographic algorithms used to encrypt allow recipients forging these messages on their devices, so while the encryption proves authenticity of the message to the recipient, it cannot be used as a proof to any third party.

    Putting it all in a simpler language - a sender can claim that the recipient forged messages on their device, and deny ever having sent them. The recipient will not be able to provide any cryptographic proof. This quality makes digital conversation having the same qualities as private off-the-record conversation - that's why the family of algorithms that provide these qualities are called off-the-record (OTR) encryption.

    -

    Repudiation is still a rather new concept - the first off-the-record algorithms were proposed in 2004 and were only offered to a wide range of users in Signal messenger. This concept is still quite badly understood by users and society, and yet to have been used as the defense in any public court cases, as legal systems evolve much slower than technology. In high profile cases Repudiation can be used as an effective evidence for the defense.

    -

    Repudiation in messaging systems can be undermined by adding cryptographic signature to the protocol, and many messengers that use OTR encryption algorithms do exactly that, unfortunately. SimpleX Chat does not use signature in any part of client-client protocol, but the signature is currently used when authorizing sender's messages to the relays. v5.7 will improve deniability by enabling a different authorization scheme that will provide full-stack Repudiation in all protocol layers.

    -

    3. Compromised message keys - mitigated by Forward secrecy

    -

    The attacker who obtained or broke the keys used to encrypt individual messages, may try to use these keys to decrypt past or future messages. This attack is unlikely to succeed via message interception, and it is likely to require breaking into the device storage. But in any case, if the key was broken or obtained in some other way it's important that this key cannot be used to decrypt other messages - this is achieved by Forward secrecy.

    -

    This property is well understood by the users, and most messengers that focus on privacy and security, with the exception of Session, provide Forward secrecy as part of their encryption schemes design.

    -

    4. Compromised long-term or session - mitigated by Break-in recovery

    -

    This attack is much less understood by the users, and Forward secrecy does not protect from it. Arguably, it's almost impossible to compromise individual message keys without compromising long-term or session keys. So the ability of the encryption to recover from break-in (attacker making a copy of the device data without retaining the ongoing access) is both very important and pragmatic - break-in attacks are simpler to execute on mobile devices during short-term device access than long-term ongoing compromise.

    -

    Out of all encryption algorithms known to us only Signal Double ratchet algorithm (also referred to as Signal algorithm or Double ratchet algorithm, which is not the same as Signal messaging platform and protocols) provides the ability for the encryption security to recover after break-ins attacks. This recovery happens automatically and transparently to the users, without them doing anything special or even knowing about break-in, by simply sending messages. Every time one of the communication parties replies to another party message, new random keys are generated and previously stolen keys become useless.

    -

    Double ratchet algorithm is used in Signal, Cwtch and SimpleX Chat. But Signal app by allowing to use the same profile on multiple devices compromises the Break-in recovery function of Signal algorithm, as explained in this paper. Because of Break-in recovery you cannot use SimpleX Chat profile on more than one device at the same time - the encryption scheme rotates the long term keys, randomly, and keys on another device become useless, as they would become useless for the attacker who stole them. Security always has some costs to the convenience.

    -

    5. Man-in-the-middle attack - mitigated by two-factor Key exchange

    -

    Many people incorrectly believe that security of End-to-end encryption cannot be broken by communication provider. But End-to-end encryption is only as secure as Key exchange. While any intermediary passing the keys between senders and recipients cannot recover the private keys from the public keys, they can simply replace the passed public keys with their own and then proxy all communication between the users having full access to the original messages. So instead of having an end-to-end encrypted channel, users would have two half-way encrypted channels - between users and their communication intermediary.

    +

    Repudiation is still a rather new concept - the first off-the-record algorithms were proposed in 2004 and were only offered to a wide range of users in Signal messenger. This concept is still quite badly understood by users and society, and yet to have been used as the defense in any public court cases, as legal systems evolve much slower than technology. In high profile cases repudiation can be used as an effective evidence for the defense.

    +

    Repudiation in messaging systems can be undermined by adding cryptographic signature to the protocol, and many messengers that use OTR encryption algorithms do exactly that, unfortunately. SimpleX Chat does not use signature in any part of client-client protocol, but the signature is currently used when authorizing sender's messages to the relays. v5.7 will improve deniability by enabling a different authorization scheme that will provide full-stack repudiation in all protocol layers.

    +

    3. Compromised message keys - mitigated by forward secrecy

    +

    The attacker who obtained or broke the keys used to encrypt individual messages, may try to use these keys to decrypt past or future messages. This attack is unlikely to succeed via message interception, and it is likely to require breaking into the device storage. But in any case, if the key was broken or obtained in some other way it's important that this key cannot be used to decrypt other messages - this is achieved by forward secrecy.

    +

    This property is well understood by the users, and most messengers that focus on privacy and security, with the exception of Session, provide forward secrecy as part of their encryption schemes design.

    +

    4. Compromised long-term or session - mitigated by break-in recovery

    +

    This attack is much less understood by the users, and forward secrecy does not protect from it. Arguably, it's almost impossible to compromise individual message keys without compromising long-term or session keys. So the ability of the encryption to recover from break-in (attacker making a copy of the device data without retaining the ongoing access) is both very important and pragmatic - break-in attacks are simpler to execute on mobile devices during short-term device access than long-term ongoing compromise.

    +

    Out of all encryption algorithms known to us only Signal double ratchet algorithm (also referred to as Signal algorithm or double ratchet algorithm, which is not the same as Signal messaging platform and protocols) provides the ability for the encryption security to recover after break-ins attacks. This recovery happens automatically and transparently to the users, without them doing anything special or even knowing about break-in, by simply sending messages. Every time one of the communication parties replies to another party message, new random keys are generated and previously stolen keys become useless.

    +

    Double ratchet algorithm is used in Signal, Cwtch and SimpleX Chat. But Signal app by allowing to use the same profile on multiple devices compromises the break-in recovery function of Signal algorithm, as explained in this paper. Because of break-in recovery you cannot use SimpleX Chat profile on more than one device at the same time - the encryption scheme rotates the long term keys, randomly, and keys on another device become useless, as they would become useless for the attacker who stole them. Security always has some costs to the convenience.

    +

    5. Man-in-the-middle attack - mitigated by two-factor key exchange

    +

    Many people incorrectly believe that security of end-to-end encryption cannot be broken by communication provider. But end-to-end encryption is only as secure as key exchange. While any intermediary passing the keys between senders and recipients cannot recover the private keys from the public keys, they can simply replace the passed public keys with their own and then proxy all communication between the users having full access to the original messages. So instead of having an end-to-end encrypted channel, users would have two half-way encrypted channels - between users and their communication intermediary.

    Pictures below illustrate how this attack works for RSA encryption.

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

    -

    Public key is shared

    +

    Public key is shared

    2) Now Bob can send encrypted messages to Alice - he believes they are secure!

    -

    Message is encrypted

    +

    Message is encrypted

    3) But the key could have been intercepted and substituted by Tom (the attacker, or a service provider).

    -

    Key is intercepted and replaced

    +

    Key is intercepted and replaced

    4) Now the attacker can read the messages without Alice and Bob knowing.

    -

    <span data-glossary=End-to-end encryption is compromised">

    -

    The attack on Diffie-Hellman (or on quantum-resistant) Key exchange, when both parties send their public keys (or public key and ciphertext), requires the attacker to intercept and replace both keys, but the outcome remains the same - if all communication is passed via a single channel, as it is usually the case with communication services, then any attacker that has inside access to the service can selectively compromise some of the conversations. Two years ago I wrote the post about this vulnerability of End-to-end encryption to MITM attacks.

    -

    All known mitigations of this attack require using the secondary communication channel to ensure that the keys have not been substituted. The most secure approach is to make user's key (or key fingerprint) a part of the user's address or connection link, thus making two-factor Key exchange non-optional. This approach is used in Session, Cwtch and SimpleX Chat.

    +

    End-to-end encryption is compromised

    +

    The attack on Diffie-Hellman (or on quantum-resistant) key exchange, when both parties send their public keys (or public key and ciphertext), requires the attacker to intercept and replace both keys, but the outcome remains the same - if all communication is passed via a single channel, as it is usually the case with communication services, then any attacker that has inside access to the service can selectively compromise some of the conversations. Two years ago I wrote the post about this vulnerability of end-to-end encryption to MITM attacks.

    +

    All known mitigations of this attack require using the secondary communication channel to ensure that the keys have not been substituted. The most secure approach is to make user's key (or key fingerprint) a part of the user's address or connection link, thus making two-factor key exchange non-optional. This approach is used in Session, Cwtch and SimpleX Chat.

    A less secure approach is to provide users an optional way to compare security codes - this is what is done by Signal, Element and many other messengers. The problem with this post-key-exchange verification is that it is optional, and is usually skipped by the majority of the users. Also, this security code can change because the user changed the device, or as a result of the attack via the service provider. When you see in the client app the notification that the security code changed, it's pointless to ask in the same messenger whether the device was changed, as if it were an attack, the attacker would simply confirm it. Instead, the security code needs to be re-validated again via another channel. A good security practice for the users would be to warn their communication partners about the intention to switch the device in advance, before the security code is changed.

    -

    6. "Record now, decrypt later" attacks - mitigated by Post-quantum cryptography.

    +

    6. "Record now, decrypt later" attacks - mitigated by post-quantum cryptography.

    This is the idea based on the assumption that commercially viable quantum computers will become available during the next 10 years, and then they can use time-efficient Shor's algorithm developed in 1994 to break asymmetric encryption with quantum computer (symmetric encryption is not vulnerable to this algorithm).

    -

    Post-quantum cryptography, or encryption algorithms that are resistant to quantum computers, has been the area of ongoing research for several decades, and there are some algorithms that might protect from quantum computers. It's important to account for these limitations:

    +

    Post-quantum cryptography, or encryption algorithms that are resistant to quantum computers, has been the area of ongoing research for several decades, and there are some algorithms that might protect from quantum computers. It's important to account for these limitations:

      -
    • none of the post-quantum algorithms are proven to be secure against quantum or conventional computers. They are usually referred to as "believed to be secure" by the researchers and security experts. There is continuous research to break post-quantum algorithms, and to prove their security, and many of these algorithms are broken every year, often by conventional computers.
    • +
    • none of the post-quantum algorithms are proven to be secure against quantum or conventional computers. They are usually referred to as "believed to be secure" by the researchers and security experts. There is continuous research to break post-quantum algorithms, and to prove their security, and many of these algorithms are broken every year, often by conventional computers.
    • because of the lack of proofs or guarantees that post-quantum cryptography delivers on its promise, these algorithms can only be used in hybrid encryption schemes to augment conventional cryptography, and never to replace it, contrary to some expert recommendations, as DJB explains in this blog post.
    • they are much more computationally expensive and less space efficient, and the encryption schemes have to balance their usability and security.
    • many of post-quantum algorithms have known patent claims, so any system deploying them accepts the risks of patent litigation.
    • the silver lining to these limitations is that the risk of appearance of commercially viable quantum computers in the next decade may be exaggerated.
    -

    So, to say it provocatively, Post-quantum cryptography can be compared with a remedy against the illness that nobody has, without any guarantee that it will work. While there is a reasonable hope that it might work, so it's not exactly a snake oil, these limitations and risks have to be much better communicated to the end users than they are.

    +

    So, to say it provocatively, post-quantum cryptography can be compared with a remedy against the illness that nobody has, without any guarantee that it will work. While there is a reasonable hope that it might work, so it's not exactly a snake oil, these limitations and risks have to be much better communicated to the end users than they are.

    -

    Does it mean that Post-quantum cryptography is useless and should be ignored? Absolutely not. The risks of "record now, decrypt later" attacks are real, particularly for high profile targets, including millions of people - journalists, whistle-blowers, freedom-fighters in oppressive regimes, and even some ordinary people who may become targets of information crimes. Large scale collection of encrypted communication data is ongoing, and this data may be used in the future. So having the solution that may protect you (Post-quantum cryptography), as long as it doesn't replace the solution that is proven to protect you (conventional cryptography), is highly beneficial in any communication solution, and has already been deployed in many tools and in some messengers.

    -

    How secure is End-to-end encryption in different messengers?

    +

    Does it mean that post-quantum cryptography is useless and should be ignored? Absolutely not. The risks of "record now, decrypt later" attacks are real, particularly for high profile targets, including millions of people - journalists, whistle-blowers, freedom-fighters in oppressive regimes, and even some ordinary people who may become targets of information crimes. Large scale collection of encrypted communication data is ongoing, and this data may be used in the future. So having the solution that may protect you (post-quantum cryptography), as long as it doesn't replace the solution that is proven to protect you (conventional cryptography), is highly beneficial in any communication solution, and has already been deployed in many tools and in some messengers.

    +

    How secure is end-to-end encryption in different messengers?

    This comparison may be incorrect in some of the columns. We apologize if some of the points are incorrect, please let us know about any mistakes so we can amend them!

    -

    The main objective here is to establish the framework for comparing the security of End-to-end encryption schemes, and to highlight any areas for improvement, not to criticize any implementations.

    -

    Messengers comparison

    -

    1 Repudiation in SimpleX Chat will include client-server protocol from v5.7 or v5.8. Currently it is implemented but not enabled yet, as its support requires releasing the relay protocol that breaks backward compatibility.

    -

    2 Post-quantum cryptography is available in beta version, as opt-in only for direct conversations. See below how it will be rolled-out further.

    +

    The main objective here is to establish the framework for comparing the security of end-to-end encryption schemes, and to highlight any areas for improvement, not to criticize any implementations.

    +

    Messengers comparison

    +

    1 Repudiation in SimpleX Chat will include client-server protocol from v5.7 or v5.8. Currently it is implemented but not enabled yet, as its support requires releasing the relay protocol that breaks backward compatibility.

    +

    2 Post-quantum cryptography is available in beta version, as opt-in only for direct conversations. See below how it will be rolled-out further.

    Some columns are marked with a yellow checkmark:

    • when messages are padded, but not to a fixed size.
    • @@ -483,22 +483,22 @@ window.addEventListener('scroll',changeHeaderBg);
    • when 2-factor key exchange is optional (via security code verification).
    • when post-quantum cryptography is only added to the initial key agreement and does not protect break-in recovery.
    -

    Adding quantum resistance to Signal Double ratchet algorithm

    -

    We have been exploring Post-quantum cryptography since early 2022, when SimpleX Chat was first released, and we did not want to be pioneers here - cryptography is critically important to make it right.

    +

    Adding quantum resistance to Signal double ratchet algorithm

    +

    We have been exploring post-quantum cryptography since early 2022, when SimpleX Chat was first released, and we did not want to be pioneers here - cryptography is critically important to make it right.

    We hoped to adopt the algorithm that will be standardized by NIST, but the standardization process turned out to be hugely disappointing, and the ML-KEM (Kyber) algorithm that was accepted as a standard was modified to remove an important hashing step (see the lines 304-314 in the published spec)), that mitigates the attacks via a compromised random numbers generator, ignoring strong criticism from many expert cryptographers, including DJB (see this discussion and the comments NIST received). To make it even worse, the calculation of security levels of Kyber appears to have been done incorrectly, and overall, the chosen Kyber seems worse than rejected NTRU according to the analysis by DJB.

    -

    We also analyzed the encryption schemes proposed in Tutanota in 2021, and another scheme adopted by Signal last year, and published the design of quantum resistant Double ratchet algorithm that we believe provides better security than these schemes:

    +

    We also analyzed the encryption schemes proposed in Tutanota in 2021, and another scheme adopted by Signal last year, and published the design of quantum resistant double ratchet algorithm that we believe provides better security than these schemes:

    • unlike Tutanota design, it augments rather than replaces conventional cryptography, and also avoids using signatures when the new keys are agreed (ratchet steps).
    • unlike other messengers that adopted or plan to adopt ML-KEM, we used Streamlined NTRU Prime algorithm (specifically, strnup761) that has no problems of ML-KEM, no known patent claims, and seems less likely to be compromised than other algorithms - it is exactly the same algorithm that is used in SSH. You can review the comparison of the risks of various post-quantum algorithms.
    • unlike Signal design that only added quantum resistance to the initial key exchange by replacing X3DH key agreement scheme with post-quantum PQXDH, but did not improve Signal algorithm itself, our design added quantum-resistant key agreements inside double algorithm, making its break-in recovery property also quantum resistant.
    -

    The we could make Break-in recovery property of Signal algorithm quantum-resistant, and why, probably, Signal didn't, is because irrespective of the message size SimpleX Chat uses a fixed block size of 16kb to provide security and privacy against any traffic observers and against messaging relays. So we had an extra space to accommodate additional ~2.2kb worth of keys in each message without any additional traffic costs.

    +

    The we could make break-in recovery property of Signal algorithm quantum-resistant, and why, probably, Signal didn't, is because irrespective of the message size SimpleX Chat uses a fixed block size of 16kb to provide security and privacy against any traffic observers and against messaging relays. So we had an extra space to accommodate additional ~2.2kb worth of keys in each message without any additional traffic costs.

    In case when the message is larger than the remaining block size, e.g. when the message contains image or link preview, or a large text, we used zstd compression to provide additional space for the required keys without reducing image preview quality or creating additional traffic - our previously inefficient JSON encoding of chat messages was helpful in this case.

    -Double KEM agreement -

    The additional challenge in adding sntrup761 was that unlike Diffie-Hellman Key exchange, which is symmetric (that is, the parties can share their public keys in any order and the shared secret can be computed from two public keys), sntrup761 is interactive key-encapsulation mechanism (KEM) that requires that one party shares its public key, and another party uses it to encapsulate (which is a fancy term for "encrypt" - that is why it has asterisks in the image) a random shared secret, and sends it back - making it somewhat similar to RSA cryptography. But this asymmetric design does not fit the symmetric operation of Signal Double ratchet algorithm, where both sides need to generate random public keys and to compute new shared secrets every time messaging direction changes for them. So to achieve that symmetry we had to use two KEM key agreements running in parallel, in a lock-step fashion, as shown on the diagram. In this case both parties generate random public keys and also use the public key of another party to encapsulate the random shared secret. Effectively, this design adds a double quantum-resistant key agreement to Double ratchet algorithm steps that provide Break-in recovery.

    +Double KEM agreement +

    The additional challenge in adding sntrup761 was that unlike Diffie-Hellman key exchange, which is symmetric (that is, the parties can share their public keys in any order and the shared secret can be computed from two public keys), sntrup761 is interactive key-encapsulation mechanism (KEM) that requires that one party shares its public key, and another party uses it to encapsulate (which is a fancy term for "encrypt" - that is why it has asterisks in the image) a random shared secret, and sends it back - making it somewhat similar to RSA cryptography. But this asymmetric design does not fit the symmetric operation of Signal double ratchet algorithm, where both sides need to generate random public keys and to compute new shared secrets every time messaging direction changes for them. So to achieve that symmetry we had to use two KEM key agreements running in parallel, in a lock-step fashion, as shown on the diagram. In this case both parties generate random public keys and also use the public key of another party to encapsulate the random shared secret. Effectively, this design adds a double quantum-resistant key agreement to double ratchet algorithm steps that provide break-in recovery.

    When can you start using quantum resistant chats?

    -

    Quantum resistant Double ratchet algorithm is already available in v5.6 (beta) of SimpleX Chat as an optional feature that can be enabled for the new and, separately, for the existing direct conversations.

    +

    Quantum resistant double ratchet algorithm is already available in v5.6 (beta) of SimpleX Chat as an optional feature that can be enabled for the new and, separately, for the existing direct conversations.

    The reason it is released as opt-in is because once the conversation is upgraded to be quantum resistant, it will no longer work in the previous version of the app, and we see this ability to downgrade the app if something is not working correctly as very important for the users who use the app for critical communications.

    To enable quantum resistance for the new conversations:

      @@ -507,7 +507,7 @@ window.addEventListener('scroll',changeHeaderBg);
    • enable Show developer options toggle.
    • now you will see Post-quantum E2EE toggle - enable it as well.
    -

    Now all new contacts you add to the app will use quantum resistant Double ratchet algorithm.

    +

    Now all new contacts you add to the app will use quantum resistant double ratchet algorithm.

    Once you have enabled it for the new contacts, you can also enable it for some of the existing contacts:

    • open the chat with the contact you want to upgrade to be quantum resistant.
    • @@ -518,15 +518,15 @@ window.addEventListener('scroll',changeHeaderBg);

      Next for post-quantum crypto - all direct chats, small groups and security audit

      We will be making quantum resistance default for all direct chats in v5.7, and we plan that all existing direct chats will be automatically upgraded when both contacts install v5.7.

      We will also be adding quantum resistance to small groups up to 10-20 members. Computing cryptographic keys is much slower, in comparison, and it would be very inefficient (and completely unnecessary) for large public groups.

      -

      We have also arranged a 3rd party cryptographic review of our protocol and encryption schemes design for June/July 2024 - it will cover the additions to SimpleX protocols since the previous security audit in November 2022, including XFTP protocol we use for file transfers and quantum resistant Signal Double ratchet algorithm we just released in this beta version.

      +

      We have also arranged a 3rd party cryptographic review of our protocol and encryption schemes design for June/July 2024 - it will cover the additions to SimpleX protocols since the previous security audit in November 2022, including XFTP protocol we use for file transfers and quantum resistant Signal double ratchet algorithm we just released in this beta version.

      In November 2024 we will be conducting further implementation audit, with double the scope of our 2022 audit.

      Security audits are very expensive, as they require employing exceptionally competent engineers and cryptographers, and it does stretch our budgets - so any donations to help us cover the costs would be hugely helpful.

      That's it for now!

      Thank you for helping us improve the app, and look forward to your feedback.

      SimpleX network

      Some links to answer the most common questions:

      -

      How can SimpleX deliver messages without user identifiers.

      -

      What are the risks to have identifiers assigned to the users.

      +

      How can SimpleX deliver messages without user identifiers.

      +

      What are the risks to have identifiers assigned to the users.

      Technical details and limitations.

      How SimpleX is different from Session, Matrix, Signal, etc..

      Please also see our website.

      @@ -540,17 +540,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Thank you,

      Evgeny

      SimpleX Chat founder

      -

      Break-in recovery

      Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

      Double ratchet algorithm

      It is used by two parties to exchange end-to-end encrypted messages. The parties will use some key agreement protocol to agree on the initial shared secret key.

      End-to-end encryption

      A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

      Forward secrecy

      Also known as perfect forward secrecy, it is a feature of a key agreement protocol that ensures that session keys will not be compromised even if long-term secrets used in the session key exchange are compromised. Forward secrecy protects past sessions against future compromises of session or long-term keys.

      Key exchange

      Also known as key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for end-to-end encryption to work.

      Man-in-the-middle attack

      The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

      Post-quantum cryptography

      Any of the proposed cryptographic systems or algorithms that are thought to be secure against an attack by a quantum computer. It appears that as of 2023 there is no system or algorithm that is proven to be secure against such attacks, or even to be secure against attacks by massively parallel conventional computers, so a general recommendation is to use post-quantum cryptographic systems in combination with the traditional cryptographic systems.

      Repudiation

      The property of the cryptographic or communication system that allows the sender of the message to plausibly deny having sent the message, because while the recipient can verify that the message was sent by the sender, they cannot prove it to any third party - the recipient has a technical ability to forge the same encrypted message. This is an important quality of private communications, as it allows to have the conversation that can later be denied, similarly to having a private face-to-face conversation.

    +
    @@ -675,7 +665,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html b/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html index d5cfbe33d8..bb6aa2cb3a 100644 --- a/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html +++ b/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html @@ -378,19 +378,19 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX network: real privacy and stable profits, non-profits for protocols, v5.6 released with quantum resistant e2e encryption and simple profile migration

    +

    SimpleX network: real privacy and stable profits, non-profits for protocols, v5.6 released with quantum resistant e2e encryption and simple profile migration

    Published: Mar 23, 2024

    SimpleX network: deliver real privacy via a profitable business and non-profit protocol governance:

    What's new in v5.6:

    There are many other improvements and fixes in this release:

      @@ -400,7 +400,7 @@ window.addEventListener('scroll',changeHeaderBg);

    SimpleX network: deliver real privacy via a profitable business and non-profit protocol governance

    Community and business interests are aligned

    -

    Some people in our users' community believe that there is a conflict between the business and the community interests. This view fails to see a bigger picture of how these interests are aligned. I wrote a blog post about it here. Our goal is to grow the network and the ecosystem while enriching all stakeholders involved, both the community and the business shareholders. This strategy relies on the strengths and opportunities of both the business and the Decentralized network we build, with its vibrant community of individuals and organizations. It positions the business not as a controller but as a supporter of the community growth, resilience and sustainability.

    +

    Some people in our users' community believe that there is a conflict between the business and the community interests. This view fails to see a bigger picture of how these interests are aligned. I wrote a blog post about it here. Our goal is to grow the network and the ecosystem while enriching all stakeholders involved, both the community and the business shareholders. This strategy relies on the strengths and opportunities of both the business and the decentralized network we build, with its vibrant community of individuals and organizations. It positions the business not as a controller but as a supporter of the community growth, resilience and sustainability.

    By leveraging access to investment resources, its ability to provide stock-based incentives beyond salaries, operating as a business will satisfy users' and community needs more effectively, ensuring the long-term viability and growth of the network, while remaining true to the mission. A purely nonprofit model with no avenue to sustain this growth is simply not possible. Sustainability requires profits, that is simply spending less than earning, as every responsible individual and organization should aim for, and these profits must be based on users' payments, and not on some other sources of revenue or funds. And building the software product that customers are willing to pay for requires substantial business investments. We will accomplish it while maintaining transparency and the commitment to keep SimpleX network and its protocols open and free to use.

    The journey to the decentralized non-profit protocol governance

    At the current early stage of network growth the protocols will benefit most from the rapid evolution and centralized design. Many protocols that decentralized their evolution too early failed to evolve and to adapt to the product requirements of the majority of users, causing them to stall in growth. Even the open web became possible only thanks to Netscape, a venture funded company, that developed browsers and web server software taking it upon themselves to rapidly evolve web specification to make it into a robust application platform as we now know it. It is very unlikely that it would have happened if it was managed by a nonprofit or community, in a decentralized way.

    @@ -408,12 +408,12 @@ window.addEventListener('scroll',changeHeaderBg);

    Welcome, Esra’a!

    To help us deliver these goals, Esra’a Al Shafei joined SimpleX Chat team - we are excited to welcome her!

    Esra'a is a longtime privacy and human rights advocate from Bahrain. She is the founder of Majal.org, a network of platforms that amplify under-reported and marginalized voices in the Middle East and North Africa. She is also the co-founder of the Numun Fund, the first dedicated fund for women-led tech in the Global South. Esra’a is currently the Vice Chair of the Board at the Wikimedia Foundation, the nonprofit which hosts Wikipedia. She is also on the Board of the Tor Project, developers of one of the world’s strongest tools for privacy and freedom online. Previously, she served on the Board of Access Now, an international nonprofit dedicated to an open and free Internet.

    -

    In her own words: "Privacy and security have been the center of my work as a human rights advocate for the last 20 years in one of the most surveilled countries in the world where staying safe remains a burden. Our privacy is our dignity. It is something that belongs to us and something we should treasure - as people, as companies, as governments. Despite messaging being the most intimate aspect of our digital lives, the leading protocols in this space are centralized and we deserve a web that operates on the core principles of genuine privacy and security in a fully decentralized framework. SimpleX network will play a critical role towards that vision."

    +

    In her own words: "Privacy and security have been the center of my work as a human rights advocate for the last 20 years in one of the most surveilled countries in the world where staying safe remains a burden. Our privacy is our dignity. It is something that belongs to us and something we should treasure - as people, as companies, as governments. Despite messaging being the most intimate aspect of our digital lives, the leading protocols in this space are centralized and we deserve a web that operates on the core principles of genuine privacy and security in a fully decentralized framework. SimpleX network will play a critical role towards that vision."

    Executing the plan towards decentralized nonprofit protocol governance will be Esra’a’s primary responsibility. Our primary objective with this plan is to ensure that no single entity can control or have unrestricted ownership of the protocols, so it can maintain its integrity.

    What's new in v5.6

    -

    Quantum resistant End-to-end encryption (BETA)

    -

    Adding post-quantum resistance to the double ratchet End-to-end encryption algorithm in SimpleX Chat is a major upgrade to messaging protocols, and it creates the security against the future quantum computers.

    -

    I wrote in detail in the previous post about various properties of End-to-end encryption and how exactly quantum resistance is implemented in SimpleX Chat - currently SimpleX Chat has the most secure End-to-end encryption design against the present and future attacks.

    +

    Quantum resistant end-to-end encryption (BETA)

    +

    Adding post-quantum resistance to the double ratchet end-to-end encryption algorithm in SimpleX Chat is a major upgrade to messaging protocols, and it creates the security against the future quantum computers.

    +

    I wrote in detail in the previous post about various properties of end-to-end encryption and how exactly quantum resistance is implemented in SimpleX Chat - currently SimpleX Chat has the most secure end-to-end encryption design against the present and future attacks.

    We plan to perform a security audit of this design and implementation later this year.

    Post-quantum encryption is currently added as opt-in and has to be separately enabled to be active for the new contacts, and, additionally, can be enabled for the existing contacts.

    @@ -424,7 +424,7 @@ window.addEventListener('scroll',changeHeaderBg);
  • enable Show developer options toggle.
  • now you will see Post-quantum E2EE toggle - enable it as well.
  • -

    Now all new contacts you add to the app will use quantum resistant Signal Double ratchet algorithm.

    +

    Now all new contacts you add to the app will use quantum resistant Signal double ratchet algorithm.

    Once you have enabled it for the new contacts, you can also enable it for some of the existing contacts:

    • open the chat with the contact you want to upgrade to be quantum resistant.
    • @@ -438,8 +438,8 @@ window.addEventListener('scroll',changeHeaderBg);

      Since we added the audio and video calls in 2022 a lot of work was done to improve the stability of calls. One of the usability downsides until this release was that it was impossible to use the app during the call.

      This version solved this problem - now you can return back to the app without interrupting the call and use any of the app functions - for example, you can send the messages or files to the person you are in the call with. If this is a video call, you will continue seeing your contact in a small picture-in-picture view.

      Migrate all app data to another device via QR code

      -

      We always believed that cross-platform data portability is very important for any software. Users own their data, and they should have a way to export it from any software they use. So from the version of SimpleX Chat released in July 2022 it was possible to export the database as a self-contained file, including all contacts, messages and files, and import it on a new device.

      -

      "How can I migrate my data to another device?" was one of the most frequent user questions, but until this release this process was quite complex, requiring too many steps, and most non-technical users were not willing to try it, as even though it was reliable, it appeared risky.

      +

      We always believed that cross-platform data portability is very important for any software. Users own their data, and they should have a way to export it from any software they use. So from the version of SimpleX Chat released in July 2022 it was possible to export the database as a self-contained file, including all contacts, messages and files, and import it on a new device.

      +

      "How can I migrate my data to another device?" was one of the most frequent user questions, but until this release this process was quite complex, requiring too many steps, and most non-technical users were not willing to try it, as even though it was reliable, it appeared risky.

      This release made the app data migration very simple, see the steps below.

      Start the migration on the source device

      @@ -461,11 +461,11 @@ window.addEventListener('scroll',changeHeaderBg);

      Finalize migration on the source device

      When the chat starts on the target device, make sure to tap Finalize migration and then Delete database on the source device.

      -

      The database cannot be used on two devices at the same time, doing so would make it impossible to decrypt the received messages. This is a security measure - the Break-in recovery property of Double ratchet algorithm.

      +

      The database cannot be used on two devices at the same time, doing so would make it impossible to decrypt the received messages. This is a security measure - the break-in recovery property of double ratchet algorithm.

      SimpleX network

      Some links to answer the most common questions:

      -

      How can SimpleX deliver messages without user identifiers.

      -

      What are the risks to have identifiers assigned to the users.

      +

      How can SimpleX deliver messages without user identifiers.

      +

      What are the risks to have identifiers assigned to the users.

      Technical details and limitations.

      How SimpleX is different from Session, Matrix, Signal, etc..

      Please also see our website.

      @@ -479,17 +479,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Thank you,

      Evgeny

      SimpleX Chat founder

      -

      Break-in recovery

      Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

      Decentralized network

      Decentralized network is often used to mean "the network based on decentralized blockchain". In its original meaning, decentralized network means that there is no central authority or any other point of centralization in the network, other than network protocols specification. The advantage of decentralized networks is that they are resilient to censorship and to the provider going out of business. The disadvantage is that they are often slower to innovate, and the security may be worse than with the centralized network.

      Double ratchet algorithm

      It is used by two parties to exchange end-to-end encrypted messages. The parties will use some key agreement protocol to agree on the initial shared secret key.

      End-to-end encryption

      A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    +
    @@ -614,7 +604,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.html b/blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.html index 36dc2684d8..2bba6f678d 100644 --- a/blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.html +++ b/blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    Why I joined SimpleX Chat

    +

    Why I joined SimpleX Chat

    Published: Apr 4, 2024

    By Esra'a al Shafei

    Transitioning from a lifelong career dedicated to nonprofits, including Board roles at organizations like the Wikimedia Foundation, Access Now and Tor, my decision to join SimpleX Chat may come as a surprise to some. But, as I step into this new chapter, I want to share the insights and convictions that have guided me here, shedding light on what I think sets SimpleX Chat apart and why this move feels like an essential learning opportunity.

    @@ -393,17 +393,7 @@ window.addEventListener('scroll',changeHeaderBg);

    It’s worth noting that some private foundations operate on the VC model in supporting nonprofits, either by requiring Board seats or requesting that their funding be used towards very specific objectives not always in alignment with the organization’s values and mission. It’s also worth noting that some nonprofits actually operate on the models of surveillance and censorship. Therefore, whether an organization or company is VC-backed or a nonprofit should not be the sole factor in deciding whether or not it is trustworthy. Actions are important, with full transparency being one of the most critical factors, and being fully open source being another to attract valid criticisms and audits to ensure any product or protocol lives up to its privacy and security promise. SimpleX Chat prides itself on being both transparent and open, on top of also being fully decentralized. If you’re new to it and eager to know more, you can start with this overview.

    Another important consideration is that the SimpleX network does have a plan that would rely on users' payments for specific or tailored services, and not on some other sources of revenue or funds (ads, etc.). Building anything that users would be willing to pay for requires substantially more time and resources, hence the VC route to establish a business model that doesn’t translate to the user being the product. But any business services need to be separate from SimpleX as a public interest technology. As outlined in this recent post, I’ll be using my background in nonprofit governance structures to ensure that the SimpleX network protocols evolve under the stewardship of nonprofit entities in various jurisdictions, so that its continued evolution aligns more closely with the vision of community-driven, independent and decentralized governance. This would help create a necessary balance between different structures, in the same way many tech nonprofits also have for-profit subsidiaries to attract fee-for-service agreements to sustain their operations.

    In summary: My decision to join Simplex Chat, despite my deep-rooted beliefs and skepticism towards VC funding, reflects a broader realization: that the fight for privacy, security, and decentralization in today’s web is multifaceted and sometimes requires us to depart from our comfort zones to explore sustainable paths for continuous growth and impact so that open source privacy tools and protocols are no longer “niche”, but universally accessible standards. As long as nothing in this journey compromises our moral principles and integrity, this will remain a very worthwhile goal to pursue.

    -
    +
    @@ -528,7 +518,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20240416-dangers-of-metadata-in-messengers.html b/blog/20240416-dangers-of-metadata-in-messengers.html index a4238608ac..74e992fee8 100644 --- a/blog/20240416-dangers-of-metadata-in-messengers.html +++ b/blog/20240416-dangers-of-metadata-in-messengers.html @@ -378,7 +378,7 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    The dangers of metadata in messengers

    +

    The dangers of metadata in messengers

    Published: Apr 16, 2024

    By Esra'a al Shafei

    In many countries around the world, phone numbers are attached to biometrics data and personal IDs. Telecommunications companies are either government owned or are heavily regulated, privately owned monopolies who comply with most government requests for backdoors or user data. The idea that today, we still need to give out our phone numbers as primary identifiers to be able to use the leading messaging apps should be frowned upon and actively challenged. It’s necessary to advocate for private alternatives in messaging that do not rely on user IDs of any kind - and yes, it’s possible.

    @@ -396,26 +396,16 @@ window.addEventListener('scroll',changeHeaderBg);
  • Personal info (email address, user IDs, phone number)
  • This is called metadata. It reveals a wealth of information about you and your connections, and in the hands of a centralized monopoly, this can and does get misused in incredibly dangerous ways. Once such metadata is logged, it can create very detailed profiles about who you are, everywhere you’ve been, and everyone you’ve ever spoken to. In settling for apps that normalize this while giving you the illusion of privacy in their marketing, we are doing ourselves a disservice by accepting this as the default. Collectively, we aren’t doing enough to protect ourselves and our social graph from this invasive overreach.

    -

    When stored, aggregated and analyzed, this metadata provides ample information that could potentially incriminate someone or be submitted to authorities. When WhatsApp and Facebook Messenger enabled End-to-end encryption for messages, of course it was a welcome and widely celebrated change. But it’s important to remember that not all End-to-end encryption utilizes the same standards, some implementations are more secure than others, so it’s something that shouldn’t necessarily be accepted at face value. More importantly: collecting and storing an obscene amount of metadata should invite global scrutiny, considering this data is often combined with whatever other information companies like Meta harvest about your identity (which is a lot.)

    +

    When stored, aggregated and analyzed, this metadata provides ample information that could potentially incriminate someone or be submitted to authorities. When WhatsApp and Facebook Messenger enabled end-to-end encryption for messages, of course it was a welcome and widely celebrated change. But it’s important to remember that not all end-to-end encryption utilizes the same standards, some implementations are more secure than others, so it’s something that shouldn’t necessarily be accepted at face value. More importantly: collecting and storing an obscene amount of metadata should invite global scrutiny, considering this data is often combined with whatever other information companies like Meta harvest about your identity (which is a lot.)

    This is one of the many reasons why we need to resist giving out our phone numbers just to access an app, especially to do something as personal and intimate as private messaging. Even though users can sometimes mask their numbers with a username, their identity on the app is still fundamentally tied to their phone number. App operators have access to this, as well as user contacts. Additionally, with a simple modification to the app's source code, the contacts may also gain access in some cases. This should raise more concerns about privacy, and it makes the need for anonymity difficult to achieve.

    Everyone has a different threat model (and if you don’t yet, now is a good time to create one). For many users today, WhatsApp and other apps may be sufficient for their specific needs, especially in connecting with families and friends who are already on the app and unlikely to migrate elsewhere. If that suits your life and needs, and if you’re aware and consciously accept the risks, great.

    But we also need to acknowledge that the world is becoming increasingly dangerous in the way AI is being used to supercharge surveillance, and we need to be educated and aware of the risks this is already having on our lives and what it subjects others in your network to when you choose metadata-heavy apps as your primary form of communication. Having alternatives will always be important, even if it’s not what you default to for everyday messaging. Recognize who in your social circles might require the extra privacy, anonymity and security, so that you can play a role in protecting vulnerable individuals who need it most. The messaging app you choose implicates others as well, not just yourself, and while you personally may not require complete privacy, others might have their lives depend on it.

    -

    End-to-end encryption is a solid start, but it's just the beginning of our pursuit for true privacy and security. True privacy means that even when legal demands come knocking, there's no useful metadata to hand over. It's not enough to just protect the content of messages; we need consistent innovation in protecting metadata too.

    +

    End-to-end encryption is a solid start, but it's just the beginning of our pursuit for true privacy and security. True privacy means that even when legal demands come knocking, there's no useful metadata to hand over. It's not enough to just protect the content of messages; we need consistent innovation in protecting metadata too.

    Changing ingrained habits is tough, but your privacy is always worth the fight. Although giants like WhatsApp and Telegram may dominate global messaging for now, increasing concerns about data harvesting and AI-driven surveillance are fueling demand for alternatives. SimpleX Chat aims to be one of those strong alternatives, hence its radical focus on a decentralized framework with no user identifiers (in other words, nothing that uniquely identifies users on the protocol level to their contacts or to the relays) and extra optionality (self-hosting an SMP server or XFTP server, access via Tor, chat profiles with incognito mode, etc.)

    As of today, most messaging alternatives, including SimpleX, will have some limitations. But with the limited resources we have, we are committed to daily progress towards creating a truly private messenger that anyone can use while maintaining the features that users have come to know and love in messaging interfaces. We want to be the prime example of a messenger that achieves genuine privacy without compromising it for convenience. We need to be able to reliably move away from small and niche use cases to endorsing and enforcing global standards for privacy and making it accessible for all users regardless of their technical expertise.

    We’re grateful for the users and donors who have been following along on this journey thus far and helping with feedback, anything from bug reports to identifying potential risks. Building in the open has always been a necessity for transparency and ongoing auditability, because we don’t want anyone to just take our word for it. See for yourself and engage in the discussions. We fully expect you to hold us accountable to our word.

    -

    End-to-end encryption

    A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    +
    @@ -540,7 +530,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html b/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html index 3082f9d3bf..aa3da09a82 100644 --- a/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html +++ b/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html @@ -378,22 +378,22 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX network: legally binding transparency, v5.7 released with better calls and messages

    +

    SimpleX network: legally binding transparency, v5.7 released with better calls and messages

    Published: Apr 26, 2024

    What's new in v5.7:

    Also, we added Lithuanian interface language to the Android and desktop apps, thanks to our users and Weblate.

    Legally binding transparency

    We are committed to open-source, privacy and security. Here are the recent changes we made:

    • We now have a Transparency Reports page.
    • -
    • We updated our Privacy Policy to remove undefined terms "impermissible" and "acceptable", which would allow us to remove anything we don't like, without any clarity on what that is. You can see the edits here.
    • +
    • We updated our Privacy Policy to remove undefined terms "impermissible" and "acceptable", which would allow us to remove anything we don't like, without any clarity on what that is. You can see the edits here.
    • We published a new page with Frequently Asked Questions, thanks to the guidance from users.
    • We also have a new Security Policy – we welcome your feedback on it.
    @@ -410,9 +410,9 @@ window.addEventListener('scroll',changeHeaderBg);

    If you see any inconsistency between technical parameters of SimpleX Network and what is promised in our Privacy Policy please raise it with us.

    What's new in v5.7

    This release focus is improving the app usability, and preparing the foundation for v5.8 that will provide an in-built protection of user IP addresses when connecting to unknown file and messaging servers, reducing the need to use Tor (which would still remain supported via SOCKS proxy, for additional privacy).

    -

    Quantum resistant End-to-end encryption

    +

    Quantum resistant end-to-end encryption

    -

    We wrote before about how quantum resistant encryption was added to SimpleX Chat and also about other properties of End-to-end encryption, possible attacks on its security and known mitigations.

    +

    We wrote before about how quantum resistant encryption was added to SimpleX Chat and also about other properties of end-to-end encryption, possible attacks on its security and known mitigations.

    Quantum resistant encryption will now be enabled by default in all direct chats. For the new conversations it will be enabled from the beginning, and for the existing conversations it will be agreed after you exchange several messages with your contacts - you will see a notice in the conversation when it happens.

    You can still safely downgrade the app to an earlier version if needed, as v5.6 already supports quantum resistant encryption.

    With the users who have an earlier version, the app will work using the conventional encryption, which is still very secure. It's important that we augmented the conventional encryption with post-quantum cryptographic algorithm rather than replaced it, using a hybrid construction as recommended by the cryptography experts.

    @@ -431,8 +431,8 @@ window.addEventListener('scroll',changeHeaderBg);

    SimpleX network

    Some links to answer the most common questions:

    -

    How can SimpleX deliver messages without user identifiers.

    -

    What are the risks to have identifiers assigned to the users.

    +

    How can SimpleX deliver messages without user identifiers.

    +

    What are the risks to have identifiers assigned to the users.

    Technical details and limitations.

    Frequently asked questions.

    Please also see our website.

    @@ -446,17 +446,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you,

    Evgeny

    SimpleX Chat founder

    -

    End-to-end encryption

    A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    +
    @@ -581,7 +571,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20240516-simplex-redefining-privacy-hard-choices.html b/blog/20240516-simplex-redefining-privacy-hard-choices.html index 69316ddc78..f3236c3d74 100644 --- a/blog/20240516-simplex-redefining-privacy-hard-choices.html +++ b/blog/20240516-simplex-redefining-privacy-hard-choices.html @@ -378,30 +378,30 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX: Redefining Privacy by Making Hard Choices

    +

    SimpleX: Redefining Privacy by Making Hard Choices

    Published: May 16, 2024

    When it comes to open source privacy tools, the status quo often dictates the limitations of existing protocols and structures. However, these norms need to be challenged to radically shift how we approach genuinely private communication. This requires doing some uncomfortable things, like making hard choices as it relates to funding, alternative decentralization models, doubling down on privacy over convenience, and more.

    There will always be questions on why the SimpleX Chat and network makes the choices it makes, and that’s good! It’s important to question us and to understand the reasoning behind each decision, whether it’s technical, structural, financial or any other.

    In this post we explain a bit more about why SimpleX operates and makes decisions the way it does.

    No user accounts

    -

    Within SimpleX network there are no user accounts, and more importantly, no user profile identifiers whatsoever at the protocol level, not even random numbers or cryptographic keys used to identify the users. This means there is absolutely nothing that uniquely links users to their contacts or to the network relays. While it's accurate to say, "You need an address to send something," it's crucial to understand that this "address" serves merely as a transient delivery destination, and not as a user profile identifier in any sense.

    +

    Within SimpleX network there are no user accounts, and more importantly, no user profile identifiers whatsoever at the protocol level, not even random numbers or cryptographic keys used to identify the users. This means there is absolutely nothing that uniquely links users to their contacts or to the network relays. While it's accurate to say, "You need an address to send something," it's crucial to understand that this "address" serves merely as a transient delivery destination, and not as a user profile identifier in any sense.

    You can read more about how SimpleX works here.

    Privacy over convenience

    One of the main considerations often ignored in security and privacy comparisons between messaging applications is multi-device access. For example, in Signal’s case, the Sesame protocol used to support multi-device access has the vulnerability that is explained in detail here:

    -

    "We present an attack on the Post-compromise security of the Signal messenger that allows to stealthily register a new device via the Sesame protocol. [...] This new device can send and receive messages without raising any ‘Bad encrypted message’ errors. Our attack thus shows that the Signal messenger does not guarantee Post-compromise security at all in the multi-device setting".

    +

    "We present an attack on the post-compromise security of the Signal messenger that allows to stealthily register a new device via the Sesame protocol. [...] This new device can send and receive messages without raising any ‘Bad encrypted message’ errors. Our attack thus shows that the Signal messenger does not guarantee post-compromise security at all in the multi-device setting".

    -

    Solutions are possible, and even the quoted paper proposes improvements, but they are not implemented in any existing communication solutions. Unfortunately this results in most communication systems, even those in the privacy space, having compromised security in multi-device settings due to these limitations. That's the reason we are not rushing a full multi-device support, and currently only provide the ability to use mobile app profiles via the desktop app, while they are on the same network.

    +

    Solutions are possible, and even the quoted paper proposes improvements, but they are not implemented in any existing communication solutions. Unfortunately this results in most communication systems, even those in the privacy space, having compromised security in multi-device settings due to these limitations. That's the reason we are not rushing a full multi-device support, and currently only provide the ability to use mobile app profiles via the desktop app, while they are on the same network.

    Another choice that compromises privacy for convenience and usability is 3rd party push notifications. At SimpleX, we take a slow path of optimizing the network and battery consumption in the app, rather than simply hiding inefficiencies behind the quick fix solution of 3rd party push notifications that increases vulnerability, a path Signal and others chose. Like other choices, it has usability and optimization trade offs, but ultimately it’s the right thing to continue progressing towards a better solution as we explain here.

    -

    Whenever possible, we strive to achieve significantly higher levels of privacy and security. For example, unlike most, if not all, applications (including Signal), we encrypt application files with per-file unique key. Consequently, once a message is deleted, there's no means to open a file that someone may have stolen in hopes of acquiring the key later. Similarly, apps like Session have done away with Forward secrecy, a decision which caused them not to be recommended for "long-term or sensitive communications". And misinformation around this makes it dangerous and irresponsible to recommend without such necessary disclosures for people’s awareness.

    -

    Session’s decision was based on the incorrect statements about double ratchet being impossible in decentralized networks, and underplayed importance of Forward secrecy, Break-in recovery and deniability - the absence of these crucial qualities makes Session a much weaker choice for private messaging. For transparency, this was something that was debated with their team here. We also made a separate post about these qualities of End-to-end encryption and their presence in different messengers, to show that not all end-to-end encrypted apps offer the same level of protections.

    +

    Whenever possible, we strive to achieve significantly higher levels of privacy and security. For example, unlike most, if not all, applications (including Signal), we encrypt application files with per-file unique key. Consequently, once a message is deleted, there's no means to open a file that someone may have stolen in hopes of acquiring the key later. Similarly, apps like Session have done away with forward secrecy, a decision which caused them not to be recommended for "long-term or sensitive communications". And misinformation around this makes it dangerous and irresponsible to recommend without such necessary disclosures for people’s awareness.

    +

    Session’s decision was based on the incorrect statements about double ratchet being impossible in decentralized networks, and underplayed importance of forward secrecy, break-in recovery and deniability - the absence of these crucial qualities makes Session a much weaker choice for private messaging. For transparency, this was something that was debated with their team here. We also made a separate post about these qualities of end-to-end encryption and their presence in different messengers, to show that not all end-to-end encrypted apps offer the same level of protections.

    Network decentralization

    -

    It's important to recognize that a model of decentralization where all servers are openly known and accessible to all clients, that some users ask for, actually results in a less Decentralized network, and as the network grows it often requires an introduction of a central authority to protect from bad actors with malicious intent. Therefore, we've deliberately opted for a slower path towards achieving a higher degree of decentralization where there is no central server registry or network authority. For example, p2p designs may offer higher initial decentralization but often compromise on privacy and eventual decentralization. In essence, our approach prioritizes a balance between initial decentralization, privacy, and higher degree of decentralization down the line.

    +

    It's important to recognize that a model of decentralization where all servers are openly known and accessible to all clients, that some users ask for, actually results in a less decentralized network, and as the network grows it often requires an introduction of a central authority to protect from bad actors with malicious intent. Therefore, we've deliberately opted for a slower path towards achieving a higher degree of decentralization where there is no central server registry or network authority. For example, p2p designs may offer higher initial decentralization but often compromise on privacy and eventual decentralization. In essence, our approach prioritizes a balance between initial decentralization, privacy, and higher degree of decentralization down the line.

    Additionally, while it's true that we haven't yet established a model to incentivize other network operators, it's certainly on the roadmap. We see the decentralization of network operators offered within the app as a top priority.

    Where it stands today, users have the freedom to select their preferred servers within the SimpleX network by configuring the app, with thousands of self-hosted servers in operation. Moreover, numerous third-party applications rely on our code for their in-app communications, operating independently of our servers, many of which we may not even be aware of.

    -

    Decentralization is an ongoing journey, and we strive to proceed at a measured pace to ensure its proper implementation. While the immediate results may not always appear ideal, prioritizing a careful approach ensures that in the long run, the decisions made in this area align with our ultimate objectives of a private, efficient, reliable and fully Decentralized network.

    +

    Decentralization is an ongoing journey, and we strive to proceed at a measured pace to ensure its proper implementation. While the immediate results may not always appear ideal, prioritizing a careful approach ensures that in the long run, the decisions made in this area align with our ultimate objectives of a private, efficient, reliable and fully decentralized network.

    Funding and profitability

    -

    We explain our rationale for funding here. Funding sources is always one of the most difficult choices to make, and it’s important to underline that VC models don’t necessarily translate to a quest for control, interference of any kind, or overall influence on product roadmap and strategy. The vast majority of investors seek profitability. Irrespective of the organization type profitability is essential for a sustainable operation, and it can and should be done while adhering to the highest possible standards for privacy. For-profit vs. nonprofit is also not an accurate metric to measure a commitment towards privacy and open standards, which is further explained here.

    +

    We explain our rationale for funding here. Funding sources is always one of the most difficult choices to make, and it’s important to underline that VC models don’t necessarily translate to a quest for control, interference of any kind, or overall influence on product roadmap and strategy. The vast majority of investors seek profitability. Irrespective of the organization type profitability is essential for a sustainable operation, and it can and should be done while adhering to the highest possible standards for privacy. For-profit vs. nonprofit is also not an accurate metric to measure a commitment towards privacy and open standards, which is further explained here.

    To make a profit, satisfying customers is the key. Unlike the many companies that profit from selling customer data, we put user privacy first. Doing this at scale requires investments. If the investors don’t own or control a company, their participation becomes merely about profit for them, and not about how this profit is obtained. With the investors we have, we are completely aligned on this - they are betting on the future where privacy is the norm. They do not dictate on anything related to our model. We build SimpleX chat, protocols and network the way Internet should have been built if we as developers always put the privacy and empowerment of users first.

    Company jurisdiction

    @@ -409,21 +409,11 @@ window.addEventListener('scroll',changeHeaderBg);

    But we’d like to clarify some misconceptions about the UK, where SimpleX Chat Ltd. is registered, and the UK legislation.

    For example, the Online Safety Act (OSA). Some people believe that it applies only to UK companies. But the OSA applicability isn’t determined by the company’s jurisdiction - it applies based on the nature and characteristics of the business and its services, as well as the number of its users in the UK. In case of SimpleX network, the OSA doesn’t apply for both of these reasons.

    The UK’s position on communication encryption, and more specifically, on end-to-end encrypted messaging, remains the subject of political debates. But with the OSA, the legislative intent was to propose technical measures to block CSAM, and it was trying to explore ways to do this via client-side scanning, which of course would undermine the encryption. However, and thanks to the hard work of privacy experts, researchers, academics and rights organizations throughout the UK and the rest of the world, the Online Safety Bill did not prohibit end-to-end encrypted apps without such scanners. It is an open question whether such technology will ever be possible, and the UK government made a public commitment that client-side scanning won't be required until it is.

    -

    For now, strong End-to-end encryption remains permissible and protected, and we hope to also add to the privacy advocacy and debates as a UK-based company to keep it legally protected.

    +

    For now, strong end-to-end encryption remains permissible and protected, and we hope to also add to the privacy advocacy and debates as a UK-based company to keep it legally protected.

    Overall, we view the UK as being better jurisdiction for privacy than many alternatives - there are some trade-offs everywhere.

    Looking ahead

    The future of the Internet should be based on decentralized infrastructure operated by commercially viable organizations. These operators need to possess minimal user data, so that users have genuine control over their identities, and free from lock-in by the operators, to support fair competition. This requires a drastic re-imagining of the current norms and newer, more privacy-minded protocols. All in all, private messaging is surrounded by very difficult challenges but it’s worth it to keep pushing the industry forward and not settle for the status quo and current trade offs, protocol limitations and vulnerabilities. The Internet deserves better standards, and so do users.

    -

    Break-in recovery

    Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

    Decentralized network

    Decentralized network is often used to mean "the network based on decentralized blockchain". In its original meaning, decentralized network means that there is no central authority or any other point of centralization in the network, other than network protocols specification. The advantage of decentralized networks is that they are resilient to censorship and to the provider going out of business. The disadvantage is that they are often slower to innovate, and the security may be worse than with the centralized network.

    End-to-end encryption

    A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    Forward secrecy

    Also known as perfect forward secrecy, it is a feature of a key agreement protocol that ensures that session keys will not be compromised even if long-term secrets used in the session key exchange are compromised. Forward secrecy protects past sessions against future compromises of session or long-term keys.

    Post-compromise security

    Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

    +
    @@ -548,7 +538,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20240601-protecting-children-safety-requires-e2e-encryption.html b/blog/20240601-protecting-children-safety-requires-e2e-encryption.html index e3101c59f0..3f96fdcfaa 100644 --- a/blog/20240601-protecting-children-safety-requires-e2e-encryption.html +++ b/blog/20240601-protecting-children-safety-requires-e2e-encryption.html @@ -378,29 +378,19 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    Protecting Children's Safety Requires End-to-end encryption

    -

    As lawmakers grapple with the serious issue of child exploitation online, some proposed solutions would fuel the very problem they aim to solve. Despite expert warnings, the Belgian Presidency persists in pushing for the implementation of client-side scanning on encrypted messaging services, rebranding the effort as "upload moderation". Their latest proposal mandates that providers of private communication services obtain user consent for AI-based scanning of their private chats. If users do not consent, they will be prohibited from sharing images, videos, and URLs.

    +

    Protecting Children's Safety Requires End-to-End Encryption

    +

    As lawmakers grapple with the serious issue of child exploitation online, some proposed solutions would fuel the very problem they aim to solve. Despite expert warnings, the Belgian Presidency persists in pushing for the implementation of client-side scanning on encrypted messaging services, rebranding the effort as "upload moderation". Their latest proposal mandates that providers of private communication services obtain user consent for AI-based scanning of their private chats. If users do not consent, they will be prohibited from sharing images, videos, and URLs.

    Privacy critics have long pushed for measures like centralized scanning of private photos and messaging data, arguing it could detect illicit content. However, invasive monitoring of private communications would create detrimental risks that far outweigh any perceived benefits.

    Why we’re taking action

    -

    SimpleX Chat signed a joint statement about the dangers of the EU compromise proposal on EU CSAM because maintaining End-to-end encryption is crucial for protecting privacy and security for everyone, including and especially children.

    -

    We urge the Ministers in the Council of the EU to stand firm against any scanning proposals that undermine End-to-end encryption, which would enable mass surveillance and misuse by bad actors, whether framed as client-side scanning, upload moderation, or any other terminology. Compromising this basic principle opens the door to devastating privacy violations. We also urge any organizations or individuals reading this to write to their representatives and voice their concerns. European Digital Rights has outlined these issues in greater detail for anyone seeking more information.

    +

    SimpleX Chat signed a joint statement about the dangers of the EU compromise proposal on EU CSAM because maintaining end-to-end encryption is crucial for protecting privacy and security for everyone, including and especially children.

    +

    We urge the Ministers in the Council of the EU to stand firm against any scanning proposals that undermine end-to-end encryption, which would enable mass surveillance and misuse by bad actors, whether framed as client-side scanning, upload moderation, or any other terminology. Compromising this basic principle opens the door to devastating privacy violations. We also urge any organizations or individuals reading this to write to their representatives and voice their concerns. European Digital Rights has outlined these issues in greater detail for anyone seeking more information.

    Why compromising privacy endangers children

    The core issue is that compromising encryption and privacy makes innocent people vulnerable to malicious hackers and criminals seeking to exploit users data. Centralized scanning systems become a tempting target, potentially exposing millions of private family photos when breached. This would easily open up avenues for blackmail, abuse, and victimization of children. A case in point is the recent criminal charges against Meta in New Mexico, which highlights how the tech giant's algorithms enabled child exploitation by encouraging connections between minors and sexual predators. Privacy-eroding initiatives like client-side scanning would play into the hands of malicious actors by making more sensitive information accessible and weaponized in the same way that it has been on Meta platforms.

    What should be done

    -

    Rather than undermining privacy, to achieve child safety online users should be empowered with high standards for encryption and data control. For example, adopting a model where children (and users in general) cannot be discovered or approached on networks unless they or their parents permit it, similar to the SimpleX network privacy model. Intelligent multi-device synchronization could enable this oversight without compromising End-to-end encryption overall. It’s always possible to protect children without opening everyone, especially children themselves, to greater vulnerabilities due to such proposals.

    +

    Rather than undermining privacy, to achieve child safety online users should be empowered with high standards for encryption and data control. For example, adopting a model where children (and users in general) cannot be discovered or approached on networks unless they or their parents permit it, similar to the SimpleX network privacy model. Intelligent multi-device synchronization could enable this oversight without compromising end-to-end encryption overall. It’s always possible to protect children without opening everyone, especially children themselves, to greater vulnerabilities due to such proposals.

    However, some recent legislative efforts have bizarrely moved in the opposite direction by seeking to limit parental access. The chilling truth is that the least private platforms have been major enablers of child exploitation. Eroding privacy protections on other services will only aid criminals further, not protect children. Preserving strong encryption and user privacy must be the foundation for any credible effort to combat online child exploitation. Initiatives trading privacy for supposed safety are not just technically flawed, but would achieve the exact opposite of their stated intent. We must avoid being gaslighted by narratives that defy logic, and instead provide users with the highest possible standards for privacy protections as a core principle.

    -

    Protecting End-to-end encryption without carving out backdoors or vulnerabilities should be non-negotiable for children's and everyone’s safety. It is critical to redirect the discourse to focus on taking genuine privacy further by protecting against metadata hoarding and other means by which people’s data can be abused or subjected to surveillance.

    -

    End-to-end encryption

    A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    +

    Protecting end-to-end encryption without carving out backdoors or vulnerabilities should be non-negotiable for children's and everyone’s safety. It is critical to redirect the discourse to focus on taking genuine privacy further by protecting against metadata hoarding and other means by which people’s data can be abused or subjected to surveillance.

    +
    @@ -525,7 +515,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html b/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html index 6bddfd820a..0dde2eec35 100644 --- a/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html +++ b/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html @@ -378,34 +378,34 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX network: private message routing, v5.8 released with IP address protection and chat themes

    +

    SimpleX network: private message routing, v5.8 released with IP address protection and chat themes

    Published: June 4, 2024

    What's new in v5.8:

    Also, we added Persian interface language to the Android and desktop apps, thanks to our users and Weblate.

    Private message routing

    What's the problem?

    -

    SimpleX network design has always been focussed on protecting User identity on the messaging protocol level - there is no user profile identifiers of any kind in the protocol design, not even random numbers or cryptographic keys.

    +

    SimpleX network design has always been focussed on protecting user identity on the messaging protocol level - there is no user profile identifiers of any kind in the protocol design, not even random numbers or cryptographic keys.

    Until this release though, SimpleX network had no built-in protection of user transport identities - IP addresses. As previously the users could only choose which messaging relays to use to receive messages, these relays could observe the IP addresses of the senders, and if these relays were controlled by the recipients, the recipients themselves could observe them too - either by modifying server code or simply by tracking all connecting IP addresses.

    To work around this limitation, many users connected to SimpleX network relays via Tor or VPN - so that the recipients' relays could not observe IP addresses of the users when they send messages. Still, it was the most important and the most criticized limitation of SimpleX network for the users.

    Why didn't we just embed Tor in the app?

    -

    Tor is the best transport Overlay network in existence, and it provides network anonymity for millions of Internet users.

    +

    Tor is the best transport overlay network in existence, and it provides network anonymity for millions of Internet users.

    SimpleX Chat has many integration points with Tor:

      -
    • it allows dual server addresses, when the same messaging relay can be reached both via Tor and via clearnet.
    • -
    • it utilises Tor's SOCKS proxy "isolate-by-auth" feature to create a new Tor circuit for each user profile, and with an additional option - for each contact. Per-contact transport isolation is still experimental, as it doesn't work if you connect to groups with many members, and it's only available if you enable developer tools.
    • +
    • it allows dual server addresses, when the same messaging relay can be reached both via Tor and via clearnet.
    • +
    • it utilises Tor's SOCKS proxy "isolate-by-auth" feature to create a new Tor circuit for each user profile, and with an additional option - for each contact. Per-contact transport isolation is still experimental, as it doesn't work if you connect to groups with many members, and it's only available if you enable developer tools.

    Many SimpleX network design ideas are borrowed from Tor network design:

      -
    • mitigation of MITM attack on client-server connection is done in the same way as Tor relays do it - the fingerprint of offline certificate is included in server address and validated by the client.
    • +
    • mitigation of MITM attack on client-server connection is done in the same way as Tor relays do it - the fingerprint of offline certificate is included in server address and validated by the client.
    • the private routing itself uses the approach similar to onion routing, by adding encryption layers on each hop.
    • we are also considering to implement Tor's Proof-of-work DoS defence mechanism.
    @@ -419,11 +419,11 @@ window.addEventListener('scroll',changeHeaderBg);

    Also, while Tor solves the problem of IP address protection, it doesn't solve the problem of meta-data correlation by user's transport session. When the client connects to the messaging relays via Tor, the relays can still observe which messaging queues a user sends messages to via a single TCP connection. The client can mitigate it with per-contact transport isolation, but it uses too much traffic and battery for most users.

    So we believed we would create more value to the users of SimpleX network with private message routing. This new message routing protocol provides IP address and transport session protection out of the box, once released. It can also be extended to support delayed delivery and other functions, improving both usability and transport privacy in the future.

    -

    At the same time, we plan to continue supporting Tor and other overlay networks. Any Overlay network that supports SOCKS proxy with "isolate-by-auth" feature will work with SimpleX Chat app.

    +

    At the same time, we plan to continue supporting Tor and other overlay networks. Any overlay network that supports SOCKS proxy with "isolate-by-auth" feature will work with SimpleX Chat app.

    What is private message routing and how does it work?

    -

    Private message routing is a major milestone for SimpleX network evolution. It is a new message routing protocol that protects both users' IP addresses and transport sessions from the messaging relays chosen by their contacts. Private message routing is, effectively, a 2-hop Onion routing protocol inspired by Tor design, but with one important difference - the first (forwarding) relay is always chosen by message sender and the second (destination) - by the message recipient. In this way, neither side of the conversation can observe IP address or transport session of another.

    -

    At the same time, the relays chosen by the sending clients to forward the messages cannot observe to which connections (messaging queues) the messages are sent, because of the additional layer of End-to-end encryption between the sender and the destination relay, similar to how Onion routing works in Tor network, and also thanks to the protocol design that avoids any repeated or non-random identifiers associated with the messages, that would otherwise allow correlating the messages sent to different connections as sent by the same user. Each message forwarded to the destination relay is additionally encrypted with one-time ephemeral key, to be independent of messages sent to different connections.

    -

    The routing protocol also prevents the possibility of MITM attack by the forwarding relay, which provides the certificate the session keys of the destination server to the sending client that are cryptographically signed by the same certificate that is included in destination server address, so the client can verify that the messages are sent to the intended destination, and not intercepted.

    +

    Private message routing is a major milestone for SimpleX network evolution. It is a new message routing protocol that protects both users' IP addresses and transport sessions from the messaging relays chosen by their contacts. Private message routing is, effectively, a 2-hop onion routing protocol inspired by Tor design, but with one important difference - the first (forwarding) relay is always chosen by message sender and the second (destination) - by the message recipient. In this way, neither side of the conversation can observe IP address or transport session of another.

    +

    At the same time, the relays chosen by the sending clients to forward the messages cannot observe to which connections (messaging queues) the messages are sent, because of the additional layer of end-to-end encryption between the sender and the destination relay, similar to how onion routing works in Tor network, and also thanks to the protocol design that avoids any repeated or non-random identifiers associated with the messages, that would otherwise allow correlating the messages sent to different connections as sent by the same user. Each message forwarded to the destination relay is additionally encrypted with one-time ephemeral key, to be independent of messages sent to different connections.

    +

    The routing protocol also prevents the possibility of MITM attack by the forwarding relay, which provides the certificate the session keys of the destination server to the sending client that are cryptographically signed by the same certificate that is included in destination server address, so the client can verify that the messages are sent to the intended destination, and not intercepted.

    The diagram below shows all the encryption layers used in private message routing:

    -----------------             -----------------  -- TLS --  -----------------             -----------------
     |               |  -- TLS --  |               |  -- f2d --  |               |  -- TLS --  |               |
    @@ -435,7 +435,7 @@ window.addEventListener('scroll',changeHeaderBg);
     |               |  -- TLS --  |               |  -- f2d --  |               |  -- TLS --  |               |
     -----------------             -----------------  -- TLS --  -----------------             -----------------
     
    -

    e2e - two End-to-end encryption layers between sending and receiving clients, one of which uses Double ratchet algorithm. These encryption layers are present in the previous version of message routing protocol too.

    +

    e2e - two end-to-end encryption layers between sending and receiving clients, one of which uses double ratchet algorithm. These encryption layers are present in the previous version of message routing protocol too.

    s2d - encryption between the sending client and recipient's destination relay. This new encryption layer hides the message metadata (destination connection address and message notification flag) from the forwarding relay.

    f2d - additional new encryption layer between forwarding and destination relays, protecting from traffic correlation in case TLS is compromised - there are no identifiers or cyphertext in common between incoming and outgoing traffic of both relays inside TLS connection.

    d2r - additional encryption layer between destination relay and the recipient, also protecting from traffic correlation in case TLS is compromised.

    @@ -449,7 +449,7 @@ window.addEventListener('scroll',changeHeaderBg);

    We wrote previously that it is important that server operators commit to running unmodified server code or disclose any code modifications, and also disclose server ownership and any other relevant information.

    While we cannot require the operators of self-hosted and private servers to disclose any information about them (apart from which server code they use - this is the requirement of the AGPLv3 license to share this information with users connecting to the server), as we add other server operators to the app, it is important for the users to have all important information about these operators and servers location.

    This server release adds server information page where all this information can be made available to the users. For example, this is the information about one of the servers preset in the app.

    -

    The updated server guide also includes the instruction about how to host this page for your server. It is generated as a static page when the server starts. We recommend using Caddy webserver to serve it.

    +

    The updated server guide also includes the instruction about how to host this page for your server. It is generated as a static page when the server starts. We recommend using Caddy webserver to serve it.

    More new things in v5.8

    Protect IP address when downloading files & media

    This version added the protection of your IP address when receiving files from unknown file servers without Tor. Images and voice messages won't automatically download from unknown servers too until you tap them, and confirm that you trust the file server where they were uploaded.

    @@ -463,8 +463,8 @@ window.addEventListener('scroll',changeHeaderBg);

    We also stopped unnecessary traffic caused by the members who became inactive without leaving the groups - it should substantially reduce traffic and battery consumption to the users who send messages in large groups.

    SimpleX network

    Some links to answer the most common questions:

    -

    How can SimpleX deliver messages without user identifiers.

    -

    What are the risks to have identifiers assigned to the users.

    +

    How can SimpleX deliver messages without user identifiers.

    +

    What are the risks to have identifiers assigned to the users.

    Technical details and limitations.

    Frequently asked questions.

    Please also see our website.

    @@ -478,17 +478,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you,

    Evgeny

    SimpleX Chat founder

    -

    Double ratchet algorithm

    It is used by two parties to exchange end-to-end encrypted messages. The parties will use some key agreement protocol to agree on the initial shared secret key.

    End-to-end encryption

    A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    MITM attack

    The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

    Onion routing

    A technique for anonymous communication over a computer network that uses multiple layers of message encryption, analogous to the layers of an onion. The encrypted data is transmitted through a series of network nodes called "onion routers," each of which "peels" away a single layer, revealing the data's next destination. The sender remains anonymous because each intermediary knows only the location of the immediately preceding and following nodes.

    Overlay network

    Nodes in the overlay network can be thought of as being connected by virtual or logical links, each of which corresponds to a path, perhaps through many physical links, in the underlying network. Tor, for example, is an overlay network on top of IP network, which in its turn is also an overlay network over some underlying physical network.

    User identity

    In a communication system it refers to anything that uniquely identifies the users to the network. Depending on the communication network, it can be a phone number, email address, username, public key or a random opaque identifier. Most messaging networks rely on some form of user identity. SimpleX appears to be the only messaging network that does not rely on any kind of user identity - see this comparison.

    +
    @@ -613,7 +603,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/blog/lang/fr-fr/README_fr/index.html b/blog/lang/fr-fr/README_fr/index.html index cc999d97f8..d38d00934e 100644 --- a/blog/lang/fr-fr/README_fr/index.html +++ b/blog/lang/fr-fr/README_fr/index.html @@ -7,7 +7,7 @@
  • réduction de l'utilisation de la batterie.
  • noms de fichiers privés.
  • -

    Nous avons également ajouté l'interface en italien, grâce à nos utilisateurs et à Weblate !

    +

    Nous avons également ajouté l'interface en italien, grâce à nos utilisateurs et à Weblate !

    3 janv. 2023 SimpleX Chat v4.4 publié

    -

    Nous avons également ajouté l'interface en français, grâce à nos utilisateurs et à Weblate !

    +

    Nous avons également ajouté l'interface en français, grâce à nos utilisateurs et à Weblate !

    6 déc. 2022 SimpleX Chat : révision et sortie de la v4.3

    Critiques de novembre :

    -

    Public keys involved in Key exchange are not used as identity, they are randomly generated for each contact.

    +

    Public keys involved in key exchange are not used as identity, they are randomly generated for each contact.

    See Encryption Primitives Used for technical details.

    🚀 Installation

    @@ -940,7 +940,7 @@ git checkout stable DOCKER_BUILDKIT=1 docker build --output ~/.local/bin .
    -

    Please note: If you encounter version `GLIBC_2.28' not found error, rebuild it with haskell:8.10.7-stretch base image (change it in your local Dockerfile).

    +

    Please note: If you encounter version `GLIBC_2.28' not found error, rebuild it with haskell:8.10.7-stretch base image (change it in your local Dockerfile).

    In any OS

      @@ -1002,7 +1002,7 @@ brew services start tor

      You can also use option --socks-proxy=ipv4:port or --socks-proxy=:port to configure host and port of your SOCKS5 proxy, e.g. if you are running it on some other host or port.

      How to use SimpleX chat

      -

      Once you have started the chat, you will be prompted to specify your "display name" and an optional "full name" to create a local chat profile. Your display name is an alias for your contacts to refer to you by - it is not unique and does not serve as a global identity. If some of your contacts chose the same display name, the chat client adds a numeric suffix to their local display name.

      +

      Once you have started the chat, you will be prompted to specify your "display name" and an optional "full name" to create a local chat profile. Your display name is an alias for your contacts to refer to you by - it is not unique and does not serve as a global identity. If some of your contacts chose the same display name, the chat client adds a numeric suffix to their local display name.

      The diagram below shows how to connect and message a contact:

      @@ -1015,31 +1015,21 @@ brew services start tor

      Use /help in chat to see the list of available commands.

      Groups

      To create a group use /g <group>, then add contacts to it with /a <group> <name>. You can then send messages to the group by entering #<group> <message>. Use /help groups for other commands.

      -

      simplex-chat

      +

      simplex-chat

      Please note: the groups are not stored on any server, they are maintained as a list of members in the app database to whom the messages will be sent.

      Sending files

      You can send a file to your contact with /f @<contact> <file_path> - the recipient will have to accept it before it is sent. Use /help files for other commands.

      -

      simplex-chat

      +

      simplex-chat

      You can send files to a group with /f #<group> <file_path>.

      User contact addresses

      As an alternative to one-time invitation links, you can create a long-term address with /ad (for /address). The created address can then be shared via any channel, and used by other users as a link to make a contact request with /c <user_contact_address>.

      You can accept or reject incoming requests with /ac <name> and /rc <name> commands.

      -

      User address is "long-term" in a sense that it is a multiple-use connection link - it can be used until it is deleted by the user, in which case all established connections would still remain active (unlike how it works with email, when changing the address results in people not being able to message you).

      +

      User address is "long-term" in a sense that it is a multiple-use connection link - it can be used until it is deleted by the user, in which case all established connections would still remain active (unlike how it works with email, when changing the address results in people not being able to message you).

      Use /help address for other commands.

      -

      simplex-chat

      -

      Key exchange

      Also known as key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for end-to-end encryption to work.

      +

      simplex-chat

      + @@ -1169,7 +1159,6 @@ brew services start tor - diff --git a/docs/contributing.html b/docs/contributing.html index 48cbaf1343..36120d6157 100644 --- a/docs/contributing.html +++ b/docs/contributing.html @@ -858,7 +858,7 @@ window.addEventListener('scroll',changeHeaderBg); -

      | Updated 31.01.2023 | Languages: EN, FR, CZ, PL |

      +

      | Updated 31.01.2023 | Languages: EN, FR, CZ, PL |

      Contributing guide

      Compiling with SQLCipher encryption enabled

      Add cabal.project.local to project root with the location of OpenSSL headers and libraries and flag setting encryption mode:

      @@ -972,17 +972,7 @@ let r' = (record :: Record) {field = value} import Control.Monad

      This PR has all the differences.

      -
      +
      @@ -1112,7 +1102,6 @@ import Control.Monad - diff --git a/docs/directory.html b/docs/directory.html index 63185b93ec..3be8592766 100644 --- a/docs/directory.html +++ b/docs/directory.html @@ -735,11 +735,11 @@ window.addEventListener('scroll',changeHeaderBg); -

      SimpleX Directory Service

      +

      SimpleX Directory Service

      You can use an experimental directory service to discover the groups created and registered by other users.

      Searching for groups

      Connect to the directory service via this address and send the message containing the words you want to find in the group name or welcome message. You will receive up to 10 groups with the largest number of members in the response, together with the links to join these groups.

      -

      Please note that your search queries can be kept by the bot as the conversation history, but you can use incognito mode when connecting to the bot, to avoid correlation with any other communications. See Privacy policy for more details.

      +

      Please note that your search queries can be kept by the bot as the conversation history, but you can use incognito mode when connecting to the bot, to avoid correlation with any other communications. See Privacy policy for more details.

      Adding groups to the directory

      How to add a group

      To add a group you must be its owner. Once you connect to the directory service and send /help, the service will guide you through the process.

      @@ -780,7 +780,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Which groups can be added

      The below is not the final policy, it is a work in progress.

      Currently, the group registration is limited and manual, as we have limited resources to evaluate the content of the groups, so the initial content policy is quite restrictive - we believe it is better to be able to extend what is allowed, than to have to reduce it.

      -

      To be "listed in the directory" *, the group must have at least 10 members. Both the group and group owner profiles must include relevant, appropriate, non-offensive avatar images, that do not use the existing trademarks.

      +

      To be "listed in the directory" *, the group must have at least 10 members. Both the group and group owner profiles must include relevant, appropriate, non-offensive avatar images, that do not use the existing trademarks.

      Please ONLY submit the groups on the following subjects:

      • communications solutions and providers (messengers, social networks, Internet, etc.)
      • @@ -791,7 +791,7 @@ window.addEventListener('scroll',changeHeaderBg);
      • media and entertainment: books, music, movies and games
      • politics, society, culture and education
      -

      The content in the group must be "appropriate" for the general audience, starting from 12 years old.

      +

      The content in the group must be "appropriate" for the general audience, starting from 12 years old.

      The content in the listed groups must:

      • be legal for the jurisdiction you are in.
      • @@ -807,18 +807,8 @@ window.addEventListener('scroll',changeHeaderBg);

        We reserve the right to not accept the group listing in the directory or cancel its listing, and there may be cases when we can't provide an explanation. We will certainly try to avoid it by communicating with the group owners first.

        The combination of display name and full name has to be unique for the listed groups.

        Once the group is listed in the directory, the bot will invite you to join the group of the group owners, where you can send any ideas or suggestions for how the groups functionality should evolve, and help steer both the product and the policies.

        -

        * "listed" means discoverable via search or any other directory service functions by any connected users other than the user who submitted the registration

        -
      +

      * "listed" means discoverable via search or any other directory service functions by any connected users other than the user who submitted the registration

      +
      @@ -948,7 +938,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/glossary.html b/docs/glossary.html index b231b48107..ec7c502ac0 100644 --- a/docs/glossary.html +++ b/docs/glossary.html @@ -735,115 +735,32 @@ window.addEventListener('scroll',changeHeaderBg); -

      Glossary

      +

      Glossary

      Choosing a private messenger requires the understanding of many technical terms, that many users, even quite technical, often misunderstand. This list is aiming to fill this knowledge gap. Please suggest any changes or additions.

      While this glossary aims to be factual and objective, it is not completely unbiased. We designed SimpleX to be the most private, secure and resilient communication network, and some definitions reflect this view.

      -

      Address portability

      -

      Similarly to phone number portability (the ability of the customer to transfer the service to another provider without changing the number), the Address portability means the ability of a communication service customer to change the service provider without changing the service address. Many federated networks support SRV records to provide Address portability, but allowing service users to set up their own domains for the addresses is not as commonly supported by the available server and client software as for email.

      -

      Anonymous credentials

      +

      Address portability

      +

      Similarly to phone number portability (the ability of the customer to transfer the service to another provider without changing the number), the address portability means the ability of a communication service customer to change the service provider without changing the service address. Many federated networks support SRV records to provide address portability, but allowing service users to set up their own domains for the addresses is not as commonly supported by the available server and client software as for email.

      +

      Anonymous credentials

      The credential that allows proving something, e.g. the right to access some resource, without identifying the user. This credential can either be generated by a trusted party or by the user themselves and provided together with the request to create the resource. The first approach creates some centralized dependency in most cases. The second approach does not require any trust - this is used in SimpleX network to authorize access to the messaging queues.

      Digital credential on Wikipedia

      -

      Blockchain

      -

      In a wide sense, Blockchain means a sequence of blocks of data, where each block contains a cryptographic hash of the previous block, thus providing integrity to the whole chain. Blockchains are used in many communication and information storage systems to provide integrity and immutability of the data. For example, BluRay disks use Blockchain. SimpleX messaging queues also use Blockchain - each message includes the hash of the previous message, to ensure the integrity – if any message is modified it will be detected by the recipient when the next message is received. Blockchains are a subset of Merkle directed acyclic graphs.

      -

      In a more narrow sense, particularly in media, Blockchain is used to refer specifically to distributed ledger, where each record also includes the hash of the previous record, but the blocks have to be agreed by the participating peers using some consensus protocol.

      +

      Blockchain

      +

      In a wide sense, blockchain means a sequence of blocks of data, where each block contains a cryptographic hash of the previous block, thus providing integrity to the whole chain. Blockchains are used in many communication and information storage systems to provide integrity and immutability of the data. For example, BluRay disks use blockchain. SimpleX messaging queues also use blockchain - each message includes the hash of the previous message, to ensure the integrity – if any message is modified it will be detected by the recipient when the next message is received. Blockchains are a subset of Merkle directed acyclic graphs.

      +

      In a more narrow sense, particularly in media, blockchain is used to refer specifically to distributed ledger, where each record also includes the hash of the previous record, but the blocks have to be agreed by the participating peers using some consensus protocol.

      Wikipedia

      -

      Break-in recovery

      -

      Post-compromise security.

      -

      Centralized network

      +

      Break-in recovery

      +

      Post-compromise security.

      +

      Centralized network

      Centralized networks are provided or controlled by a single entity. The examples are Threema, Signal, WhatsApp and Telegram. The advantage of that design is that the provider can innovate faster, and has a centralized approach to security. But the disadvantage is that the provider can change or discontinue the service, and leak, sell or disclose in some other way all users' data, including who they are connected with.

      -

      Content padding

      -

      Message padding.

      -

      Decentralized network

      -

      Decentralized network is often used to mean "the network based on decentralized Blockchain". In its original meaning, Decentralized network means that there is no central authority or any other point of centralization in the network, other than network protocols specification. The advantage of decentralized networks is that they are resilient to censorship and to the provider going out of business. The disadvantage is that they are often slower to innovate, and the security may be worse than with the Centralized network.

      +

      Content padding

      +

      Message padding.

      +

      Decentralized network

      +

      Decentralized network is often used to mean "the network based on decentralized blockchain". In its original meaning, decentralized network means that there is no central authority or any other point of centralization in the network, other than network protocols specification. The advantage of decentralized networks is that they are resilient to censorship and to the provider going out of business. The disadvantage is that they are often slower to innovate, and the security may be worse than with the centralized network.

      The examples of decentralized networks are email, web, DNS, XMPP, Matrix, BitTorrent, etc. All these examples have a shared global application-level address space. Cryptocurrency blockchains not only have a shared address space, but also a shared state, so they are more centralized than email. Tor network also has a shared global address space, but also a central authority. SimpleX network does not have a shared application-level address space (it relies on the shared transport-level addresses - SMP relay hostnames or IP addresses), and it does not have any central authority or any shared state.

      -

      Defense in depth

      +

      Defense in depth

      Originally, it is a military strategy that seeks to delay rather than prevent the advance of an attacker, buying time and causing additional casualties by yielding space.

      -

      In information security, Defense in depth represents the use of multiple computer security techniques to help mitigate the risk of one component of the defense being compromised or circumvented. An example could be anti-virus software installed on individual workstations when there is already virus protection on the firewalls and servers within the same environment.

      -

      SimpleX network applies Defense in depth approach to security by having multiple layers for the communication security and privacy:

      +

      In information security, defense in depth represents the use of multiple computer security techniques to help mitigate the risk of one component of the defense being compromised or circumvented. An example could be anti-virus software installed on individual workstations when there is already virus protection on the firewalls and servers within the same environment.

      +

      SimpleX network applies defense in depth approach to security by having multiple layers for the communication security and privacy:

        -
      • double ratchet algorithm for End-to-end encryption with perfect Forward secrecy and Post-compromise security,
      • -
      • additional layer of end-to-end encryption for each messaging queue and another encryption layer of encryption from the server to the recipient inside TLS to prevent correlation by ciphertext,
      • -
      • TLS with only strong ciphers allowed,
      • -
      • mitigation of Man-in-the-middle attack on client-server connection via server offline certificate verification,
      • -
      • mitigation of replay attacks via signing over transport channel binding,
      • -
      • multiple layers of Message padding to reduce efficiency of traffic analysis,
      • -
      • mitigation of Man-in-the-middle attack on client-client out-of-band channel when sending the invitation,
      • -
      • rotation of delivery queues to reduce efficiency of traffic analysis,
      • -
      • etc.
      • -
      -

      Wikipedia

      -

      Double ratchet algorithm

      -

      It is used by two parties to exchange end-to-end encrypted messages. The parties will use some Key agreement protocol to agree on the initial shared secret key.

      -

      Double ratchet algorithm provides perfect Forward secrecy and Post-compromise security. It is designed by Signal, and used in SimpleX Chat and many other secure messengers. Most experts consider it the state-of-the-art encryption protocol in message encryption.

      -

      End-to-end encryption

      -

      A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

      -

      End-to-end encryption requires agreeing cryptographic keys between the sender and the recipient in a way that no eavesdroppers can access the agreed keys. See Key agreement protocol. This Key exchange can be compromised via Man-in-the-middle attack, particularly if Key exchange happens via the same communication provider and no out-of-band channel is used to verify Key exchange.

      -

      Wikipedia

      -

      Federated network

      -

      Federated network is provided by several entities that agree upon the standards and operate the network collectively. This allows the users to choose their provider, that will hold their account, their messaging history and contacts, and communicate with other providers' servers on behalf of the user. The examples are email, XMPP, Matrix and Mastodon.

      -

      The advantage of that design is that there is no single organization that all users depend on, and the standards are more difficult to change, unless it benefits all users. There are several disadvantages: 1) the innovation is slower, 2) each user account still depends on a single organization, and in most cases can't move to another provider without changing their network address – there is no Address portability, 3) the security and privacy are inevitably worse than with the centralized networks.

      -

      Federation on Wikipedia

      -

      Forward secrecy

      -

      Also known as perfect Forward secrecy, it is a feature of a Key agreement protocol that ensures that session keys will not be compromised even if long-term secrets used in the session Key exchange are compromised. Forward secrecy protects past sessions against future compromises of session or long-term keys.

      -

      Wikipedia

      -

      Key agreement protocol

      -

      Also known as Key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for End-to-end encryption to work.

      -

      Wikipedia

      -

      Key exchange

      -

      Key agreement protocol.

      -

      Man-in-the-middle attack

      -

      The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

      -

      This attack can be used to compromise End-to-end encryption by intercepting public keys during Key exchange, substituting them with the attacker's keys, and then intercepting and re-encrypting all messages, without altering their content. With this attack, while the attacker does not change message content, but she can read the messages, while the communicating parties believe the messages are end-to-end encrypted.

      -

      Such attack is possible with any system that uses the same channel for Key exchange as used to send messages - it includes almost all communication systems except SimpleX, where the initial public key is always passed out-of-band. Even with SimpleX, the attacker may intercept and substitute the key sent via another channel, gaining access to communication. This risk is substantially lower, as attacker does not know in advance which channel will be used to pass the key.

      -

      To mitigate such attack the communicating parties must verify the integrity of Key exchange - SimpleX and many other messaging apps, e.g. Signal and WhatsApp, have the feature that allows it.

      -

      Wikipedia.

      -

      Merkle directed acyclic graph

      -

      Also known as Merkle DAG, a data structure based on a general graph structure where node contains the cryptographic hashes of the previous nodes that point to it. Merkle trees are a subset of Merkle DAGs - in this case each leaf contains a cryptographic hash of the parent.

      -

      This structure by design allows to verify the integrity of the whole structure by computing its hashes and comparing with the hashes included in the nodes, in the same way as with Blockchain.

      -

      The motivation to use DAG in distributed environments instead of a simpler linear Blockchain is to allow concurrent additions, when there is no requirement for a single order of added items. Merkle DAG is used, for example, in IPFS and will be used in decentralized SimpleX groups.

      -

      Wikipedia.

      -

      Message padding

      -

      Also known as Content padding, it is the process of adding data to the beginning or the end of a message prior to encryption. Padding conceals the actual message size from any eavesdroppers. SimpleX has several encryption layers, and prior to each encryption the content is padded to a fixed size.

      -

      Wikipedia.

      -

      Onion routing

      -

      A technique for anonymous communication over a computer network that uses multiple layers of message encryption, analogous to the layers of an onion. The encrypted data is transmitted through a series of network nodes called "onion routers," each of which "peels" away a single layer, revealing the data's next destination. The sender remains anonymous because each intermediary knows only the location of the immediately preceding and following nodes.

      -

      The most widely used onion network is Tor.

      -

      Some elements of SimpleX network use similar ideas in their design - different addresses for the same resource used by different parties, and additional encryption layers. Currently though, SimpleX messaging protocol does not protect sender network address, as the relay server is chosen by the recipient. The delivery relays chosen by sender that are planned for the future would make SimpleX design closer to Onion routing.

      -

      Wikipedia

      -

      Overlay network

      -

      Nodes in the Overlay network can be thought of as being connected by virtual or logical links, each of which corresponds to a path, perhaps through many physical links, in the underlying network. Tor, for example, is an Overlay network on top of IP network, which in its turn is also an Overlay network over some underlying physical network.

      -

      SimpleX Clients also form a network using SMP relays and IP or some other Overlay network (e.g., Tor), to communicate with each other. SMP relays, on another hand, do not form a network.

      -

      Wikipedia

      -

      Repudiation" class="glossary-term">Non-Repudiation

      -

      The property of the cryptographic or communication system that allows the recipient of the message to prove to any third party that the sender identified by some cryptographic key sent the message. It is the opposite to Repudiation. While in some context Repudiation" class="glossary-term">Non-Repudiation may be desirable (e.g., for contractually binding messages), in the context of private communications it may be undesirable.

      -

      Repudiation">Wikipedia

      -

      Pairwise pseudonymous identifier

      -

      Generalizing the definition from NIST Digital Identity Guidelines, it is an opaque unguessable identifier generated by a service used to access a resource by only one party.

      -

      In the context of SimpleX network, these are the identifiers generated by SMP relays to access anonymous messaging queues, with a separate identifier (and access credential) for each accessing party: recipient, sender and and optional notifications subscriber. The same approach is used by XFTP relays to access file chunks, with separate identifiers (and access credentials) for sender and each recipient.

      -

      Peer-to-peer

      -

      Peer-to-peer (P2P) is the network architecture when participants have equal rights and communicate directly via a general purpose transport or Overlay network. Unlike client-server architecture, all peers in a P2P network both provide and consume the resources. In the context of messaging, P2P architecture usually means that the messages are sent between peers, without user accounts or messages being stored on any servers. Examples are Tox, Briar, Cwtch and many others.

      -

      The advantage is that the participants do not depend on any servers. There are multiple downsides to that architecture, such as no asynchronous message delivery, the need for network-wide peer addresses, possibility of network-wide attacks, that are usually mitigated only by using a centralized authority. These disadvantages are avoided with proxied P2P architecture.

      -

      Wikipedia.

      -

      Perfect Forward secrecy

      -

      Forward secrecy.

      -

      Post-compromise security

      -

      Also known as Break-in recovery, it is the quality of the End-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as Recovery from compromise or Break-in recovery. Double-ratchet algorithm has this quality.

      -

      Post-quantum cryptography

      -

      Any of the proposed cryptographic systems or algorithms that are thought to be secure against an attack by a quantum computer. It appears that as of 2023 there is no system or algorithm that is proven to be secure against such attacks, or even to be secure against attacks by massively parallel conventional computers, so a general recommendation is to use post-quantum cryptographic systems in combination with the traditional cryptographic systems.

      -

      Wikipedia

      -

      Privacy

      -

      Someone's right to keep (or the state when they keep) their personal matters and relationships secret (e.g., Cambridge dictionary). Privacy of communication systems should include the privacy of connections and meta-data, not only the privacy of the content of messages. End-to-end encryption on its own does not provide privacy, as it only protects message content and not connections or meta-data.

      -

      Wikipedia

      -

      Proxied Peer-to-peer

      -

      Network topology of the communication system when peers communicate via proxies that do not form the network themselves. Such design is used in Pond, that has a fixed home server for each user, and in SimpleX, that uses multiple relays providing temporary connections.

      -

      Recovery from compromise

      -

      Post-compromise security.

      -

      Repudiation

      -

      The property of the cryptographic or communication system that allows the sender of the message to plausibly deny having sent the message, because while the recipient can verify that the message was sent by the sender, they cannot prove it to any third party - the recipient has a technical ability to forge the same encrypted message. This is an important quality of private communications, as it allows to have the conversation that can later be denied, similarly to having a private face-to-face conversation.

      -

      See also Repudiation" class="glossary-term">Non-Repudiation.

      -

      User identity

      -

      In a communication system it refers to anything that uniquely identifies the users to the network. Depending on the communication network, it can be a phone number, email address, username, public key or a random opaque identifier. Most messaging networks rely on some form of User identity. SimpleX appears to be the only messaging network that does not rely on any kind of User identity - see this comparison.

      -

      Address portability

      Similarly to phone number portability (the ability of the customer to transfer the service to another provider without changing the number), the address portability means the ability of a communication service customer to change the service provider without changing the service address. Many federated networks support SRV records to provide address portability, but allowing service users to set up their own domains for the addresses is not as commonly supported by the available server and client software as for email.

      Anonymous credentials

      The credential that allows proving something, e.g. the right to access some resource, without identifying the user. This credential can either be generated by a trusted party or by the user themselves and provided together with the request to create the resource. The first approach creates some centralized dependency in most cases. The second approach does not require any trust - this is used in SimpleX network to authorize access to the messaging queues.

      Blockchain

      In a wide sense, blockchain means a sequence of blocks of data, where each block contains a cryptographic hash of the previous block, thus providing integrity to the whole chain. Blockchains are used in many communication and information storage systems to provide integrity and immutability of the data. For example, BluRay disks use blockchain. SimpleX messaging queues also use blockchain - each message includes the hash of the previous message, to ensure the integrity – if any message is modified it will be detected by the recipient when the next message is received. Blockchains are a subset of Merkle directed acyclic graphs.

      Break-in recovery

      Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

      Centralized network

      Centralized networks are provided or controlled by a single entity. The examples are Threema, Signal, WhatsApp and Telegram. The advantage of that design is that the provider can innovate faster, and has a centralized approach to security. But the disadvantage is that the provider can change or discontinue the service, and leak, sell or disclose in some other way all users' data, including who they are connected with.

      Content padding

      Also known as content padding, it is the process of adding data to the beginning or the end of a message prior to encryption. Padding conceals the actual message size from any eavesdroppers. SimpleX has several encryption layers, and prior to each encryption the content is padded to a fixed size.

      Decentralized network

      Decentralized network is often used to mean "the network based on decentralized blockchain". In its original meaning, decentralized network means that there is no central authority or any other point of centralization in the network, other than network protocols specification. The advantage of decentralized networks is that they are resilient to censorship and to the provider going out of business. The disadvantage is that they are often slower to innovate, and the security may be worse than with the centralized network.

      Defense in depth

      Originally, it is a military strategy that seeks to delay rather than prevent the advance of an attacker, buying time and causing additional casualties by yielding space.

      Double ratchet algorithm

      It is used by two parties to exchange end-to-end encrypted messages. The parties will use some key agreement protocol to agree on the initial shared secret key.

      End-to-end encryption

      A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

      Federated network

      Federated network is provided by several entities that agree upon the standards and operate the network collectively. This allows the users to choose their provider, that will hold their account, their messaging history and contacts, and communicate with other providers' servers on behalf of the user. The examples are email, XMPP, Matrix and Mastodon.

      Forward secrecy

      Also known as perfect forward secrecy, it is a feature of a key agreement protocol that ensures that session keys will not be compromised even if long-term secrets used in the session key exchange are compromised. Forward secrecy protects past sessions against future compromises of session or long-term keys.

      Key agreement protocol

      Also known as key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for end-to-end encryption to work.

      Key exchange

      Also known as key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for end-to-end encryption to work.

      Man-in-the-middle attack

      The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

      Merkle directed acyclic graph

      Also known as Merkle DAG, a data structure based on a general graph structure where node contains the cryptographic hashes of the previous nodes that point to it. Merkle trees are a subset of Merkle DAGs - in this case each leaf contains a cryptographic hash of the parent.

      Message padding

      Also known as content padding, it is the process of adding data to the beginning or the end of a message prior to encryption. Padding conceals the actual message size from any eavesdroppers. SimpleX has several encryption layers, and prior to each encryption the content is padded to a fixed size.

      Non-repudiation

      undefined

      Onion routing

      A technique for anonymous communication over a computer network that uses multiple layers of message encryption, analogous to the layers of an onion. The encrypted data is transmitted through a series of network nodes called "onion routers," each of which "peels" away a single layer, revealing the data's next destination. The sender remains anonymous because each intermediary knows only the location of the immediately preceding and following nodes.

      Overlay network

      Nodes in the overlay network can be thought of as being connected by virtual or logical links, each of which corresponds to a path, perhaps through many physical links, in the underlying network. Tor, for example, is an overlay network on top of IP network, which in its turn is also an overlay network over some underlying physical network.

      Pairwise pseudonymous identifier

      Generalizing the definition from NIST Digital Identity Guidelines, it is an opaque unguessable identifier generated by a service used to access a resource by only one party.

      Peer-to-peer

      Peer-to-peer (P2P) is the network architecture when participants have equal rights and communicate directly via a general purpose transport or overlay network. Unlike client-server architecture, all peers in a P2P network both provide and consume the resources. In the context of messaging, P2P architecture usually means that the messages are sent between peers, without user accounts or messages being stored on any servers. Examples are Tox, Briar, Cwtch and many others.

      Post-compromise security

      Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

      Post-quantum cryptography

      Any of the proposed cryptographic systems or algorithms that are thought to be secure against an attack by a quantum computer. It appears that as of 2023 there is no system or algorithm that is proven to be secure against such attacks, or even to be secure against attacks by massively parallel conventional computers, so a general recommendation is to use post-quantum cryptographic systems in combination with the traditional cryptographic systems.

      Recovery from compromise

      Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

      Repudiation

      The property of the cryptographic or communication system that allows the sender of the message to plausibly deny having sent the message, because while the recipient can verify that the message was sent by the sender, they cannot prove it to any third party - the recipient has a technical ability to forge the same encrypted message. This is an important quality of private communications, as it allows to have the conversation that can later be denied, similarly to having a private face-to-face conversation.

      User identity

      In a communication system it refers to anything that uniquely identifies the users to the network. Depending on the communication network, it can be a phone number, email address, username, public key or a random opaque identifier. Most messaging networks rely on some form of user identity. SimpleX appears to be the only messaging network that does not rely on any kind of user identity - see this comparison.

      + +

      Wikipedia

      +

      Double ratchet algorithm

      +

      It is used by two parties to exchange end-to-end encrypted messages. The parties will use some key agreement protocol to agree on the initial shared secret key.

      +

      Double Ratchet algorithm provides perfect forward secrecy and post-compromise security. It is designed by Signal, and used in SimpleX Chat and many other secure messengers. Most experts consider it the state-of-the-art encryption protocol in message encryption.

      +

      End-to-end encryption

      +

      A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

      +

      End-to-end encryption requires agreeing cryptographic keys between the sender and the recipient in a way that no eavesdroppers can access the agreed keys. See key agreement protocol. This key exchange can be compromised via man-in-the-middle attack, particularly if key exchange happens via the same communication provider and no out-of-band channel is used to verify key exchange.

      +

      Wikipedia

      +

      Federated network

      +

      Federated network is provided by several entities that agree upon the standards and operate the network collectively. This allows the users to choose their provider, that will hold their account, their messaging history and contacts, and communicate with other providers' servers on behalf of the user. The examples are email, XMPP, Matrix and Mastodon.

      +

      The advantage of that design is that there is no single organization that all users depend on, and the standards are more difficult to change, unless it benefits all users. There are several disadvantages: 1) the innovation is slower, 2) each user account still depends on a single organization, and in most cases can't move to another provider without changing their network address – there is no address portability, 3) the security and privacy are inevitably worse than with the centralized networks.

      +

      Federation on Wikipedia

      +

      Forward secrecy

      +

      Also known as perfect forward secrecy, it is a feature of a key agreement protocol that ensures that session keys will not be compromised even if long-term secrets used in the session key exchange are compromised. Forward secrecy protects past sessions against future compromises of session or long-term keys.

      +

      Wikipedia

      +

      Key agreement protocol

      +

      Also known as key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for end-to-end encryption to work.

      +

      Wikipedia

      +

      Key exchange

      +

      Key agreement protocol.

      +

      Man-in-the-middle attack

      +

      The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

      +

      This attack can be used to compromise end-to-end encryption by intercepting public keys during key exchange, substituting them with the attacker's keys, and then intercepting and re-encrypting all messages, without altering their content. With this attack, while the attacker does not change message content, but she can read the messages, while the communicating parties believe the messages are end-to-end encrypted.

      +

      Such attack is possible with any system that uses the same channel for key exchange as used to send messages - it includes almost all communication systems except SimpleX, where the initial public key is always passed out-of-band. Even with SimpleX, the attacker may intercept and substitute the key sent via another channel, gaining access to communication. This risk is substantially lower, as attacker does not know in advance which channel will be used to pass the key.

      +

      To mitigate such attack the communicating parties must verify the integrity of key exchange - SimpleX and many other messaging apps, e.g. Signal and WhatsApp, have the feature that allows it.

      +

      Wikipedia.

      +

      Merkle directed acyclic graph

      +

      Also known as Merkle DAG, a data structure based on a general graph structure where node contains the cryptographic hashes of the previous nodes that point to it. Merkle trees are a subset of Merkle DAGs - in this case each leaf contains a cryptographic hash of the parent.

      +

      This structure by design allows to verify the integrity of the whole structure by computing its hashes and comparing with the hashes included in the nodes, in the same way as with blockchain.

      +

      The motivation to use DAG in distributed environments instead of a simpler linear blockchain is to allow concurrent additions, when there is no requirement for a single order of added items. Merkle DAG is used, for example, in IPFS and will be used in decentralized SimpleX groups.

      +

      Wikipedia.

      +

      Message padding

      +

      Also known as content padding, it is the process of adding data to the beginning or the end of a message prior to encryption. Padding conceals the actual message size from any eavesdroppers. SimpleX has several encryption layers, and prior to each encryption the content is padded to a fixed size.

      +

      Wikipedia.

      +

      Onion routing

      +

      A technique for anonymous communication over a computer network that uses multiple layers of message encryption, analogous to the layers of an onion. The encrypted data is transmitted through a series of network nodes called "onion routers," each of which "peels" away a single layer, revealing the data's next destination. The sender remains anonymous because each intermediary knows only the location of the immediately preceding and following nodes.

      +

      The most widely used onion network is Tor.

      +

      Some elements of SimpleX network use similar ideas in their design - different addresses for the same resource used by different parties, and additional encryption layers. Currently though, SimpleX messaging protocol does not protect sender network address, as the relay server is chosen by the recipient. The delivery relays chosen by sender that are planned for the future would make SimpleX design closer to onion routing.

      +

      Wikipedia

      +

      Overlay network

      +

      Nodes in the overlay network can be thought of as being connected by virtual or logical links, each of which corresponds to a path, perhaps through many physical links, in the underlying network. Tor, for example, is an overlay network on top of IP network, which in its turn is also an overlay network over some underlying physical network.

      +

      SimpleX Clients also form a network using SMP relays and IP or some other overlay network (e.g., Tor), to communicate with each other. SMP relays, on another hand, do not form a network.

      +

      Wikipedia

      +

      Non-repudiation

      +

      The property of the cryptographic or communication system that allows the recipient of the message to prove to any third party that the sender identified by some cryptographic key sent the message. It is the opposite to repudiation. While in some context non-repudiation may be desirable (e.g., for contractually binding messages), in the context of private communications it may be undesirable.

      +

      Wikipedia

      +

      Pairwise pseudonymous identifier

      +

      Generalizing the definition from NIST Digital Identity Guidelines, it is an opaque unguessable identifier generated by a service used to access a resource by only one party.

      +

      In the context of SimpleX network, these are the identifiers generated by SMP relays to access anonymous messaging queues, with a separate identifier (and access credential) for each accessing party: recipient, sender and and optional notifications subscriber. The same approach is used by XFTP relays to access file chunks, with separate identifiers (and access credentials) for sender and each recipient.

      +

      Peer-to-peer

      +

      Peer-to-peer (P2P) is the network architecture when participants have equal rights and communicate directly via a general purpose transport or overlay network. Unlike client-server architecture, all peers in a P2P network both provide and consume the resources. In the context of messaging, P2P architecture usually means that the messages are sent between peers, without user accounts or messages being stored on any servers. Examples are Tox, Briar, Cwtch and many others.

      +

      The advantage is that the participants do not depend on any servers. There are multiple downsides to that architecture, such as no asynchronous message delivery, the need for network-wide peer addresses, possibility of network-wide attacks, that are usually mitigated only by using a centralized authority. These disadvantages are avoided with proxied P2P architecture.

      +

      Wikipedia.

      +

      Perfect forward secrecy

      +

      Forward secrecy.

      +

      Post-compromise security

      +

      Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

      +

      Post-quantum cryptography

      +

      Any of the proposed cryptographic systems or algorithms that are thought to be secure against an attack by a quantum computer. It appears that as of 2023 there is no system or algorithm that is proven to be secure against such attacks, or even to be secure against attacks by massively parallel conventional computers, so a general recommendation is to use post-quantum cryptographic systems in combination with the traditional cryptographic systems.

      +

      Wikipedia

      +

      Privacy

      +

      Someone's right to keep (or the state when they keep) their personal matters and relationships secret (e.g., Cambridge dictionary). Privacy of communication systems should include the privacy of connections and meta-data, not only the privacy of the content of messages. End-to-end encryption on its own does not provide privacy, as it only protects message content and not connections or meta-data.

      +

      Wikipedia

      +

      Proxied peer-to-peer

      +

      Network topology of the communication system when peers communicate via proxies that do not form the network themselves. Such design is used in Pond, that has a fixed home server for each user, and in SimpleX, that uses multiple relays providing temporary connections.

      +

      Recovery from compromise

      +

      Post-compromise security.

      +

      Repudiation

      +

      The property of the cryptographic or communication system that allows the sender of the message to plausibly deny having sent the message, because while the recipient can verify that the message was sent by the sender, they cannot prove it to any third party - the recipient has a technical ability to forge the same encrypted message. This is an important quality of private communications, as it allows to have the conversation that can later be denied, similarly to having a private face-to-face conversation.

      +

      See also non-repudiation.

      +

      User identity

      +

      In a communication system it refers to anything that uniquely identifies the users to the network. Depending on the communication network, it can be a phone number, email address, username, public key or a random opaque identifier. Most messaging networks rely on some form of user identity. SimpleX appears to be the only messaging network that does not rely on any kind of user identity - see this comparison.

      +
      @@ -983,7 +973,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/guide/app-settings.html b/docs/guide/app-settings.html index 55f9d26875..5f2f90f755 100644 --- a/docs/guide/app-settings.html +++ b/docs/guide/app-settings.html @@ -735,7 +735,7 @@ window.addEventListener('scroll',changeHeaderBg); -

      App settings

      +

      App settings

      Opening the app settings

      To open app settings:

        @@ -744,7 +744,7 @@ window.addEventListener('scroll',changeHeaderBg);
      • If you have more than one profile, tap the current profile again or choose Settings.

      Your profile settings

      -

      This section is labelled "You" in the app settings.

      +

      This section is labelled "You" in the app settings.

      Your active profile

      Tap on your avatar/name to update your current profile names and avatar.

      Display name cannot have any spaces and it is recommended to use latin characters and numbers to make it easier to type these names to the users who use SimpleX Chat for the terminal (CLI).

      @@ -753,42 +753,42 @@ window.addEventListener('scroll',changeHeaderBg);

      This page allows adding and configuring your chat profiles. Please see Your chat profiles for more details.

      Incognito

      This feature is unique to SimpleX Chat – it is independent from chat profiles.

      -

      When "Incognito” is turned on, your current profile name and image are NOT shared with your new contacts. It allows connections with other people without any shared data – when you make new connections or join groups via a link a new random profile name will be generated for each contact or group.

      -

      Please read more in this post.

      +

      When "Incognito” is turned on, your current profile name and image are NOT shared with your new contacts. It allows connections with other people without any shared data – when you make new connections or join groups via a link a new random profile name will be generated for each contact or group.

      +

      Please read more in this post.

      Your SimpleX contact address

      -

        

      +

        

      This page allows you to create a long term address that can be used by other people to connect with you. Unlike 1-time invitation links, these addresses can be used many times, that makes them good to share online, e.g. on other social media platforms.

      When people connect to you via this address, you will receive a connection request that you can accept or reject. You can configure an automatic acceptance of connection request and an automatic welcome message that will be sent to the new contacts.

      If you start receiving too many requests via this address it is always safe to remove it – all the connections you created via this address will remain active, as this address is not used to deliver the messages.

      -

      See the comparison with 1-time invitation links.

      -

      Read more in this post.

      +

      See the comparison with 1-time invitation links.

      +

      Read more in this post.

      Chat preferences

      This page allows to configure the chat preferences that would apply to all contacts - they can be changed separately for each contact:

      • disappearing messages - to allow disappearing messages in the conversations with you, only if your contacts allow them.
      • -
      • delete for everyone - to allow irreversible message deletion (by default messages are marked as deleted, not fully deleted). "Yes" setting would allow it only if they allow it for you, and "Always" - even if they don't allow.
      • +
      • delete for everyone - to allow irreversible message deletion (by default messages are marked as deleted, not fully deleted). "Yes" setting would allow it only if they allow it for you, and "Always" - even if they don't allow.
      • voice messages - to allow sending voice messages.
      -

      To set chat preferences in each contact, tap contact name on top of the conversation and then choose "Contact preferences".

      -

      Group owners can set similar preferences for their groups, when the group is created or later: tap group name on top of the conversation and then choose "Group preferences".

      +

      To set chat preferences in each contact, tap contact name on top of the conversation and then choose "Contact preferences".

      +

      Group owners can set similar preferences for their groups, when the group is created or later: tap group name on top of the conversation and then choose "Group preferences".

      Your app settings

      -

      This section is labelled "Settings" in the app settings.

      +

      This section is labelled "Settings" in the app settings.

      Notifications

      This page allows to configure the notifications mode: instant, periodic or only when the app is running. There are some differences in how these options work on iOS and Android. Please read more in this post about how notifications work.

      You can also configure whether the message preview is shown when the message arrives.

      -

      Please note: For instant and periodic notifications to work on Android, you need to disable power optimization when prompted by the app, or later via the settings. Also, some variants of Android system require additional settings, for example MIU system on Xiaomi phones requires to enable "Auto start" for the app for the notification service to work. Please read Don't kill my app guide for any settings that may be required on your device.

      +

      Please note: For instant and periodic notifications to work on Android, you need to disable power optimization when prompted by the app, or later via the settings. Also, some variants of Android system require additional settings, for example MIU system on Xiaomi phones requires to enable "Auto start" for the app for the notification service to work. Please read Don't kill my app guide for any settings that may be required on your device.

      Also, currently instant notifications have the highest battery consumption - we are working to reduce it to be less or the same as for periodic notifications.

      Network & servers

      This page allows to configure your own SMP relays and change other network settings.

      SMP servers

      -

           

      +

           

      By default, the app has preset relays configured – you can change them to your own.

      This page also allows testing the connection with the servers.

      -

      Read more in this post.

      +

      Read more in this post.

      Use SOCKS proxy (Android only)

      This option makes the app connect via a SOCKS proxy that should be provided by some other app running on your device.

      -

      The most typical use for this is to run Orbot app that provides a SOCKS proxy to connect via Tor network, but it can be some other app and it can proxy connections via some other Overlay network.

      +

      The most typical use for this is to run Orbot app that provides a SOCKS proxy to connect via Tor network, but it can be some other app and it can proxy connections via some other overlay network.

      Use .onion hosts

      Android

      Use .onion hosts option is only available when Use SOCKS proxy is enabled. You can choose:

      @@ -798,17 +798,17 @@ window.addEventListener('scroll',changeHeaderBg);
    1. required: always use .onion hosts. Choose this option if your SOCKS proxy connects via Tor network and you want to avoid connections without Tor. In this case, if the SMP relay address does not include .onion host, the connection will fail.
    2. iOS
      -

       

      +

       

      While iOS does not support SOCKS proxies, you can install Orbot app that works as VPN provider. You can choose:

      • no (default): do not use .onion hosts. Choose this option if you do not use Orbot or if you use VPN that proxies connections via some other overlay network.
      • when available: use .onion host addresses when SMP relays include them in their configuration. Orbot VPN must be enabled for this option to work.
      • -
      • required: always use .onion hosts. Choose this option if you use Orbot VPN and you want to avoid connections without Tor. In this case, if the SMP relay address does not include .onion host, the connection will fail. If you use this option, you can enable "Disable Orbot for non-onion traffic" option in Orbot settings making the rest of your device traffic to not use Tor.
      • +
      • required: always use .onion hosts. Choose this option if you use Orbot VPN and you want to avoid connections without Tor. In this case, if the SMP relay address does not include .onion host, the connection will fail. If you use this option, you can enable "Disable Orbot for non-onion traffic" option in Orbot settings making the rest of your device traffic to not use Tor.

      Please note VPN on iOS can send some traffic to the usual network, if, for example, VPN app crashes. You can configure enable always-on VPN mode on managed iOS devices, but this is not applicable to most individual devices.

      Transport isolation (BETA)

      This option is only available if you have enabled developer tools.

      -

      Please read the details in this post.

      +

      Please read the details in this post.

      Advanced network settings

      If your network is slow, and connections to the servers keep failing (you would see a spinner on your contacts), please increase TCP and protocol timeouts in this page.

      @@ -818,9 +818,9 @@ window.addEventListener('scroll',changeHeaderBg);

      You will be offered to enable it after you open the app a few times.

      To enable it later:

      Done! Now you will be required to authenticate when you start or resume the app after 30 seconds in background.

      @@ -830,16 +830,16 @@ window.addEventListener('scroll',changeHeaderBg);

      Auto Accept Images

      Auto-accepting images may reduce privacy – your contacts will know you are online.

      Enabling sending link previews may reduce privacy – your app will be loading link preview from the website.

      This option affects how the links to connect to other SimpleX users or to join groups are shown in the conversations. You can choose between:

      @@ -848,7 +848,7 @@ window.addEventListener('scroll',changeHeaderBg);
    3. full link: the full link is shown. The link will still not be opened in the browser.
    4. via browser: the full link is shown, and it will be opened in the browser. In this case, if the link domain is different from simplex.chat, the link will be shown in red color, as it might be malicious.
    5. -

      Read more about SimpleX Links security.

      +

      Read more about SimpleX Links security.

      Appearance

      This page allows configuring:

        @@ -877,18 +877,8 @@ window.addEventListener('scroll',changeHeaderBg);

        Confirm database upgrades

        This option is off by default - the app database is migrated to the new version without any confirmations. Starting from v4.6.2 these migrations are reversible - you can rollback to the previous version(s) of the app (not earlier than v4.6.1). If you want to be asked a confirmation every time database is upgraded you may enable this option - this is not recommended, as it happens almost on every app update, and should not cause any concerns.

        Show developer options

        -

        This option currently enables Transport isolation mode option and also enables showing database IDs in contacts, groups and group members to simplify debugging via console commands.

        -

        Overlay network

        Nodes in the overlay network can be thought of as being connected by virtual or logical links, each of which corresponds to a path, perhaps through many physical links, in the underlying network. Tor, for example, is an overlay network on top of IP network, which in its turn is also an overlay network over some underlying physical network.

      +

      This option currently enables Transport isolation mode option and also enables showing database IDs in contacts, groups and group members to simplify debugging via console commands.

      +
      @@ -1018,7 +1008,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/guide/audio-video-calls.html b/docs/guide/audio-video-calls.html index 933316abb3..7fe6523ace 100644 --- a/docs/guide/audio-video-calls.html +++ b/docs/guide/audio-video-calls.html @@ -735,7 +735,7 @@ window.addEventListener('scroll',changeHeaderBg); -

      Audio and Video Calls

      +

      Audio and Video Calls

      SimpleX Chat allows you to make end-to-end encrypted audio and video calls with your contacts via WebRTC. Note: Group calls are not supported at this time.

      Making and accepting the calls

      How to make an audio call

      @@ -781,7 +781,7 @@ window.addEventListener('scroll',changeHeaderBg);
    6. Toggle the Use iOS call interface switch off.

    Please note: iOS call interface allows accepting the calls without unlocking the device and the app. If this is undesirable, please disable it – the calls will show as notifications in this case.

    -

    Read more in this post.

    +

    Read more in this post.

    Advanced call settings

    WebRTC ICE servers

    @@ -796,24 +796,14 @@ window.addEventListener('scroll',changeHeaderBg);

    Please note: unlike messaging relays (SMP servers), the configuration of WebRTC ICE servers is stored on the current device, not in the chat database. if you transfer the chat database to another device you need to update this configuration.

    Always use relay

    -

    Audio and video calls on SimpleX Chat are routed via a TURN relay server by default. Optionally you can disable this and use Peer-to-peer (P2P) instead, when it is supported by your network. However, your IP address will be known to your contacts.

    +

    Audio and video calls on SimpleX Chat are routed via a TURN relay server by default. Optionally you can disable this and use peer-to-peer (P2P) instead, when it is supported by your network. However, your IP address will be known to your contacts.

    1. Open the app settings menu.
    2. Tap Audio and Video calls.
    3. Toggle the Always use relay switch on to use a relay server or off for P2P.

    Please note: disabling this option allows P2P calls, but it does not prohibit the use of TURN relays – in case your network providers block P2P connections, the call will still use relays if the are available. To prohibit the use of relays you need to change WebRTC ICE server configuration to only include STUN servers, for example:

    -

    Peer-to-peer

    Peer-to-peer (P2P) is the network architecture when participants have equal rights and communicate directly via a general purpose transport or overlay network. Unlike client-server architecture, all peers in a P2P network both provide and consume the resources. In the context of messaging, P2P architecture usually means that the messages are sent between peers, without user accounts or messages being stored on any servers. Examples are Tox, Briar, Cwtch and many others.

    + @@ -943,7 +933,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/guide/chat-profiles.html b/docs/guide/chat-profiles.html index 691a96f166..5ae9b50814 100644 --- a/docs/guide/chat-profiles.html +++ b/docs/guide/chat-profiles.html @@ -735,22 +735,22 @@ window.addEventListener('scroll',changeHeaderBg); -

    Your chat profiles

    +

    Your chat profiles

    Creating additional chat profiles

    SimpleX Chat allows creating as many chat profiles as you like. Same as the first profile, they are only stored locally on your device.

    To create an additional SimpleX Chat profile:

    Hiding and muting chat profiles

    v4.6 added the ability to mute and to hide chat profiles.

    -

         

    +

         

    These actions are available via long-press (Android) or swipe (iOS) on the profile in the list.

    To unhide hidden profiles, enter the full password in the search bar.

    Switching between profiles

    @@ -763,46 +763,46 @@ window.addEventListener('scroll',changeHeaderBg);

    Incognito mode

    This feature is unique to SimpleX Chat – it is independent from chat profiles.

    -

    When "Incognito Mode” is turned on, your currently chosen profile name and image are hidden from your new contacts. It allows anonymous connections with other people without any shared data – when you make new connections or join groups via a link a new random profile name will be generated for each connection.

    +

    When "Incognito Mode” is turned on, your currently chosen profile name and image are hidden from your new contacts. It allows anonymous connections with other people without any shared data – when you make new connections or join groups via a link a new random profile name will be generated for each connection.

    To toggle the incognito mode on/off:

    -

    Please read more in this post.

    +

    Please read more in this post.

    Edit your profile

    To edit your profile:

    Move your chat profiles to another device

    SimpleX Chat stores all user data only on client devices using a portable encrypted database format that can be exported and transferred to any supported device.

    To export your SimpleX Chat data:

    To import your SimpleX Chat data in the app on another device:

    Please note:

    @@ -817,17 +817,7 @@ window.addEventListener('scroll',changeHeaderBg);

    There is no way to recover lost passphrase - make sure to store it securely.

    -
    +
    @@ -957,7 +947,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/guide/making-connections.html b/docs/guide/making-connections.html index 20dd84f921..8af5fcd5b5 100644 --- a/docs/guide/making-connections.html +++ b/docs/guide/making-connections.html @@ -735,19 +735,19 @@ window.addEventListener('scroll',changeHeaderBg); -

    Connect to somebody in the chat

    +

    Connect to somebody in the chat

    Work in progress

    Because you have no identifier on the SimpleX platform, nobody can contact you unless you share a one-time or temporary user address, such as a QR code or a link.

    Even with the optional user address, while it can be used to send spam contact requests, you can change or completely delete it without losing any of your connections.

    Private Connection — connect using an invitation link or QR code via video or in-person.

    Group Chat — Users have the option to create a secret group, share their contact link [which can be deleted later on], or generate a one-time invitation link.

    Your SimpleX contact address

    -

    You can create an optional long term address for other people to connect with you. Unlike 1-time invitation links, these addresses can be used many times, that makes them good to share online, e.g. on social media platforms, or in email signatures. That helps more people discover SimpleX Chat, so please do it!

    +

    You can create an optional long term address for other people to connect with you. Unlike 1-time invitation links, these addresses can be used many times, that makes them good to share online, e.g. on social media platforms, or in email signatures. That helps more people discover SimpleX Chat, so please do it!

    When people connect to you via this address, you will receive a connection request that you can accept or reject. You can configure an automatic acceptance of connection request and an automatic welcome message that will be sent to the new contacts. You can also share this address as part of your SimpleX profile, so group members can connect to you, and your contacts can share it with others - if this is something that you want.

    If you start receiving too many requests via this address it is always safe to remove it – all the connections you created via this address will remain active, as this address is not used to deliver the messages.

    - + @@ -780,7 +780,7 @@ window.addEventListener('scroll',changeHeaderBg); - + @@ -789,29 +789,19 @@ window.addEventListener('scroll',changeHeaderBg); - + - + -
    1-time invitation link SimpleX contact address
    Advantages over other platforms There is no direct analogy, other platforms don’t offer one-time invitations without any fixed part identifying the user.Unlike addresses in other platforms, SimpleX addresses are not used to deliver the messages — only the initial connection requests.
    It means that removing this address will not break the contacts made via it (like changing an email address would), it would only prevent new connections, which makes it a good solution against spam and abuse.
    Unlike addresses in other platforms, SimpleX addresses are not used to deliver the messages — only the initial connection requests.
    It means that removing this address will not break the contacts made via it (like changing an email address would), it would only prevent new connections, which makes it a good solution against spam and abuse.
    Vulnerability to attacks
    Passive attacks on connection linksBoth types of links are not vulnerable if simply observed — they only contain public keys. So they can be safely shared via insecure or public channels, as long as you can confirm that you connected to the intended person.Both types of links are not vulnerable if simply observed — they only contain public keys. So they can be safely shared via insecure or public channels, as long as you can confirm that you connected to the intended person.
    Active attacks on connection linksIf the link is substituted via the attack on the channel used to share it, the connection security can be compromised, and the original messages monitored (Man-in-the-middle attack). If it is a real risk then security code should be verified to mitigate it - doing so proves** that the link and keys were not substituted, and that the End-to-end encryption is secure.If the link is substituted via the attack on the channel used to share it, the connection security can be compromised, and the original messages monitored (man-in-the-middle attack). If it is a real risk then security code should be verified to mitigate it - doing so proves** that the link and keys were not substituted, and that the end-to-end encryption is secure.
    +

    * Adding optional verified identities that we plan in the future will change it — the address owner will have an option to request identity verification before accepting the connection.

    ** Connection security code is the cryptographic hash (SHA256) of combined public keys of both sides — there are 2256 possible security codes (1 with 77 zeros – about 1000 times smaller than the estimated number of atoms in the visible universe).

    Conversation preferences

    Tap on one of your conversations to open conversation preferences.
    Here you can choose whether you wish to allow disappearing messages, deleting messages for everyone and voice messages.

    -

    End-to-end encryption

    A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    Man-in-the-middle attack

    The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

    +
    @@ -941,7 +931,6 @@ Here you can choose whether you wish to allow disappearing messages, deleting me - diff --git a/docs/guide/managing-data.html b/docs/guide/managing-data.html index 9fe655cf50..42b162ebec 100644 --- a/docs/guide/managing-data.html +++ b/docs/guide/managing-data.html @@ -735,15 +735,15 @@ window.addEventListener('scroll',changeHeaderBg); -

    Managing Your Data

    +

    Managing Your Data

    Automatic message deletion

    Here you can choose to delete messages from your local chat database after a set period of time.

    Please note: This option does not delete messages for other users, only for you. This option is set independently for each chat profile.

    Chat Database

    To open your chat database settings:

    Database passphrase

    @@ -759,17 +759,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Delete files and media

    You can delete all sent and received files and media stored in the app via this option, without deleting the messages.

    -
    +
    @@ -899,7 +889,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/guide/privacy-security.html b/docs/guide/privacy-security.html index bf26fd19bb..b4bafb4b4d 100644 --- a/docs/guide/privacy-security.html +++ b/docs/guide/privacy-security.html @@ -735,18 +735,18 @@ window.addEventListener('scroll',changeHeaderBg); -

    Privacy and Security

    +

    Privacy and Security

    SimpleX Chat default configuration aims to balance privacy, security and convenience. You may want to change the default options.

    This page lists all the features and options that affect privacy and security.

    Privacy and Security settings

    -

    These settings are available in the Privacy & Security settings.

    +

    These settings are available in the Privacy & Security settings.

    Security code verification

    -

    While SimpleX Chat always establishes connection via link passed via an independent channel, so it is already more protected than other apps, there are scenarios when the invitation links can be substituted in transit (MITM attack). To protect against such attacks, you should verify the security code with your contacts:

    +

    While SimpleX Chat always establishes connection via link passed via an independent channel, so it is already more protected than other apps, there are scenarios when the invitation links can be substituted in transit (MITM attack). To protect against such attacks, you should verify the security code with your contacts:

    @@ -756,32 +756,22 @@ window.addEventListener('scroll',changeHeaderBg);
  • simply tap mark verified if you trust the confirmation from your contact that the code is verified.
  • you can also read the contact over the voice call.
  • -

    Read more in this post

    +

    Read more in this post

    Database passphrase

    -

    When installed, the app generates a random passphrase for the chat database and stores it securely in KeyChain (iOS) or using KeyStore (Android, TPM module is used when available). You can set your own passphrase and also remove it from the device, in which case you will need to enter it every time you start the app, and notifications may be limited, in the Database passphrase & export settings.

    +

    When installed, the app generates a random passphrase for the chat database and stores it securely in KeyChain (iOS) or using KeyStore (Android, TPM module is used when available). You can set your own passphrase and also remove it from the device, in which case you will need to enter it every time you start the app, and notifications may be limited, in the Database passphrase & export settings.

    Incognito mode

    -

    This feature generates a random profile name for each new contact. Read more in Incognito mode.

    +

    This feature generates a random profile name for each new contact. Read more in Incognito mode.

    Hidden profiles

    -

    This feature allows to hide some of your chat profiles with the password. Read more in Hiding and muting chat profiles.

    +

    This feature allows to hide some of your chat profiles with the password. Read more in Hiding and muting chat profiles.

    Network settings

    -

    Transport isolation (BETA) allows to isolate you traffic with each contact in a different TCP connection (and Tor circuit).

    +

    Transport isolation (BETA) allows to isolate you traffic with each contact in a different TCP connection (and Tor circuit).

    Using Tor

    -

     

    +

     

    To connect to SMP relays (messaging servers) via Tor you need to install Orbot app.

    -

    Android: use Orbot app as SOCKS proxy on port 9050 (default) and enable Use SOCKS proxy.

    +

    Android: use Orbot app as SOCKS proxy on port 9050 (default) and enable Use SOCKS proxy.

    iOS: use Orbot app as VPN provider and enable VPN.

    -

    You can also change which server addresses are used with Use .onion hosts option.

    -

    MITM attack

    The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

    +

    You can also change which server addresses are used with Use .onion hosts option.

    +
    @@ -911,7 +901,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/guide/readme.html b/docs/guide/readme.html index 452a80c2af..26b0d885c0 100644 --- a/docs/guide/readme.html +++ b/docs/guide/readme.html @@ -735,11 +735,11 @@ window.addEventListener('scroll',changeHeaderBg); -

    SimpleX Chat User Guide

    +

    SimpleX Chat User Guide

    The first messaging platform that has no user identifiers of any kind — 100% private by design.

    Contents

    +
    @@ -934,7 +924,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/guide/secret-groups.html b/docs/guide/secret-groups.html index b819bcbfbf..94840df536 100644 --- a/docs/guide/secret-groups.html +++ b/docs/guide/secret-groups.html @@ -735,15 +735,15 @@ window.addEventListener('scroll',changeHeaderBg); -

    Secret groups

    +

    Secret groups

    Secret groups are anonymous and private, they are designed to be hard to track by outsiders. Every message and file gets sent separately to every member in the group, which makes secret groups only fit for smaller groups.

    Creating a group

    Group preferences

    Here you can choose whether you want to allow disappearing messages, direct messages, deleting for everyone and voice messages.

    @@ -752,7 +752,7 @@ window.addEventListener('scroll',changeHeaderBg);
  • Open a group.
  • Tap on + button in the upper right-hand of the screen.
  • Select contacts you wish to invite.
  • -
  • Tap on "Invite to group".
  • +
  • Tap on "Invite to group".
  • Joining a group

    @@ -764,7 +764,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Member permissions

    Open a group and tap on group's name to view members list, there you can tap on a member and change their role.

    @@ -775,27 +775,17 @@ window.addEventListener('scroll',changeHeaderBg);
  • Owner: Same as admin, but can change group preferences.
  • -

      

    +

      

    If you are a group owner or admin, you can create a link that can be used by anyone to join the group, making a group more public.

    Once the link is created, you can also change the role assigned to members when they join.

    Welcome message

    If you are a group owner you can create a welcome message that will be shown to all new members joining group.

    -
    +
    @@ -925,7 +915,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/guide/send-messages.html b/docs/guide/send-messages.html index 808d88b191..e6243fa61b 100644 --- a/docs/guide/send-messages.html +++ b/docs/guide/send-messages.html @@ -735,19 +735,19 @@ window.addEventListener('scroll',changeHeaderBg); -

    Sending, editing and deleting messages

    -

    Sending text messages on SimpleX Chat is pretty straightforward, tap on your contact and then tap on text area, type in your message and tap on "Send" button.

    +

    Sending, editing and deleting messages

    +

    Sending text messages on SimpleX Chat is pretty straightforward, tap on your contact and then tap on text area, type in your message and tap on "Send" button.

    You need to open a conversation to send messages.

    Sending messages

    Sending text messages

    You can send, edit and quote messages in a conversation.

    -

    To send, simply type in the message in the entry box and tap "Send".

    +

    To send, simply type in the message in the entry box and tap "Send".

    To edit or quote a message, tap and hold the message and choose the action.

    Sending images and files

    On iOS you can also paste images from the clipboard.

    Sending voice messages

    @@ -757,63 +757,53 @@ window.addEventListener('scroll',changeHeaderBg);
  • Allow SimpleX Chat to record the voice if prompted. You will have to tap on the microphone button once again if this happens.
  • Speak, once you've finished the recording, tap on the square stop icon on the right.
  • You may listen to the recording before sending it, and re-record if necessary.
  • -
  • Tap on "Send" button to send the recorded voice message.
  • +
  • Tap on "Send" button to send the recorded voice message.
  • -

    You can also tap and hold the microphone button to record a voice message. In this case the recording will stop once you release the button. You still need to tap "Send" to send the message.

    +

    You can also tap and hold the microphone button to record a voice message. In this case the recording will stop once you release the button. You still need to tap "Send" to send the message.

    Please note: if the microphone button is gray, that means voice messages are disabled in this conversation. Ask your contact or group owner to enable them (they are enabled by default).

    How to use disappearing messages

    -

      

    +

      

    Please note: Your contact must also enable disappearing messages. In a group, only group owner can enable disappearing messages.

    -

    Sending "live" messages

    +

    Sending "live" messages

    -

    You can use "live" messages for your recipients to see the messages as you type them, without having to tap "Send" button until it's completed. It can be useful in these scenarios:

    +

    You can use "live" messages for your recipients to see the messages as you type them, without having to tap "Send" button until it's completed. It can be useful in these scenarios:

    1. Real-time conversation, like talking in person or in a discussion club. You can retract what you wrote, but your recipients would see it. Also people don’t need to guess what you’re typing. This allows to avoid interrupting the flow of conversation and still send longer messages.
    2. An activist doing live reporting when there is a risk to lose the phone or connection at any moment. This feature allows to send as much as possible, up to the last word, without having to send only very short messages.
    -

    To send a "live" message:

    +

    To send a "live" message:

    Sending stickers and animated messages

    -

      

    +

      

    While there are no stickers and GIFs in the app itself, you can send them using third-party (such as GIPHY on iOS) or native (Android 13+) keyboards.

    Message drafts

    -

      

    +

      

    Messages are kept in the chat until they are sent, even if you leave the chat.

    For privacy and simplicity, we decided to allow only one message draft and keep it only until the app is stopped.

    -

    Read more in this post.

    +

    Read more in this post.

    Deleting messages

    -

      

    -

    To delete a message, tap and hold the message and choose "Delete".

    +

      

    +

    To delete a message, tap and hold the message and choose "Delete".

    If you sent this message yourself within the last 24 hours, you will be offered two options:

    -

    Please read about reasons for not allowing full deletion by default. TL;DR: data sovereignty.

    +

    Please read about reasons for not allowing full deletion by default. TL;DR: data sovereignty.

    Moderating messages in the groups

    Group admins can delete member messages that are inappropriate for the groups.

    -

    To remove a message of another member, tap and hold the message and choose "Moderate".

    -

    Please read about group moderation.

    -
    +

    To remove a message of another member, tap and hold the message and choose "Moderate".

    +

    Please read about group moderation.

    +
    @@ -943,7 +933,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/lang/cs/android.html b/docs/lang/cs/android.html index 3a05df8087..1bf5edbe35 100644 --- a/docs/lang/cs/android.html +++ b/docs/lang/cs/android.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Aktualizováno 07.02.2023 | Jazyky: CZ, EN, PL |

    +

    | Aktualizováno 07.02.2023 | Jazyky: CZ, EN, PL |

    Přístup k souborům v aplikaci Android

    SimpleX používá databáze a ukládá své předvolby do soukromého datového adresáře v systému Android. Adresář obsahuje:

    +
    @@ -1007,7 +997,6 @@ select * from users; - diff --git a/docs/lang/cs/cli.html b/docs/lang/cs/cli.html index 0dc3e3c9f0..48c1d00cc0 100644 --- a/docs/lang/cs/cli.html +++ b/docs/lang/cs/cli.html @@ -826,36 +826,36 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Aktualizováno 31.01.2023 | Jazyky: CZ, EN, FR, PL |

    +

    | Aktualizováno 31.01.2023 | Jazyky: CZ, EN, FR, PL |

    SimpleX Chat terminálová (konzolová) aplikace pro Linux/MacOS/Windows

    Obsah

    @@ -869,7 +869,7 @@ window.addEventListener('scroll',changeHeaderBg);
  • Automaticky vyplňované jméno příjemce - po navázání spojení stačí napsat zprávu a odpovědět odesílateli.
  • K dispozici ukázkové servery SMP, které jsou v aplikaci předkonfigurovány - nebo si můžete nasadit vlastní server.
  • Žádná globální identita ani žádná jména nejsou pro server(y) viditelná, což zajišťuje plné soukromí vašich kontaktů a konverzací.
  • -
  • Dvě vrstvy šifrování E2E (double-ratchet pro duplexní spojení s použitím dohody klíčů X3DH s efemérními klíči Curve448 a NaCl crypto_box pro fronty SMP s použitím klíčů Curve25519) a předávání klíčů příjemců mimo pásmo (viz Jak používat chat SimpleX).
  • +
  • Dvě vrstvy šifrování E2E (double-ratchet pro duplexní spojení s použitím dohody klíčů X3DH s efemérními klíči Curve448 a NaCl crypto_box pro fronty SMP s použitím klíčů Curve25519) a předávání klíčů příjemců mimo pásmo (viz Jak používat chat SimpleX).
  • Ověřování integrity zpráv (pomocí zahrnutí digestů předchozích zpráv).
  • Ověřování každého příkazu/zprávy servery SMP pomocí automaticky generovaných klíčů Ed448.
  • Transportní šifrování TLS 1.3.
  • @@ -908,7 +908,7 @@ git checkout stable DOCKER_BUILDKIT=1 docker build --output ~/.local/bin .
    -

    Upozornění: Pokud narazíte na chybu verze `GLIBC_2.28' nenalezena, obnovte jej pomocí základního obrazu haskell:8.10.7-stretch (změňte jej ve svém lokálním Dockerfile).

    +

    Upozornění: Pokud narazíte na chybu verze `GLIBC_2.28' nenalezena, obnovte jej pomocí základního obrazu haskell:8.10.7-stretch (změňte jej ve svém lokálním Dockerfile).

    V libovolném operačním systému

      @@ -957,7 +957,7 @@ brew services start tor

      Můžete také použít volbu --socks-proxy=ipv4:port nebo --socks-proxy=:port pro konfiguraci hostitele a portu vašeho SOCKS5 proxy serveru, např. pokud jej provozujete na jiném hostiteli nebo portu.

      Jak používat SimpleX chat

      -

      Po spuštění chatu budete vyzváni k zadání svého "zobrazovacího jména" a volitelného "celého jména" pro vytvoření místního profilu chatu. Vaše zobrazované jméno je přezdívka, pod kterou se na vás mohou obracet vaše kontakty - není jedinečné a neslouží jako globální identita. Pokud si některé vaše kontakty zvolily stejné zobrazovací jméno, přidá chatovací klient k jejich místnímu zobrazovacímu jménu číselnou příponu.

      +

      Po spuštění chatu budete vyzváni k zadání svého "zobrazovacího jména" a volitelného "celého jména" pro vytvoření místního profilu chatu. Vaše zobrazované jméno je přezdívka, pod kterou se na vás mohou obracet vaše kontakty - není jedinečné a neslouží jako globální identita. Pokud si některé vaše kontakty zvolily stejné zobrazovací jméno, přidá chatovací klient k jejich místnímu zobrazovacímu jménu číselnou příponu.

      Následující schéma ukazuje, jak se připojit ke kontaktu a poslat mu zprávu:

      @@ -981,20 +981,10 @@ brew services start tor

      Kontaktní adresy uživatelů

      Jako alternativu k jednorázovým pozvánkovým odkazům můžete vytvořit dlouhodobou adresu pomocí /ad (pro /adresa). Vytvořenou adresu pak můžete sdílet libovolným kanálem a používat ji ostatními uživateli jako odkaz na žádost o kontakt pomocí /c <uživatelská_kontaktní_adresa>.

      Příchozí žádosti můžete přijmout nebo odmítnout pomocí příkazů /ac <jméno> a /rc <jméno>.

      -

      Uživatelská adresa je "dlouhodobá" v tom smyslu, že se jedná o odkaz pro vícenásobné použití - lze ji používat, dokud ji uživatel nesmaže, v takovém případě by všechna navázaná spojení zůstala stále aktivní (na rozdíl od toho, jak to funguje u e-mailu, kdy změna adresy vede k tomu, že vám lidé nemohou posílat zprávy).

      +

      Uživatelská adresa je "dlouhodobá" v tom smyslu, že se jedná o odkaz pro vícenásobné použití - lze ji používat, dokud ji uživatel nesmaže, v takovém případě by všechna navázaná spojení zůstala stále aktivní (na rozdíl od toho, jak to funguje u e-mailu, kdy změna adresy vede k tomu, že vám lidé nemohou posílat zprávy).

      Pro ostatní příkazy použijte /help address.

      simplex-chat

      -
      +
    @@ -1124,7 +1114,6 @@ brew services start tor - diff --git a/docs/lang/cs/contributing.html b/docs/lang/cs/contributing.html index 5095c09a39..1ecbfb48bc 100644 --- a/docs/lang/cs/contributing.html +++ b/docs/lang/cs/contributing.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Aktualizováno 31.01.2023 | Jazyky: CZ, EN, FR, PL |

    +

    | Aktualizováno 31.01.2023 | Jazyky: CZ, EN, FR, PL |

    Průvodce přispíváním

    Kompilace s povoleným šifrováním SQLCipher

    Do kořenového adresáře projektu přidejte cabal.project.local s umístěním hlaviček a knihoven OpenSSL a příznakem nastavujícím režim šifrování:

    @@ -838,17 +838,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Systém MacOS je standardně dodáván s LibreSSL, pro kompilaci SimpleX ze zdrojových kódů je nutné nainstalovat OpenSSL.

    OpenSSL lze nainstalovat pomocí brew install openssl@1.1.

    Aby vše fungovalo správně, musíte do své cesty PATH přidat /opt/homebrew/opt/openssl@1.1/bin.

    -
    +
    @@ -978,7 +968,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/lang/cs/server.html b/docs/lang/cs/server.html index 71be942570..3124202144 100644 --- a/docs/lang/cs/server.html +++ b/docs/lang/cs/server.html @@ -832,12 +832,12 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Aktualizováno 05.06.2023 | Jazyky: CZ, EN, FR, PL |

    +

    | Aktualizováno 05.06.2023 | Jazyky: CZ, EN, FR, PL |

    Hostování vlastního serveru SMP

    Přehled

    SMP server je relay server používaný k předávání zpráv v síti SimpleX. Aplikace SimpleX Chat mají přednastavené servery (pro mobilní aplikace jsou to smp11, smp12 a smp14.simplex.im), ale konfiguraci aplikace můžete snadno změnit a používat jiné servery.

    Klienti SimpleX pouze určují, který server bude použit pro příjem zpráv, a to pro každý kontakt (nebo spojení skupiny s členem skupiny) zvlášť, přičemž tyto servery jsou pouze dočasné, protože adresa pro doručování se může změnit.

    -

    Upozornění: když změníte servery v konfiguraci aplikace, ovlivní to pouze to, který server bude použit pro nové kontakty, stávající kontakty se na nové servery automaticky nepřesunou, ale můžete je přesunout ručně pomocí tlačítka "Změnit adresu příjmu" na stránkách s informacemi o kontaktech/členech - brzy bude automatizováno.

    +

    Upozornění: když změníte servery v konfiguraci aplikace, ovlivní to pouze to, který server bude použit pro nové kontakty, stávající kontakty se na nové servery automaticky nepřesunou, ale můžete je přesunout ručně pomocí tlačítka "Změnit adresu příjmu" na stránkách s informacemi o kontaktech/členech - brzy bude automatizováno.

    Instalace

    1. @@ -891,7 +891,7 @@ User=smp Group=smp Type=simple ExecStart=smp-server start -ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"' +ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"' KillSignal=SIGINT TimeoutStopSec=infinity Restart=vždy @@ -915,11 +915,11 @@ Dostupné příkazy: /etc/opt/simplex/smp-server.ini). delete Odstranění konfiguračních a protokolových souborů -

      Další nápovědu můžete získat příkazem sudo su smp -c "smp-server <příkaz> -h"

      +

      Další nápovědu můžete získat příkazem sudo su smp -c "smp-server <příkaz> -h"

      Poté musíme nakonfigurovat smp-server:

      Interaktivně

      Spusťte následující příkaz:

      -
      sudo su smp -c "smp-server init"
      +
      sudo su smp -c "smp-server init"
       

      Je třeba zvážit několik možností:

        @@ -946,7 +946,7 @@ Dostupné příkazy:

      Prostřednictvím voleb příkazového řádku

      Spusťte následující příkaz:

      -
      sudo su smp -c "smp-server init -h"
      +
      sudo su smp -c "smp-server init -h"
       
       ...
       Dostupné možnosti:
      @@ -956,7 +956,7 @@ Dostupné možnosti:
                                  ED25519, ED448 (výchozí: ED448).
         --ip IP IP adresa serveru, používaná jako Common Name pro TLS online
                                  certifikátu, pokud není zadáno FQDN
      -                           (výchozí: "127.0.0.1")
      +                           (výchozí: "127.0.0.1")
         -n,--fqdn FQDN FQDN serveru použitý jako Common Name pro certifikát TLS online
                                  certifikát
         --no-password Povolit vytváření nových front bez hesla
      @@ -966,10 +966,10 @@ Dostupné možnosti:
         -h,--help Zobrazí text nápovědy
       

      Měli byste určit, které příznaky jsou pro váš případ použití potřebné, a poté spustit smp-server init s příznakem -y pro neinteraktivní inicializaci:

      -
      sudo su smp -c "smp-server init -y -<vůj příznak> <vaše volba>"
      +
      sudo su smp -c "smp-server init -y -<vůj příznak> <vaše volba>"
       

      Spusťte například:

      -
      sudo su smp -c "smp-server init -y -l --ip 192.168.1.5 --heslo test"
      +
      sudo su smp -c "smp-server init -y -l --ip 192.168.1.5 --heslo test"
       

      a inicializujte konfiguraci smp-serveru pomocí:

        @@ -1108,8 +1108,8 @@ allow_local_mode = true
        • V postranní nabídce klikněte na záložku Configuration (ikona ozubeného kola).
        • V pravém horním rohu karty Zdroje dat klikněte na tlačítko Přidat zdroj dat.
        • -
        • Do vyhledávacího pole zadejte "CSV" a vyhledejte zdroj dat CSV.
        • -
        • Klikněte na výsledek hledání s nápisem "CSV".
        • +
        • Do vyhledávacího pole zadejte "CSV" a vyhledejte zdroj dat CSV.
        • +
        • Klikněte na výsledek hledání s nápisem "CSV".
        • Do pole URL zadejte soubor, který odkazuje na obsah CSV
        @@ -1122,18 +1122,8 @@ allow_local_mode = true

        Chcete-li aplikaci nakonfigurovat tak, aby používala váš server pro zasílání zpráv, zkopírujte jeho úplnou adresu včetně hesla a přidejte ji do aplikace. Máte možnost používat svůj server společně s přednastavenými servery nebo bez nich - můžete je odebrat nebo zakázat.

        Adresu svého serveru můžete také sdílet se svými přáteli tak, že je necháte naskenovat QR kód z nastavení serveru - ten bude obsahovat heslo serveru, takže budou moci přijímat zprávy i prostřednictvím vašeho serveru.

        Upozornění: pro podporu hesla je třeba mít SMP server verze 4.0. Pokud již máte nasazený server, můžete heslo přidat přidáním do souboru INI serveru.

        -

             

        -
    +

         

    +
    @@ -1263,7 +1253,6 @@ allow_local_mode = true - diff --git a/docs/lang/cs/simplex.html b/docs/lang/cs/simplex.html index 9bf1908e8e..0261c55dbc 100644 --- a/docs/lang/cs/simplex.html +++ b/docs/lang/cs/simplex.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Aktualizováno 07.02.2023 | Jazyky: CZ, EN, FR, PL |

    +

    | Aktualizováno 07.02.2023 | Jazyky: CZ, EN, FR, PL |

    Platforma SimpleX - motivace a srovnání

    Problémy

    Stávající chatovací platformy a protokoly mají některé nebo všechny následující problémy:

    @@ -937,17 +937,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Sítě P2P jsou pravděpodobně zranitelné vůči útoku DRDoS. V navrhovaném návrhu klienti pouze předávají provoz ze známého důvěryhodného spojení a nelze je použít k odrážení a zesilování provozu v celé síti.

    -
    +
    @@ -1077,7 +1067,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/lang/cs/translations.html b/docs/lang/cs/translations.html index 5a091e2961..8eefc9d3b4 100644 --- a/docs/lang/cs/translations.html +++ b/docs/lang/cs/translations.html @@ -826,11 +826,11 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Aktualizováno 07.02.2023 | Jazyky: CZ, EN, PL |

    +

    | Aktualizováno 07.02.2023 | Jazyky: CZ, EN, PL |

    Přispívání překladů do SimpleX Chat

    Obrovské díky za váš zájem o překlady SimpleX Chat - velmi nám to pomáhá zpřístupnit jej širšímu okruhu uživatelů a vaší pomoci si opravdu vážíme.

    Vyžaduje to značnou časovou investici - většina lidí ji zpočátku podceňuje - a průběžnou údržbu v průběhu vývoje aplikace.

    -

    Tento dokument vznikl proto, abychom tento proces urychlili, a podělili se s vámi o některé důležité "háčky", které jsme objevili při práci s Weblate - platformou, kterou používáme pro překlady rozhraní.

    +

    Tento dokument vznikl proto, abychom tento proces urychlili, a podělili se s vámi o některé důležité "háčky", které jsme objevili při práci s Weblate - platformou, kterou používáme pro překlady rozhraní.

    Než začnete překládat

    1. @@ -890,17 +890,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Ještě jednou děkujeme, že nám pomáháte rozvíjet SimpleX Chat!

    Evgeny, zakladatel SimpleX Chat.

    -
    +
    @@ -1030,7 +1020,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/lang/cs/webrtc.html b/docs/lang/cs/webrtc.html index 805e21434b..fec7760c84 100644 --- a/docs/lang/cs/webrtc.html +++ b/docs/lang/cs/webrtc.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Aktualizováno 31.01.2023 | Jazyky: CZ, EN, FR, PL |

    +

    | Aktualizováno 31.01.2023 | Jazyky: CZ, EN, FR, PL |

    Použití vlastních serverů WebRTC ICE v SimpleX Chat

    Nasazení serveru STUN/TURN

    V tomto průvodci budeme používat nejvybavenější a nejosvědčenější implementaci serveru STUN/TURN - coturn a Ubuntu 20.04 LTS distribuci Linuxu.

    @@ -888,7 +888,7 @@ no-tlsv1_2
  • Pokud používáte firewall ufw, otevřete případně příslušné porty:
    • -
    • 3478 - "obyčejný" TURN/STUN;
    • +
    • 3478 - "obyčejný" TURN/STUN;
    • 5349 - TURN/STUN přes TLS;
    • 443 - TURN/STUN přes TLS, který může obejít brány firewall;
    • 49152:65535 - rozsah portů, který bude společnost Coturn ve výchozím nastavení používat pro přenos TURN.
    • @@ -969,17 +969,7 @@ Připojení k <vaše_ip_nebo_doména> 5349 port [tcp/*] uspělo!
    -
    +
    @@ -1109,7 +1099,6 @@ Připojení k <vaše_ip_nebo_doména> 5349 port [tcp/*] uspělo! - diff --git a/docs/lang/fr/android.html b/docs/lang/fr/android.html index 6a9877566d..22f773c2fb 100644 --- a/docs/lang/fr/android.html +++ b/docs/lang/fr/android.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | 07.02.2023 | FR, EN, CZ, PL |

    +

    | 07.02.2023 | FR, EN, CZ, PL |

    Accès aux fichiers dans l'application Android

    SimpleX utilise des bases de données et stocke ses préférences dans le répertoire de données privées d'Android. Ce répertoire contient

      @@ -844,7 +844,7 @@ window.addEventListener('scroll',changeHeaderBg);

      La procédure :

      • Ouvrez SimpleX, allez dans Phrase secrète et exportation de la base de données, activez Sauvegarde des données de l'app. Cela permettra aux autres étapes de fonctionner
      • -
      • optionnel_ : si vous voulez voir le contenu de la base de données, changez la phrase secrète de la base de données aléatoire pour la vôtre. Pour ce faire, arrêtez le chat dans le menu "Phrase secrète et exportation de la base de données", ouvrez "Phrase secrète de la base de données", entrez la nouvelle phrase secrète et confirmez-la, puis mettez-la à jour. Ne l'oubliez pas, sinon vous perdrez toutes vos données au cas où la phrase d'authentification vous serait redemandée plus tard.
      • +
      • optionnel_ : si vous voulez voir le contenu de la base de données, changez la phrase secrète de la base de données aléatoire pour la vôtre. Pour ce faire, arrêtez le chat dans le menu "Phrase secrète et exportation de la base de données", ouvrez "Phrase secrète de la base de données", entrez la nouvelle phrase secrète et confirmez-la, puis mettez-la à jour. Ne l'oubliez pas, sinon vous perdrez toutes vos données au cas où la phrase d'authentification vous serait redemandée plus tard.
      • ouvrez un émulateur de terminal (Windows CMD/Powershell ne fonctionnera pas) et changez de répertoire pour celui que vous voulez utiliser pour stocker la sauvegarde :
      cd /tmp  # juste un exemple
      @@ -852,7 +852,7 @@ window.addEventListener('scroll',changeHeaderBg);
       

      Exécutez ensuite la méthode suivante :

      adb -d backup -f chat.ab -noapk chat.simplex.app && 
       tail -n +5 chat.ab > chat.dat && 
      -printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" | cat - chat.dat > chat.gz && 
      +printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" | cat - chat.dat > chat.gz && 
       tar -xvzf chat.gz
       

      Déverrouillez maintenant l'appareil et confirmez une opération de sauvegarde sans utiliser de mot de passe pour le chiffrement, sinon les commandes ne fonctionneront pas.

      @@ -862,22 +862,12 @@ tar -xvzf chat.gz

      Déchiffrer les bases de données

      Afin de visualiser les données de la base de données, vous devez d'abord les déchiffrer. Installez sqlcipher en utilisant votre gestionnaire de paquets préféré et exécutez les commandes suivantes dans le répertoire contenant les bases de données :

      sqlcipher files_chat.db
      -pragma key="youDecryptionPassphrase";
      +pragma key="youDecryptionPassphrase";
       # S'assurer qu'il fonctionne bien
       select * from users;
       

      Si vous voyez Parse error : no such table : users, assurez-vous que vous avez entré la bonne phrase secrète, et que vous avez changé la phrase secrète au hasard dans l'application Android (si vous avez obtenu cette base de données à partir d'un appareil Android, bien sûr).

      -
    +
    @@ -1007,7 +997,6 @@ select * from users; - diff --git a/docs/lang/fr/cli.html b/docs/lang/fr/cli.html index 408d8b968f..a4abc6dbed 100644 --- a/docs/lang/fr/cli.html +++ b/docs/lang/fr/cli.html @@ -826,36 +826,36 @@ window.addEventListener('scroll',changeHeaderBg); -

    | 31.01.2023 | FR, EN, CZ, PL |

    +

    | 31.01.2023 | FR, EN, CZ, PL |

    Application de terminal (console) SimpleX Chat pour Linux/MacOS/Windows

    Table des matières

    @@ -869,7 +869,7 @@ window.addEventListener('scroll',changeHeaderBg);
  • Nom du destinataire auto-rempli - il suffit de taper vos messages pour répondre à l'expéditeur une fois la connexion établie.
  • Des serveurs SMP de démonstration sont disponibles et préconfigurés dans l'application - ou vous pouvez déployer votre propre serveur.
  • Pas d'identité globale ni de noms visibles par le.s serveur.s, ce qui garantit la confidentialité totale de vos contacts et de vos conversations.
  • -
  • Deux couches de chiffrement E2E (double ratchet pour les connexions duplex, utilisant un accord de clé X3DH avec des clés Curve448 éphémères, et NaCl crypto_box pour les files d'attente SMP, utilisant des clés Curve25519) et transmission hors bande des clés des destinataires (voir Comment utiliser SimpleX chat).
  • +
  • Deux couches de chiffrement E2E (double ratchet pour les connexions duplex, utilisant un accord de clé X3DH avec des clés Curve448 éphémères, et NaCl crypto_box pour les files d'attente SMP, utilisant des clés Curve25519) et transmission hors bande des clés des destinataires (voir Comment utiliser SimpleX chat).
  • Validation de l'intégrité du message (en incluant les résumés des messages précédents).
  • Authentification de chaque commande/message par les serveurs SMP avec des clés Ed448 générées automatiquement.
  • Chiffrement de transport TLS 1.3.
  • @@ -908,7 +908,7 @@ git checkout stable DOCKER_BUILDKIT=1 docker build --output ~/.local/bin .
    -

    Veuillez noter : Si vous rencontrez l'erreur version `GLIBC_2.28' non trouvée, reconstruisez-le avec l'image de base haskell:8.10.7-stretch(changez-la dans votre Dockerfile local).

    +

    Veuillez noter : Si vous rencontrez l'erreur version `GLIBC_2.28' non trouvée, reconstruisez-le avec l'image de base haskell:8.10.7-stretch(changez-la dans votre Dockerfile local).

    Utiliser Haskell stack

    (sur n'importe quel OS)

    @@ -958,7 +958,7 @@ brew services start tor

    Vous pouvez également utiliser l'option --socks-proxy=ipv4:port ou --socks-proxy=:port pour configurer l'hôte et le port de votre proxy SOCKS5, par exemple si vous l'exécutez sur un autre hôte ou port.

    Comment utiliser SimpleX chat

    -

    Une fois que vous aurez lancé le chat, vous serez invité à indiquer un "nom d'affichage" et un "nom complet" facultatif pour créer un profil de chat local. Votre nom d'affichage est un alias par lequel vos contacts peuvent se référer à vous. Il n'est pas unique et ne sert pas d'identité globale. Si certains de vos contacts ont choisi le même nom d'affichage, le client de chat ajoute un suffixe numérique à leur nom d'affichage local.

    +

    Une fois que vous aurez lancé le chat, vous serez invité à indiquer un "nom d'affichage" et un "nom complet" facultatif pour créer un profil de chat local. Votre nom d'affichage est un alias par lequel vos contacts peuvent se référer à vous. Il n'est pas unique et ne sert pas d'identité globale. Si certains de vos contacts ont choisi le même nom d'affichage, le client de chat ajoute un suffixe numérique à leur nom d'affichage local.

    Le schéma ci-dessous montre comment connecter et envoyer un message à un contact :

    @@ -982,20 +982,10 @@ brew services start tor

    Adresses de contact d'utilisateur

    Comme alternative aux liens d'invitation unique, vous pouvez créer une adresse à long terme avec /ad (pour /address). L'adresse créée peut ensuite être partagée via n'importe quel canal, et utilisée par d'autres utilisateurs comme lien pour faire une demande de contact avec /c <adresse_de_contact_de_l'utilisateur>.

    Vous pouvez accepter ou rejeter les demandes entrantes avec les commandes /ac <nom> et /rc <nom>.

    -

    L'adresse de l'utilisateur est "à long terme" dans le sens où il s'agit d'un lien de connexion à usage multiple - elle peut être utilisée jusqu'à ce qu'elle soit supprimée par l'utilisateur, auquel cas toutes les connexions établies resteront actives (contrairement à ce qui se passe avec le courrier électronique, où le changement d'adresse empêche les gens de vous envoyer des messages).

    +

    L'adresse de l'utilisateur est "à long terme" dans le sens où il s'agit d'un lien de connexion à usage multiple - elle peut être utilisée jusqu'à ce qu'elle soit supprimée par l'utilisateur, auquel cas toutes les connexions établies resteront actives (contrairement à ce qui se passe avec le courrier électronique, où le changement d'adresse empêche les gens de vous envoyer des messages).

    Utilisez /help address pour les autres commandes.

    simplex-chat

    -
    +
    @@ -1125,7 +1115,6 @@ brew services start tor - diff --git a/docs/lang/fr/contributing.html b/docs/lang/fr/contributing.html index 4bb54b2a07..83bc49447a 100644 --- a/docs/lang/fr/contributing.html +++ b/docs/lang/fr/contributing.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | 31.01.2023 | FR, EN, CZ, PL |

    +

    | 31.01.2023 | FR, EN, CZ, PL |

    Guide pour contribuer

    Compiler avec le chiffrement SQLCipher activé

    Ajoutez cabal.project.local à la racine du projet avec les emplacements des en-têtes et des bibliothèques OpenSSL ainsi que le paramètre définissant le mode de chiffrement :

    @@ -838,17 +838,7 @@ window.addEventListener('scroll',changeHeaderBg);

    LibreSSL est fourni par défaut sur MacOS, OpenSSL doit être installé pour compiler SimpleX à partir de la source.

    OpenSSL peut être installé avec brew install openssl@1.1

    Vous devez ajouter /opt/homebrew/opt/openssl@1.1/bin à votre PATH pour que tout fonctionne correctement.

    -
    +
    @@ -978,7 +968,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/lang/fr/server.html b/docs/lang/fr/server.html index ea62055b75..2e0cea35a5 100644 --- a/docs/lang/fr/server.html +++ b/docs/lang/fr/server.html @@ -832,12 +832,12 @@ window.addEventListener('scroll',changeHeaderBg); -

    | 05.06.2023 | FR, EN, CZ, PL |

    +

    | 05.06.2023 | FR, EN, CZ, PL |

    Héberger votre propre serveur SMP

    Présentation générale

    Un serveur SMP est un serveur relais utilisé pour transmettre les messages sur le réseau SimpleX. Les apps SimpleX Chat ont des serveurs prédéfinis (pour les apps mobiles, smp11, smp12 et smp14.simplex.im), mais vous pouvez facilement modifier la configuration de l'app pour utiliser d'autres serveurs.

    Seuls les utilisateurs de SimpleX déterminent quel serveur est utilisé pour recevoir les messages, séparément pour chaque contact (ou pour chaque connexion à un membre d'un groupe), et ces serveurs ne sont que temporaires, car l'adresse de réception peut changer.

    -

    Veuillez noter : lorsque vous modifiez les serveurs dans la configuration de l'app, cela n'affecte que les serveurs qui seront utilisés pour les nouveaux contacts. Les contacts existants ne seront pas automatiquement déplacés vers les nouveaux serveurs, mais vous pouvez les déplacer manuellement à l'aide du bouton "Changer d'adresse de réception" sur les fiches d'information de contact/membre – ce sera bientôt automatisé.

    +

    Veuillez noter : lorsque vous modifiez les serveurs dans la configuration de l'app, cela n'affecte que les serveurs qui seront utilisés pour les nouveaux contacts. Les contacts existants ne seront pas automatiquement déplacés vers les nouveaux serveurs, mais vous pouvez les déplacer manuellement à l'aide du bouton "Changer d'adresse de réception" sur les fiches d'information de contact/membre – ce sera bientôt automatisé.

    Installation

    1. @@ -891,7 +891,7 @@ User=smp Group=smp Type=simple ExecStart=smp-server start -ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"' +ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"' KillSignal=SIGINT TimeoutStopSec=infinity Restart=always @@ -915,11 +915,11 @@ Available commands: /etc/opt/simplex/smp-server.ini) delete Delete configuration and log files -

      Vous pouvez obtenir de l'aide supplémentaire en exécutant sudo su smp -c "smp-server <command> -h"

      +

      Vous pouvez obtenir de l'aide supplémentaire en exécutant sudo su smp -c "smp-server <command> -h"

      Ensuite, nous devons configurer smp-server:

      Interactif

      Exécutez la commande suivante :

      -
      sudo su smp -c "smp-server init"
      +
      sudo su smp -c "smp-server init"
       

      Il y a plusieurs options disponibles :

        @@ -946,7 +946,7 @@ Available commands:

      Option via ligne de commande

      Exécutez la commande suivante :

      -
      sudo su smp -c "smp-server init -h"
      +
      sudo su smp -c "smp-server init -h"
       
       ...
       Available options:
      @@ -956,7 +956,7 @@ Available options:
                                  ED25519, ED448 (default: ED448)
         --ip IP                  Server IP address, used as Common Name for TLS online
                                  certificate if FQDN is not supplied
      -                           (default: "127.0.0.1")
      +                           (default: "127.0.0.1")
         -n,--fqdn FQDN           Server FQDN used as Common Name for TLS online
                                  certificate
         --no-password            Allow creating new queues without password
      @@ -966,10 +966,10 @@ Available options:
         -h,--help                Show this help text
       

      Vous devriez déterminer quels paramètres sont nécessaires pour votre cas d'utilisation et ensuite exécuter smp-server init avec le paramètre -y pour une initialisation non-interactive :

      -
      sudo su smp -c "smp-server init -y -<your flag> <your option>"
      +
      sudo su smp -c "smp-server init -y -<your flag> <your option>"
       

      Par exemple, exécutez :

      -
      sudo su smp -c "smp-server init -y -l --ip 192.168.1.5 --password test"
      +
      sudo su smp -c "smp-server init -y -l --ip 192.168.1.5 --password test"
       

      pour initialiser votre smp-server avec comme configuration :

        @@ -1045,7 +1045,7 @@ Nov 23 19:23:21 5588ab759e80 smp-server[30878]: creating new queues requires pas

        Pour arrêter smp-server, exécutez :

        sudo systemctl stop smp-server.service
         
        -

        Pour vérifier la "tail" de smp-server des logs, exécutez :

        +

        Pour vérifier la "tail" de smp-server des logs, exécutez :

        sudo journalctl -fu smp-server.service
         
         Nov 23 19:23:21 5588ab759e80 systemd[1]: Started SMP server.
        @@ -1108,8 +1108,8 @@ allow_local_mode = true
         
        • Dans le menu latéral, cliquez sur l'onglet Configuration (icône en forme de rouage).
        • Cliquez sur Ajouter une source de données dans le coin supérieur droit de l'onglet Sources de données.
        • -
        • Entrez "CSV" dans le champ de recherche pour trouver la source de données CSV.
        • -
        • Cliquez sur le résultat de la recherche qui indique "CSV".
        • +
        • Entrez "CSV" dans le champ de recherche pour trouver la source de données CSV.
        • +
        • Cliquez sur le résultat de la recherche qui indique "CSV".
        • Dans URL, entrez un fichier qui pointe vers le contenu CSV.
        @@ -1122,18 +1122,8 @@ allow_local_mode = true

        Pour configurer l'app afin d'utiliser votre serveur de messagerie, copiez son adresse complète, y compris le mot de passe, et ajoutez-la à l'application. Vous avez la possibilité d'utiliser votre serveur avec les serveurs prédéfinis ou sans eux - vous pouvez les supprimer ou les désactiver.

        Il est également possible de partager l'adresse de votre serveur avec vos amis en leur permettant de scanner le code QR dans les paramètres du serveur. Ce code inclura le mot de passe du serveur, ce qui leur permettra aussi de recevoir des messages via votre serveur.

        Veuillez noter : vous avez besoin de la version 4.0 du serveur SMP pour avoir le support du mot de passe. Si vous avez déjà déployé un serveur, vous pouvez ajouter le mot de passe en l'ajoutant au fichier INI du serveur.

        -

             

        -
    +

         

    +
    @@ -1263,7 +1253,6 @@ allow_local_mode = true - diff --git a/docs/lang/fr/simplex.html b/docs/lang/fr/simplex.html index 978c02adce..6acd494236 100644 --- a/docs/lang/fr/simplex.html +++ b/docs/lang/fr/simplex.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | 07.02.2023 | FR, EN, CZ, PL |

    +

    | 07.02.2023 | FR, EN, CZ, PL |

    Plateforme SimpleX - motivation et comparaison

    Problèmes

    Les plateformes et protocoles de chat existants présentent une partie ou la totalité des problèmes suivants :

    @@ -937,17 +937,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Les réseaux P2P sont susceptibles d'être vulnérables aux attaques DRDoS. Dans la conception proposée, les clients ne relaient que le trafic provenant de connexions de confiance connues et ne peuvent pas être utilisés pour refléter et amplifier le trafic dans l'ensemble du réseau.

    -
    +
    @@ -1077,7 +1067,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/lang/fr/translations.html b/docs/lang/fr/translations.html index 7cdbde75d4..8ae23bd813 100644 --- a/docs/lang/fr/translations.html +++ b/docs/lang/fr/translations.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | 19.03.2023 | FR, EN, CZ, PL |

    +

    | 19.03.2023 | FR, EN, CZ, PL |

    Contribuer aux traductions de SimpleX Chat

    Un grand merci pour votre intérêt pour la traduction de SimpleX Chat - cela nous aide beaucoup à rendre l'application accessible à un plus grand nombre d'utilisateurs, et nous vous remercions de votre aide.

    Cela demande un investissement en temps considérable - la plupart des gens le sous-estiment au départ - et une maintenance continue au fur et à mesure que nous développons l'application.

    @@ -890,17 +890,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Encore une fois un grand merci de nous aider à développer SimpleX Chat !

    Evgeny, fondateur de SimpleX Chat.

    -
    +
    @@ -1030,7 +1020,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/lang/fr/webrtc.html b/docs/lang/fr/webrtc.html index d2e14716b9..e84b64292f 100644 --- a/docs/lang/fr/webrtc.html +++ b/docs/lang/fr/webrtc.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | 31.01.2023 | FR, EN, CZ, PL |

    +

    | 31.01.2023 | FR, EN, CZ, PL |

    Utilisation de serveurs WebRTC ICE personnalisés dans SimpleX Chat

    Déployer un serveur STUN/TURN

    Pour ce guide, nous utiliserons l'implémentation de serveur STUN/TURN la plus complète et la plus testée - coturn et la distribution Linux Ubuntu 20.04 LTS.

    @@ -888,7 +888,7 @@ no-tlsv1_2
  • Optionnellement, si vous utilisez le pare-feu ufw, ouvrez les ports appropriés :
    • -
    • 3478 – "simple" TURN/STUN;
    • +
    • 3478 – "simple" TURN/STUN;
    • 5349 – TURN/STUN over TLS;
    • 443 – TURN/STUN over TLS, qui peuvent contourner les pare-feu;
    • 49152:65535 – plage de ports que Coturn utilisera par défaut pour le relais TURN.
    • @@ -969,17 +969,7 @@ Connection to <votre_ip_ou_domaine> 5349 port [tcp/*] succeeded!
    -
    +
    @@ -1109,7 +1099,6 @@ Connection to <votre_ip_ou_domaine> 5349 port [tcp/*] succeeded! - diff --git a/docs/lang/pl/android.html b/docs/lang/pl/android.html index 97e811c6f5..da950c933d 100644 --- a/docs/lang/pl/android.html +++ b/docs/lang/pl/android.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | 07.02.2023 | PL, EN, CZ, FR |

    +

    | 07.02.2023 | PL, EN, CZ, FR |

    Dostęp do plików w aplikacji Androidowej

    SimpleX wykorzystuje bazy danych i przechowuje ustawienia w prywatnym katalogu w systemie Android. Katalog ten zawiera:

      @@ -852,7 +852,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Następne uruchom:

      adb -d backup -f chat.ab -noapk chat.simplex.app && 
       tail -n +5 chat.ab > chat.dat && 
      -printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" | cat - chat.dat > chat.gz && 
      +printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" | cat - chat.dat > chat.gz && 
       tar -xvzf chat.gz
       

      Teraz odblokuj urządzenie i potwierdź operację tworzenia kopii zapasowej bez użycia hasła do szyfrowania, w przeciwnym razie polecenia nie będą działać.

      @@ -862,22 +862,12 @@ tar -xvzf chat.gz

      Odszyfrowywanie baz danych

      Aby wyświetlić dane bazy danych, należy je najpierw odszyfrować. Zainstaluj sqlcipher używając ulubionego menedżera pakietów i uruchom następujące polecenia w katalogu z bazami danych:

      sqlcipher files_chat.db
      -pragma key="youDecryptionPassphrase";
      +pragma key="youDecryptionPassphrase";
       # Upewnij się, że to działa
       select * from users;
       

      Jeśli zobaczysz Parse error: no such table: users, upewnij się, że wprowadzono prawidłowe hasło i zostało ono zmienione z losowego w aplikacji na Androida (jeśli oczywiście pobrano tę bazę danych z urządzenia z Androidem).

      -
    +
    @@ -1007,7 +997,6 @@ select * from users; - diff --git a/docs/lang/pl/cli.html b/docs/lang/pl/cli.html index 27da48fa41..68d785ae59 100644 --- a/docs/lang/pl/cli.html +++ b/docs/lang/pl/cli.html @@ -826,35 +826,35 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Updated 31.01.2023 | Języki: PL, EN, FR, CZ |

    +

    | Updated 31.01.2023 | Języki: PL, EN, FR, CZ |

    Terminalowa (konsolowa) aplikacja SimpleX Chat dla systemów Linux/MacOS/Windows

    Spis treści

    @@ -868,7 +868,7 @@ window.addEventListener('scroll',changeHeaderBg);
  • Automatycznie wypełniana nazwa odbiorcy - po nawiązaniu połączenia wystarczy po prostu napisać wiadomość, aby odpowiedzieć nadawcy.
  • Dostępne wstępnie skonfigurowane przykładowe serwery SMP - można też użyć własnego serwera.
  • Żadna globalna tożsamość ani nazwy użytkowników nie są widoczne dla serwera (serwerów), co zapewnia pełną prywatność kontaktów i rozmów.
  • -
  • Dwie warstwy szyfrowania E2E (double-ratchet dla połączeń dwukierunkowych, przy użyciu negocjacji klucza X3DH z efemerycznymi kluczami Curve448 i NaCl crypto_box dla kolejek SMP, przy użyciu kluczy Curve25519) oraz przekazywanie kluczy odbiorców za pomocą komunikacji out-of-band (zobacz Jak używać czatu SimpleX).
  • +
  • Dwie warstwy szyfrowania E2E (double-ratchet dla połączeń dwukierunkowych, przy użyciu negocjacji klucza X3DH z efemerycznymi kluczami Curve448 i NaCl crypto_box dla kolejek SMP, przy użyciu kluczy Curve25519) oraz przekazywanie kluczy odbiorców za pomocą komunikacji out-of-band (zobacz Jak używać czatu SimpleX).
  • Weryfikacja integralności wiadomości (poprzez uwzględnienie hashu poprzedniej wiadomości).
  • Uwierzytelnianie każdego polecenia/wiadomości przez serwery SMP za pomocą automatycznie generowanych kluczy Ed448.
  • Szyfrowanie transmisji przy użyciu TLS 1.3.
  • @@ -907,7 +907,7 @@ git checkout stable DOCKER_BUILDKIT=1 docker build --output ~/.local/bin .
    -

    Uwaga: Jeśli napotkasz błąd version `GLIBC_2.28' not found, przebuduj go z obrazem bazowym haskell:8.10.7-stretch (zmień go w Twoim lokalnym pliku Dockerfile).

    +

    Uwaga: Jeśli napotkasz błąd version `GLIBC_2.28' not found, przebuduj go z obrazem bazowym haskell:8.10.7-stretch (zmień go w Twoim lokalnym pliku Dockerfile).

    Używając Haskella na dowolnym systemie operacyjnym

      @@ -969,7 +969,7 @@ brew services start tor

      Możesz także użyć opcji --socks-proxy=ipv4:port lub --socks-proxy=:port, aby skonfigurować adres i port serwera proxy SOCKS5, przykładowo jeśli uruchamiasz go na innym hoście lub porcie.

      Jak używać czatu SimpleX

      -

      Po uruchomieniu czatu zostaniesz poproszony o podanie swojej "nazwy wyświetlanej" oraz opcjonalnej "pełnej nazwy" w celu utworzenia lokalnego profilu czatu. Nazwa wyświetlana jest aliasem, za pomocą którego kontakty mogą się do ciebie odnosić - nie jest ona unikalna i nie służy jako globalna tożsamość. Jeśli kilka kontaktów wybrało tę samą nazwę wyświetlaną, klient czatu dodaje numeryczną końcówkę (sufiks) do ich lokalnej nazwy wyświetlanej.

      +

      Po uruchomieniu czatu zostaniesz poproszony o podanie swojej "nazwy wyświetlanej" oraz opcjonalnej "pełnej nazwy" w celu utworzenia lokalnego profilu czatu. Nazwa wyświetlana jest aliasem, za pomocą którego kontakty mogą się do ciebie odnosić - nie jest ona unikalna i nie służy jako globalna tożsamość. Jeśli kilka kontaktów wybrało tę samą nazwę wyświetlaną, klient czatu dodaje numeryczną końcówkę (sufiks) do ich lokalnej nazwy wyświetlanej.

      Poniższy schemat przedstawia sposób łączenia się z kontaktem i wysyłania do niego wiadomości:

      @@ -993,20 +993,10 @@ brew services start tor

      Adresy kontaktowe użytkowników

      Alternatywą dla jednorazowych linków zapraszających są adresy długoterminowe. Możesz je utworzyć za pomocą /ad (oznaczające /address). Utworzony adres może być następnie udostępniony za pośrednictwem dowolnego innego kanału komunikacji i użyty przez innych użytkowników jako link do prośby o kontakt używając /c <adres_kontaktowy_użytkownika>.

      Prośby o kontakt możesz przyjąć za pomocą komendy /ac <nazwa> oraz odrzucić za pomocą /rc <nazwa>.

      -

      "Długoterminowy" adres użytkownika jest długoterminowy w tym sensie, że jest to link wielokrotnego użytku - może być używany do momentu usunięcia go przez użytkownika. Po usunięciu wszystkie nawiązane połączenia pozostaną aktywne (w przeciwieństwie do tego, jak działa to w przypadku poczty e-mail, gdy zmiana adresu powoduje, że ludzie nie mogą już wysyłać do siebie wiadomości).

      +

      "Długoterminowy" adres użytkownika jest długoterminowy w tym sensie, że jest to link wielokrotnego użytku - może być używany do momentu usunięcia go przez użytkownika. Po usunięciu wszystkie nawiązane połączenia pozostaną aktywne (w przeciwieństwie do tego, jak działa to w przypadku poczty e-mail, gdy zmiana adresu powoduje, że ludzie nie mogą już wysyłać do siebie wiadomości).

      Użyj /help address, by uzyskać listę pozostałych dostępnych komend.

      simplex-chat

      -
      +
    @@ -1136,7 +1126,6 @@ brew services start tor - diff --git a/docs/lang/pl/contributing.html b/docs/lang/pl/contributing.html index 58669c4c3a..936f0943f5 100644 --- a/docs/lang/pl/contributing.html +++ b/docs/lang/pl/contributing.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Updated 31.01.2023 | Języki: PL, EN FR, CZ |

    +

    | Updated 31.01.2023 | Języki: PL, EN FR, CZ |

    Poradnik wspierania projektu

    Kompilacja z włączonym szyfrowaniem SQLCipher

    Dodaj cabal.project.local do katalogu głównego projektu z lokalizacją nagłówków i bibliotek OpenSSL oraz flagą ustawiającą tryb szyfrowania:

    @@ -952,17 +952,7 @@ let r' = (record :: Record) {field = value} import Control.Monad

    Ten PR opisuje wszystkie różnice.

    -
    +
    @@ -1092,7 +1082,6 @@ import Control.Monad - diff --git a/docs/lang/pl/server.html b/docs/lang/pl/server.html index 07f20b82c6..b7cc772bb8 100644 --- a/docs/lang/pl/server.html +++ b/docs/lang/pl/server.html @@ -826,12 +826,12 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Updated 05.06.2023 | Języki: PL, EN, FR, CZ |

    +

    | Updated 05.06.2023 | Języki: PL, EN, FR, CZ |

    Hostowanie własnego serwera SMP

    Informacje ogólne

    Serwer SMP to serwer przekaźnikowy używany do przekazywania wiadomości w sieci SimpleX. Aplikacje SimpleX Chat mają wstępnie ustawione serwery (dla aplikacji mobilnych są to smp11, smp12 i smp14.simplex.im), ale można łatwo zmienić konfigurację aplikacji, aby korzystać z innych serwerów.

    Klienty SimpleX określają tylko, który serwer jest używany do odbierania wiadomości, oddzielnie dla każdego kontaktu (lub połączenia grupowego z członkiem grupy), a serwery te są tylko tymczasowe, ponieważ adres dostawy może ulec zmianie.

    -

    Uwaga: gdy zmienisz serwery w ustawieniach aplikacji, wpłynie to tylko na to, który serwer będzie używany dla nowych kontaktów, istniejące kontakty nie zostaną automatycznie przeniesione na nowe serwery, ale możesz przenieść je ręcznie za pomocą przycisku "Zmień adres odbiorczy" na stronie z informacjami kontaktu/członka - wkrótce zostanie to zautomatyzowane.

    +

    Uwaga: gdy zmienisz serwery w ustawieniach aplikacji, wpłynie to tylko na to, który serwer będzie używany dla nowych kontaktów, istniejące kontakty nie zostaną automatycznie przeniesione na nowe serwery, ale możesz przenieść je ręcznie za pomocą przycisku "Zmień adres odbiorczy" na stronie z informacjami kontaktu/członka - wkrótce zostanie to zautomatyzowane.

    Instalacja

    1. @@ -897,7 +897,7 @@ User=smp Group=smp Type=simple ExecStart=/usr/local/bin/smp-server start +RTS -N -RTS -ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"' +ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"' LimitNOFILE=65535 KillSignal=SIGINT TimeoutStopSec=infinity @@ -917,9 +917,9 @@ WantedBy=multi-user.target
      • Skonfiguruj oficjalne repozytorium Tor PPA:

        -
        CODENAME="$(lsb_release -c | awk '{print $2}')"
        -echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main
        -deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main" > /etc/apt/sources.list.d/tor.list
        +
        CODENAME="$(lsb_release -c | awk '{print $2}')"
        +echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main
        +deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main" > /etc/apt/sources.list.d/tor.list
         
      • @@ -991,11 +991,11 @@ Available commands: /etc/opt/simplex/smp-server.ini) delete Delete configuration and log files -

        Możesz uzyskać dalszą pomoc, wykonując polecenie sudo su smp -c "smp-server <command> -h"

        +

        Możesz uzyskać dalszą pomoc, wykonując polecenie sudo su smp -c "smp-server <command> -h"

        Następnie musimy skonfigurować smp-server:

        Interaktywnie

        Wykonaj poniższe polecenie:

        -
        sudo su smp -c "smp-server init"
        +
        sudo su smp -c "smp-server init"
         

        Istnieje kilka opcji, które należy rozważyć:

          @@ -1022,7 +1022,7 @@ Available commands:

        Za pomocą opcji wiersza poleceń

        Wykonaj poniższe polecenie:

        -
        sudo su smp -c "smp-server init -h"
        +
        sudo su smp -c "smp-server init -h"
         
         ...
         Available options:
        @@ -1032,7 +1032,7 @@ Available options:
                                    ED25519, ED448 (default: ED448)
           --ip IP                  Server IP address, used as Common Name for TLS online
                                    certificate if FQDN is not supplied
        -                           (default: "127.0.0.1")
        +                           (default: "127.0.0.1")
           -n,--fqdn FQDN           Server FQDN used as Common Name for TLS online
                                    certificate
           --no-password            Allow creating new queues without password
        @@ -1042,10 +1042,10 @@ Available options:
           -h,--help                Show this help text
         

        Powinieneś określić, które flagi są potrzebne dla Twojego zastosowania, a następnie wykonać smp-server init z flagą -y dla nieinteraktywnej inicjalizacji:

        -
        sudo su smp -c "smp-server init -y -<your flag> <your option>"
        +
        sudo su smp -c "smp-server init -y -<your flag> <your option>"
         

        Przykładowo, uruchom:

        -
        sudo su smp -c "smp-server init -y -l --ip 192.168.1.5 --password test"
        +
        sudo su smp -c "smp-server init -y -l --ip 192.168.1.5 --password test"
         

        aby zainicjować konfigurację smp-server z:

          @@ -1186,8 +1186,8 @@ allow_local_mode = true
          • W menu bocznym kliknij zakładkę Configuration (ikona koła zębatego)
          • Kliknij Add data source (Dodaj źródło danych) w prawym górnym rogu zakładki Data Sources (Źródła danych).
          • -
          • Wpisz "CSV" w polu wyszukiwania, aby znaleźć źródło danych CSV.
          • -
          • Kliknij wynik wyszukiwania z napisem "CSV".
          • +
          • Wpisz "CSV" w polu wyszukiwania, aby znaleźć źródło danych CSV.
          • +
          • Kliknij wynik wyszukiwania z napisem "CSV".
          • W polu URL wprowadź plik wskazujący na zawartość CSV.
            @@ -1223,7 +1223,7 @@ allow_local_mode = true
          1. Używając kontenera Dockera

              -
            1. Zatrzymaj i usuń kontener:
              docker rm $(docker stop $(docker ps -a -q --filter ancestor=simplexchat/smp-server --format="\{\{.ID\}\}"))
              +
            2. Zatrzymaj i usuń kontener:
              docker rm $(docker stop $(docker ps -a -q --filter ancestor=simplexchat/smp-server --format="\{\{.ID\}\}"))
               
            3. Pobierz najnowszą wersję kontenera:
              docker pull simplexchat/smp-server:latest
              @@ -1257,18 +1257,8 @@ allow_local_mode = true
               

              Aby skonfigurować aplikację do korzystania z serwera wiadomości, skopiuj jego pełny adres, w tym hasło, i dodaj go do aplikacji. Możesz używać swojego serwera razem z predefiniowanymi serwerami lub bez nich - możesz je usunąć lub wyłączyć.

              Możliwe jest również udostępnienie adresu swojego serwera znajomym, pozwalając im zeskanować kod QR z ustawień serwera - będzie on zawierał hasło serwera, dzięki czemu będą mogli również otrzymywać wiadomości za pośrednictwem twojego serwera.

              Uwaga: Do obsługi haseł wymagany jest serwer SMP w wersji 4.0. Jeśli już posiadasz serwer, możesz dodać hasło do niego poprzez wpisanie hasła do pliku INI serwera.

              -

                   

              -
    +

         

    +
    @@ -1398,7 +1388,6 @@ allow_local_mode = true - diff --git a/docs/lang/pl/simplex.html b/docs/lang/pl/simplex.html index dc28c34ab1..8cfb8a9adb 100644 --- a/docs/lang/pl/simplex.html +++ b/docs/lang/pl/simplex.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Updated 07.02.2023 | Języki: PL, EN, FR, CZ |

    +

    | Updated 07.02.2023 | Języki: PL, EN, FR, CZ |

    Platfoma SimpleX - motywacja i porównanie

    Problemy

    Istniejące komunikatory oraz protokoły borykają się ze wszystkimi lub kilkoma podanymi problemami:

    @@ -937,17 +937,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Sieci P2P są prawdopodobnie podatne na atak DRDoS. W proponowanym modelu klienci przekazują tylko ruch ze znanych zaufanych połączeń i nie mogą być wykorzystywani do odbijania i wzmacniania ruchu w całej sieci.

    -
    +
    @@ -1077,7 +1067,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/lang/pl/translations.html b/docs/lang/pl/translations.html index d528ee9fab..866d65a9d8 100644 --- a/docs/lang/pl/translations.html +++ b/docs/lang/pl/translations.html @@ -826,11 +826,11 @@ window.addEventListener('scroll',changeHeaderBg); -

    | 19.03.2023 | PL, EN, CZ, FR|

    +

    | 19.03.2023 | PL, EN, CZ, FR|

    Współtworzenie tłumaczenia SimpleX Chat

    Dziękujemy za zainteresowanie się tłumaczeniem SimpleX Chat - to bardzo pomaga w uczynieniu go dostępnym dla szerszego grona użytkowników i naprawdę doceniamy Twoją pomoc.

    Wymaga to znacznej inwestycji czasu - większość ludzi tego początkowo nie docenia - oraz stałej opieki w miarę rozwoju aplikacji.

    -

    Ten dokument został stworzony, po to by przyspieszyć ten proces i podzielić się kilkoma ważnymi "gafami", które odkryliśmy podczas pracy z Weblate - platformą, której używamy do tłumaczeń interfejsu.

    +

    Ten dokument został stworzony, po to by przyspieszyć ten proces i podzielić się kilkoma ważnymi "gafami", które odkryliśmy podczas pracy z Weblate - platformą, której używamy do tłumaczeń interfejsu.

    Zanim rozpoczniesz tłumaczenie

    1. @@ -840,17 +840,17 @@ window.addEventListener('scroll',changeHeaderBg);

      Przed rozpoczęciem tłumaczenia należy podpisać prostą umowę licencyjną za pośrednictwem Weblate - ma to na celu uniknięcie konfliktów związanych z prawami własności intelektualnej. Kopia tej umowy jest również dostępna tutaj.

    2. -

      Możemy również dodać Cię do grupy tłumaczy w przypadku jakichkolwiek pytań i aktualizacji - skontaktuj się z programistami za pośrednictwem czatu (po zainstalowaniu aplikacji lub później, poprzez "Wyślij pytania i pomysły" w ustawieniach aplikacji).

      +

      Możemy również dodać Cię do grupy tłumaczy w przypadku jakichkolwiek pytań i aktualizacji - skontaktuj się z programistami za pośrednictwem czatu (po zainstalowaniu aplikacji lub później, poprzez "Wyślij pytania i pomysły" w ustawieniach aplikacji).

    Proces tłumaczenia

    Najłatwiej jest najpierw przetłumaczyć aplikację na Androida, a dopiero później aplikację na iOS, ponieważ przetłumaczone ciągi Androidowej aplikacji są skonfigurowane jako słownik dla iOS.

    Kroki są następujące:

      -
    1. Tłumaczysz aplikację na Androida w Weblate.
    2. -
    3. Sprawdzamy i publikujemy tłumaczenia aplikacji na Androida.
    4. +
    5. Tłumaczysz aplikację na Androida w Weblate.
    6. +
    7. Sprawdzamy i publikujemy tłumaczenia aplikacji na Androida.
    8. Sprawdzasz tłumaczenia w aplikacji i poprawiasz ewentualne błędy.
    9. -
    10. Tłumaczysz aplikację iOS w Weblate.
    11. +
    12. Tłumaczysz aplikację iOS w Weblate.
    13. Sprawdzamy i publikujemy tłumaczenia aplikacji iOS.

    Tłumaczenie aplikacji na Androida

    @@ -868,7 +868,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Weblate posiada również automatyczne sugestie, które mogą przyspieszyć ten proces. Czasami mogą być używane w niezmienionej formie, a czasami wymagają edycji - kliknij, aby użyć ich w tłumaczeniach.

  • -

    Zwróć również uwagę na Klucz ciągu (znajduje się po prawej stronie ekranu) - może on dać ci podpowiedź, co ten ciąg oznacza, gdy jego znaczenie jest niejasne. Przykładowo, klucz dla " Dodatkowy akcent" ( nie wiadomo) to "color_primary_variant" (nieco bardziej jasne, że odnosi się do koloru używanego w aplikacji).

    +

    Zwróć również uwagę na Klucz ciągu (znajduje się po prawej stronie ekranu) - może on dać ci podpowiedź, co ten ciąg oznacza, gdy jego znaczenie jest niejasne. Przykładowo, klucz dla " Dodatkowy akcent" ( nie wiadomo) to "color_primary_variant" (nieco bardziej jasne, że odnosi się do koloru używanego w aplikacji).

  • Gdy wszystkie ciągi w aplikacji na Androida zostaną przetłumaczone, przejrzyj je, aby zapewnić spójny styl i język, tak aby te same słowa były konsekwentnie używane do podobnych działań użytkownika, tak samo jak w języku angielskim. Czasami będziesz musiał użyć różnych słów w przypadkach, gdy angielski ma tylko jedno, spróbuj użyć tych wyborów spójnie w podobnych kontekstach, aby uprościć obsługę użytkownikom końcowym.

    @@ -899,23 +899,23 @@ window.addEventListener('scroll',changeHeaderBg);

    Częste błędy w tłumaczeniu

    1. -

      Słowo "chat" jest używane w kilku znaczeniach, w zależności od kontekstu. Może ono oznaczać "aplikację SimpleX Chat" (np. w opcji Rozpocznij/zatrzymaj czat) lub "pojedynczą rozmowę". Jeśli nie jest to jasne, zapytaj się nas, a my dodamy więcej uwag dotyczących tłumaczenia.

      +

      Słowo "chat" jest używane w kilku znaczeniach, w zależności od kontekstu. Może ono oznaczać "aplikację SimpleX Chat" (np. w opcji Rozpocznij/zatrzymaj czat) lub "pojedynczą rozmowę". Jeśli nie jest to jasne, zapytaj się nas, a my dodamy więcej uwag dotyczących tłumaczenia.

    2. Prosimy o używanie liczby mnogiej i pojedynczej tak jak w oryginalnych ciągach, w przeciwnym razie może to zmienić ich znaczenie. Przykładowo, niektóre ustawienia mają zastosowanie do wszystkich kontaktów, a niektóre tylko do jednego kontaktu, będzie to mylące dla użytkownika, jeśli użyjesz liczby mnogiej w obu przypadkach.

    3. -

      Aplikacja używa "Passcode" do zapewnienia dostępu, a nie "hasła" ("password") - w wielu językach jest to tłumaczone jako "kod dostępu". Baza danych używa "Passphrase" - w wielu językach jest to tłumaczone jako "hasło". Prosimy o spójne używanie tych słów.

      +

      Aplikacja używa "Passcode" do zapewnienia dostępu, a nie "hasła" ("password") - w wielu językach jest to tłumaczone jako "kod dostępu". Baza danych używa "Passphrase" - w wielu językach jest to tłumaczone jako "hasło". Prosimy o spójne używanie tych słów.

    4. -

      "Rola" użytkownika. To słowo odnosi się do zestawu uprawnień posiadanych przez użytkownika, może to być "właściciel", "administrator", "członek" lub "obserwator" (najniższe uprawnienie, które pozwala tylko na czytanie wiadomości i dodawanie reakcji na wiadomości). Tłumaczenie tego jako "tożsamość" lub "funkcja" może być nieprawidłowe.

      +

      "Rola" użytkownika. To słowo odnosi się do zestawu uprawnień posiadanych przez użytkownika, może to być "właściciel", "administrator", "członek" lub "obserwator" (najniższe uprawnienie, które pozwala tylko na czytanie wiadomości i dodawanie reakcji na wiadomości). Tłumaczenie tego jako "tożsamość" lub "funkcja" może być nieprawidłowe.

    5. -

      "Moderate" / "moderated" ("moderować" / "zmoderowany"). Te słowa oznaczają odpowiednio "usunięcie wiadomości innego użytkownika" i "usunięcie przez administratora". Ta funkcja jest używana, gdy członek wysyła wiadomość, która nie jest odpowiednia dla grupy. Wiele języków ma podobne słowa.

      +

      "Moderate" / "moderated" ("moderować" / "zmoderowany"). Te słowa oznaczają odpowiednio "usunięcie wiadomości innego użytkownika" i "usunięcie przez administratora". Ta funkcja jest używana, gdy członek wysyła wiadomość, która nie jest odpowiednia dla grupy. Wiele języków ma podobne słowa.

    Jak sprawdzamy tłumaczenia

    -

    Aby zweryfikować poprawność tłumaczeń, sprawdzamy tłumaczenia poprzez przeglądanie stron Weblate w przeglądarce Google Chrome w trybie "Tłumacz na angielski". Na przykład, aby sprawdzić niemieckie tłumaczenia interfejsu Androida, ktoś z naszego zespołu przewinął [te 68 stron] (https://hosted.weblate.org/browse/simplex-chat/android/de/).

    +

    Aby zweryfikować poprawność tłumaczeń, sprawdzamy tłumaczenia poprzez przeglądanie stron Weblate w przeglądarce Google Chrome w trybie "Tłumacz na angielski". Na przykład, aby sprawdzić niemieckie tłumaczenia interfejsu Androida, ktoś z naszego zespołu przewinął [te 68 stron] (https://hosted.weblate.org/browse/simplex-chat/android/de/).

    Nie oczekujemy, że odwrócone tłumaczenie będzie dokładnie takie samo jak oryginał, rzadko się to zdarza, ale że będzie ogólnie poprawne.

    Znacznie ułatwiłoby to recenzję, gdybyś mógł wcześniej sprawdzić to w ten sam sposób i skomentować wszystkie przypadki, w których odwrócone tłumaczenia są zupełnie inne (mogą istnieć uzasadnione przypadki).

    Co dalej

    @@ -932,17 +932,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Jeszcze raz bardzo dziękujemy za pomoc w rozwoju SimpleX Chat!

    Evgeny, założyciel SimpleX Chat.

    -
  • +
    @@ -1072,7 +1062,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/lang/pl/webrtc.html b/docs/lang/pl/webrtc.html index edbaa64278..fa0c31acde 100644 --- a/docs/lang/pl/webrtc.html +++ b/docs/lang/pl/webrtc.html @@ -826,7 +826,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Updated 31.01.2023 | Języki: PL, EN, FR, CZ |

    +

    | Updated 31.01.2023 | Języki: PL, EN, FR, CZ |

    Korzystanie z niestandardowych serwerów WebRTC ICE w SimpleX Chat

    Instalacja serwera STUN/TURN

    W tym poradniku będziemy używać najbardziej funkcjonalnej i przetestowanej w boju implementacji serwera STUN/TURN - coturn i Ubuntu 20.04 LTS` dystrybucji Linuksa.

    @@ -888,7 +888,7 @@ no-tlsv1_2
  • Opcjonalnie, jeśli używasz firewalla ufw, otwórz odpowiednie porty:
    • -
    • 3478 – "czysty" TURN/STUN;
    • +
    • 3478 – "czysty" TURN/STUN;
    • 5349 – TURN/STUN over TLS;
    • 443 – TURN/STUN over TLS, który może omijać firewalle;
    • 49152:65535 – zakres portów, który Coturn będzie domyślnie wykorzystywał dla przekaźnika TURN.
    • @@ -969,17 +969,7 @@ Connection to <twoje_ip_lub_domena> 5349 port [tcp/*] succeeded!
    -
    +
    @@ -1109,7 +1099,6 @@ Connection to <twoje_ip_lub_domena> 5349 port [tcp/*] succeeded! - diff --git a/docs/protocol/simplex-chat.html b/docs/protocol/simplex-chat.html index 740b495fdd..9e58706817 100644 --- a/docs/protocol/simplex-chat.html +++ b/docs/protocol/simplex-chat.html @@ -735,7 +735,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    DRAFT Revision 0.1, 2022-08-08

    +

    DRAFT Revision 0.1, 2022-08-08

    Evgeny Poberezkin

    SimpleX Chat Protocol

    Abstract

    @@ -760,52 +760,52 @@ window.addEventListener('scroll',changeHeaderBg);

    Whitespace is used in JSON examples for readability, SimpleX Chat Protocol clients MUST avoid using whitespace when encoding JSON messages.

    General message format is defined by this JTD schema:

    {
    -  "properties": {
    -    "event": {
    -      "type": "string"
    +  "properties": {
    +    "event": {
    +      "type": "string"
         },
    -    "msgId": {
    -      "type": "string",
    -      "metadata": {
    -        "format": "base64url-encoded 12 bytes random message ID"
    +    "msgId": {
    +      "type": "string",
    +      "metadata": {
    +        "format": "base64url-encoded 12 bytes random message ID"
           }
         },
    -    "params": {
    -      "optionalProperties": {}
    +    "params": {
    +      "optionalProperties": {}
         }
       }
     }
     
    -

    For example, this message defines a simple text message "hello!":

    +

    For example, this message defines a simple text message "hello!":

    {
    -  "event": "x.msg.new",
    -  "msgId": "abcd",
    -  "params": {
    -    "content": {
    -      "type": "text",
    -      "text": "hello!"
    +  "event": "x.msg.new",
    +  "msgId": "abcd",
    +  "params": {
    +    "content": {
    +      "type": "text",
    +      "text": "hello!"
         }
       }
     }
     

    msgId property is a 12 bytes base64url-encoded random message ID that the clients can use to reference the message in the future, e.g. when editing, quoting or deleting it.

    event property is the type of the message that defines the semantics of the message and the allowed format of params property.

    -

    params property includes message data, depending on event, as defined below and in JTD schema.

    +

    params property includes message data, depending on event, as defined below and in JTD schema.

    Binary format for sending files

    SimpleX Chat clients use separate connections to send files using a binary format. File chunk size send in each message MUST NOT be bigger than 15,780 bytes to fit into 16kb (16384 bytes) transport block.

    The syntax of each message used to send files is defined by the following ABNF notation:

    fileMessage = fileChunk / cancelFile
    -fileChunk = %s"F" chunkNo chunk
    -cancelFile = %s"C"
    +fileChunk = %s"F" chunkNo chunk
    +cancelFile = %s"C"
     chunkNo = 4*4 OCTET ; 32bit word sequential chunk number, starting from 1, in network byte order
     chunk = 1*15780 OCTET ; file data, up to 15,780 bytes
     

    The first chunk number MUST be 1.

    Messages and chat items

    -

    While users usually use the term "message" to refer to the objects presented in the conversation, the expected functionality of these objects makes it a wrong term. "Messages" are supposed to be immutable; they cannot be modified or deleted once sent. The objects in the conversation are expected to be mutable. This document and implementation use the term "chat item" to refer to these objects to differentiate them from the messages sent between the clients.

    +

    While users usually use the term "message" to refer to the objects presented in the conversation, the expected functionality of these objects makes it a wrong term. "Messages" are supposed to be immutable; they cannot be modified or deleted once sent. The objects in the conversation are expected to be mutable. This document and implementation use the term "chat item" to refer to these objects to differentiate them from the messages sent between the clients.

    Supported JSON message types and SimpleX Chat sub-protocols

    Message types are sent as a string in event property of JSON messages. General syntax of event string is defined by this ABNF:

    -
    event = namespace "." subprotocol *("." eventWord)
    +
    event = namespace "." subprotocol *("." eventWord)
     namespace = eventWord ; 1-letter recommended
     subprotocol = eventWord
     eventWord = 1* ALPHA
    @@ -822,20 +822,20 @@ eventWord = 1* ALPHA
     
  • x.call.* - messages to invite to WebRTC calls and send signalling messages.
  • x.ok - message sent during connection handshake.
  • -

    JTD schema defining messages for all chat functions is available in this file – please refer to this document for all properties of the message params.

    +

    JTD schema defining messages for all chat functions is available in this file – please refer to this document for all properties of the message params.

    x.contact - sending connection request

    The message is sent as part of the connection request to the long-term user address. contactReqId property is used to identify a duplicate contact request - the receiving client MAY put repeated request on top of the list in the UI.

    Sub-protocol for contact profile

    x.info - contact profile

    This message is sent by both sides of the connection during the connection handshake, and can be sent later as well when contact profile is updated.

    Probing for duplicate contacts

    -

    As there are no globally unique user identitifiers, when the contact a user is already connected to is added to the group by some other group member, this contact will be added to user's list of contacts as a new contact. To allow merging such contacts, "a probe" (random base64url-encoded 32 bytes) SHOULD be sent to all new members as part of x.info.probe message and, in case there is a contact with the same profile, the hash of the probe MAY be sent to it as part of x.info.probe.check message. In case both the new member and the existing contact are the same user (they would receive both the probe and its hash), the contact would send back the original probe as part of x.info.probe.ok message via the previously existing contact connection – proving to the sender that this new member and the existing contact are the same user, in which case the sender SHOULD merge these two contacts.

    +

    As there are no globally unique user identitifiers, when the contact a user is already connected to is added to the group by some other group member, this contact will be added to user's list of contacts as a new contact. To allow merging such contacts, "a probe" (random base64url-encoded 32 bytes) SHOULD be sent to all new members as part of x.info.probe message and, in case there is a contact with the same profile, the hash of the probe MAY be sent to it as part of x.info.probe.check message. In case both the new member and the existing contact are the same user (they would receive both the probe and its hash), the contact would send back the original probe as part of x.info.probe.ok message via the previously existing contact connection – proving to the sender that this new member and the existing contact are the same user, in which case the sender SHOULD merge these two contacts.

    Sending clients MAY disable this functionality, and receiving clients MAY ignore probe messages.

    If the sending client uses x.info.probe messages, it MUST send them to all new members, rather than only when there is a matching contact profile. This is to avoid leaking information that the matching contact profile exists.

    Sub-protocol for content messages

    x.msg.new - a new content message

    When chat clients receive or send this message, they MUST create a new chat item in the conversation. Top level msgId property is defined to allow referencing this chat item or message in the future, e.g. to delete, update or quote chat item, or to accept file.

    -

    This message uses params property of the message as content message container, without any top level properties for the container. Message container (params) includes message content property, an optional "invitation" to receive file or image attachment in file property (that is interpreted depending on message content type) and optional indication whether this message is forwarded ("forward": true property of container) or sent in reply to other message ("quote": {<quoted message>}). See /definition/msgContainer in JTD schema for message container format.

    +

    This message uses params property of the message as content message container, without any top level properties for the container. Message container (params) includes message content property, an optional "invitation" to receive file or image attachment in file property (that is interpreted depending on message content type) and optional indication whether this message is forwarded ("forward": true property of container) or sent in reply to other message ("quote": {<quoted message>}). See /definition/msgContainer in JTD schema for message container format.

    Message content can be one of four types:

    • text - no file attachment is expected for this format, text property MUST be non-empty.
    • @@ -843,12 +843,12 @@ eventWord = 1* ALPHA
    • image - attached file is required, text property MAY be empty.
    • link - no file attachment is expected, text property MUST be non-empty. preview property contains information about link preview.
    -

    See /definition/msgContent in JTD schema for message container format.

    +

    See /definition/msgContent in JTD schema for message container format.

    x.msg.update - update of the previously sent message

    This message is used to update previously created chat item. Its params property contains msgId of the previously sent message that this one is updating and content with the message content that the clients must use to replace the content of the original chat item.

    If the referenced message does not exist, the clients MUST create a new chat item with the ID of the referenced message. If the referenced message is not a content message, the clients MUST ignore this message.

    x.msg.del - request to delete previously sent message

    -

    This message is used to delete previously sent chat items. Receiving clients MUST implement it as soft-delete, replacing the original chat item with a special chat item indicating that "message is deleted" that can be fully deleted by the user. If the referenced message does not exist or was sent by the different user than the one sending x.msg.del, the receiving clients MUST ignore this message. Clients are also RECOMMENDED to limit the time during which message deletion is allowed, both for senders and for the recipients.

    +

    This message is used to delete previously sent chat items. Receiving clients MUST implement it as soft-delete, replacing the original chat item with a special chat item indicating that "message is deleted" that can be fully deleted by the user. If the referenced message does not exist or was sent by the different user than the one sending x.msg.del, the receiving clients MUST ignore this message. Clients are also RECOMMENDED to limit the time during which message deletion is allowed, both for senders and for the recipients.

    Sub-protocol for sending and receiving files

    When content message x.msg.new contains file attachment (the invitation to receive the file), this sub-protocol is used to accept this file or to notify the recipient that sending the file was cancelled.

    File attachment can optionally include connection address to receive the file - clients MUST include it when sending files to direct connections, and MUST NOT include it when sending file attachment to the group (as different members would need different connections to receive the file).

    @@ -858,19 +858,19 @@ eventWord = 1* ALPHA

    Sub-protocol for chat groups

    Decentralized design for chat groups

    SimpleX Chat groups are fully decentralized and do not have any globally unique group identifiers - they are only defined on client devices as a group profile and a set of bi-directional SimpleX connections with other group members. When a new member accepts group invitation, the inviting member introduces a new member to all existing members and forwards the connection addresses so that they can establish direct and group member connections.

    -

    There is a possibility of the attack here: as the introducing member forwards the addresses, they can substitute them with other addresses, performing MITM attack on the communication between existing and introduced members - this is similar to the communication operator being able to perform MITM on any connection between the users. To mitigate this attack this group sub-protocol will be extended to allow validating security of the connection by sending connection verification out-of-band.

    +

    There is a possibility of the attack here: as the introducing member forwards the addresses, they can substitute them with other addresses, performing MITM attack on the communication between existing and introduced members - this is similar to the communication operator being able to perform MITM on any connection between the users. To mitigate this attack this group sub-protocol will be extended to allow validating security of the connection by sending connection verification out-of-band.

    Clients are RECOMMENDED to indicate in the UI whether the connection to a group member or contact was made directly or via annother user.

    Each member in the group is identified by a group-wide unique identifier used by all members in the group. This is to allow referencing members in the messages and to allow group message integrity validation.

    The diagram below shows the sequence of messages sent between the users' clients to add the new member to the group.

    -

    Adding member to the group

    +

    Adding member to the group

    Member roles

    Currently members can have one of three roles - owner, admin and member. The user that created the group is self-assigned owner role, the new members are assigned role by the member who adds them - only owner and admin members can add new members; only owner members can add members with owner role.

    Messages to manage groups and add members

    x.grp.inv message is sent to invite contact to the group via contact's direct connection and includes group member connection address. This message MUST only be sent by members with admin or owner role. Optional groupLinkId is included when this message is sent to contacts connected via the user's group link. This identifier is a random byte sequence, with no global or even local uniqueness - it is only used for the user's invitations to a given group to provide confirmation to the contact that the group invitation is for the same group the contact was connecting to via the group link, so that the invitation can be automatically accepted by the contact - the contact compares it with the group link id contained in the group link uri's data field.

    x.grp.acpt message is sent as part of group member connection handshake, only to the inviting user.

    x.grp.mem.new message is sent by the inviting user to all connected members (and scheduled as pending to all announced but not yet connected members) to announce a new member to the existing members. This message MUST only be sent by members with admin or owner role. Receiving clients MUST ignore this message if it is received from member with member role.

    -

    x.grp.mem.intro messages are sent by the inviting user to the invited member, via their group member connection, one message for each existing member. When this message is sent by any other member than the one who invited the recipient it MUST be ignored.

    -

    x.grp.mem.inv messages are sent by the invited user to the inviting user, one message for each existing member previously introduced with x.grp.mem.intro message. When this message is sent by any other member than the one who was invited by the recipient it MUST be ignored.

    +

    x.grp.mem.intro messages are sent by the inviting user to the invited member, via their group member connection, one message for each existing member. When this message is sent by any other member than the one who invited the recipient it MUST be ignored.

    +

    x.grp.mem.inv messages are sent by the invited user to the inviting user, one message for each existing member previously introduced with x.grp.mem.intro message. When this message is sent by any other member than the one who was invited by the recipient it MUST be ignored.

    x.grp.mem.fwd message is used by the inviting user to forward the invitations received from invited member in x.grp.mem.inv messages to all other members. This message can only be sent by the member who previously announced the new member, otherwise the recipients MUST ignore it.

    x.grp.mem.info this message is sent as part of member connection handshake - it includes group member profile.

    x.grp.mem.role message is sent to update group member role - it is sent to all members by the member who updated the role of the member referenced in this message. This message MUST only be sent by members with admin or owner role. Receiving clients MUST ignore this message if it is received from member with role less than admin.

    @@ -879,7 +879,7 @@ eventWord = 1* ALPHA

    x.grp.del message is sent to all members by the member who deletes the group. Clients who received this message SHOULD keep a local copy of the deleted group, until it is deleted by the user. This message MUST only be sent by members with owner role. Receiving clients MUST ignore this message if it is received from member other than with owner role.

    x.grp.info message is sent to all members by the member who updated group profile. Only group owners can update group profiles. Clients MAY implement some conflict resolution strategy - it is currently not implemented by SimpleX Chat client. This message MUST only be sent by members with owner role. Receiving clients MUST ignore this message if it is received from member other than with owner role.

    Sub-protocol for WebRTC audio/video calls

    -

    This sub-protocol is used to send call invitations and to negotiate End-to-end encryption keys and pass WebRTC signalling information.

    +

    This sub-protocol is used to send call invitations and to negotiate end-to-end encryption keys and pass WebRTC signalling information.

    These message are used for WebRTC calls:

    1. @@ -895,17 +895,7 @@ eventWord = 1* ALPHA

      x.call.end message is sent to notify the other party that the call is terminated.

    -

    End-to-end encryption

    A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    MITM attack

    The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

    +
    @@ -1035,7 +1025,6 @@ eventWord = 1* ALPHA - diff --git a/docs/server.html b/docs/server.html index 6b0b219531..dcb92bb92f 100644 --- a/docs/server.html +++ b/docs/server.html @@ -858,43 +858,43 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Updated 28.05.2024 | Languages: EN, FR, CZ, PL |

    +

    | Updated 28.05.2024 | Languages: EN, FR, CZ, PL |

    Table of Contents

    @@ -902,7 +902,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Overview

    SMP server is the relay server used to pass messages in SimpleX network. SimpleX Chat apps have preset servers (for mobile apps these are smp11, smp12 and smp14.simplex.im), but you can easily change app configuration to use other servers.

    SimpleX clients only determine which server is used to receive the messages, separately for each contact (or group connection with a group member), and these servers are only temporary, as the delivery address can change.

    -

    Please note: when you change the servers in the app configuration, it only affects which servers will be used for the new contacts, the existing contacts will not automatically move to the new servers, but you can move them manually using "Change receiving address" button in contact/member information pages – it will be automated in the future.

    +

    Please note: when you change the servers in the app configuration, it only affects which servers will be used for the new contacts, the existing contacts will not automatically move to the new servers, but you can move them manually using "Change receiving address" button in contact/member information pages – it will be automated in the future.

    Installation

    1. @@ -959,7 +959,7 @@ sudo firewall-cmd --reload
    2. -

      Optional — If you're using distribution with systemd, create /etc/systemd/system/smp-server.service file with the following content:

      +

      Optional — If you're using distribution with systemd, create /etc/systemd/system/smp-server.service file with the following content:

      [Unit]
       Description=SMP server systemd service
       
      @@ -968,7 +968,7 @@ User=smp
       Group=smp
       Type=simple
       ExecStart=/usr/local/bin/smp-server start +RTS -N -RTS
      -ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"'
      +ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"'
       LimitNOFILE=65535
       KillSignal=SIGINT
       TimeoutStopSec=infinity
      @@ -991,11 +991,11 @@ Available commands:
                                  /etc/opt/simplex/smp-server.ini)
         delete                   Delete configuration and log files
       
      -

      You can get further help by executing sudo su smp -c "smp-server <command> -h"

      +

      You can get further help by executing sudo su smp -c "smp-server <command> -h"

      After that, we need to configure smp-server:

      Interactively

      Execute the following command:

      -
      sudo su smp -c "smp-server init"
      +
      sudo su smp -c "smp-server init"
       

      There are several options to consider:

        @@ -1022,7 +1022,7 @@ Available commands:

      Via command line options

      Execute the following command:

      -
      sudo su smp -c "smp-server init -h"
      +
      sudo su smp -c "smp-server init -h"
       
       ...
       Available options:
      @@ -1032,7 +1032,7 @@ Available options:
                                  ED25519, ED448 (default: ED448)
         --ip IP                  Server IP address, used as Common Name for TLS online
                                  certificate if FQDN is not supplied
      -                           (default: "127.0.0.1")
      +                           (default: "127.0.0.1")
         -n,--fqdn FQDN           Server FQDN used as Common Name for TLS online
                                  certificate
         --no-password            Allow creating new queues without password
      @@ -1042,10 +1042,10 @@ Available options:
         -h,--help                Show this help text
       

      You should determine which flags are needed for your use-case and then execute smp-server init with -y flag for non-interactive initialization:

      -
      sudo su smp -c "smp-server init -y -<your flag> <your option>"
      +
      sudo su smp -c "smp-server init -y -<your flag> <your option>"
       

      For example, run:

      -
      sudo su smp -c "smp-server init -y -l --ip 192.168.1.5 --password test"
      +
      sudo su smp -c "smp-server init -y -l --ip 192.168.1.5 --password test"
       

      to initialize your smp-server configuration with:

        @@ -1202,7 +1202,7 @@ static_path: /var/opt/simplex/www

        Destroy the container. All relevant configuration files and keys will be available at $HOME/simplex/smp/config.

      • -

        Move your CA private key (ca.key) to the safe place. For further explanation, see the next section: Server security: Private keys.

        +

        Move your CA private key (ca.key) to the safe place. For further explanation, see the next section: Server security: Private keys.

      • Copy all other configuration files except the CA key to the server:

        @@ -1229,7 +1229,7 @@ static_path: /var/opt/simplex/www
    3. -

      Delete the CA key from the server. Please make sure you've saved you CA key somewhere safe. Otherwise, you would lose the ability to rotate the online certificate:

      +

      Delete the CA key from the server. Please make sure you've saved you CA key somewhere safe. Otherwise, you would lose the ability to rotate the online certificate:

      rm /etc/opt/simplex/ca.key
       
    4. @@ -1293,7 +1293,7 @@ $HOME/simplex/smp/config/ca.key
    5. Connect to the server via SSH and restart the service:

      -
      ssh <server_user>@<server_address> "systemctl restart smp-server"
      +
      ssh <server_user>@<server_address> "systemctl restart smp-server"
       
    6. @@ -1310,9 +1310,9 @@ $HOME/simplex/smp/config/ca.key
      • Configure offical Tor PPA repository:

        -
        CODENAME="$(lsb_release -c | awk '{print $2}')"
        -echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main
        -deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main" > /etc/apt/sources.list.d/tor.list
        +
        CODENAME="$(lsb_release -c | awk '{print $2}')"
        +echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main
        +deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main" > /etc/apt/sources.list.d/tor.list
         
      • @@ -1376,7 +1376,7 @@ HiddenServicePort 5223 localhost:5223

        SMP-server versions starting from v5.8.0-beta.0 can be configured to PROXY smp servers available exclusively through Tor network to be accessible to the clients that do not use Tor. Run the following commands as root user.

        1. -

          Install tor as described in the previous section.

          +

          Install tor as described in the previous section.

        2. Execute the following command to creatae a new Tor daemon instance:

          @@ -1402,7 +1402,7 @@ SocksPort 9050
        3. -

          After server initialization, configure the PROXY section like so:

          +

          After server initialization, configure the PROXY section like so:

          ...
           [PROXY]
           socks_proxy: 127.0.0.1:9050
          @@ -1502,7 +1502,7 @@ hosting_country: <HOSTING_PROVIDER_LOCATION>
           
        4. -

          Upgrade your smp-server to latest version - Updating your smp server

          +

          Upgrade your smp-server to latest version - Updating your smp server

        5. Access the webpage you've deployed from your browser. You should see the smp-server information that you've provided in your ini file.

          @@ -1642,7 +1642,7 @@ Nov 23 19:23:21 5588ab759e80 smp-server[30878]: creating new queues requires pas Active queues in a month -Messages with "notification" flag +Messages with "notification" flag @@ -1897,8 +1897,8 @@ allow_local_mode = true
          • In the side menu, click the Configuration tab (cog icon)
          • Click Add data source in the top-right corner of the Data Sources tab
          • -
          • Enter "CSV" in the search box to find the CSV data source
          • -
          • Click the search result that says "CSV"
          • +
          • Enter "CSV" in the search box to find the CSV data source
          • +
          • Click the search result that says "CSV"
          • In URL, enter a file that points to CSV content
            @@ -1934,7 +1934,7 @@ allow_local_mode = true
          1. Docker container

              -
            1. Stop and remove the container:
              docker rm $(docker stop $(docker ps -a -q --filter ancestor=simplexchat/smp-server --format="\{\{.ID\}\}"))
              +
            2. Stop and remove the container:
              docker rm $(docker stop $(docker ps -a -q --filter ancestor=simplexchat/smp-server --format="\{\{.ID\}\}"))
               
            3. Pull latest image:
              docker pull simplexchat/smp-server:latest
              @@ -1968,18 +1968,8 @@ allow_local_mode = true
               

              To configure the app to use your messaging server copy it's full address, including password, and add it to the app. You have an option to use your server together with preset servers or without them - you can remove or disable them.

              It is also possible to share the address of your server with your friends by letting them scan QR code from server settings - it will include server password, so they will be able to receive messages via your server as well.

              Please note: you need SMP server version 4.0 to have password support. If you already have a deployed server, you can add password by adding it to server INI file.

              -

                   

              -
    +

         

    +
    @@ -2109,7 +2099,6 @@ allow_local_mode = true - diff --git a/docs/simplex.html b/docs/simplex.html index 928b68325c..bb986ffff7 100644 --- a/docs/simplex.html +++ b/docs/simplex.html @@ -858,7 +858,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Updated 07.02.2023 | Languages: EN, FR, CZ, PL |

    +

    | Updated 07.02.2023 | Languages: EN, FR, CZ, PL |

    SimpleX platform - motivation and comparison

    Problems

    Existing chat platforms and protocols have some or all of the following problems:

    @@ -957,7 +957,7 @@ window.addEventListener('scroll',changeHeaderBg);

    The proposed design, unlike most P2P networks, has no global user identifiers of any kind, even temporary.

  • -

    P2P itself does not solve MITM attack problem, and most existing solutions do not use out-of-band messages for the initial Key exchange. The proposed design uses out-of-band messages or, in some cases, pre-existing secure and trusted connections for the initial Key exchange.

    +

    P2P itself does not solve MITM attack problem, and most existing solutions do not use out-of-band messages for the initial key exchange. The proposed design uses out-of-band messages or, in some cases, pre-existing secure and trusted connections for the initial key exchange.

  • P2P implementations can be blocked by some Internet providers (like BitTorrent). The proposed design is transport agnostic - it can work over standard web protocols, and the servers can be deployed on the same domains as the websites.

    @@ -969,17 +969,7 @@ window.addEventListener('scroll',changeHeaderBg);

    P2P networks are likely to be vulnerable to DRDoS attack. In the proposed design clients only relay traffic from known trusted connection and cannot be used to reflect and amplify the traffic in the whole network.

  • -

    Key exchange

    Also known as key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for end-to-end encryption to work.

    MITM attack

    The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

    +
    @@ -1109,7 +1099,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/themes.html b/docs/themes.html index 2bf29b9848..512b5c92ec 100644 --- a/docs/themes.html +++ b/docs/themes.html @@ -735,7 +735,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    App color themes

    +

    App color themes

    Mobile apps allow to configure, export and import color themes. Currently this is only supported in Android app.

    You can contribute your themes to the repository by creating a pull request.

    How to contribute a theme

    @@ -744,7 +744,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Once you have configured your theme in the app, export it to a file and give it a descriptive name – e.g., example.theme

  • -

    Export your app database, and import a sample chat database - the passphrase is passphrase.

    +

    Export your app database, and import a sample chat database - the passphrase is passphrase.

  • Make three screenshots - the list of conversations with opened profile picker, conversation and privacy settings.

    @@ -758,19 +758,9 @@ window.addEventListener('scroll',changeHeaderBg);

    Color themes

    SimpleX - included dark blue theme

    -

    Download SimpleX theme

    -

            

    -
  • +

    Download SimpleX theme

    +

            

    +
    @@ -900,7 +890,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/translations.html b/docs/translations.html index 7f694427ba..4071a09b61 100644 --- a/docs/translations.html +++ b/docs/translations.html @@ -858,11 +858,11 @@ window.addEventListener('scroll',changeHeaderBg); -

    | 19.03.2023 | EN, CZ, FR, PL |

    +

    | 19.03.2023 | EN, CZ, FR, PL |

    Contributing translations to SimpleX Chat

    Huge thanks for your interest in translating SimpleX Chat - it helps a lot to make it accessible to a wider range of users, and we really appreciate your help.

    It requires a substantial time investment - most people underestimate it initially - and ongoing maintenance as we develop the application.

    -

    This document is created to speed up this process, and share some important "gotchas" we've discovered while working with Weblate - the platform we use for interface translations.

    +

    This document is created to speed up this process, and share some important "gotchas" we've discovered while working with Weblate - the platform we use for interface translations.

    Before you start translation

    1. @@ -872,17 +872,17 @@ window.addEventListener('scroll',changeHeaderBg);

      Before you start the translation there is a simple contributor license agreement to sign via Weblate - this is to avoid any conflicts around IP rights. The copy of this agreement is also available here.

    2. -

      We can also add you to the group of translators for any questions and updates - please connect to the developers via chat (when you just install the app or later, via "Send questions and ideas" in the app settings).

      +

      We can also add you to the group of translators for any questions and updates - please connect to the developers via chat (when you just install the app or later, via "Send questions and ideas" in the app settings).

    Translation process

    It's easier to translate Android app first, and then iOS app, as Android app strings are set up as a glossary for iOS.

    The steps are:

      -
    1. You translate Android app in Weblate.
    2. -
    3. We review and release Android app translations.
    4. +
    5. You translate Android app in Weblate.
    6. +
    7. We review and release Android app translations.
    8. You review translations in the app and correct any mistakes.
    9. -
    10. You translate iOS app in Weblate
    11. +
    12. You translate iOS app in Weblate
    13. We review and release iOS app translations.

    Translating Android app

    @@ -900,7 +900,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Weblate also has automatic suggestions that can speed up the process. Sometimes they can be used as is, sometimes they need some editing - click to use them in translations.

  • -

    Also, please note the string Key (it's on the right of the screen) - it may give you a hint about what this string means when unclear. E.g., the key for "Additional accent" (not clear) is "color_primary_variant" (a bit more clear that it refers to a color used in the app).

    +

    Also, please note the string Key (it's on the right of the screen) - it may give you a hint about what this string means when unclear. E.g., the key for "Additional accent" (not clear) is "color_primary_variant" (a bit more clear that it refers to a color used in the app).

  • Once all strings in Android app are translated, please review it to ensure consistent style and language, so that the same words are consistently used for similar user actions, same as in English. Sometimes, you will have to use different words in cases when English has just one, please try to use these choices consistently in similar contexts, to make it easier for the end users.

    @@ -931,23 +931,23 @@ window.addEventListener('scroll',changeHeaderBg);

    Common translation mistakes

    1. -

      The word "chat" is used in several meanings, depending on the context. It can mean either "SimpleX Chat app" (e.g. in Start/stop chat) or "a single conversation". Please ask when it is not clear, and we will be adding more translation notes.

      +

      The word "chat" is used in several meanings, depending on the context. It can mean either "SimpleX Chat app" (e.g. in Start/stop chat) or "a single conversation". Please ask when it is not clear, and we will be adding more translation notes.

    2. Please use plural and singular as in the original strings, this may change the meaning otherwise. E.g., some settings apply to all contacts, and some to just one contact, it will be confusing if you use plural in both cases.

    3. -

      The app uses "Passcode" to provide access, not "password" - in many languages it is translated as "access code". The database uses "Passphrase" - in many languages it is translated as "Password". Please use these words consistently.

      +

      The app uses "Passcode" to provide access, not "password" - in many languages it is translated as "access code". The database uses "Passphrase" - in many languages it is translated as "Password". Please use these words consistently.

    4. -

      Member "role". This word refers to the set of permissions the user has, it can be "owner", "admin", "member" or "observer" (the lowest permission that only allows to read messages and add message reactions). Translating it as "identity" or as "function" may be incorrect.

      +

      Member "role". This word refers to the set of permissions the user has, it can be "owner", "admin", "member" or "observer" (the lowest permission that only allows to read messages and add message reactions). Translating it as "identity" or as "function" may be incorrect.

    5. -

      "Moderate" / "moderated". These words means "to delete message of another member" and "deleted by admin" respectively. This feature is used when a member sends the message that is not appropriate for the group. Many languages have similar words.

      +

      "Moderate" / "moderated". These words means "to delete message of another member" and "deleted by admin" respectively. This feature is used when a member sends the message that is not appropriate for the group. Many languages have similar words.

    How we review the translations

    -

    To validate the correctness of the translations we review reverse translations by browsing Weblate pages in Google Chrome browser in "Translate to English" mode. E.g., to review the German translations of Android interface somebody from our team scrolled through these 68 pages.

    +

    To validate the correctness of the translations we review reverse translations by browsing Weblate pages in Google Chrome browser in "Translate to English" mode. E.g., to review the German translations of Android interface somebody from our team scrolled through these 68 pages.

    We are not looking for reverse translation being exactly the same as the original, it is rarely the case, only that it is generally correct.

    You would make the review much easier if you could review it in advance in the same way, and comment on any cases where reverse translations are completely different (there may be valid cases for that).

    What is next

    @@ -964,17 +964,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Thank you very much again for helping us grow SimpleX Chat!

    Evgeny, SimpleX Chat founder.

    -
  • +
    @@ -1104,7 +1094,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/docs/webrtc.html b/docs/webrtc.html index 91b8d3823f..486c191053 100644 --- a/docs/webrtc.html +++ b/docs/webrtc.html @@ -858,7 +858,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Updated 31.01.2023 | Languages: EN, FR, CZ, PL |

    +

    | Updated 31.01.2023 | Languages: EN, FR, CZ, PL |

    Using custom WebRTC ICE servers in SimpleX Chat

    Deploy STUN/TURN server

    For this guide, we'll be using the most featureful and battle-tested STUN/TURN server implementation – coturn and Ubuntu 20.04 LTS Linux distribution.

    @@ -920,7 +920,7 @@ no-tlsv1_2
  • Optionally, if using ufw firewall, open relevant ports:
    • -
    • 3478 – "plain" TURN/STUN;
    • +
    • 3478 – "plain" TURN/STUN;
    • 5349 – TURN/STUN over TLS;
    • 443 – TURN/STUN over TLS, which can bypass firewalls;
    • 49152:65535 – port range that Coturn will use by default for TURN relay.
    • @@ -954,7 +954,7 @@ sudo firewall-cmd --reload
      stun:stun.example.com:5349
       turn:username:password@turn.example.com:5349
       
      -

      This is it - you now can make audio and video calls via your own server, without sharing any data with our servers (other than the Key exchange with your contact in E2E encrypted messages).

      +

      This is it - you now can make audio and video calls via your own server, without sharing any data with our servers (other than the key exchange with your contact in E2E encrypted messages).

      Troubleshoot

      • @@ -1001,17 +1001,7 @@ Connection to <your_ip_or_domain> 5349 port [tcp/*] succeeded!
      -

      Key exchange

      Also known as key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for end-to-end encryption to work.

    +
    @@ -1141,7 +1131,6 @@ Connection to <your_ip_or_domain> 5349 port [tcp/*] succeeded! - diff --git a/docs/xftp-server.html b/docs/xftp-server.html index 66e9ec0582..59ab663f96 100644 --- a/docs/xftp-server.html +++ b/docs/xftp-server.html @@ -735,7 +735,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    Hosting your own XFTP Server

    +

    Hosting your own XFTP Server

    Overview

    XFTP is a new file transfer protocol focussed on meta-data protection - it is based on the same principles as SimpleX Messaging Protocol used in SimpleX Chat messenger:

      @@ -811,7 +811,7 @@ User=xftp Group=xftp Type=simple ExecStart=/usr/local/bin/xftp-server start +RTS -N -RTS -ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex-xftp/file-server-store.log" ] && cp "/var/opt/simplex-xftp/file-server-store.log" "/var/opt/simplex-xftp/file-server-store.log.$(date +'%FT%T')"' +ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex-xftp/file-server-store.log" ] && cp "/var/opt/simplex-xftp/file-server-store.log" "/var/opt/simplex-xftp/file-server-store.log.$(date +'%FT%T')"' LimitNOFILE=65535 KillSignal=SIGINT TimeoutStopSec=infinity @@ -832,9 +832,9 @@ WantedBy=multi-user.target
      • Configure offical Tor PPA repository:

        -
        CODENAME="$(lsb_release -c | awk '{print $2}')"
        -echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main
        -deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main" > /etc/apt/sources.list.d/tor.list
        +
        CODENAME="$(lsb_release -c | awk '{print $2}')"
        +echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main
        +deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main" > /etc/apt/sources.list.d/tor.list
         
      • @@ -908,9 +908,9 @@ Available commands: delete Delete configuration and log files -

        You can get further help by executing su xftp -c "xftp-server <command> -h"

        +

        You can get further help by executing su xftp -c "xftp-server <command> -h"

        After that, we need to configure xftp-server:

        -
        sudo su xftp -c "xftp-server init -h"
        +
        sudo su xftp -c "xftp-server init -h"
         
         ...
         Available options:
        @@ -919,7 +919,7 @@ Available options:
                                    ED25519, ED448 (default: ED448)
           --ip IP                  Server IP address, used as Common Name for TLS online
                                    certificate if FQDN is not supplied
        -                           (default: "127.0.0.1")
        +                           (default: "127.0.0.1")
           -n,--fqdn FQDN           Server FQDN used as Common Name for TLS online
                                    certificate
           -p,--path PATH           Path to the directory to store files
        @@ -927,10 +927,10 @@ Available options:
           -h,--help                Show this help text
         

        You should determine which flags are needed for your use-case and then execute xftp-server init:

        -
        sudo su xftp -c "xftp-server init -<your flag> <your option>"
        +
        sudo su xftp -c "xftp-server init -<your flag> <your option>"
         

        For example, run:

        -
        sudo su xftp -c "xftp-server init -l --ip 192.168.1.5 -q '20gb' -p /srv/xftp/"
        +
        sudo su xftp -c "xftp-server init -l --ip 192.168.1.5 -q '20gb' -p /srv/xftp/"
         

        to initialize your xftp-server configuration with:

          @@ -943,7 +943,7 @@ Available options:
          1. Open configuration with:

            -
            sudo su xftp -c "vim /etc/opt/simplex-xftp/file-server.ini"
            +
            sudo su xftp -c "vim /etc/opt/simplex-xftp/file-server.ini"
             
          2. @@ -1105,8 +1105,8 @@ allow_local_mode = true
            • In the side menu, click the Configuration tab (cog icon)
            • Click Add data source in the top-right corner of the Data Sources tab
            • -
            • Enter "CSV" in the search box to find the CSV data source
            • -
            • Click the search result that says "CSV"
            • +
            • Enter "CSV" in the search box to find the CSV data source
            • +
            • Click the search result that says "CSV"
            • In URL, enter a file that points to CSV content
          3. @@ -1144,7 +1144,7 @@ allow_local_mode = true
          4. Docker container

              -
            1. Stop and remove the container:
              docker rm $(docker stop $(docker ps -a -q --filter ancestor=simplexchat/xftp-server --format="\{\{.ID\}\}"))
              +
            2. Stop and remove the container:
              docker rm $(docker stop $(docker ps -a -q --filter ancestor=simplexchat/xftp-server --format="\{\{.ID\}\}"))
               
            3. Pull latest image:
              docker pull simplexchat/xftp-server:latest
              @@ -1176,18 +1176,8 @@ allow_local_mode = true
               

        Configuring the app to use the server

        -

        Please see: SMP Server: Configuring the app to use the server.

        -
    +

    Please see: SMP Server: Configuring the app to use the server.

    +
    @@ -1317,7 +1307,6 @@ allow_local_mode = true - diff --git a/downloads/index.html b/downloads/index.html index 48c233ad07..927d8fb5fb 100644 --- a/downloads/index.html +++ b/downloads/index.html @@ -735,17 +735,17 @@ window.addEventListener('scroll',changeHeaderBg); -

    | Updated 23.03.2024 | Languages: EN |

    +

    | Updated 23.03.2024 | Languages: EN |

    Download SimpleX apps

    The latest stable version is v5.8.

    You can get the latest beta releases from GitHub.

    Desktop app

    -desktop app +desktop app

    You can link your mobile device with desktop to use the same profile remotely, but this is only possible when both devices are connected to the same local network.

    Linux: AppImage (most Linux distros), Ubuntu 20.04 (and Debian-based distros), Ubuntu 22.04.

    Mac: aarch64 (Apple Silicon), x86_64 (Intel).

    @@ -756,19 +756,9 @@ window.addEventListener('scroll',changeHeaderBg);

    Terminal (console) app

    See Using terminal app.

    Linux: Ubuntu 20.04, Ubuntu 22.04.

    -

    Mac x86_64, aarch64 - compile from source.

    +

    Mac x86_64, aarch64 - compile from source.

    Windows: x86_64.

    -
    +
    @@ -898,7 +888,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/faq/index.html b/faq/index.html index 020238f956..a34606fb44 100644 --- a/faq/index.html +++ b/faq/index.html @@ -843,41 +843,41 @@ window.addEventListener('scroll',changeHeaderBg); -

    Frequently Asked Questions

    -

    How to use it

    +

    Frequently Asked Questions

    +

    How to use it

    -

    Troubleshooting

    +

    Troubleshooting

    -

    Privacy and security

    +

    Privacy and security

    -

    Funding and business model

    +

    Funding and business model

    How to use it

    I have nobody to chat with! Where can I find any groups?

    @@ -888,7 +888,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Of course! While doing so, you are using a state-of-the-art protocol that greatly reduces metadata leaks. Please read more about it: XFTP Protocol.

    What’s incognito profile?

    This feature is unique to SimpleX Chat – it is independent from chat profiles.

    -

    When "Incognito Mode” is turned on, your currently chosen profile name and image are hidden from your new contacts. It allows anonymous connections with other people without any shared data – when you make new connections or join groups via a link a new random profile name will be generated for each connection.

    +

    When "Incognito Mode” is turned on, your currently chosen profile name and image are hidden from your new contacts. It allows anonymous connections with other people without any shared data – when you make new connections or join groups via a link a new random profile name will be generated for each connection.

    How do invitations work?

    It is quite a complex process, but fortunately all of this happens in the background, so it's simply to use.

    Whenever somebody connects to you via your address, they basically ask your client whether they want to establish connection. After that, you can either agree or disagree.
    @@ -902,11 +902,11 @@ If interested, please read more: A

    -

    Also see

    +

    Also see

    Can I use the same profile on desktop? Do messages sync cross-platform?

    -

    You can use your profile from mobile device on desktop. However, to do so you need to be on the same network, both on your mobile and desktop. More about it: Release info.

    +

    You can use your profile from mobile device on desktop. However, to do so you need to be on the same network, both on your mobile and desktop. More about it: Release info.

    Troubleshooting

    I do not receive messages or message notifications

    There may be several reasons messages are not delivered to you from your contact:

    @@ -931,7 +931,7 @@ If interested, please read more: A

    You may not have the second tick on your sent messages for these reasons:

    I see image preview but cannot open the image

    @@ -942,11 +942,11 @@ If interested, please read more: A
  • file expired and can no longer be received. Files can be received only for 2 days after they were sent, after that they won't be available and will show X in the top right corner.
  • I cannot play a voice message

    -

    This can happen for similar reasons as for images.

    +

    This can happen for similar reasons as for images.

    Please check your network settings and make sure you use the latest version of the app.

    Please report such issues if you use v5.7 or newer.

    Audio or video calls do not connect

    -

    App uses WebRTC for calls. Please check that you can connect to the servers configured in the app: stun.simplex.im and turn.simplex.im - see troubleshooting WebRTC.

    +

    App uses WebRTC for calls. Please check that you can connect to the servers configured in the app: stun.simplex.im and turn.simplex.im - see troubleshooting WebRTC.

    If you can connect to the server, please report this issue to us privately, including the following information:

    • @@ -961,16 +961,16 @@ If interested, please read more: A

    Thank you for helping us debug and improve calls.

    Audio or video calls without e2e encryption

    -

    During the call, the app indicates whether or not the call has End-to-end encryption.

    +

    During the call, the app indicates whether or not the call has end-to-end encryption.

    If one of the call parties uses Android (or desktop) app, the call would use Android system webview (or browser). Some older systems do not support media stream encryption, in which case the call will connect without it.

    To determine whether it is the limitation of your, your contact's or both devices:

    • if some of your calls have e2e encryption but some don't, then it's certainly the old webview version or browser of your contacts - please ask them to upgrade.
    • -
    • if you are not sure, you can check at what point "no e2e encryption" appears: +
    • if you are not sure, you can check at what point "no e2e encryption" appears:
      • if it is shown when the call rings on your device, then your contact's device does not support call encryption.
      • if it is shown on your screen as soon as you start the call, then your device does not support call encryption.
      • -
      • if in the beginning of the call your device shows "e2e encryption" but when your contact accepts the call it changes to "no e2e encryption", then it is only your contact's device that does not support it.
      • +
      • if in the beginning of the call your device shows "e2e encryption" but when your contact accepts the call it changes to "no e2e encryption", then it is only your contact's device that does not support it.
    @@ -981,10 +981,10 @@ If interested, please read more:
    A

    Once the connection is established you don't need to be online at the same time to send messages.

    Privacy and security

    Does SimpleX support post quantum cryptography?

    -

    Yes! Please read more about quantum resistant encryption is added to SimpleX Chat and about various properties of End-to-end encryption in this post.

    +

    Yes! Please read more about quantum resistant encryption is added to SimpleX Chat and about various properties of end-to-end encryption in this post.

    What user data can be provided on request?

    Our objective is to consistently ensure that no user data and absolute minimum of the metadata required for the network to function is available for disclosure by any infrastructure operators, under any circumstances.

    -

    Please see our Privacy Policy and Transparency Reports.

    +

    Please see our Privacy Policy and Transparency Reports.

    Does SimpleX protect my IP address?

    Not fully yet, it is a work in progress. While your device does not connect to your contacts' devices directly, as it happens in p2p networks, your contacts can self-host their relays, and you will connect to them when sending messages. A modified relay can record IP addresses connecting devices, as is the case with any other server, including Tor entry nodes, VPN providers, etc. - IP address is fundamental to Internet functioning, and there will always be some server that can observe your IP address.

    We are currently working on the next version of message routing protocol that will protect your IP address from the relays chosen by your contacts, so it will only be visible to the relays chosen by you. Read about technical details here: RFC.

    @@ -992,7 +992,7 @@ If interested, please read more: A

    Of course! Please check these tutorials: SMP server and XFTP server.

    Funding and business model

    How are you funded?

    -

    SimpleX Chat Ltd is funded by private investors and venture capital. As an open-source project, it is also being generously supported by donations as well. Read more details.

    +

    SimpleX Chat Ltd is funded by private investors and venture capital. As an open-source project, it is also being generously supported by donations as well. Read more details.

    Why VCs?

    Here are some reflections on VC funding being a necessity for a project at this scale, as well as sustainability and profitability for longtime operations: https://www.poberezkin.com/posts/2023-10-31-why-privacy-impossible-without-venture-funding.html

    And another perspective from a team member on the delicate balance of venture-backed and nonprofit structures, and the plans for the SimpleX network protocols to evolve under the stewardship of nonprofit entities in various jurisdictions, so that its continued evolution aligns more closely with the vision of community-driven, independent and transparent governance:
    @@ -1001,17 +1001,7 @@ If interested, please read more: A

    We are focusing on product-market fit, and as such the business model is still a work in progress. However, the app will have a freemium model with extra features or capabilities for paid users (taking into consideration a potential formula like 5% paying $5/month is $3/user/year - ~90% gross profit margin).

    The other income stream would be via business services, for entities needing direct and customized support to integrate with the SimpleX protocol or related resources. There will also be a revenue-sharing model from customers to network operators, to provide an incentive for them to continue running nodes, which will increase decentralization and reliability of the network.

    Non-exploitative commercial models with fully open source code are not easy to achieve, and we’re committed to finding the best possible fit for our context. Everything will be fully communicated as this plan progresses.

    -

    End-to-end encryption

    A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    +
    @@ -1141,7 +1131,6 @@ If interested, please read more: A - diff --git a/feed.atom b/feed.atom index ff23e237f7..d5b10f0669 100644 --- a/feed.atom +++ b/feed.atom @@ -78,10 +78,10 @@ <h3 id="chat-groups" tabindex="-1">Chat groups</h3> <p>To create a group use the <code>/g &lt;group&gt;</code> command. You can then invite contacts to the group by entering the <code>/a &lt;group&gt; &lt;name&gt;</code> command. Your contact(s) will need to use the <code>/j accept</code> command to accept the invitation to the group. To send messages to the group, simply enter <code>#&lt;group&gt; &lt;message&gt;</code>.</p> <p><strong>Please note:</strong> Groups are not stored on any server; they are maintained as a list of members in the app database. Sending a message to the group sends a message to each member of the group.</p> -<p><img src="https://simplex.chat/images/groups.gif" alt="simplex-chat" /></p> +<p><img src="https://simplex.chat/blog/images/groups.gif" alt="simplex-chat" /></p> <h3 id="file-transfer" tabindex="-1">File transfer</h3> <p>Sharing files is simple! To send a file to a contact, use the <code>/f @&lt;contact&gt; &lt;file_path&gt;</code> command. The recipient will have to accept before the file is sent.</p> -<p><img src="https://simplex.chat/images/files.gif" alt="simplex-chat" /></p> +<p><img src="https://simplex.chat/blog/images/files.gif" alt="simplex-chat" /></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> @@ -464,13 +464,13 @@ <p><strong>Published:</strong> Jul 11, 2022</p> <h2 id="new-in-version-3" tabindex="-1">New in version 3</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">instant notifications for iOS</a></li> -<li><a href="https://simplex.chat/blog/undefined">end-to-end encrypted audio/video calls</a></li> -<li><a href="https://simplex.chat/blog/undefined">database export and import</a></li> -<li><a href="https://simplex.chat/blog/undefined">protocol privacy and performance improvements</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#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#end-to-end-encrypted-audiovideo-calls">end-to-end encrypted audio/video calls</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">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>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> @@ -500,7 +500,7 @@ <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">since v1</a>, allowing us to evolve the protocols without any disruption to the users.</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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter. <a href="https://github.com/simplex-chat/simplex-chat">SimpleX Chat</a> is our first application, a messaging application built on the SimpleX platform.</p> <h3 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> @@ -537,10 +537,10 @@ <p><strong>Published:</strong> Jul 23, 2022</p> <h2 id="whats-new" tabindex="-1">What's new</h2> <ul> -<li>terminal app: <a href="https://simplex.chat/blog/undefined">access to messaging servers via SOCKS5 proxy</a> (e.g., Tor).</li> -<li>mobile apps: <a href="https://simplex.chat/blog/undefined">join and leave chat groups</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">optimized battery and traffic usage - up to 90x reduction!</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">two docker configurations for self-hosted SMP servers</a>.</li> +<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> <img src="https://simplex.chat/blog/images/20220723-tor.jpg" width="480" /> @@ -575,7 +575,7 @@ <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter. <a href="https://github.com/simplex-chat/simplex-chat">SimpleX Chat</a> is our first application, a messaging application built on the SimpleX platform.</p> <h3 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">wrote previously</a> why it is bad for the users' privacy to have any identifiers, even random numbers, associated with their profiles.</p> +<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> @@ -626,12 +626,12 @@ <p><strong>Published:</strong> Aug 8, 2022</p> <h2 id="whats-new" tabindex="-1">What's new</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">secret chat groups</a>!</li> -<li><a href="https://simplex.chat/blog/undefined">access to messaging servers via Tor</a></li> -<li><a href="https://simplex.chat/blog/undefined">advanced network settings</a></li> -<li><a href="https://simplex.chat/blog/undefined">published chat protocol</a></li> -<li><a href="https://simplex.chat/blog/undefined">new app icons</a></li> -<li><a href="https://simplex.chat/blog/undefined">other changes since v3</a>: +<li><a href="https://simplex.chat/blog/20220808-simplex-chat-v3.1-chat-groups.html#secret-chat-groups">secret chat groups</a>!</li> +<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#advanced-network-settings">advanced network settings</a></li> +<li><a href="https://simplex.chat/blog/20220808-simplex-chat-v3.1-chat-groups.html#published-chat-protocol">published chat protocol</a></li> +<li><a href="https://simplex.chat/blog/20220808-simplex-chat-v3.1-chat-groups.html#new-app-icons">new app icons</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> @@ -679,9 +679,9 @@ <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">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">Technical details and limitations</a>.</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> @@ -714,11 +714,11 @@ <p><strong>Published:</strong> Sep 1, 2022</p> <h2 id="whats-new" tabindex="-1">What's new</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">Incognito mode</a></li> -<li><a href="https://simplex.chat/blog/undefined">assign names to your contacts</a></li> -<li><a href="https://simplex.chat/blog/undefined">use .onion server addresses with Tor</a></li> -<li><a href="https://simplex.chat/blog/undefined">endless scrolling and search in chats</a></li> -<li><a href="https://simplex.chat/blog/undefined">choose accent color and dark mode</a></li> +<li><a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#incognito-mode">Incognito mode</a></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> @@ -727,7 +727,7 @@ </ul> </li> </ul> -<p><a href="https://simplex.chat/blog/undefined">Implementation audit is arranged for October</a>!</p> +<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> <h3 id="incognito-mode" tabindex="-1">Incognito mode</h3> <p><img src="https://simplex.chat/blog/images/20220901-incognito1.png" width="330" /> <img src="https://simplex.chat/blog/images/20220901-incognito2.png" width="330" /> <img src="https://simplex.chat/blog/images/20220901-incognito3.png" width="330" /></p> <p><em>SimpleX is already private, so why do we need an incognito mode</em>, you may ask.</p> @@ -758,9 +758,9 @@ <p>And you can choose dark or light mode independently of the system settings.</p> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">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">Technical details and limitations</a>.</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> @@ -793,24 +793,24 @@ <p><strong>Published:</strong> Sep 28, 2022</p> <h2 id="whats-new-in-v4" tabindex="-1">What's new in v4</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">encrypted local chat database</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">support for self-hosted WebRTC ICE servers</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">improved stability of creating new connections: more reliable groups, files and contacts</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">deleting files and media</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">For developers - TypeScript SDK for integrating with SimpleX Chat</a> (e.g., chat bots or chat assistants).</li> +<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">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">v3.1</a> and <a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html">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">v3.2</a> announcement).</li> +<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/undefined">Implementation audit is arranged for October</a>!</p> +<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> <h3 id="local-chat-database-encryption" tabindex="-1">Local chat database encryption</h3> <img src="https://simplex.chat/blog/images/20220928-passphrase.png" width="330" /> <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> @@ -819,7 +819,7 @@ <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> <h3 id="self-hosted-webrtc-ice-servers" tabindex="-1">Self-hosted WebRTC ICE servers</h3> <img src="https://simplex.chat/blog/images/20220928-ice-servers.png" width="330" /> -<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">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>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> @@ -859,9 +859,9 @@ <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">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">Technical details and limitations</a>.</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> @@ -990,9 +990,9 @@ <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">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">Technical details and limitations</a>.</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> @@ -1034,10 +1034,10 @@ </ul> <h2 id="whats-new-in-v43" tabindex="-1">What's new in v4.3</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">instant voice messages!</a></li> -<li><a href="https://simplex.chat/blog/undefined">irreversible deletion of sent messages for all recipients</a></li> -<li><a href="https://simplex.chat/blog/undefined">improved SMP server configuration and support for server passwords</a></li> -<li><a href="https://simplex.chat/blog/undefined">privacy and security improvements</a>: +<li><a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html#instant-voice-messages">instant voice messages!</a></li> +<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> @@ -1085,9 +1085,9 @@ <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">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">Technical details and limitations</a>.</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> @@ -1123,16 +1123,16 @@ <p><strong>Published:</strong> Jan 3, 2023</p> <h2 id="whats-new-in-v44" tabindex="-1">What's new in v4.4</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">disappearing messages</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">&quot;live&quot; messages</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">connection security verification</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">animated images and stickers</a> – now on iOS too.</li> +<li><a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#disappearing-messages">disappearing messages</a>.</li> +<li><a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#live-messages">&quot;live&quot; messages</a>.</li> +<li><a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#connection-security-verification">connection security verification</a>.</li> +<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/undefined">French language interface</a>, thanks to the users' community and Weblate!</p> +<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> <h3 id="disappearing-messages" tabindex="-1">Disappearing messages</h3> <p><img src="https://simplex.chat/blog/images/20230103-disappearing1.png" width="288" />    <img src="https://simplex.chat/blog/images/20230103-disappearing2.png" width="288" /></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">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>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> <h3 id="live-messages" tabindex="-1">&quot;Live&quot; messages</h3> <img src="https://simplex.chat/blog/images/20230103-live.png" width="288" /> @@ -1152,8 +1152,8 @@ <p>Please get in touch if you want to translate the interface into your language!</p> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -1190,13 +1190,13 @@ <p><strong>Published:</strong> Feb 4, 2023</p> <h2 id="whats-new-in-v45" tabindex="-1">What's new in v4.5</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">multiple chat profiles</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">message draft</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">transport isolation</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">reduced battery usage</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">private filenames</a>.</li> +<li><a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#multiple-chat-profiles">multiple chat profiles</a>.</li> +<li><a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#message-draft">message draft</a>.</li> +<li><a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation">transport isolation</a>.</li> +<li><a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#reduced-battery-usage">reduced battery usage</a>.</li> +<li><a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#private-filenames">private filenames</a>.</li> </ul> -<p>Also, we added <a href="https://simplex.chat/blog/undefined">Italian interface</a>, thanks to the users' community and Weblate!</p> +<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> <h3 id="multiple-chat-profiles" tabindex="-1">Multiple chat profiles</h3> <p><img src="https://simplex.chat/blog/images/20230204-profiles1.png" width="288" />    <img src="https://simplex.chat/blog/images/20230204-profiles2.png" width="288" /></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> @@ -1242,8 +1242,8 @@ <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -1271,11 +1271,11 @@ <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/undefined">Quick start: how to send a file using XFTP CLI</a></li> -<li><a href="https://simplex.chat/blog/undefined">What's the problem</a></li> -<li><a href="https://simplex.chat/blog/undefined">Why didn't we just use some existing solution?</a></li> -<li><a href="https://simplex.chat/blog/undefined">What is XFTP and how does it work?</a></li> -<li><a href="https://simplex.chat/blog/undefined">What is next?</a></li> +<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> @@ -1355,8 +1355,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -1385,15 +1385,15 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> Mar 28, 2023</p> <h2 id="whats-new-in-v46" tabindex="-1">What's new in v4.6</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">ARMv7a and Android 8+ support</a></li> -<li><a href="https://simplex.chat/blog/undefined">hidden chat profiles</a></li> -<li><a href="https://simplex.chat/blog/undefined">group / community moderation</a></li> -<li><a href="https://simplex.chat/blog/undefined">group welcome message</a></li> -<li><a href="https://simplex.chat/blog/undefined">improved audio/video calls</a></li> -<li><a href="https://simplex.chat/blog/undefined">reduced battery usage</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">SMP server monitoring: status bot and page</a></li> +<li><a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#armv7a-32-bit-and-android-8-support">ARMv7a and Android 8+ support</a></li> +<li><a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#hidden-chat-profiles">hidden chat profiles</a></li> +<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#group-welcome-message">group welcome message</a></li> +<li><a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#improved-audiovideo-calls">improved audio/video calls</a></li> +<li><a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#reduced-battery-usage">reduced battery usage</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/undefined">Chinese and Spanish interface languages</a>, thanks to the users' community and Weblate!</p> +<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> @@ -1462,15 +1462,15 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> Apr 22, 2023</p> <p>SimpleX Chat vision and funding:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">why is it a commercial company?</a></li> -<li><a href="https://simplex.chat/blog/undefined">how is it funded and what is the business model?</a></li> -<li><a href="https://simplex.chat/blog/undefined">what is next?</a></li> +<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/undefined">send videos and files up to 1gb</a></li> -<li><a href="https://simplex.chat/blog/undefined">app passcode independent from system authentication</a></li> -<li><a href="https://simplex.chat/blog/undefined">networking improvements</a></li> +<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> +<li><a href="https://simplex.chat/blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.html#networking-improvements">networking improvements</a></li> </ul> <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> @@ -1490,7 +1490,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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</a>, <a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html">live messages</a> and <a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html">hidden profiles</a>.</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> @@ -1548,16 +1548,16 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> May 23, 2023</p> <p>What's new in v5.1:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">message reactions</a> 🚀</li> -<li><a href="https://simplex.chat/blog/undefined">improved messages</a>: +<li><a href="https://simplex.chat/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html#message-reactions">message reactions</a> 🚀</li> +<li><a href="https://simplex.chat/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html#improved-messages">improved messages</a>: <ul> -<li><a href="https://simplex.chat/blog/undefined">voice messages up to 5 minutes</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">custom time to disappear</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">message editing history</a>.</li> +<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><a href="https://simplex.chat/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html#message-editing-history">message editing history</a>.</li> </ul> </li> -<li>new design and <a href="https://simplex.chat/blog/undefined">customizable themes</a> that you can share!<sup>*</sup></li> -<li><a href="https://simplex.chat/blog/undefined">self-destruct passcode</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> +<li><a href="https://simplex.chat/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html#self-destruct-passcode">self-destruct passcode</a></li> </ul> <p>There are lots of small improvements and fixes in this release:</p> <ul> @@ -1579,15 +1579,15 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <h2 id="improved-messages" tabindex="-1">Improved messages</h2> <h3 id="voice-messages-up-to-5-minutes-better-quality-playback-control" tabindex="-1">Voice messages: up to 5 minutes, better quality, playback control</h3> <img src="https://simplex.chat/blog/images/20230523-voice.png" width="288" class="float-to-left" /> -<p>Since <a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html">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>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><img src="https://simplex.chat/blog/images/20230523-disappearing1.png" width="288" />    <img src="https://simplex.chat/blog/images/20230523-disappearing2.png" width="288" /></p> -<p>Since <a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html">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>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> <h3 id="message-editing-history" tabindex="-1">Message editing history</h3> <img src="https://simplex.chat/blog/images/20230523-info.png" width="288" class="float-to-left" /> -<p>I <a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html">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>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> <img src="https://simplex.chat/blog/images/20230523-theme.png" width="288" class="float-to-left" /> @@ -1636,16 +1636,16 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> July 22, 2023</p> <p><strong>What's new in v5.2:</strong></p> <ul> -<li><a href="https://simplex.chat/blog/undefined">message delivery receipts</a> – with opt-out per contact!</li> -<li><a href="https://simplex.chat/blog/undefined">filter favorite and unread chats</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">more usable groups</a>: +<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#more-usable-groups">more usable groups</a>: <ul> <li>view full original replied message in info.</li> <li>share your address with your contacts and group members via your chat profile.</li> <li>search new and existing members.</li> </ul> </li> -<li><a href="https://simplex.chat/blog/undefined">stability improvements</a>: +<li><a href="https://simplex.chat/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html#stability-improvements">stability improvements</a>: <ul> <li>keep your connections working after restoring from backup.</li> <li>restart app (Android) or reconnect servers (iOS).</li> @@ -1655,28 +1655,28 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& </li> <li>other improvements: <ul> -<li><a href="https://simplex.chat/blog/undefined">better disappearing messages</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">prohibit message reactions</a>.</li> +<li><a href="https://simplex.chat/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html#better-disappearing-messages">better disappearing messages</a>.</li> +<li><a href="https://simplex.chat/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html#prohibit-message-reactions">prohibit message reactions</a>.</li> </ul> </li> </ul> <p><strong>Platform evolution:</strong></p> <ul> -<li><a href="https://simplex.chat/blog/undefined">problems of public groups</a>: +<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/undefined">what about read receipts?</a></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> <h3 id="message-delivery-receipts" tabindex="-1">Message delivery receipts</h3> <img src="https://simplex.chat/blog/images/20230722-receipts.png" width="330" class="float-to-left" /> <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">visible profiles</a>, and they can be enabled later via Privacy and Security settings.</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> <img src="https://simplex.chat/blog/images/20230722-filter.png" width="288" class="float-to-left" /> <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> @@ -1695,8 +1695,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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/docs/glossary.html">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/docs/glossary.html">man-in-the-middle attacks</a>.</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/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/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> @@ -1716,12 +1716,12 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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://github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/docs/rfcs/2023-05-02-groups.md">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> +<p>We also <a href="https://simplex.chat/blog/https%3A//github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/docs/rfcs/2023-05-02-groups.md">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://github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/docs/rfcs/2023-05-22-groups-moderation.md">described here</a>.</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/https%3A//github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/docs/rfcs/2023-05-22-groups-moderation.md">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> @@ -1762,10 +1762,10 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> September 25, 2023</p> <p><strong>What's new in v5.3:</strong></p> <ul> -<li><a href="https://simplex.chat/blog/undefined">new desktop app!</a>!</li> -<li><a href="https://simplex.chat/blog/undefined">directory service and other group improvements</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">encrypted local files and media with forward secrecy</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">simplified incognito mode</a>.</li> +<li><a href="https://simplex.chat/blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.html#multiplatform-desktop-app">new desktop app!</a>!</li> +<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> +<li><a href="https://simplex.chat/blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.html#simplified-incognito-mode">simplified incognito mode</a>.</li> </ul> <p>There are a lot of other improvements and fixes in this release:</p> <ul> @@ -1860,17 +1860,17 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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/undefined">Link mobile and desktop apps via secure quantum-resistant protocol</a>. +<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>How does it work?</li> <li>🤖 Connecting to remote CLI.</li> </ul> </li> -<li><a href="https://simplex.chat/blog/undefined">Better groups</a>. +<li><a href="https://simplex.chat/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html#better-groups">Better groups</a>. <ul> -<li><a href="https://simplex.chat/blog/undefined">Faster to join and more reliable</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">New group features</a>: +<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> @@ -1879,9 +1879,9 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& </li> </ul> </li> -<li><a href="https://simplex.chat/blog/undefined">Better calls</a>: faster to connect, with screen sharing on desktop.</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/undefined">other improvements</a> and fixes in this release:</p> +<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> @@ -1903,7 +1903,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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/docs/glossary.html">double-ratchet algorithm</a>, with <a href="https://simplex.chat/docs/glossary.html">perfect forward secrecy</a>, <a href="https://simplex.chat/docs/glossary.html">post-compromise security</a> and deniability.</p> +<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/docs/glossary.html#double-ratchet-algorithm">double-ratchet algorithm</a>, with <a href="https://simplex.chat/docs/glossary.html#forward-secrecy">perfect forward secrecy</a>, <a href="https://simplex.chat/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> @@ -1943,8 +1943,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -1971,7 +1971,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect. <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/undefined">SimpleX Chat infrastructure on Linode</a>:</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> @@ -1979,10 +1979,10 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& </ul> <p>What's new in v5.5:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">private notes</a></li> -<li><a href="https://simplex.chat/blog/undefined">group history</a></li> -<li><a href="https://simplex.chat/blog/undefined">simpler UX to connect to other users</a></li> -<li><a href="https://simplex.chat/blog/undefined">message delivery stability and other improvements</a></li> +<li><a href="https://simplex.chat/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html#private-notes">private notes</a></li> +<li><a href="https://simplex.chat/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html#group-history">group history</a></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> @@ -2029,8 +2029,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& </ul> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -2060,9 +2060,9 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>This is a major upgrade for SimpleX messaging protocols, we are really proud to present the results of the hard work of our whole team on the <a href="https://en.wikipedia.org/wiki/Pi_Day">Pi day</a>.</p> <p>This post also covers various aspects of end-to-end encryption, compares different messengers, and explains why and how quantum-resistant encryption is added to SimpleX Chat:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">Why do we need end-to-end encryption?</a></li> -<li><a href="https://simplex.chat/blog/undefined">Why is encryption even allowed?</a></li> -<li><a href="https://simplex.chat/blog/undefined">End-to-end encryption security: attacks and defense.</a> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#why-do-we-need-end-to-end-encryption">Why do we need end-to-end encryption?</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#why-is-encryption-even-allowed">Why is encryption even allowed?</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#end-to-end-encryption-security-attacks-and-defense">End-to-end encryption security: attacks and defense.</a> <ol> <li>Compromised message size - mitigated by padding messages to a fixed block size.</li> <li>Compromised confidentiality - mitigated by repudiation (deniability).</li> @@ -2072,10 +2072,10 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <li>&quot;Record now, decrypt later&quot; attacks - mitigated by post-quantum cryptography.</li> </ol> </li> -<li><a href="https://simplex.chat/blog/undefined">How secure is encryption in different messengers?</a></li> -<li><a href="https://simplex.chat/blog/undefined">Adding quantum resistance to Signal double ratchet algorithm.</a></li> -<li><a href="https://simplex.chat/blog/undefined">When can you start using quantum resistant chats?</a></li> -<li><a href="https://simplex.chat/blog/undefined">Next for post-quantum crypto - all direct chats, small groups and security audit.</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#how-secure-is-end-to-end-encryption-in-different-messengers">How secure is encryption in different messengers?</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#adding-quantum-resistance-to-signal-double-ratchet-algorithm">Adding quantum resistance to Signal double ratchet algorithm.</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#when-can-you-start-using-quantum-resistant-chats">When can you start using quantum resistant chats?</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#next-for-post-quantum-crypto---all-direct-chats-small-groups-and-security-audit">Next for post-quantum crypto - all direct chats, small groups and security audit.</a></li> </ul> <h2 id="why-do-we-need-end-to-end-encryption" tabindex="-1">Why do we need end-to-end encryption?</h2> <p>The objective of end-to-end encryption is to make any potential attackers, such as traffic observers or communication providers who pass the messages between senders and recipients, unable to recover <em>any</em> message content or meaningful information about the messages, even if these attackers possess very advanced computing and mathematical capabilities.</p> @@ -2108,7 +2108,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>The only effective mitigation to these attacks is to pad all messages to a fixed size. Using space-efficient schemes like Padme, or padding to encryption block size is ineffective for mitigating these attacks, as they still allow differentiating message sizes.</p> <p>To the best of our knowledge, the only messengers other than SimpleX Chat that pad all messages to a fixed packet size are Cwtch and no longer developed <a href="https://github.com/agl/pond">Pond</a> - SimpleX design can be seen as an evolution of Pond design.</p> <h3 id="2-compromised-confidential-messages-mitigated-by-repudiation-deniability" tabindex="-1">2. Compromised confidential messages - mitigated by repudiation (deniability)</h3> -<p>Many users are very interested in having ability to irreversibly delete sent messages from the recipients devices. But not only would this ability violate data sovereignty of device owners, it is also completely ineffective, as the recipients could simply put the device offline or use a modified client app to ignore message deletion requests. While SimpleX Chat provides such features as <a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html">disappearing messages</a> and the ability to <a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html">irreversibly delete sent messages</a> provided both parties agree to that, these are convenience features, and they cannot be considered security measures.</p> +<p>Many users are very interested in having ability to irreversibly delete sent messages from the recipients devices. But not only would this ability violate data sovereignty of device owners, it is also completely ineffective, as the recipients could simply put the device offline or use a modified client app to ignore message deletion requests. While SimpleX Chat provides such features as <a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#disappearing-messages">disappearing messages</a> and the ability to <a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html#irreversible-message-deletion">irreversibly delete sent messages</a> provided both parties agree to that, these are convenience features, and they cannot be considered security measures.</p> <p>The solution to that is well known to cryptographers - it is the quality of the encryption algorithms called &quot;repudiation&quot;, sometimes also called &quot;deniability&quot;. This is the ability of the senders to plausibly deny having sent any messages, because cryptographic algorithms used to encrypt allow recipients forging these messages on their devices, so while the encryption proves authenticity of the message to the recipient, it cannot be used as a proof to any third party.</p> <p>Putting it all in a simpler language - a sender can claim that the recipient forged messages on their device, and deny ever having sent them. The recipient will not be able to provide any cryptographic proof. This quality makes digital conversation having the same qualities as private off-the-record conversation - that's why the family of algorithms that provide these qualities are called off-the-record (OTR) encryption.</p> <p>Repudiation is still a rather new concept - the first off-the-record algorithms were proposed in 2004 and were only offered to a wide range of users in Signal messenger. This concept is still quite badly understood by users and society, and yet to have been used as the defense in any public court cases, as legal systems evolve much slower than technology. In high profile cases repudiation can be used as an effective evidence for the defense.</p> @@ -2202,8 +2202,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>Thank you for helping us improve the app, and look forward to your feedback.</p> <h2 id="simplex-network" tabindex="-1">SimpleX network</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -2233,15 +2233,15 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> Mar 23, 2024</p> <p>SimpleX network: deliver real privacy via a profitable business and non-profit protocol governance:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">community and business interests are aligned</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">the journey to the decentralized non-profit protocol governance</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">welcome, Esra’a</a>!</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#community-and-business-interests-are-aligned">community and business interests are aligned</a>.</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#the-journey-to-the-decentralized-non-profit-protocol-governance">the journey to the decentralized non-profit protocol governance</a>.</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#welcome-esraa">welcome, Esra’a</a>!</li> </ul> <p>What's new in v5.6:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">quantum resistant end-to-end encryption</a> (BETA) – enable it for the new contacts.</li> -<li><a href="https://simplex.chat/blog/undefined">use the app during the audio and video calls</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">migrate all app data to another device via QR code</a>.</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#quantum-resistant-end-to-end-encryption-beta">quantum resistant end-to-end encryption</a> (BETA) – enable it for the new contacts.</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#use-the-app-during-the-audio-and-video-calls">use the app during the audio and video calls</a>.</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#migrate-all-app-data-to-another-device-via-qr-code">migrate all app data to another device via QR code</a>.</li> </ul> <p>There are many other improvements and fixes in this release:</p> <ul> @@ -2264,7 +2264,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <h2 id="whats-new-in-v56" tabindex="-1">What's new in v5.6</h2> <h3 id="quantum-resistant-end-to-end-encryption-beta" tabindex="-1">Quantum resistant end-to-end encryption (BETA)</h3> <p>Adding post-quantum resistance to the double ratchet end-to-end encryption algorithm in SimpleX Chat is a major upgrade to messaging protocols, and it creates the security against the future quantum computers.</p> -<p>I wrote in detail in the previous post about various properties of end-to-end encryption and how exactly quantum resistance is implemented in SimpleX Chat - currently SimpleX Chat has <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html">the most secure end-to-end encryption design</a> against the present and future attacks.</p> +<p>I wrote in detail in the previous post about various properties of end-to-end encryption and how exactly quantum resistance is implemented in SimpleX Chat - currently SimpleX Chat has <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#how-secure-is-end-to-end-encryption-in-different-messengers">the most secure end-to-end encryption design</a> against the present and future attacks.</p> <p>We plan to perform a security audit of this design and implementation later this year.</p> <p>Post-quantum encryption is currently added as opt-in and has to be separately enabled to be active for the new contacts, and, additionally, can be enabled for the existing contacts.</p> <p><img src="https://simplex.chat/blog/images/20240314-pq1.png" width="288" /> <img src="https://simplex.chat/blog/images/20240314-pq2.png" width="288" /> <img src="https://simplex.chat/blog/images/20240314-pq3.png" width="288" /></p> @@ -2289,8 +2289,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>Since we added the audio and video calls in 2022 a lot of work was done to improve the stability of calls. One of the usability downsides until this release was that it was impossible to use the app during the call.</p> <p>This version solved this problem - now you can return back to the app without interrupting the call and use any of the app functions - for example, you can send the messages or files to the person you are in the call with. If this is a video call, you will continue seeing your contact in a small picture-in-picture view.</p> <h3 id="migrate-all-app-data-to-another-device-via-qr-code" tabindex="-1">Migrate all app data to another device via QR code</h3> -<p>We always believed that cross-platform data portability is very important for any software. Users own their data, and they should have a way to export it from any software they use. So from the version of SimpleX Chat <a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html">released in July 2022</a> it was possible to export the database as a self-contained file, including all contacts, messages and files, and import it on a new device.</p> -<p><em>&quot;How can I migrate my data to another device?&quot;</em> was one of the most frequent user questions, but until this release this process was <a href="https://simplex.chat/blog/undefined">quite complex</a>, requiring too many steps, and most non-technical users were not willing to try it, as even though it was reliable, it appeared risky.</p> +<p>We always believed that cross-platform data portability is very important for any software. Users own their data, and they should have a way to export it from any software they use. So from the version of SimpleX Chat <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">released in July 2022</a> it was possible to export the database as a self-contained file, including all contacts, messages and files, and import it on a new device.</p> +<p><em>&quot;How can I migrate my data to another device?&quot;</em> was one of the most frequent user questions, but until this release this process was <a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html">quite complex</a>, requiring too many steps, and most non-technical users were not willing to try it, as even though it was reliable, it appeared risky.</p> <p>This release made the app data migration very simple, see the steps below.</p> <p><strong>Start the migration on the source device</strong></p> <p><img src="https://simplex.chat/blog/images/20240323-migrate-from1.png" width="170" /> <img src="https://simplex.chat/blog/images/arrow.png" width="24" /> <img src="https://simplex.chat/blog/images/20240323-migrate-from2.png" width="170" /> <img src="https://simplex.chat/blog/images/arrow.png" width="24" /> <img src="https://simplex.chat/blog/images/20240323-migrate-from3.png" width="170" /> <img src="https://simplex.chat/blog/images/arrow.png" width="24" /> <img src="https://simplex.chat/blog/images/20240323-migrate-from4.png" width="170" /> <img src="https://simplex.chat/blog/images/arrow.png" width="24" /> <img src="https://simplex.chat/blog/images/20240323-migrate-from5.png" width="170" /></p> @@ -2315,8 +2315,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>The database cannot be used on two devices at the same time, doing so would make it impossible to decrypt the received messages. This is a security measure - the break-in recovery property of double ratchet algorithm.</p> <h2 id="simplex-network" tabindex="-1">SimpleX network</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -2387,7 +2387,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <li>Personal info (email address, user IDs, phone number)</li> </ul> <p>This is called <a href="https://en.wikipedia.org/wiki/Metadata">metadata</a>. It reveals a wealth of information about you and your connections, and in the hands of a centralized monopoly, this can and does get misused in incredibly dangerous ways. Once such metadata is logged, it can create very detailed profiles about who you are, everywhere you’ve been, and everyone you’ve ever spoken to. In settling for apps that normalize this while giving you the illusion of privacy in their marketing, we are doing ourselves a disservice by accepting this as the default. Collectively, we aren’t doing enough to protect ourselves and our social graph from this invasive overreach.</p> -<p>When stored, aggregated and analyzed, this metadata provides ample information that could potentially incriminate someone or be submitted to authorities. When WhatsApp and Facebook Messenger enabled end-to-end encryption for messages, of course it was a welcome and widely celebrated change. But it’s important to remember that not all end-to-end encryption utilizes the same standards, <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html">some implementations are more secure</a> than others, so it’s something that shouldn’t necessarily be accepted at face value. More importantly: collecting and storing an obscene amount of metadata should invite global scrutiny, considering this data is often combined with whatever other information companies like Meta harvest about your identity (which is <a href="https://www.vox.com/recode/23172691/meta-tracking-privacy-hospitals">a lot</a>.)</p> +<p>When stored, aggregated and analyzed, this metadata provides ample information that could potentially incriminate someone or be submitted to authorities. When WhatsApp and Facebook Messenger enabled end-to-end encryption for messages, of course it was a welcome and widely celebrated change. But it’s important to remember that not all end-to-end encryption utilizes the same standards, <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#how-secure-is-end-to-end-encryption-in-different-messengers">some implementations are more secure</a> than others, so it’s something that shouldn’t necessarily be accepted at face value. More importantly: collecting and storing an obscene amount of metadata should invite global scrutiny, considering this data is often combined with whatever other information companies like Meta harvest about your identity (which is <a href="https://www.vox.com/recode/23172691/meta-tracking-privacy-hospitals">a lot</a>.)</p> <img src="https://simplex.chat/blog/images/20240416-metadata.png" class="float-to-right" width="38%" /> <p>This is one of the many reasons why we need to resist giving out our phone numbers just to access an app, especially to do something as personal and intimate as private messaging. Even though users can sometimes mask their numbers with a username, their identity on the app is still fundamentally tied to their phone number. App operators have access to this, as well as user contacts. Additionally, with a simple modification to the app's source code, the contacts may also gain access in some cases. This should raise more concerns about privacy, and it makes the need for anonymity difficult to achieve.</p> <p>Everyone has a different threat model (and if you don’t yet, now is a good time to <a href="https://www.privacyguides.org/en/basics/threat-modeling/#creating-your-threat-model">create one</a>). For many users today, WhatsApp and other apps may be sufficient for their specific needs, especially in connecting with families and friends who are already on the app and unlikely to migrate elsewhere. If that suits your life and needs, and if you’re aware and consciously accept the risks, great.</p> @@ -2412,18 +2412,18 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> Apr 26, 2024</p> <p>What's new in v5.7:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">quantum resistant end-to-end encryption</a> with all contacts.</li> -<li><a href="https://simplex.chat/blog/undefined">forward and save messages</a> without revealing the source.</li> -<li><a href="https://simplex.chat/blog/undefined">in-call sounds and switching sound sources</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">better network connection management</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">customizable profile images</a></li> +<li><a href="https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html#quantum-resistant-end-to-end-encryption">quantum resistant end-to-end encryption</a> with all contacts.</li> +<li><a href="https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html#forward-and-save-messages">forward and save messages</a> without revealing the source.</li> +<li><a href="https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html#in-call-sounds-and-switching-sound-sources">in-call sounds and switching sound sources</a>.</li> +<li><a href="https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html#network-management">better network connection management</a>.</li> +<li><a href="https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html#customizable-shape-of-profile-images">customizable profile images</a></li> </ul> <p>Also, we added Lithuanian interface language to the Android and desktop apps, thanks to <a href="https://github.com/simplex-chat/simplex-chat#help-translating-simplex-chat">our users and Weblate</a>.</p> <h2 id="legally-binding-transparency" tabindex="-1">Legally binding transparency</h2> <p>We are committed to open-source, privacy and security. Here are the recent changes we made:</p> <ul> <li>We now have a <a href="https://simplex.chat/transparency/index.html">Transparency Reports</a> page.</li> -<li>We updated our <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/PRIVACY.md">Privacy Policy</a> to remove undefined terms &quot;impermissible&quot; and &quot;acceptable&quot;, which would allow us to remove anything we don't like, without any clarity on what that is. You can see the edits <a href="https://github.com/simplex-chat/simplex-chat/pull/4076/files">here</a>.</li> +<li>We updated our <a href="https://simplex.chat/blog/https%3A//github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/PRIVACY.md">Privacy Policy</a> to remove undefined terms &quot;impermissible&quot; and &quot;acceptable&quot;, which would allow us to remove anything we don't like, without any clarity on what that is. You can see the edits <a href="https://github.com/simplex-chat/simplex-chat/pull/4076/files">here</a>.</li> <li>We published a new page with <a href="https://simplex.chat/faq/index.html">Frequently Asked Questions</a>, thanks to the guidance from users.</li> <li>We also have a new <a href="https://simplex.chat/security/index.html">Security Policy</a> – we welcome your feedback on it.</li> </ul> @@ -2461,8 +2461,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><img src="https://simplex.chat/blog/images/20240426-profile1.png" width="288" /> <img src="https://simplex.chat/blog/images/20240426-profile2.png" width="288" /> <img src="https://simplex.chat/blog/images/20240426-profile3.png" width="288" /></p> <h2 id="simplex-network" tabindex="-1">SimpleX network</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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://simplex.chat/faq/index.html">Frequently asked questions</a>.</p> <p>Please also see our <a href="https://simplex.chat/">website</a>.</p> @@ -2500,10 +2500,10 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>One of the main considerations often ignored in security and privacy comparisons between messaging applications is multi-device access. For example, in Signal’s case, the Sesame protocol used to support multi-device access has the vulnerability that is <a href="https://eprint.iacr.org/2021/626.pdf">explained in detail here</a>:</p> <p><em>&quot;We present an attack on the post-compromise security of the Signal messenger that allows to stealthily register a new device via the Sesame protocol. [...] This new device can send and receive messages without raising any ‘Bad encrypted message’ errors. Our attack thus shows that the Signal messenger does not guarantee post-compromise security at all in the multi-device setting&quot;</em>.</p> <img src="https://simplex.chat/blog/images/20231125-mobile2.png" width="170" class="float-right" /> -<p>Solutions are possible, and even the quoted paper proposes improvements, but they are not implemented in any existing communication solutions. Unfortunately this results in most communication systems, even those in the privacy space, having compromised security in multi-device settings due to these limitations. That's the reason we are not rushing a full multi-device support, and currently only provide <a href="https://simplex.chat/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html">the ability to use mobile app profiles via the desktop app</a>, while they are on the same network.</p> +<p>Solutions are possible, and even the quoted paper proposes improvements, but they are not implemented in any existing communication solutions. Unfortunately this results in most communication systems, even those in the privacy space, having compromised security in multi-device settings due to these limitations. That's the reason we are not rushing a full multi-device support, and currently only provide <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">the ability to use mobile app profiles via the desktop app</a>, while they are on the same network.</p> <p>Another choice that compromises privacy for convenience and usability is 3rd party push notifications. At SimpleX, we take a slow path of optimizing the network and battery consumption in the app, rather than simply hiding inefficiencies behind the quick fix solution of 3rd party push notifications that <a href="https://www.wired.com/story/apple-google-push-notification-surveillance/">increases vulnerability</a>, a path Signal and others chose. Like other choices, it has usability and optimization trade offs, but ultimately it’s the right thing to continue progressing towards a better solution as we explain <a href="https://simplex.chat/blog/20220404-simplex-chat-instant-notifications.html">here</a>.</p> <p>Whenever possible, we strive to achieve significantly higher levels of privacy and security. For example, unlike most, if not all, applications (including Signal), <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">we encrypt application files with per-file unique key</a>. Consequently, once a message is deleted, there's no means to open a file that someone may have stolen in hopes of acquiring the key later. Similarly, apps like Session have done away with forward secrecy, a decision which caused them <a href="https://www.privacyguides.org/en/real-time-communication/#additional-options">not to be recommended</a> for &quot;long-term or sensitive communications&quot;. And <a href="https://simplifiedprivacy.com/spain-has-banned-telegram-defending-session/">misinformation</a> around this makes it dangerous and irresponsible to recommend without such necessary disclosures for people’s awareness.</p> -<p>Session’s decision was based on <a href="https://getsession.org/blog/session-protocol-explained">the incorrect statements</a> about double ratchet being impossible in decentralized networks, and underplayed importance of forward secrecy, break-in recovery and deniability - the absence of these crucial qualities makes Session a much weaker choice for private messaging. For transparency, this was something that was debated with their team <a href="https://twitter.com/SimpleXChat/status/1755216356159414602">here</a>. We also made <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html">a separate post</a> about these qualities of end-to-end encryption and their presence in different messengers, to show that not all end-to-end encrypted apps offer the same level of protections.</p> +<p>Session’s decision was based on <a href="https://getsession.org/blog/session-protocol-explained">the incorrect statements</a> about double ratchet being impossible in decentralized networks, and underplayed importance of forward secrecy, break-in recovery and deniability - the absence of these crucial qualities makes Session a much weaker choice for private messaging. For transparency, this was something that was debated with their team <a href="https://twitter.com/SimpleXChat/status/1755216356159414602">here</a>. We also made <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#end-to-end-encryption-security-attacks-and-defense">a separate post</a> about these qualities of end-to-end encryption and their presence in different messengers, to show that not all end-to-end encrypted apps offer the same level of protections.</p> <h2 id="network-decentralization" tabindex="-1">Network decentralization</h2> <img src="https://simplex.chat/blog/images/simplex-explained.svg" width="40%" class="float-right" /> <p>It's important to recognize that a model of decentralization where all servers are openly known and accessible to all clients, that some users ask for, actually results in a less decentralized network, and as the network grows it often requires an introduction of a central authority to protect from bad actors with malicious intent. Therefore, we've deliberately opted for a slower path towards achieving a higher degree of decentralization where there is no central server registry or network authority. For example, p2p designs may offer higher initial decentralization but often compromise on privacy and eventual decentralization. In essence, our approach prioritizes a balance between initial decentralization, privacy, and higher degree of decentralization down the line.</p> @@ -2511,7 +2511,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>Where it stands today, users have the freedom to select their preferred servers within the SimpleX network by configuring the app, with thousands of self-hosted servers in operation. Moreover, numerous third-party applications rely on our code for their in-app communications, operating independently of our servers, many of which we may not even be aware of.</p> <p>Decentralization is an ongoing journey, and we strive to proceed at a measured pace to ensure its proper implementation. While the immediate results may not always appear ideal, prioritizing a careful approach ensures that in the long run, the decisions made in this area align with our ultimate objectives of a private, efficient, reliable and fully decentralized network.</p> <h2 id="funding-and-profitability" tabindex="-1">Funding and profitability</h2> -<p>We explain our rationale for funding <a href="https://simplex.chat/faq/index.html">here</a>. Funding sources is always one of the most difficult choices to make, and it’s important to underline that VC models don’t necessarily translate to a quest for control, interference of any kind, or overall influence on product roadmap and strategy. The vast majority of investors seek profitability. Irrespective of the organization type profitability is essential for a sustainable operation, and it can and should be done while adhering to the highest possible standards for privacy. For-profit vs. nonprofit is also not an accurate metric to measure a commitment towards privacy and open standards, which is further explained <a href="https://simplex.chat/blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.html">here</a>.</p> +<p>We explain our rationale for funding <a href="https://simplex.chat/faq/index.html#funding-and-business-model">here</a>. Funding sources is always one of the most difficult choices to make, and it’s important to underline that VC models don’t necessarily translate to a quest for control, interference of any kind, or overall influence on product roadmap and strategy. The vast majority of investors seek profitability. Irrespective of the organization type profitability is essential for a sustainable operation, and it can and should be done while adhering to the highest possible standards for privacy. For-profit vs. nonprofit is also not an accurate metric to measure a commitment towards privacy and open standards, which is further explained <a href="https://simplex.chat/blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.html">here</a>.</p> <p>To make a profit, satisfying customers is the key. Unlike the many companies that profit from selling customer data, we put user privacy first. Doing this at scale requires investments. If the investors don’t own or control a company, their participation becomes merely about profit for them, and not about how this profit is obtained. With the investors we have, we are completely aligned on this - they are betting on the future where privacy is the norm. They do not dictate on anything related to our model. We build SimpleX chat, protocols and network the way Internet should have been built if we as developers always put the privacy and empowerment of users first.</p> <h2 id="company-jurisdiction" tabindex="-1">Company jurisdiction</h2> <img src="https://simplex.chat/blog/images/20240516-parliament.jpg" width="40%" class="float-right" /> @@ -2563,11 +2563,11 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> June 4, 2024</p> <p>What's new in v5.8:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">private message routing</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">server transparency</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">protect IP address when downloading files &amp; media</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">chat themes</a> for better conversation privacy - in Android and desktop apps.</li> -<li><a href="https://simplex.chat/blog/undefined">group improvements</a> - reduced traffic and additional preferences.</li> +<li><a href="https://simplex.chat/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html#private-message-routing">private message routing</a>.</li> +<li><a href="https://simplex.chat/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html#server-transparency">server transparency</a>.</li> +<li><a href="https://simplex.chat/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html#protect-ip-address-when-downloading-files--media">protect IP address when downloading files &amp; media</a>.</li> +<li><a href="https://simplex.chat/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html#chat-themes">chat themes</a> for better conversation privacy - in Android and desktop apps.</li> +<li><a href="https://simplex.chat/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html#group-improvements">group improvements</a> - reduced traffic and additional preferences.</li> <li>improved networking, message and file delivery.</li> </ul> <p>Also, we added Persian interface language to the Android and desktop apps, thanks to <a href="https://github.com/simplex-chat/simplex-chat#help-translating-simplex-chat">our users and Weblate</a>.</p> @@ -2581,12 +2581,12 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>Tor is the best transport overlay network in existence, and it provides network anonymity for millions of Internet users.</p> <p>SimpleX Chat has many integration points with Tor:</p> <ul> -<li>it allows <a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html">dual server addresses</a>, when the same messaging relay can be reached both via Tor and via clearnet.</li> -<li>it utilises Tor's SOCKS proxy &quot;isolate-by-auth&quot; feature to create a new Tor circuit for each user profile, and with an additional option - for each contact. Per-contact <a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html">transport isolation</a> is still experimental, as it doesn't work if you connect to groups with many members, and it's only available if you enable developer tools.</li> +<li>it allows <a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#using-onion-server-addresses-with-tor">dual server addresses</a>, when the same messaging relay can be reached both via Tor and via clearnet.</li> +<li>it utilises Tor's SOCKS proxy &quot;isolate-by-auth&quot; feature to create a new Tor circuit for each user profile, and with an additional option - for each contact. Per-contact <a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation">transport isolation</a> is still experimental, as it doesn't work if you connect to groups with many members, and it's only available if you enable developer tools.</li> </ul> <p>Many SimpleX network design ideas are borrowed from Tor network design:</p> <ul> -<li>mitigation of <a href="https://simplex.chat/docs/glossary.html">MITM attack</a> on client-server connection is done in the same way as Tor relays do it - the fingerprint of offline certificate is included in server address and validated by the client.</li> +<li>mitigation of <a href="https://simplex.chat/docs/glossary.html#man-in-the-middle-attack">MITM attack</a> on client-server connection is done in the same way as Tor relays do it - the fingerprint of offline certificate is included in server address and validated by the client.</li> <li>the private routing itself uses the approach similar to onion routing, by adding encryption layers on each hop.</li> <li>we are also considering to implement Tor's <a href="https://blog.torproject.org/introducing-proof-of-work-defense-for-onion-services/">Proof-of-work DoS defence</a> mechanism.</li> </ul> @@ -2630,7 +2630,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>We <a href="https://github.com/simplex-chat/simplexmq/blob/master/rfcs/2024-03-20-server-metadata.md">wrote previously</a> that it is important that server operators commit to running unmodified server code or disclose any code modifications, and also disclose server ownership and any other relevant information.</p> <p>While we cannot require the operators of self-hosted and private servers to disclose any information about them (apart from which server code they use - this is the requirement of the AGPLv3 license to share this information with users connecting to the server), as we add other server operators to the app, it is important for the users to have all important information about these operators and servers location.</p> <p>This server release adds server information page where all this information can be made available to the users. For example, this is <a href="https://smp8.simplex.im/" target="_blank">the information</a> about one of the servers preset in the app.</p> -<p>The updated server guide also includes <a href="https://simplex.chat/docs/server.html">the instruction</a> about how to host this page for your server. It is generated as a static page when the server starts. We recommend using Caddy webserver to serve it.</p> +<p>The updated server guide also includes <a href="https://simplex.chat/docs/server.html#">the instruction</a> about how to host this page for your server. It is generated as a static page when the server starts. We recommend using Caddy webserver to serve it.</p> <h2 id="more-new-things-in-v58" tabindex="-1">More new things in v5.8</h2> <h3 id="protect-ip-address-when-downloading-files-and-media" tabindex="-1">Protect IP address when downloading files &amp; media</h3> <p>This version added the protection of your IP address when receiving files from unknown file servers without Tor. Images and voice messages won't automatically download from unknown servers too until you tap them, and confirm that you trust the file server where they were uploaded.</p> @@ -2644,8 +2644,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>We also stopped unnecessary traffic caused by the members who became inactive without leaving the groups - it should substantially reduce traffic and battery consumption to the users who send messages in large groups.</p> <h2 id="simplex-network" tabindex="-1">SimpleX network</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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://simplex.chat/faq/index.html">Frequently asked questions</a>.</p> <p>Please also see our <a href="https://simplex.chat/">website</a>.</p> diff --git a/feed.rss b/feed.rss index 00e904937f..dbfcbdd42e 100644 --- a/feed.rss +++ b/feed.rss @@ -13,11 +13,11 @@ <p><strong>Published:</strong> June 4, 2024</p> <p>What's new in v5.8:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">private message routing</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">server transparency</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">protect IP address when downloading files &amp; media</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">chat themes</a> for better conversation privacy - in Android and desktop apps.</li> -<li><a href="https://simplex.chat/blog/undefined">group improvements</a> - reduced traffic and additional preferences.</li> +<li><a href="https://simplex.chat/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html#private-message-routing">private message routing</a>.</li> +<li><a href="https://simplex.chat/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html#server-transparency">server transparency</a>.</li> +<li><a href="https://simplex.chat/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html#protect-ip-address-when-downloading-files--media">protect IP address when downloading files &amp; media</a>.</li> +<li><a href="https://simplex.chat/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html#chat-themes">chat themes</a> for better conversation privacy - in Android and desktop apps.</li> +<li><a href="https://simplex.chat/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html#group-improvements">group improvements</a> - reduced traffic and additional preferences.</li> <li>improved networking, message and file delivery.</li> </ul> <p>Also, we added Persian interface language to the Android and desktop apps, thanks to <a href="https://github.com/simplex-chat/simplex-chat#help-translating-simplex-chat">our users and Weblate</a>.</p> @@ -31,12 +31,12 @@ <p>Tor is the best transport overlay network in existence, and it provides network anonymity for millions of Internet users.</p> <p>SimpleX Chat has many integration points with Tor:</p> <ul> -<li>it allows <a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html">dual server addresses</a>, when the same messaging relay can be reached both via Tor and via clearnet.</li> -<li>it utilises Tor's SOCKS proxy &quot;isolate-by-auth&quot; feature to create a new Tor circuit for each user profile, and with an additional option - for each contact. Per-contact <a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html">transport isolation</a> is still experimental, as it doesn't work if you connect to groups with many members, and it's only available if you enable developer tools.</li> +<li>it allows <a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#using-onion-server-addresses-with-tor">dual server addresses</a>, when the same messaging relay can be reached both via Tor and via clearnet.</li> +<li>it utilises Tor's SOCKS proxy &quot;isolate-by-auth&quot; feature to create a new Tor circuit for each user profile, and with an additional option - for each contact. Per-contact <a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation">transport isolation</a> is still experimental, as it doesn't work if you connect to groups with many members, and it's only available if you enable developer tools.</li> </ul> <p>Many SimpleX network design ideas are borrowed from Tor network design:</p> <ul> -<li>mitigation of <a href="https://simplex.chat/docs/glossary.html">MITM attack</a> on client-server connection is done in the same way as Tor relays do it - the fingerprint of offline certificate is included in server address and validated by the client.</li> +<li>mitigation of <a href="https://simplex.chat/docs/glossary.html#man-in-the-middle-attack">MITM attack</a> on client-server connection is done in the same way as Tor relays do it - the fingerprint of offline certificate is included in server address and validated by the client.</li> <li>the private routing itself uses the approach similar to onion routing, by adding encryption layers on each hop.</li> <li>we are also considering to implement Tor's <a href="https://blog.torproject.org/introducing-proof-of-work-defense-for-onion-services/">Proof-of-work DoS defence</a> mechanism.</li> </ul> @@ -80,7 +80,7 @@ <p>We <a href="https://github.com/simplex-chat/simplexmq/blob/master/rfcs/2024-03-20-server-metadata.md">wrote previously</a> that it is important that server operators commit to running unmodified server code or disclose any code modifications, and also disclose server ownership and any other relevant information.</p> <p>While we cannot require the operators of self-hosted and private servers to disclose any information about them (apart from which server code they use - this is the requirement of the AGPLv3 license to share this information with users connecting to the server), as we add other server operators to the app, it is important for the users to have all important information about these operators and servers location.</p> <p>This server release adds server information page where all this information can be made available to the users. For example, this is <a href="https://smp8.simplex.im/" target="_blank">the information</a> about one of the servers preset in the app.</p> -<p>The updated server guide also includes <a href="https://simplex.chat/docs/server.html">the instruction</a> about how to host this page for your server. It is generated as a static page when the server starts. We recommend using Caddy webserver to serve it.</p> +<p>The updated server guide also includes <a href="https://simplex.chat/docs/server.html#">the instruction</a> about how to host this page for your server. It is generated as a static page when the server starts. We recommend using Caddy webserver to serve it.</p> <h2 id="more-new-things-in-v58" tabindex="-1">More new things in v5.8</h2> <h3 id="protect-ip-address-when-downloading-files-and-media" tabindex="-1">Protect IP address when downloading files &amp; media</h3> <p>This version added the protection of your IP address when receiving files from unknown file servers without Tor. Images and voice messages won't automatically download from unknown servers too until you tap them, and confirm that you trust the file server where they were uploaded.</p> @@ -94,8 +94,8 @@ <p>We also stopped unnecessary traffic caused by the members who became inactive without leaving the groups - it should substantially reduce traffic and battery consumption to the users who send messages in large groups.</p> <h2 id="simplex-network" tabindex="-1">SimpleX network</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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://simplex.chat/faq/index.html">Frequently asked questions</a>.</p> <p>Please also see our <a href="https://simplex.chat/">website</a>.</p> @@ -153,10 +153,10 @@ <p>One of the main considerations often ignored in security and privacy comparisons between messaging applications is multi-device access. For example, in Signal’s case, the Sesame protocol used to support multi-device access has the vulnerability that is <a href="https://eprint.iacr.org/2021/626.pdf">explained in detail here</a>:</p> <p><em>&quot;We present an attack on the post-compromise security of the Signal messenger that allows to stealthily register a new device via the Sesame protocol. [...] This new device can send and receive messages without raising any ‘Bad encrypted message’ errors. Our attack thus shows that the Signal messenger does not guarantee post-compromise security at all in the multi-device setting&quot;</em>.</p> <img src="https://simplex.chat/blog/images/20231125-mobile2.png" width="170" class="float-right" /> -<p>Solutions are possible, and even the quoted paper proposes improvements, but they are not implemented in any existing communication solutions. Unfortunately this results in most communication systems, even those in the privacy space, having compromised security in multi-device settings due to these limitations. That's the reason we are not rushing a full multi-device support, and currently only provide <a href="https://simplex.chat/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html">the ability to use mobile app profiles via the desktop app</a>, while they are on the same network.</p> +<p>Solutions are possible, and even the quoted paper proposes improvements, but they are not implemented in any existing communication solutions. Unfortunately this results in most communication systems, even those in the privacy space, having compromised security in multi-device settings due to these limitations. That's the reason we are not rushing a full multi-device support, and currently only provide <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">the ability to use mobile app profiles via the desktop app</a>, while they are on the same network.</p> <p>Another choice that compromises privacy for convenience and usability is 3rd party push notifications. At SimpleX, we take a slow path of optimizing the network and battery consumption in the app, rather than simply hiding inefficiencies behind the quick fix solution of 3rd party push notifications that <a href="https://www.wired.com/story/apple-google-push-notification-surveillance/">increases vulnerability</a>, a path Signal and others chose. Like other choices, it has usability and optimization trade offs, but ultimately it’s the right thing to continue progressing towards a better solution as we explain <a href="https://simplex.chat/blog/20220404-simplex-chat-instant-notifications.html">here</a>.</p> <p>Whenever possible, we strive to achieve significantly higher levels of privacy and security. For example, unlike most, if not all, applications (including Signal), <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">we encrypt application files with per-file unique key</a>. Consequently, once a message is deleted, there's no means to open a file that someone may have stolen in hopes of acquiring the key later. Similarly, apps like Session have done away with forward secrecy, a decision which caused them <a href="https://www.privacyguides.org/en/real-time-communication/#additional-options">not to be recommended</a> for &quot;long-term or sensitive communications&quot;. And <a href="https://simplifiedprivacy.com/spain-has-banned-telegram-defending-session/">misinformation</a> around this makes it dangerous and irresponsible to recommend without such necessary disclosures for people’s awareness.</p> -<p>Session’s decision was based on <a href="https://getsession.org/blog/session-protocol-explained">the incorrect statements</a> about double ratchet being impossible in decentralized networks, and underplayed importance of forward secrecy, break-in recovery and deniability - the absence of these crucial qualities makes Session a much weaker choice for private messaging. For transparency, this was something that was debated with their team <a href="https://twitter.com/SimpleXChat/status/1755216356159414602">here</a>. We also made <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html">a separate post</a> about these qualities of end-to-end encryption and their presence in different messengers, to show that not all end-to-end encrypted apps offer the same level of protections.</p> +<p>Session’s decision was based on <a href="https://getsession.org/blog/session-protocol-explained">the incorrect statements</a> about double ratchet being impossible in decentralized networks, and underplayed importance of forward secrecy, break-in recovery and deniability - the absence of these crucial qualities makes Session a much weaker choice for private messaging. For transparency, this was something that was debated with their team <a href="https://twitter.com/SimpleXChat/status/1755216356159414602">here</a>. We also made <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#end-to-end-encryption-security-attacks-and-defense">a separate post</a> about these qualities of end-to-end encryption and their presence in different messengers, to show that not all end-to-end encrypted apps offer the same level of protections.</p> <h2 id="network-decentralization" tabindex="-1">Network decentralization</h2> <img src="https://simplex.chat/blog/images/simplex-explained.svg" width="40%" class="float-right" /> <p>It's important to recognize that a model of decentralization where all servers are openly known and accessible to all clients, that some users ask for, actually results in a less decentralized network, and as the network grows it often requires an introduction of a central authority to protect from bad actors with malicious intent. Therefore, we've deliberately opted for a slower path towards achieving a higher degree of decentralization where there is no central server registry or network authority. For example, p2p designs may offer higher initial decentralization but often compromise on privacy and eventual decentralization. In essence, our approach prioritizes a balance between initial decentralization, privacy, and higher degree of decentralization down the line.</p> @@ -164,7 +164,7 @@ <p>Where it stands today, users have the freedom to select their preferred servers within the SimpleX network by configuring the app, with thousands of self-hosted servers in operation. Moreover, numerous third-party applications rely on our code for their in-app communications, operating independently of our servers, many of which we may not even be aware of.</p> <p>Decentralization is an ongoing journey, and we strive to proceed at a measured pace to ensure its proper implementation. While the immediate results may not always appear ideal, prioritizing a careful approach ensures that in the long run, the decisions made in this area align with our ultimate objectives of a private, efficient, reliable and fully decentralized network.</p> <h2 id="funding-and-profitability" tabindex="-1">Funding and profitability</h2> -<p>We explain our rationale for funding <a href="https://simplex.chat/faq/index.html">here</a>. Funding sources is always one of the most difficult choices to make, and it’s important to underline that VC models don’t necessarily translate to a quest for control, interference of any kind, or overall influence on product roadmap and strategy. The vast majority of investors seek profitability. Irrespective of the organization type profitability is essential for a sustainable operation, and it can and should be done while adhering to the highest possible standards for privacy. For-profit vs. nonprofit is also not an accurate metric to measure a commitment towards privacy and open standards, which is further explained <a href="https://simplex.chat/blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.html">here</a>.</p> +<p>We explain our rationale for funding <a href="https://simplex.chat/faq/index.html#funding-and-business-model">here</a>. Funding sources is always one of the most difficult choices to make, and it’s important to underline that VC models don’t necessarily translate to a quest for control, interference of any kind, or overall influence on product roadmap and strategy. The vast majority of investors seek profitability. Irrespective of the organization type profitability is essential for a sustainable operation, and it can and should be done while adhering to the highest possible standards for privacy. For-profit vs. nonprofit is also not an accurate metric to measure a commitment towards privacy and open standards, which is further explained <a href="https://simplex.chat/blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.html">here</a>.</p> <p>To make a profit, satisfying customers is the key. Unlike the many companies that profit from selling customer data, we put user privacy first. Doing this at scale requires investments. If the investors don’t own or control a company, their participation becomes merely about profit for them, and not about how this profit is obtained. With the investors we have, we are completely aligned on this - they are betting on the future where privacy is the norm. They do not dictate on anything related to our model. We build SimpleX chat, protocols and network the way Internet should have been built if we as developers always put the privacy and empowerment of users first.</p> <h2 id="company-jurisdiction" tabindex="-1">Company jurisdiction</h2> <img src="https://simplex.chat/blog/images/20240516-parliament.jpg" width="40%" class="float-right" /> @@ -190,18 +190,18 @@ <p><strong>Published:</strong> Apr 26, 2024</p> <p>What's new in v5.7:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">quantum resistant end-to-end encryption</a> with all contacts.</li> -<li><a href="https://simplex.chat/blog/undefined">forward and save messages</a> without revealing the source.</li> -<li><a href="https://simplex.chat/blog/undefined">in-call sounds and switching sound sources</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">better network connection management</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">customizable profile images</a></li> +<li><a href="https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html#quantum-resistant-end-to-end-encryption">quantum resistant end-to-end encryption</a> with all contacts.</li> +<li><a href="https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html#forward-and-save-messages">forward and save messages</a> without revealing the source.</li> +<li><a href="https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html#in-call-sounds-and-switching-sound-sources">in-call sounds and switching sound sources</a>.</li> +<li><a href="https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html#network-management">better network connection management</a>.</li> +<li><a href="https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html#customizable-shape-of-profile-images">customizable profile images</a></li> </ul> <p>Also, we added Lithuanian interface language to the Android and desktop apps, thanks to <a href="https://github.com/simplex-chat/simplex-chat#help-translating-simplex-chat">our users and Weblate</a>.</p> <h2 id="legally-binding-transparency" tabindex="-1">Legally binding transparency</h2> <p>We are committed to open-source, privacy and security. Here are the recent changes we made:</p> <ul> <li>We now have a <a href="https://simplex.chat/transparency/index.html">Transparency Reports</a> page.</li> -<li>We updated our <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/PRIVACY.md">Privacy Policy</a> to remove undefined terms &quot;impermissible&quot; and &quot;acceptable&quot;, which would allow us to remove anything we don't like, without any clarity on what that is. You can see the edits <a href="https://github.com/simplex-chat/simplex-chat/pull/4076/files">here</a>.</li> +<li>We updated our <a href="https://simplex.chat/blog/https%3A//github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/PRIVACY.md">Privacy Policy</a> to remove undefined terms &quot;impermissible&quot; and &quot;acceptable&quot;, which would allow us to remove anything we don't like, without any clarity on what that is. You can see the edits <a href="https://github.com/simplex-chat/simplex-chat/pull/4076/files">here</a>.</li> <li>We published a new page with <a href="https://simplex.chat/faq/index.html">Frequently Asked Questions</a>, thanks to the guidance from users.</li> <li>We also have a new <a href="https://simplex.chat/security/index.html">Security Policy</a> – we welcome your feedback on it.</li> </ul> @@ -239,8 +239,8 @@ <p><img src="https://simplex.chat/blog/images/20240426-profile1.png" width="288" /> <img src="https://simplex.chat/blog/images/20240426-profile2.png" width="288" /> <img src="https://simplex.chat/blog/images/20240426-profile3.png" width="288" /></p> <h2 id="simplex-network" tabindex="-1">SimpleX network</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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://simplex.chat/faq/index.html">Frequently asked questions</a>.</p> <p>Please also see our <a href="https://simplex.chat/">website</a>.</p> @@ -282,7 +282,7 @@ <li>Personal info (email address, user IDs, phone number)</li> </ul> <p>This is called <a href="https://en.wikipedia.org/wiki/Metadata">metadata</a>. It reveals a wealth of information about you and your connections, and in the hands of a centralized monopoly, this can and does get misused in incredibly dangerous ways. Once such metadata is logged, it can create very detailed profiles about who you are, everywhere you’ve been, and everyone you’ve ever spoken to. In settling for apps that normalize this while giving you the illusion of privacy in their marketing, we are doing ourselves a disservice by accepting this as the default. Collectively, we aren’t doing enough to protect ourselves and our social graph from this invasive overreach.</p> -<p>When stored, aggregated and analyzed, this metadata provides ample information that could potentially incriminate someone or be submitted to authorities. When WhatsApp and Facebook Messenger enabled end-to-end encryption for messages, of course it was a welcome and widely celebrated change. But it’s important to remember that not all end-to-end encryption utilizes the same standards, <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html">some implementations are more secure</a> than others, so it’s something that shouldn’t necessarily be accepted at face value. More importantly: collecting and storing an obscene amount of metadata should invite global scrutiny, considering this data is often combined with whatever other information companies like Meta harvest about your identity (which is <a href="https://www.vox.com/recode/23172691/meta-tracking-privacy-hospitals">a lot</a>.)</p> +<p>When stored, aggregated and analyzed, this metadata provides ample information that could potentially incriminate someone or be submitted to authorities. When WhatsApp and Facebook Messenger enabled end-to-end encryption for messages, of course it was a welcome and widely celebrated change. But it’s important to remember that not all end-to-end encryption utilizes the same standards, <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#how-secure-is-end-to-end-encryption-in-different-messengers">some implementations are more secure</a> than others, so it’s something that shouldn’t necessarily be accepted at face value. More importantly: collecting and storing an obscene amount of metadata should invite global scrutiny, considering this data is often combined with whatever other information companies like Meta harvest about your identity (which is <a href="https://www.vox.com/recode/23172691/meta-tracking-privacy-hospitals">a lot</a>.)</p> <img src="https://simplex.chat/blog/images/20240416-metadata.png" class="float-to-right" width="38%" /> <p>This is one of the many reasons why we need to resist giving out our phone numbers just to access an app, especially to do something as personal and intimate as private messaging. Even though users can sometimes mask their numbers with a username, their identity on the app is still fundamentally tied to their phone number. App operators have access to this, as well as user contacts. Additionally, with a simple modification to the app's source code, the contacts may also gain access in some cases. This should raise more concerns about privacy, and it makes the need for anonymity difficult to achieve.</p> <p>Everyone has a different threat model (and if you don’t yet, now is a good time to <a href="https://www.privacyguides.org/en/basics/threat-modeling/#creating-your-threat-model">create one</a>). For many users today, WhatsApp and other apps may be sufficient for their specific needs, especially in connecting with families and friends who are already on the app and unlikely to migrate elsewhere. If that suits your life and needs, and if you’re aware and consciously accept the risks, great.</p> @@ -330,15 +330,15 @@ <p><strong>Published:</strong> Mar 23, 2024</p> <p>SimpleX network: deliver real privacy via a profitable business and non-profit protocol governance:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">community and business interests are aligned</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">the journey to the decentralized non-profit protocol governance</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">welcome, Esra’a</a>!</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#community-and-business-interests-are-aligned">community and business interests are aligned</a>.</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#the-journey-to-the-decentralized-non-profit-protocol-governance">the journey to the decentralized non-profit protocol governance</a>.</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#welcome-esraa">welcome, Esra’a</a>!</li> </ul> <p>What's new in v5.6:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">quantum resistant end-to-end encryption</a> (BETA) – enable it for the new contacts.</li> -<li><a href="https://simplex.chat/blog/undefined">use the app during the audio and video calls</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">migrate all app data to another device via QR code</a>.</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#quantum-resistant-end-to-end-encryption-beta">quantum resistant end-to-end encryption</a> (BETA) – enable it for the new contacts.</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#use-the-app-during-the-audio-and-video-calls">use the app during the audio and video calls</a>.</li> +<li><a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html#migrate-all-app-data-to-another-device-via-qr-code">migrate all app data to another device via QR code</a>.</li> </ul> <p>There are many other improvements and fixes in this release:</p> <ul> @@ -361,7 +361,7 @@ <h2 id="whats-new-in-v56" tabindex="-1">What's new in v5.6</h2> <h3 id="quantum-resistant-end-to-end-encryption-beta" tabindex="-1">Quantum resistant end-to-end encryption (BETA)</h3> <p>Adding post-quantum resistance to the double ratchet end-to-end encryption algorithm in SimpleX Chat is a major upgrade to messaging protocols, and it creates the security against the future quantum computers.</p> -<p>I wrote in detail in the previous post about various properties of end-to-end encryption and how exactly quantum resistance is implemented in SimpleX Chat - currently SimpleX Chat has <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html">the most secure end-to-end encryption design</a> against the present and future attacks.</p> +<p>I wrote in detail in the previous post about various properties of end-to-end encryption and how exactly quantum resistance is implemented in SimpleX Chat - currently SimpleX Chat has <a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#how-secure-is-end-to-end-encryption-in-different-messengers">the most secure end-to-end encryption design</a> against the present and future attacks.</p> <p>We plan to perform a security audit of this design and implementation later this year.</p> <p>Post-quantum encryption is currently added as opt-in and has to be separately enabled to be active for the new contacts, and, additionally, can be enabled for the existing contacts.</p> <p><img src="https://simplex.chat/blog/images/20240314-pq1.png" width="288" /> <img src="https://simplex.chat/blog/images/20240314-pq2.png" width="288" /> <img src="https://simplex.chat/blog/images/20240314-pq3.png" width="288" /></p> @@ -386,8 +386,8 @@ <p>Since we added the audio and video calls in 2022 a lot of work was done to improve the stability of calls. One of the usability downsides until this release was that it was impossible to use the app during the call.</p> <p>This version solved this problem - now you can return back to the app without interrupting the call and use any of the app functions - for example, you can send the messages or files to the person you are in the call with. If this is a video call, you will continue seeing your contact in a small picture-in-picture view.</p> <h3 id="migrate-all-app-data-to-another-device-via-qr-code" tabindex="-1">Migrate all app data to another device via QR code</h3> -<p>We always believed that cross-platform data portability is very important for any software. Users own their data, and they should have a way to export it from any software they use. So from the version of SimpleX Chat <a href="https://simplex.chat/blog/20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.html">released in July 2022</a> it was possible to export the database as a self-contained file, including all contacts, messages and files, and import it on a new device.</p> -<p><em>&quot;How can I migrate my data to another device?&quot;</em> was one of the most frequent user questions, but until this release this process was <a href="https://simplex.chat/blog/undefined">quite complex</a>, requiring too many steps, and most non-technical users were not willing to try it, as even though it was reliable, it appeared risky.</p> +<p>We always believed that cross-platform data portability is very important for any software. Users own their data, and they should have a way to export it from any software they use. So from the version of SimpleX Chat <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">released in July 2022</a> it was possible to export the database as a self-contained file, including all contacts, messages and files, and import it on a new device.</p> +<p><em>&quot;How can I migrate my data to another device?&quot;</em> was one of the most frequent user questions, but until this release this process was <a href="https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html">quite complex</a>, requiring too many steps, and most non-technical users were not willing to try it, as even though it was reliable, it appeared risky.</p> <p>This release made the app data migration very simple, see the steps below.</p> <p><strong>Start the migration on the source device</strong></p> <p><img src="https://simplex.chat/blog/images/20240323-migrate-from1.png" width="170" /> <img src="https://simplex.chat/blog/images/arrow.png" width="24" /> <img src="https://simplex.chat/blog/images/20240323-migrate-from2.png" width="170" /> <img src="https://simplex.chat/blog/images/arrow.png" width="24" /> <img src="https://simplex.chat/blog/images/20240323-migrate-from3.png" width="170" /> <img src="https://simplex.chat/blog/images/arrow.png" width="24" /> <img src="https://simplex.chat/blog/images/20240323-migrate-from4.png" width="170" /> <img src="https://simplex.chat/blog/images/arrow.png" width="24" /> <img src="https://simplex.chat/blog/images/20240323-migrate-from5.png" width="170" /></p> @@ -412,8 +412,8 @@ <p>The database cannot be used on two devices at the same time, doing so would make it impossible to decrypt the received messages. This is a security measure - the break-in recovery property of double ratchet algorithm.</p> <h2 id="simplex-network" tabindex="-1">SimpleX network</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -442,9 +442,9 @@ <p>This is a major upgrade for SimpleX messaging protocols, we are really proud to present the results of the hard work of our whole team on the <a href="https://en.wikipedia.org/wiki/Pi_Day">Pi day</a>.</p> <p>This post also covers various aspects of end-to-end encryption, compares different messengers, and explains why and how quantum-resistant encryption is added to SimpleX Chat:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">Why do we need end-to-end encryption?</a></li> -<li><a href="https://simplex.chat/blog/undefined">Why is encryption even allowed?</a></li> -<li><a href="https://simplex.chat/blog/undefined">End-to-end encryption security: attacks and defense.</a> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#why-do-we-need-end-to-end-encryption">Why do we need end-to-end encryption?</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#why-is-encryption-even-allowed">Why is encryption even allowed?</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#end-to-end-encryption-security-attacks-and-defense">End-to-end encryption security: attacks and defense.</a> <ol> <li>Compromised message size - mitigated by padding messages to a fixed block size.</li> <li>Compromised confidentiality - mitigated by repudiation (deniability).</li> @@ -454,10 +454,10 @@ <li>&quot;Record now, decrypt later&quot; attacks - mitigated by post-quantum cryptography.</li> </ol> </li> -<li><a href="https://simplex.chat/blog/undefined">How secure is encryption in different messengers?</a></li> -<li><a href="https://simplex.chat/blog/undefined">Adding quantum resistance to Signal double ratchet algorithm.</a></li> -<li><a href="https://simplex.chat/blog/undefined">When can you start using quantum resistant chats?</a></li> -<li><a href="https://simplex.chat/blog/undefined">Next for post-quantum crypto - all direct chats, small groups and security audit.</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#how-secure-is-end-to-end-encryption-in-different-messengers">How secure is encryption in different messengers?</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#adding-quantum-resistance-to-signal-double-ratchet-algorithm">Adding quantum resistance to Signal double ratchet algorithm.</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#when-can-you-start-using-quantum-resistant-chats">When can you start using quantum resistant chats?</a></li> +<li><a href="https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#next-for-post-quantum-crypto---all-direct-chats-small-groups-and-security-audit">Next for post-quantum crypto - all direct chats, small groups and security audit.</a></li> </ul> <h2 id="why-do-we-need-end-to-end-encryption" tabindex="-1">Why do we need end-to-end encryption?</h2> <p>The objective of end-to-end encryption is to make any potential attackers, such as traffic observers or communication providers who pass the messages between senders and recipients, unable to recover <em>any</em> message content or meaningful information about the messages, even if these attackers possess very advanced computing and mathematical capabilities.</p> @@ -490,7 +490,7 @@ <p>The only effective mitigation to these attacks is to pad all messages to a fixed size. Using space-efficient schemes like Padme, or padding to encryption block size is ineffective for mitigating these attacks, as they still allow differentiating message sizes.</p> <p>To the best of our knowledge, the only messengers other than SimpleX Chat that pad all messages to a fixed packet size are Cwtch and no longer developed <a href="https://github.com/agl/pond">Pond</a> - SimpleX design can be seen as an evolution of Pond design.</p> <h3 id="2-compromised-confidential-messages-mitigated-by-repudiation-deniability" tabindex="-1">2. Compromised confidential messages - mitigated by repudiation (deniability)</h3> -<p>Many users are very interested in having ability to irreversibly delete sent messages from the recipients devices. But not only would this ability violate data sovereignty of device owners, it is also completely ineffective, as the recipients could simply put the device offline or use a modified client app to ignore message deletion requests. While SimpleX Chat provides such features as <a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html">disappearing messages</a> and the ability to <a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html">irreversibly delete sent messages</a> provided both parties agree to that, these are convenience features, and they cannot be considered security measures.</p> +<p>Many users are very interested in having ability to irreversibly delete sent messages from the recipients devices. But not only would this ability violate data sovereignty of device owners, it is also completely ineffective, as the recipients could simply put the device offline or use a modified client app to ignore message deletion requests. While SimpleX Chat provides such features as <a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#disappearing-messages">disappearing messages</a> and the ability to <a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html#irreversible-message-deletion">irreversibly delete sent messages</a> provided both parties agree to that, these are convenience features, and they cannot be considered security measures.</p> <p>The solution to that is well known to cryptographers - it is the quality of the encryption algorithms called &quot;repudiation&quot;, sometimes also called &quot;deniability&quot;. This is the ability of the senders to plausibly deny having sent any messages, because cryptographic algorithms used to encrypt allow recipients forging these messages on their devices, so while the encryption proves authenticity of the message to the recipient, it cannot be used as a proof to any third party.</p> <p>Putting it all in a simpler language - a sender can claim that the recipient forged messages on their device, and deny ever having sent them. The recipient will not be able to provide any cryptographic proof. This quality makes digital conversation having the same qualities as private off-the-record conversation - that's why the family of algorithms that provide these qualities are called off-the-record (OTR) encryption.</p> <p>Repudiation is still a rather new concept - the first off-the-record algorithms were proposed in 2004 and were only offered to a wide range of users in Signal messenger. This concept is still quite badly understood by users and society, and yet to have been used as the defense in any public court cases, as legal systems evolve much slower than technology. In high profile cases repudiation can be used as an effective evidence for the defense.</p> @@ -584,8 +584,8 @@ <p>Thank you for helping us improve the app, and look forward to your feedback.</p> <h2 id="simplex-network" tabindex="-1">SimpleX network</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -611,7 +611,7 @@ https://simplex.chat/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.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/undefined">SimpleX Chat infrastructure on Linode</a>:</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> @@ -619,10 +619,10 @@ </ul> <p>What's new in v5.5:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">private notes</a></li> -<li><a href="https://simplex.chat/blog/undefined">group history</a></li> -<li><a href="https://simplex.chat/blog/undefined">simpler UX to connect to other users</a></li> -<li><a href="https://simplex.chat/blog/undefined">message delivery stability and other improvements</a></li> +<li><a href="https://simplex.chat/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html#private-notes">private notes</a></li> +<li><a href="https://simplex.chat/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html#group-history">group history</a></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> @@ -669,8 +669,8 @@ </ul> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -697,17 +697,17 @@ <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/undefined">Link mobile and desktop apps via secure quantum-resistant protocol</a>. +<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>How does it work?</li> <li>🤖 Connecting to remote CLI.</li> </ul> </li> -<li><a href="https://simplex.chat/blog/undefined">Better groups</a>. +<li><a href="https://simplex.chat/blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.html#better-groups">Better groups</a>. <ul> -<li><a href="https://simplex.chat/blog/undefined">Faster to join and more reliable</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">New group features</a>: +<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> @@ -716,9 +716,9 @@ </li> </ul> </li> -<li><a href="https://simplex.chat/blog/undefined">Better calls</a>: faster to connect, with screen sharing on desktop.</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/undefined">other improvements</a> and fixes in this release:</p> +<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> @@ -740,7 +740,7 @@ <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/docs/glossary.html">double-ratchet algorithm</a>, with <a href="https://simplex.chat/docs/glossary.html">perfect forward secrecy</a>, <a href="https://simplex.chat/docs/glossary.html">post-compromise security</a> and deniability.</p> +<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/docs/glossary.html#double-ratchet-algorithm">double-ratchet algorithm</a>, with <a href="https://simplex.chat/docs/glossary.html#forward-secrecy">perfect forward secrecy</a>, <a href="https://simplex.chat/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> @@ -780,8 +780,8 @@ <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -808,10 +808,10 @@ <p><strong>Published:</strong> September 25, 2023</p> <p><strong>What's new in v5.3:</strong></p> <ul> -<li><a href="https://simplex.chat/blog/undefined">new desktop app!</a>!</li> -<li><a href="https://simplex.chat/blog/undefined">directory service and other group improvements</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">encrypted local files and media with forward secrecy</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">simplified incognito mode</a>.</li> +<li><a href="https://simplex.chat/blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.html#multiplatform-desktop-app">new desktop app!</a>!</li> +<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> +<li><a href="https://simplex.chat/blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.html#simplified-incognito-mode">simplified incognito mode</a>.</li> </ul> <p>There are a lot of other improvements and fixes in this release:</p> <ul> @@ -904,16 +904,16 @@ <p><strong>Published:</strong> July 22, 2023</p> <p><strong>What's new in v5.2:</strong></p> <ul> -<li><a href="https://simplex.chat/blog/undefined">message delivery receipts</a> – with opt-out per contact!</li> -<li><a href="https://simplex.chat/blog/undefined">filter favorite and unread chats</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">more usable groups</a>: +<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#more-usable-groups">more usable groups</a>: <ul> <li>view full original replied message in info.</li> <li>share your address with your contacts and group members via your chat profile.</li> <li>search new and existing members.</li> </ul> </li> -<li><a href="https://simplex.chat/blog/undefined">stability improvements</a>: +<li><a href="https://simplex.chat/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html#stability-improvements">stability improvements</a>: <ul> <li>keep your connections working after restoring from backup.</li> <li>restart app (Android) or reconnect servers (iOS).</li> @@ -923,28 +923,28 @@ </li> <li>other improvements: <ul> -<li><a href="https://simplex.chat/blog/undefined">better disappearing messages</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">prohibit message reactions</a>.</li> +<li><a href="https://simplex.chat/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html#better-disappearing-messages">better disappearing messages</a>.</li> +<li><a href="https://simplex.chat/blog/20230722-simplex-chat-v5-2-message-delivery-receipts.html#prohibit-message-reactions">prohibit message reactions</a>.</li> </ul> </li> </ul> <p><strong>Platform evolution:</strong></p> <ul> -<li><a href="https://simplex.chat/blog/undefined">problems of public groups</a>: +<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/undefined">what about read receipts?</a></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> <h3 id="message-delivery-receipts" tabindex="-1">Message delivery receipts</h3> <img src="https://simplex.chat/blog/images/20230722-receipts.png" width="330" class="float-to-left" /> <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">visible profiles</a>, and they can be enabled later via Privacy and Security settings.</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> <img src="https://simplex.chat/blog/images/20230722-filter.png" width="288" class="float-to-left" /> <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> @@ -963,8 +963,8 @@ <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/docs/glossary.html">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/docs/glossary.html">man-in-the-middle attacks</a>.</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/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/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> @@ -984,12 +984,12 @@ <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://github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/docs/rfcs/2023-05-02-groups.md">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> +<p>We also <a href="https://simplex.chat/blog/https%3A//github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/docs/rfcs/2023-05-02-groups.md">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://github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/docs/rfcs/2023-05-22-groups-moderation.md">described here</a>.</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/https%3A//github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/docs/rfcs/2023-05-22-groups-moderation.md">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> @@ -1028,16 +1028,16 @@ <p><strong>Published:</strong> May 23, 2023</p> <p>What's new in v5.1:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">message reactions</a> 🚀</li> -<li><a href="https://simplex.chat/blog/undefined">improved messages</a>: +<li><a href="https://simplex.chat/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html#message-reactions">message reactions</a> 🚀</li> +<li><a href="https://simplex.chat/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html#improved-messages">improved messages</a>: <ul> -<li><a href="https://simplex.chat/blog/undefined">voice messages up to 5 minutes</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">custom time to disappear</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">message editing history</a>.</li> +<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><a href="https://simplex.chat/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html#message-editing-history">message editing history</a>.</li> </ul> </li> -<li>new design and <a href="https://simplex.chat/blog/undefined">customizable themes</a> that you can share!<sup>*</sup></li> -<li><a href="https://simplex.chat/blog/undefined">self-destruct passcode</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> +<li><a href="https://simplex.chat/blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.html#self-destruct-passcode">self-destruct passcode</a></li> </ul> <p>There are lots of small improvements and fixes in this release:</p> <ul> @@ -1059,15 +1059,15 @@ <h2 id="improved-messages" tabindex="-1">Improved messages</h2> <h3 id="voice-messages-up-to-5-minutes-better-quality-playback-control" tabindex="-1">Voice messages: up to 5 minutes, better quality, playback control</h3> <img src="https://simplex.chat/blog/images/20230523-voice.png" width="288" class="float-to-left" /> -<p>Since <a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html">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>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><img src="https://simplex.chat/blog/images/20230523-disappearing1.png" width="288" />    <img src="https://simplex.chat/blog/images/20230523-disappearing2.png" width="288" /></p> -<p>Since <a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html">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>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> <h3 id="message-editing-history" tabindex="-1">Message editing history</h3> <img src="https://simplex.chat/blog/images/20230523-info.png" width="288" class="float-to-left" /> -<p>I <a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html">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>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> <img src="https://simplex.chat/blog/images/20230523-theme.png" width="288" class="float-to-left" /> @@ -1114,15 +1114,15 @@ <p><strong>Published:</strong> Apr 22, 2023</p> <p>SimpleX Chat vision and funding:</p> <ul> -<li><a href="https://simplex.chat/blog/undefined">why is it a commercial company?</a></li> -<li><a href="https://simplex.chat/blog/undefined">how is it funded and what is the business model?</a></li> -<li><a href="https://simplex.chat/blog/undefined">what is next?</a></li> +<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/undefined">send videos and files up to 1gb</a></li> -<li><a href="https://simplex.chat/blog/undefined">app passcode independent from system authentication</a></li> -<li><a href="https://simplex.chat/blog/undefined">networking improvements</a></li> +<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> +<li><a href="https://simplex.chat/blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.html#networking-improvements">networking improvements</a></li> </ul> <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> @@ -1142,7 +1142,7 @@ <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</a>, <a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html">live messages</a> and <a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html">hidden profiles</a>.</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> @@ -1198,15 +1198,15 @@ <p><strong>Published:</strong> Mar 28, 2023</p> <h2 id="whats-new-in-v46" tabindex="-1">What's new in v4.6</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">ARMv7a and Android 8+ support</a></li> -<li><a href="https://simplex.chat/blog/undefined">hidden chat profiles</a></li> -<li><a href="https://simplex.chat/blog/undefined">group / community moderation</a></li> -<li><a href="https://simplex.chat/blog/undefined">group welcome message</a></li> -<li><a href="https://simplex.chat/blog/undefined">improved audio/video calls</a></li> -<li><a href="https://simplex.chat/blog/undefined">reduced battery usage</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">SMP server monitoring: status bot and page</a></li> +<li><a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#armv7a-32-bit-and-android-8-support">ARMv7a and Android 8+ support</a></li> +<li><a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#hidden-chat-profiles">hidden chat profiles</a></li> +<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#group-welcome-message">group welcome message</a></li> +<li><a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#improved-audiovideo-calls">improved audio/video calls</a></li> +<li><a href="https://simplex.chat/blog/20230328-simplex-chat-v4-6-hidden-profiles.html#reduced-battery-usage">reduced battery usage</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/undefined">Chinese and Spanish interface languages</a>, thanks to the users' community and Weblate!</p> +<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> @@ -1272,11 +1272,11 @@ <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/undefined">Quick start: how to send a file using XFTP CLI</a></li> -<li><a href="https://simplex.chat/blog/undefined">What's the problem</a></li> -<li><a href="https://simplex.chat/blog/undefined">Why didn't we just use some existing solution?</a></li> -<li><a href="https://simplex.chat/blog/undefined">What is XFTP and how does it work?</a></li> -<li><a href="https://simplex.chat/blog/undefined">What is next?</a></li> +<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> @@ -1356,8 +1356,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -1384,13 +1384,13 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> Feb 4, 2023</p> <h2 id="whats-new-in-v45" tabindex="-1">What's new in v4.5</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">multiple chat profiles</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">message draft</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">transport isolation</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">reduced battery usage</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">private filenames</a>.</li> +<li><a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#multiple-chat-profiles">multiple chat profiles</a>.</li> +<li><a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#message-draft">message draft</a>.</li> +<li><a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation">transport isolation</a>.</li> +<li><a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#reduced-battery-usage">reduced battery usage</a>.</li> +<li><a href="https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#private-filenames">private filenames</a>.</li> </ul> -<p>Also, we added <a href="https://simplex.chat/blog/undefined">Italian interface</a>, thanks to the users' community and Weblate!</p> +<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> <h3 id="multiple-chat-profiles" tabindex="-1">Multiple chat profiles</h3> <p><img src="https://simplex.chat/blog/images/20230204-profiles1.png" width="288" />    <img src="https://simplex.chat/blog/images/20230204-profiles2.png" width="288" /></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> @@ -1436,8 +1436,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -1464,16 +1464,16 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> Jan 3, 2023</p> <h2 id="whats-new-in-v44" tabindex="-1">What's new in v4.4</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">disappearing messages</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">&quot;live&quot; messages</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">connection security verification</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">animated images and stickers</a> – now on iOS too.</li> +<li><a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#disappearing-messages">disappearing messages</a>.</li> +<li><a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#live-messages">&quot;live&quot; messages</a>.</li> +<li><a href="https://simplex.chat/blog/20230103-simplex-chat-v4.4-disappearing-messages.html#connection-security-verification">connection security verification</a>.</li> +<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/undefined">French language interface</a>, thanks to the users' community and Weblate!</p> +<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> <h3 id="disappearing-messages" tabindex="-1">Disappearing messages</h3> <p><img src="https://simplex.chat/blog/images/20230103-disappearing1.png" width="288" />    <img src="https://simplex.chat/blog/images/20230103-disappearing2.png" width="288" /></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">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>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> <h3 id="live-messages" tabindex="-1">&quot;Live&quot; messages</h3> <img src="https://simplex.chat/blog/images/20230103-live.png" width="288" /> @@ -1493,8 +1493,8 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>Please get in touch if you want to translate the interface into your language!</p> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">What are the risks to have identifiers assigned to the users</a>.</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> @@ -1536,10 +1536,10 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& </ul> <h2 id="whats-new-in-v43" tabindex="-1">What's new in v4.3</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">instant voice messages!</a></li> -<li><a href="https://simplex.chat/blog/undefined">irreversible deletion of sent messages for all recipients</a></li> -<li><a href="https://simplex.chat/blog/undefined">improved SMP server configuration and support for server passwords</a></li> -<li><a href="https://simplex.chat/blog/undefined">privacy and security improvements</a>: +<li><a href="https://simplex.chat/blog/20221206-simplex-chat-v4.3-voice-messages.html#instant-voice-messages">instant voice messages!</a></li> +<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> @@ -1587,9 +1587,9 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">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">Technical details and limitations</a>.</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> @@ -1718,9 +1718,9 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">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">Technical details and limitations</a>.</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> @@ -1753,24 +1753,24 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> Sep 28, 2022</p> <h2 id="whats-new-in-v4" tabindex="-1">What's new in v4</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">encrypted local chat database</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">support for self-hosted WebRTC ICE servers</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">improved stability of creating new connections: more reliable groups, files and contacts</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">deleting files and media</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">For developers - TypeScript SDK for integrating with SimpleX Chat</a> (e.g., chat bots or chat assistants).</li> +<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">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">v3.1</a> and <a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html">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">v3.2</a> announcement).</li> +<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/undefined">Implementation audit is arranged for October</a>!</p> +<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> <h3 id="local-chat-database-encryption" tabindex="-1">Local chat database encryption</h3> <img src="https://simplex.chat/blog/images/20220928-passphrase.png" width="330" /> <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> @@ -1779,7 +1779,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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> <h3 id="self-hosted-webrtc-ice-servers" tabindex="-1">Self-hosted WebRTC ICE servers</h3> <img src="https://simplex.chat/blog/images/20220928-ice-servers.png" width="330" /> -<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">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>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> @@ -1819,9 +1819,9 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">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">Technical details and limitations</a>.</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> @@ -1853,11 +1853,11 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> Sep 1, 2022</p> <h2 id="whats-new" tabindex="-1">What's new</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">Incognito mode</a></li> -<li><a href="https://simplex.chat/blog/undefined">assign names to your contacts</a></li> -<li><a href="https://simplex.chat/blog/undefined">use .onion server addresses with Tor</a></li> -<li><a href="https://simplex.chat/blog/undefined">endless scrolling and search in chats</a></li> -<li><a href="https://simplex.chat/blog/undefined">choose accent color and dark mode</a></li> +<li><a href="https://simplex.chat/blog/20220901-simplex-chat-v3.2-incognito-mode.html#incognito-mode">Incognito mode</a></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> @@ -1866,7 +1866,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& </ul> </li> </ul> -<p><a href="https://simplex.chat/blog/undefined">Implementation audit is arranged for October</a>!</p> +<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> <h3 id="incognito-mode" tabindex="-1">Incognito mode</h3> <p><img src="https://simplex.chat/blog/images/20220901-incognito1.png" width="330" /> <img src="https://simplex.chat/blog/images/20220901-incognito2.png" width="330" /> <img src="https://simplex.chat/blog/images/20220901-incognito3.png" width="330" /></p> <p><em>SimpleX is already private, so why do we need an incognito mode</em>, you may ask.</p> @@ -1897,9 +1897,9 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p>And you can choose dark or light mode independently of the system settings.</p> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">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">Technical details and limitations</a>.</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> @@ -1930,12 +1930,12 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> Aug 8, 2022</p> <h2 id="whats-new" tabindex="-1">What's new</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">secret chat groups</a>!</li> -<li><a href="https://simplex.chat/blog/undefined">access to messaging servers via Tor</a></li> -<li><a href="https://simplex.chat/blog/undefined">advanced network settings</a></li> -<li><a href="https://simplex.chat/blog/undefined">published chat protocol</a></li> -<li><a href="https://simplex.chat/blog/undefined">new app icons</a></li> -<li><a href="https://simplex.chat/blog/undefined">other changes since v3</a>: +<li><a href="https://simplex.chat/blog/20220808-simplex-chat-v3.1-chat-groups.html#secret-chat-groups">secret chat groups</a>!</li> +<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#advanced-network-settings">advanced network settings</a></li> +<li><a href="https://simplex.chat/blog/20220808-simplex-chat-v3.1-chat-groups.html#published-chat-protocol">published chat protocol</a></li> +<li><a href="https://simplex.chat/blog/20220808-simplex-chat-v3.1-chat-groups.html#new-app-icons">new app icons</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> @@ -1983,9 +1983,9 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>Some links to answer the most common questions:</p> -<p><a href="https://simplex.chat/blog/20220511-simplex-chat-v2-images-files.html">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">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">Technical details and limitations</a>.</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> @@ -2016,10 +2016,10 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> Jul 23, 2022</p> <h2 id="whats-new" tabindex="-1">What's new</h2> <ul> -<li>terminal app: <a href="https://simplex.chat/blog/undefined">access to messaging servers via SOCKS5 proxy</a> (e.g., Tor).</li> -<li>mobile apps: <a href="https://simplex.chat/blog/undefined">join and leave chat groups</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">optimized battery and traffic usage - up to 90x reduction!</a>.</li> -<li><a href="https://simplex.chat/blog/undefined">two docker configurations for self-hosted SMP servers</a>.</li> +<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> <img src="https://simplex.chat/blog/images/20220723-tor.jpg" width="480" /> @@ -2054,7 +2054,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter. <a href="https://github.com/simplex-chat/simplex-chat">SimpleX Chat</a> is our first application, a messaging application built on the SimpleX platform.</p> <h3 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">wrote previously</a> why it is bad for the users' privacy to have any identifiers, even random numbers, associated with their profiles.</p> +<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> @@ -2103,13 +2103,13 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <p><strong>Published:</strong> Jul 11, 2022</p> <h2 id="new-in-version-3" tabindex="-1">New in version 3</h2> <ul> -<li><a href="https://simplex.chat/blog/undefined">instant notifications for iOS</a></li> -<li><a href="https://simplex.chat/blog/undefined">end-to-end encrypted audio/video calls</a></li> -<li><a href="https://simplex.chat/blog/undefined">database export and import</a></li> -<li><a href="https://simplex.chat/blog/undefined">protocol privacy and performance improvements</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#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#end-to-end-encrypted-audiovideo-calls">end-to-end encrypted audio/video calls</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">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>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> @@ -2139,7 +2139,7 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <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">since v1</a>, allowing us to evolve the protocols without any disruption to the users.</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> <h2 id="simplex-platform" tabindex="-1">SimpleX platform</h2> <p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter. <a href="https://github.com/simplex-chat/simplex-chat">SimpleX Chat</a> is our first application, a messaging application built on the SimpleX platform.</p> <h3 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> @@ -2527,10 +2527,10 @@ file ---&gt; | XFTP | ------&gt; XFTP ----& <h3 id="chat-groups" tabindex="-1">Chat groups</h3> <p>To create a group use the <code>/g &lt;group&gt;</code> command. You can then invite contacts to the group by entering the <code>/a &lt;group&gt; &lt;name&gt;</code> command. Your contact(s) will need to use the <code>/j accept</code> command to accept the invitation to the group. To send messages to the group, simply enter <code>#&lt;group&gt; &lt;message&gt;</code>.</p> <p><strong>Please note:</strong> Groups are not stored on any server; they are maintained as a list of members in the app database. Sending a message to the group sends a message to each member of the group.</p> -<p><img src="https://simplex.chat/images/groups.gif" alt="simplex-chat" /></p> +<p><img src="https://simplex.chat/blog/images/groups.gif" alt="simplex-chat" /></p> <h3 id="file-transfer" tabindex="-1">File transfer</h3> <p>Sharing files is simple! To send a file to a contact, use the <code>/f @&lt;contact&gt; &lt;file_path&gt;</code> command. The recipient will have to accept before the file is sent.</p> -<p><img src="https://simplex.chat/images/files.gif" alt="simplex-chat" /></p> +<p><img src="https://simplex.chat/blog/images/files.gif" alt="simplex-chat" /></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> diff --git a/js/script.js b/js/script.js index abf7779ad3..5f863f48ee 100644 --- a/js/script.js +++ b/js/script.js @@ -1,5 +1,3 @@ -const uniqueSwiperContainer = document.querySelector('.unique-swiper') -if (uniqueSwiperContainer) { const uniqueSwiper = new Swiper('.unique-swiper', { slidesPerView: 1, spaceBetween: 80, @@ -25,15 +23,12 @@ const uniqueSwiper = new Swiper('.unique-swiper', { prevEl: '.unique-swiper-button-prev', }, }); -} const isMobile = { Android: () => navigator.userAgent.match(/Android/i), iOS: () => navigator.userAgent.match(/iPhone|iPad|iPod/i) }; -const privateSwiperContainer = document.querySelector('.private-swiper') -if (privateSwiperContainer) { const privateSwiper = new Swiper('.private-swiper', { slidesPerView: 1, slidesPerGroup: 1, @@ -84,10 +79,7 @@ const privateSwiper = new Swiper('.private-swiper', { } } }); -} -const simplexExplainedSwiperContainer = document.querySelector('.simplex-explained-swiper') -if (simplexExplainedSwiperContainer){ const simplexExplainedSwiper = new Swiper(".simplex-explained-swiper", { slidesPerView: 1, spaceBetween: 80, @@ -120,7 +112,6 @@ const simplexExplainedSwiper = new Swiper(".simplex-explained-swiper", { } } }); -} function closeOverlay(e) { e.target.closest('.overlay').classList.remove('flex'); diff --git a/privacy/index.html b/privacy/index.html index e59d567e9f..a49409b55b 100644 --- a/privacy/index.html +++ b/privacy/index.html @@ -568,27 +568,27 @@ window.addEventListener('scroll',changeHeaderBg);
    -

    SimpleX Chat Privacy Policy and Conditions of Use

    +

    SimpleX Chat Privacy Policy and Conditions of Use

    SimpleX Chat is the first communication network based on a new protocol stack that builds on the same ideas of complete openness and decentralization as email and web, with the focus on providing security and privacy of communications, and without compromising on usability.

    -

    SimpleX Chat communication protocol is the first protocol that has no user profile IDs of any kind, not even random numbers, cryptographic keys or hashes that identify the users. SimpleX Chat apps allow their users to send messages and files via relay server infrastructure. Relay server owners and providers do not have any access to your messages, thanks to double-ratchet End-to-end encryption algorithm (also known as Signal algorithm - do not confuse with Signal protocols or platform) and additional encryption layers, and they also have no access to your profile and contacts - as they do not provide any user accounts.

    -

    Double ratchet algorithm has such important properties as Forward secrecy, sender Repudiation and Break-in recovery (also known as Post-compromise security).

    +

    SimpleX Chat communication protocol is the first protocol that has no user profile IDs of any kind, not even random numbers, cryptographic keys or hashes that identify the users. SimpleX Chat apps allow their users to send messages and files via relay server infrastructure. Relay server owners and providers do not have any access to your messages, thanks to double-ratchet end-to-end encryption algorithm (also known as Signal algorithm - do not confuse with Signal protocols or platform) and additional encryption layers, and they also have no access to your profile and contacts - as they do not provide any user accounts.

    +

    Double ratchet algorithm has such important properties as forward secrecy, sender repudiation and break-in recovery (also known as post-compromise security).

    If you believe that any part of this document is not aligned with our mission or values, please raise it with us via email or chat.

    Privacy Policy

    -

    SimpleX Chat Ltd uses the best industry practices for security and encryption to provide client and server software for secure end-to-end encrypted messaging via private connections. This encryption cannot be compromised by the relays servers, even if they are modified or compromised, via Man-in-the-middle attack, unlike most other communication platforms, services and networks.

    +

    SimpleX Chat Ltd uses the best industry practices for security and encryption to provide client and server software for secure end-to-end encrypted messaging via private connections. This encryption cannot be compromised by the relays servers, even if they are modified or compromised, via man-in-the-middle attack, unlike most other communication platforms, services and networks.

    SimpleX Chat software is built on top of SimpleX messaging and application protocols, based on a new message routing protocol allowing to establish private connections without having any kind of addresses or other identifiers assigned to its users - it does not use emails, phone numbers, usernames, identity keys or any other user profile identifiers to pass messages between the user applications.

    SimpleX Chat software is similar in its design approach to email clients and browsers - it allows you to have full control of your data and freely choose the relay server providers, in the same way you choose which website or email provider to use, or use your own relay servers, simply by changing the configuration of the client software. The only current restriction to that is Apple push notifications - at the moment they can only be delivered via the preset servers that we operate, as explained below. We are exploring the solutions to deliver push notifications to iOS devices via other providers or users' own servers.

    -

    While SimpleX Chat Ltd is not a communication service provider, and provide public preset relays "as is", as experimental, without any guarantees of availability or data retention, we are committed to maintain a high level of availability, reliability and security of these preset relays. We will be adding alternative preset infrastructure providers to the software in the future, and you will continue to be able to use any other providers or your own servers.

    +

    While SimpleX Chat Ltd is not a communication service provider, and provide public preset relays "as is", as experimental, without any guarantees of availability or data retention, we are committed to maintain a high level of availability, reliability and security of these preset relays. We will be adding alternative preset infrastructure providers to the software in the future, and you will continue to be able to use any other providers or your own servers.

    We see users and data sovereignty, and device and provider portability as critically important properties for any communication system.

    SimpleX Chat security assessment was done in October 2022 by Trail of Bits, and most fixes were released in v4.2 – see the announcement.

    Your information

    User profiles

    Servers used by SimpleX Chat apps do not create, store or identify user profiles. The profiles you can create in the app are local to your device, and can be removed at any time via the app.

    When you create the local profile, no records are created on any of the relay servers, and infrastructure providers, whether SimpleX Chat Ltd or any other, have no access to any part of your information, and even to the fact that you created a profile - it is a local record stored only on your device. That means that if you delete the app, and have no backup, you will permanently lose all your data and the private connections you created with other software users.

    -

    You can transfer the profile to another device by creating a backup of the app data and restoring it on the new device, but you cannot use more than one device with the copy of the same profile at the same time - it will disrupt any active conversations on either or both devices, as a security property of End-to-end encryption.

    +

    You can transfer the profile to another device by creating a backup of the app data and restoring it on the new device, but you cannot use more than one device with the copy of the same profile at the same time - it will disrupt any active conversations on either or both devices, as a security property of end-to-end encryption.

    Messages and Files

    -

    SimpleX relay servers cannot decrypt or otherwise access the content or even the size of your messages and files you send or receive. Each message is padded to a fixed size of 16kb. Each file is sent in chunks of 64kb, 256kb, 1mb or 8mb via all or some of the configured file relay servers. Both messages and files are sent end-to-end encrypted, and the servers do not have technical means to compromise this encryption, because part of the Key exchange happens out-of-band.

    +

    SimpleX relay servers cannot decrypt or otherwise access the content or even the size of your messages and files you send or receive. Each message is padded to a fixed size of 16kb. Each file is sent in chunks of 64kb, 256kb, 1mb or 8mb via all or some of the configured file relay servers. Both messages and files are sent end-to-end encrypted, and the servers do not have technical means to compromise this encryption, because part of the key exchange happens out-of-band.

    Your message history is stored only on your own device and the devices of your contacts. While the recipients' devices are offline, messaging relay servers temporarily store end-to-end encrypted messages – you can configure which relay servers are used to receive the messages from the new contacts, and you can manually change them for the existing contacts too.

    -

    You do not have control over which servers are used to send messages to your contacts - they are chosen by them. To send messages your client needs to connect to these servers, therefore the servers chosen by your contacts can observe your IP address. You can use VPN or some Overlay network (e.g., Tor) to hide your IP address from the servers chosen by your contacts. In the near future we will add the layer in the messaging protocol that will route sent message via the relays chosen by you as well.

    +

    You do not have control over which servers are used to send messages to your contacts - they are chosen by them. To send messages your client needs to connect to these servers, therefore the servers chosen by your contacts can observe your IP address. You can use VPN or some overlay network (e.g., Tor) to hide your IP address from the servers chosen by your contacts. In the near future we will add the layer in the messaging protocol that will route sent message via the relays chosen by you as well.

    The messages are permanently removed from the used relay servers as soon as they are delivered, as long as these servers used unmodified published code. Undelivered messages are deleted after the time that is configured in the messaging servers you use (21 days for preset messaging servers).

    The files are stored on file relay servers for the time configured in the relay servers you use (48 hours for preset file servers).

    If a messaging servers are restarted, the encrypted message can be stored in a backup file until it is overwritten by the next restart (usually within 1 week for preset relay servers).

    @@ -599,18 +599,18 @@ window.addEventListener('scroll',changeHeaderBg);

    SimpleX relay servers do not store information about which queues are linked to your profile on the device, and they do not collect any information that would allow infrastructure owners and providers to establish that these queues are related to your device or your profile - the access to each queue is authorized by two anonymous unique cryptographic keys, different for each queue, and separate for sender and recipient of the messages.

    When you create a connection with another user, the app generates a link/QR code that can be shared with the user to establish the connection via any channel (email, any other messenger, or a video call). This link is safe to share via insecure channels, as long as you can identify the recipient and also trust that this channel did not replace this link (to mitigate the latter risk you can validate the security code via the app).

    -

    While the connection "links" contain SimpleX Chat Ltd domain name simplex.chat, this site is never accessed by the app, and is only used for these purposes:

    +

    While the connection "links" contain SimpleX Chat Ltd domain name simplex.chat, this site is never accessed by the app, and is only used for these purposes:

    • to direct the new users to the app download instructions,
    • to show connection QR code that can be scanned via the app,
    • -
    • to "namespace" these links,
    • +
    • to "namespace" these links,
    • to open links directly in the installed app when it is clicked outside of the app.
    -

    You can always safely replace the initial part of the link https://simplex.chat/ either with simplex:/ (which is a URI scheme provisionally registered with IANA) or with any other domain name where you can self-host the app download instructions and show the connection QR code (but in case it is your domain, it will not open in the app). Also, while the page renders QR code, all the information needed to render it is only available to the browser, as the part of the "link" after # symbol is not sent to the website server.

    +

    You can always safely replace the initial part of the link https://simplex.chat/ either with simplex:/ (which is a URI scheme provisionally registered with IANA) or with any other domain name where you can self-host the app download instructions and show the connection QR code (but in case it is your domain, it will not open in the app). Also, while the page renders QR code, all the information needed to render it is only available to the browser, as the part of the "link" after # symbol is not sent to the website server.

    iOS Push Notifications

    When you choose to use instant push notifications in SimpleX iOS app, because the design of push notifications requires storing the device token on notification server, the notifications server can observe how many messaging queues your device has notifications enabled for, and approximately how many messages are sent to each queue.

    Preset notification server cannot observe the actual addresses of these queues, as a separate address is used to subscribe to the notifications. It also cannot observe who sends messages to you. Apple push notifications servers can only observe how many notifications are sent to you, but not from how many contacts, or from which messaging relays, as notifications are delivered to your device end-to-end encrypted by one of the preset notification servers - these notifications only contain end-to-end encrypted metadata, not even encrypted message content, and they look completely random to Apple push notification servers.

    -

    You can read more about the design of iOS push notifications here.

    +

    You can read more about the design of iOS push notifications here.

    Another information stored on the servers

    Additional technical information can be stored on our servers, including randomly generated authentication tokens, keys, push tokens, and other material that is necessary to transmit messages. SimpleX Chat design limits this additional technical information to the minimum required to operate the software and servers. To prevent server overloading or attacks, the servers can temporarily store data that can link to particular users or devices, including IP addresses, geographic location, or information related to the transport sessions. This information is not stored for the absolute majority of the app users, even for those who use the servers very actively.

    SimpleX Directory

    @@ -634,10 +634,10 @@ window.addEventListener('scroll',changeHeaderBg);

    Please also read our Conditions of Use of Software and Infrastructure below.

    If you have questions about our Privacy Policy please contact us via email or chat.

    Conditions of Use of Software and Infrastructure

    -

    You accept the Conditions of Use of Software and Infrastructure ("Conditions") by installing or using any of our software or using any of our server infrastructure (collectively referred to as "Applications"), whether preset in the software or not.

    +

    You accept the Conditions of Use of Software and Infrastructure ("Conditions") by installing or using any of our software or using any of our server infrastructure (collectively referred to as "Applications"), whether preset in the software or not.

    Minimal age. You must be at least 13 years old to use our Applications. The minimum age to use our Applications without parental approval may be higher in your country.

    Infrastructure. Our Infrastructure includes preset messaging and file relay servers, and iOS push notification servers provided by SimpleX Chat Ltd for public use. Our infrastructure does not have any modifications from the published open-source code available under AGPLv3 license. Any infrastructure provider, whether commercial or not, is required by the Affero clause (named after Affero Inc. company that pioneered the community-based Q&A sites in early 2000s) to publish any modifications under the same license. The statements in relation to Infrastructure and relay servers anywhere in this document assume no modifications to the published code, even in the cases when it is not explicitly stated.

    -

    Client applications. Our client application Software (referred to as "app" or "apps") also has no modifications compared with published open-source code, and any developers of the alternative client apps based on our code are required to publish any modifications under the same AGPLv3 license. Client applications should not include any tracking or analytics code, and do not share any information with SimpleX Chat Ltd or any other third parties. If you ever discover any tracking or analytics code, please report it to us, so we can remove it.

    +

    Client applications. Our client application Software (referred to as "app" or "apps") also has no modifications compared with published open-source code, and any developers of the alternative client apps based on our code are required to publish any modifications under the same AGPLv3 license. Client applications should not include any tracking or analytics code, and do not share any information with SimpleX Chat Ltd or any other third parties. If you ever discover any tracking or analytics code, please report it to us, so we can remove it.

    Accessing the infrastructure. For the efficiency of the network access, the client Software by default accesses all queues your app creates on any relay server within one user profile via the same network (TCP/IP) connection. At the cost of additional traffic this configuration can be changed to use different transport session for each connection. Relay servers do not collect information about which queues were created or accessed via the same connection, so the relay servers cannot establish which queues belong to the same user profile. Whoever might observe your network traffic would know which relay servers you use, and how much data you send, but not to whom it is sent - the data that leaves the servers is always different from the data they receive - there are no identifiers or ciphertext in common, even inside TLS encryption layer. Please refer to our technical design document for more information about our privacy model and known security and privacy risks.

    Privacy of user data. Servers do not retain any data we transmit for any longer than necessary to deliver the messages between apps. SimpleX Chat Ltd collects aggregate statistics across all its servers, as supported by published code and can be enabled by any infrastructure provider, but not any statistics per-user, or per geographic location, or per IP address, or per transport session. We do not have information about how many people use SimpleX Chat applications, we only know an approximate number of app installations and the aggregate traffic through the preset servers. In any case, we do not and will not sell or in any way monetize user data. Our future business model assumes charging for some optional Software features instead, in a transparent and fair way.

    Operating our Infrastructure. For the purpose of using our Software, if you continue using preset servers, you agree that your end-to-end encrypted messages are transferred via the preset servers in any countries where we have or use facilities and service providers or partners. The information about geographic location of the servers will be made available in the apps in the near future.

    @@ -650,10 +650,10 @@ window.addEventListener('scroll',changeHeaderBg);

    Storing the files on the device. The files currently sent and received in the apps by default (except CLI app) are stored on your device encrypted using unique keys, different for each file, that are stored in the database. Once the message that the file was attached to is removed, even if the copy of the encrypted file is retained, it should be impossible to recover the key allowing to decrypt the file. This local file encryption may affect app performance, and it can be disabled via the app settings. This change will only affect the new files. If you later re-enable the encryption, it will also affect only the new files. If you make a backup of the app data and store it unencrypted, the backup provider will be able to access any unencrypted files. In any case, irrespective of the storage setting, the files are always sent by all apps end-to-end encrypted.

    No Access to Emergency Services. Our Applications do not provide access to emergency service providers like the police, fire department, hospitals, or other public safety organizations. Make sure you can contact emergency service providers through a mobile, fixed-line telephone, or other service.

    Third-party services. Our Applications may allow you to access, use, or interact with our or third-party websites, apps, content, and other products and services. When you use third-party services, their terms and privacy policies govern your use of those services.

    -

    Your Rights. You own the messages and the information you transmit through our Applications. Your recipients are able to retain the messages they receive from you; there is no technical ability to delete data from their devices. While there are various app features that allow deleting messages from the recipients' devices, such as disappearing messages and full message deletion, their functioning on your recipients' devices cannot be guaranteed or enforced, as the device may be offline or have a modified version of the Software. At the same time, Repudiation property of the End-to-end encryption algorithm allows you to plausibly deny having sent the message, like you can deny what you said in a private face-to-face conversation, as the recipient cannot provide any proof to the third parties, by design.

    +

    Your Rights. You own the messages and the information you transmit through our Applications. Your recipients are able to retain the messages they receive from you; there is no technical ability to delete data from their devices. While there are various app features that allow deleting messages from the recipients' devices, such as disappearing messages and full message deletion, their functioning on your recipients' devices cannot be guaranteed or enforced, as the device may be offline or have a modified version of the Software. At the same time, repudiation property of the end-to-end encryption algorithm allows you to plausibly deny having sent the message, like you can deny what you said in a private face-to-face conversation, as the recipient cannot provide any proof to the third parties, by design.

    License. SimpleX Chat Ltd grants you a limited, revocable, non-exclusive, and non-transferable license to use our Applications in accordance with these Conditions. The source-code of Applications is available and can be used under AGPL v3 license.

    SimpleX Chat Ltd Rights. We own all copyrights, trademarks, domains, logos, trade secrets, and other intellectual property rights associated with our Applications. You may not use our copyrights, trademarks, domains, logos, and other intellectual property rights unless you have our written permission, and unless under an open-source license distributed together with the source code. To report copyright, trademark, or other intellectual property infringement, please contact chat@simplex.chat.

    -

    Disclaimers. YOU USE OUR APPLICATIONS AT YOUR OWN RISK AND SUBJECT TO THE FOLLOWING DISCLAIMERS. WE PROVIDE OUR APPLICATIONS ON AN “AS IS” BASIS WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, AND FREEDOM FROM COMPUTER VIRUS OR OTHER HARMFUL CODE. SIMPLEX CHAT LTD DOES NOT WARRANT THAT ANY INFORMATION PROVIDED BY US IS ACCURATE, COMPLETE, OR USEFUL, THAT OUR APPLICATIONS WILL BE OPERATIONAL, ERROR-FREE, SECURE, OR SAFE, OR THAT OUR APPLICATIONS WILL FUNCTION WITHOUT DISRUPTIONS, DELAYS, OR IMPERFECTIONS. WE DO NOT CONTROL, AND ARE NOT RESPONSIBLE FOR, CONTROLLING HOW OR WHEN OUR USERS USE OUR APPLICATIONS. WE ARE NOT RESPONSIBLE FOR THE ACTIONS OR INFORMATION (INCLUDING CONTENT) OF OUR USERS OR OTHER THIRD PARTIES. YOU RELEASE US, AFFILIATES, DIRECTORS, OFFICERS, EMPLOYEES, PARTNERS, AND AGENTS ("SIMPLEX PARTIES") FROM ANY CLAIM, COMPLAINT, CAUSE OF ACTION, CONTROVERSY, OR DISPUTE (TOGETHER, "CLAIM") AND DAMAGES, KNOWN AND UNKNOWN, RELATING TO, ARISING OUT OF, OR IN ANY WAY CONNECTED WITH ANY SUCH CLAIM YOU HAVE AGAINST ANY THIRD PARTIES.

    +

    Disclaimers. YOU USE OUR APPLICATIONS AT YOUR OWN RISK AND SUBJECT TO THE FOLLOWING DISCLAIMERS. WE PROVIDE OUR APPLICATIONS ON AN “AS IS” BASIS WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, AND FREEDOM FROM COMPUTER VIRUS OR OTHER HARMFUL CODE. SIMPLEX CHAT LTD DOES NOT WARRANT THAT ANY INFORMATION PROVIDED BY US IS ACCURATE, COMPLETE, OR USEFUL, THAT OUR APPLICATIONS WILL BE OPERATIONAL, ERROR-FREE, SECURE, OR SAFE, OR THAT OUR APPLICATIONS WILL FUNCTION WITHOUT DISRUPTIONS, DELAYS, OR IMPERFECTIONS. WE DO NOT CONTROL, AND ARE NOT RESPONSIBLE FOR, CONTROLLING HOW OR WHEN OUR USERS USE OUR APPLICATIONS. WE ARE NOT RESPONSIBLE FOR THE ACTIONS OR INFORMATION (INCLUDING CONTENT) OF OUR USERS OR OTHER THIRD PARTIES. YOU RELEASE US, AFFILIATES, DIRECTORS, OFFICERS, EMPLOYEES, PARTNERS, AND AGENTS ("SIMPLEX PARTIES") FROM ANY CLAIM, COMPLAINT, CAUSE OF ACTION, CONTROVERSY, OR DISPUTE (TOGETHER, "CLAIM") AND DAMAGES, KNOWN AND UNKNOWN, RELATING TO, ARISING OUT OF, OR IN ANY WAY CONNECTED WITH ANY SUCH CLAIM YOU HAVE AGAINST ANY THIRD PARTIES.

    Limitation of liability. THE SIMPLEX PARTIES WILL NOT BE LIABLE TO YOU FOR ANY LOST PROFITS OR CONSEQUENTIAL, SPECIAL, PUNITIVE, INDIRECT, OR INCIDENTAL DAMAGES RELATING TO, ARISING OUT OF, OR IN ANY WAY IN CONNECTION WITH OUR CONDITIONS, US, OR OUR APPLICATIONS, EVEN IF THE SIMPLEX PARTIES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. OUR AGGREGATE LIABILITY RELATING TO, ARISING OUT OF, OR IN ANY WAY IN CONNECTION WITH OUR CONDITIONS, US, OR OUR APPLICATIONS WILL NOT EXCEED ONE DOLLAR ($1). THE FOREGOING DISCLAIMER OF CERTAIN DAMAGES AND LIMITATION OF LIABILITY WILL APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW. THE LAWS OF SOME JURISDICTIONS MAY NOT ALLOW THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES, SO SOME OR ALL OF THE EXCLUSIONS AND LIMITATIONS SET FORTH ABOVE MAY NOT APPLY TO YOU. NOTWITHSTANDING ANYTHING TO THE CONTRARY IN OUR CONDITIONS, IN SUCH CASES, THE LIABILITY OF THE SIMPLEX PARTIES WILL BE LIMITED TO THE EXTENT PERMITTED BY APPLICABLE LAW.

    Availability. Our Applications may be disrupted, including for maintenance, upgrades, or network or equipment failures. We may discontinue some or all of our Applications, including certain features and the support for certain devices and platforms, at any time.

    Resolving disputes. You agree to resolve any Claim you have with us relating to or arising from our Conditions, us, or our Applications in the courts of England and Wales. You also agree to submit to the personal jurisdiction of such courts for the purpose of resolving all such disputes. The laws of England govern our Conditions, as well as any disputes, whether in court or arbitration, which might arise between SimpleX Chat Ltd and you, without regard to conflict of law provisions.

    @@ -661,17 +661,7 @@ window.addEventListener('scroll',changeHeaderBg);

    Enforcing the conditions. If we fail to enforce any of our Conditions, that does not mean we waive the right to enforce them. If any provision of the Conditions is deemed unlawful, void, or unenforceable, that provision shall be deemed severable from our Conditions and shall not affect the enforceability of the remaining provisions. Our Applications are not intended for distribution to or use in any country where such distribution or use would violate local law or would subject us to any regulations in another country. We reserve the right to limit our Applications in any country. If you have specific questions about these Conditions, please contact us at chat@simplex.chat.

    Ending these conditions. You may end these Conditions with SimpleX Chat Ltd at any time by deleting our Applications from your devices and discontinuing use of our Infrastructure. The provisions related to Licenses, Disclaimers, Limitation of Liability, Resolving dispute, Availability, Changes to the conditions, Enforcing the conditions, and Ending these conditions will survive termination of your relationship with SimpleX Chat Ltd.

    Updated April 24, 2024

    -

    Break-in recovery

    Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

    Double ratchet algorithm

    It is used by two parties to exchange end-to-end encrypted messages. The parties will use some key agreement protocol to agree on the initial shared secret key.

    End-to-end encryption

    A communication system where only the communicating parties can read the messages. It is designed to protect message content from any potential eavesdroppers – telecom and Internet providers, malicious actors, and also the provider of the communication service.

    Forward secrecy

    Also known as perfect forward secrecy, it is a feature of a key agreement protocol that ensures that session keys will not be compromised even if long-term secrets used in the session key exchange are compromised. Forward secrecy protects past sessions against future compromises of session or long-term keys.

    Key exchange

    Also known as key exchange, it is a process of agreeing cryptographic keys between the sender and the recipient(s) of the message. It is required for end-to-end encryption to work.

    Man-in-the-middle attack

    The attack when the attacker secretly relays and possibly alters the communications between two parties who believe that they are directly communicating with each other.

    Overlay network

    Nodes in the overlay network can be thought of as being connected by virtual or logical links, each of which corresponds to a path, perhaps through many physical links, in the underlying network. Tor, for example, is an overlay network on top of IP network, which in its turn is also an overlay network over some underlying physical network.

    Post-compromise security

    Also known as break-in recovery, it is the quality of the end-to-end encryption scheme allowing to recover security against a passive attacker who observes encrypted messages after compromising one (or both) of the parties. Also known as recovery from compromise or break-in recovery. Double-ratchet algorithm has this quality.

    Repudiation

    The property of the cryptographic or communication system that allows the sender of the message to plausibly deny having sent the message, because while the recipient can verify that the message was sent by the sender, they cannot prove it to any third party - the recipient has a technical ability to forge the same encrypted message. This is an important quality of private communications, as it allows to have the conversation that can later be denied, similarly to having a private face-to-face conversation.

    +
    @@ -796,7 +786,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/security/index.html b/security/index.html index 05ba3560ba..aa3e54d10a 100644 --- a/security/index.html +++ b/security/index.html @@ -843,8 +843,8 @@ window.addEventListener('scroll',changeHeaderBg); -

    Security Policy

    -

    While great care is taken to ensure the highest level of security and privacy in SimpleX network servers and clients, all software can have flaws, and we believe it is a critical part of an organization's social responsibility to minimize the impact of these flaws through continual vulnerability discovery efforts, Defense in depth design, and prompt remediation and notification.

    +

    Security Policy

    +

    While great care is taken to ensure the highest level of security and privacy in SimpleX network servers and clients, all software can have flaws, and we believe it is a critical part of an organization's social responsibility to minimize the impact of these flaws through continual vulnerability discovery efforts, defense in depth design, and prompt remediation and notification.

    The security assessment of SimpleX cryptography and networking was done by Trail of Bits in November 2022.

    We are planning design review of SimpleX protocols in July 2024 and implementation review in December 2024/January 2025.

    Reporting security issues

    @@ -897,17 +897,7 @@ window.addEventListener('scroll',changeHeaderBg);
  • we may also include organizations with which we have a commercial relationship.
  • we may withdraw notifying certain organizations if they leak issues before they are public or do not add value.
  • -

    Defense in depth

    Originally, it is a military strategy that seeks to delay rather than prevent the advance of an attacker, buying time and causing additional casualties by yielding space.

    +
    @@ -1037,7 +1027,6 @@ window.addEventListener('scroll',changeHeaderBg); - diff --git a/transparency/index.html b/transparency/index.html index 48e54acb82..56632c43e2 100644 --- a/transparency/index.html +++ b/transparency/index.html @@ -843,7 +843,7 @@ window.addEventListener('scroll',changeHeaderBg); -

    Transparency Reports

    +

    Transparency Reports

    Updated: Apr 26, 2024

    SimpleX Chat Ltd. is a company registered in the UK – it develops communication software enabling users to operate and communicate via SimpleX network, without user profile identifiers of any kind, and without having their data hosted by any network infrastructure operators.

    This page will include any and all reports on requests for user data.

    @@ -851,8 +851,8 @@ window.addEventListener('scroll',changeHeaderBg);

    Our objective is to consistently ensure that no user data and absolute minimum of the metadata required for the network to function is available for disclosure by any infrastructure operators, under any circumstances.

    Helpful resources:

      -
    • Privacy policy
    • -
    • Privacy and security: technical details and limitations
    • +
    • Privacy policy
    • +
    • Privacy and security: technical details and limitations
    • Whitepaper:
      • Trust in servers
      • @@ -863,17 +863,7 @@ window.addEventListener('scroll',changeHeaderBg);

      Have a more specific question? Reach out to us via SimpleX Chat or via email chat@simplex.chat.

      For any sensitive questions please use SimpleX Chat or encrypted email messages using the key for this address from keys.openpgp.org (its fingerprint is FB44 AF81 A45B DE32 7319 797C 8510 7E35 7D4A 17FC) and make your key available for a secure reply.

      -
    +
    @@ -1003,7 +993,6 @@ window.addEventListener('scroll',changeHeaderBg); -