Przejdź do treści
Cappa

Szyfrowanie end-to-end w notatkach: co widzi serwer?

Jak działa szyfrowanie end-to-end w aplikacji do notatek? Wyjaśniamy, kto ma dostęp do treści, co zapisuje serwer i jakie są granice tej ochrony.

Kapibara wysyła zaklejone koperty pocztą pneumatyczną z biurka do archiwum.
W tym artykule

Szyfrowanie end-to-end (E2EE) oznacza, że notatki są szyfrowane na Twoim urządzeniu, zanim trafią na serwer. Dostawca je przechowuje i synchronizuje, ale nie ma klucza, którym mógłby je odczytać. Widzi jednak część metadanych, na przykład rozmiar zapisanych danych i czas ostatniej zmiany.

Na przykładzie Cappy wyjaśniamy, czym E2EE różni się od innych rodzajów szyfrowania, w jakiej postaci serwer przechowuje notatki i co nadal o nich wie. Opisujemy też granice tej ochrony.

Czym jest szyfrowanie end-to-end?

Szyfrowanie zamienia czytelne dane w szyfrogram, który bez klucza wygląda jak przypadkowy ciąg bajtów. Kto ma klucz, może odwrócić tę operację i odzyskać pierwotną treść.

Określenie „end-to-end” (dosłownie „od końca do końca”) mówi, gdzie dane są szyfrowane i odszyfrowywane. W komunikatorze tymi końcami są urządzenia nadawcy i odbiorcy, w osobistym notatniku zwykle urządzenia jednej osoby, np. laptop i telefon. Wszędzie pomiędzy, także na serwerze i w jego kopiach zapasowych, treść pozostaje zaszyfrowana.

Większość tekstów o szyfrowaniu end-to-end dotyczy komunikatorów, jak choćby poradnik Ogólnopolskiej Sieci Edukacyjnej prowadzonej przez NASK. W komunikatorze trudność polega na tym, by bezpiecznie przekazać klucz drugiej osobie. W osobistym notatniku nie ma rozmówcy, któremu trzeba go dać, ale klucz musi być dostępny na wszystkich Twoich urządzeniach, a dostawca synchronizacji nie powinien przy tym zobaczyć go w jawnej postaci.

Cappa rozwiązuje to za pomocą hasła głównego. Wszystko, co piszesz, trafia do sejfu, czyli zaszyfrowanego zbioru Twoich notatek. Sejf otwiera losowy klucz sejfu. Każde urządzenie oblicza z hasła osobny klucz i nim odszyfrowuje zabezpieczoną kopię klucza sejfu. Serwer przechowuje tę kopię, ale nie dostaje ani hasła, ani klucza, który ją otwiera.

Szyfrowanie w transmisji, w spoczynku i end-to-end

Zapewnienie „Twoje dane są szyfrowane” może oznaczać trzy różne rzeczy. Którą z nich, rozstrzyga jedno pytanie: kto ma klucz?

Szyfrowanie w transmisji

Chroni dane przesyłane przez sieć, zwykle dzięki HTTPS. Utrudnia podsłuch, np. w publicznej sieci Wi-Fi. Połączenie jest odszyfrowywane na serwerze usługi albo u pośrednika, przez którego przechodzi jej ruch.

Szyfrowanie w spoczynku (at rest)

Chroni dane zapisane na nośnikach, np. na dyskach serwera i w kopiach zapasowych. Najczęściej kluczami zarządza sam dostawca: ma je firma, a jej oprogramowanie może odszyfrować dane. Samo określenie „at rest” nie mówi jednak, kto zarządza kluczami.

Szyfrowanie end-to-end

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

W transmisji (HTTPS)W spoczynkuEnd-to-end
Gdzie 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ą na serwertaknie
Chroni przedpodsłuchem w siecikradzieżą dysków i nośników z kopiamisamą firmą, wyciekiem bazy, ciekawskimi pracownikami

