|
O envio e o recebimento de informações sigilosas é uma necessidade antiga, que existe há centenas de anos. Com o surgimento da internet e sua facilidade de entregar informações 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 por objetivo dar uma abordagem introdutória à criptografia, mostrando os aspectos e conceitos mais importantes.
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.

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 tiver posse desse algoritmo, também poderá
decifrá-la, caso capture os dados criptografados. Há ainda outro problema:
imagine que a pessoa A tenha que enviar uma informação criptografada à pessoa B.
Esta última terá que conhecer o algoritmo usado. Imagine agora que uma pessoa C
também precisa receber uma informação da pessoa A, porém a pessoa C não pode
descobrir qual é a informação que a pessoa B recebeu. Se a pessoa C capturar a
informação envida à pessoa B, também conseguirá 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 é usar 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, 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
Existem dois
tipos de chaves: simétricas e assimétricas. Ambas são vistas 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 quadrilhões de combinações. É um valor absurdamente alto,
mas não para um computador potente. Em 1997, ele 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 estejam
envolvidas. Ainda, há o fato de que tanto o emissor quanto o receptor precisa
conhecer a chave usada. 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. Nesse método, uma
pessoa deve criar uma chave de codificação e enviá-la a quem for mandar
informações a ela. Essa é a chave pública. Uma outra chave deve ser criada para
a decodificação. Esta - a chave privada - é secreta.
Para entender
melhor, 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 a 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, por exemplo, o
Viva o Linux, deverá
conhecer sua chave pública.

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. Nesse algoritmo, 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
quase sempre 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.
Assinatura
Digital
Um recurso
conhecido por Assinatura Digital é muito usado com chaves públicas.
Trata-se de um meio que permite provar que um determinado documento eletrônico é
de procedência verdadeira. 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.
É importante
frisar que assinatura digital não é o mesmo que assinatura digitalizada. Esta
última consiste em uma assinatura feita a mão por um indivíduo que depois é
capturada por scanner e incluída em documentos.
No Brasil, uma
das empresas que fornecem assinatura digital é a
CertSign. Saiba mais
sobre assinaturas digitais
aqui
PGP
PGP é a sigla
para Pretty Good Privacy. Trata-se de um software livre 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
mais 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 e downloads (inclusive do
código-fonte) visite www.pgp.com.
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 criar um jeito 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
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.
|