Criptografia

Introdução

O envio e o recebimento de informações sigilosas é uma necessidade antiga, que existe há centenas de anos. Com o surgimento da internet e de sua consequente facilidade de transmitir dados de maneira precisa e extremamente rápida, a criptografia tornou-se uma ferramenta fundamental para permitir que apenas o emissor e o receptor tenham acesso livre à informação trabalhada. Este artigo tem como objetivo fazer uma abordagem introdutória à criptografia, mostrando os aspectos e conceitos mais importantes. Vamos lá?


O que é criptografia?

O termo criptografia surgiu da fusão das palavras gregas "kryptós" e "gráphein", que significam "oculto" e "escrever", respectivamente. Trata-se de um conjunto de conceitos e técnicas que visa codificar uma informação de forma que somente o emissor e o receptor possam acessá-la, evitando que um intruso consiga interpretá-la. Para isso, uma série de técnicas são usadas e muitas outras surgem com o passar do tempo.

Na computação, as técnicas mais conhecidas envolvem o conceito de chaves, as chamadas chaves criptográficas. Trata-se de um conjunto de bits baseado em um determinado algoritmo capaz de codificar e de decodificar informações. Se o receptor da mensagem usar uma chave incompatível com a chave do emissor, não conseguirá extrair a informação.

Ilustração sobre criptografia

Os primeiros métodos criptográficos existentes usavam apenas um algoritmo de codificação. Assim, bastava que o receptor da informação conhecesse esse algoritmo para poder extraí-la. No entanto, se um intruso tivesse posse desse algoritmo, também poderia efetuar um processo de decifragem, caso capturasse os dados criptografados. Há ainda outro problema: imagine que a pessoa A tivesse que enviar uma informação criptografada à pessoa B. Esta última teria que conhecer o algoritmo usado. Imagine agora que uma pessoa C também precisasse receber uma informação da pessoa A, porém a pessoa C não poderia descobrir qual é a informação a ser enviada à pessoa B. Se a pessoa C capturasse a informação enviada à pessoa B, também conseguiria decifrá-la, pois quando a pessoa A enviou sua informação, a pessoa C também teve que conhecer o algoritmo usado. Para a pessoa A evitar esse problema, a única solução seria utilizar um algoritmo diferente para cada receptor.

Com o uso de chaves, um emissor pode usar o mesmo algoritmo (o mesmo método) para vários receptores. Basta que cada um receba uma chave diferente. Além disso, caso um receptor perca ou exponha determinada chave, é possível trocá-la, mantendo-se o mesmo algoritmo.

Você já deve ter ouvido falar de chave de 64 bits, chave de 128 bits e assim por diante. Esses valores expressam o tamanho de uma determinada chave. Quanto mais bits forem utilizados, mais segura será a criptografia. Explica-se: caso um algoritmo use chaves de 8 bits, por exemplo, apenas 256 chaves poderão ser usadas na decodificação, pois 2 elevado a 8 é 256. Isso deixa claro que 8 bits é inseguro, pois até uma pessoa é capaz de gerar as 256 combinações (embora demore), imagine então um computador! Porém, se forem usados 128 ou mais bits para chaves (faça 2 elevado a 128 para ver o que acontece), teremos uma quantidade extremamente grande de combinações, deixando a informação criptografada bem mais segura.


Chaves simétricas e assimétricas

Há dois tipos de chaves criptográficas: chaves simétricas e chaves assimétricas. Ambas são abordadas a seguir:


Chave simétrica

Esse é um tipo de chave mais simples, onde o emissor e o receptor fazem uso da mesma chave, isto é, uma única chave é usada na codificação e na decodificação da informação. Existem vários algoritmos que usam chaves simétricas, como o DES, o IDEA, e o RC:

- DES (Data Encryption Standard): criado pela IBM em 1977, faz uso de chaves de 56 bits. Isso corresponde a 72 quatrilhões de combinações. É um valor absurdamente alto, mas não para um computador potente. Em 1997, esse algoritmo foi quebrado por técnicas de "força bruta" (tentativa e erro) em um desafio promovido na internet;

- IDEA (International Data Encryption Algorithm): criado em 1991 por James Massey e Xuejia Lai, o IDEA é um algoritmo que faz uso de chaves de 128 bits e que tem uma estrutura semelhante ao DES. Sua implementação em software é mais fácil do que a implementação deste último;

