Revista Do Linux  
EDIÇÃO DO MÊS
  A música da Internet
  Banco de Dados
  Bibliotecas
  CD do Mês
  Em modo texto
  Governador do Software Livre
  Grandes e Pequenos
  Linux no iMac
  Mensagem .doc
  Operação Resgate
  Periféricos Complicados
  Segurança

Introdução à criptografia

Tão antiga como a escrita, a criptografia vem evoluindo desde a invenção do computador, transformando-se em ferramenta imprescindível nesses tempos de Internet e correio eletrônico

Como a maioria dos leitores já deve estar ciente, pacotes com mensagens de correio eletrônico, entre outros, trafegam abertamente pela Internet - uma rede reconhecidamente insegura, como mostrado em edições anteriores - até atingirem seus respectivos destinos. Nesse percurso, um intruso pode facilmente interceptá-los e ler, ou até alterar seu conteúdo.

Casos ainda piores podem ocorrer quando senhas, números de cartão de crédito e outras informações confidenciais são transferidas pela rede. Como garantir que os dados em pacotes não serão modificados em trânsito? Como garantir que intrusos não serão capazes de obter as informações confidenciais que trafegam na rede? Como garantir que o autor de uma mensagem é quem realmente diz ser? Esses e outros problemas similares, em redes e canais de comunicação inseguros, podem ser resolvidos com o uso de criptografia, que será o nosso assunto nesta edição.

Criptografia, grosso modo, é a ciência ou a arte de cifrar e decifrar informações, mantendo-as em segredo e garantindo que somente as pessoas autorizadas terão acesso a elas. Com criptografia, podemos também criar mecanismos de autenticação com assinaturas digitais e métodos para a verificação de integridade dos dados, como veremos adiante.

A criptografia é tão antiga quanto a própria escrita. Existem evidências, por exemplo, de que os espartanos, na Grécia, já usavam mecanismos primitivos de codificação, que permitiam que mensagens secretas fossem trocadas para comunicar seus planos de guerra.

Júlio César, imperador romano, enviava mensagens aos generais trocando letras do alfabeto a partir da regra pule três: as letras eram substituídas pela terceira letra seguinte.

A tecnologia de criptografia não mudou muito até a Segunda Guerra Mundial. Com a invenção do computador, a área floresceu rapidamente. Aliás, muitos acreditam que o computador digital moderno é uma criação da criptografia, pois algumas das primeiras máquinas digitais foram construídas pelos aliados para quebrar mensagens militares que tinham sido cifradas pelos alemães, durante a guerra.

A ciência de quebrar códigos e decifrar a informação sem conhecer a chave utilizada é conhecida como criptoanálise. A criptologia é a união da criptografia com a criptoanálise. Algumas técnicas de criptoanálise usadas também serão abordadas neste artigo.

O crescimento da Internet e o advento do comércio eletrônico têm exigido a criação de novos protocolos e serviços usando técnicas de criptografia, para eliminar algumas das vulnerabilidades existentes na suíte de protocolos TCP/IP.

Este artigo tem por objetivo fazer uma introdução geral sobre os aspectos básicos de criptografia sem, no entanto, entrar em maiores detalhes da teoria matemática envolvida.

Criptografia simétrica ou de chave secreta

Apesar da evolução do campo da criptografia, com a utilização do computador, seus princípios fundamentais permaneceram os mesmos. Em sistemas simétricos ou de chave secreta, a mesma chave (o segredo, como nos tempos antigos) é usada para cifrar e decifrar a informação. Esse método funciona muito bem em aplicações limitadas, como as militares, em que o emissor e o receptor podem se preparar antecipadamente para trocar a chave ou quando um usuário paranóico deseja criptografar dados valiosos em seu computador usando programas como o PGP, que existe para Linux.

Infelizmente, em geral esse método não funciona muito bem, pois trocar chaves secretas com todos com quem deseja se comunicar pode ser inviável em alguns sistemas. Além disso, essas chaves secretas têm que ser diferentes para garantir a confidencialidade da comunicação com cada pessoa. Obviamente, esse não é o sistema ideal para transações comerciais na Internet. Exemplos de algoritmos nesse sistema: o DES (Data Encryption Standard) e o IDEA (Internacional Data Encryption Standard).

Criptografia com chave assimétrica ou chave pública