W tabeli szyfrowanie w spoczynku to typowy wariant, w którym klucz ma dostawca. HTTPS i taka ochrona dysków są potrzebne i mogą działać razem z E2EE, ale same nie chronią notatek przed firmą.

Szyfrowanie HTTPS często kończy się jeszcze przed serwerami samej firmy. Wiele usług korzysta z sieci CDN (rozproszonych serwerów, które przyspieszają dostarczanie stron) albo z innego pośrednika, na którym kończy się połączenie HTTPS. Ruch Cappy przechodzi na przykład przez Cloudflare, więc ta firma odszyfrowuje zewnętrzną warstwę HTTPS. Przy szyfrowaniu end-to-end ma to mniejsze znaczenie, bo notatki wewnątrz połączenia są już zaszyfrowane.

Co szyfrowanie robi z notatką

Poniższy przykład działa w całości w Twojej przeglądarce. Generuje klucz, szyfruje wpisany tekst algorytmem AES-256-GCM i pokazuje wynik. Tego samego algorytmu Cappa używa do ochrony notatek. Tekst wpisany w przykładzie nie trafia na serwer.

Zaszyfruj notatkę i sprawdź, co się stanie po zmianie danych

Przykład używa AES-256-GCM z interfejsu Web Crypto Twojej przeglądarki. Klucz powstaje w tej karcie i nigdzie nie jest wysyłany, a API nie pozwala wyeksportować jego surowych bajtów.

Co zapisałby serwerNieczytelne bez kluczaSzyfrowanie…

Szyfrowanie…

Sprawdź trzy rzeczy:

  • Zaszyfruj ten sam tekst dwa razy. Za każdym razem wynik jest inny. Każde szyfrowanie używa nowej losowej liczby zwanej nonce (od ang. „number used once”, liczba użyta raz). Dopóki nonce się nie powtarza, ten sam tekst po zaszyfrowaniu za każdym razem wygląda inaczej. Ktoś, kto przegląda dane na serwerze, nie rozpozna, że dwie notatki mają tę samą treść.
  • Porównaj rozmiary. Wersja zaszyfrowana jest o 16 bajtów dłuższa od tekstu. Te 16 bajtów to tag uwierzytelniający, czyli coś w rodzaju plomby obliczonej z klucza i treści.
  • Zmień jeden bajt. Aplikacja odmówi odszyfrowania. Tag przestaje pasować do danych, więc zmiana zostaje wykryta i nie zobaczysz uszkodzonego tekstu.

Dlatego nowoczesne aplikacje stosują szyfrowanie uwierzytelnione. Chroni ono jednocześnie poufność i integralność danych, czyli pilnuje, by nikt ich nie odczytał ani niepostrzeżenie nie zmienił. Jak AES i tryb GCM to robią, wyjaśniamy bez matematyki w tekście o szyfrowaniu AES-256. Formalną definicję trybu GCM zawiera dokument NIST SP 800-38D.

Jak wygląda notatka zapisana na serwerze

Tak w uproszczeniu wygląda jedna notatka w bazie danych Cappy. Zawartość zewnętrznego pola serwer może odczytać. Wewnętrzne pole przechowuje, ale nie potrafi go 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 są tytuł, treść, tagi, załączniki i obrazy, informacja o przypięciu i archiwizacji oraz daty utworzenia i edycji, które widzisz w aplikacji.

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

Każda z tych etykiet coś jednak serwerowi mówi.

  • ID rekordu to losowy identyfikator nadany na Twoim urządzeniu. Łączy kolejne wersje tej samej notatki, ale nie mówi nic o treści.
  • Typ to note w przypadku notatek. Jedyny rekord z ustawieniami aplikacji ma osobny typ.
  • Rozmiar to długość szyfrogramu. Z grubsza zdradza długość notatki: notatka ze zdjęciem jest wyraźnie większa niż lista zakupów.
  • Rewizja to numer zapisanej wersji. Dzięki niemu serwer odrzuci nieaktualny zapis ze starego urządzenia.
  • Znaczniki czasu pokazują, kiedy serwer otrzymał notatkę i każdą jej zmianę. Po usuniętej notatce zostaje mały znacznik bez szyfrogramu (tzw. tombstone, dosłownie „nagrobek”), żeby inne urządzenia wiedziały, że też mają ją usunąć.

