Puncte:4

Poate un serviciu să ofere altora o cheie hash/de criptare pe care el însuși nu o poate folosi?

drapel cn

Luați în considerare un serviciu $S$ care primește hashuri de documente de la un număr de furnizori. Dacă două hasheuri se potrivesc, acesta anunță furnizorii. Nu dorim ca nimeni de la serviciu să poată identifica documentele. Cu toate acestea, spațiul documentului este de fapt destul de mic (~ miliarde), așa că este posibil un atac de dicționar.

O soluție ar fi crearea și furnizarea unei chei HMAC în afara bandă între furnizorii de date. Dacă serviciul nu are niciodată acces la el, atunci nu ar putea efectua atacul de dicționar.Acest lucru este însă puțin greoi și ar fi de preferat o abordare automată.

Este posibilă o altă cale?

Puncte:3
drapel es

Logica de bază ar dicta că, dacă orice furnizor poate folosi o metodă non-secretă pentru a genera un hash dintr-un document, atunci serviciul central poate folosi și acea metodă cunoscută pentru a efectua același hash pentru a efectua atacul de dicționar.

Prin urmare, pentru a evita acest atac, trebuie să existe un secret partajat între furnizori, care este necunoscut serviciului central.

Rețineți că 10 miliarde hash-uri pe 128 de biți ar necesita doar 150 GB de stocare. Prin urmare, puteți decide că este mai bine ca furnizorii să-și partajeze pur și simplu hashurile direct unul cu celălalt. Puteți folosi a Păpădie protocol, astfel încât atunci când sunt anunțate noi hashuri, furnizorul care a anunțat inițial orice hash anume să își ascundă identitatea.

Puncte:1
drapel in

Dacă clienții pot partaja o cheie secretă, atunci putem folosi o Scheme complet homomorfe pentru a realiza acest lucru. Lăsa $k_{prv}$ cheia privată a clienților și $k_{pub}$ este cheia publică pe care o are serverul.

  • Ori de câte ori un hash $h_i$ trimis la server este criptat $e_i =E(k_{pub},h_i)$ (de preferință TFHE) de către client.
  • Serverul foloseste Circuitul de egalitate FHE $C$ care revine criptat $E(1)$ daca sunt egali.
    res = E(k_pub,0)
    pentru fiecare E(h_j) din intervalul (1,i-1):
         cur = C(h_i, h_j,k_pub) //compara
         res = FHE_Add(res,cur,k_pub) //acumulează rezultatul.

   returnare res
  • Acum, serverul trimite $res$ ca răspuns la client(i).

  • Clientul decriptează și verifică asta

    • dacă $res=0$ aceasta înseamnă că hash-ul nu iese pe server.
    • dacă $res\neq 0$ apoi hash-ul de pe server.

Note:

  • Acest lucru este similar cu ceea ce Monitorul parolelor de la Microsoft.
  • Clienții pot avea o metodă standard de cheie publică pentru a partaja $k_{prv}$ și $k_{pub}$
  • Acest protocol cere ca serverul este semi-onest.
  • Serverul are un calcul orb că nu învață nimic din valorile criptate, calculate și din rezultat, totuși;
  • Dacă un client trimite date noi pentru încărcare fără a cere existența, atunci serverul poate deduce că hash-ul anterior nu a existat.

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.