Să începem cu ceea ce vreau să spun prin far criptografic aleatoriu (RB).
Un RB este un protocol între unele părți care generează o valoare aleatorie împreună, astfel încât:
- aceste partide nu au incredere una in alta
- rezultatul este verificabil public (oricine poate verifica că rezultatul este corect generat de protocol)
- Rezultatul este imparțial: nicio parte nu poate influența rezultatul.
- rezultatul este imprevizibil: niciun organism nu poate prezice următoarea ieșire din ieșirea curentă.
Prima soluție intuitivă este commit-and-reveal, care nu funcționează!
fiecare alege o valoare secretă aleatorie $s_i$ și se angajează, apoi în runda a doua își dezvăluie secretele.
Ieșirea este aleatorie, imprevizibilă și verificabilă public, dar nu imparțială.
Partea rău intenționată poate aștepta pur și simplu până când fiecare om își dezvăluie secretul, apoi decide dacă este bine pentru ea să dezvăluie sau nu și se poate retrage de la dezvăluirea secretului său.
Apoi există mai multe soluții bazate pe funcție de întârziere aleatorie sau criptografie de prag (pentru mine cea mai de înțeles este cea bazată pe semnătura BSL de prag, de la compania Dfinity).
Acum, unde în criptografie poate fi folosit? de ce Random Oracle (+ Fiat-Shamir) nu este suficient?
Înțeleg că acest lucru poate fi util în aplicațiile în care provocarea ar trebui să fie necunoscută în marcajele de timp speciale.
De exemplu, dacă o stocare de date dorește să dovedească acest lucru la ștampila de timp $t$ încă mai are datele, ar trebui să folosească o provocare generată de RB la ștampila de timp $t$ și dați o dovadă pe baza acestei provocări. În caz contrar, poate genera provocarea singură (de către RO, de exemplu), poate elimina datele și la marcarea timpului $t$ susține că deține datele deoarece poate genera dovada pe baza datelor și a provocării.
Dar dacă nu există un marcaj de timp, chiar nu văd niciun rost să folosesc RB în loc de RO. Cred că pentru aplicațiile fără marcaj de timp RO este mai practic.
Deci, înțelegerea mea este corectă? Încă văd câteva lucrări care folosesc rezultatul RB ca provocare (sau doar pentru generarea aleatorie) mai degrabă decât să folosească RO (în timp ce nu există conceptul de timp), și nu știu de ce!