Szyfrowanie wiąże też szyfrogram z konkretnym rekordem. Identyfikator sejfu, identyfikator rekordu, typ i rewizja wchodzą do obliczenia tagu uwierzytelniającego jako tzw. dane dodatkowe (AAD, od ang. additional authenticated data). Nie muszą być zaszyfrowane, żeby ich podmiana została wykryta. Gdyby serwer wstawił szyfrogram jednej notatki do wiersza innej, aplikacja zgłosiłaby błąd odszyfrowania, 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. Poniżej zestawiamy, co dokładnie widzi serwer 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, czyli jego jednokierunkowy odcisk, ale nie hasło
  • 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ść i informację, czy dostęp urządzenia unieważniono
  • dla każdej notatki: ID rekordu, typ, rozmiar, rewizję i znaczniki czasu
  • kiedy korzystasz z aplikacji i jak często zapisujesz zmiany
  • 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 ustawień aplikacji
  • zawartości załączników i obrazów

Lewa kolumna to metadane, czyli informacje o koncie, urządzeniach i zapisanych rekordach. Nie ujawniają treści, ale sporo mówią o tym, jak korzystasz z aplikacji. Kto ma dostęp do bazy 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 zna też dostawca poczty, który doręcza wiadomości od Cappy. Poza zaproszeniem Cappa wysyła e-mail po zdarzeniach ważnych dla bezpieczeństwa konta, na przykład po zmianie hasła głównego, wymianie kodu odzyskiwania albo dodaniu nowej przeglądarki. Takie wiadomości nie zawierają sekretów ani linków, ale dostawca poczty poznaje rodzaj i czas zdarzenia. Podobne ograniczenia mają też inne usługi. Apple podaje, że nawet po włączeniu opcjonalnej Zaawansowanej ochrony danych część metadanych w Notatkach, na przykład czas utworzenia i ostatniej zmiany notatki, pozostaje objęta standardową ochroną.

Jak z jednego hasła powstają dwa klucze

Tak wygląda w Cappie hierarchia kluczy, czyli droga od tego, co wpisujesz, do klucza, który szyfruje notatki. Wszystkie kroki odbywają 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 w pamięci tylko przez chwilę, potem jest czyszczony.

wyprowadzenie dwóch kluczy

Dwa klucze

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

Krok po kroku:

  1. Wpisujesz hasło główne. Hasło nigdy nie opuszcza przeglądarki. Ile znaków powinno mieć, piszemy w poradniku o długości hasła głównego.
  2. Argon2id oblicza z niego klucz główny. Argon2id to celowo powolna funkcja, która zużywa dużo pamięci (opisuje ją standard RFC 9106). W Cappie każde obliczenie zajmuje 64 MiB pamięci i wymaga trzech przebiegów. Dla Ciebie to krótka chwila, a dla kogoś, kto sprawdza miliardy haseł, ogromny koszt. Sól, czyli wartość, dzięki której Twój wynik jest niepowtarzalny, powstaje z adresu e-mail i losowego ziarna. Więcej piszemy w tekście o Argon2.
  3. Z klucza głównego powstają dwa niezależne klucze. Znajomość jednego nic nie mówi o drugim.
  4. Klucz logowania trafia na serwer. Serwer traktuje go jak zwykłe hasło konta i przed zapisaniem jeszcze raz haszuje go funkcją Argon2id. Samego hasła głównego serwer nie widzi.
  5. Klucz hasła zostaje u Ciebie. Otwiera kopertę hasła, czyli przechowywaną na serwerze zaszyfrowaną paczkę z kluczem sejfu.
  6. Klucz sejfu szyfruje każdą notatkę. To losowe 256 bitów, które Twoja przeglądarka generuje przy zakładaniu konta. Każda notatka jest szyfrowana tym kluczem algorytmem AES-256-GCM z nowym 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 kopertach. Obie zawierają ten sam klucz: jedną otwiera hasło, drugą kod odzyskiwania.