Uma grande mudança nos conceitos fundamentais da área ocorreu na década de 70, com a invenção do sistema assimétrico ou de chave pública. Nesse sistema, uma chave é usada para cifrar a mensagem e uma outra é usada para decifrá-la.

Em um sistema de chave pública, cada pessoa tem duas chaves: uma pública e uma privada. As mensagens criptografadas com uma chave só podem ser decifradas com a outra correspondente. Portanto, qualquer mensagem cifrada com a chave privada somente pode ser decifrada com a chave pública e vice-versa. Como os nomes sugerem, normalmente a chave pública é livremente distribuída, e a chave privada é mantida em segredo. Exemplos importantes de algoritmos desse sistema são o RSA (este nome foi inspirado em seus três desenvolvedores, RonRivest, Adi Shamir e Leonard Adleman) e o algoritmo de Diffie e Hellman.

Vamos ver como a criptografia de chave pública funciona. Se Marcelo e Franklin quiserem se comunicar usando criptografia assimétrica, eles terão de gerar inicialmente os seus respectivos pares de chaves. Depois de gerada a chave privada e a chave pública, Marcelo torna disponível, de alguma maneira, sua chave pública para Franklin, que por sua vez também fará o mesmo com a própria chave pública. Quando Franklin quiser enviar uma mensagem secreta para o Marcelo, ele criptografa a mensagem, usando a chave pública do Marcelo. Dessa forma, somente o Marcelo será capaz de ler a mensagem, uma vez que a mensagem somente pode ser decifrada com a chave privada, que é conhecida só por ele.

É importante enfatizar, portanto, que o sigilo da chave privada é fundamental para o sucesso desse sistema. Em alguns programas, como o PGP (usa RSA), que usam criptografia assimétrica, essa chave fica armazenada no computador, protegida por uma senha conhecida somente pelo usuário.

Assinatura digital

Ter duas chaves separadas proporciona outro benefício: a assinatura digital. Se alguém envia uma mensagem criptografada com a sua chave privada, obviamente todos aqueles que conhecem a sua chave pública poderão ler a mensagem e, logo, concluirão que a mensagem foi criptografada usando a chave privada do usuário, que é conhecida apenas pelo dono da chave pública. Dessa forma, todos teriam certeza de que somente o dono da chave privada poderia ter enviado a mensagem, pois ele é o único que poderia criar mensagens criptografadas que pudessem ser lidas com sua chave pública.

Voltando ao exemplo, se o Marcelo quisesse enviar uma mensagem assinada digitalmente e secreta para o Franklin, ele combinaria os dois processos: primeiro, usaria a própria chave privada para criptografar a mensagem (assinaria a mensagem), em seguida usaria a chave pública do Franklin para cifrar a mensagem assinada. Ao receber a mensagem, o Franklin primeiramente usaria sua chave privada para obter a mensagem assinada, como anteriormente. A seguir, ele usaria a chave pública do Marcelo, para obter a mensagem e verificar que ela realmente foi enviada pelo Marcelo.

Combinação de algoritmos criptográficos

Uma grande desvantagem da criptografia de chave pública é que ela é computacionalmente intensiva. Portanto, gasta-se muito tempo no processo de cifragem e decifragem e isso é inaceitável para algumas aplicações. Protocolos que estabelecem canais seguros de comunicação, como o IPsec por exemplo, devem fazer esse processo em tempo real na porção de dados em cada pacote transmitido. A solução para esse problema é combinar a criptografia simétrica ou de chave secreta para criptografar a mensagem e a criptografia assimétrica para criptografar a chave secreta (simétrica), que foi usada para criptografar a mensagem. O tempo para cifrar a chave simétrica com criptografia assimétrica é bem menor que o tempo levado para cifrar toda a mensagem. Por outro lado, algoritmos simétricos podem cifrar grandes blocos de dados rapidamente.

Message digest ou hash

Muitas vezes, quando estamos carregando certos programas na Internet, notamos também a existência de uma assinatura digital para cada um dos programas no site. Com isso, podemos verificar a integridade desse arquivo, ou seja, que ele não teve seu código alterado. Isso nos garante, por exemplo, que o programa não é um cavalo de Tróia. Essa assinatura é o checksum calculado, usando algoritmos de message digest ou hash para esse programa.

Message digest é uma função que obtém uma mensagem como entrada e produz um código de tamanho fixo como saída. Cada mensagem, usada como entrada, deverá produzir facilmente um message digest específico. Existem muitos algoritmos de messages digest, mas para que sejam criptograficamente seguros, eles deverão exibir algumas propriedades:

