Szyfrowanie end-to-end w notatkach: co widzi serwer, a czego nie

Szyfrowanie end-to-end: co to jest i jak chroni Twoje notatki? Wyjaśniamy po ludzku, kto ma klucz, co zapisuje serwer i czego nigdy nie zobaczy.

Kapibara przy przytulnym biurku pisze w notesie i wrzuca zaklejone koperty do mosiężnej rury pneumatycznej, która biegnie przez okno do odległego archiwum, gdzie na półkach leżą wyłącznie identyczne zaklejone koperty.
W tym artykule

Szyfrowanie end-to-end: co to znaczy, kiedy notatki czyta tylko jedna osoba, czyli Ty? Twoje notatki są zamykane na Twoim urządzeniu, zanim trafią gdziekolwiek dalej, a klucz do ich otwarcia mają wyłącznie Twoje urządzenia. Firma, która je przechowuje i synchronizuje, trzyma tylko zaszyfrowane dane, których nie potrafi odczytać. Nadal widzi jednak pewne fakty na ich temat, na przykład rozmiar i czas zmiany.

W tym przewodniku wyjaśniamy po ludzku, czym szyfrowanie od końca do końca różni się od ogólnikowego „Twoje dane są szyfrowane”, jak wygląda notatka zapisana na serwerze i co serwer widzi, a czego nie. Za przykład bierzemy Cappę, aplikację do notatek, którą tworzymy. Opisujemy też to, co w niej nie jest idealne.

Szyfrowanie end-to-end: co to jest?

Szyfrowanie zamienia czytelny tekst w coś, co wygląda jak losowy szum. Służy do tego tajna liczba, czyli klucz. Z właściwym kluczem szum znowu staje się Twoim tekstem. Bez niego dane są bezużyteczne.

Określenie „end-to-end” (po polsku: od końca do końca) mówi, gdzie odbywa się zamykanie i otwieranie: wyłącznie na końcach. W komunikatorze końcami są nadawca i odbiorca. W notatkach oba końce to zwykle Ty: dziś laptop, jutro telefon. Wszystko pomiędzy (Twoje Wi-Fi, internet, serwery firmy, jej kopie zapasowe) ma do czynienia tylko z zamkniętą wersją.

Większość tekstów o szyfrowaniu end-to-end dotyczy komunikatorów, na przykład poradnik Ogólnopolskiej Sieci Edukacyjnej prowadzonej przez NASK. Tam trudność polega na bezpiecznym przekazaniu klucza drugiej osobie. Prywatne notatki są w jednym prostsze, a w innym trudniejsze. Nie ma drugiej osoby, więc nie trzeba wymieniać kluczy. Ten sam klucz musi jednak znaleźć się na każdym Twoim urządzeniu, a firma pośrodku nie może go nigdy dostać.

Większość aplikacji, które to potrafią, w tym Cappa, rozwiązuje ten problem tak samo: wyprowadza klucz z hasła, które znasz tylko Ty. Każde urządzenie, które zna hasło, samo odtworzy klucz. Serwerowi nie trzeba go powierzać.

Szyfrowanie w transmisji, w spoczynku i od końca do końca

„Twoje dane są szyfrowane” może oznaczać trzy bardzo różne rzeczy. Rozstrzyga je zawsze to samo pytanie: kto ma klucz?

Szyfrowanie w transmisji

Ochrona danych w drodze przez sieć, zwykle HTTPS (kłódka w przeglądarce). Chroni przed kimś podłączonym do tego samego Wi-Fi w kawiarni. Połączenie jest odszyfrowywane, gdy dociera do serwerów firmy.

Szyfrowanie w spoczynku (at rest)

Ochrona danych zapisanych na dyskach i w kopiach zapasowych firmy. Pomaga, gdy ktoś ukradnie dysk albo trafi on na złom. Klucz ma firma, bo jej oprogramowanie odszyfrowuje dane za każdym razem, gdy je wyświetlasz.

Szyfrowanie end-to-end