Dzięki osobnemu kluczowi sejfu zmiana hasła nie wymaga ponownego szyfrowania wszystkich notatek. Wystarczy zamknąć ten sam klucz sejfu w nowej kopercie. Ten sam mechanizm pozwala utworzyć drugą kopertę, otwieraną kodem odzyskiwania, czyli długim, losowym kodem, który zapisujesz przy zakładaniu konta. Żeby rozpocząć odzyskiwanie, administrator Cappy musi też otworzyć dla Twojego konta 60-minutowe okno odzyskiwania. Bez tego okna sam skradziony kod nie wystarczy, by przejąć konto przez procedurę odzyskiwania na serwerze. Kod pozostaje jednak pełnoprawnym kluczem. Razem z kopią bazy danych otwiera kopertę odzyskiwania offline, dlatego trzeba go strzec jak hasła.

Szyfrowanie zero-knowledge: co to znaczy?

„Zero-knowledge” (zerowa wiedza) to popularna nazwa tego podejścia. W reklamach zwykle oznacza, że dostawca nie wie nic o treści, bo nigdy nie ma klucza. W kryptografii „dowód z wiedzą zerową” oznacza zresztą coś innego: sposób, by udowodnić, że znasz sekret, nie ujawniając go.

Nie obiecujemy szyfrowania zero-knowledge w absolutnym sensie. Mamy ku temu dwa powody.

Po pierwsze, metadane. Jak widać na liście powyżej, serwer wie o Twoim koncie całkiem sporo. Mówienie o „zerowej” wiedzy byłoby nieprawdą.

Po drugie, kod aplikacji pochodzi z serwera. Cappa jest aplikacją webową, więc 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ę danych lub kopie zapasowe albo gdy zajrzy do nich administrator. Nie ochroni Cię jednak, jeśli ktoś przejmie sam serwer i podsunie Ci zmieniony kod. Ten kod działa tam, gdzie wpisujesz hasło i gdzie notatki są już odszyfrowane, więc przy następnym uruchomieniu aplikacji mógłby je przechwycić. 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, ale go nie usuwają.

Zakres ochrony jest więc konkretny: sama kopia bazy danych albo kopia zapasowa nie wystarczy, żeby odczytać notatki. Napastnik musiałby jeszcze zdobyć klucz lub kod odzyskiwania albo odgadnąć hasło główne, a każda próba odgadnięcia wymaga pełnego obliczenia Argon2id. O innych lukach, takich jak złośliwe oprogramowanie na urządzeniu, rozszerzenie przeglądarki czy ktoś przy odblokowanym komputerze, piszemy w tekście o tym, przed czym szyfrowanie nie chroni.

Ograniczenia szyfrowania end-to-end

Skoro firma nie może czytać notatek, nie może też robić niczego, co wymaga ich czytania. Ten kompromis warto znać, zanim wybierzesz aplikację.

  • Trzeba zadbać o odzyskiwanie. Nowe hasło nadane przez administratora nie otworzy istniejącej koperty. Jeśli stracisz hasło główne i kod odzyskiwania, a żadne urządzenie nie otwiera już sejfu, notatek nie da się odzyskać.
  • Wyszukiwanie, podglądy i linki działają na Twoim urządzeniu. Serwer nie przeszuka tekstu, którego nie potrafi przeczytać. W Cappie wyszukiwarka działa w przeglądarce, na odblokowanych notatkach.
  • Nie ma funkcji serwerowych, które czytają treść. Podsumowania tworzone przez AI na serwerze, przetwarzanie wycinków stron w chmurze czy dodawanie notatek e-mailem wymagałyby dostępu serwera do tekstu jawnego.
  • Udostępnianie jest trudniejsze. Żeby ktoś inny przeczytał notatkę, trzeba mu dać klucz. Cappa jest notatnikiem dla jednej osoby i nie oferuje udostępniania ani wspólnej pracy.

