Puncte:1

criptare rapidă cu o singură cheie și decriptare rapidă cu mai multe chei secvenţial

drapel ng

Există un astfel de mecanism de criptare și decriptare: Având în vedere o criptare C = E(K1, M), unde K1 este cheia de criptare și M este text simplu, trebuie să aplice decriptarea cu două chei K2 și K3 secvenţial pentru a recupera M, că este D(K3, D(K2, C)) = M. Având în vedere un K1, este ideal să se genereze un număr nelimitat de perechi K2 și K3 pentru a asigura încredere distribuită. Criptarea și decriptarea nu trebuie să fie prea lentă pentru cantități mai mari de date, deci se preferă cifrarea simetrică.

Alternativ, există o modalitate de a genera trei secvențe de numere aleatoare R1(K1), R2(K2), R3(K3) din trei chei/semințe K1, K2, K3, astfel încât R1(K1) = R2(K2) XOR R3 ( K3)? Daca da, problema de mai sus poate fi si rezolvata.

Sunt conștient de Threshold ElGamal sau de altă criptografie cu cheie publică pentru criptografia cu mai multe părți, dar sunt prea lente, în comparație cu cibernetica simetrică, cum ar fi RC4.


Permiteți-mi să descriu povestea într-un alt mod: Alice își încarcă datele într-un nod Bob, mai târziu Carol îl întreabă pe Bob și descarcă datele lui Alice. Mai multe considerente de proiectare:

  1. Datele lui Alice vor fi criptate în timp ce sunt încărcate pe Bob sau sunt preluate de Carol;
  2. Nici Carol, fie Bob nu vor putea niciodată să decripteze singuri datele lui Alice;
  3. Datele pot fi foarte mari, prin urmare sunt necesare criptarea și decriptarea rapidă;
  4. Este posibil ca Alice să nu fie întotdeauna online;
  5. Este acceptabil să presupunem că Bob și Carol nu se vor înțelege, dar ar fi mai bine dacă un mecanism de audit (cum ar fi Blockchain) poate fi proiectat pentru a se asigura că Bob și Carol nu vor coopera fără autorizația Alicei.
fgrieu avatar
drapel ng
Aveți nevoie de criptare asimetrică, adică K1 public? Ne putem asuma o autoritate de încredere pentru realizarea și distribuirea K1/K2/K3? Există vreun motiv pentru care cerința „criptarea și decriptarea nu trebuie să fie prea lentă pentru cantități mai mari de date” să nu poată fi rezolvată în mod obișnuit: prin utilizarea unei chei unice ale mesajelor aleatorii pentru a cifra cea mai mare parte a datelor folosind un rapid standard ( autentificat) cifru ca AES-GCM; și chestia cu taste multiple cu K1/K2/K3 (asimetrice sau nu) care protejează cheia unică pentru mesaj?
drapel ng
Aici K1, K2 și K3 sunt toate secrete. Practic, utilizatorul 1 criptează datele la E(K1, M), apoi decriptarea va fi făcută de două părți secvenţial D(K3, D(K2, C)) = M. Nu dorim ca utilizatorul 2 să vadă textul simplu și nu vreau ca utilizatorul 3 să cunoască K1. Presupunem aici că utilizatorul 2 și 3 nu se înțeleg. Pentru cripto-cheie publică, înțeleg că este prea lent pentru o cantitate mare de date, nu? Dacă este greșit, putem lua în considerare cripto-ul public.
Maarten Bodewes avatar
drapel in
„Pentru cripto cheia publică, înțeleg că este prea lent pentru o cantitate mare de date, nu?”. În general, este posibil să utilizați un criptosistem hibrid chiar și atunci când trebuie utilizată criptarea pragului, asta a sugerat fgrieu (doar injectând niște termeni aici :) )
James Smith avatar
drapel br
ai primit raspunsul complet la aceasta intrebare? cel pe care l-ai postat
Puncte:1
drapel my

Alternativ, există o modalitate de a genera trei secvențe de numere aleatoare R1, R2, R3 din trei chei K1, K2, K3, astfel încât R1 XOR R2 XOR R3 = 0?

Partea aceea este ușoară; putem defini doar:

$$R1 = \text{SHAKE}(K1) \oplus \text{SHAKE}(K2)$$ $$R2 = \text{SHAKE}(K3) \oplus \text{SHAKE}(K1)$$ $$R3 = \text{SHAKE}(K2) \oplus \text{SHAKE}(K3)$$

