Przejdź do treści
HexaTransfer
Wróć do bloga
Szyfrowanie i bezpieczenstwo

Transfer plików chroniony hasłem: zabezpiecz swoje pliki

Dodaj ochronę hasłem do transferów. Jak działa szyfrowanie oparte na haśle i najlepsze praktyki.

Transfer plików chroniony hasłem oznacza, że odbiorca nie może odszyfrować ładunku bez sekretu wybranego przez nadawcę. Hasło nie jest tylko bramką logowania — jest wejściem do PBKDF2-HMAC-SHA256 (lub Argon2id), który wyprowadza klucz AES-256-GCM służący do szyfrowania bajtów. Bez hasła kryptotekst na serwerze to szum. To wyraźna różnica wobec narzędzi transferu „chronionych hasłem", które przechowują pliki jako plaintext i jedynie sprawdzają hasło na warstwie HTTP. Prawdziwa ochrona hasłem wiąże hasło z samą kryptografią.

Różnica między bramkowaniem a wyprowadzaniem klucza

Większość konsumenckich platform udostępniania plików sprzed 2020 roku stosowała bramkowanie hasłem. Użytkownik przesyłał plik .pdf, serwer przechowywał go na S3, a kontroler Rails sprawdzał podane hasło względem skrótu bcrypt przed udostępnieniem pliku. Administrator z dostępem do bazy danych lub organ z nakazem widział wszystko. Szyfrowanie z hasłem jako kluczem odwraca ten model: przeglądarka uruchamia PBKDF2 z 600 000 iteracjami (poziom bazowy OWASP 2023), rozciąga hasło do 256-bitowego klucza i szyfruje przed przesłaniem. Serwer przechowuje kryptotekst i losową sól. Bez hasła — brak klucza, brak pliku. Firefox Send stosował ten model przed zamknięciem przez Mozilla w 2020 roku.

Wybór między PBKDF2 a Argon2id

PBKDF2 to sprawdzona funkcja — wbudowana w Web Crypto API, działa wszędzie i skutecznie opiera się atakom brute force przy wysokiej liczbie iteracji. Argon2id jest nowsza i lepsza: memory-hard, więc atakujący z GPU nie może tanio przeglądać tęczowych tablic. Ograniczeniem jest wsparcie przeglądarek. Natywne Argon2 nie jest jeszcze w Web Crypto, więc serwisy implementują je przez libsodium.js, co dodaje ok. 180 KB do paczki. Dla transferu 10 GB, gdzie wąskim gardłem jest przesyłanie, warto wybrać Argon2id z m=64MB, t=3, p=1. Dla załącznika 20 MB PBKDF2 przy 600k iteracji kończy się w 400 ms na średniej klasy smartfonie.

Co sprawia, że hasło jest wystarczająco mocne

12-znakowa kombinacja wielkich i małych liter, cyfr oraz symboli osiąga ok. 78 bitów entropii — wystarczająco dużo przeciwko atakom offline 2026 roku na Argon2id. Czterosłowna fraza Diceware (w stylu poprawnyKońBateriaNacisk) daje 51 bitów i łatwiej odczytać ją przez telefon. Unikaj krótkich haseł nawet przy rozciąganiu KDF; atakujący ze skradzionym kryptotekstem i solą może uruchomić PBKDF2 na RTX 5090 z prędkością 20 milionów prób na sekundę. Sześcioznakowe hasła padają w minutach. Powtarzaj każdemu użytkownikowi próbującemu hasła „Lato2026!".

Dzielenie się hasłem bez niweczenia jego celu

Wysyłanie linku do pliku i hasła w tym samym wątku e-mail niweczy ochronę. Atakujący, który zdobędzie skrzynkę, ma oba. Podziel kanały: wyślij link mailem, hasło przez SMS lub Signal. Jeszcze lepiej — skorzystaj z jednorazowego serwisu sekretu jak 1Password Psst! lub bezpośredniej wiadomości Slack, której nie można przekazać bez zrzutu ekranu. Dla stałych odbiorców uzgodnij schemat wyprowadzania hasła poza pasmem (np. „nazwa miesiąca plus ID projektu"), żeby nic wrażliwego nie trafiało w sieć.

Sól, nonce i dlaczego nie są hasłem

Trzy elementy towarzyszą kryptotekstowi: sól dla KDF (16 bajtów), nonce dla GCM (12 bajtów) i tag uwierzytelniania (16 bajtów). Żaden z nich nie musi pozostać tajny — muszą być jedynie unikalne per-transfer. Ponowne użycie nonce z tym samym kluczem jest katastrofalne w GCM: ujawnia XOR plaintextów. Kryptograficznie losowe generowanie przez crypto.getRandomValues() rozwiązuje ten problem, a sól jest przechowywana w nagłówku metadanych pliku. Hasło jest jedynym sekretem; wszystko inne podróżuje razem z kryptotekstem.

Ochrona przed manipulacją po stronie klienta

Złośliwe rozszerzenie przeglądarki może odczytać hasło podczas wpisywania. Środki zaradcze: nagłówki Content Security Policy zabraniające inline scripts i zewnętrznych połączeń (connect-src 'self'), Subresource Integrity na wszystkich bundlach JavaScript i strict Referrer-Policy, by referencje nie przeciekały do analityki. Audytuj bundle wasm z haszami SRI w manifeście. Żadne z tych środków nie powstrzyma zagrożonego systemu operacyjnego, ale podnosi poprzeczkę powyżej zwykłych skimmerów. HexaTransfer publikuje skróty SHA-384, by zaawansowani użytkownicy mogli zweryfikować zgodność załadowanego bundle z repozytorium źródłowym.

Wznawianie przerwanych pobrań bez ujawniania klucza

Dla pliku .iso 5 GB pobieranie może trwać godziny. Jeśli zakładka zostanie zamknięta, wznowienie powinno działać bez ponownego wpisywania hasła. Przechowuj wyprowadzony klucz w SessionStorage (nigdy w LocalStorage — ten persystuje między restartami) i usuń go po zakończeniu pobierania lub zamknięciu zakładki. W modelu fragment po fragmencie każdy blok 5 MB otrzymuje własny podklucz HKDF wyprowadzony z klucza głównego; wznowienie wstrzymanej sesji eksponuje tylko podklucz bieżącego fragmentu, nie korzeń. Smash i SwissTransfer obsługują żądania zakresowe, ale inaczej traktują materiał kluczowy.

Kiedy ochrona hasłem nie wystarcza

Samo hasło nie powstrzymuje autoryzowanego odbiorcy od ponownego udostępnienia pliku. Gdy Janina odszyfruje .docx, może go przekazać gdziekolwiek. Dla prawdziwej kontroli połącz hasła z ograniczeniami w stylu DRM: linki jednorazowe, dostęp powiązany z adresem IP lub krótkie okna ważności (15 minut dla pakietu dowodów PCI DSS 4.0). Dla zgodności z art. 32 RODO loguj kto, do czego i kiedy uzyskał dostęp. Ochrona hasłem to podłoga, nie sufit — podnosi koszt przypadkowego przechwycenia, nie rozwiązując problemu zagrożeń wewnętrznych.

Wypróbuj na hexatransfer.com — bezpłatnie, bez konta, do 10 GB.

Wysyłaj duże pliki bezpiecznie z szyfrowaniem end-to-end

Przesyłaj pliki do 10 GB za darmo z szyfrowaniem end-to-end. Bez rejestracji. Twoje pliki są szyfrowane w przeglądarce przed przesłaniem — nikt inny nie może ich odczytać.

Wyślij plik