Anamnesix English

Documente juridice

Măsuri tehnice și organizatorice

Versiunea 24 septembrie 2026 · Persoană împuternicită: Lava Labs SRL

Scopul acestui document

Acest document descrie măsurile tehnice și organizatorice pe care Lava Labs SRL le aplică pentru a proteja datele prelucrate de Anamnesix. El constituie Anexa II a Acordului de prelucrare a datelor încheiat cu fiecare medic care își creează un cont. Este redactat pe baza codului livrat în aplicație și pe server și este actualizat ori de câte ori aceste măsuri se schimbă.

Principiul de proiectare din spatele fiecărei măsuri este același: datele pacienților pot fi citite numai pe telefonul medicului. Serverul stochează text criptat și contoare. Singura excepție este dictarea, unde audio-ul este lizibil pe durata necesară transformării lui în text.

Criptarea pe telefon

Baza de date

  • Toate dosarele pacienților se află într-o singură bază de date SQLite criptată cu SQLCipher.
  • Cheia bazei de date este o cheie rădăcină aleatorie de 32 de octeți, generată pe telefon la prima lansare. Nu este derivată niciodată din PIN și nu este transmisă niciodată.
  • Cheia rădăcină este păstrată în depozitul de chei al sistemului de operare (iOS Keychain, Android Keystore), marcată ca accesibilă numai când dispozitivul este deblocat și netransferabilă pe alt dispozitiv.

Fișiere

  • Paginile scanate, miniaturile și memo-urile vocale sunt stocate ca fișiere sigilate individual.
  • Fiecare fișier este criptat cu AES-GCM sub propria cheie, derivată din cheia rădăcină cu HKDF-SHA256 și identificatorul fișierului, astfel încât două fișiere nu împart niciodată o cheie, iar o cheie de fișier compromisă deschide un singur fișier.
  • Imaginile sunt reprocesate în format JPEG înainte de sigilare, ceea ce elimină metadatele camerei, cum ar fi locația și modelul dispozitivului.

Deblocarea prin PIN și biometrie

  • PIN-ul medicului nu criptează niciodată datele direct. Din el se derivă o cheie de împachetare cu PBKDF2-SHA256 la 120000 de iterații, folosind o sare aleatorie, iar acea cheie de împachetare sigilează cheia rădăcină cu AES-GCM. Plicul sigilat este ceea ce stochează depozitul de chei.
  • Deblocarea biometrică stochează o a doua copie a cheii rădăcină în depozitul de chei, marcată ca necesitând autentificare biometrică din partea sistemului de operare înainte de a putea fi citită.
  • Încercările greșite de PIN sunt limitate: după cinci eșecuri aplicația face o pauză de 60 de secunde, iar fiecare eșec ulterior dublează pauza, până la 24 de ore. Datele nu sunt șterse niciodată din cauza încercărilor greșite, astfel încât un copil care apasă butoane nu poate distruge un dosar medical.
  • Aplicația se blochează automat după un interval configurabil și afișează un ecran de protecție ori de câte ori trece în fundal, astfel încât comutatorul de aplicații nu arată niciodată date despre pacienți.

Copiile de siguranță ale dispozitivului

  • Copierea de siguranță a dispozitivului Android este dezactivată pentru aplicație, astfel încât baza de date criptată nu ajunge niciodată într-o copie de siguranță Google.
  • Pe iOS, intrările din depozitul de chei sunt marcate ca nemigrabile pe alt dispozitiv.

Criptarea în cloud

Ce primește serverul

  • Cu Premium, aplicația încarcă fișierele sigilate exact așa cum sunt stocate pe telefon, precum și o copie a bazei de date criptate, realizată cu aceeași cheie SQLCipher. Serverul primește numai text criptat.
  • Încărcările ajung într-un spațiu de stocare privat, în care fiecare medic poate accesa numai propriul prefix, impus prin politici de securitate la nivel de rând în baza de date.
  • Adresele de încărcare sunt semnate pentru un singur obiect; adresele de descărcare sunt semnate și expiră după 5 minute.
  • Încărcările sunt verificate după dimensiune și după amprenta SHA-256 înainte de a fi confirmate.

Codul de recuperare

  • Pentru a deschide o copie de siguranță pe un telefon nou, medicul are nevoie de un cod de recuperare de 24 de caractere, generat pe telefon și afișat o singură dată.
  • Cheia rădăcină este împachetată sub acest cod cu PBKDF2-SHA256 la 210000 de iterații și AES-GCM, iar în cloud se stochează numai acest plic împachetat. Codul în sine nu este niciodată transmis sau stocat de noi.
  • Fără cod, nici Lava Labs SRL și nici cineva care obține datele stocate nu poate deschide copia de siguranță.

Transport

  • Tot traficul dintre aplicație și server folosește HTTPS. Sesiunile sunt păstrate în depozitul de chei.

