Costumamos imaginar que criptografia avançada é algo que depende de gênios matemáticos e supercomputadores, mas isso não é necessariamente verdade. Criptografia extremamente poderosa pode estar na mão do afegão médio, como eu e você.

Foi mais ou menos assim (Crédito: Krea2)
Criptografia não depende de computadores. Um dos exemplos mais antigos, a Cifra de César, era usado por Júlio César para trocar correspondência com seus generais e aliados, e é extremamente simples para os tempos modernos. Basicamente, uma chave criptográfica, um número, avançava uma determinada quantidade de casas no alfabeto. Assim:
Digamos que a chave seja 4:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
Note como o alfabeto foi rotacionado quatro posições para a direita.
Se a mensagem recebida for “TYXMIWXEQSVXS”, substituindo as letras correspondentes, temos:
“PUTIN ESTA MORTO”
Eu sei, não é nada de outro mundo, mas para alguém que viveu entre 100 AC e 54 AC, isso era alta tecnologia.
Criptografia foi usada desde então por comerciantes, políticos, gente importante, militares, criminosos e qualquer um com acesso a um bloco de notas e um pouco de matemática, mas o momento mais conhecido foi na Segunda Guerra Mundial. O exemplo popular é a Enigma, a máquina criptográfica alemã que não era essa Coca-Cola toda. Ela era baseada em um equipamento comercial usado por bancos, e a teoria por trás de seu funcionamento era amplamente conhecida, espiões e matemáticos poloneses contrabandearam para a Inglaterra documentos e até exemplares dos rotores usados na máquina.
Seu problema era que com muitas combinações, boa parte do trabalho de decifrar as mensagens exigia força bruta. Hoje em dia, bem, há gente usando um Commodore 64 para quebrar códigos Enigma.
Com o tempo os matemáticos de Bletchley Park conseguiam decifrar mensagens da Enigma em algumas horas, era comum os ingleses lerem as mensagens antes dos destinatários, pois elas precisavam ser repassadas por vários postos de retransmissão, dependendo do destinatário.
Outros sistemas criptográficos existiam, tanto para uso estratégico, comunicações entre alto-comando, quanto para uso mais imediato, com cifras mais simples. Os americanos em 1940 já haviam decifrado PURPLE, codinome para a criptografia usada pelos diplomatas japoneses.

Máquina criptográfica PURPLE usada pelo Japão. (Crédito: National Cryptographic Museum/Wikimedia Commons)
Na véspera do ataque a Pearl Harbour, uma mensagem de 14 partes foi interceptada, na qual o embaixador japonês em Washington foi instruído a, no dia seguinte, comunicar que o Japão estava rompendo relações diplomáticas com os EUA. Uma mensagem de alerta para as bases americanas no Pacífico foi emitida, mas não chegou a tempo.
Um exemplo de criptografia em tempo real foram os índios navajos, convocados para o corpo de fuzileiros dos EUA, seu idioma era completamente alienígena para os analistas japoneses. Navajo não tem parentesco ou associação com nenhum idioma euroasiático, os fuzileiros nativos falavam com outros navajos nos navios, em transmissões abertas, e os japas arrancavam os cabelos tentando entender.
O JN-25, código criptográfico naval japonês já foi bem mais complicado de decifrar. Nas vésperas do ataque à ilha de Midway, os americanos ainda não conseguiam decifrar totalmente o JN-25. Sabiam que um ataque grande estava a caminho, mas o alvo estava cifrado, era chamado de “AF”.
Um analista teve uma ideia: enviaram uma mensagem de baixa prioridade, da base em Midway, avisando que o sistema de dessalinização estava quebrado e ficariam sem água em alguns dias se não enviassem mecânicos.
Logo apareceu uma transmissão militar japonesa, avisando que “AF” estava com problemas nos dessalinizadores. BINGO!
O mais impressionante uso de tecnologia criptográfica aliada na Segunda Guerra foi o SIGSALY, que detalho neste artigo aqui.

