01
 ███████    ██████     ███████     ████     ████     ██   ▀▀██████
  ░░░██       ██░░░░██░░░░██     ███ ███    ██░░░░██   ██   ██░░░░██
    ██       ██   ██   ██     ██ ████    ██   ██   ▓█   ██   ██
    ██       ██████     █████████ 01    ██   ██      ██████
    █·       ██   ▀█     ▓█   ██     ▓█   ██    ▓█   ██   █▓   ▓█   ██
    ██       ██   █▓   █▓     █▓    ░░▒▓   █▓   █▓   █▓
    ▓▓       ▓▓   ▓▌    ▓▓   ▓▒     ▓▒   ▓▒    ▒░   ▓░   ▒▒   ▓▓   ▓▒
    ▒▓       ▓▌    ▓▒   ▓▓     ░▒   ░░▒████░    ▓░   ▓▒   ░░       ▒░   ░▌    ▒░                 ▓▒                ░▒   ▒░   ▓█
    ▒▓       ░░▒▓                ▒░   ▒·   ▓▒
    ▒·       ▒░   ▒▓   ░▓
    ░▒▒░                  ░         ▒·
    ░░░░▒
    ·░░                                                                       ░░░
    ░░  Entropia para a criação de criptografia                              ░░
    ░░                                                                       ░░
    ·  A pandemia de números determinísticos em transações críticas         ░░
    ░░                                                                       ░░
    ░░                                                                       ░░    
    ░░  Giulia Mendes (Gihu)                                                 ░
    ░░                                                                       ░░
    ·  syntologist.github.io                                                ░░
    ░░                                                                       ░░
    ░░  3 de outubro de 2024                                                 ·                                                                       ░░
    ░░                                                                       ░░  “Any one who considers arithmetical methods of producing             ░░  random digits is, of course, in a state of sin. For, as has been     ░░
    ░░  pointed out several times, there is no such thing as a random        ·
    ░░  number—there are only methods to produce random numbers,             ░░
    ░░  and a strict arithmetic procedure of course is not such a method.”   ░░  - John von Neumann                                                   ░░
    ░░  (Qualquer pessoa que considere métodos aritméticos para pro-         ░
    ░░  duzir dígitos aleatórios está, evidentemente, em estado de pe-       ░░
    ░░  cado. Porque, como já foi apontado várias vezes, não existe          ·
    ░░  um número aleatório – existem apenas métodos para produzir           ·  números aleatórios, e um procedimento aritmético rigoroso ob-        ·
    ·  viamente não é um desses métodos)                                    ░░
    ░░                                                                       ░░
    ░░                                                                       ░░
    ·  Sumário                                                              ░░
    ·                                                                       ░░
    ░░  1 Princípos da aleatoriedade                                         ░░
    ░░      1.1 PRNGs                                                        ░░
    ·      1.2 TRNGs                                                        ░░
    ░░  2 Entropia                                                           ░░
    ·  3 Enviesamento dos números                                           ░░
    ░░      3.1 Hashing                                                      ░░      3.2 Exclusive or                                                 ░
    ·      3.3 CSPRNGs                                                      ░
    ░░  4 Conclusões                                                         ░░                                                                       ░░                                                                       ·
    ░░  1 Princípios da aleatoriedade                                        ·
    ░░  Entropia é uma medida de aleatoriedade, significando que             ·
    ░░  seu valor oscila em razão à quantidade de matéria presente em        ·  um sistema, nos levando ao conceito principal de criptografia.       ░░
    ░░  A segurança de computadores depende fortemente de criptogra-         ░░
    ░░  fia, entretanto, máquinas são deterministas – incapazes de gerar     ░  números aleatórios verdadeiros.                                      ░
    ░░                                                                       ░░
    ░░  A existência de uma aleatoriedade verdadeira é debatível;            ░
    ·  ela é definida pela ausência de previsibilidade. Um sistema com      ░░
    ░░  a mais pura forma de entropia não mantém nenhum padrão, ne-          ·
    ░░  nhuma saída determinística e nenhum valor semente. Em con-           ░░
    ░░  traste, a pseudo-aleatoriedade depende de um número ou vetor         ░
    ░░  (valor semente) para inicializar um gerador de resultados.           ░░                                                                       ░░
    ░░  1.1 PRNGs                                                            ░░
    ░░
    ░░  Geradores de números Pseudo-Aleatórios (PRNGs)                       ░░
    ░░  utilizam algoritmos determinísticos baseados em operações em         ░
    ░░  um valor base / semente, tendo seu resultado completamente           ░  determinado pelo seu estado inicial. Amplamente utilizados em        ░░  diversas aplicações, temos em destaque os PRNGs:                     ░░                                                                       ·  • LCG (Linear Congruential Generator): um dos gera-                  ·
    ░░  dores mais antigos e simples, utiliza de uma fórmula linear          ░
    ░░  para gerar uma sequência de números. Baseia-se na fórmula            ░░                                                                       ·
    ░░  X        = ⎛a ⋅ X  + c⎞ ÷ m                                           ░░
    ░░   (n + 1)   ⎝     n    ⎠                                              ░░                                                                       · 
    ░░  onde Xn é o n-ésimo número da sequência; a, c, e m são constantes;   ·
    ░░  X0 é a semente.                                                      ░░
    ░░                                                                       ·
    ░░  • Mersenne Twister: um dos mais utilizados devido ao                 ·
    ░░  seu longo período (quantidade de números gerados antes               ░░  da sequência se repetir), é baseado na recorrência linear            ░░
    ░░                                                                       ·    X        = X        ⊕ X D                                          ·     (k + n)    (k + M)    k                                           ·
    ░░                                                                       ·
    ░░  para todo k >= 0, onde M < N ∈ N                                     ·  são dados e fixos que determinam quão longe no passado o             ░░
    ░░  estado atual do vetor deve olhar para calcular o próximo             ·  estado.                                                              ·
    ░░                                                                       ·
    ░░  • Von Neumann: o algorítimo baseia-se em pegar um número,            ░░  elevá-lo ao quadrado, e usar os dígitos do meio deste resul-         ░░  tado como “número aleatório”, que servirá de semente para            ░░
    ░░  a próxima iteração.                                                  ·                                                                       ░░
    ░░  • Xorshift: e suas variações, é um vetor de bits, a cada             ░░  passo, o próximo estado é obtido aplicando-se um certo               ░░
    ·  número de operações XOR a blocos de w bits no estado                 ·
    ░░  atual, onde w = 32 ou 64.                                            ░░
    ·  1.2 TRNGs                                                            ░
    ░░                                                                       ░░
    ·  Geradores de números Aleatórios Verdadeiros (TRNGs),                 ░░
    ·                                                                       ░░
    ░░  são dispositivos ou sistemas que produzem números aleatórios a       ░
    ·  partir de fenmenos físicos intrinsecamente imprevisíveis, baseiam-   ░░  se em processos que não podem ser previstos nem replicados por       ░░
    ░░  um modelo computacional determinístico. Seu valor semente            ░
    ░░  origina-se de fontes com alta entropia.                              ░                                                                       ░░  2 Entropia                                                           ░░
    ░░
    ░░  Entropia refere-se a uma medida de incerteza e aleatorie-            ░
    ░░  dade em um sistema. Se assumirmos que todos os dados dis-            ░░  poníveis pertencem a uma classe, será fácil prever a classe de       ░░
    ·  um novo dado. Nesse caso, a entropia é zero. A entropia varia        ░░
    ░░  entre 0 e 1 e alcança seu valor máximo quando todas as proba-        ░░
    ░░  bilidades são iguais.                                                ░░
    ░░                                                                       ░░
    ·  Em seu estado verdadeiro, a entropia é obtida dinamica-              ░  mente por meio de oscilações aleatórias e microscópicas em pro-      ░
    ░░  cessos físicos, como a ocorrência do decaimento radioativo de        ·
    ░░  um isótopo instável, ruído atmosférico ou térmico, eletromagne-      ░
    ░░  tismo externo, ou até mesmo ruído produzido por componentes          ░░
    ░░  de computador, ao invés de acontecimentos determinísticos.           ░░
    ░░                                                                       ░░  Claude E. Shannon foi pioneiro na definição de entropia              ░
    ░░  como uma medida para a teoria da informação. Shannon mede            ░░
    ░░  a previsibilidade dos valores futuros com base na distribuição de    ░
    ░░  probabilidade dos valores de amplitude já observados em algum        ░░
    ░░  sinal base. Ela quantifica estatisticamente a função de densi-       ·
    ·  dade de probabilidade da distribuição dos valores, sendo capaz       ░
    ░░  de detectar aspectos de não-linearidade em séries modeladas,         ·  contribuindo para uma explicação mais confiável das dinˆamicas       ░░
    ░░  não-lineares em diversos pontos de análise, o que, por sua vez,      ░
    ░░  melhora a compreensão da natureza de sistemas caracterizados         ░░
    ░░  por complexidade e desequilíbrio.                                    ░░
    ░░                                                                       ░░
    ░░  Quando um evento E ocorre com probabilidade p, a in-                 ░░
    ░░  certeza é denotada por S(p). Se a probabilidade de uma classe        ░░
    ░░  ocorrer é 1, a representação é S(1) = 0. De acordo com Shannon,      ░░
    ░░  as probabilidades de uma classe ocorrer são p1, p2, p3, ... , pn, e a░░  incerteza é medida pela entropia H. Uma matriz de 139 × 228          ░░
    ░░  é utilizada para este estudo.                                        ·
    ░░                                                                       ░░
    ░░                  n                                                    ░░
    ░░                 ___                                                   ░░
    ░░    H(x) = -K ⋅  ╲    p  ⋅ log  ⋅ P                                     ░░
    ░░                 ╱     i      2    i                                   ░░
    ░░                 ‾‾‾                                                   ░░
    ░░                i = 1                                                  ░░
    ░░                                                                       ░░  Tal qual é conhecida como Entropia de Shannon.                       ░░                                                                       ░░
    ░░                                                                       ░░
    ░░  3 Enviesamento dos números                                           ░                                                                       ░░
    ░░  No contexto computacional, para obter uma criptografia               ░░
    ░░  realmente aleatória, precisamos entrelaçar fenômenos físicos aos     ░░  sistemas de segurança. Instituições como o NIST (National            ░░  Institute of Standards and Technology) fornece padrões de            ░░
    ·  diretrizes e requisitos para garantir alta qualidade de entropia     ░░
    ·  em sistemas de geração de números aleatórios (RNGs), como o          ░░
    ░░  conjunto NIST SP 800-90B, que exige que a semente tenha              ·
    ·  pelo menos o número de bits de entropia equivalente à força          ░░
    ░░  nominal do PRNG. Por exemplo, um gerador usando SHA-256              ░  requer pelo menos 256 bits de entrada de entropia para atingir       ░░
    ░░  sua força de segurança máxima.                                       ░░                                                                       ░░
    ·  A obtenção de entropia de uma fonte contínua de ruído em             ░░  uma máquina (na maioria das vezes: interação humana, ruídos          ░
    ░░  da ventoinha, ou desvio do relógio interno) pode apresentar en-      ░░
    ░░  viesamento dos dados, assim exigindo um processo de imparci-         ░░
    ░░  alização onde o é coletada uma amostra do som que por fim é          ░░
    ░░  colocada sob uma função pseudo-aleatória para distribuir a en-       ·
    ·  tropia uniformemente entre os bits de saída; nesta ocasião, são      ░░
    ░░  usadas funções de hashing criptográficas como, novamente, o al-      ░░
    ·  goritmo SHA-256.                                                     ░░
    ·                                                                       ░░
    ░░  3.1 Hashing                                                          ░
    ░░                                                                       ░░
    ░░  A técnica de hashing envolve alimentar o SHA-256 com a               ·
    ·  sequência de bytes (256 bits, seguindo o padrão NIST) que re-        ░░  presenta alguma fonte de entropia, e por sua vez executar o          ░░
    ░░  método de digest que retornará a representação hexadecimal do        ░░
    ░░  hash em uma cadeia de 64 caracteres representando os bits de         ░░  entrada dispersos uniformemente. O hashing ajuda a uniformi-         ░
    ░░  zar a distribuição da entropia existente, mas não pode aumentar      ░░
    ░░  a entropia total se a entrada original for de baixa entropia.        ░░
    ░░                                                                       ░░
    ·  Todavia, é arriscado procurar segurança criptográfica ab-            ░░
    ·  soluta em um algoritmo cujas chaves estão nas mãos da NSA.           ░░
    ░░                                                                       ·
    ·  3.2 Exclusive or                                                     ░░                                                                       ░░
    ░░  Como alternativa, também é possível tratar o enviesamento            ░░  entrópico utilizando o operador XOR em bits de entrada de duas       ░░  ou mais fontes de entropia diferentes, XOR-ando amostra com          ░░
    ░░  amostra de forma iteraria.                                           ░░
    ░░                                                                       ░░
    ░░  3.3 CSPRNGs                                                          ░░
    ░░                                                                       ·
    ░░  Conquanto, é imperativa a busca de alta entropia para va-            ░░
    ░░  lores de entrada, sendo importante medir a qualidade de cada         ·  amostra, usando, por exemplo, a Entropia Amostral Multiesca-         ░░
    ░░  lar (MSE), usada para analisar a entropia em diversas escalas,       ░░
    ░░  avaliando a probabilidade logarítmica de que seções dos dados        ░░
    ░░  correspondem a outras seções à medida em que aumentam em             ░░
    ░░  1 ao longo do tempo, medindo, assim, o quanto os números             ░░
    ░░  são enviesados ou a entropia de uma série temporal de dados.         ░░
    ░░  Como qualquer medida de entropia, o objetivo é avaliar a com-        ░
    ░░  plexidade de uma série temporal. Uma das principais razões           ·
    ·  para usar uma abordagem multiescala é quando a escala de             ·
    ░░  tempo de relevˆancia na série temporal é desconhecida. Por           ░░
    ░░  exemplo, ao analisar ruído atmosférico, seria relevante conside-     ░░
    ░░  rar as escalas de tempo dos ruídos em vez dos sons individuais.      ·  Para isso, além dos geradores de números aleatórios verdadei-        ░  ros (TRNGs) – não determinísticos -, também ocorre a presença        ░░
    ░░  dos Geradores de números Pseudo-Aleatórios Cripto-                   ░░
    ░░  graficamente Seguros (CSPRNGs), projetados para resis-               ·
    ░░  tir a análises estatísticas, coletando certa quantidade de entro-    ░░  pia de fontes físicas e a transformando em uma sequência longa       ░░
    ░░  de números pseudo-aleatórios suficientemente imprevisíveis para      ░░  serem seguros em aplicações criptográficas, tais geradores em        ·
    ░░  destaque incluem:                                                    ░░
    ·                                                                       ░░
    ·  • Fortuna: utiliza múltiplas pools de entropia, é baseado            ░
    ░░  em AES (Advanced Encryption Standard), e pratica a re-               ░░
    ░░  semeadura quando o primeiro pool atinge um certo limite              ░░
    ░░  de bytes de entropia coletados.                                      ░░                                                                       ░░
    ░░  • Yarrow:                                                            ░  também utiliza múltiplas pools de entropia e                         ░
    ░░  funções de hash para condicionar os bits antes de agregá-los         ░░  aos pools, baseado em Triple-DES e AES.                              ░░
    ·                                                                       ░░
    ░░  4 Conclusões                                                         ░
    ░░  à medida em que o número de máquinas progressivamente                ░░
    ░░  ultrapassa o número de seres humanos no planeta, extrair en-         ░░
    ░░  tropia de alta qualidade com fácil acesso vem se tornando um         ░
    ░░  desafio fundamental para a segurança cibernética, Não apenas         ░
    ░░  chaves criptográficas exigem níveis puros de aleatoriedade, mas      ░░
    ░░  também o DNS depende dela para IDs de transações, e estrutu-         ░░
    ░░  ras de aplicações web que dependem de máquinas virtuais estão        ░░
    ░░  tendo difícil acesso à entropia.                                     ░░
    ░░  Esse cenário moderno está elevando a trama da Internet e             ░░
    ░░  da comunicação ao nível dos computadores quˆanticos que ofere-       ░░  cem Entropia como Serviço (EaaS), criando a base de um futuro        ░
    ░░  ecossistema de servidores que fornecem entropia de qualidade         ░░
    ░░  comprovadamente boa mediante demanda e liberando todo o              ·  potencial da criptografia.                                           ░░                                                                       ░░
    ░░  Segue a esperança de que o futuro abrace a revalidação do            ·
    ·  caos fundamental do universo em prol do direito de privacidade       ░░
    ░░  humana, longe de monopólios de curvas elípticas na linguagem         ░░
    ░░  do mundo.                                                            ░░                                                                       ░░
    ··░                                                                       ░··