diff --git a/CNAME b/CNAME deleted file mode 100644 index 52b6970872..0000000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -new.simplex.chat \ No newline at end of file diff --git a/blog/20220214-simplex-chat-ios-public-beta.html b/blog/20220214-simplex-chat-ios-public-beta.html index 7b322bbe3d..f375f2ad44 100644 --- a/blog/20220214-simplex-chat-ios-public-beta.html +++ b/blog/20220214-simplex-chat-ios-public-beta.html @@ -167,7 +167,7 @@
You can read more details in our recent v1 announcement.
+You can read more details in our recent v1 announcement.
Install the app via TestFlight, connect to us (via Connect to SimpleX team link in the app) and to a couple of your friends you usually send messages to - and please let us know what you think!
We would really appreciate any feedback to improve the app and to decide which additional features should be included in our public release in March.
diff --git a/blog/20220308-simplex-chat-mobile-apps.html b/blog/20220308-simplex-chat-mobile-apps.html index b613d1aaab..cb013ba9e4 100644 --- a/blog/20220308-simplex-chat-mobile-apps.html +++ b/blog/20220308-simplex-chat-mobile-apps.html @@ -181,7 +181,7 @@You can read more technical details in our recent v1 announcement.
+You can read more technical details in our recent v1 announcement.
A big thank you to @angerman for making it possible to compile our Haskell code to mobile platforms and getting it approved on app stores - it has been a non-trivial project, and it is still ongoing.
Once you install the app, you can connect to anybody:
diff --git a/blog/20220404-simplex-chat-instant-notifications.html b/blog/20220404-simplex-chat-instant-notifications.html index ed5ae85883..b6df2fe5b3 100644 --- a/blog/20220404-simplex-chat-instant-notifications.html +++ b/blog/20220404-simplex-chat-instant-notifications.html @@ -159,7 +159,7 @@Published: April 04, 2022
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!
+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!
Huge thanks to everybody who downloaded and connected to us via the chat - there were many great questions and suggestions, and on some days I spent most of the time chatting to our users :)
Since we released the app, we've added and released:
iOS is much more protective of what apps are allowed to run on the devices, and the solution that worked on Android is not viable on iOS.
We already have background refresh in the iOS app that periodically checks for new messages, and if you use the app every day it delivers notifications within 10 or 20 minutes. It is not instant, but it may be usable for some. If you use the app infrequently, however, this delay can become several hours, or your phone may stop checking for the new messages completely. This is not ideal!
The only solution known to us is using Apple's push notifications service (APN) to deliver push notifications.
-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.
+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.
diff --git a/blog/20220524-simplex-chat-better-privacy.html b/blog/20220524-simplex-chat-better-privacy.html index d1aaec37ed..fd4df16ac6 100644 --- a/blog/20220524-simplex-chat-better-privacy.html +++ b/blog/20220524-simplex-chat-better-privacy.html @@ -162,8 +162,8 @@In this version you can irreversibly delete individual messages after they were deleted by a sender, and also completely clear the conversation.
The only way to do it before this version was by deleting the contact, now you can keep the connection when you clear the conversation.

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.
+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.
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.
+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.
You can discover additional features we are currently testing in Experimental Features - they will be announced later!
See v1 announcement for information on how SimpleX protects the security of the messages.
+See v1 announcement for information on how SimpleX protects the security of the messages.
Read about SimpleX design in whitepaper.
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:
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.
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.
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.
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.
+I wrote about it in v2 release announcement and you can get more information about SimpleX platform objectives and technical design in the whitepaper.
I will get straight to the point: I ask you to support SimpleX Chat with donations.
We are prioritizing users privacy and security - it would be impossible without your support we were lucky to have so far.
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 e2148d8041..8f10753250 100644 --- a/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html +++ b/blog/20220723-simplex-chat-v3.1-tor-groups-efficiency.html @@ -198,9 +198,9 @@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.
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.
I wrote about it in v2 release announcement and you can get more information about SimpleX platform objectives and technical design in the whitepaper.
+I wrote about it in v2 release announcement and you can get more information about SimpleX platform objectives and technical design in the whitepaper.
SimpleX design follows "defence in depth" security principles having multiple overlapping defensive mechanisms to protect users privacy and security:

