CRIPTOGRAFIA
Resolvendo anagramas, e o que isso pode nos ensinar sobre criptografia
Neste artigo, vamos explorar a definição de anagramas, entender o que isso tem a ver com criptografia, e como esta funciona.
Resolvendo enigmas
Um dos meus desafios favoritos, de quando eu era mais novo, envolveu a resolução de enigmas. O desenvolvedor de um site estava oferecendo brindes e CD-keys — sim, originais, em parceria com a distribuidora — de um determinado jogo eletrônico àqueles que conseguissem passar por todas as fases. Haveria apenas 3 vencedores, e o maior prêmio, o CD-key — à época, o jogo era relativamente caro — era o mais cobiçado. A penúltima fase deste desafio, em especial, consistia em desvendar um código estranho que indicava o participante à última fase.
Assim, o primeiro que desvendasse a “palavra secreta” deveria inseri-la no formulário eletrônico que direcionava à próxima página, a qual continha as instruções para resgatar o prêmio. Para assegurar que quem chegasse primeiro não revelaria as instruções aos amigos que, eventualmente, estivessem competindo também, o desenvolvedor “embaralhou” a ordem de realização das atividades das fases anteriores — pense como a prova do Enem, em que o caderno de questões que você está respondendo não é igual ao do concorrente sentado ao seu lado.
Para sintetizar a história, aquela “palavra secreta” estava, na verdade, “embaralhada”, e para revelar a expressão original seria preciso testar as várias combinações de letras até que formássemos, ao menos, uma palavra conhecida: esta seria, portanto, a “senha” para próxima fase.
Esta técnica de substituição — ou, de “permutação”, para usar o termo técnico — dos elementos de um conjunto por outras que dá origem a uma nova palavra, é chamada “anagrama”.
Suponha que a palavra em questão fosse SER. Ao todo, podemos originar outras 5 expressões distintas: RES; RSE; ERS; ESR; e SRE. Porém, nenhuma dessas faz sentido na língua portuguesa, mas somente a expressão correta, que é a nossa palavra original.
Em termos matemáticos, calculamos a quantidade de expressões diferentes da original através da permutação da quantidade de caracteres, e depois subtraímos aquela que corresponde à expressão inicial, desta maneira:
3! - 1 = ( 3 x 2 x 1 ) - 1 = 5
Suponhamos, agora, que enviamos uma dessas expressões, por exemplo, o termo SRE, para alguém por e-mail. É provável que o destinatário entenda nossa mensagem, pois, mentalmente, este resolveu o nosso “anagrama”, ainda que despropositadamente, ignorando a estranheza da expressão, porque pensou se tratar de um erro de digitação. A mensagem neste caso, portanto, foi decodificada corretamente.
Desta vez, suponha que não apenas a palavra SER estivesse codificada, mas uma mensagem inteira. O receptor desta mensagem, muito provavelmente, não saberá decifrar o seu conteúdo se nenhuma das expressões contidas fizer sentido nem se encontrar no dicionário comum em seu idioma. Portanto, a menos que o destinatário tenha a “chave” para decodificar a mensagem, esta estará visível, porém “segura” da vista daqueles que não conhecem a chave.
É nisto que consiste a criptografia, a prática de codificar e decodificar dados e informações, para que possam ser transmitidas e “lidas” somente por aqueles que devidamente têm “a senha”, isto é, uma informação específica. Hodiernamente, dependemos desta técnica de segurança de dados para manter nossos dados à salvo de terceiros desautorizados e para prevenção de vazamentos de dados pessoais, incluindo informações bancárias, mensagens instantâneas, e-mails, arquivos e quaisquer outros documentos em meio físico ou eletrônico.
Do ponto de vista jurídico, contudo, a criptografia é um fenômeno polêmico: é interessante para o Direito, afinal, manter as informações dos titulares desses dados à salvo e protegidas de terceiros não autorizados; porém, em caso de investigações policiais e de trâmites judiciais, por exemplo, é necessário que haja uma “quebra” desta proteção, para atender aos fins e interesses da coletividade. É necessário, portanto, um “equilíbrio”, ou uma ponderação, nesses dois campos — mas isto é assunto para um outro artigo. Vamos voltar, então, à criptografia.
Criptografia básica
Um dos primeiros instrumentos de criptografia registrado foi a chamada Cifra de César, que consistia na troca de uma letra pela terceira letra seguinte do alfabeto. Neste caso, aplicando esta técnica, transformaríamos a palavra CACHORRO em FDFKRUUR, a qual, aparentemente, não faz sentido em nosso idioma nem sequer é encontrada em nosso dicionário.
A cifra, cujo nome foi atribuído em homenagem ao primeiro imperador romano, Júlio César, é considerada o primeiro esquema de cifras de substituição com registro, apesar de estudos demonstrarem a existência de métodos usados anteriormente, e foi utilizada para proteção de mensagens de cunho militar.
A Cifra de César, no entanto, é uma técnica pouco complexa e pode ser facilmente decodificada, caso substituídas as letras na ordem da chave correspondente. Por isso, não costuma, e nem deve, ser aplicada para a proteção de dados pessoais em bases de dados ou em páginas de internet que estejam acessíveis a qualquer pessoa, para evitar o risco de vazamento e exposição das informações protegidas.
💡 Para saber mais sobre a Crifa de César, recomendo esta vídeo-aula da Khan Academy.
Tecnologias modernas de criptografia e os supercomputadores
Além desta técnica, modernamente conhecemos uma série de combinações matemáticas que geram códigos únicos e têm menor risco de vazamento de dados. No entanto, porque se tratam de fórmulas matemáticas, ainda que de grande complexidade, existe um risco de ocorrer a descoberta de sua chave e, portanto, de se revelar a mensagem ou o documento que se encontra codificado. Por esta razão, os especialistas em criptografia afirmam que não há nenhum sistema 100% seguro, ou “inquebrável”, na verdade, o que pode ocorrer é que o processo de decodificação, e portanto da “quebra da criptografia”, se torne inviável na prática: algumas destas fórmulas, em teoria, levariam milhares de anos para serem quebradas.
Por exemplo, quanto às funções criptográficas SHA-1:
“Segundo os pesquisadores, um cálculo comum de “força bruta” levaria o equivalente a 12 milhões de anos com um único chip de processamento de vídeo, ou seja, um ano com 12 milhões de chips, ou seis meses com 24 milhões de processadores gráficos. Traduzindo: é inviável.”
— Altieres Rohr, em G1 Segurança Digital
Apesar de toda essa complexidade, há estudos nessa matéria que utilizam de determinados “artifícios”, ou de instrumentos como os chamados “supercomputadores”, para quebrar a criptografia em um intervalo de tempo relativamente inferior: um experimento da Google, realizado conjuntamente com pesquisadores do Instituto CWI de Amsterdã, realizado com 26 mil CPUs e 440 placas de vídeo (aproximadamente 6,5 mil anos de processamento de CPU e 110 anos de processamento de GPU), foi capaz de “quebrar” as fórmulas da tecnologia SHA-1 em seis meses.
💡 Desde 2011, a tecnologia “SHA-1” é considerada obsoleta, por recomendação oficial da agência estadunidense National Institute of Standards and Technology (NIST), e muitos dos navegadores de internet modernos exibem alertas ao acessar endereços de servidores que ainda a utilizam.
Por outro lado, outras tecnologias ainda podem ser consideradas seguras, porque não há estudos suficientes para que sejam considerarem obsoletas. Dentre as mais utilizadas no mercado hoje, são exemplos: outras funções da família de funções SHA que garantem maior segurança, como o SHA-256, o SHA-512, e o SHA-3 (de 2015), projetadas pela Agência de Segurança Nacional dos Estados Unidos da América, a NSA; o MD5; o AES 256; e o Twofish, que substituiu a tecnologia Blowfish.
E por que não utilizar a tecnologia mais complexa, e portanto, mais eficaz? A resposta está no “custo-benefício” desta implementação: porque utilizam de fórmulas matemáticas muito complexas, sempre que fosse necessário iniciar a sessão em uma página, salvar um arquivo, ou postar um comentário, o servidor precisaria confirmar as credenciais, e assim refazer todos os cálculos e procedimentos de codificar e decodificar os dados. Este processo requer tempo e resultaria em prejuízos à navegação e usabilidade do usuário no serviço. O ideal, portanto, é buscar aquela que melhor atenda às necessidades de desenvolvimento, capaz de produzir resultados com segurança e eficiência.
💡 A utilização desses algoritmos em aplicações requer atenção a problemas como a quantidade de caracteres, o tempo de busca de elementos na base de dados, além da verificação de integridade de arquivos muito grandes. Para os fins deste artigo, não abordaremos a implementação dessas tecnologias — trataremos disto no próximo artigo desta série, em que abordaremos, também, recursos como hash (digest), além da importância do código salt.
Escondendo e revelando segredos
Agora que compreendemos a relevância da criptografia, voltemos à questão principal: os anagramas.
Note que muitos dos estudos envolvendo criptografia iniciam com a ocultação de mensagens através da substituição de caracteres, como letras, números e símbolos especiais. Desde a Cifra de César, empregamos a criptografia para salvaguarda de senhas, documentos e outras informações pessoais. Por isso, senhas não devem, nunca, ser armazenadas em formato de “texto puro”.
Em termos legais, a legislação da maioria dos países prevê a segurança como um dos princípios que regulamentam as atividades de tratamento de dados pessoais. No caso do Brasil, a recém-implementada Lei Geral de Proteção de Dados (LGPD), inspirada na General Data Protection Regulation (GDPR), da União Europeia, assim define o que é segurança:
“segurança: utilização de medidas técnicas e administrativas aptas a proteger os dados pessoais de acessos não autorizados e de situações acidentais ou ilícitas de destruição, perda, alteração, comunicação ou difusão”
— art. 6º, VII, Lei nº 13.709, de 14 de agosto de 2018.
Esta preocupação, no entanto, não é recente.
Invisível no tempo das máquinas gigantes
Você provavelmente ouviu falar de Alan Turing: talvez em textos sobre Computação, por referências de outros autores, ou mesmo pelo sucesso do filme O jogo da imitação (de 2014, dirigido por Morten Tyldum).
Considerado por muitos “o pai da Computação”, ainda no tempo das “máquinas gigantes”, Alan Turing e um grupo composto por diversas equipes de cientistas, muitos deles matemáticos, construíram uma das mais de 200 máquinas Bombe, inspirados no trabalho do polonês Marian Rejewski.
💡 Apesar do blockbuster retratar a vida do matemático e cientista da computação, a máquina desenvolvida por Alan Turing e sua equipe não se chamava Christopher, e outras equipes trabalhavam em paralelo para decifrar os códigos da ENIGMA. Ainda assim, é inegável que os trabalhos e os escritos deixados pelo pai da Computação têm grande relevância, ainda hoje, no campo da Criptografia e, principalmente, da Computação.
Marian Rejewski foi selecionado para atuar no Cipher Bureau pelo Ministério da Defesa da Polônia (Polish Defense Ministry, em tradução livre do inglês), em outubro de 1932, onde iniciou os trabalhos para decodificar a tecnologia militar alemã utilizada na máquina ENIGMA. Usando de análises estatísticas não convencionais, ele descobriu as técnicas criptográficas da máquina, com o auxílio de dois de seus colegas, Jerzy Rózycki e Henryk Zygalski, e desenvolveu as máquinas Bombe, que posteriormente vieram a ser desenvolvidas pelos britânicos e usadas durante a Segunda Guerra Mundial para leitura das mensagens criptografadas pela ENIGMA.
💡 Marian Rejewski se tornou a primeira pessoa a empregar um ataque algébrico superior (higher-algebraic attack, em tradução livre do inglês) contra sistema criptográfico.
Apesar das diversas formas de criptografia, uma das “dicas” para se decodificar a tecnologia militar alemã ENIGMA foi, de fato, um anagrama: uma das expressões das mensagens, Union Jack, sugeriu que a linguagem utilizada era o inglês em “texto puro”, isto é, de forma não codificada; e que as únicas letras minúsculas usadas nesta expressão eram nieiw, um anagrama da palavra polonesa niewi, que significa invisível.
💡 Talvez você conheça as obras de José de Alencar, um dos mais influentes e famosos autores de livros do Brasil durante o século XIX, e sua obra “Iracema”, que conta a história do encontro entre uma índia, filha do pajé da tribo nativa dos “tabajaras”, e Martim, um aventureiro português e inimigo de seu povo, perdido nesta tribo. O nome da indígena, na verdade, é um anagrama para a palavra “América”: o autor “embaralhou” as letras para tratar do momento histórico que se encontrou o Brasil a partir do século XV.
Conclusão
Então, recapitulando: os anagramas têm sido um objeto central para o estudo da criptografia, e suas aplicações nos campos da Matemática e da Computação são quase infinitas.
O que pode surgir de um simples quebra-cabeças a ser resolvido para se descobrir uma mensagem secreta — ou para se obter um prêmio — também pode ser utilizado como base para proteção e salvaguarda de documentos sigilosos, senhas e outras informações pessoais, ainda hoje.
Desde a sua utilização pelo primeiro imperador romano para se comunicar com seus generais, os anagramas foram amplamente utilizados durante a Segunda Guerra Mundial para a troca de mensagens em sigilo, e deram origem às técnicas modernas de criptografia que são empregadas, hoje, para proteção e codificação de dados pessoais e de outras informações na internet e em outros meios que exigem a devida segurança da informação.
Próximas etapas 🚶
Criptografia e segurança da informação estão entre os assuntos do momento quando se trata de privacidade e proteção de dados. Se você gostaria de saber mais sobre esta temática, certifique-se de seguir esta série, pois continuaremos explorando este tema, em breve.
Se você tem alguma dúvida ou sugestão sobre esses assuntos, comente abaixo. 📣
Referências 🧩
[1] Victor Manuel Calhabrês Fiarresga et al. Criptografia e matemática. Universidade de Lisboa (Tese de Doutorado), 2010. http://hdl.handle.net/10451/3647.
[2] Com “cálculo de 6,5 mil anos”, Google quebra segurança da fórmula SHA-1. (2017, February 28). G1 Segurança Digital. http://g1.globo.com/tecnologia/blog/seguranca-digital/post/com-calculo-de-65-mil-anos-google-quebra-seguranca-da-formula-sha-1.html.
[3] Cesar Seragiotto. Criptografia baseada em Identidade. http://www.linux.ime.usp.br/~cef/mac499-04/monografias/rec/cesarse/monografia.html.
[4] Alan Turing e a Enigma. (2016, November 23). Horizontes. http://horizontes.sbc.org.br/index.php/2016/11/alan-turing-e-a-enigma/.
[5] National Security Agency Central Security Service. (n.d.). Marian Rejewski. (n.d.). https://www.nsa.gov/About-Us/Current-Leadership/Article-View/Article/1621548/marian-rejewski/.
[6] Poland’s Decisive Role in Cracking Enigma and Transforming the UK’s SIGINT Operations. (n.d.). Royal United Services Institute. Retrieved August 26, 2021, from https://rusi.org/explore-our-research/publications/commentary/polands-decisive-role-cracking-enigma-and-transforming-uks-sigint-operations/.
[7] Zukic, S. (2012, July 18). How to solve Wired’s Alan Turing cipher. WIRED UK. https://www.wired.co.uk/article/turing-cipher-solved.
[8] Prado, L. (2018, October 17). “Iracema” apresenta a origem mítica do povo brasileiro. Jornal da USP. https://jornal.usp.br/cultura/iracema-apresenta-a-origem-mitica-do-povo-brasileiro/.