Na adolescência, você provavelmente passava bilhetinhos pros colegas na escola. E certamente já passou ou já conheceu alguém que passava mensagens em código pra evitar que os outros lessem, ainda que provavelmente códigos bem simples. Vamos falar de criptografia e de alguns métodos mais básicos de criptografar mensagens. Quem sabe agora, depois de adulto (se for o caso), você volte a passar bilhetinhos no trabalho.

O que é criptografia?

Cripto vem do grego e significa secreto, oculto, e grafia remete à escrita. Então a criptografia é um método para codificar mensagens para que se tornem secretas e só possam ser lidas pela pessoa a quem a mensagem se destina. O termo também pode ser usado para designar a ciência que estuda esses métodos.

A criptografia é utilizada há muito tempo, com registros de uso de mensagens codificadas, ainda que de forma mais primitiva, milênios atrás, nas civilizações do antigo Egito e babilônia, por exemplo.

Ela tem especial uso para esconder informações sensíveis que precisam ser transmitidas, como estratégias de guerra, segredos de Estado ou mesmo informações de espionagem.

Atualmente, a criptografia é muito utilizada na computação para proteger os dados e a comunicação, dar autenticidade a documentos e impedir ciberataques.

 

Criptografia por substituição de letras: a Cifra de César

Um dos códigos mais simples consiste em substituir uma letra do alfabeto pela letra seguinte, ou seja, A vira B, B vira C e assim por diante.

Nesse método, por exemplo, a mensagem:

A CIENCIA TEM QUE SER DIVERTIDA

Ficaria assim:

BDJFODBUFNRVFTFSEJWFSUJEB

Esse é o chamado código de César, pois foi usado por Júlio César para comunicar-se com as legiões romanas em combate. Esse uso é um marco na história da criptografia, tendo em vista se tratar de um sistema que segue um métodos específico.

Descrição da imagem: Cifra de César representada em uma imagem. A imagem mostra, acima as letras X Y Z mais apagadas, seguidas das letras A B C D E F. Abaixo outro linha de letras iniciando de A e indo até F, com G H I seguindo mais apagadas. A letra X se liga a A, Y a B, Z a C, A a D, B a E, assim por diante.

Notem que eu também tirei espaços. Não utilizar espaços, pontuação e acentuação é uma forma de deixar mais difícil para alguém que não tenha o código decifrar a mensagem.

No exemplo, eu usei um deslocamento de 1 no alfabeto. Para tornar a mensagem um pouco mais difícil de decifrar, posso utilizar outros deslocamentos. Por exemplo, se eu usar um deslocamento 5, A deve virar F, B deve virar G, assim por diante.

A ideia é que o destinatário da mensagem irá saber esse deslocamento e, portanto, decifrará a mensagem mais facilmente que alguém que não o saiba.

O problema desse tipo de método é que ele é simples de quebrar, ou seja de decifrar a mensagem mesmo sem a chave (no caso, o deslocamento).

Vamos ver se você consegue quebrar esse código:

AIWHCPSAGSJCQSQCBGSUIWIRSQWTFOFSGGOASBGOUSAJOACGJSFGSQCBGSUISRSQWTFOFODFCLWAOHOAPSABSZOJOWHSFIAOHOFSTOSGDSQWOZ

Aqui eu simplesmente utilizei o Código de César para trocar as letras por outra equidistante no alfabeto. Claro que só de saber qual método eu utilizei você já tem uma vantagem, pois é uma coisa a menos para descobrir.

De qualquer jeito, você ainda precisa descobrir o deslocamento, a vantagem é que se descobrir uma palavra, é só usar o mesmo deslocamento no resto da mensagem.

Eu peço desculpas antecipadas por qualquer erro na mensagem. Eu verifiquei letra a letra, mas algo pode ter escapado. Queria só registrar que fui tentar verificar usando tanto o GPT quanto o Copilot e, mesmo dando a taxa de deslocamento, os dois só me retornaram mensagens totalmente aleatórias, sem relação alguma com a mensagem. Então, se você decifrar, vai estar muito melhor que os bots.

Na verdade, tem uma outra técnica que facilita decifrar a mensagem, mas falo disso no próximo tópico. Se mesmo com a próxima técnica você não conseguir, no próximo texto que eu escrever sobre o assunto, dou uma dica adicional.

 

Como deixar o código um pouco mais seguro

Há uma forma de deixar esse código ainda mais difícil de quebrar, mas isso também pode tornar a chave mais complexa. É possível que, em vez de se deixar uma taxa de deslocamento padrão, simplesmente se substitua uma letra por outra, ou mesmo por um símbolo, aleatoriamente.

O problema disso é que a chave para decifrar a mensagem seria toda uma tabela de letras e suas correspondentes. Sendo algo mais difícil de decorar, a pessoa teria que ter isso anotado, o que já diminui a segurança.

Uma forma de tornar essa substituição sem um padrão mais simples é o sistema utilizado pelos Karas, aqueles personagens dos livros do Pedro Bandeira. Eles usavam duas palavras de igual tamanho em que as letras de uma eram substituídas pelas da outra.

Descrição da imagem: série de livros “Os Karas”, de Pedro Bandeira. Na imagem vemos os livros “A droga da obediência” com fundo roxo e branco e a imagem de uma algema, “Anjo da morte” com fundo amarelo e preto e a imagem de um cão bravo, “Droga de Americana!” com fundo laranja em vários tons e a imagem de um helicóptero, “Pântano de Sangue, com fundo marrom claro com a imagem da cabeça de uma pessoa sendo engolida por um jacaré, e “A droga do amor”, com fundo bege e a imagem de um coração amarrado com bananas de dinamite.

