Private A i Private B nigdy nie opuszczają telefonów.
Zaszyfrowany tunel.
Tylko między wami.
Dwie przeglądarki tworzą wspólny, poufny kanał istniejący tylko podczas rozmowy. Zaszyfrowane dane są przekazywane przez serwer, ale tylko wasze przeglądarki mają klucze pozwalające je odczytać.
Bez loginów. Bez maili. Bez kont.
Nie potwierdzamy tożsamości i nie zakładamy profili. Link łączy dokładnie dwie osoby, a rozmowa żyje wyłącznie w pamięci ich otwartych kart. Gdy kanał zostanie spalony, nie ma archiwum, do którego można wrócić.
- loginu
- adresu e-mail
- numeru telefonu
- historii konta
Wymiana kluczy
Klucze prywatne nigdy nie opuszczają urządzeń.
PUBLIC A
→
serwer
→
B
PUBLIC B
B
Serwer nie ma kluczy AES i nie może przeczytać rozmowy.
-
1
Para kluczy twórcy
Twórca generuje ulotną parę ECDH. Identyfikator pokoju to 128-bitowy skrót klucza publicznego twórcy.
-
2
Krótkie zaproszenie
Zaproszenie zawiera tylko krótki identyfikator pokoju. Pełny klucz publiczny twórcy jest tymczasowo przechowywany w pamięci serwera.
-
3
Wymiana publiczna
Podczas dołączenia serwer przekazuje klucze publiczne obu stron. Klucze prywatne nie opuszczają przeglądarek.
-
4
Sprawdzenie klucza
Gość sprawdza, czy skrót klucza twórcy pasuje do identyfikatora z linku. Potem obie strony wyprowadzają klucze AES.
-
5
Otwarcie tunelu
Zaszyfrowane potwierdzenie kluczy otwiera kanał. Od tej chwili serwer widzi tylko zaszyfrowane dane.
Życie pokoju
Pokój istnieje tylko tak długo, jak połączenie.
Oczekiwanie
Zaproszenie czeka maksymalnie 15 minut i przyjmuje tylko pierwszego gościa. Twórca może bezpiecznie wrócić po chwilowym rozłączeniu przez 2 minuty, a strona gościa automatycznie ponawia połączenie co 3 sekundy.
Rozmowa
Wiadomości istnieją w pamięci dwóch otwartych kart. Serwer nie zapisuje historii, a po chwilowej utracie połączenia obie strony mają 2 minuty na powrót.
Rozłączenie
Chwilowa utrata sieci daje obu stronom 2 minuty na powrót. Świadome zakończenie natychmiast unieważnia pokój.
Spalenie
Rekord pokoju znika z MySQL, drugie gniazdo jest zamykane, a klucze i wiadomości są usuwane z widoku.
Co widzi serwer
- identyfikator i status pokoju
- klucze publiczne
- czas i rozmiar zaszyfrowanych ramek
Czego nie widzi
- treści wiadomości
- kluczy prywatnych i kluczy AES
- historii rozmowy
Telefon podczas rozmowy
Gdy pokój jest aktywny, strona prosi system o niewygaszanie ekranu. Po przełączeniu do innej aplikacji system zwalnia tę blokadę. Jeśli WebSocket zostanie wtedy przerwany, oczekujący twórca ma 2 minuty na powrót. Gość, który w tym czasie otworzy zaproszenie, nie musi odświeżać strony — połączenie jest ponawiane automatycznie co 3 sekundy. Także podczas rozmowy twórca i gość mają po 2 minuty na powrót do aplikacji. Wiadomości są wtedy wstrzymane, a jawne zakończenie nadal natychmiast spala pokój.
Osoba, która przejmie go przed pierwszym użyciem, może zająć miejsce gościa. Przy rozmowie wysokiego ryzyka porównaj kod bezpieczeństwa innym kanałem.