Tudo isso para criptografar voz, usando barro fofo e pedra lascada. (Crédito: National Cryptologic Museum/Wikimedia Commons)
Era um equipamento de 50 toneladas, ocupando uma sala inteira, usava discos com trilhas de ruído, vocoders, PCM e outras tecnologias que levariam décadas para se tornar corriqueiras. O SIGSALY conseguia criptografar transmissões de voz em tempo real, e permitia que figurões como Churchill e Truman conversassem por telefone, sem que Jerry (os nazistas, não o rato) espionasse. Uns 12 terminais foram construídos, em lugares como Paris, Guam, Brisbane e até uma unidade flutuante em uma balsa. Cada uma custava o equivalente a US$ 20 milhões em 2026.
O segredo eram os discos, as unidades transmissoras e receptoras precisavam tocar o mesmo disco, em perfeito sincronismo, para gerar a base do sinal a ser codificado e decodificado. Os alemães nunca chegaram nem perto de quebrar o SIGSALY, mas ao menos em teoria, sua fraqueza era a mesma do Enigma: Precisa do Estado Inicial da Máquina para decodificar a mensagem.
A criptografia mais moderna não precisa mais disso. A criptografia de chave pública, que você está usando neste exato momento em seu navegador, nunca transmite a CHAVE PRIVADA, somente a CHAVE PÚBLICA, usada para criptografar a mensagem.
Funciona mais ou menos assim: Eu escolho dois números primos de aproximadamente 1024 bits, e multiplico os dois:
n = p x q
n é um número de 2048 bits, ou mais.
Em seguida eu escolho um expoente, 65537, por exemplo.
(n, e) é minha chave pública. Os dois valores são distribuídos para quem quiser criptografar uma mensagem para mim. Para obter o caractere criptografado, você calcula o resto da divisão por n.
c = me mod n
NOTA: Na prática o RSA só codifica uma chave de sessão, o resto do texto é criptografado via AES, mas vamos pular essa parte. E o expoente é quase sempre 65537.
Decifrar a criptografia, aqui é o pulo do gato. Para obter o valor decodificado, usamos a equação:
m = cd mod n
Note que apareceu um “d”. ele é definido pela fórmula:
d≡e-1 (mod φ(n)), φ(n)=(p-1) (q-1)
Como só você tem p e q, deduzir esses valores consome horrores em tempo de computação, bilhões de anos para um computador normal. Em teoria um computador quântico com 20 milhões de Qubits poderia quebrar uma chave RSA de 2048 bits em 8 horas. Em 2026 o recorde de Qubits em um computador quântico é de... 96. Seus vídeos educativos ainda estão protegidos.
Será mesmo?
Todos os sistemas de criptografia possuem fraquezas, análise criptográfica hoje em dia é basicamente bruxaria, mas existe um sistema que continua imbatível, se usado corretamente. Um sistema que nenhum supercomputador, quântico ou não, consegue quebrar.
O algoritmo, as chaves são a fraqueza da criptografia. A Enigma tinha algumas falhas, uma letra não podia ser substituída por ela mesma, e os operadores costumavam assinar os textos com “Heil Hitler”. Um operador alemão usava as iniciais da namorada como chave dos painéis da Enigma, e o Serviço Secreto descobriu o nome da Fraulein.
No final, a criptografia se resume a trocar a Letra XXX pela Letra YYY, então por que não pular todas as etapas e ir direto aos finalmentes?
Criptografia de cifra única
Imagine que eu queira criptografar uma letra, “F”. De uma forma que ninguém consiga deduzir o algoritmo. A melhor forma é... eliminar o algoritmo.
Eu uso um gerador de números aleatórios para produzir as 26 letras do alfabeto, em uma ordem totalmente ao acaso, e as associo a um alfabeto normal:
ABCDE FGHIJ KLMNO PQRST UVWXY Z NSTWL DMZPJ QABXH FUVYE OKICR G
Eu escrevo “D”, e ninguém, absolutamente ninguém conseguirá deduzir que D na verdade é F, exceto se tiver essa seqüência original.
“E mensagens maiores?”, você pergunta.
Simples, pequeno gafanhoto. Usamos uma tabela maior. A mensagem encriptada é:
HAONW ZVCXF FCCZU TORUD
Note que os caracteres são divididos em blocos de cinco, para evitar análise por posição ou tamanho das palavras. O primeiro caractere é H. Consultando a tabela, a letra H na posição 1 corresponde ao “O” no alfabeto ordenado. Linha 2: A corresponde ao “S”.
# ABCDE FGHIJ KLMNO PQRST UVWXY Z --- ------------------------------- 1 NSTWL DMZPJ QABXH FUVYE OKICR G 2 JVIYQ ZKOGH DTMXW BSLAE FURNC P 3 CJMOF EWZDK RUGPB TNASH VYLIQ X 4 XWABQ CLINY ZSTFK REUPV MGJOD H 5 WJCED SAIHR LZPGK YFVXM NBUTQ O 6 VUPCM WXJEA HOZYF DTKNR GSQIL B 7 VYBAK XUEPN SLOTH GQJDM WRCZI F 8 OTHEP ZGYFK ISDCM AUVLW BXNJQ R 9 SJIYC OKZDN FPWTR BHGVX MALQE U 10 NTEPF UORCD IHXAZ KBMVL JYWQG S 11 SKHLE QJCVB WPUNY IZTFG DAOMR X 12 AICYF RGQVB OMULE PKWHJ NZSXT D 13 OGMVP HRCEL DWXJN IAKUB SQFZT Y 14 RLNVZ IFHXP BYASK CTUQG MODJE W 15 LQOIN FUAKV DJRHW ZTPEY CBSGM X 16 TKLSU VIEBO FMRDZ WJPNC QHXYA G 17 SAZHT IBDEQ LMFJR NUOKG VXPYC W 18 MKWJY TLSZU BPCVX FARQE GNDIH O 19 USVTX WNROY PADZK FCGEH LBIMQ J 20 LTWUA OKYRS PFDNB XJQGE ZCMVI H
Dizem que nenhum sistema criptográfico é invencível, um dos grandes problemas é conseguir valores realmente aleatórios para criar as chaves, há sistemas que usam emissões de radiação, manchas solares, a Cloudflare é famosa por ter uma parede de lâmpadas de lava.

