mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-11-04 08:37:30 +00:00
deploy: d3274b28ba
This commit is contained in:
1 parent
9d4830e128
commit
5c3cf40f7e
89 files changed
+2302
-1366
No files matched your search
+37
-26
@@ -858,36 +858,36 @@ window.addEventListener('scroll',changeHeaderBg);
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div><p>| Updated 31.01.2023 | Languages: EN, <a href="/docs/lang/fr/cli.html">FR</a>, <a href="/docs/lang/cs/cli.html">CZ</a>, <a href="/docs/lang/pl/cli.html">PL</a> |</p>
|
||||
<div><html><head></head><body><p>| Updated 31.01.2023 | Languages: EN, <a href="/docs/lang/fr/cli.html">FR</a>, <a href="/docs/lang/cs/cli.html">CZ</a>, <a href="/docs/lang/pl/cli.html">PL</a> |</p>
|
||||
<h1 id="simplex-chat-terminal-console-app-for-linuxmacoswindows" tabindex="-1">SimpleX Chat terminal (console) app for Linux/MacOS/Windows</h1>
|
||||
<h2 id="table-of-contents" tabindex="-1">Table of contents</h2>
|
||||
<ul>
|
||||
<li><a href="#terminal-chat-features">Terminal chat features</a></li>
|
||||
<li><a href="#%F0%9F%9A%80-installation">Installation</a>
|
||||
<li><a href="undefined">Terminal chat features</a></li>
|
||||
<li><a href="undefined">Installation</a>
|
||||
<ul>
|
||||
<li><a href="#download-chat-client">Download chat client</a>
|
||||
<li><a href="undefined">Download chat client</a>
|
||||
<ul>
|
||||
<li><a href="#linux-and-macos">Linux and MacOS</a></li>
|
||||
<li><a href="#windows">Windows</a></li>
|
||||
<li><a href="undefined">Linux and MacOS</a></li>
|
||||
<li><a href="undefined">Windows</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#build-from-source">Build from source</a>
|
||||
<li><a href="undefined">Build from source</a>
|
||||
<ul>
|
||||
<li><a href="#using-docker">Using Docker</a></li>
|
||||
<li><a href="#in-any-os">Using Haskell in any OS</a></li>
|
||||
<li><a href="undefined">Using Docker</a></li>
|
||||
<li><a href="undefined">Using Haskell in any OS</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#usage">Usage</a>
|
||||
<li><a href="undefined">Usage</a>
|
||||
<ul>
|
||||
<li><a href="#running-the-chat-client">Running the chat client</a></li>
|
||||
<li><a href="#access-messaging-servers-via-tor-beta">Access messaging servers via Tor</a></li>
|
||||
<li><a href="#how-to-use-simplex-chat">How to use SimpleX chat</a></li>
|
||||
<li><a href="#groups">Groups</a></li>
|
||||
<li><a href="#sending-files">Sending files</a></li>
|
||||
<li><a href="#user-contact-addresses">User contact addresses</a></li>
|
||||
<li><a href="#access-chat-history">Access chat history</a></li>
|
||||
<li><a href="undefined">Running the chat client</a></li>
|
||||
<li><a href="undefined">Access messaging servers via Tor</a></li>
|
||||
<li><a href="undefined">How to use SimpleX chat</a></li>
|
||||
<li><a href="undefined">Groups</a></li>
|
||||
<li><a href="undefined">Sending files</a></li>
|
||||
<li><a href="undefined">User contact addresses</a></li>
|
||||
<li><a href="undefined">Access chat history</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -901,13 +901,13 @@ window.addEventListener('scroll',changeHeaderBg);
|
||||
<li>Auto-populated recipient name - just type your messages to reply to the sender once the connection is established.</li>
|
||||
<li>Demo SMP servers available and pre-configured in the app - or you can <a href="https://github.com/simplex-chat/simplexmq#using-smp-server-and-smp-agent">deploy your own server</a>.</li>
|
||||
<li>No global identity or any names visible to the server(s), ensuring full privacy of your contacts and conversations.</li>
|
||||
<li>Two layers of E2E encryption (double-ratchet for duplex connections, using X3DH key agreement with ephemeral Curve448 keys, and NaCl crypto_box for SMP queues, using Curve25519 keys) and out-of-band passing of recipient keys (see <a href="#how-to-use-simplex-chat">How to use SimpleX chat</a>).</li>
|
||||
<li>Two layers of E2E encryption (double-ratchet for duplex connections, using X3DH key agreement with ephemeral Curve448 keys, and NaCl crypto_box for SMP queues, using Curve25519 keys) and out-of-band passing of recipient keys (see <a href="undefined">How to use SimpleX chat</a>).</li>
|
||||
<li>Message integrity validation (via including the digests of the previous messages).</li>
|
||||
<li>Authentication of each command/message by SMP servers with automatically generated Ed448 keys.</li>
|
||||
<li>TLS 1.3 transport encryption.</li>
|
||||
<li>Additional encryption of messages from SMP server to recipient to reduce traffic correlation.</li>
|
||||
</ul>
|
||||
<p>Public keys involved in key exchange are not used as identity, they are randomly generated for each contact.</p>
|
||||
<p>Public keys involved in <span data-glossary="tooltip-key-exchange" class="glossary-term">Key exchange</span> are not used as identity, they are randomly generated for each contact.</p>
|
||||
<p>See <a href="https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md#encryption-primitives-used">Encryption Primitives Used</a> for technical details.</p>
|
||||
<p><a name="🚀-installation"></a></p>
|
||||
<h2 id="installation" tabindex="-1">🚀 Installation</h2>
|
||||
@@ -940,7 +940,7 @@ git checkout stable
|
||||
DOCKER_BUILDKIT=1 docker build --output ~/.local/bin .
|
||||
</code></pre>
|
||||
<blockquote>
|
||||
<p><strong>Please note:</strong> If you encounter <code>version `GLIBC_2.28' not found</code> error, rebuild it with <code>haskell:8.10.7-stretch</code> base image (change it in your local <a href="https%3A//github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/Dockerfile">Dockerfile</a>).</p>
|
||||
<p><strong>Please note:</strong> If you encounter <code>version `GLIBC_2.28' not found</code> error, rebuild it with <code>haskell:8.10.7-stretch</code> base image (change it in your local <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/Dockerfile">Dockerfile</a>).</p>
|
||||
</blockquote>
|
||||
<h4 id="in-any-os" tabindex="-1">In any OS</h4>
|
||||
<ol>
|
||||
@@ -1002,7 +1002,7 @@ brew services start tor
|
||||
</code></pre>
|
||||
<p>You can also use option <code>--socks-proxy=ipv4:port</code> or <code>--socks-proxy=:port</code> to configure host and port of your SOCKS5 proxy, e.g. if you are running it on some other host or port.</p>
|
||||
<h3 id="how-to-use-simplex-chat" tabindex="-1">How to use SimpleX chat</h3>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>The diagram below shows how to connect and message a contact:</p>
|
||||
<div align="center">
|
||||
<img align="center" src="../images/how-to-use-simplex.svg">
|
||||
@@ -1015,21 +1015,31 @@ brew services start tor
|
||||
<p>Use <code>/help</code> in chat to see the list of available commands.</p>
|
||||
<h3 id="groups" tabindex="-1">Groups</h3>
|
||||
<p>To create a group use <code>/g <group></code>, then add contacts to it with <code>/a <group> <name></code>. You can then send messages to the group by entering <code>#<group> <message></code>. Use <code>/help groups</code> for other commands.</p>
|
||||
<p><img src="images/groups.gif" alt="simplex-chat"></p>
|
||||
<p><img src="../images/groups.gif" alt="simplex-chat"></p>
|
||||
<blockquote>
|
||||
<p><strong>Please note</strong>: 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.</p>
|
||||
</blockquote>
|
||||
<h3 id="sending-files" tabindex="-1">Sending files</h3>
|
||||
<p>You can send a file to your contact with <code>/f @<contact> <file_path></code> - the recipient will have to accept it before it is sent. Use <code>/help files</code> for other commands.</p>
|
||||
<p><img src="images/files.gif" alt="simplex-chat"></p>
|
||||
<p><img src="../images/files.gif" alt="simplex-chat"></p>
|
||||
<p>You can send files to a group with <code>/f #<group> <file_path></code>.</p>
|
||||
<h3 id="user-contact-addresses" tabindex="-1">User contact addresses</h3>
|
||||
<p>As an alternative to one-time invitation links, you can create a long-term address with <code>/ad</code> (for <code>/address</code>). The created address can then be shared via any channel, and used by other users as a link to make a contact request with <code>/c <user_contact_address></code>.</p>
|
||||
<p>You can accept or reject incoming requests with <code>/ac <name></code> and <code>/rc <name></code> commands.</p>
|
||||
<p>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).</p>
|
||||
<p>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).</p>
|
||||
<p>Use <code>/help address</code> for other commands.</p>
|
||||
<p><img src="images/user-addresses.gif" alt="simplex-chat"></p>
|
||||
</div>
|
||||
<p><img src="../images/user-addresses.gif" alt="simplex-chat"></p>
|
||||
<div id="address-portability" class="overlay glossary-overlay hidden"><div class="overlay-card"><h1 class="overlay-title">Address portability</h1><div class="overlay-content"><p>Similarly to <a href="https://en.wikipedia.org/wiki/Local_number_portability">phone number portability</a> (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 <a href="#federated-network">federated networks</a> 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.</p></div><svg class="close-overlay-btn" id="cross" width="16" height="16" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg"><path d="M12.7973 11.5525L7.59762 6.49833L12.7947 1.44675C13.055 1.19371 13.0658 0.771991 12.8188 0.505331C12.5718 0.238674 12.1602 0.227644 11.8999 0.480681L6.65343 5.58028L1.09979 0.182228C0.805 0.002228 0.430001 0.002228 0.135211 0.182228C-0.159579 0.362228 -0.159579 0.697228 0.135211 0.877228L5.68885 6.27528L0.4918 11.3295C0.231501 11.5825 0.220703 12.0042 0.467664 12.2709C0.714625 12.5376 1.12625 12.5486 1.38655 12.2956L6.63302 7.196L12.1867 12.5941C12.4815 12.7741 12.8565 12.7741 13.1513 12.5941C13.4461 12.4141 13.4461 12.0791 13.1513 11.8991L12.7973 11.5525Z"></path></svg></div></div><div id="federated-network" class="overlay glossary-overlay hidden"><div class="overlay-card"><h1 class="overlay-title">Federated network</h1><div class="overlay-content"><p>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.</p><p>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 <a href="#address-portability">address portability</a>, 3) the security and privacy are inevitably worse than with the centralized networks.</p><p><a href="https://en.wikipedia.org/wiki/Federation_(information_technology)">Federation on Wikipedia</a></p></div><svg class="close-overlay-btn" id="cross" width="16" height="16" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg"><path d="M12.7973 11.5525L7.59762 6.49833L12.7947 1.44675C13.055 1.19371 13.0658 0.771991 12.8188 0.505331C12.5718 0.238674 12.1602 0.227644 11.8999 0.480681L6.65343 5.58028L1.09979 0.182228C0.805 0.002228 0.430001 0.002228 0.135211 0.182228C-0.159579 0.362228 -0.159579 0.697228 0.135211 0.877228L5.68885 6.27528L0.4918 11.3295C0.231501 11.5825 0.220703 12.0042 0.467664 12.2709C0.714625 12.5376 1.12625 12.5486 1.38655 12.2956L6.63302 7.196L12.1867 12.5941C12.4815 12.7741 12.8565 12.7741 13.1513 12.5941C13.4461 12.4141 13.4461 12.0791 13.1513 11.8991L12.7973 11.5525Z"></path></svg></div></div><div id="anonymous-credentials" class="overlay glossary-overlay hidden"><div class="overlay-card"><h1 class="overlay-title">Anonymous credentials</h1><div class="overlay-content"><p>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.</p><p><a href="https://en.wikipedia.org/wiki/Digital_credential">Digital credential on Wikipedia</a></p></div><svg class="close-overlay-btn" id="cross" width="16" height="16" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg"><path d="M12.7973 11.5525L7.59762 6.49833L12.7947 1.44675C13.055 1.19371 13.0658 0.771991 12.8188 0.505331C12.5718 0.238674 12.1602 0.227644 11.8999 0.480681L6.65343 5.58028L1.09979 0.182228C0.805 0.002228 0.430001 0.002228 0.135211 0.182228C-0.159579 0.362228 -0.159579 0.697228 0.135211 0.877228L5.68885 6.27528L0.4918 11.3295C0.231501 11.5825 0.220703 12.0042 0.467664 12.2709C0.714625 12.5376 1.12625 12.5486 1.38655 12.2956L6.63302 7.196L12.1867 12.5941C12.4815 12.7741 12.8565 12.7741 13.1513 12.5941C13.4461 12.4141 13.4461 12.0791 13.1513 11.8991L12.7973 11.5525Z"></path></svg></div></div><div id="blockchain" class="overlay glossary-overlay hidden"><div class="overlay-card"Line truncated
|
||||
<li>double ratchet algorithm for <a href="#end-to-end-encryption">end-to-end encryption</a> with <a href="#forward-secrecy">perfect forward secrecy</a> and <a href="#post-compromise-security">post-compromise security</a>,</li>
|
||||
<li>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,</li>
|
||||
<li>TLS with only strong ciphers allowed,</li>
|
||||
<li>mitigation of <a href="#man-in-the-middle-attack">man-in-the-middle attack</a> on client-server connection via server offline certificate verification,</li>
|
||||
<li>mitigation of replay attacks via signing over transport channel binding,</li>
|
||||
<li>multiple layers of <a href="#message-padding">message padding</a> to reduce efficiency of traffic analysis,</li>
|
||||
<li>mitigation of <a href="#man-in-the-middle-attack">man-in-the-middle attack</a> on client-client out-of-band channel when sending the invitation,</li>
|
||||
<li>rotation of delivery queues to reduce efficiency of traffic analysis,</li>
|
||||
<li>etc.</li>
|
||||
</ul><p><a href="https://en.wikipedia.org/wiki/Defence_in_depth">Wikipedia</a></p></div><svg class="close-overlay-btn" id="cross" width="16" height="16" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg"><path d="M12.7973 11.5525L7.59762 6.49833L12.7947 1.44675C13.055 1.19371 13.0658 0.771991 12.8188 0.505331C12.5718 0.238674 12.1602 0.227644 11.8999 0.480681L6.65343 5.58028L1.09979 0.182228C0.805 0.002228 0.430001 0.002228 0.135211 0.182228C-0.159579 0.362228 -0.159579 0.697228 0.135211 0.877228L5.68885 6.27528L0.4918 11.3295C0.231501 11.5825 0.220703 12.0042 0.467664 12.2709C0.714625 12.5376 1.12625 12.5486 1.38655 12.2956L6.63302 7.196L12.1867 12.5941C12.4815 12.7741 12.8565 12.7741 13.1513 12.5941C13.4461 12.4141 13.4461 12.0791 13.1513 11.8991L12.7973 11.5525Z"></path></svg></div></div><div id="end-to-end-encryption" class="overlay glossary-overlay hidden"><div class="overlay-card"><h1 class="overlay-title">End-to-end encryption</h1><div class="overlay-content"><p>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.</p><p>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 <a href="#key-agreement-protocol">key agreement protocol</a>. This key exchange can be compromised via <a href="#man-in-the-middle-attack">man-in-the-middle attack</a>, particularly if key exchange happens via the same communication provider and no out-of-band channel is used to verify key exchange.</p><p><a href="https://en.wikipedia.org/wiki/End-to-end_encryption">Wikipedia</a></p></div><svg class="close-overlay-btn" id="cross" width="16" height="16" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg"><path d="M12.7973 11.5525L7.59762 6.49833L12.7947 1.44675C13.055 1.19371 13.0658 0.771991 12.8188 0.505331C12.5718 0.238674 12.1602 0.227644 11.8999 0.480681L6.65343 5.58028L1.09979 0.182228C0.805 0.002228 0.430001 0.002228 0.135211 0.182228C-0.159579 0.362228 -0.159579 0.697228 0.135211 0.877228L5.68885 6.27528L0.4918 11.3295C0.231501 11.5825 0.220703 12.0042 0.467664 12.2709C0.714625 12.5376 1.12625 12.5486 1.38655 12.2956L6.63302 7.196L12.1867 12.5941C12.4815 12.7741 12.8565 12.7741 13.1513 12.5941C13.4461 12.4141 13.4461 12.0791 13.1513 11.8991L12.7973 11.5525Z"></path></svg></div></div><div id="forward-secrecy" class="overlay glossary-overlay hidden"><div class="overlay-card"><h1 class="overlay-title">Forward secrecy</h1><div class="overlay-content"><p>Also known as perfect forward secrecy, it is a feature of a <a href="#key-agreement-protocol">key agreement protocol</a> 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.</p><p><a href="https://en.wikipedia.org/wiki/Forward_secrecy">Wikipedia</a></p></div><svg class="close-overlay-btn" id="cross" width="16" height="16" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg"><path d="M12.7973 11.5525L7.59762 6.49833L12.7947 1.44675C13.055 1.19371 13.0658 0.771991 12.8188 0.505331C12.5718 0.238674 12.1602 0.227644 11.8999 0.480681L6.65343 5.58028L1.09979 0.182228C0.805 0.002228 0.430001 0.002228 0.135211 0.182228C-0.159579 0.362228 -0.159579 0.697228 0.135211 0.877228L5.68885 6.27528L0.4918 11.3295C0.231501 11.5825 0.220703 12.0042 0.467664 12.2709C0.714625 12.5376 1.12625 12.5486 1.38655 12.2956L6.63302 7.196L12.1867 12.5941C12.4815 12.7741 12.8565 12.7741 13.1513 12.5941C13.4461 12.4141 13.4461 12.0791 13.1513 11.8991L12.7973 11.5525Z"></path></svg></div></div><div id="post-compromise-security" class="overlay glossary-overlay hidden"><div class="overlay-card"><h1 class="overlay-title">Post-compromise security</h1><div class="overlay-content"><p>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. <a href="#double-ratchet-algorithm">Double-ratchet algorithm</a> has this quality.</p></div><svg class="close-overlay-btn" id="cross" width="16" height="16" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg"><path d="M12.7973 11.5525L7.59762 6.49833L12.7947 1.44675C13.055 1.19371 13.0658 0.771991 12.8188 0.505331C12.5718 0.238674 12.1602 0.227644 11.8999 0.480681L6.65343 5.58028L1.09979 0.182228C0.805 0.002228 0.430001 0.002228 0.135211 0.182228C-0.159579 0.362228 -0.159579 0.697228 0.135211 0.877228L5.68885 6.27528L0.4918 11.3295C0.231501 11.5825 0.220703 12.0042 0.467664 12.2709C0.714625 12.5376 1.12625 12.5486 1.38655 12.2956L6.63302 7.196L12.1867 12.5941C12.4815Line truncated
|
||||
</article>
|
||||
</main>
|
||||
</div>
|
||||
@@ -1159,6 +1169,7 @@ brew services start tor
|
||||
|
||||
|
||||
<script src="/js/docs.js"></script>
|
||||
<script src="/js/script.js"></script>
|
||||
<script src="/js/prism.min.js"></script>
|
||||
</body>
|
||||
|
||||
|
||||
Reference in new issue
Block a user