Notícias

Drand: um serviço público de números aleatórios

A partir de agora, qualquer utilizador ou programador que necessite de uma fonte pública de números aleatórios pode recorrer ao beacon da League of Entropy.

O que têm em comum a segurança do seu home banking, as auditorias eleitorais, e o sorteio semanal do Euromilhões? Todas requerem números aleatórios. A aleatoriedade é uma peça crítica dos negócios e processos do nosso dia a dia; apesar de ser mais facilmente observável num sorteio de uma lotaria, depende também dela, por exemplo, a criptografia aplicada para estabelecermos comunicações seguras ou para garantir a segurança das criptomoedas.

A maioria da aleatoriedade que usamos é gerada por algoritmos a correr num computador — sendo um computador uma máquina determinística, os números produzidos são apenas pseudo-aleatórios. Em particular, um adversário que conheça, adivinhe, ou consiga influenciar os parâmetros usados para inicializar o algoritmo, pode também prever ou alterar os valores aleatórios gerados. Em 2015, o ex-diretor de segurança da entidade que gere a maioria das lotarias nos Estados Unidos foi condenado por fraude, após ter configurado um o sistema que gerava as chaves vencedoras para produzir números específicos em certas datas, permitindo-lhe ganhar a lotaria seis vezes.

Como podemos, então, produzir números aleatórios para, por exemplo, o sorteio de uma lotaria, de forma a que nenhuma entidade os possa influenciar e, igualmente importante, de forma a que o público possa verificar esta propriedade? É este o objetivo do software drand e da “League of Entropy” (da qual faz parte a PTisp), que anunciou, no início deste mês, o lançamento de um serviço público de números aleatórios capaz de suportar aplicações em produção.

A aleatoriedade e o drand 
Apesar do papel crítico da aleatoriedade, e até ao lançamento do serviço drand, não existia um serviço público desenhado para fornecer aleatoriedade verificável, imprevisível, e impossível de influenciar. Quer isto dizer que não havia fontes de números aleatórios? Não. Quando se joga monopólio com os amigos, e aceitando que os dados não foram viciados, o grupo pode concordar que os números gerados são correctos.

Numa situação de comunicação remota, em que não há confiança entre as partes e não é possível verificar os dados ou presenciar o seu lançamento, o problema complica-se. Soluções adotadas no passado incluem presunção de boa fé, serviços centralizados, ou a utilização de fontes secundárias, como os preços de ações na bolsa — que, dentro de certos limites, são bastante difíceis de prever e alterar.

O drand, cujo desenvolvimento teve início em 2017, na EPFL (o Instituto Federal Suíço de Tecnologia, em Lausanne),  veio revolucionar o panorama, fornecendo uma fonte pública de números aleatórios, gerados e revelados a cada 30 segundos, e acessíveis a todos os que os queiram usar — seja para jogar monopólio, seja para sortear o vencedor da lotaria. Como é possível garantir que os números não foram viciados nem conhecidos antecipadamente por nenhuma parte? Recorrendo a um grupo diverso de participantes independentes e a técnicas modernas de criptografia (nomeadamente assinaturas BLS).

Como funciona realmente o drand? Os detalhes são complicados, mas o conceito é simples. Um grupo de computadores, controlados por diferentes entidades, gera uma chave criptográfica distribuída. Esta chave é dividida em partes, tantas como o número de computadores, e um número inicial é gerado. A partir daí, e a cada 30 segundos, cada um destes computadores usa a sua chave parcial para assinar o número publicado no período anterior, e envia-a aos restantes. Quando uma maioria dos computadores envolvidos tiver completado o processo, as diferentes assinaturas parciais podem ser combinadas para construir a assinatura distribuída, que será publicado como o próximo número aleatório.

Nenhum dos computadores em causa, ou dos seus operadores, pode influenciar o resultado final. Como este número tem de corresponder a uma assinatura válida e única, e como a chave distribuída é conhecida, qualquer pessoa pode verificar se um número é, de facto, correto. Igualmente importante é que nenhum dos operadores pode prever números futuros: como cada número depende do anterior e o anterior só é conhecido quando um número suficiente de parceiros envia a sua assinatura, altura em que também passa a ser conhecido pelo público (na rede actual, dentro de um segundo), ninguém, incluindo os participantes, apresenta uma vantagem.

A League Of Entropy 
O drand é a primeira peça do puzzle — e a fundação do serviço agora lançado. Mas, lendo a explicação do processo, torna-se claro que a escolha do grupo de computadores envolvidos é fundamental para garantir não só a segurança mas, acima de tudo, a fiabilidade da geração e distribuição dos números. É neste contexto que surge a League of Entropy (“Liga da Entropia”), um consórcio de organizações que trabalham conjuntamente para operar o serviço drand de forma robusta e imparcial, para o benefício do público.

Atualmente, fazem parte desta liga ISPs (PTisp, Emerald Onion), universidades (EPFL, C4DT, IC3, UCL, Universidade do Chile), empresas ativas na área das blockchains (ChainSafe, cLabs, Ethereum Foundation, Tierion, Protocol Labs), e empresas de infraestruturas e segurança (Cloudflare, Kudelski Security).

Apesar de a liga ter sido criada em 2019, com o lançamento de uma rede experimental, o lançamento da rede de produção este mês assinala a disponibilização de um serviço fiável e confiável, público e gratuito, e pronto a ser usado por aplicações críticas — e também das primeiras aplicações, a criptomoeda Filecoin e o protocolo de notarização Chainpoint. A partir de agora, qualquer utilizador ou programador que necessite de uma fonte pública de números aleatórios pode recorrer ao beacon da League of Entropy, contribuindo para resultados mais seguros e confiáveis.

Conteúdo produzido pela PTisp  e pela Protocol Labs.