Dane są szyfrowane na Twoim urządzeniu i odszyfrowywane tylko na Twoich urządzeniach. Firma je przechowuje i przesyła, ale nigdy nie ma klucza.

W transmisji (HTTPS)W spoczynkuEnd-to-end
Chroni notatkiw drodze do serwerana dyskach serwerawszędzie poza Twoimi urządzeniami
Kto ma kluczserwer, na czas połączeniafirmatylko Ty
Czy firma może czytać notatki?tak, gdy dotrątaknie
Pomaga przeciwpodsłuchowi w siecikradzieży dysków i nośników z kopiamisamej firmie, wyciekom bazy, ciekawskim pracownikom

Większość aplikacji stosuje dwa pierwsze rodzaje i to naprawdę ma sens. Zauważ jednak, że w obu firma nadal może przeczytać wszystko. To nie jest błąd w ich szyfrowaniu, tylko sposób, w jaki te rodzaje szyfrowania mają działać.

HTTPS często kończy się też, zanim dane trafią do komputerów samej firmy. Wiele usług stoi za siecią CDN albo serwerem pośredniczącym, który odszyfrowuje połączenie jako pierwszy. Ruch Cappy przechodzi na przykład przez Cloudflare, więc HTTPS kończy się na brzegu sieci Cloudflare. Przy szyfrowaniu end-to-end ma to mniejsze znaczenie, bo notatki wewnątrz połączenia są już zaszyfrowane.

Co szyfrowanie robi z notatką

Poniższe okienko używa tego samego rodzaju szyfrowania, którym Cappa szyfruje notatki, czyli AES-256-GCM, i działa w całości w Twojej przeglądarce. Tworzy losowy klucz w tej karcie, szyfruje to, co wpiszesz, i pokazuje, co dostałby serwer. Nic z tego, co wpiszesz, nie jest nigdzie wysyłane.

Sprawdź sam: zaszyfruj notatkę w przeglądarce

Działa tu prawdziwy AES-256-GCM z Web Crypto Twojej przeglądarki. Klucz powstał przed chwilą w tej karcie, nie da się go wyeksportować i nie jest nigdzie wysyłany.

Co zapisałby serwerNieczytelne bez kluczaSzyfrowanie…

Szyfrowanie…

Sprawdź trzy rzeczy:

  • Zaszyfruj ten sam tekst dwa razy. Wynik za każdym razem jest inny. Każde szyfrowanie używa świeżej losowej liczby zwanej nonce (od „number used once”, liczba użyta raz), więc identyczne notatki nigdy nie dają identycznego szyfrogramu. Ktoś, kto patrzy na serwer, nie pozna, że dwie notatki mówią to samo.
  • Porównaj rozmiary. Wersja zaszyfrowana jest o 16 bajtów dłuższa niż tekst. Te 16 bajtów to tag uwierzytelniający, czyli plomba obliczona z klucza i treści.
  • Zmień jeden bajt. Odszyfrowanie zostaje odrzucone. Plomba przestaje pasować, więc zmiana zostaje wykryta, a Ty nie dostajesz zepsutego tekstu.

Właśnie dlatego nowoczesne aplikacje używają szyfrowania uwierzytelnionego, które chroni jednocześnie poufność i integralność danych. Jak AES i tryb GCM robią to bez wchodzenia w matematykę, wyjaśniamy w tekście Szyfrowanie AES-256 bez matematyki. Formalna definicja trybu GCM jest w dokumencie NIST SP 800-38D.

Jak wygląda notatka zapisana na serwerze

Tak, w uproszczeniu, wygląda jedna notatka zapisana w bazie danych Cappy. Zawartość zewnętrznego pola serwer może przeczytać. Wewnętrzne pole przechowuje, ale go nie otworzy.

Wiersz w tabeli zaszyfrowanych rekordówserwer to widzi

ID rekordu: 7f3c9a2e-…typ: noterozmiar: 1284 Brewizja: 12utworzono: 2026-09-02 08:14 UTCzmieniono: 2026-09-27 21:40 UTC