It's been nearly a year since the users of SimpleX Chat terminal app started experimenting with the groups, and now it is available to mobile app users as well. Many bugs were fixed, the stability was improved, but there are both the features we need to add and the bugs we need to fix to make groups more useful - we really look forward to your feedback. You can send any suggestions via the app by choosing Chat with the developers via app Settings (or using /simplex command in the terminal app) – this would connect you to SimpleX team via its fixed chat address.
It's been nearly a year since the users of SimpleX Chat terminal app started experimenting with the groups, and now it is available to mobile app users as well. Many bugs were fixed, the stability was improved, but there are both the features we need to add and the bugs we need to fix to make groups more useful - we really look forward to your feedback. You can send any suggestions via the app by choosing Chat with the developers via app Settings (or using /simplex command in the terminal app) – this would connect you to SimpleX team via its fixed chat address.
SimpleX network is decentralized, so how do groups work? Unlike Matrix or Signal that host the group profile and the list of group members on their servers, SimpleX servers have no information about the group's existence - only its members do. SimpleX network does not assign any globally unique identifiers to the group, there is only a local database identifier and the list of members stored on members' devices. A user has an independent connection to each member in a group. When a user sends a message to the group, the app sends this message independently to each member. You can read more about how groups work in SimpleX Chat Protocol.
But how can it scale, you might ask? It simply won't, and the current design for the groups is only suitable for relatively small groups of people who know each other well, definitely not larger than few hundred members – this design prioritized privacy and security of the group over its size or performance. For example, to send a message to the group of 100 members a user would need to send a total of ~1.6mb of data (as each message uses a fixed size block of 16kb). And if you were to send a 1mb file then it would also require sending it 100 times (provided each member accepts it).
What if you need to send many large files to group members? We will be developing a file hosting server where the users will be able to upload the file (or image) once, and only send the file link and credentials to all group members, without the need to send the actual file. A small hosting quota will be available to all users for free, paid for by donations, and for larger files or to increase the total quota the users would either have to pay a small hosting cost or to self-host this server – it will be available as an open-source code.
@@ -210,12 +210,12 @@The low level SimpleX protocols were published long time ago, and updated to reflect the evolution of the protocols, the high level chat protocol was not published before. The reason for that was to allow us to iterate it quickly, without committing to any of the decisions.
This is the first draft of SimpleX Chat Protocol - let us know any questions or suggestions.
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.
+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.
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..
I will get straight to the point: I ask you to support SimpleX Chat with donations.
diff --git a/blog/20220901-simplex-chat-v3.2-incognito-mode.html b/blog/20220901-simplex-chat-v3.2-incognito-mode.html index 41dbd4534e..4dafaa38d5 100644 --- a/blog/20220901-simplex-chat-v3.2-incognito-mode.html +++ b/blog/20220901-simplex-chat-v3.2-incognito-mode.html @@ -204,10 +204,10 @@And you can choose dark or light mode independently of the system settings.
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 SimpleX is different from Session, Matrix, Signal, etc..
+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..
Our great news is that we have already signed the agreement and paid for the security audit!
It is planned in October, and if there are no major issues we will publish this report straight away, otherwise - once we fix them.
diff --git a/images/connection.gif b/images/connection.gif new file mode 100644 index 0000000000..f15f7bcb09 Binary files /dev/null and b/images/connection.gif differ diff --git a/images/conversation.png b/images/conversation.png new file mode 100644 index 0000000000..539f43d11f Binary files /dev/null and b/images/conversation.png differ diff --git a/images/files.gif b/images/files.gif new file mode 100644 index 0000000000..ad8beaa183 Binary files /dev/null and b/images/files.gif differ diff --git a/images/groups.gif b/images/groups.gif new file mode 100644 index 0000000000..0ce6dc30ec Binary files /dev/null and b/images/groups.gif differ diff --git a/images/how-to-use-simplex.svg b/images/how-to-use-simplex.svg new file mode 100644 index 0000000000..1be91eb293 --- /dev/null +++ b/images/how-to-use-simplex.svg @@ -0,0 +1,32 @@ + diff --git a/images/logo.svg b/images/logo.svg new file mode 100644 index 0000000000..bb4e50787a --- /dev/null +++ b/images/logo.svg @@ -0,0 +1,12 @@ + diff --git a/images/simplex-chat-logo.svg b/images/simplex-chat-logo.svg new file mode 100644 index 0000000000..6d423bf5c5 --- /dev/null +++ b/images/simplex-chat-logo.svg @@ -0,0 +1,16 @@ + diff --git a/images/user-addresses.gif b/images/user-addresses.gif new file mode 100644 index 0000000000..6729201529 Binary files /dev/null and b/images/user-addresses.gif differ