- RC (Ron's Code ou Rivest Cipher): criado por Ron Rivest na empresa RSA Data Security, esse algoritmo é muito utilizado em e-mails e faz uso de chaves que vão de 8 a 1024 bits. Possui várias versões: RC2, RC4, RC5 e RC6. Essencialmente, cada versão difere da outra por trabalhar com chaves maiores.

Há ainda outros algoritmos conhecidos, como o AES (Advanced Encryption Standard) - que é baseado no DES - , o 3DES, o Twofish e sua variante Blowfish, entre outros.

O uso de chaves simétricas tem algumas desvantagens, fazendo com que sua utilização não seja adequada em situações onde a informação é muito valiosa. Para começar, é necessário usar uma grande quantidade de chaves caso muitas pessoas ou entidades estejam envolvidas. Ainda, há o fato de que tanto o emissor quanto o receptor precisam conhecer a mesma chave. A transmissão dessa chave de um para o outro pode não ser tão segura e cair em "mãos erradas".


Chave assimétrica

Também conhecida como "chave pública", a chave assimétrica trabalha com duas chaves: uma denominada privada e outra denominada pública. Neste método, um emissor deve criar uma chave de codificação e enviá-la ao receptor. Essa é a chave pública. Uma outra chave deve ser criada para a decodificação. Esta, a chave privada, é secreta.

Para melhor compreensão, imagine o seguinte: O InfoWester criou uma chave pública e a enviou a vários outros sites. Quando qualquer desses sites quiser enviar uma informação criptografada ao InfoWester deverá utilizar a chave pública deste. Quando o InfoWester receber essa informação, apenas será possível extraí-la com o uso da chave privada, que só o InfoWester tem. Caso o InfoWester queira enviar uma informação criptografada a outro site, deverá obter uma chave pública fornecida por este.

Ilustração sobre chaves assimétricas

Entre os algoritmos que usam chaves assimétricas, têm-se o RSA (o mais conhecido) e o Diffie-Hellman:

RSA (Rivest, Shamir and Adleman): criado em 1977 por Ron Rivest, Adi Shamir e Len Adleman nos laboratórios do MIT (Massachusetts Institute of Technology), é um dos algoritmos de chave assimétrica mais usados. Nele, números primos (número primo é aquele que só pode ser dividido por 1 e por ele mesmo) são utilizados da seguinte forma: dois números primos são multiplicados para se obter um terceiro valor. Porém, descobrir os dois primeiros números a partir do terceiro (ou seja, fazer uma fatoração) é muito trabalhoso. Se dois números primos grandes (realmente grandes) forem usados na multiplicação, será necessário usar muito processamento para descobrí-los, tornando essa tarefa praticamente inviável. Basicamente, a chave privada no RSA são os números multiplicados e a chave pública é o valor obtido;

ElGamal: criado por Taher ElGamal, esse algoritmo faz uso de um problema matemático conhecido por "logaritmo discreto" para se tornar seguro. Sua utilização é freqüente em assinaturas digitais.

Existem ainda outros algoritmos, como o DSA (Digital Signature Algorithm), o Schnorr (praticamente usado apenas em assinaturas digitais) e Diffie-Hellman.


Certificação digital

Um recurso conhecido por certificação digital é muito utilizado com chaves públicas. Trata-se de um meio que permite, por exemplo, provar que um certo documento eletrônico foi mesmo emitido por uma determinada entidade ou pessoa. O receptor da informação usará a chave pública fornecida pelo emissor para se certificar da origem. Além disso, a chave fica integrada ao documento de forma que qualquer alteração por terceiros imediatamente a invalide.

Saiba mais sobre o assunto na matéria Entendendo a Certificação Digital, publicada aqui no InfoWester.


PGP

PGP é a sigla para Pretty Good Privacy. Trata-se de um software de criptografia criado por Philip Zimmermman em 1991. A intenção de Zimmermman foi a de ajudar na defesa da liberdade individual nos Estados Unidos e no mundo inteiro, uma vez que ele percebeu que o uso do computador seria algo cada vez maior e que o direito à privacidade deveria ser mantido nesse meio. Por ser disponibilizado de forma gratuita, o PGP acabou se tornando uns dos meios de criptografia mais conhecidos, principalmente na troca de e-mails.

No PGP, chaves assimétricas são usadas. Além disso, para reforçar a segurança, o software pode realizar um segundo tipo de criptografia através de um método conhecido como "chave de sessão" que, na verdade, é um tipo de chave simétrica.

Um fato curioso a ser citado é que Zimmermman foi alvo de uma investigação policial que durou quase 3 anos. Isso porque a legislação americana proíbe a exportação de software criptográfico sem expressa autorização do governo. Porém, na investigação, ficou provado que alguém sem identificação e não o próprio Zimmermman é que distribuiu o programa pela internet. O PGP então passou a ser enviado para outros países através de uma brecha na legislação americana: novas versões tiveram seu código-fonte publicado em livros. Estes são exportados de forma legal, pois a lei americana proíbe a exportação do software, mas o código impresso não é considerado programa.

Existem vários softwares baseados no PGP. Para mais informações, acesse a página sobre PGP na Wikipedia (em inglês).

Finalizando

Criptografia só pode ser considerada como tal se 4 princípios básicos forem seguidos e oferecidos: confidencialidade, autenticação, integridade da informação e não repudiabilidade (o remetente não pode negar o envio da informação). É por isso que a criptografia é um recurso tão importante na transmissão de informações pela internet e, mesmo assim, não é capaz de garantir 100% de segurança, pois sempre existe alguém que consegue desenvolver uma maneira de "quebrar" uma codificação. Por isso é que técnicas existentes são aperfeiçoadas e outras são criadas, como a "Criptografia Quântica". Na criptografia há ainda outros conceitos envolvidos, como a Função Hashing (usada em assinaturas digitais), e aplicações, como a já citada certificação digital.

Para quem deseja trabalhar com computação, criptografia é uma área interessante. Obviamente, é necessário ter muita afinidade com cálculos, afinal, como pode ser notado no artigo, matemática é a base para os conceitos que envolvem a criptografia.

Escrito por - Publicado em 12_08_2005 - Atualizado em 11_07_2009