RC4 - adeus ao favorito do TLS e outros...

É interessante notar como um algoritmo de criptografia pode apresentar fraquezas no decurso de sua vida. E este é o caso do RC4, o mais preferido algoritmo de criptografia em uso pelos softwares em todo o mundo.
Criado por Ron Rivest (o R do algoritmo RSA) no final de 1980, é um algoritmo elegante, simples e eficiente. Apesar de "copyrighted" da RSA, era tão simples que podia ser facilmente guardado "de cabeça" e talvez por isso mesmo não demorou muito a vazar na Internet (meados de 1990), quando então se tornou o protocolo de criptografia do TLS.
O RC4 tinha uma propriedade fundamental que tornou diferente de outras cifras como DES (padrão de criptografia de dados) e AES (Advanced padrão de criptografia): é ul algoritmo DE FLUXO (Stream Cipher) e não de Blocos, servindo exatamente para comunicações. Sua operação, baseada exclusivamente em XOR (ou-exclusivo) é extremamente rápida para processadores e por trabalhar com 1 byte de cada vez, tornou-se a opção mais adequada - e segura - para implementações onde a performance é um fator crucial.
Entretanto, com o advento de processadores cada vez mais rápidos e novas técnicas de criptoanálise, vários ataques bem sucedidos foram aparecendo, decretando "a morte" deste algoritmo no TLS - apesar de ainda muitos sistemas o utilizarem em seus protocolos de comunicação ou mesmo de criptografia de dados.
Alguns novos algoritmos pretendem tomar o seu lugar, como o SPRITZ (onde Rivest adiciona uma 3a veriável K ao RC4 tradicional) ou mesmo o ChaCha e Salsa (de Daniel Berstein), mas a comunidade envolvida com o padrão TLS não tem sido muito receptiva com eles. Entretanto, o pessoal envolvido com o padrão TLS 1.3 vem adotando o ChaCha em estado selvagem (sem modificações), o que deve se tornar o novo padrão.
Outra vertente que vem tomando corpo desde 2015 é usar o AES em modo GCM (Galois Counter Mode), uma variante do AES-CBC tradicional. Neste modo, altera-se o contador para prover "um algoritmo de fluxo" mesmo usando um "algoritmo de bloco", ou seja, o byte do fluxo de entrada pode sofrer transformação pelo mesmo algoritmo, mudando-se apenas o "contador". Mas não podemos esquecer dois pontos:
sendo o AES um algoritmo de blocos, um trabalho extra deve ser realizado pelos processadores (mais que se fosse um algoritmo de fluxo), o que deve impactar na performance do TLS.
o algoritmo AES, por ser o padrão norte-americano, está regido sob leis que exigem que o Governo tenha acesso à informação (e não são poucas!), logo, acredita-se que este padrão não seja, de facto, 100% seguro.
Só o tempo mostrará o que deverá substituir o RC4...