Zaszyfrowana notatkaotwiera ją tylko Twój klucz sejfu

nonce: 12 losowych bajtów
ExhdT0FndAqlFmcaw9gtqFMomAAr3xR7Y4yoVIQC1IWGwjZ2phqqm7yEWk3NZyrSTcImfoHQO84TfRj8DN4tA5HMvmyYS2NdWgEtYFyNDYzokTJWm-2cMOY_JUSFcUL_1eO1mc34YatVAfd4BvRpgzDPu__xiZkP5abgC_MrsD1z91eCKjXD

W środku: tytuł, treść, tagi, załączniki i obrazy, przypięcie i archiwizacja oraz Twoje własne daty utworzenia i edycji.

Jedna notatka w postaci, w jakiej przechowuje ją serwer Cappy. Etykiety w zewnętrznym polu to czytelne metadane; cała Twoja treść jest w szyfrogramie.

Każda etykieta coś serwerowi mówi:

  • ID rekordu to losowy identyfikator utworzony na Twoim urządzeniu. Łączy kolejne wersje tej samej notatki, ale nic nie mówi o treści.
  • Typ to note albo jedyny rekord z preferencjami aplikacji.
  • Rozmiar to długość szyfrogramu. Z grubsza zdradza, jak długa jest notatka. Notatka ze zdjęciem jest wyraźnie większa niż lista zakupów.
  • Rewizja liczy zapisane wersje, dzięki czemu serwer odrzuci nieaktualny zapis ze starego urządzenia.
  • Znaczniki czasu pokazują, kiedy serwer otrzymał notatkę i każdą zmianę. Usunięta notatka zostawia mały znacznik (tzw. tombstone) bez szyfrogramu, żeby inne urządzenia wiedziały, że mają ją usunąć.

Szyfrogram jest też związany ze swoją etykietą. Cappa szyfruje każdą notatkę razem z identyfikatorem sejfu, identyfikatorem rekordu, typem i rewizją jako „dane dodatkowe”. Gdyby serwer wstawił szyfrogram jednej notatki do wiersza innej, odszyfrowanie by się nie udało, zamiast po cichu pokazać Ci niewłaściwą notatkę.

Co widzi serwer, a czego nigdy nie dostaje

Szyfrowanie end-to-end nie oznacza, że serwer nic nie wie. Oznacza, że nie może przeczytać tego, co piszesz. Oto pełny obraz dla Cappy, na podstawie naszej dokumentacji bezpieczeństwa i schematu bazy danych.

Serwer widzi

  • Twój adres e-mail i nazwę wyświetlaną
  • skrót (hash) Twojego klucza logowania, a nie hasła
  • sesje: termin ważności, adres IP i identyfikator przeglądarki (user agent)
  • Twoje urządzenia: losowe identyfikatory, ogólną nazwę w rodzaju „Browser on MacIntel”, ostatnią aktywność, stan unieważnienia
  • dla każdej notatki: ID rekordu, typ, rozmiar, rewizję i znaczniki czasu
  • kiedy korzystasz z aplikacji i jak często zapisujesz
  • zaszyfrowane koperty z kluczem sejfu

Serwer nigdy nie dostaje

  • Twojego hasła głównego
  • klucza, który otwiera kopertę hasła
  • klucza sejfu
  • kodu odzyskiwania
  • tytułów ani treści notatek
  • tagów, linków ani preferencji
  • zawartości załączników i obrazów

Lewa kolumna to metadane, czyli dane o danych. To nie są Twoje notatki, ale też nie jest to nic. Ktoś, kto ma bazę danych, może się dowiedzieć, że konto istnieje, ile mniej więcej ma notatek, jak są duże i o jakich porach właściciel pisze. Dlatego mówimy, że szyfrowanie w Cappie chroni treść notatek, a nie Twoją aktywność.

