Share.Ninja

Bezpieczeństwo

W skrócie: Twoje pliki są szyfrowane na Twoim urządzeniu, zanim cokolwiek je opuści, klucze nigdy do nas nie trafiają, a my przechowujemy to, czego nie możemy odczytać. Poniżej wersja pełna.

Co jest szyfrowane

Każdy plik, każda nazwa pliku, każda lista folderu i nazwa udostępnienia. Wszystko to jest szyfrowane na Twoim urządzeniu kluczem, który powstaje tam i tam zostaje. Nasze serwery, stojące za nimi magazyny danych i sieć pomiędzy mają do czynienia wyłącznie z szyfrogramem.

Prymitywy, żeby nie trzeba było zgadywać: AES-256-GCM dla treści i metadanych, X25519 z HKDF-SHA256 do opakowywania kluczy dla urządzenia lub konta, losowe 256-bitowe klucze na każde udostępnienie.

Jak link niesie swój klucz

Link do udostępnienia wygląda tak: share.ninja/#…. Wszystko po # to token dostępu, którego przeglądarki nigdy nie wysyłają na serwer; zostaje w pasku adresu. Serwer przechowuje tylko skrót tego tokenu oraz klucz udostępnienia opakowany kluczem z niego wyprowadzonym. Kto otwiera link, wyprowadza klucz opakowujący lokalnie, odpakowuje klucz udostępnienia i odszyfrowuje. Kto nie ma linku, nie ma nic, i dotyczy to także nas.

Przestań udostępniać, a serwer odrzuci link wszędzie naraz. Wygasanie działa tak samo.

Linki tylko bezpośrednie

W przeglądarce i na desktopie link może być tylko bezpośredni. Wtedy nic nie jest wysyłane do chmury: pliki zostają na komputerze nadawcy i są przesyłane odbiorcy na żywo przez WebRTC. Transfer jest szyfrowany dwukrotnie: własnym szyfrowaniem transportowym WebRTC oraz naszą warstwą AES-256-GCM z kluczem wyprowadzonym z klucza udostępnienia. Jeśli nie ma bezpośredniej ścieżki sieciowej, pakiety przekazuje przekaźnik; widzi on szyfrogram i nic więcej. Zamknij stronę nadawcy, a nie zostanie nic do pobrania.

W pobliżu

Urządzenia znajdują się na trzy sposoby: w tej samej sieci lokalnej, przez Bluetooth (tylko aplikacje) oraz przez nasz serwer, który grupuje urządzenia za tym samym łączem internetowym. Urządzenie ogłasza swoją nazwę, klucz publiczny i ośmioznakowy odcisk tego klucza, i to tylko wtedy, gdy jest ustawione jako widoczne. Przełącznik jest w zakładce W pobliżu.

Wysyłanie w pobliżu opakowuje klucz udostępnienia kluczem publicznym urządzenia odbiorcy. Serwer przekazuje tę zapieczętowaną ofertę dalej, ale nie może jej otworzyć. Odbiorca widzi nazwę i odcisk nadawcy i akceptuje albo odrzuca; odcisk widoczny na obu ekranach pozwala sprawdzić, że nikt nie stoi pośrodku. Twoje własne zalogowane urządzenia akceptują automatycznie. Pliki wędrują potem bezpośrednio albo przez przekaźnik, który widzi tylko szyfrogram.

Twoje konto i Twoje urządzenia

Zalogowanie tworzy klucz tożsamości na Twoim pierwszym urządzeniu. Nigdy nie opuszcza Twoich urządzeń w postaci jawnej: każde urządzenie trzyma kopię opakowaną własnym kluczem urządzenia, a serwer przechowuje tylko te opakowane kopie i połówki publiczne.

Nowe urządzenie prosi o dołączenie. Urządzenie, któremu już ufasz, pokazuje prośbę z nazwą i odciskiem nowego, a jeśli zatwierdzisz, opakowuje dla niego klucz tożsamości. Nie możemy dodać urządzenia do Twojego konta ani odczytać Twoich udostępnień, żeby zrobić to za Ciebie.

Jeśli stracisz wszystkie urządzenia, 24-wyrazowa fraza odzyskiwania z Ustawień odpakowuje klucz tożsamości na nowym. Odzyskanie unieważnia każde wcześniejsze urządzenie. Jeśli nie masz ani frazy, ani urządzenia, udostępnienia przepadają; nie mamy żadnej kopii, która mogłaby je przywrócić. To nie polityka, to arytmetyka.

Co widzą nasze serwery

Tu uczciwość liczy się bardziej niż krótsza lista.

  • Dla każdego udostępnienia: jego identyfikator, kiedy powstało i kiedy wygasa, łączny rozmiar zaszyfrowanych danych, czy jest w chmurze, czy tylko bezpośrednie, i kto jest właścicielem, jeśli właściciel jest zalogowany.
  • Dla każdego pobrania: że nastąpiło, kiedy i z jakiego adresu IP. Na tym opierają się limity żądań i obsługa nadużyć.
  • Dla każdego zalogowanego konta: adres e-mail, wyświetlana nazwa, nazwy i klucze publiczne jego urządzeń, użyte miejsce.
  • Dla każdego urządzenia, zalogowanego czy nie: identyfikator urządzenia, jego klucz publiczny, nazwa, którą ogłasza urządzeniom w pobliżu.
  • Logi serwera z adresami IP i ścieżkami żądań.

Logi serwera przechowujemy 30 dni. Zapisy pobrań i dziennik aktywności Twojego konta zachowują adres IP przez 90 dni, potem zostaje samo zdarzenie.

Czego nasze serwery nie widzą: żadnego pliku, żadnej nazwy pliku, żadnej listy folderu, żadnej nazwy udostępnienia, żadnego klucza.

Po zalogowaniu możesz samodzielnie obejrzeć ten zapis: dziennik aktywności w ustawieniach konta wymienia każde działanie na Twoim koncie, z czasem, adresem IP i urządzeniem.

Przechowywanie danych i infrastruktura

Nasze serwery działają w Hetznerze w UE. Zaszyfrowane dane leżą tam, na naszych własnych serwerach, oraz w Wasabi S3, w kilku regionach. Magazyn przyjmuje i zwraca szyfrogram przez krótkotrwałe podpisane adresy URL; nigdy nie ma klucza.

Nadużycia

Strona każdego linku ma akcję Zgłoś nadużycie, która nie wymaga konta. Ponieważ sami nie możemy otworzyć udostępnienia, zgłaszający decyduje, czy dołączyć do zgłoszenia klucz linku; dopiero wtedy możemy obejrzeć, co zgłoszono. Potwierdzone zgłoszenie wyłącza link wszędzie, a my możemy zablokować urządzenie, które go utworzyło. E-mail kontaktowy zgłaszającego jest usuwany po rozpatrzeniu zgłoszenia.

Strona internetowa

Bez skryptów śledzących, bez ciasteczek analitycznych, nic nie jest wysyłane do osób trzecich. Odwiedziny liczymy z logów naszego własnego serwera. Aplikacje nie mają żadnej analityki.

Zgłaszanie podatności

Napisz na support@share.ninja i wpisz „security” w temacie. Odpowiadamy na każde zgłoszenie.