A função deve ser sem retorno, ou seja, deve ser difícil ou impossível determinar a mensagem que produziu uma determinada saída. Isso impedirá que alguém substitua uma mensagem por outra que tenha o mesmo message digest;

A modificação em um único bit da mensagem deve gerar um message digest completamente aleatório;

O message digest deve ser exclusivo, de modo que a existência de duas mensagens com o mesmo message digest seja muito difícil ou impossível. Existem vários algoritmos de message digests que exibem essas propriedades. Os mais utilizados são o MD5 (Message Digest 5) e o SHA (Secure Hash Algorithm).

Criptoanálise

A força de um sistema criptográfico depende de vários fatores: dificuldade de adivinhar a chave (o uso de chaves maiores são mais difíceis de adivinhar, mas podem tornar o processo mais lento), dificuldade de subverter o algoritmo de cifragem, dificuldade de se quebrar o código mesmo já conhecendo a mensagem cifrada, entre outros. Sistemas criptográficos são sujeitos a ataques. Vamos conhecer agora alguns desses ataques:

Ataque de força bruta: bastante fácil de implementar, é aquele em que o atacante procura descobrir a senha usada na cifragem de uma mensagem tentando todas as chaves possíveis. Portanto, quanto maior a chave, mais difícil que esse ataque seja bem-sucedido;

Ataque de cortar e colar (cut-and-paste): um atacante pode usar mensagens cifradas com uma mesma chave para combinar porções e gerar uma nova mensagem;

Ataque do texto claro conhecido (known-plaintext): o atacante conhece pares de textos claros e cifrados com uma mesma chave. Esse ataque é particularmente facilitado pela natureza repetitiva e bem definida dos cabeçalhos dos protocolos de comunicação;

Ataque do texto claro escolhido: o criptoanalista engana o inimigo, forçando-o a cifrar com a própria chave secreta alguma mensagem escolhida pelo criptoanalista.

Estenografia

Uma outra forma interessante e desconhecida de codificar uma mensagem, que está fora do escopo da criptografia, é usar a estenografia, uma técnica de esconder informação dentro de informação. Confuso? Um exemplo é codificar um arquivo texto dentro de uma imagem do formato GIF. Para algum intruso grampeando o canal de comunicação, a informação interceptada nada mais seria que uma imagem GIF. Nesse caso, o receptor deve conhecer o uso da técnica pelo transmissor e utilizar um leitor apropriado para visualizar a mensagem.

Vale ressaltar ainda que um intruso pode obter a mensagem se conhecer a técnica e souber que ela está sendo usada. Não há, portanto, nenhuma cifragem de dados usando técnicas de criptografia.

Criptografia e Linux

O Linux apresenta uma série de ferramentas que utilizam essas técnicas de criptografia mostradas anteriormente e que podem ser utilizadas para incrementar a segurança do sistema ou do canal de comunicação. Alguns exemplos famosos são o Tripwire (verifica a integridade do sistema de arquivos), o PGP (permite usar as vantagens da criptografia assimétrica, como assinaturas digitais, em mensagens de correio eletrônico, entre outras coisas), CFS e o TCFS (significam, respectivamente, Cryptographic File System e Transparent Cryptographic File System. Essas ferramentas criptografam todo sistema de arquivos), SSH (Secure Shell. Permite o uso do shell remotamente, através de um canal seguro).

Conclusão

Vimos que a criptografia pode prover um ambiente bastante seguro, mas não deve ser encarada como a solução em segurança. Ela deve ser adicionada a outras tecnologias, como firewalls, para prover ambientes computacionais mais seguros. Além disso, à medida que o poder computacional cresce, alguns algoritmos e tamanhos de chaves tornam-se vulneráveis a ataques de força bruta. Um bom exemplo disso é o DES. Há alguns anos, mostrou-se que com um milhão de dólares seria possível construir uma máquina capaz de decifrar códigos cifrados com o DES.

Em julho de 1998, um hardware mais barato foi apresentado pela Eletronic Frontier Foundation, que realizava o mesmo trabalho de quebrar o DES. Não demorará muito para que uma máquina possa executar algum software com o mesmo sucesso.

Vale ressaltar que alguns países, notadamente EUA e Israel, tratam criptografia como assunto de segurança nacional.

 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade