Parcialidade algorítmica

Sem alterar o código final de um programa ou aplicação, pela simples manipulação da flutuação natural das fontes externas que servem de base aos algoritmos que integram, passa a ser possível controlar externamente os resultados obtidos.

starline/Freepik

Quando pensamos em decisões tomadas exclusivamente e instintivamente por computadores, pensamos nelas como imparciais. Mas, na realidade, a maioria é determinada pela sua programação e é, efectivamente, esta natureza determinística que as torna incapazes de manter uma imparcialidade absoluta.

O determinismo dos computadores tradicionais é o factor chave do seu sucesso. Quando lhes colocamos repetidamente uma questão, sabemos que vamos receber sempre a mesma resposta. De facto, na maioria dos casos, a programação preocupa-se em eliminar qualquer tipo de flutuação de resultados, assegurando conclusões precisas, estáveis e consistentes. Para o fazer, os programadores utilizam algoritmos que restringem os resultados ao que é pretendido. Nestes casos, a replicabilidade e uniformidade de funcionamento dos computadores joga a seu favor e, em alguns processos mais críticos, chega mesmo a ser reforçada por sub-rotinas de verificação e correção de erros.

Mas, quando, por outro lado, pretendemos que um computador alargue os seus resultados a uma selecção de números ao acaso, temos de, da mesma forma, recorrer a algoritmos. Normalmente, neste caso, conjugam-se com uma ou mais fontes de variação irregular, para definir padrões de resultados sem qualquer relação aparente. E se estas sucessões de números pseudoaleatórios, servem, na maioria dos casos, perfeitamente a sua função como aleatórios, em casos específicos, os riscos podem ser muito elevados. É o caso de um casino on-line: ao recorrer a este tipo de programação, com o conhecimento prévio do algoritmo e das fontes usadas na sua programação, é mesmo possível prever os resultados de cada jogada.

Se formos mais longe e pensarmos que hoje existem inúmeros algoritmos funcionais pseudoaleatórios de uso partilhado a serem integrados nas mais diversas aplicações, nem mesmo os autores das aplicações poderão está cientes dos riscos que esta quebra natural de segurança significa.

Sem alterar o código final de um programa ou aplicação, pela simples manipulação da flutuação natural das fontes externas que servem de base aos algoritmos que integram, passa a ser possível controlar externamente os resultados obtidos.