Poznaj, jak MigrainePulse wykorzystuje zaawansowane szyfrowanie kluczem symetrycznym (AES-256-GCM) i Cloudflare Workers, aby zapewnić absolutne bezpieczeństwo i prywatność wrażliwych danych zdrowotnych.

Tworząc produkty HealthTech, takie jak MigrainePulse, jednym z największych wyzwań jest zapewnienie absolutnego bezpieczeństwa i prywatności wrażliwych danych użytkowników. Historia ataków migrenowych, przyjmowane leki, dokumentacja medyczna i szczegóły dotyczące stylu życia – to wszystko jest wysoce osobistymi informacjami.

Od pierwszego dnia nasza filozofia była prosta: dane użytkowników należą tylko do nich. Aby to zapewnić, wdrożyliśmy zaawansowany system szyfrowania kluczem symetrycznym (ang. Symmetric Key Encryption) w architekturze MigrainePulse, który działa w połączeniu z izolowanymi rozwiązaniami mikrousługowymi (Cloudflare Workers).

W tym artykule zapraszamy do technicznego spojrzenia pod maskę i poznania, jak działają nasze mechanizmy ochrony.

Dlaczego standardowe rozwiązania nie wystarczą?

Większość aplikacji dziś wykorzystuje szyfrowanie podczas transmisji danych (TLS/SSL) oraz szyfrowanie w spoczynku (szyfrowane bazy danych). Jednak jeśli cały system (baza danych i główny serwer przechowujący klucze szyfrowania) zostanie naruszony w tym samym czasie, dane mogą stać się jawne.

Aby tego uniknąć, w systemie MigrainePulse oddzieliliśmy same dane od kluczy potrzebnych do ich odszyfrowania.

Podstawa architektury: SymmetricKeyService

W naszym systemie backend (wykorzystującym monolityczną aplikację NestJS) specjalny moduł SymmetricKeyService zarządza szyfrowaniem i odszyfrowywaniem wrażliwych danych.

Jak to działa w praktyce?

  • Zasada jednego klucza: Szyfrowanie symetryczne oznacza, że ten sam unikalny klucz jest używany zarówno do szyfrowania, jak i odszyfrowywania danych. Każdy użytkownik ma przypisany unikalny klucz, którego nawet my sami nie mamy w naszej głównej bazie danych.

  • Szyfrowanie ładunku (Payload Encryption): Gdy użytkownik zapisuje nowy rekord zdrowotny (np. dodaje nowy atak migreny), dane docierają do naszego serwera. SymmetricKeyService pobiera te wrażliwe dane, szyfruje je za pomocą zaawansowanego algorytmu (np. AES-256-GCM), a dopiero potem zapisuje w bazie danych. W bazie danych przechowywany jest tylko bezsensowny ciąg znaków.

  • Identyfikacja użytkownika: Sesja użytkownika i dostęp do danych są ściśle powiązane z JWT (JSON Web Tokens) i uwierzytelnianiem Supabase. Użytkownik potwierdza swoją tożsamość, a przypisany mu klucz szyfrowania jest udostępniany tylko po zweryfikowanym logowaniu.

migraine-pulse-security-key-management-service diagram

Dodatkowa warstwa obrony: Cloudflare Worker

Pojawia się naturalne pytanie – gdzie w takim razie przechowywane są same klucze szyfrowania, jeśli nie w głównej bazie danych?

Tutaj z pomocą przyszła nam technologia Cloudflare Workers.

W naszej architekturze klucze szyfrowania są zarządzane poprzez całkowicie izolowaną infrastrukturę działającą w sieci Edge. Rozwiązanie opisane w dokumentacji doc/backend/cloudflare-worker.md zapewnia, że główny serwer API i baza danych nigdy nie przechowują samych kluczy w pamięci długoterminowej.

Korzyści z integracji:

  • Decentryzacja: Ponieważ klucze są przechowywane i zarządzane w oddzielnej infrastrukturze chmurowej (Cloudflare), potencjalnemu hakerowi nie wystarczyłoby skompromitować naszego głównego serwera. Musiałby jednocześnie pokonać dwa całkowicie różne, wzajemnie izolowane systemy.

  • Szybkość (Low Latency): Cloudflare Workers działają w globalnej sieci Edge (najbliżej użytkownika), więc żądanie klucza od nich (do autoryzowanego odszyfrowania) dodaje tylko minimalne opóźnienie, zachowując wydajność aplikacji.

  • Ścisła kontrola dostępu: Worker jest skonfigurowany tak, aby wydawać klucze tylko po otrzymaniu poprawnie podpisanych i zweryfikowanych żądań od naszego SymmetricKeyService, sprawdzając wszystkie ograniczenia CORS i IP.

Podsumowanie

MigrainePulse to nie tylko narzędzie do śledzenia danych. To bezpieczna przestrzeń. Łącząc solidną architekturę NestJS (symmetric-key.service.ts) z decentralizacją zapewnianą przez Cloudflare Workers, stworzyliśmy system, w którym osobiste informacje użytkownika pozostają zablokowane nawet w najgorszych scenariuszach.

Dla nas „Bezpieczeństwo na pierwszym miejscu" to nie tylko pusty frazes marketingowy – to inżynieryjny fundament, na którym zbudowany jest cały system MigrainePulse. Ponieważ gdy mówimy o zdrowiu, nie ma miejsca na kompromisy w kwestii prywatności.


Masz pytania dotyczące naszej architektury technicznej? Dołącz do dyskusji w komentarzach lub wypróbuj sam MigrainePulse!