Część tych niedogodności łagodzi pełna kopia notatek na każdym urządzeniu. Na tym polega idea oprogramowania local-first: podstawowa kopia danych jest na Twoim urządzeniu, a aplikacja działa także bez internetu. Cappa synchronizuje wyłącznie zaszyfrowane rekordy, a lokalna kopia w przeglądarce również jest zaszyfrowana. Tekst jawny istnieje tylko wtedy, gdy aplikacja jest otwarta i odblokowana.

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

Nie trzeba 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” nie mówi, kto przechowuje klucze.
  2. Czy szyfrowanie end-to-end jest włączone domyślnie? Niektóre aplikacje chronią w ten sposób tylko zablokowane notatki albo sekcje z hasłem, inne dopiero po włączeniu specjalnej opcji.
  3. Czy po zapomnieniu hasła firma odda Ci notatki na podstawie samego linku z e-maila? Jeśli tak, ma sposób, by je odszyfrować. Kod odzyskiwania, drugie zalogowane urządzenie czy kontakt odzyskiwania to co innego i nie przeczą szyfrowaniu end-to-end.
  4. Jakie metadane są widoczne? Uczciwy dostawca wymienia je wprost.

Na podstawie dokumentacji producentów sprawdziliśmy w ten sposób popularne aplikacje, od Notion i Google Keep po Notatki Apple i Obsidiana. Wyniki znajdziesz w porównaniu dziesięciu aplikacji do notatek.

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” bywa jednak określeniem na wyrost, bo dostawca nadal widzi metadane, takie jak adres e-mail, rozmiary i znaczniki czasu, a kod aplikacji webowej pochodzi z jego serwera. Wolimy mówić precyzyjnie: 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 kończy się na serwerach usługi albo jej pośrednika, gdzie jest odszyfrowywane. Co dzieje się z danymi dalej, zależy od tego, kto ma klucz. Przy szyfrowaniu end-to-end dane wewnątrz połączenia HTTPS są już zaszyfrowane kluczem, którego usługa nie ma.

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

Nie. Nikt w Cappie nie zna Twojego klucza sejfu, więc nowe hasło nadane przez administratora nie otworzyłoby koperty. Dostęp przywrócisz kodem odzyskiwania, gdy administrator otworzy dla Twojego konta okno odzyskiwania. Jeśli nie masz ani hasła, ani kodu, sprawdź urządzenia, na których sejf wciąż jest otwarty albo da się go otworzyć, i wyeksportuj z nich notatki. Dane przepadają dopiero wtedy, gdy nie zostanie żaden sposób odblokowania.

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

Tak, ale nie przez odczytanie bazy danych serwera. Zagrożeniem pozostają złośliwe oprogramowanie, szkodliwe rozszerzenie przeglądarki, fałszywa strona logowania, słabe hasło główne odgadnięte offline albo zmieniony kod aplikacji z przejętego serwera. Szyfrowanie end-to-end ogranicza dostęp do treści, ale nie zastępuje ochrony urządzeń i konta.

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

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

Powiadomimy Cię o otwarciu Cappy

Na razie Cappa jest dostępna tylko na zaproszenie. Planowana cena to 29 € rocznie. Zostaw e-mail, a powiadomimy Cię, gdy otworzymy dostęp. Zapis jest bezpłatny i nie zobowiązuje do zakupu.

Adresu użyjemy tylko po to, by powiadomić Cię o otwarciu dostępu. Link w e-mailu pozwala go w każdej chwili usunąć.

Autor: zespół Cappy

Tworzymy aplikację Cappa do notatek w Markdownie. Szyfruje ona treść na Twoim urządzeniu przed wysłaniem jej na serwer. Wyjaśniamy, jak działa ta ochrona i jakie ma ograniczenia.