L'azienda Cloudflare servizio , per il funzionamento del quale è stato creato un consorzio di diverse organizzazioni interessate a fornire numeri casuali di alta qualità. A differenza dei sistemi centralizzati esistenti, League of Entropy non si basa su una sola fonte e utilizza l'entropia per generare sequenze casuali, da diversi generatori non correlati, controllati da vari partecipanti al progetto. Grazie alla natura distribuita del progetto, la compromissione o la falsificazione di una o due fonti non porterà alla compromissione del numero casuale finale.
È importante notare che i numeri casuali generati appartengono alla categoria delle sequenze pubblicamente disponibili, che non possono essere utilizzate per la generazione di chiavi di crittografia e in aree in cui un numero casuale deve rimanere riservato. Il servizio è progettato per fornire numeri casuali, impossibili da prevedere in anticipo, ma dopo la generazione questi numeri diventano pubblicamente disponibili, anche per verificare la validità dei valori casuali passati.
I numeri casuali pubblici vengono generati ogni 60 secondi. Ogni numero è associato al proprio numero di sequenza (round), tramite il quale è possibile recuperare in qualsiasi momento e da qualsiasi server partecipante un valore generato in precedenza. Tali numeri casuali possono essere utilizzati in sistemi distribuiti, criptovalute e blockchain, in cui diversi nodi devono avere accesso a un unico generatore di numeri casuali (ad esempio, nella generazione di prove di lavoro), nonché per condurre vari sorteggi e per generare campioni casuali nel processo di audit delle elezioni.
Per lavorare con il servizio e per implementare i propri nodi un toolkit , scritto in linguaggio Go e distribuito sotto licenza MIT. Drand viene eseguito come processo in background, che si collega a generatori esterni partecipanti alla rete distribuita e forma collettivamente un valore casuale aggregato. Il valore aggregato viene generato utilizzando metodi e . La generazione di un valore casuale aggregato può essere eseguita sul sistema dell'utente senza coinvolgere aggregatori centralizzati.
Drand può anche essere utilizzato per fornire numeri casuali privati generati localmente ai clienti. Per la trasmissione di un numero casuale viene utilizzato uno schema di crittografia ECIES, all'interno del quale il cliente genera una chiave privata e una chiave pubblica. La chiave pubblica viene inviata al server di Drand. Il numero casuale viene crittografato utilizzando questa chiave pubblica e può essere visualizzato solo dal cliente che possiede la chiave privata. Per accedere ai server può essere utilizzato lo strumento «drand» (ad esempio, «drand get public group.toml», dove group.toml è l'elenco dei nodi da interrogare) o un API Web (per esempio, è possibile utilizzare «curl https://drand.cloudflare.com/api/public» oppure fare richieste tramite JavaScript utilizzando la libreria ). I metadati della richiesta vengono inviati in formato TOML, e la risposta restituita è in JSON.
Attualmente, cinque aziende e organizzazioni hanno aderito all'iniziativa League of Entropy, fornendo accesso ai propri generatori di entropia. I partecipanti al progetto si trovano in diverse nazioni e utilizzano vari metodi per ottenere entropia:
- Cloudflare, , valori casuali sulla base di flussi imprevedibili di liquido in , le cui immagini vengono utilizzate come entropia in ingresso per CSPRNG (Cryptographically Secure PseudoRandom Number Generator);
- EPFL (École Polytechnique Fédérale de Lausanne), URand,
utilizza il generatore locale /dev/urandom, che attinge come fonti di entropia dall'immissione della tastiera, dal movimento del mouse, dai flussi di traffico, ecc. - Università cilena, , utilizza una rete di sensori sismici come fonte di entropia, oltre a dati dall'industria radiofonica, attività su Twitter, modifiche alla blockchain di Ethereum e un generatore hardware RNG fai-da-te;
- Kudelski Security, ChaChaRand, fornisce un CRNG (Cryptographic Random Number Generator) basato sull'applicazione della crittografia ChaCha20;
- Protocol Labs, InterplanetaryRand, estrae dati casuali da catture di rumore e li combina con il PRNG Linux e il generatore di numeri pseudo-casuali incorporato nella CPU.
Attualmente, otto punti di accesso all'API sono stati attivati da partecipanti indipendenti, attraverso i quali è possibile conoscere sia il numero casuale complessivo attuale (ad esempio, «curl https://drand.cloudflare.com/api/public») sia determinare il valore in un determinato momento nel passato («curl https://drand.cloudflare.com/api/public?round=1234»):
- https://drand.cloudflare.com:443
- https://random.uchile.cl:8080
- https://drand.cothority.net:7003
- https://drand.kudelskisecurity.com:443
- https://drand.lbarman.ch:443
- https://drand.nikkolasg.xyz:8888
- https://drand.protocol.ai:8080
- https://drand.zerobyte.io:8888
Fonte: opennet.ru
