Puncte:1

E2EE cu parole la conectare?

drapel cn

Imaginați-vă un scenariu:

  1. Alice și Bob vor să folosească o platformă în care se conectează folosind e-mailul și parola. Platforma poate fi accesată pe desktop și dispozitive mobile.
  2. Alice ar dori să stocheze informații criptate într-o bază de date sau să trimită fișiere criptate către un server S3
  3. Bob va putea prelua aceste informații criptate (date + fișiere) dacă serverul o permite (Alice i-a acordat lui Bob acces la aceste date)
  4. Atât Bob, cât și Alice ar trebui să poată decripta informațiile (date + fișiere) de partea lui

În prezent, mă joc să înțeleg dacă un design ca acesta este posibil, dar în viitorul viitor, va trebui să implementez acest lucru. Aș fi recunoscător dacă cineva ar putea oferi un răspuns „simplu” și poate recomanda o modalitate de a căuta furnizori care au mult mai multă experiență decât mine (securitatea nu este o glumă) și ar putea implementa cod pentru o astfel de soluție.

Gilles 'SO- stop being evil' avatar
drapel cn
Vă rugăm să fiți conștienți de faptul că nu există un răspuns simplu. [Neirpyc](https://crypto.stackexchange.com/a/91645) este la fel de simplu pe cât este pentru cazul nominal. Dar există multe complicații de luat în considerare pentru ca acest lucru să funcționeze în lumea reală. Ce se întâmplă dacă Alice își pierde parola? Cum să atenuați scurgerea parolelor (prin snooping, phishing, forță brută etc.) â autentificarea cu doi factori o atenuează pentru autentificare, dar nu există nimic similar pentru criptare. Cum adaugi un utilizator la lista de distribuție a unui fișier? Cum revocați accesul? etc.
Puncte:2
drapel us

Pentru a vă rezolva problema în mod eficient, ar trebui să citiți despre derivarea cheii și derivarea cheii pe bază de parolă.

După cum am înțeles, soluția la problema ta este următoarea:

  1. Când creați un cont, utilizați parola pentru a genera o cheie principală km. De asemenea, ar trebui să generați o pereche de chei asimetrice aleatoare (RSA, curbă eliptică sau orice cifru asimetric). Ar trebui să încărcați pe server cheia dvs. publică și cheia privată cu care este criptată k0, o cheie derivată din cheia principală km.
  2. Alice generează o cheie simetrică kx și criptează datele local înainte de a le trimite către server (AES, serpent, ChaCha, ...). kx ar trebui să fie derivat din cheia principală a lui Alice km astfel încât aceeași cheie poate fi generată din nou pentru a decripta fișierul. Fișierul ar trebui să primească un ID unic X care este utilizat într-o funcție de derivare a cheii pentru a obține în mod determinist a kx, fără a reutiliza aceeași cheie pentru fiecare fișier.
  3. Pentru a autoriza bob, autentifică-te, regenerează-ți km cheie principală, cereți serverului ID-ul fișierului, derivați kx de la cheia principală km și fișierul Id.Apoi, cereți serverului cheia publică a lui Bob și utilizați-o pentru a cripta kx. Apoi puteți trimite aceste date către server.
  4. Bob se conectează și își generează cheia principală. Apoi o folosește pentru a obține prima sa cheie k0, solicită serverului cheia privată criptată pe care o folosește k0 pentru a decripta cheia privată. Odată ce ai cheia privată, poți decripta ceea ce ți-a trimis Alice: kx, cheia folosită pentru a cripta fișierul. Apoi puteți cere serverului fișierul și îl puteți decripta local.

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.