Lavarand, criado originalmente pela Silicon Graphics. (Crédito: Cloudflare)
Algoritmos tradicionais são notoriamente ruins para gerar números aleatórios, e mesmo uma cifra de uso único gerada com um algoritmo desses é insegura. Sistemas modernos usam geradores bem mais complexos. No Windows a biblioteca secrets do Python chama a API BCryptGenRandom, que utiliza diversos dados do sistema para gerar entropia e produzir números bem mais aleatórios.
Quando o embaralhamento do alfabeto é feito de forma competente, não há NENHUMA relação entre uma linha e outra.
1 - SAZHT IBDEQ LMFJR NUOKG VXPYC W 2 - MKWJY TLSZU BPCVX FARQE GNDIH O
O “A”, primeiro caractere, em uma linha vale “S”, em outra vale “M”. Há uma chance em 26 dessa combinação se repetir, mas nada determina quando essa repetição acontecerá. Cada frase, cada palavra, cada letra encriptada dessa forma não tem relação com qualquer outra.
A Cifra de Uso Único é 100% aleatória, não há como reverter o algoritmo, e existem 26! Permutações possíveis para cada linha. Nenhum algoritmo ou sistema de computação, existente ou imaginário consegue quebrar isso. E não sou eu quem está dizendo, é o C.E. Shannon, no seminal paper Communication Theory of Secrecy Systems*.
NOTA: A rigor o algoritmo acima não é uma implementação eficiente de Cifra de Uso Único, ela é segura demais. Eu a usei por ser mais didática.
E por que ninguém usa essa bagaça?
Usar até usam, as famosas estações numéricas, que enviam mensagens de rádio cifradas para espiões em países distantes, usam essas cifras, mas estão sendo aposentadas. A Cifra de Uso Único é tipo comunismo, uma solução perfeita na teoria, mas que na prática não funciona.
O principal problema é que você precisa enviar enormes tabelas de caracteres, que só podem ser usadas uma única vez. A tabela é 26 vezes o tamanho da mensagem. Uma troca diária de mensagens curtas consumirá toneladas de tabelas de cifras que não podem ser transmitidas eletronicamente, ou você perde o sentido de ter um sistema criptográfico.
É trocar um problema matemático por um problema logístico. Remetente e destinatário precisam sincronizar qual tabela usar, como armazenar as tabelas de forma segura, como fazer com que elas cheguem ao destinatário, muitas vezes disfarçado em um país inimigo. E isso tudo antes da mensagem ser sequer enviada.
Por isso grandes potências investem milhões de dólares em soluções menos eficientes matematicamente, mas mais práticas no mundo real. Ou às vezes nem isso, como em 2009, quando descobriram que terroristas no Iraque estavam captando vídeos dos drones americanos, usando SDR (software-defined radio).
Pior, os militares admitiram que pelo menos desde 2002, já havia casos de transmissões interceptadas pelo inimigo. Isso mesmo, os JÊNEOS construíram drones de milhões de dólares, mas ninguém se preocupou em encriptar o sinal de vídeo.
Vamos brincar?
Óbvio que eu não fiz aquela tabela ali de cima na mão. Com ajuda de meu amigo Grok, especifiquei um script em Python para fazer todo o trabalho pesado.
Está disponível aqui: https://github.com/casc1701/ChupaTuring2000
O script tem três funções:
1 – Gerar Pads
Ele gera tabelas com um determinado número de linhas, com alfabetos ordenados aleatoriamente. O default é 50, o que significa que essa tabela é válida para mensagens de até 50 caracteres. No comando:
python otp_toolkit.py gen -n 50 --groups -o pad.txt
n é o número de linhas, --groups divide as linhas em grupos de 5 caracteres, para facilitar a visualização, e -o pad.txt salva a tabela criada no arquivo pad.txt.
python otp_toolkit.py –help lista todos os comandos.
2 – Encripta mensagem
Crie no mesmo diretório um arquivo chamado mensagem.txt, com o texto a ser encriptado. Em seguida rode:
python otp_toolkit.py enc -p pad.txt -m mensagem.txt -o cifra.txt
ele salvará a mensagem encriptada no arquivo cifra.txt
3 – Decripta mensagem
Mesmo esquema, execute:
python otp_toolkit.py dec -p pad.txt -m cifra.txt
Ele retornará a mensagem original, sem espaços.
Se você utilizar corretamente esse script, não repetindo tabelas, mantendo as cifras seguras e usando o formato de blocos de cinco caracteres, você tem uma criptografia melhor que tudo usado pela CIA, KGB, GRU, ABIN.
Só não deixe o Xandão saber.





:quality(85)/fa6d7875-3eec-48f7-b0fd-5ba0cc06b3a7.png)