Criptografia Numaboa
Sistemas de Código
Qui 16 Nov 2006 20:46 |
- Detalhes
- Categoria: Códigos
- Atualização: Quarta, 15 Abril 2009 17:11
- Autor: vovó Vicki
- Acessos: 25908
Um código é essencialmente uma linguagem secreta inventada para esconder o sentido de uma mensagem. Você já deve ter ouvido, em algum filme, uma frase do gênero "ÁGUIA 3, AQUI É ÁGUIA 2. O LEÃO ESTÁ NA JAULA".
Nesta frase, por exemplo, o agente "ÁGUIA 2" usa palavras-código para avisar o agente "ÁGUIA 3" que o espionado (LEÃO) entrou em casa (JAULA). Na prática, códigos de espionagem ou códigos militares são chamados de números-código ao invés de palavras-código. Normalmente são utilizados livros de código que fornecem um dicionário de números-código e suas respectivas palavras. Por exemplo, a mensagem acima poderia ser codificada como: "85772 24799 10090 59980", onde "85772" significa ÁGUIA 3, "24799" significa ÁGUIA 2, "10090" significa LEÃO e "59980" significa JAULA. O conjunto de palavras-código e números-código é denominado de Grupos de Código (59980 - JAULA). As palavras que representam são chamadas de texto claro (CASA, RESIDÊNCIA).
Originalmente, os grupos de código estavam na mesma ordem que as suas respectivas palavras claras. Por exemplo, uma palavra iniciada por "a" teria um número de código baixo e uma palavra iniciada por "z" teria um número de código alto. Isto permitia que o mesmo livro de código fosse utilizado tanto para codificar quanto para decodificar uma mensagem.
Entretanto, estes códigos de "uma-parte" eram muito previsíveis e permitiam que leitores indesejados descobrissem o padrão e "crackeassem" ou quebrassem a mensagem, revelando seus segredos. Para tornar as coisas mais difíceis para os "quebradores", os "fazedores" criaram códigos onde a relação entre os grupos de código e as palavras claras não é previsível.
Isto significa que são necessários dois livros de código, um para localizar o texto claro e achar os grupos de código correspondentes (codificar) e outro para localizar os grupos de código e encontrar o texto claro correspondente (decodificar). Estes códigos de "duas-partes" são mais difíceis de criar e usar, porém são muito mais difíceis de serem quebrados.
Como quebrar um código
Resolver uma cifra de substituição monoalfabética é fácil. Resolver um código, mesmo o mais simples, é difícil. Decifrar uma mensagem codificada é um tanto parecido com a tradução de um documento em língua estrangeira, onde a tarefa básica é construir um "dicionário" dos grupos de código com as palavras claras que eles representam.
Uma das características de um código simples é o fato de que algumas palavras são mais frequentes do que outras, como "de" e "um" ou "uma". Em mensagens telegráficas, o grupo de código para PONTO (fim de uma sentença) geralmente também é comum. Isto ajuda a definir a estrutura de uma mensagem em termos de sentenças, e até do seu sentido.
O que também ajuda a quebrar um código é juntar muitas mensagens codificadas com o mesmo código e depois obter evidências como: local de onde foram enviadas e para onde foram enviadas; hora em que foram enviadas; eventos que ocorreram antes e após as mensagens terem sido enviadas e os hábitos das pessoas que enviaram as mensagens codificadas.
Por exemplo, um grupo de código em particular, enviado quase que exclusivamente em mensagens de um exército em particular, pode muito bem indicar o comandante deste exército. Um grupo de código que aparece em mensagens que precederam um ataque numa localidade específica pode muito bem significar esta localidade.
Além disto, vários truques podem ser usados para "plantar" informações. Um dos mais conhecidos é enviar mensagens falsas que se referem a um ataque contra o inimigo, informando uma determinada hora e um determinado lugar, e depois examinar mensagens codificadas enviadas pelos inimigos como reação ao falso ataque.
Erros de codificação são especialmente úteis e, é claro, mais cedo ou mais tarde, pessoas costumam fazer erros. Existem inúmeros exemplos de erros verdadeiramente desastrosos.
O modo mais óbvio para se quebrar um código é tentar obter o livro de códigos através de suborno, roubo ou invasão. Esta é a fraqueza dos códigos. Um bom código pode ser mais difícil de quebrar do que uma cifra de substituição, mas a elaboração, a distribuição e a manutenção do sigilo dos livros de código são as grandes deficiências deste sistema.
Como implementar um código
Preparar um código novo é como construir um novo idioma. Elaborar um dicionário para o novo código representa muito trabalho e muito tempo. Se um código for comprometido, toda a tarefa precisa ser refeita - o que significa muito trabalho para os codificadores e os usuários do código. Na prática, depois de algum tempo de uso, os códigos são alterados para frustrar os quebradores de códigos e esta reciclagem representa sempre muito tempo e trabalho.
Uma vez tendo sido criados, a distribuição dos códigos é complicada e pode facilmente comprometê-los. Costuma-se dizer que duas pessoas podem guardar um segredo se uma delas estiver morta. Pode ser exagero, mas o fato é que um segredo é mais difícil de ser mantido se muitas pessoas tiverem conhecimento dele. Se apenas algumas poucas pessoas fizerem uso de um código, este está razoavelmente seguro mas, se exércitos inteiros fazem uso do mesmo código, a dificuldade de mantê-lo seguro é muito grande.
Fontes
Introduction To Codes, Ciphers, & Codebreaking de Greg Goebel