Даведайцеся, як MigrainePulse выкарыстоўвае перадавое сіметрычнае шыфраванне (AES-256-GCM) і Cloudflare Workers для забеспячэння абсолютнай бяспекі і канфідэнцыйнасці адчувальных даных пра здароўе.

Ствараючы прадукты HealthTech, такія як MigrainePulse, адным з самых вялікіх выклікаў з’яўляецца забеспячэнне абсолютнай бяспекі і канфідэнцыйнасці канфідэнцыйных даных карыстальнікаў. Гісторыя прыступаў мігрэні, прынятыя лекаванні, медыцынскія запісы і дэталі ладу жыцця – усё гэта з’яўляецца вельмі асабістай інфармацыяй.

З першага дня нашая філасофія была простай: даныя карыстальнікаў належаць толькі ім. Каб забяспечыць гэта, мы ўкаранілі перадавую сістэму сіметрычнага шыфравання (англ. Symmetric Key Encryption) у архітэктуры MigrainePulse, якая працуе разам з ізаляванымі мікрасэрвіснымі рашэннямі (Cloudflare Workers).

У гэтым артыкуле мы запрашаем вас тэхнічна зазірнуць пад капот і даведацца, як працуюць нашы ахоўныя механізмы.

Чаму стандартных рашэнняў недастаткова?

Большасць дадаткаў сёння выкарыстоўваюць шыфраванне падчас перадачы даных (TLS/SSL) і шыфраванне ў стане спакою (зашыфраваныя базы даных). Аднак калі ўся сістэма (база даных і галоўны сервер, які захоўвае ключы шыфравання) будзе скампраметавана адначасова, даныя могуць стаць адкрытымі.

Каб пазбегнуць гэтага, у сістэме MigrainePulse мы аддзялілі самі даныя ад ключоў, неабходных для іх расшыфроўкі.

Аснова архітэктуры: SymmetricKeyService

У нашай бэкенд-сістэме (выкарыстоўваючы маналіт NestJS) спецыяльны модуль SymmetricKeyService кіруе шыфраваннем і дэшыфраваннем канфідэнцыйных даных.

Як гэта працуе на практыцы?

  • Прынцып аднаго ключа: Сіметрычнае шыфраванне азначае, што адзін і той жа ўнікальны ключ выкарыстоўваецца як для шыфравання, так і для дэшыфравання даных. Кожны карыстальнік мае ўнікальны ключ, прызначаны яму, які нават мы самі не маем у нашай галоўнай базе даных.

  • Шыфраванне карыснага нагрузкі (Payload Encryption): Калі карыстальнік захоўвае новы запіс пра здароўе (напрыклад, дадае новы прыступ мігрэні), даныя трапляюць на наш сервер. SymmetricKeyService атрымлівае гэтыя канфідэнцыйныя даныя, шыфруе іх з дапамогай перадавога алгарытму (напрыклад, AES-256-GCM) і толькі потым захоўвае ў базе даных. У базе даных захоўваецца толькі бессэнсоўны набор сімвалаў.

  • Ідэнтыфікацыя карыстальніка: Сесія карыстальніка і доступ да даных цесна звязаны з JWT (JSON Web Tokens) і аўтэнтыфікацыяй Supabase. Карыстальнік пацвярджае сваю асобу, а ключ шыфравання, які належыць яму, прадастаўляецца толькі пасля верифікаванага ўваходу.

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

Дадатковы ўзровень абароны: Cloudflare Worker

Узнікае натуральнае пытанне – дзе тады захоўваюцца самі ключы шыфравання, калі не ў галоўнай базе даных?

Тут нам на дапамогу прыйшла тэхналогія Cloudflare Workers.

У нашай архітэктуры ключы шыфравання кіруюцца праз цалкам ізаляваную інфраструктуру, якая працуе ў Edge-мережы. Рашэнне, апісанае ў дакументацыі doc/backend/cloudflare-worker.md, забяспечвае, што галоўны API-сервер і база даных ніколі не захоўваюць самі ключы ў даўгатэрміновай памяці.

Перавагі інтэграцыі:

  • Дэцэнтралізацыя: Паколькі ключы захоўваюцца і кіруюцца ў асобнай воблачнай інфраструктуры (Cloudflare), патэнцыйнаму хакера не будзе дастаткова скампраметаваць наш галоўны сервер. Яму спатрэбілася б адначасова пераадолець дзве зусім розныя, узаемна ізаляваныя сістэмы.

  • Хуткасць (Low Latency): Cloudflare Workers працуюць у глабальнай Edge-мережы (найбліжэйшай да карыстальніка), таму запыт ключа да іх (для аўтарызаванага дэшыфравання) дадае толькі мінімальную затрымку, захоўваючы прадукцыйнасць праграмы.

  • Строгі кантроль доступу: Worker наладжаны так, што аддае ключы толькі пасля атрымання правільна падпісаных і пацверджаных запытаў ад нашага SymmetricKeyService, правяраючы ўсе абмежаванні CORS і IP.

Вынік

MigrainePulse – гэта не проста інструмент для адсочвання даных. Гэта бяспечная прастора. Спалучаючы надзейную архітэктуру NestJS (symmetric-key.service.ts) з дэцэнтралізацыяй, якую прадастаўляюць Cloudflare Workers, мы стварылі сістэму, у якой асабістая інфармацыя карыстальніка застаецца заблакаванай нават у самых горшых сцэнарыях.

Для нас «Бяспека па-першае» – гэта не проста гучная фраза для маркетынгу – гэта інжынерны фундамент, на якім пабудавана ўся сістэма MigrainePulse. Таму што калі мы гаворым пра здароўе, няма месца для кампрomісаў у пытанні канфідэнцыйнасці.


Ёсць пытанні пра нашу тэхнічную архітэктуру? Далучайцеся да дыскусіі ў каментарах альбо паспрабуйце MigrainePulse самі!