Przejdź do treści
snowkit

Bezpieczeństwo

Podsumowanie dla zespołów IT i bezpieczeństwa oceniających Snowkit do użycia w pracy.

Przegląd bezpieczeństwa

Dla zespołów IT i bezpieczeństwa

Jak zbudowany jest Snowkit

Krótka odpowiedź na potrzeby przeglądu bezpieczeństwa, ze szczegółami o jedno kliknięcie.

Architektura

  • Snowkit to strona statyczna. Każde narzędzie działa jako JavaScript i WebAssembly w przeglądarce odwiedzającego.
  • Pliki i tekst wpisany w narzędzie są przetwarzane w pamięci na urządzeniu odwiedzającego i nigdy nie są przesyłane do Snowkit.
  • Strona jest serwowana tylko przez HTTPS, z HSTS.

Dostęp do sieci

Każda strona narzędzia ma własną Content Security Policy. Strony narzędzi mogą ładować tylko własne skrypty i style Snowkit, a prawie wszystkie mają zablokowane jakiekolwiek połączenia sieciowe.

Kilka narzędzi służy do sprawdzania rzeczy w internecie i każde mówi o tym na swojej stronie. Sprawdzanie ważności czyta publiczne rekordy RDAP i przejrzystości certyfikatów. Wyszukiwanie DNS pyta publiczne resolwery Cloudflare i Google. Generator cytowań sprawdza DOI lub ISBN w Crossref i Open Library. Sprawdzanie nagłówków HTTP, skan przed premierą i sprawdzenie działającej strony w Snowkit Launch pobierają wpisany publiczny adres przez własny serwer Snowkit. Tester MCP łączy się z adresem serwera, który wpiszesz. Wysyłana jest tylko domena, adres lub identyfikator, który wpiszesz, nigdy Twoje pliki.

Otwieranie plików z Dropbox, Google Drive lub OneDrive i zapisywanie tam wyników jest dostępne na stronach, które to oferują. Skrypt selektora tej usługi ładuje się dopiero, gdy ktoś ją wybierze, i tylko te strony dopuszczają adresy tej usługi w swojej Content Security Policy. Pliki idą prosto między przeglądarką a usługą, nigdy przez Snowkit, a krótkotrwałe uprawnienie, które usługa przyznaje, jest trzymane tylko w otwartej stronie.

Notion lub Canva przyjmują pliki tylko z serwera, więc wysłanie pliku tam przechodzi po drodze przez serwer Snowkit, przez szyfrowane połączenie. Jest przekazywany dalej, nigdy nie zapisywany na dysku, logowany ani przechowywany. Uprawnienie, które ta usługa przyznaje, jest trzymane tylko w otwartej stronie i podróżuje z tym jednym żądaniem.

Czego nigdy nie używamy

  • Brak tagów analitycznych i sieci reklamowych. Jedyne skrypty zewnętrzne to selektory plików opisane w Dostępie do sieci, ładowane, gdy ktoś wybierze tę usługę.
  • Brak ciasteczek śledzących i reklamowych. Odwiedzający, którzy się nie logują, nie dostają żadnych ciasteczek; wybór motywu jest przechowywany w lokalnej pamięci Twojej przeglądarki.
  • Bez haseł. Konta są opcjonalne i używają passkeys lub logowania przez GitHub lub Google, więc Snowkit nigdy nie widzi ani nie przechowuje hasła.

Inne nagłówki

Stron nie mogą osadzać w ramkach inne witryny, wąchanie typu MIME jest wyłączone, referrery są przycinane przy opuszczaniu witryny, a funkcje kamery, mikrofonu, lokalizacji i płatności są wyłączone, chyba że narzędzie ich potrzebuje.

Content-Security-Policy
Ładują się tylko własne skrypty i style Snowkit. Wtyczki i osadzanie w ramkach są zablokowane.
Strict-Transport-Security
Tylko HTTPS, zapamiętywane przez rok, łącznie z subdomenami.
X-Frame-Options
DENY. Inne witryny nie mogą osadzić strony Snowkit w ramce.
X-Content-Type-Options
nosniff. Pliki są zawsze czytane tylko jako typ, w jakim są serwowane.
Referrer-Policy
strict-origin-when-cross-origin. Inne witryny widzą tylko snowkit.io, nigdy strony, na której byłeś.
Permissions-Policy
Kamera, mikrofon, lokalizacja i płatności są wyłączone, chyba że narzędzie ich potrzebuje.
Cross-Origin-Opener-Policy
same-origin. Okna otwarte z innych witryn nie mogą sięgać do strony Snowkit.

Opcjonalne konta

Logowanie przechowuje imię i adres e-mail, gdy metoda logowania je podaje, identyfikator konta u dostawcy logowania i narzędzia zapisane jako ulubione. Sesje używają losowego tokenu trzymanego w bezpiecznym, HttpOnly ciasteczku własnym, z drugim ciasteczkiem zawierającym tylko Twój inicjał do nagłówka strony i trzecim zawierającym tylko wersję zdjęcia, gdy dodasz zdjęcie profilowe, a po naszej stronie przechowywany jest tylko hash tokenu. Pliki i tekst używane w narzędziach nigdy nie są powiązane z kontem. Możesz usunąć konto i wszystko w nim w każdej chwili na stronie konta.

