A empresa Cloudflare serviço , para garantir seu funcionamento, foi formado um consórcio de várias organizações interessadas em fornecer números aleatórios de qualidade. Ao contrário dos sistemas centralizados existentes, a Liga da Entropia não depende de uma única fonte e utiliza a entropia de vários geradores não relacionados, controlados por diferentes participantes do projeto. Graças à natureza distribuída do projeto, a compromissão ou falsificação de uma ou duas fontes não comprometerá o número aleatório final.
É importante notar que os números aleatórios gerados pertencem à categoria de sequências publicamente acessíveis, que não podem ser usadas para gerar chaves criptográficas e em áreas onde o número aleatório deve ser mantido em segredo. O serviço visa fornecer números aleatórios que não podem ser previstos com antecedência, mas que, uma vez gerados, tornam-se publicamente disponíveis, incluindo para verificar a validade de valores aleatórios passados.
Números aleatórios públicos são gerados a cada 60 segundos. Cada número é vinculado ao seu número de sequência (round), podendo a qualquer momento ser acessado de qualquer servidor participante o valor gerado anteriormente. Esses números aleatórios podem ser aplicados em sistemas distribuídos, criptomoedas e blockchains, onde diferentes nós devem ter acesso a um único gerador de números aleatórios (por exemplo, na formação de provas de trabalho), bem como na realização de diversas loterias e para a formação de amostras aleatórias durante auditorias de eleições.
Para trabalhar com o serviço e implantar seus próprios nós um conjunto de ferramentas , escrito na linguagem Go e distribuído sob a licença MIT. O Drand funciona na forma de um processo em segundo plano que se conecta a geradores externos participantes da rede distribuída e forma coletivamente um valor aleatório agregado. O valor agregado é gerado usando métodos e A geração de um valor aleatório resumo pode ser realizada no sistema do usuário sem a necessidade de agregadores centralizados.
Drand também pode ser utilizado para fornecer números aleatórios privados gerados localmente aos clientes. Um esquema de criptografia ECIES é usado para a transmissão do número aleatório, onde o cliente gera uma chave privada e uma chave pública. A chave pública é enviada ao servidor Drand. O número aleatório é criptografado usando essa chave pública e pode ser visualizado apenas pelo cliente que possui a chave privada. Para interagir com os servidores, pode-se usar a utilidade ‘drand’ (por exemplo, ‘drand get public group.toml’, onde group.toml é a lista de nós a serem consultados) ou a API Web (por exemplo, pode-se usar ‘curl https://drand.cloudflare.com/api/public’ ou chamar a partir do JavaScript usando a biblioteca ). Os metadados da solicitação são enviados no formato TOML, enquanto a resposta é retornada em JSON.
Atualmente, cinco empresas e organizações se uniram à iniciativa League of Entropy, que forneceram acesso aos seus geradores de entropia. Os participantes do projeto estão em diferentes países e utilizam métodos variados para obter entropia:
- Cloudflare, , valores aleatórios com base em fluxos imprevisíveis de líquido em , cujas imagens são usadas como entrada de entropia para o CSPRNG (Gerador de Números Pseudo-Aleatórios Criptograficamente Seguro);
- EPFL (Escola Politécnica Federal de Lausanne), URand,
utiliza o gerador local padrão /dev/urandom, que emprega a entrada do teclado, movimento do mouse, fluxos de tráfego, etc., como fontes de entropia. - Universidade do Chile, , utiliza uma rede de sensores sísmicos como fonte de entropia, assim como dados da rádio, atividade no Twitter, alterações no blockchain Ethereum e um gerador de RNG de hardware caseiro;
- Kudelski Security, ChaChaRand, fornece um CRNG (Gerador de Números Aleatórios Criptográficos) baseado na aplicação do cifrador ChaCha20;
- Protocol Labs, InterplanetaryRand, dados aleatórios são extraídos de captadores de ruído e combinados com o PRNG do Linux e o gerador de números pseudo-aleatórios embutido na CPU.
Atualmente, participantes independentes lançaram 8 pontos de acesso à API pública, através dos quais é possível saber tanto o número aleatório agregado atual (por exemplo, "curl https://drand.cloudflare.com/api/public"), quanto determinar o valor em um momento específico do passado ("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
