Puncte:-1

Partajarea fișierelor criptate cu cheie generată determinist din parola utilizatorului

drapel tr

Informații de fundal:

Trebuie să criptez fișierele într-un spațiu de lucru al întreprinderii cu mai mulți utilizatori. Scopul este de a cripta fișierele direct din browser pentru a fi salvate pe un server și fiecare utilizator ar putea decripta fișierele pentru vizualizare.

Solutie tehnica:

Creați o cheie generată aleatoriu Kw pentru spațiul de lucru pentru criptarea fișierelor cu AES. Această cheie nu va fi niciodată stocată nici în baza de date, nici în sesiunea utilizatorului.

Pentru fiecare utilizator, generați o altă cheie „Ku” din parola utilizatorului cu o funcție de derivare a cheii, cum ar fi PBKDF2, folosind id-ul de utilizator ca sare. Apoi criptați cheia „Kw” cu cheia „Ku” folosind AES și salvat această cheie criptată „Kw” în baza de date cu informațiile utilizatorului.

Apoi, la fiecare conectare a utilizatorului, regenerează cheia „Ku” din parola utilizatorului utilizând funcția de derivare a cheii, cum ar fi PBKDF2. Recuperați cheia criptată „Kw” și decriptați-o cu Ku. Apoi utilizați Kw pentru a decripta/cripta fișierele.

Este această soluție suficient de sigură pentru a stoca fișiere sensibile, cum ar fi documentul de îngrijire medicală?

Vă mulțumim anticipat pentru feedback-urile dvs.

DannyNiu avatar
drapel vu
Revizuirea designului complet al schemei este în afara subiectului. Cu toate acestea, pentru a fi de ajutor, ați putea dori să vă reconsiderați cadrul de depunere a cheilor (criptare simetrică), deoarece aceasta pare a fi esența a ceea ce obține soluția dvs. Mai ales că **determinist** derivați cheile.
Gravity avatar
drapel tr
Vă mulțumim pentru răspunsul dumneavoastră ! Nu este chiar o recenzie a unui design, ci mai mult un sfat dacă îmi lipsește ceva „mare” care poate scădea serios securitatea, deoarece nu sunt expert în securitate/criptografic.
DannyNiu avatar
drapel vu
Tocmai am observat că ai spus „document de sănătate”. De ce ați căuta sfaturi de la un forum public de internet, mai degrabă decât de la o companie de securitate consacrată, cum ar fi RSA, Security Innovation, OnBoard Security? M-am gândit la aceste nume pentru că RSA este inventat de cofondatorii RSA, iar Security Innovation și OnBoard Security dețineau NTRU de ceva timp.
Gravity avatar
drapel tr
Iau exemplu de document de asistență medicală doar pentru descriere, dar ar putea fi orice document sensibil (din punctul de vedere al utilizatorului) pe care utilizatorul le dorește „criptate”
Puncte:0
drapel vu

Să descompunăm mai întâi asta.

În primul rând, avem următoarele chei:

  • $K_w$ - cheia spațiului de lucru pentru criptarea fișierelor.
  • $K_u$ - cheia per utilizator pentru escrow $K_w$.

În al doilea rând, există și variabile ascunse.

  • The sare pentru generare $K_u$ din parola utilizatorului. The STRAPUL MARE ROSU iată că OP își ia valorile din ID-urile utilizatorului, unde, în realitate, această valoare ar trebui să fie aleatorie și salvată.

  • The nonce pentru algoritmul de criptare a fișierelor - Pentru a cripta un fișier, aveți nevoie de un mod de operare de criptare bloc sau de un criptare de flux, un astfel de algoritm de criptare are nevoie de un nonce pentru a se asigura utilizarea aceleiași chei de mai multe ori.În mod ideal, algoritmul de criptare ar trebui să fie autentificat - adică să aibă o etichetă MAC atașată textului cifrat sau pur și simplu să folosească un algoritm AEAD, cum ar fi AES-GCM sau ChaCha20-Poly1305.

Acum să revedem întrebarea.

Creați o cheie generată aleatoriu Kw pentru spațiul de lucru pentru criptarea fișierelor cu AES.

Nimic grav în afară de potențiala sarcină grea pe CSPRNG aici.

... și a salvat această cheie criptată „Kw” în baza de date cu informațiile utilizatorului.

Asta înseamnă că criptezi $K_w$ cu $K_u$ și păstrați criptat $K_w$ în baza de date.

Gravity avatar
drapel tr
Vă mulțumim pentru feedback-urile dvs. Deci, mai întâi nu utilizați ID-ul utilizatorului ca sare, ci generați o sare aleatorie și salvați-o cu informații despre utilizator. În al doilea rând, utilizați AES-GCM pentru criptarea fișierelor.
Gravity avatar
drapel tr
Pentru pasul final, da Kw criptat va fi salvat în baza de date. Pentru mine, problema de securitate este că parola utilizatorului este trimisă în mod clar (cu https cu siguranță) la backend la momentul autentificării, astfel încât hackerii să poată asculta și extrage parola de utilizator clară și apoi reconstrui Kw pentru fișierul decriptat. Am dreptate ? Dar nu știu dacă există o soluție pentru acest punct.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.