Por Ivar A. Hartmann-Professor da FGV Direito e coordenador do projeto Supremo em Números
Recentemente, um cidadão brasileiro pediu ao Supremo o código-fonte do programa de computador que realiza a distribuição aleatória dos processos aos ministros. Usou a Lei de Acesso à Informação (LAI). Em resposta, o Supremo afirmou que a escolha do relator “é feita através de um sistema informatizado desenvolvido pela equipe de Tecnologia da Informação da Corte, o qual utiliza um algoritmo que realiza o sorteio do relator de forma aleatória”. E negou acesso ao algoritmo, tendo em vista a “ausência de previsão normativa para tal.”
A transparência de dados, dentro ou fora do Judiciário, é pressuposto geral da administração pública. Mesmo sem previsão normativa específica, pela LAI o Supremo está obrigado a franquear o acesso ao código-fonte. A LAI prevê a possibilidade de colocar informações sob sigilo, mas nunca por via da inércia do órgão público. De qualquer forma, o sigilo é explicitamente proibido quando se trata de “informação necessária à tutela judicial ou administrativa de direitos fundamentais.”
É difícil imaginar elemento mais decisivo para a tutela de direitos fundamentais do que o mecanismo de escolha do relator dos processos na mais alta corte do país. No Supremo, escolher o relator é quase definir o resultado. A vasta maioria das decisões do tribunal é tomada pelo próprio relator, sem a participação dos colegas. Muitas vezes, o relator controla o timing de suas decisões no processo de maneira decisiva para o resultado da causa. Ou então decide em nome do colegiado descumprindo o precedente deste.
Mas e do ponto de vista técnico? Haveria razão para o sigilo?
Computadores são previsíveis. Se você repete uma pergunta, vai receber sempre a mesma resposta. É necessário um programa diferenciado para que a máquina, ao receber a pergunta “Para quem será distribuído esse processo?”, não responda sempre com o nome de um mesmo ministro.
É possível orientar um computador para gerar resultados “aleatórios”. Mas, mesmo nestes casos, a máquina está sempre sujeita às regras da sua programação. Assim, programas tradicionais não permitem respostas ou resultados verdadeiramente aleatórios, porque o sistema estará seguindo sempre as mesmas regras. Estará executando sempre o mesmo algoritmo com a mesma sequência de comandos.
Mesmo assim, é possível simular aleatoriedade na distribuição de processos. O programa começa com um valor inicial, chamado de “semente”, e segue um padrão a partir daí. Esse ponto de partida pode ser suficientemente complexo para tornar o padrão difícil de ser identificado. Ainda assim, como não é nada mais que um conjunto de regras se repetindo, o algoritmo irá gerar uma distribuição de processos que não é verdadeiramente aleatória. O resultado pode ser imprevisível olhando de fora, mas será sempre previsível do ponto de vista das instruções do programa. Conhecendo a semente, qualquer um poderia prever para qual ministro seria distribuído o próximo processo sobre o impeachment da presidente Dilma ou o próximo inquérito sobre Eduardo Cunha.
Mas quando a semente usada é suficientemente complexa, mesmo algoritmos pseudo-aleatórios são praticamente impossíveis de quebrar. Se for desse tipo, o algoritmo de distribuição aleatória de processos do Supremo estaria vulnerável apenas a entidades com poder computacional semi-infinito, como o Google ou a NSA. Mesmo assim, seria necessário descobrir a semente. Ou seja, uma renovação periódica dela resolveria o problema. O algoritmo poderia ser divulgado sem risco.
Existem também formas de um computador dar respostas verdadeiramente aleatórias. Nesses casos, nem todo o poder computacional do mundo permitiria prever para qual ministro o próximo processo seria distribuído. Esses algoritmos tornam a engenharia reversa impossível. Eles se baseiam em dados imprevisíveis da realidade, como o ruído atmosférico ou a temperatura ambiente. Há soluções online neste formato, como o site random.org. Neste caso, não importa qual o algoritmo usado, pois o resultado é aleatório independentemente do código-fonte.
Qual dos dois o Supremo usa? Se o método depende do algoritmo é uma escolha muito perigosa, pois permite manipulação. A divulgação do algoritmo nesse caso é o menor dos problemas. Se não se baseia no algoritmo e sim em uma semente complexa ou em algo verdadeiramente aleatório, então o sigilo do código-fonte não faz diferença. De fato, muitos sistemas realmente seguros publicam voluntariamente seu algoritmo para corroborar sua segurança. Os tokens usados pelos clientes de bancos como o Itaú para gerar um número aleatório e garantir a segurança do internet banking são baseados em um algoritmo público. O Bitcoin, que já movimenta milhões no mundo inteiro, também tem seu código fonte divulgado ao público.
O Supremo poderia fazer o mesmo como gesto de boa vontade, visando assegurar aos brasileiros que a distribuição dos processos é adequadamente aleatória. Ou poderia divulgar o algoritmo apenas para cumprir a Lei de Acesso à Informação.