Załóż, że serwery są przejęte
To model bezpieczeństwa na poziomie platformy, który stoi za każdym wdrożeniem MindooDB — także za Bezpieczeństwem i prywatnością Haven. MindooDB jest zaprojektowany tak, że infrastruktura magazynu i synchronizacji nie musi być zaufana. Trzy niezależne warstwy szyfrowania chronią poufność danych. Podpisy kryptograficzne dowodzą autorstwa i uniemożliwiają manipulację. Nawet pełne włamanie na serwer daje tylko szyfrogram i klucze publiczne — żadnego tekstu jawnego, żadnych kluczy prywatnych, żadnych nazw użytkowników.
Trzy niezależne warstwy szyfrowania
Protokół synchronizacji MindooDB rozkłada ochronę na kilka warstw. Nawet jeśli jedna z nich zostanie przełamana, pozostałe dalej chronią poufność danych. To architektoniczny rdzeń bezpieczeństwa MindooDB: nie musisz ufać żadnej pojedynczej warstwie, żeby być bezpieczny.
Zanim wpis w ogóle trafi do magazynu, jego payload jest szyfrowany kluczem symetrycznym (AES-256-GCM). To szyfrowanie należy do modelu danych, nie do transportu. Serwer, który przechowuje wpisy, nie przeczyta ich treści — widzi tylko zaszyfrowane bajty.
Odpowiadając na żądanie synchronizacji, serwer zawija payloady wpisów w dodatkową warstwę szyfrowania RSA, kluczem publicznym pytającego użytkownika. Nawet kto przechwyci odpowiedź HTTP, nie odszyfruje jej bez prywatnego klucza RSA odbiorcy.
Cała komunikacja idzie po TLS. Chroni to metadane (identyfikatory wpisów, znaczniki czasu, parametry żądań), których warstwy payloadu nie obejmują. Razem te trzy warstwy zabezpieczają dane w spoczynku, w drodze i na łączu.
Jak powstaje zaufanie
Zaufanie w MindooDB ma jeden korzeń: klucz podpisujący Ed25519 administratora. Administrator podpisuje bazę danych katalogu, w której leżą rejestracje użytkowników. Klucz publiczny każdego użytkownika jest zapisany we wpisie katalogu podpisanym przez administratora. Gdy klient albo serwer dostaje zmianę dokumentu, sprawdza klucz publiczny podpisującego wobec katalogu — jeśli klucz nie jest zarejestrowany, zmiana zostaje odrzucona. Uwierzytelnianie przez serwer nie jest potrzebne; zaufanie opiera się na dowodach kryptograficznych.
Co serwer widzi, a czego nie
To praktyczna konsekwencja architektury zero-trust. Serwer (i każdy element po drodze, także węzły relay) obsługuje wyłącznie zaszyfrowane dane i informacje publiczne. Wszystko wrażliwe zostaje na urządzeniach klientów.
- Publiczne klucze podpisujące (Ed25519)
- Publiczne klucze szyfrujące (RSA-OAEP)
- Zaszyfrowane bloby (szyfrogram AES-256-GCM)
- Metadane wpisów (znaczniki czasu, skróty treści)
- Hashe nazw użytkowników (SHA-256 — nie same nazwy)
- Treści dokumentów (szyfrowanych end-to-end)
- Nazw użytkowników (szyfrowanych kluczem RSA administratora)
- Prywatnych kluczy podpisujących ani szyfrujących
- Symetrycznych kluczy szyfrujących (tenanta ani nazwanych)
- Haseł przekazywanych między ludźmi (tylko poza pasmem)
Kontrola dostępu oparta na szyfrowaniu
MindooDB wymusza kontrolę dostępu kluczami szyfrującymi, a nie uprawnieniami po stronie serwera. Kto ma klucz, odszyfruje dokument. Kto go nie ma, widzi szyfrogram. Dzięki temu kontrola dostępu działa wszędzie tak samo — czy dane leżą na serwerze, na urządzeniu peera, czy na węźle relay, który nie potrafi ich przeczytać. Precyzyjną kontrolę operacji zapisu — kto może tworzyć, zmieniać i usuwać dokumenty, robić ich migawki albo trwale je czyścić — opisuje osobna strona Kontrola dostępu.
Wszystkie dokumenty są szyfrowane domyślnym kluczem AES-256 tenanta, o ile nie podano innego. Każdy zarejestrowany użytkownik dostaje ten klucz przy dołączaniu. Dobry do ogólnych danych w całym tenancie.
Do wrażliwych dokumentów utwórz nazwany klucz szyfrujący i udostępnij go tylko uprawnionym użytkownikom. Klucze rozprowadza się poza systemem (zaszyfrowany klucz mailem, hasło przez telefon albo osobiście) albo przez politykę, bez wglądu administratora: ten, kto klucz już ma, pakuje go dla każdego odbiorcy jego osobistym kluczem publicznym (RSA), więc administrator rozsyła go, nigdy go nie czytając. Odszyfruje je tylko ten, kto ma klucz.
Specjalny klucz, który szyfruje wyłącznie wpisy kontroli dostępu w katalogu (rejestracje użytkowników, odwołania, grupy). Serwery sprawdzają nim, którym kluczom podpisującym można zaufać — nie widząc nazw użytkowników ani danych biznesowych. Nazwy użytkowników leżą jako skróty SHA-256; prawdziwe nazwy są zaszyfrowane kluczem RSA administratora.
| Operacja | Czym wymuszane |
|---|---|
| Rejestracja użytkownika | Wymagany podpis administratora (Ed25519) |
| Utworzenie dokumentu | Potrzebny klucz szyfrujący (domyślny albo nazwany) |
| Zmiana dokumentu | Potrzebny klucz podpisujący (zarejestrowany użytkownik) + klucz szyfrujący |
| Odczyt dokumentu | Potrzebny klucz deszyfrujący |
| Odwołanie użytkownika | Wymagany podpis administratora; blokuje synchronizację i odrzuca przyszłe zmiany |
Uwierzytelnianie challenge-response i bezpieczne dołączanie
MindooDB nie używa haseł ani tokenów przechowywanych na serwerze. Uwierzytelnianie opiera się na schemacie challenge-response z Ed25519: serwer generuje losowe wyzwanie, klient podpisuje je swoim kluczem prywatnym, a serwer sprawdza podpis wobec zarejestrowanego klucza publicznego. To dowodzi tożsamości bez dzielenia się sekretami.
Każda sesja synchronizacji zaczyna się uzgodnieniem challenge-response:
- Klient wysyła serwerowi swój publiczny klucz podpisujący
- Serwer wyszukuje klucz w katalogu i wysyła losowe wyzwanie
- Klient podpisuje wyzwanie swoim kluczem prywatnym
- Serwer sprawdza podpis, kontroluje status odwołania i wystawia krótkotrwały token JWT
Żadnych haseł ani baz sesji na serwerze. Użytkownik z odwołanym dostępem nie zacznie nawet procedury uwierzytelniania.
Nowi użytkownicy dołączają w trzech krokach, w których klucze prywatne nigdy nie opuszczają urządzenia:
- Prośba o dołączenie — Nowy użytkownik generuje klucze lokalnie i tworzy prośbę zawierającą wyłącznie klucze publiczne. Można ją bezpiecznie przesłać dowolnym kanałem.
- Zatwierdzenie przez administratora — Administrator rejestruje użytkownika w katalogu i szyfruje klucze symetryczne jednorazowym hasłem udostępnienia.
- Wymiana dwoma kanałami — Odpowiedź na prośbę idzie mailem lub czatem; hasło udostępnienia przekazuje się osobno przez telefon albo osobiście.
Algorytmy i gwarancje
MindooDB stawia na ugruntowane, szeroko audytowane algorytmy kryptograficzne. Żadnej kryptografii własnej roboty. Wybór algorytmów waży poziom bezpieczeństwa przeciw zgodności między platformami (Node.js, przeglądarki, React Native).
- Podpisy: Ed25519 (bezpieczeństwo 128-bitowe, krzywa eliptyczna)
- Szyfrowanie payloadu: AES-256-GCM (bezpieczeństwo 256-bitowe)
- Szyfrowanie transportu: RSA-OAEP z SHA-256 (klucze 3072-bitowe)
- Wyprowadzanie kluczy: PBKDF2 z osobną solą dla każdego typu klucza
- Podpisywanie tokenów: HMAC-SHA256
- Hashowanie: SHA-256 (adresowanie treścią, ochrona nazw użytkowników)
- Poufność: szyfrowanie AES-256-GCM — przeczyta tylko ten, kto ma klucz
- Autentyczność: podpisy Ed25519 — dowodzą, kto utworzył każdą zmianę
- Integralność: łańcuch skrótów — manipulacja rozrywa łańcuch i jest wykrywalna w każdym punkcie
- Niezaprzeczalność: podpisów nie da się podrobić — autorstwo jest dowodliwe
- Prywatność: nazwy użytkowników zahaszowane i zaszyfrowane — serwer nie zidentyfikuje użytkowników
Przed czym system chroni
MindooDB zakłada, że serwery, infrastruktura sieciowa, a nawet część peerów mogą być przejęte albo złośliwe. Model bezpieczeństwa jest zaprojektowany tak, żeby w takich warunkach utrzymać poufność i integralność danych.
- Włamanie na serwer — Atakujący dostaje tylko szyfrogram i klucze publiczne. Żadnego tekstu jawnego, żadnych kluczy prywatnych, żadnych nazw użytkowników.
- Podsłuch w sieci — Trzy warstwy szyfrowania chronią dane nawet wtedy, gdy TLS zostanie przełamany.
- Nieuprawnione zmiany — Każda zmiana jest podpisana; zmiany niepodpisane albo źle podpisane są odrzucane.
- Manipulacja — Łańcuch skrótów sprawia, że każda modyfikacja jest wykrywalna.
- Dostęp odwołanego użytkownika — Odwołanie działa przy wyzwaniu i przy sprawdzaniu tokenu; blokuje synchronizację natychmiast.
- Podsłuch na relayu — Węzły relay przechowują i przekazują dalej zaszyfrowane wpisy, których nie potrafią odszyfrować.
Treść payloadu jest zawsze zaszyfrowana, ale część metadanych serwer widzi z założenia. To świadomy kompromis: protokół synchronizacji potrzebuje metadanych, żeby uzgadniać wpisy.
- Widoczne: znaczniki czasu wpisów, skróty treści, struktura dokumentu (ile wpisów na dokument), wzorce dostępu (kiedy użytkownicy się synchronizują)
- Niewidoczne: treść dokumentów, nazwy użytkowników, klucze szyfrujące, treść załączników
Skróty treści zdradzają, że dwa wpisy zawierają identyczne zaszyfrowane dane (na potrzeby deduplikacji). To przyjęty kompromis na rzecz oszczędności miejsca.
Co warto wiedzieć
MindooDB jest oprogramowaniem w wersji beta z mocnym fundamentem kryptograficznym. Przeprowadzono pełny audyt bezpieczeństwa, który wskazał obszary do wzmocnienia przed wdrożeniem produkcyjnym. Wierzymy, że otwartość wobec ograniczeń buduje więcej zaufania niż obietnice marketingowe.
Odwołanie użytkownika blokuje każdą dalszą synchronizację i odrzuca jego przyszłe zmiany. Dane już zsynchronizowane na jego urządzeniu pozostają jednak dostępne — żaden system nie zagwarantuje usunięcia na urządzeniu, które nigdy się nie połączy. Środek zaradczy: używaj nazwanych kluczy do wrażliwych dokumentów (mniejszy promień rażenia) i rotuj klucze, gdy ktoś odchodzi. Haven Enterprise dodaje do tych samych polityk nadzoru podpisane przez administratora zdalne czyszczenie urządzenia: tenant zostaje usunięty ze skradzionego lub porzuconego urządzenia przy jego następnym połączeniu.
Wiele kluczy na użytkownika (podpisujący, szyfrujący, nazwane klucze symetryczne) trzeba bezpiecznie rozdystrybuować. Środek zaradczy: jedno hasło odblokowuje wszystkie klucze przez PBKDF2 z różnymi solami. KeyBag daje jednolity magazyn kluczy. Wymianę kluczy dla nowych użytkowników obsługuje przebieg prośby o dołączenie i odpowiedzi. Haven Enterprise automatyzuje bieżącą pracę: podpisane przez administratora polityki dystrybucji kluczy przydzielają klucze użytkownikom i grupom — i odbierają je z powrotem — zapakowane osobno dla każdego odbiorcy, a każdy klient uzgadnia swój KeyBag przy następnej synchronizacji.
Domyślnie serwer nie może odpytywać treści dokumentów, bo widzi tylko szyfrogram. Całe odpytywanie dzieje się na kliencie, przez przyrostowe indeksowanie. Jeśli jednak Twój przypadek wymaga przetwarzania po stronie serwera (na przykład system rezerwacji online albo publiczna witryna), możesz dać procesowi serwera klucz deszyfrujący albo udostępnić mu wycinek danych. To świadoma decyzja architektoniczna dla każdego wdrożenia — domyślnie obowiązuje poufność, a dostęp serwera włącza się tam, gdzie jest potrzebny.
Pełny audyt bezpieczeństwa wskazał obszary do wzmocnienia: ograniczanie liczby żądań na endpointach, odwoływanie tokenów JWT i rotację klucza administratora. Antydatowanym zmianom od użytkowników z odwołanym dostępem zapobiegają już poświadczenia świadka z zaufanym czasem (zobacz model kontroli dostępu). Fundament kryptograficzny (Ed25519, AES-256-GCM, RSA-OAEP) jest solidny. Wzmacnianie strony operacyjnej trwa.
Techniczne mechanizmy, które wspierają zgodność
MindooDB dostarcza kryptograficzne elementy, które odpowiadają na kluczowe wymogi techniczne popularnych regulacji. Sama zgodność pozostaje zadaniem organizacji — MindooDB daje do niej techniczny fundament.
- ✅ Pełna historia zapisów (append-only)
- ✅ Podpisy kryptograficzne (dowód autorstwa)
- ✅ Zapisy odporne na manipulację (łańcuch skrótów)
- ✅ Podróż w czasie (odtworzenie dowolnego stanu)
- ✅ Szyfrowanie end-to-end (serwer nie odszyfruje)
- ✅ Precyzyjna kontrola dostępu (nazwane klucze)
- ✅ Skoordynowane usuwanie danych (
purgeDocHistory) - ⚙️ Rejestrowanie odczytów (budujesz na poziomie aplikacji)
Te mechanizmy wspierają programy HIPAA (ochrona zdrowia), SOX (finanse), RODO (ochrona danych) i PCI-DSS (płatności). Zobacz szczegółową dokumentację zgodności →
MindooDB Haven to przeglądarkowa aplikacja PWA, która wkłada to samo szyfrowanie end-to-end, aplikacje w piaskownicy i synchronizację local-first w spokojny, wieloplatformowy obszar roboczy. Wypróbuj darmową betę albo poczytaj szczegóły.