Twój adres e-mail widzi też dostawca poczty, który doręcza wiadomości Cappy. Oprócz zaproszenia Cappa wysyła Ci e-mail przy zdarzeniach ważnych dla bezpieczeństwa konta, na przykład po zmianie hasła głównego, wymianie kodu odzyskiwania albo dodaniu nowej przeglądarki. Te wiadomości nie zawierają sekretów ani linków, ale dostawca poczty poznaje rodzaj i czas zdarzenia. Z tym samym kompromisem mierzą się duzi dostawcy. Apple opisuje, że nawet przy opcjonalnej Zaawansowanej ochronie danych część metadanych Notatek, na przykład czas utworzenia czy ostatniej zmiany notatki, pozostaje objęta standardową ochroną.

Jak z jednego hasła powstają dwa klucze

Oto hierarchia kluczy w Cappie, czyli droga od tego, co wpisujesz, do tego, co szyfruje notatki. Wszystko dzieje się w Twojej przeglądarce.

Hasło główne

Wpisujesz je na swoim urządzeniu. Nigdzie nie jest wysyłane.

Argon2id

Klucz główny

Istnieje przez chwilę w pamięci, potem jest czyszczony.

podział na dwa

Dwa klucze

  • Klucz logowania: trafia na serwer jako dowód, że to Ty.
  • Klucz hasła: zostaje w przeglądarce i otwiera kopertę.
Od hasła głównego do dwóch kluczy Cappy. Urządzenie opuszcza tylko klucz logowania, a serwer przed zapisaniem hashuje go ponownie.

Krok po kroku:

  1. Wpisujesz hasło główne. Nigdy nie opuszcza przeglądarki. Jak długie powinno być, piszemy w tekście Jak długie powinno być hasło główne?
  2. Argon2id rozciąga je w klucz główny. Argon2id to celowo powolna funkcja, która potrzebuje dużo pamięci (opisuje ją standard RFC 9106). W Cappie każde obliczenie zajmuje 64 MiB pamięci i trzy przebiegi. Dla Ciebie to jedna krótka chwila, dla kogoś, kto próbuje miliardów haseł, ogromny koszt. Sól, czyli wartość, która sprawia, że Twój wynik jest unikalny, powstaje z adresu e-mail i losowego ziarna. Szczegóły: Argon2 po ludzku.
  3. Klucz główny dzieli się na dwa niezależne klucze. Znajomość jednego nie zdradza drugiego.
  4. Klucz logowania trafia na serwer. Serwer traktuje go jak zwykłe hasło konta i przed zapisaniem hashuje go ponownie funkcją Argon2id. Hasła, z którego powstał, serwer nie widzi.
  5. Klucz hasła zostaje u Ciebie. Otwiera „kopertę hasła”, czyli zaszyfrowaną paczkę przechowywaną na serwerze, w której jest klucz sejfu.
  6. Klucz sejfu szyfruje każdą notatkę. Sejfem nazywamy zaszyfrowany zbiór wszystkich Twoich notatek, a jego klucz to losowe 256 bitów wygenerowane w Twojej przeglądarce przy zakładaniu konta. Każda notatka jest nim szyfrowana algorytmem AES-256-GCM ze świeżym nonce.

Nagłówek sejfu, zapisany na serwerzeserwer widzi tylko szyfrogram

Koperta hasłaotwiera ją klucz hasła

Klucz sejfulosowe 256 bitów

Koperta odzyskiwaniaotwiera ją kod odzyskiwania

Ten sam klucz sejfulosowe 256 bitów

Klucz sejfu leży na serwerze wyłącznie w kopercie. Dwie różne koperty zawierają ten sam klucz: jedną otwiera hasło, drugą kod odzyskiwania.

