title | revision |
---|---|
Aplikacja konsolowa |
31.01.2023 |
| Updated 31.01.2023 | Języki: PL, EN, FR, CZ |
- Konwersacje 1 na 1 z wieloma osobami w tym samym oknie terminala.
- Wiadomości grupowe.
- Wysyłanie plików do kontaktów i grup.
- Adresy kontaktowe użytkowników - nawiązywanie połączeń za pomocą linków kontaktowych wielokrotnego użytku.
- Wiadomości przechowywane w lokalnej bazie danych SQLite.
- 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).
- 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.
- Dodatkowe szyfrowanie wiadomości z serwera SMP do odbiorcy aby utrudnić możliwość korelacji ruchu.
Klucze publiczne biorące udział podczas wymiany kluczy nie są używane jako tożsamość, są one generowane losowo dla każdego kontaktu.
Aby uzyskać szczegółowe informacje techniczne zobacz używane metody szyfrowania.
By zainstalować lub zaktualizować simplex-chat
, należy uruchomić skrypt instalacyjny. Aby to zrobić, użyj następującego polecenia cURL lub Wget:
curl -o- https://raw.githubusercontent.com/simplex-chat/simplex-chat/stable/install.sh | bash
wget -qO- https://raw.githubusercontent.com/simplex-chat/simplex-chat/stable/install.sh | bash
Po pobraniu klienta czatu można go uruchomić za pomocą polecenia simplex-chat
.
Możesz również ręcznie pobrać plik binarny czatu dla swojego systemu z najnowszej stabilnej wersji i uczynić go uruchamialnym w sposób pokazany poniżej.
chmod +x <binary>
mv <binary> ~/.local/bin/simplex-chat
(lub użyj innej preferowanej lokalizacji w PATH
).
Na MacOS musisz również zezwolić Gatekeeperowi, by go uruchomić.
move <binary> %APPDATA%/local/bin/simplex-chat.exe
Uwaga: aby zbudować aplikację użyj wersji stabilnej.
Na Linuxie, aby zbudować plik wykonywalny możesz użyć docker build z customowym outputem:
git clone git@github.com:simplex-chat/simplex-chat.git
cd simplex-chat
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 bazowymhaskell:8.10.7-stretch
(zmień go w Twoim lokalnym pliku Dockerfile).
- Zainstaluj Haskell GHCup, GHC 9.6.3 i cabal 3.10.1.0:
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
Możesz użyć polecenia ghcup tui
, aby sprawdzić lub dodać wersje GHC i cabal.
- Sklonuj kod źródłowy:
git clone git@github.com:simplex-chat/simplex-chat.git
cd simplex-chat
git checkout stable
# lub aby zbudować konkretną wersję:
# git checkout v5.3.0-beta.8
master
to branch deweloperski, może on zawierać niestabilny kod.
- Przygotowywanie systemu:
Na Linuxie:
apt-get update && apt-get install -y build-essential libgmp3-dev zlib1g-dev
cp scripts/cabal.project.local.linux cabal.project.local
Na Macu:
brew install openssl@1.1
cp scripts/cabal.project.local.mac cabal.project.local
Może być konieczna zmiana cabal.project.local, aby wskazać poprawną lokalizację openssl
- Budowanie aplikacji:
cabal update
cabal install simplex-chat
Aby uruchomić klienta, uruchom w terminalu polecenie simplex-chat
.
Domyślnie katalog z danymi aplikacji jest tworzony w katalogu domowym (~/.simplex
, lub %APPDATA%/simplex
na Windowsie), a dwa pliki danych SQLite simplex_v1_chat.db
i simplex_v1_agent.db
są w nim zainicjowane.
Aby wskazać inny prefiks ścieżki dla plików bazy danych, należy użyć polecenia -d
:
$ simplex-chat -d alice
Uruchomienie powyższego przykładu spowoduje utworzenie plików baz danych alice_v1_chat.db
i alice_v1_agent.db
w bieżącym katalogu.
Trzy domyślne serwery SMP są hostowane na Linode - są one wstępnie skonfigurowane w aplikacji.
Jeśli posiadasz własny serwer(y) SMP, możesz skonfigurować klienta poprzez opcję -s
:
$ simplex-chat -s smp://LcJUMfVhwD8yxjAiSaDzzGF3-kLG4Uh0Fl_ZIjrRwjI=@smp.example.com
Ciąg zakodowany w Base64url poprzedzający adres serwera to odcisk palca certyfikatu offline serwera, który jest weryfikowany przez klienta podczas handshake'a TLS.
Po konfiguracji innego serwera w swoim kliencie nadal możesz rozmawiać z ludźmi używającymi domyślnego lub dowolnego innego serwera - ustawienie to wpływa tylko na lokalizację kolejki wiadomości podczas nawiązywania połączenia (a kolejka odpowiedzi może znajdować się na zupełnie innym serwerze, zgodnie z ustawieniami klienta rozmówcy).
Polecenie simplex-chat -h
pokazuje wszystkie dostępne opcje.
Zainstaluj Tor i uruchom go jako proxy SOCKS5 na porcie 9050, przykład dla MacOS:
brew install tor
brew services start tor
Użyj opcji -x
, aby uzyskać dostęp do serwerów przez Tor:
simplex-chat -x
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.
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:
Gdy już skonfigurujesz swój profil lokalny, wpisz /c
(oznaczające /connect
), aby utworzyć nowe połączenie i wygenerować zaproszenie. Wyślij to zaproszenie do swojego kontaktu za pośrednictwem dowolnego innego kanału komunikacji.
Możesz utworzyć wiele zaproszeń, kilkukrotnie wpisując /connect
i wysłać te zaproszenia do kontaktów, z którymi chcesz się połączyć.
Zaproszenie może być użyte tylko jeden raz i nawet jeśli zostanie ono przechwycone, atakujący nie będzie mógł go użyć do wysłania do Ciebie wiadomości za pośrednictwem tej kolejki, gdy Twój kontakt potwierdzi, że połączenie zostało nawiązane. Zobacz omówienie protokołu agenta dla formatu zaproszeń.
Kontakt, który otrzymał zaproszenie powinien wpisać /c <zaproszenie>
, aby zaakceptować połączenie. Spowoduje to nawiązanie połączenia, a obie strony zostaną o tym powiadomione.
Następnie można użyć komendy @<nazwa_kontaktu> <wiadomość>
do wysłania wiadomości. Możesz także po prostu zacząć pisać wiadomość, aby wysłać ją do kontaktu, który był ostatni.
Użyj /help
na czacie, by uzyskać listę pozostałych dostępnych komend.
Aby utworzyć grupę, użyj /g <nazwa_grupy>
, a następnie dodaj do niej kontakty za pomocą /a <nazwa_grupy> <nazwa_kontaktu>
. Możesz wysyłać wiadomości do grupy wpisując #<nazwa_grupy> <wiadomość>
. Użyj /help groups
, by uzyskać listę pozostałych dostępnych komend.
Uwaga: informacje o grupach nie są przechowywane na żadnym serwerze, są one zapisywane jako lista członków w bazie danych aplikacji klientów, do których będą wysyłane wiadomości.
Możesz wysłać plik do kontaktu za pomocą /f @<nazwa_kontaktu> <ścieżka_do_pliku>
- odbiorca będzie musiał go zaakceptować przed rozpoczęciem wysyłania. Użyj /help files
, by uzyskać listę pozostałych dostępnych komend.
Możesz wysyłać pliki do grupy za pomocą /f #<nazwa_grupy> <ścieżka_do_pliku>
.
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).
Użyj /help address
, by uzyskać listę pozostałych dostępnych komend.