(Unde $\text{SHAKE}$ poate fi, de exemplu, funcția de ieșire extensibilă; adică o funcție care convertește o preimagine într-un șir de biți de lungime arbitrară).

Individual (și perechi), $R1, R2, R3$ toate par aleatorii (presupunând că cheile nu pot fi ghicite), totuși ele xor reciproc la 0 așa cum ați cerut.

drapel ng
Frumos, dar utilizatorul 1 vrea să păstreze K1 secret și să nu dea utilizatorului 2 sau 3.
Puncte:0
drapel ng

Propunere care vizează 1/2/3/4 din ultima secțiune a întrebării: criptare hibridă înlănțuită.

Vom folosi

  • O schemă de criptare autentificată simetrică rapidă, cum ar fi AES-GCM sau ChaCha20-Poly1305 cu cheie secretă de 256 de biți, criptare cu cheie $K$ remarcat $C=E_K(M)$ și decriptare $M=D_K(C)$.
  • O schemă de criptare asimetrică capabilă să cripteze mesaje pe 256 de biți, cu criptarea notă $C=\mathcal E_P(M)$ și decriptare $M=\mathcal D_S(C)$, Unde $(P,S)$ este o pereche de chei (publică, privată/secretă). RSAES-OAEP sau ECIES se va face.

Presupunem că Bob și Carol au generat perechi de chei $(P_B,S_B)$ și $(P_C,S_C)$, și chei publice transmise $P_B$ și $P_C$ lui Alice într-un mod care să asigure integritatea și dovada originii (poate, prin intermediul certificatelor digitale).

Pentru a cripta către Carol prin proxy a lui Bob, Alice

  • trage două chei aleatoare de 256 de biți $K_B$ și $K_C$
  • calculează $C_B=\mathcal E_{P_B}(K_B)$
  • calculează $C_C=\mathcal E_{P_C}(K_C)$
  • calculează $C_0=E_{K_B}(C_C)$
  • calculează $C_1=E_{K_C}(M)$
  • îi trimite lui Bob mesajul $C=C_B\mathbin\|C_0\mathbin\|C_1$.

Bob primește și depozitează $C$. Când Carol solicită mesajul criptat, Bob

  • extracte $C_B$, $C_0$ și $C_1$ din $C$
  • calculează $K_B=\mathcal D_{S_B}(C_B)$
  • calculează $C_C=D_{K_B}(C_0)$
  • formează și trimite lui Carol $C'=C_C\mathbin\|C_1$.

Carol primește $C'$ și

  • extracte $C_C$ și $C_1$ din $C'$
  • calculează $K_C=\mathcal D_{S_C}(C_C)$
  • calculează $M=D_{K_C}(C_1)$

Ori de câte ori o decriptare eșuează, Bob sau Carol abandonează.

Observați că mesajul în bloc $M$ este criptat o singură dată, îndeplinind cerințele de performanță.

Putem înlocui schema de criptare asimetrică cu una simetrică, $(P_B,S_B)$ cu intrebarea $K_2$ și $(P_C,S_C)$ cu întrebările $K_3$ (și apoi, ca o parte, sistemul poate fi simplificat pentru a scăpa de el $K_B$). Dar, devenind simetric, pierdem beneficiul criptografiei asimetrice: că Alice nu trebuie să păstreze nimic secret și nu poate folosi un astfel de secret pentru a încerca să descifreze alte comunicări trimise lui Bob sau Carol.

James Smith avatar
drapel br
fgrieu, vă rog, puteți explica cum să obțineți această parte a întrebării. R1(K1) = R2(K2) XOR R3 (K3). acest lucru este important de răspuns.
fgrieu avatar
drapel ng
@James Smith: tehnica din răspunsul meu nu generează secvențe de numere aleatoare (sau o face într-o manieră care este integrată în schemele de criptare utilizate), astfel că ecuația R1(K1) = R2(K2) XOR R3(K3) nu se aplică la răspuns (și oricum este doar o opțiune în întrebare). $(P_B,P_C)$ al meu este un fel de K1 al întrebării, $S_B$ un fel de K2, $S_C$ un fel de K3. Nu spun că există o potrivire perfectă, doar că cred că rezolv nevoia funcțională în 1/2/3/4.

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.