Po co dodatkowa warstwa? Dlaczego nie szyfrować notatek bezpośrednio kluczem hasła? Bo wtedy zmiana hasła wymagałaby ponownego zaszyfrowania wszystkich notatek. Dzięki kopercie zmiana hasła oznacza tylko zamknięcie tego samego klucza sejfu w nowej kopercie. Koperta pozwala też dodać drugą, na kod odzyskiwania: długi, losowy kod, który zapisujesz przy zakładaniu konta. W Cappie odzyskiwanie wymaga też, żeby administrator otworzył dla Twojego konta 60-minutowe okno odzyskiwania, więc sam skradziony kod nie wystarczy.

Szyfrowanie zero-knowledge: co to znaczy?

„Zero-knowledge” (zerowa wiedza) to popularna nazwa tego podejścia. W materiałach reklamowych zwykle znaczy: dostawca nie ma żadnej wiedzy o treści, bo nigdy nie ma klucza. (Kryptografowie używają też pojęcia „dowód z wiedzą zerową” na coś innego: sposób, by udowodnić, że znasz sekret, bez ujawniania go.)

Unikamy obietnicy szyfrowania zero-knowledge w sensie absolutnym, z dwóch powodów.

Po pierwsze, metadane. Jak widać na liście wyżej, serwer wie o Twoim koncie całkiem sporo. „Zero” nie byłoby prawdą.

Po drugie, sama aplikacja przychodzi z serwera. Cappa jest aplikacją webową. Za każdym razem, gdy ją otwierasz, przeglądarka pobiera jej kod z serwera Cappy. Szyfrowanie w przeglądarce chroni Cię, gdy ktoś ukradnie bazę albo kopie zapasowe lub gdy zajrzy do nich administrator. Nie ochroni Cię jednak, jeśli przejęty zostanie sam serwer i wyśle Ci zmieniony kod, bo ten kod działa tam, gdzie hasło i notatki są już otwarte. Mógłby je przechwycić przy kolejnym użyciu aplikacji. Dotyczy to każdej przeglądarkowej aplikacji z szyfrowaniem end-to-end, nie tylko naszej. Aplikacje instalowane ze sklepu przenoszą to ryzyko na proces aktualizacji w sklepie, ale go nie usuwają.

Prawdziwe twierdzenie jest więc węższe, choć nadal przydatne: ktoś, kto ma bazę danych Cappy albo jej kopie zapasowe, nie przeczyta Twoich notatek, jeśli nie zgadnie hasła głównego, a każda próba kosztuje pełne obliczenie Argon2id. O pozostałych lukach, takich jak złośliwe oprogramowanie na urządzeniu, rozszerzenie przeglądarki czy ktoś przy odblokowanym komputerze, piszemy w tekście Przed czym szyfrowanie nie chroni.

Ile kosztuje szyfrowanie end-to-end

Jeśli firma nie może czytać notatek, nie może też robić rzeczy, które wymagają ich czytania. Na tym polega kompromis, który warto znać przed wyborem.

  • Brak resetu hasła. Administrator Cappy nie zresetuje Ci hasła, bo nowe hasło nie otworzyłoby starej koperty. Jeśli stracisz i hasło główne, i kod odzyskiwania, nikt już nie odszyfruje Twoich notatek.
  • Wyszukiwanie, podglądy i linki działają na Twoim urządzeniu. Serwer nie przeszuka tekstu, którego nie potrafi przeczytać. W Cappie wyszukiwanie działa w przeglądarce, na odblokowanych notatkach.
  • Brak funkcji serwerowych, które czytają treść. Podsumowania AI na serwerze, przetwarzanie wycinków stron w chmurze czy dodawanie notatek e-mailem wymagałyby tekstu jawnego na serwerze.
  • Udostępnianie jest trudniejsze. Żeby ktoś inny przeczytał notatkę, trzeba dać mu klucz. Cappa to notatnik dla jednej osoby i nie ma udostępniania ani współpracy.

Część tych kosztów łagodzi pełna kopia notatek na każdym urządzeniu. Na tym polega idea oprogramowania local-first: notatki żyją najpierw na Twoim urządzeniu, działają offline i synchronizują się jako zaszyfrowane rekordy. W Cappie lokalna kopia w przeglądarce też jest zaszyfrowana, a tekst jawny istnieje tylko wtedy, gdy aplikacja jest otwarta i odblokowana.

