Puncte:0

Cum să extinzi operațiunile de la numere la „obiecte” mai mari în implementările criptografice?

drapel in

Știu că nu ar trebui să-mi rulez propria cripto, dar toată lumea începe de undeva! Implementez protocolul PSI-CA definit în Calcul rapid și privat al cardinalității intersecției și unirii setului (Figura 1, Pagina 5), și îl am (mai mult sau mai puțin) funcțional. Cea mai mare problemă a mea este că o am doar pentru el int64_t tipuri și nimic altceva. În cele din urmă, aș dori să compar șiruri de caractere sau chiar obiecte arbitrare. Așa că cred că va trebui să am un obiect expune funcționalitatea pentru a se serializa/hash în sine, dar apoi ce? Cum extind acest algoritm la calcule pe mai mulți octeți?

De exemplu, dacă vreau să folosesc hash-uri SHA-512 în loc de numere întregi, în timpul anumitor operațiuni, să spunem $\forall i 1\leq i \leq v : a^{\prime}_i = (a_i)^{R^{\prime}_s}$, cum pot traduce acest lucru de la operarea pe numere întregi (triviale) în câmpuri de octeți? Pur și simplu efectuez aceeași operație pentru fiecare octet din câmp?

SEJPM avatar
drapel us
Vă împiedică ceva să interpretați și să utilizați versiunea serializată/hașată a unui obiect ca număr întreg? (Ceea ce, desigur, necesită ca serializarea/hashingul să păstreze egalitatea)
drapel in
Cred că atunci nu ar fi rezistent la ciocniri, nu? La fel ca SHA-512 are o gamă largă. Lucrarea spune că am nevoie de două funcții hash (modelate ca ROM în hârtie), așa că nu sunt foarte sigur ce funcții hash ar satisface aceste cerințe pentru a păstra informațiile în siguranță criptografic.
Puncte:1
drapel ng

Nu îmi este clar (fără să văd codul) care este problema dvs. actuală. Privind prin hârtie, văd (de exemplu în fig. 1):

  1. (obiecte arbitrare) $c_1,\puncte, c_v$ și $s_1,\puncte, s_v$

  2. hashuri dintre aceste obiecte, care sunt scrise $hc_i = H(c_i)$ și $hs_i = H(s_i)$ (până la o permutare aplicată la $s_i$).

Toate operațiunile rămase sunt în termeni de $hc_i$ și $hs_i$, care par a fi (din context) în $\mathbb{Z}_p^*$, adică aritmetica este standard (deși probabil că trebuie să alegeți $p$ suficient de mare încât problema logaritmului discret este grea, deci $\gg 1000$ biți. În special, probabil că ar trebui să utilizați biginți mai degrabă decât u64. Nu am citit suficient de atent încât să știu că ei presupun duritatea unei ipoteze de tip DL în $\mathbb{Z}_p^*$ deşi).

Parcurgând celelalte cifre, văd o poveste similară, și anume că toată aritmetica se face pe elementele hashed ale $\mathbb{Z}_p^*$, mai degrabă decât șiruri de octeți arbitrare în $\{0,1\}^*$. Nu văd exemplul tău special:

$$1â¤iâ¤v:a_i'=(a_i)^{Râ²_s}$$

ca fiind o problemă.De exemplu, acest lucru pare să se întâmple în figura 4, unde văd înainte de ea $a_i = (hs_i)^{R_s'}$. În această figură nu văd definiția $hs_i = H(s_i)$, și eu doar smulg, dar este plauzibil ca această interpretare să fie asumată, i.e. $hs_i$ este hash a unui șir de octeți arbitrar $s_i$, și este conținut în $\mathbb{Z}_p^*$ (Decat $\{0,1\}^*$).

Răspunsul general la

Pur și simplu efectuez aceeași operație pentru fiecare octet din câmp?

va fi „nu” (cu excepția cazului în care ceva spune în mod specific să faci asta). De obicei, protocoalele criptografice funcționează pe obiecte matematice bine definite (să spunem șiruri de biți în $\{0,1\}^*$), iar „taierea acestora” pentru a încerca să forțați lucrurile să funcționeze (când acest lucru nu este specificat ca parte a protocolului) poate duce cu ușurință la probleme de securitate.

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.