Passkeys

Passkeys używają WebAuthn z preferowaną weryfikacją użytkownika. Serwer wystawia jednorazowe wyzwanie, które wygasa po pięciu minutach, sprawdza origin, relying party i licznik podpisów oraz przechowuje tylko klucz publiczny poświadczenia. Linki do logowania e-mailem, jeśli są oferowane, działają raz, wygasają po 15 minutach i są przechowywane tylko jako hash.

Prywatna synchronizacja

Zalogowani odwiedzający mogą zdecydować się na synchronizację Biblioteki, Your Snowkit, zapisanych kroków i ulubionych narzędzi między swoimi urządzeniami. Synchronizacja jest szyfrowana end-to-end: każdy element jest szyfrowany w przeglądarce przed przesłaniem, a serwer przechowuje tylko szyfrogram.

Szyfr
AES-GCM z kluczami 256-bitowymi
Nonce
Świeży 96-bitowy nonce przy każdym zapisie
Klucz skarbca
256 losowych bitów, tworzonych w przeglądarce
Opakowywanie kluczy
Passkey PRF z HKDF-SHA-256 albo 128-bitowy klucz odzyskiwania z PBKDF2-SHA-256 przy 600 000 iteracji
Pliki Biblioteki
Własny klucz dla każdej wersji, zapieczętowany w kawałkach po 8 MiB
Serwer przechowuje
Szyfrogram, opakowane klucze, ID konta, znaczniki czasu i rozmiary
  • Losowy 256-bitowy klucz skarbca jest tworzony w przeglądarce po włączeniu synchronizacji. Elementy są szyfrowane AES-GCM kluczem 256-bitowym i świeżym 96-bitowym nonce przy każdym zapisie, z nazwą sekcji i wersją powiązanymi jako dodatkowe uwierzytelnione dane.
  • Klucz skarbca nigdy nie opuszcza urządzenia niezaszyfrowany. Jest opakowywany AES-GCM przez każdy passkey obsługujący rozszerzenie WebAuthn PRF, kluczem wyprowadzonym z wyniku PRF przez HKDF-SHA-256, oraz przez klucz odzyskiwania z 128 losowych bitów pokazany osobie raz, przez PBKDF2-SHA-256 z 600 000 iteracji.
  • Serwer przechowuje opakowane klucze, zaszyfrowane elementy, ID konta, znaczniki czasu i rozmiary. Nie ma klucza, który mógłby je odszyfrować, więc Snowkit nie może niczego odzyskać: jeśli każdy passkey i klucz odzyskiwania zostaną utracone, nikt nie otworzy zsynchronizowanych danych.
  • Pliki Biblioteki są synchronizowane tylko wtedy, gdy synchronizacja jest włączona. Każda wersja pliku jest zapieczętowana własnym losowym 256-bitowym kluczem w kawałkach po 8 MiB, każdy kawałek powiązany ze swoim ID obiektu, pozycją i liczbą, i przechowywana pod losowym ID obiektu. Klucze poszczególnych plików, nazwy, typy i projekty żyją tylko w zaszyfrowanym indeksie Biblioteki, więc serwer widzi nieprzezroczyste ID, rozmiary i znaczniki czasu.
  • Pliki, które tylko otwierasz w narzędziu, nigdy nie są synchronizowane. Każde konto ma limit miejsca; po jego osiągnięciu przesyłanie jest wstrzymywane, a nic nie jest usuwane. Wyłączenie synchronizacji usuwa zaszyfrowaną kopię z serwera.

Wyświetlana nazwa i opcjonalne zdjęcie profilowe to dane konta, a nie dane synchronizacji. Zdjęcie jest zmniejszane w przeglądarce i przechowywane niezaszyfrowane z kontem, serwowane tylko temu zalogowanemu kontu z prywatnym buforowaniem i usuwane razem z kontem.

Co widzimy

Jak każda strona, nasz host przetwarza standardowe dane żądań, takie jak adresy IP, aby dostarczać strony. Liczymy wyświetlenia stron według ścieżki, bez ciasteczek i bez przechowywania adresów IP. Gap Radar liczy wyszukiwania bez wyniku, pytania do Kitsune bez odpowiedzi, brakujące strony i krótkie kody błędów tylko jako sumy dzienne, bez ciasteczka, identyfikatora i adresu IP; tekst wyszukiwania jest oczyszczany na urządzeniu, a rzadki tekst, który nie pojawił się 5 razy w ciągu 28 dni, nigdy nie jest pokazywany i jest usuwany. Wiadomości wysłane przez formularz opinii trafiają do zespołu Snowkit e-mailem. Szczegóły w polityce prywatności.

Zgłaszanie luki w zabezpieczeniach

Napisz na [email protected] ze szczegółami i krokami do odtworzenia. Potwierdzimy zgłoszenie i będziemy Cię informować w trakcie naprawy. Nasz security.txt podaje ten sam kontakt.