Jak sprawdzić, czy aplikacja szyfruje notatki end-to-end

Nie musisz czytać kodu źródłowego. Szyfrowany notatnik rozpoznasz po odpowiedziach na cztery pytania:

  1. Kto ma klucz? Szukaj sformułowań w rodzaju „szyfrowane na Twoim urządzeniu” i „nie mamy dostępu do Twoich notatek”. Samo „szyfrowane w transmisji i w spoczynku” oznacza, że klucz ma firma.
  2. Czy to ustawienie domyślne? Niektóre aplikacje szyfrują end-to-end tylko zablokowaną notatkę, sekcję chronioną hasłem albo po włączeniu opcji.
  3. Czy firma odzyska notatki, gdy zapomnisz hasła? Jeśli tak, ma sposób, żeby je odszyfrować.
  4. Jakie metadane są widoczne? Uczciwy dostawca je wymienia.

Te pytania zadaliśmy popularnym aplikacjom, od Notion i Google Keep po Notatki Apple i Obsidiana, na podstawie dokumentacji samych producentów. Wyniki znajdziesz w tekście Czy aplikacja do notatek czyta Twoje notatki?

Najczęstsze pytania

Czy szyfrowanie end-to-end to to samo co szyfrowanie zero-knowledge?

Zwykle oba określenia opisują to samo podejście: dostawca nigdy nie ma klucza do treści. „Zero-knowledge” może jednak przesadzać, bo dostawca nadal widzi metadane, takie jak e-mail, rozmiary i znaczniki czasu, a kod aplikacji webowej pochodzi z jego serwera. Wolimy precyzyjne twierdzenie: serwer przechowuje notatki wyłącznie jako szyfrogram, którego nie potrafi odszyfrować.

Czy HTTPS oznacza, że moje notatki są szyfrowane end-to-end?

Nie. HTTPS chroni połączenie między przeglądarką a usługą, a to połączenie jest odszyfrowywane na serwerach usługi (albo jej pośrednika). Co dzieje się dalej, zależy od tego, kto ma klucz. Szyfrowanie end-to-end oznacza, że dane w środku połączenia HTTPS są już zaszyfrowane kluczem, którego usługa nie ma.

Czy Cappa zresetuje moje hasło główne, jeśli go zapomnę?

Nie. Nikt w Cappie nie zna Twojego klucza sejfu, więc hasło ustawione przez administratora nie otworzyłoby koperty. Dostęp odzyskasz kodem odzyskiwania, co wymaga też otwarcia przez administratora okna odzyskiwania dla Twojego konta. Bez hasła i bez kodu notatek nie da się odszyfrować.

Czy zaszyfrowane notatki da się mimo wszystko wykraść?

Tak, ale nie przez odczytanie bazy danych serwera. Słabe punkty przesuwają się na Twoje urządzenia i hasło: złośliwe oprogramowanie, szkodliwe rozszerzenie przeglądarki, fałszywa strona logowania, słabe hasło główne zgadnięte offline albo zmieniony kod aplikacji z przejętego serwera. Szyfrowanie end-to-end zawęża krąg osób, które mogą czytać notatki, ale niczego nie czyni niemożliwym do złamania.

Jak działa wyszukiwanie, skoro serwer nie może czytać notatek?

Wyszukiwanie działa na Twoim urządzeniu po odblokowaniu notatek. Cappa trzyma w przeglądarce zaszyfrowaną kopię notatek, odszyfrowuje ją po odblokowaniu aplikacji i przeszukuje lokalnie. Serwer w tym nie uczestniczy.

Autor: zespół Cappa

Tworzymy aplikację Cappa: prywatny notatnik w Markdownie, który szyfruje notatki na Twoim urządzeniu, zanim trafią do synchronizacji. Opisujemy decyzje, które za nim stoją, razem z ograniczeniami, żeby każdy mógł ocenić je sam.