Kawiarenka

Bezpieczeństwo rozmów

„Szyfrowane” to słowo, którym rzuca dziś każdy serwis. Poniżej dokładnie, co to znaczy u nas — łącznie z tym, czego NIE chronimy. Wolimy powiedzieć wprost, gdzie są granice, niż obiecywać bezpieczeństwo absolutne.

Czat: szyfrowanie end-to-end

Kiedy wchodzisz do stolika, Twoja przeglądarka losuje jednorazową parę kluczy (ECDH na krzywej P-256). Klucz prywatny nigdy nie opuszcza karty przeglądarki i nie jest nigdzie zapisywany — po zamknięciu stolika przestaje istnieć.

Każda wiadomość dostaje własny, świeży klucz treści (AES-256-GCM). Treść jest szyfrowana raz, a sam klucz treści pakowany osobno dla każdej osoby przy stoliku — kluczem wyprowadzonym z uzgodnienia ECDH i funkcji HKDF. Efekt: dwie wiadomości nigdy nie mają tego samego klucza, a złamanie jednej nie odsłania pozostałych.

Nasz serwer dostaje gotową kopertę i przekazuje ją dalej. Nie ma klucza prywatnego, więc nie potrafi jej otworzyć — nawet gdyby chciał, nawet gdyby ktoś go do tego zmusił. Nie zapisujemy jej też w bazie ani w logach: w schemacie bazy danych nie ma tabeli na wiadomości.

Sprawdź to sam

  1. Przy stoliku kliknij „co widzi serwer?” nad czatem. Pod każdą swoją wiadomością zobaczysz fragment szyfrogramu — dokładnie to, co przez nas przechodzi.
  2. Otwórz narzędzia deweloperskie przeglądarki (F12), zakładka Network, filtr WS. Zobaczysz ramki WebSocket z polem ct — i nic czytelnego.
  3. W panelu bocznym jest numer bezpieczeństwa. Przeczytajcie go na głos. Jeśli wszyscy przy stoliku widzą taki sam, nikt nie podstawił się w środek.

Głos

Rozmowa głosowa idzie przez WebRTC, czyli bezpośrednio między przeglądarkami, z obowiązkowym szyfrowaniem (DTLS-SRTP). Dźwięk nie przechodzi przez nasz serwer i nie jest nagrywany.

Wyjątek techniczny: jeśli któryś z was siedzi za restrykcyjnym firewallem, połączenie może iść przez serwer przekaźnikowy TURN. Taki serwer przekazuje zaszyfrowane pakiety i nie ma kluczy do ich odczytania — ale zna adresy IP obu stron.

Czego nie chronimy — i mówimy to wprost

  • Metadanych. Serwer wie, kto z kim i kiedy siedział przy stoliku, ile to trwało i kto w danej chwili mówi. Bez tego stolik nie mógłby działać.
  • Podstawienia klucza przez serwer. Gdyby ktoś przejął nasz serwer i podmienił klucze publiczne w momencie dołączania, mógłby wejść w środek rozmowy. Właśnie dlatego istnieje numer bezpieczeństwa — porównajcie go głosem, a taki atak wyjdzie na wierzch.
  • Zrzutów ekranu i notatek. Nie da się technicznie zabronić drugiej osobie zrobienia zdjęcia ekranu. Szyfrowanie chroni rozmowę w drodze, nie chroni od człowieka, któremu zaufałaś/eś.
  • Zainfekowanego urządzenia. Jeśli ktoś ma dostęp do Twojego komputera, żadne szyfrowanie transportu nie pomoże.

Zasady, których się trzymamy

  • Hasła trzymamy jako nieodwracalne skróty bcrypt — nie znamy Twojego hasła.
  • Sesja siedzi w ciasteczku HttpOnly, niedostępnym dla skryptów na stronie.
  • Zmiana hasła unieważnia sesje na wszystkich pozostałych urządzeniach.
  • Linki z maili są jednorazowe, a w bazie leżą tylko ich skróty SHA-256.
  • W logach zapisujemy tylko skróconą postać adresu IP (do /24 albo /48).
  • Zdjęcia są podawane z chronionego adresu, nie z publicznego katalogu.
  • Nie ma tu żadnych narzędzi śledzących ani ciasteczek reklamowych.

Masz pytanie, którego tu nie ma, albo znalazłaś/eś dziurę? Napisz — takie zgłoszenia traktujemy poważnie. Kontakt jest w polityce prywatności.