Platforma · Model bezpieczeństwa MindooDB

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.

Architektura bezpieczeństwa zero-trust: klucze zostają na urządzeniach, zaszyfrowane dane płyną przez tarczę szyfrowania do serwerów, które nie potrafią ich odszyfrować
Obrona w głąb

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.

Warstwa 1
Szyfrowanie na poziomie aplikacji

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.

Warstwa 2
Szyfrowanie payloadu w transporcie

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.

Warstwa 3
Szyfrowanie kanału

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.

Model zaufania

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.

Łańcuch zaufania
Klucz podpisujący administratora podpisuje katalog; katalog zawiera rejestracje użytkowników podpisane przez administratora; zarejestrowani użytkownicy podpisują zmiany dokumentów z zaszyfrowanymi payloadami
Klucz administratora podpisuje katalog. Katalog wyznacza zaufanych użytkowników. Użytkownicy podpisują zmiany. Serwery mogą je walidować, nie czytając danych biznesowych.

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.

Serwer widzi
  • 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)
Serwer nie widzi nigdy
  • 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

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.

Domyślny klucz tenanta

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.

Nazwane klucze

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.

Klucz $publicinfos

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.

Wymuszanie kontroli dostępu
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

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.

Uwierzytelnianie synchronizacji

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.

Bezpieczne dołączanie użytkowników

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.
Prymitywy kryptograficzne

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).

Algorytmy
  • 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)
Gwarancje bezpieczeństwa
  • 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
Model zagrożeń

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.

Odparte ataki
  • 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ć.
Widoczne metadane

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.

Uczciwe kompromisy

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.

Granice odwołania dostępu

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.

Złożoność zarządzania kluczami

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.

Zapytania po stronie serwera wymagają jawnego udostępnienia klucza

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.

Stan audytu bezpieczeństwa

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.

Zgodność

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.

Wbudowane: audyt i integralność
  • ✅ 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)
Wbudowane: ochrona danych
  • ✅ 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 →

Zobacz to w akcji
Haven - obszar roboczy zbudowany na tym modelu bezpieczeństwa

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.