Aș sugera să aruncați o privire la Trustamp Observable Entropie proiect. Am creat recent acest lucru pentru a răspunde unei necesități pentru tipul de aleatorie despre care întrebați.
Observable Entropy colectează automat aleatoriu din surse verificabile public la fiecare cinci minute, stochând și hashing conținutul acelei date preluate. Hash-ul fiecărui fișier sursă de date este apoi combinat și analizat determinist, rezultând un hash SHA2-256 semnat final reprezentând totalitatea entropiei colectate ca o nouă valoare publică aleatorie verificabilă.
În prezent, sistemul colectează date din următoarele surse publice la fiecare interval:
- Bitcoin blockchain cel mai recent antet de bloc
- Cel mai recent antet de bloc Stellar Blockchain
- Cel mai recent antet de bloc Ethereum blockchain
- Drand Random Beacon
- NIST Randomness Beacon
- Hacker News, top 10 povești și link-uri de conținut
- Marca temporală UTC
Fiecare dintre acestea, cu excepția marcajului de timp, care este pentru comoditate, este considerată o sursă puternică de aleatorie. Pentru cei cu adevărat paranoici, puteți oferi propria dvs. entropie pe care să o adăugați la amestec sub formă de șiruri hexadecimale de 32 de octeți reprezentând de ex. un hash sau octeți aleatori. Puteți contribui cu propria dvs. aleatorie dacă nu aveți încredere deplină în niciuna dintre celelalte surse.
Toate datele colectate la fiecare interval, precum și hashurile rezultate, sunt trimise într-un depozit public Github. Dacă clonați repo-ul, sunt furnizate scripturi care vă permit să recreați personal hash-ul entropiei din datele stocate. De asemenea, puteți verifica semnătura cheii publice pe entropie pentru a vă asigura că a fost semnată de Truestamp. De asemenea, sunt furnizate instrucțiuni despre cum să verificați singur fiecare sursă publică de entropie sau semnătura.
Este ușor pentru aproape oricine să își mențină și să sincronizeze propria clonă a acestui repo, asigurându-se că toată lumea are aceleași date sau poate face referire la entropia la un moment dat. De exemplu, tu și un grup de alții puteți conveni să utilizați o valoare aleatorie care este cea mai recentă valoare la un anumit moment în timp în viitor. În acel moment, vă veți uita cu toții la datele stocate în același Git commit, care în mod normal ar trebui să nu aibă mai mult de cinci minute. Stocându-l în Git, obțineți, de asemenea, toate proprietățile de integritate pe care le oferă Git, cum ar fi hash-urile de comitere înlănțuite și spargerea clonelor dacă cineva a împins un set de date complet nou la Github, care ar fi indicatori clari ai unui actor rău.
În plus, valorile istorice și cele mai recente de entropie sunt disponibile printr-un API public (care este pur și simplu un proxy conceput pentru a citi cele mai recente date brute din Github Repo și nu are cache sau depozit de date propriu). Iată o mostră a rezultatului de la https://entropy.truestamp.com/latest.
Cred că aceasta îndeplinește fiecare dintre cerințele dvs. inițiale:
- nicio parte nu o controlează (sau nu are acces la el)
- nu poate fi prezis cu încredere
- trebuie să fie același pentru fiecare persoană care îl accesează
La Trustamp vom folosi această sursă de aleatorie verificabilă pentru a demonstra că datele angajate în sistemul nostru au fost create în mod dovedibil și independent verificabil după un anumit moment în timp.
Ne-ar plăcea să primim feedback-ul dvs., deoarece acesta este un serviciu nou și oarecum experimental, care funcționează în mod fiabil acum de aproximativ două luni.
ACTUALIZAT 25.08.2021 pentru a aborda comentariul lui @fgrieu:
Multumesc pentru comentariu @fgrieu. Voi încerca să vă răspund preocupărilor sau voi cere mai multe clarificări cu privire la problemele potențiale pe care le simțiți că pot fi prezente.
(1) persoanele din interior pot cunoaște rezultatul înaintea altora
În această implementare, nu există „insiders” care să aibă acces la datele finale care sunt hashing pentru a forma entropia finală. Colectarea datelor se face folosind automatizarea oferită de fluxurile de lucru Github Actions. Datele colectate, la fel ca semnalizatorul Drand semnat, nu sunt cunoscute public de nimeni până când nu sunt colectate (toată lumea primește un nou semnal aleator semnat). În acest caz, singurul insider ar fi cineva de la Github care are acces la infrastructura lor și poate extrage conținutul memoriei pentru acest script după momentul în care rulează 500.000 de runde de SHA-256. Chiar și în acest scenariu puțin probabil, ei ar avea acces la o valoare finală a entropiei în câteva milisecunde de când a fost comisă și ar fi pus la dispoziția publicului tuturor în depozitul Github. Acest proiect, care colectează entropia la fiecare cinci minute, probabil că nu este sensibil la acest nivel de granularitate a timpului.Pot exista scenarii în care o previzualizare timpurie (~1s) a valorii finale ar fi suficient de utilă unui atacator pentru a forța compromisul Github. Totuși, nu cred că cazurile de utilizare pentru care este destinat acest proiect sunt afectate de acest lucru.
În practică, nimeni nu are acces la rezultatul final până când toți o fac atunci când se face un commit public. În acest moment, ar fi o cursă pentru cine poate obține primul commit pentru cei care caută acest avantaj. Aș sugera că, dacă nevoile dvs. de entropie sunt sensibile la milisecunde când vine vorba de momentul în care rezultatul este dezvăluit, atunci acesta nu este proiectul pentru dvs.
(2) persoanele din interior pot cunoaște intrările înaintea altora și le pot folosi pentru a trimite
o ultimă intrare suplimentară care manipulează rezultatul; de exemplu. Fă
de ordin scăzut 16 biți orice valoare dorită.
Am abordat conceptul de âinsidersâ mai sus. Există surse pe care Observable Entropy le colectează și care pot fi cunoscute străinilor care doresc să încerce să manipuleze rezultatul final trimițând propriile lor date de atac, cu toate acestea, acest lucru va eșua, deoarece atacatorul nu poate cunoaște valorile colectate din script pentru semnalizatorul Drand sau marcajul temporal. când rulează scriptul, ambele fiind cunoscute doar de scriptul însuși la momentul execuției.
Nu cunosc niciun atac asupra mai multor runde de SHA2-256 care să permită unui atacator să prezică ce biți din rezultat vor fi modificați pentru a se potrivi cu rezultatul dorit.
Abilitatea de a accepta și de a publica entropia oferită de utilizator, chiar și până în ultimele momente înainte de începerea scriptului de colectare, este un beneficiu. Acest lucru permite oricui să prezinte entropie care va fi inclusă și nu necesită consumatorului să aibă încredere deplină în oricare dintre sursele de entropie care alimentează rezultatul final. Trebuie doar să aibă încredere în propriile lor date. Ei pot verifica dacă datele lor au fost incluse rulând scriptul local pentru a confirma aceeași ieșire de entropie.
Pagina 31 din această prezentare (și cele aferente lucrare academică) oferă mai multe informații despre conceptele și beneficiile includerii unei contribuții publice deschise.
(3) difuzia rezultatului nu este instantanee deci chiar
persoanele care nu sunt din interior pot avea un avantaj; iar manipulările de rețea pot
crește artificial asta
Dacă înțeleg ceea ce încerci să exprimi, „difuzia rezultatului” este de fapt instantanee. Rezultatul poate fi cunoscut doar de scriptul de generare în momentul în care a colectat toate sursele de date, dintre care unele sunt nepublice, dar verificabile ulterior. Fără totalitatea acestor informații, este imposibil să ajungeți la hashul final de ieșire. Fereastra de oportunitate este între momentul în care de ex. valoarea semnalizatorului Drand este colectată și au început concatenarea hash și rundele finale de hash.
Nevoile posterului original ar putea fi probabil satisfăcute folosind numai Indicator NIST aleatoriu sau Drand Beacon singur. Dar acest lucru necesită acordarea unui anumit grad de încredere în infrastructură și proprietarii acesteia pentru fiecare. Această soluție difuzează această încredere în mai multe surse publice și verificabile (inclusiv dvs.), cu toate sursele verificabile după fapt. Acesta este un factor cheie de diferențiere față de sistemele care, de exemplu, observă fenomene naturale care nu permit altora să verifice după observare.
Aș fi bucuros să aud mai multe feedback cu privire la orice slăbiciune percepută rămasă în argumentele mele sau în sistem și sugestii de îmbunătățire.