As palavras eram Tenis Polar. Nesse caso, o T era substituído pelo P e vice-versa, o E pelo O e assim por diante.

Para esse código dar certo, precisamos de duas palavras com o mesmo número de letras em que nenhuma se repita em qualquer uma das palavras. A vantagem é que é mais fácil de lembrar que uma tabela inteira de substituições. A desvantagem é que você substitui um número mais limitado de letras.

Descrição da imagem: uma mão com a letra K escrita e as palavras TENIS – POLAR em um balão de diálogo.

Ter palavras maiores pode ajudar com isso, mas o mais importante é ter substituição de algumas letras chave, ou seja, letras com maior frequência na língua portuguesa (ou na que for utilizar), como as vogais A, E, I e O, além de consoantes de uso mais comum, como N, S e R.

 

Decifrando o Códigos de substituição de letras

Se você conseguiu decifrar a mensagem anterior, provavelmente foi chutando as taxas de deslocamento até conseguir uma ou algumas palavras que fizessem sentido na língua portuguesa.

Isso é uma técnica válida para a Cifra de César e nem é tão trabalhosa, já que só precisa testar 25 combinações e muitas dessas podem ser descartadas na segunda letra. Por exemplo, se você achar um VZ nas duas primeiras letras, já sabe que não é uma palavra da língua portuguesa e pode passar para o próximo.

Contudo, isso não vai funcionar se a técnica utilizada for de substituição aleatória. Felizmente, existe uma técnica que pode ser utilizada em qualquer método de substituição de letras, que é analisar a frequência das letras e comparar com a frequência geral da letra na língua portuguesa.

Para isso, você precisa conhecer essa frequência, que é dada na seguinte tabela.

Letra %
A 14,63%
B 1,04%
C 3,88%
D 4,99%
E 12,57%
F 1,02%
G 1,30%
H 1,28%
I 6,18%
J 0,40%
K 0,02%
L 2,78%
M 4,74%
N 5,05%
O 10,73%
P 2,52%
Q 1,20%
R 6,53%
S 7,81%
T 4,34%
U 4,63%
V 1,67%
W 0,01%
X 0,21%
Y 0,01%
Z 0,47%

Usar esses percentuais pode ajudar a decifrar algumas das letras. Claro que você também precisa de um conhecimento básico da língua para saber, por exemplo, que duas letras seguidas tem grande chance de serem S ou R; que na maioria dos casos, uma consoante vai ser seguida de uma vogal ou de algumas consoantes especificas, como S, R, L ou N; ou ainda que depois de um Q virá um U.

Esse método, porém, tem limitações. Ele não funciona tão bem em mensagens curtas ou em mensagens que usem muito letras de aparição mais rara.

Seria muito difícil usar esse método, por exemplo, para decifrar:

Zuza zoou da Zezé.

Ou:

Xuxa exalta zebra na Zâmbia.

Outra forma de dificultar a quebra da criptografia mesmo em mensagens mais longas, como eu fiz na mensagem anterior, é não separar as letras ou mesmo separar em blocos aleatórios ou fixos de letras, não seguindo a separação das palavras da mensagem.

 

Desafio: decifre a mensagem

Nessa próxima mensagem, eu utilizei uma substituição aleatória de letras. Como vai ser mais difícil de decifrar que a outra, eu vou dar uma facilitada. Vou deixa tanto a pontuação quanto a separação correta das palavras.

Também prometo que não vou usar um monte de Z ou X na mensagem original. Além disso, todas as letras foram substituídas, ou seja, nenhuma letra corresponde a ela mesma, e não há diferença de acentuação ou sinal gráfico (“e”, “é” e “ê” são substituídas pela mesma letra, assim como “c” é substituído pela mesma letra que “ç”).

É uma mensagem padrão em língua portuguesa, tentando bater razoavelmente com a frequência de letras dada acima. Além disso, você pode usar as outras dicas que dei lá em cima.

Vamos à mensagem:

QGGX UQMGXZQU CTY UXYG AYCYJYD TO UXYG CXJYD BOQ X TOFWX? T UQFTAT AQ JWYIFTZWXCYX AQGGX CTY UXYG GQZOWT, UXG, XT UQGUT FQUIT, QO AQY XDZOUXG AYJXG, MQ? YMJDOGYKQ X AYJX BOQ QGFX XDY XVXYHT QMFWQZX OUX IXDXKWX. VTU, GQ KTJQ JTMGQZOYO, UXMAX X UQMGXZQU IXWX T MTGGT QUXYD Q KXUTG DQW QU XDZOUX DQYFOWX AQ QUXYDG COFOWX MT GJYJXGF.

E aí? Conseguiu? Se sim, faz o que eu pedi na mensagem. O endereço é [email protected]. Não dê spoiler nos comentários, hein?

Se vocês curtirem, pretendo fazer um segundo texto do tema, dessa vez usando criptografia com base em matrizes, que é um pouco mais segura.


Referência

COUTINHO, S. C. Criptografia. Programa de Iniciação Cinêntifica da OBMEP, 2007. v. 7.

Imagem de capa: Foto de cottonbro studio no Pexels: https://www.pexels.com/pt-br/foto/concentracao-atencao-foco-documento-7319080/. A imagem contém uma pessoa olhando para um texto cheio de símbolos com uma lupa enquanto toma notas em outro caderno.