Criptografia - parte 1
A algumas semanas escrevi um pouco sobre esteganografia, e fiz até uma implementação simples para entendermos melhor como funciona. Neste artigo vamos falar um pouco sobre a criptografia, uma linha de estudo que tenta, ao invés de esconder, modificar uma mensagem ou informação a ponto de que só possa ser decodificada por alguém que tenha uma chave para isso.
Neste artigo vou buscar trazer um contexto histórico de como a criptografia evoluiu deste sua criação, me baseando no livro The Code Book: How to make it, break it, hack it, crack it do Simon Singh. Serão apenas apresentados tipos de codificação para mensagens textuais, mas os mesmo podem ser adaptados também para outros tipos de informações.
Introdução
A ideia básica da criptografia é converter uma informação em outra usando alguma chave que pode ser utilizada para decodificá-la novamente para a mensagem original. Isso pode ser feito de duas formas: transposição
, que seria mudar a posição dos caracteres de uma mensagem, e substituição
, que seria trocar os caracteres ou conjuntos de caracteres por outro caractere ou símbolo.
Criptografia por transposição
Como um exemplo de criptografia por transposição, podemos utilizar uma regra para criptografar uma mensagem em que os caracteres ímpares de uma mensagem sempre trocarão de posição com o caractere a sua direita. Neste caso a palavra criptografia
ficaria rcpiotrgfaai
. Você pode experimentar com outras palavras abaixo:
Outro exemplo de criptografia por transposição é utilizando a cifra cerca de trilho
, em que os caracteres de algumas colunas descem para a linha seguinte, formando uma nova sequência. No exemplo abaixo, alteramos a linha dos caracteres em posição par, fazendo com que a palavra criptografia
seja codificada para citgairporfa
. Neste exemplo você também pode experimentar com outras palavras:
Também conseguimos encontrar na história algumas outras formas de criptografias por transposição utilizadas para conseguir enviar mensagens secretas. Uma delas é a cítala, utilizada pelos espartanos. Esta ferramenta consistia num bastão em que uma tira de couro ou papíro era enrolada e então a mensagem é escrita. Ao desenrolar a tira, a mensagem fica irreconhecível, e só é possível lê-la novamente enrolando-a em um bastão de mesma espessura. Ao utilizar bastões de espessuras diferentes a mensagem acaba não representando o mesmo da original. A imagem abaixo mostra um exemplo de cítala espartana.
A criptografia por transposição sozinha não é considerada muito eficiente, já que verificando a frequência de caracteres acaba sendo muito fácil de decodificá-la. Ela se torna útil quando utilizada em conjunto com alguma técnica de substituição, criando uma nova camada que dificulta a quebra da codificação.
Criptografia por substituição
Outra forma de criptografia é por substituição, onde cada caractere ou palavra de uma mensagem é substituído por outro, criando desta forma uma mensagem quase inilegível. Esse tipo de criptografia também é bastante
r na cultura pop, aparecendo, por exemplo, em contos de Arthur Conan Doyle e Edgar Allan Poe. Os tipos de codificação apresentados aqui podem parecer simples de decodificar hoje em dia, mas foram bastante utilizados na história da humanidade quando computadores ainda não faziam parte de nossas vidas.
Substituição de palavras
Uma forma simples de codificação de mensagens e a substituição de palavras ou conjunto de palavras por algum outro símbolo. Esse tipo de codificação pode não utilizar nenhuma regra lógica, sendo assim bastante difícil de decodificá-la, sendo só possível por quem possui um dicionário que indica o significado de cada símbolo.
1 | assassinar → D general → ∑ imediatamente → 08 |
Usando esta cifra, a mensagem assassinar o rei nesta noite
ficaria simplesmente D-Ω-28
.
Como esse tipo de cifra é se baseia em substituir palavras, ele pode acabar se tornando extremamente grande quando se trata em criar símbolo para muitas palavras, tornando difícil de decorá-lo. Abaixo temos um exemplo desse tipo de cifra.
Substituição de letras
A criptografia por substituição de letras, por sua vez, trás formas de substituirmos cada caractere de uma informação por outro seguindo alguma regra lógica. Desta forma, somente quem conhece a regra utilizada conseguiria, em teoria, decodificar a mensagem original.
Um exemplo clássico deste tipo de criptografia é incrementando a posição da letra no alfabeto utilizando um fator de incrementação, buscando alguma outra letra na sequência. Por exemplo, se escolhermos o fator de incrementação 5
a letra a
(número 1
do alfabeto) seria substituída pela letra f
(número 5
do alfabeto). Isso seria feito para todas as letras da mensagem. A palavra criptografia
seria criptografada para hwnuytlwfknf
ao utilizar o fator de incrementação 5
. Você pode testar com outras palavras abaixo:
Este tipo de cifra é conhecido como cifra de César, por ter sido utilizada no passado pelo imperador Julio César. Uma forma semelhante de utilizar essa cifra é, ao invés de utilizar um fator de incrementação, escolher uma chave textual. Com isso, basta remover as letras duplicadas dessa chave e adicionar as letras faltantes ao final, continuando da última letra da chave. Este novo alfabeto substituiria o nosso alfabeto regular.
Por exemplo, se escolhermos para a cifra a chave Julius Caesar
, primeiramente removemos as letras duplicadas, restando JulisCaer
. Após isso adicionamos as letras faltantes do alfabeto continuando a partir da última da cifra. Nosso novo alfabeto ficaria juliscaertvwxyzbdfghkmnopq
. Ao criptografar a mensagem desejada, substituiríamos as letras de acordo com a posição no alfabeto, ou seja, a letra a
seria substituída por j
e a b
por u
. As substituições completas podem ser vistas abaixo:
1 | 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 |
Utilizando a chave Julius Caesar
, conseguimos criptografar a palavra criptografia
para lfrbhzafjcrj
.
Por mais que essa forma de criptografar mensagens seja mais difícil de quebrar do que criptografias por transposição, ainda são fracas, já que conseguimos utilizar técnicas de frequência para decrifrar a mensagem.
Cultura pop
Técnicas de criptografia também são comumente utilizadas em histórias de detetives e investigações. Uma das histórias mais famosas a apresentar mensagens criptografadas é Os dançarinos
, uma das histórias do Sherlock Holmes escrita por Arthur Connan Doyle. Nesta história o detetive se depara com mensagens com bonecos palitos em diversas posições.
No decorrer da história ele descobre que cada boneco representa uma letra do alfabeto, e com base na frequência em que cada boneco aparece nas mensagens ele consegue descobrir qual o símbolo para cada letra. Na imagem acima você consegue verificar uma exemplificação de como as letras são representadas por bonecos nessa história.
Edgar Allan Poe também era fascinado por quebrar códigos. Uma de suas histórias, O escaravelho de ouro
, envolve um texto criptografado que descreve o caminho para encontrar um tesouro perdido. O texto apresenta também uma mensagem em que os caracteres são substituídos por números e símbolos. A mensagem completa pode ser vista abaixo.
1 | 53‡‡†305))6*;4826)4‡.)4‡);80 |
Neste caso, o personagem da história também utiliza a identificação de frequência dos símbolos para descobrir qual letra cada símbolo representa.
1 | a 5 (12) |
Conclusão
As formas de criptografia apresentadas nesse artigo podem parecer simples, mas serviram de alguma forma para chegarmos ao que temos hoje. Essas técnicas também podem não ser muito eficientes se utilizadas sozinhas, mas quando juntas acabam aumentando a dificuldade da mensagem ser decodificada por quem não sabe as chaves de decodificação.
¹Vale ²ressaltar ³também ⁴que ⁵hoje ⁶diversas ⁷outras ⁸formas ⁹de ¹⁰codificação ¹¹são ¹²utilizadas ¹³em ¹⁴jogos ¹⁵e ¹⁶brincadeiras. ¹⁷Uma ¹⁸delas ¹⁹é ²⁰adicionar ²¹um ²²número ²³na ²⁴frente ²⁵de ²⁶cada ²⁷palavra ²⁸em ²⁹um ³⁰texto. ³¹Esses ³²números ³³podem ³⁴ser ³⁵utilizados ³⁶posteriormente ³⁷onde ³⁸cada ³⁹número ⁴⁰representa ⁴¹a ⁴²primeira ⁴³letra ⁴⁴de ⁴⁵cada ⁴⁶palavra.
Outra codificação que ficou muito famosa é a chamada codificação maçonica, ou codificação jogo da velha, em que cada letra é apresentada dentro de um jogo da velha com ou sem pontos, e ao criar uma mensagem codificada, as letras são substituídas pala parte do jogo da velha em que ela fica.
E por fim temos também a codificação onde as letras são marcadas com um ṗonto embȧixo ou em cima, maṛcȧndo quais letras representam a mensagem original. Essa por sua vez é ḅastante simplẹs e qualquer um coṅṣegue notar algo de diferente, mesmo quando não está buscando a mensagem secreta, já que um ponto estranho pode ser ṿistọ em um texto aparentemente normal.
Essas são apenas algumas téċnicas simplės para esconḍẹr mensagens que serviram de base para ċịḟras mais complexas, como a de Vigenère, a máquina Enigma
, utilizada na segunda gueṙra mundial, e até mesmȯ os algoritmos de hash ụtilizado por computadores hoje em dia.