From 36cad35d4639256e8df198ce1474e174d109df3b Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Wed, 1 Mar 2023 19:29:59 +0000 Subject: [PATCH] blog: SimpleX File Transfer Protocol (XFTP) (#1965) * blog: SimpleX File Transfer Protocol (XFTP) * update blog * simplify quick start * update blog --- ...20230301-simplex-file-transfer-protocol.md | 163 ++++++++++++++++++ blog/images/20230301-xftp.jpg | Bin 0 -> 57833 bytes 2 files changed, 163 insertions(+) create mode 100644 blog/20230301-simplex-file-transfer-protocol.md create mode 100644 blog/images/20230301-xftp.jpg diff --git a/blog/20230301-simplex-file-transfer-protocol.md b/blog/20230301-simplex-file-transfer-protocol.md new file mode 100644 index 000000000..0c8ae4122 --- /dev/null +++ b/blog/20230301-simplex-file-transfer-protocol.md @@ -0,0 +1,163 @@ +--- +layout: layouts/article.html +title: "SimpleX File Transfer Protocol - a new protocol for sending large files efficiently, privately and securely." +date: 2023-03-01 +preview: CLI and relays implementing the new XFTP protocol are released - you can use them now! +image: images/20230301-xftp.jpg +permalink: "/blog/20230301-simplex-file-transfer-protocol.html" +--- + +# SimpleX File Transfer Protocol – a new protocol for sending large files efficiently, privately and securely. + +**Published:** Mar 1, 2023 + +- [Quick start: how to send a file using XFTP CLI](#⚡️-quick-start-send-a-file-with-xftp-cli-in-3-simple-steps) +- [What's the problem](#whats-the-problem) +- [Why didn't we just use some existing solution?](#why-didnt-we-just-use-some-existing-solution) +- [What is XFTP and how does it work?](#what-is-xftp-and-how-does-it-work) +- [What is next?](#what-is-next) + +## ⚡️ Quick start: send a file with XFTP CLI in 3 simple steps + +Download XFTP binary for Linux from [the release](https://github.com/simplex-chat/simplexmq/releases/tag/v5.0.0-beta.3) – you need the file `xftp-ubuntu-20_04-x86-64` - rename it as `xftp`. + +**Step 1**: To send the file: + +```bash +xftp send filename.ext +``` + +You can also send the file that can be received by multiple recipients using `-n` option: + +```bash +xftp send filename.ext -n 10 +``` + +**Step 2**: Pass file description(s) (files `rcvN.xftp`) to the recipient(s) securely, e.g. send it as a file via SimpleX Chat. + +**Step 3**: To receive the file: + +```bash +xftp recv rcvN.xftp +``` + +The sender also delete all file chunks from the relays before they expire in 48 hours with this command: + +```bash +xftp del ./filename.ext/snd.xftp.private +``` + +
+ +## What's the problem? + +If you are using SimpleX Chat apps you know that support of sending files and images is not very good, and sending videos and large files is simply impossible. There are currently these problems: + +- the sender has to be online for file transfer to complete, once it was confirmed by the recipient. +- when the file is sent to the group, the sender will have to transfer it separately to each member, creatin a lot of traffic. +- the file transfer is slow, as it is sent in small chunks - approximately 16kb per message. + +As a result, we limited the supported size of files in the app to 8mb. Even for supported files, it is quite inefficient for sending any files to large groups. + +## Why didn't we just use some existing solution? + +We really hoped to find some existing open-source solution that we could integrate with SimpleX Chat. + +We decided not to use torrent-like or any other P2P solutions because of their lack of privacy, challenging legality in some jurisdictions and, in many cases, because they are inefficient in groups. + +We reviewed several S3-compatible solutions (e.g., [minio](https://github.com/minio/minio), [garage](https://git.deuxfleurs.fr/Deuxfleurs/garage), [SeaweedFS](https://github.com/seaweedfs/seaweedfs)), but they all require the development of a separate service layer, making them unusable as standalone serveces and harder to deploy for the users who want to self-host the file transfer service. As a side note, the solution that we developed can still be composed with S3-compatible storage for higher capacity servers with some privacy/efficiency trade-offs. + +We also looked at a few independent implementations of file sharing, with some ad-hoc protocols (e.g., [ceph](https://github.com/ceph/ceph) and [lufi](https://framagit.org/fiat-tux/hat-softwares/lufi)), but neither seemed sufficiently mature, and also not as private as we would like. + +So after a lot of searching we decided to design and implement a new protocol for file transfers, that both solved the problems above, and provided a higher level of metadata privacy than any other file transfer solution has. + +## What is XFTP and how does it work? + +``` + Sender Internet XFTP relays Internet Recipient +---------------------------- | ----------------- | ------------------- | ------------ | ---------- + | | | | + | | (can be self-hosted) | | + | | +---------+ | | + chunk 1 ----- HTTP2 over TLS ------ | XFTP | ---- HTTP2 / TLS ----- chunk 1 + |---> SimpleX File Transfer Protocol (XFTP) --> | Relay | ---> XFTP ------------->| + | --------------------------- +---------+ ---------------------- | + | | | | | | + | | | | | v + +----------+ | | +---------+ | | +-------------+ + | Sending | ch. 2 ------- HTTP2 / TLS ------- | XFTP | ---- HTTP2 / TLS ---- ch. 2 | Receiving | +file ---> | XFTP | ------> XFTP ----> | Relay | ---> XFTP ------> | XFTP | ---> file + | Client | --------------------------- +---------+ ---------------------- | Client | + +----------+ | | | | +-------------+ + | | | | | ^ + | | | +---------+ | | | + | ------- HTTP2 / TLS ------- | XFTP | ---- HTTP2 / TLS ---- | + |-------------> XFTP ----> | Relay | ---> XFTP ------------->| + chunk N --------------------------- +---------+ --------------------- chunk N + | | (store file chunks) | | + | | | | + | | | | +``` + +XFTP stands for SimpleX File Transfer Protocol. Its design is based on the same ideas and has some of the qualities of SimpleX Messaging Protocol, that is used in SimpleX Chat: + +- recipient cannot see sender's IP address, as the file fragments (chunks) are temporarily stored on multiple XFTP relays. +- file can be sent asynchronously, without requiring the sender to be online for file to be received. +- there is no network of peers that can observe this transfer - sender chooses which XFTP relays to use, and can self-host their own. +- XFTP relays do not have any file metadata - they only see individual chunks, with access to each chunk authorised with anonymous credentials (using Edwards curve cryptographic signature) that are random per chunk. +- chunks have one of the sizes allowed by the servers - currently we allow 256kb, 1mb and 4mb chunks, so if you send, say 1gb file, to XFTP relays it will look indistinguishable from sending many small files, and they would only know that chunks are sent by the same user only via the transport information, but none of the relays will see all chunks. Also, once this feature is available in mobile apps you can use transport isolation per chunk, when each file fragment will be uploaded via a separate TCP connection (and Tor circuit, if you use Tor) – the CLI we released does not yet support per-chunk transport isolation. +- each chunk can be downloaded by multiple recipients, but each recipient uses their own key and chunk ID to authorise access, and the chunk is encrypted by a different key agreed via ephemeral DH keys (NaCl crypto_box (SalsaX20Poly1305 authenticated encryption scheme ) with shared secret derived from Curve25519 key exchange) on the way from the server to each recipient. XFTP protocol as a result has the same quality as SMP protocol - there are no identifiers and ciphertext in common between sent and recived traffic inside TLS connection, so even if TLS is compromised, it complicates traffic correlation attacks. +- XFTP protocol also supports redundancy - each file chunk can be sent via multiple relays, and the recipient can choose the one that is availbale. The released CLI does not support redundancy though. +- 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. + +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? + +We released and deployed several XFTP relays for you to experiment with (they are hardcoded in the XFTP CLI), and you can deploy your own relays either from [downloadable binary](https://github.com/simplex-chat/simplexmq/releases/tag/v5.0.0-beta.3) or by compiling [the source code](https://github.com/simplex-chat/simplexmq). We also released XFTP CLI - it is available in the same release. + +We are currently integrating support for sending large files using XFTP protocol into SimpleX Chat clients. SimpleX Chat v5.0 will have support for receiving files sent via XFTP protocol (you will be able to send a file description via a SimpleX Chat CLI app, so that mobile apps will be able to receive them as normal files, only much faster), and v5.1 will fully support for sending large files (up to 1gb) in the mobile apps. + +We will also publish a formal specification for XFTP protocol and overview of its security qualities and threat model. For now you can learn more about the protocol design and motivations from this internal [XFTP protocol RFC](https://github.com/simplex-chat/simplexmq/blob/stable/rfcs/2022-12-26-simplex-file-transfer.md). + +Using and sending files with the available XFTP CLI will hugely help us stabilizing both the protocol and implementations. What we really like about this design is that it is completely independent from SimpleX Chat - you can use it on its own, sending files and passing file descriptions to your contacts via any other messenger - e.g. via Signal, – without this messenger being able to observe that you are in fact sending a large file. + +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](./20221108-simplex-chat-v4.2-security-audit-new-website.md) in November 2022. + +## SimpleX platform + +Some links to answer the most common questions: + +[How can SimpleX deliver messages without user identifiers](./20220511-simplex-chat-v2-images-files.md#the-first-messaging-platform-without-user-identifiers). + +[What are the risks to have identifiers assigned to the users](./20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.md#why-having-users-identifiers-is-bad-for-the-users). + +[Technical details and limitations](https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations). + +[How SimpleX is different from Session, Matrix, Signal, etc.](https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions). + +Please also see our [website](https://simplex.chat). + +## Help us with donations + +Huge thank you to everybody who donated to SimpleX Chat! + +We are prioritizing users privacy and security - it would be impossible without your support. + +Our pledge to our users is that SimpleX protocols are and will remain open, and in public domain, - so anybody can build the future implementations of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure. + +Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us. + +See [this section](https://github.com/simplex-chat/simplex-chat/tree/master#help-us-with-donations) for the ways to donate. + +Thank you, + +Evgeny + +SimpleX Chat founder diff --git a/blog/images/20230301-xftp.jpg b/blog/images/20230301-xftp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd3758328cfde0a877bcf52a48b348d08f9533de GIT binary patch literal 57833 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