Introdução a criptografia
Este artigo não descreve algoritmos de criptografia nem ensina a quebrá-los. Trata-se de uma introdução. Se você não sabe a diferença entre chave e senha, ou entre algoritmos simétricos e assimétricos, se não sabe o que é o ataque de força bruta e quantos bits precisa ter para ser seguro, então este artigo poderá lhe ser útil.
Introdução
O desejo de enviar mensagens de forma segura sem que ninguém mais, a não ser o destinatário, consiga ler, é tão antigo quanto a invenção da escrita. Em guerras primitivas tem-se relato de generais que raspavam a cabeça de um escravo e sobre a cabeça escreviam mensagens secretas de guerra. Após o cabelo crescer, o emissário era enviado (esta técnica de esconder mensagens é chamada de esteganografia e sua versão moderna consiste em esconder mensagens em imagens ou músicas).
Basicamente existem duas formas primárias de obscurecer uma mensagem (criptografar), que pode ser pelo uso de substituição ou transposição. Na substituição troca-se alguma coisa por outra, de acordo com algum critério. Os passatempos encontrados em bancas de revistas exploram a substituição, onde o leitor é levado a descobrir que onde tem triângulo deve ser considerado a letra "A", por exemplo.
Já na transposição apenas troca-se as coisas de lugar. Usando transposição simples, pode-se escrever a palavra "teste" como "ettse", transpondo uma letra com a sua vizinha.
O método matemático de substituição para inviabilizar a leitura mais antigo que se tem registro é a cifra de César. Elaborada por Júlio César, esta cifra inaugurou as chamadas cifras de substituição monoalfabéticas.
Na infantil Cifra de César, cada letra do alfabeto é substituída pela sua terceira vizinha, ou seja, o "A" é transformado em "D", em um alfabeto circular, onde o "Z" vira "C" (...VWXYZABC...), conforme ilustrado na figura. Nota-se aí a existência de duas operações distintas:
a) cifrar: para cifrar uma mensagem, deve-se substituir cada letra pela terceira vizinha subsequente. Em C usando string isto poderia ser feito com:
No entanto, um programador experiente verá erro na fórmula acima: ela só funciona até o "W" que somado com 3 virará "Z". Para as letras "X", "Y" e "Z" a fórmula é falha! Aí entraria em ação a operação de módulo, muito utilizada em criptografia (fica como dever de casa).
b) decifrar: já para recuperar a mensagem outro método matemático precisa ser usado. Ao invés de trocar pela terceira subsequente, deve-se trocar pela terceira anterior ("D" deve virar "A"). Percebe-se nitidamente duas operações distintas para cifrar ou decifrar.
Uma variação interessante da cifra de césar é a Rot13, onde se troca pela décima terceira vizinha. Ela é interessante pois como o alfabeto tem exatos 26 letras, o processo de cifrar e decifrar é o mesmo! Para cifrar basta achar a vizinha 13 subsequente e para decifrar também (a vizinha de "A" é "M" e a vizinha de "M" é o "A").
Ninguém irá cifrar nada sério usando César. Serve apenas como fundamento didático para explicar alguns conceitos, como o de chave, por exemplo.
Basicamente existem duas formas primárias de obscurecer uma mensagem (criptografar), que pode ser pelo uso de substituição ou transposição. Na substituição troca-se alguma coisa por outra, de acordo com algum critério. Os passatempos encontrados em bancas de revistas exploram a substituição, onde o leitor é levado a descobrir que onde tem triângulo deve ser considerado a letra "A", por exemplo.
Já na transposição apenas troca-se as coisas de lugar. Usando transposição simples, pode-se escrever a palavra "teste" como "ettse", transpondo uma letra com a sua vizinha.
O método matemático de substituição para inviabilizar a leitura mais antigo que se tem registro é a cifra de César. Elaborada por Júlio César, esta cifra inaugurou as chamadas cifras de substituição monoalfabéticas.
Na infantil Cifra de César, cada letra do alfabeto é substituída pela sua terceira vizinha, ou seja, o "A" é transformado em "D", em um alfabeto circular, onde o "Z" vira "C" (...VWXYZABC...), conforme ilustrado na figura. Nota-se aí a existência de duas operações distintas:
a) cifrar: para cifrar uma mensagem, deve-se substituir cada letra pela terceira vizinha subsequente. Em C usando string isto poderia ser feito com:
strCIF[i] = strTXT[i] + 3;
No entanto, um programador experiente verá erro na fórmula acima: ela só funciona até o "W" que somado com 3 virará "Z". Para as letras "X", "Y" e "Z" a fórmula é falha! Aí entraria em ação a operação de módulo, muito utilizada em criptografia (fica como dever de casa).
b) decifrar: já para recuperar a mensagem outro método matemático precisa ser usado. Ao invés de trocar pela terceira subsequente, deve-se trocar pela terceira anterior ("D" deve virar "A"). Percebe-se nitidamente duas operações distintas para cifrar ou decifrar.
Uma variação interessante da cifra de césar é a Rot13, onde se troca pela décima terceira vizinha. Ela é interessante pois como o alfabeto tem exatos 26 letras, o processo de cifrar e decifrar é o mesmo! Para cifrar basta achar a vizinha 13 subsequente e para decifrar também (a vizinha de "A" é "M" e a vizinha de "M" é o "A").
Ninguém irá cifrar nada sério usando César. Serve apenas como fundamento didático para explicar alguns conceitos, como o de chave, por exemplo.
http://www.vivaolinux.com.br/artigo/Criptografia-chave-simetrica-de-bloco-e-de-fluxo