Dictarea

  • Audio-ul este decriptat pe telefon numai atunci când medicul trimite un memo pentru transcriere și este trimis prin HTTPS către funcțiile noastre de server.
  • Funcțiile de server retransmit audio-ul în memorie către punctul de acces din Uniunea Europeană al persoanei împuternicite subsecvente pentru transcriere și nu îl scriu niciodată pe disc sau în baza de date.
  • Când aplicația confirmă că a primit transcrierea, serverul șterge fișierul audio și transcrierea de la persoana împuternicită subsecventă. O rutină de reconciliere rulează în fiecare oră și șterge tot ce a rămas în urmă, de exemplu când telefonul a pierdut conexiunea înainte de a confirma.
  • Serverul păstrează numai contoare și identificatori pentru fiecare sesiune de transcriere, niciodată audio sau text. Identificatorii care leagă o sesiune de un memo și de obiectele persoanei împuternicite subsecvente sunt eliminați la 30 de zile după decontarea sesiunii.
  • Lungimea unui memo este limitată la 15 minute și 8 MiB pe cerere.

Controale pe server

  • Fiecare tabel are politici de securitate la nivel de rând. Medicii pot citi numai propriile rânduri prin sesiunea lor și niciun tabel nu permite unui medic să citească datele altui medic.
  • Toată logica ce modifică starea se află în funcții SQL pe care numai rolul de serviciu le poate executa. Aplicația nu scrie niciodată direct în tabelele de evidență.
  • Funcțiile de server autentifică medicul prin tokenul de sesiune Supabase. Rutinele programate se autentifică printr-un secret partajat păstrat în seiful bazei de date și refuză secretele mai scurte de 32 de caractere.
  • Înregistrările cu adrese de e-mail de unică folosință sunt respinse.
  • Secretele serverului (chei API, secrete de webhook, credențiale de e-mail) sunt păstrate în depozitul de secrete Supabase și în seiful bazei de date. Secretele pentru compilarea aplicației sunt păstrate ca secrete EAS. Niciunul nu este inclus în depozitul de cod.

Monitorizare și jurnale

  • Rapoartele de erori ajung la un serviciu de raportare găzduit în Uniunea Europeană. Înainte de a părăsi telefonul, fiecare raport trece printr-un filtru care șterge datele cererilor, reduce utilizatorul la un identificator anonim, cenzurează adresele de e-mail, datele calendaristice și secvențele de cifre, elimină urmele de navigare și de consolă și înlătură orice câmp care ar putea conține un titlu de notă, un conținut sau o secțiune clinică. Capturile de ecran nu sunt atașate niciodată, iar urmărirea performanței este dezactivată.
  • Analiza utilizării produsului este dezactivată implicit și rulează numai când medicul o activează. Trimite numai nume de ecrane și de funcții, folosește o gazdă din Uniunea Europeană și are redarea sesiunilor, geolocalizarea și sondajele dezactivate.
  • Jurnalele funcțiilor de server maschează adresele de e-mail și nu conțin niciodată audio, transcrieri sau conținut de fișiere.
  • Aplicația nu se înregistrează niciodată pentru notificări push. Mementourile sunt programate local pe telefon, iar textul lor de pe ecranul de blocare afișează inițiale, dacă medicul nu alege altfel.

Păstrare și ștergere

  • Ștergerea unui pacient de pe telefon șterge imediat dosarul și toate fișierele atașate, fără ștergere provizorie, și elimină copiile corespunzătoare din cloud.
  • În cloud se păstrează cele mai recente șapte copii de siguranță ale bazei de date.
  • Când un abonament Premium expiră, încărcările se opresc. Fișierele rămân accesibile 90 de zile, pentru ca medicul să le poată restaura, apoi o rutină programată șterge tot ce se află sub prefixul medicului.
  • Ștergerea contului elimină fiecare obiect din cloud, contul și fiecare rând asociat acestuia. Rândurile de audit sunt păstrate cu referința la utilizator eliminată, astfel încât nu mai pot fi legate de o persoană.

Măsuri organizatorice

  • Accesul la sistemele de producție este limitat la fondatorul Lava Labs SRL, folosind autentificare multi-factor cu suport hardware [TODO: confirm].
  • Niciun membru al personalului nu poate citi fișierele sau copiile de siguranță ale pacienților, deoarece cheile nu părăsesc niciodată telefonul medicului. Accesul la releul de transcriere este posibil numai prin funcțiile implementate, care nu păstrează audio-ul.
  • Persoanele împuternicite subsecvente sunt angajate prin acorduri scrise care impun obligații echivalente de protecție a datelor, iar lista este publicată cu un preaviz de 30 de zile pentru modificări.
  • Modificările aplicației și ale serverului trec prin revizuirea codului, teste automate, verificări de tipuri și de stil la fiecare schimbare, iar compilările de producție eșuează dacă lipsește o setare de securitate obligatorie sau dacă un serviciu este configurat în afara Uniunii Europene.
  • O evidență a activităților de prelucrare, o evaluare a impactului asupra protecției datelor și evaluări ale impactului transferurilor sunt menținute și revizuite cel puțin o dată pe an și ori de câte ori prelucrarea se schimbă.

Răspunsul la incidente

  • Orice incident de securitate suspectat este investigat imediat de fondator.
  • Dacă sunt afectate date cu caracter personal, medicii afectați sunt notificați în termen de 48 de ore de la momentul în care Lava Labs SRL a luat cunoștință, cu informațiile cerute de Acordul de prelucrare a datelor și cu precizarea dacă datele afectate au fost exclusiv text criptat.
  • Secretele compromise sunt înlocuite, sesiunile afectate sunt revocate, iar incidentul și remedierea sunt consemnate.
  • Lava Labs SRL asistă medicul la evaluare și, atunci când este necesar, la notificarea autorității de supraveghere și a pacienților.