Criptografia
A criptografia é uma arte: a arte de escrever ocultamente. Talvez tão antiga quanto a própria escrita, hoje é um dos métodos mais eficientes de se transferir informações, sem que haja a possibilidade de comprometimento do sigilo.
Baseada em chaves, uma informação pode ser codificada através de algum algoritmo de criptografia, de modo que, tendo conhecimento do algoritmo utilizado e da chave utilizada, é possàvel recuperar a informação original fazendo o percurso contrírio da encriptação, a decriptação.
Com o aumento da capacidade computacional, podemos hoje utilizar complexos esquemas criptogríficos, que antes eram impraticíveis pela demora com os quais eram codificadas pequenas informações. E além da capacidade técnica, possuàmos algumas caracteràsticas na criptografia moderna que a faz se subdividir em dois grandes grupos: Criptografia de Chave Simétrica e Criptografia de Chave Assimétrica.
Criptografia de Chave Simétrica
Esta é a criptografia tradicional, onde a mesma chave utilizada na codificação deve ser utilizada da decodificação. Alguns algoritmos de criptografia de chave simétrica: IDEA (International Data Encryption Algorithm), DES (Data Encryption Standard) da IBM e o RC2/4, da RSA Data Security.
O problema óbvio dessa simetria é: como vamos informar ao destinatírio a chave para a decriptação de forma segura? Se encontrarmos um modo seguro de lhe contar a chave, não poderàamos utilizar este modo para lhe passar a informação de uma vez? Realmente, este não é o melhor método para trocarmos nossos segredos.
No entanto, a criptografia simétrica é bastante eficiente em conexões seguras na Internet, onde processos computacionais trocam senhas temporírias para algumas transmissões cràticas e, ao contrírio do que você pode estar imaginando, jí utilizou algumas delas: quando você navega pela Internet e visita sites ditos "seguros", onde geralmente são preenchidos dados sigilosos, você estí utilizando o SSL (Secure Sockets Layer) que funciona à base de criptografia simétrica, muito provavelmente um DES ou algo da RSA.
Criptografia de Chave Assimétrica
Ah... Aqui a história fica muito mais divertida! Estudos realizados hí uns 20 anos tornaram possàveis algoritmos de criptografia utilizando duas chaves. Criptografando-se com a chave A, só seria possàvel a decriptação com a chave B, sendo a recàproca verdadeira!
Chave Pública e Chave Privada
Esta assimetria nos dí uma outra abordagem, que talvez não se tenha pensado no inàcio do projeto: a de chave pública e chave privada. Com duas chaves, não precisamos ficar presos a uma "troca" para o processo de de/codificação. Cada um poderí possuir sua chave pública e sua chave privada. Como o próprio nome jí diz, a chave privada é de conhecimento único e exclusivo seu. Jí a pública deve estar disponàvel a quem quiser lhe enviar informações encriptadas.
Como a encriptação/decriptação depende das duas chaves, se você quiser, por exemplo, nos mandar uma mensagem criptografada, deve encriptí-la com a nossa chave pública. Como dito anteriormente, a única chave que decripta esta mensagem é o par da chave pública, ou seja, nossa chave privada! Presto! Somente nós conseguiremos ler a mensagem (desde que nossa chave privada seja mantida em um lugar seguro).
Continuando nosso exemplo, caso nós queiramos mandar uma mensagem criptografada para você, nós primeiro conseguimos uma cópia da SUA chave pública e a uso na encriptação. Somente sua chave privada poderí decriptar esta mensagem, e mesmo que a mensagem tenha sido interceptada, não passarí de um conjunto de caracteres malucos...
PS. Lembre-se que uma mensagem comum, em texto simples, pode ser lida em qualquer canto da Internet, em especial no seu provedor de acesso, ou na sua conta do hotmail ou algo do gênero. Apesar da polàtica na maioria dos serviços proibir a leitura de mensagem dos usuírios, ela é praticamente possàvel! Se você tem assuntos secretos a tratar por e-mail, faça uso da criptografia. (existem sistemas de criptografia por telefone, mas ambos os lados precisam possuir o mesmo sistema, e a criptografia é por chave simétrica)
Assinatura Digital
Uma das maiores sacadas em termo de autenticidade dos últimos tempos! Como vimos no inàcio, a criptografia por chaves assimétricas vale para ambos os lados: Pública » Privada e Privada » Pública. Vamos supor que nós encriptemos uma mensagem com a nossa chave PRIVADA! Qual é a única chave capaz de decriptí-la? Um bombom para quem respondeu "a chave PÚBLICA". O que aparentemente não é muita vantagem, pois todos têm acesso à nossa chave pública e poderão ler a mensagem. Mas...
Aà estí! Realmente, todos os que possuàrem nossa chave pública poderão ler nossa mensagem, mas também é verdadeiro que, se foi possàvel decriptar com nossa chave pública, é porque ela foi encriptada com nossa chave privada! Como as únicas pessoas que sabem a nossa chave privada somos nós, estí assegurada a nossa identidade como autores daquela mensagem.
Criptografia + Assinatura Digital
Pode-se ainda, com o uso de quatro chaves, criptografar e autenticar a mensagem. Primeiro nós criptografamos nossa mensagem com a NOSSA chave PRIVADA. Depois criptografamos novamente a mensagem, desta vez com a SUA chave PÚBLICA. Ao receber, você deverí usar sua chave privada para decriptar a mensagem e, após, usar a nossa chave pública, para decriptí-la novamente e se assegurar de que fomos realmente nós que lhe escrevemos esta mensagem.
Neste caso, a ordem com que usamos a nossa chave privada e a sua chave pública faz diferença. Veja bem: no exemplo anterior, você não tem como provar que fomos realmente nós que enviamos esta mensagem até que você a decripte com sua chave privada. Se nós tivéssemos invertido a ordem, primeiro encriptando a mensagem com sua chave pública e depois assinando com nossa chave privada, você (e toda a torcida do flamengo) saberia que fomos realmente nós que escrevemos aquela mensagem, apesar de só você conseguir ler o seu conteúdo.
- Simétrica, Assimétrica, Salada Mista!
Hí um pequeno problema na criptografia com chave assimétrica: ela é muito lenta! É preciso um "Sr." computador para que o tempo de criptografia se torne viível, pois um texto grande pode levar de alguns minutos a vírias horas. Jí a simétrica... Ela é rípida, mas possui o problema da chave única.
Então, que tal se fizermos o seguinte: nós criptografamos uma mensagem com uma chave qualquer simétrica. A mensagem é grande, mas a simétrica é rípida. Então nós pegamos essa chave, que é pequena, e criptografamos assimetricamente com a SUA chave pública! Eureka! Só você saberí qual é a chave (decriptando-a com sua chave privada), e poderí decriptar a mensagem com a "nossa" chave simétrica.
Ótimo, mas ainda hí um problema. Desta maneira, perdemos a confiança na mensagem, pois não podemos comprovar de que fomos realmente nós que lhe enviamos esta mensagem. Mas hí uma outra maneira...
("- ih... lí vêm eles..." - você deve estar pensando. ;-)
Um tal de "Message Digest"
Vamos logo avisando que nós não inventamos nada disso! Mas que o desgraçado funciona, não podemos negar... O negócio é o seguinte: existe uma maneira de se criar um código a partir de uma mensagem, que reflita o seu conteúdo em um pequeno conjunto de caracteres. Aplica-se um cílculo na mensagem e este cílculo nos retorna um "message digest", como se fosse uma impressão digital da mensagem. Uma letrinha trocada e o message digest serí diferente.
Alguns algoritmos que fazem a "extração" do message digest mais utilizados no mercado: MD4/5 e o SHA (Secure Hash Algorithm).
O cílculo do message digest possui duas caracteràsticas fundamentais: não pode ser possàvel inverter o cílculo sobre o message digest para recuperar a mensagem original; e o message digest deve ser único por mensagem, ou seja, não pode existir um mesmo message digest para duas mensagens diferentes.
Com essa nova ferramenta, podemos assegurar a autencidade com criptografia assimétrica, mas nos poupando tempo. Vamos supor que nós tenhamos uma mensagem "não-secreta" para lhe enviar: Primeiro calculamos o message digest da nossa mensagem. Encriptamos o message digest com a NOSSA chave PRIVADA, e lhe mandamos a mensagem junto com o message digest encriptado. Ao receber a mensagem, você calcula o message digest da nossa mensagem, e compara com o message digest encriptado (utilizando nossa chave pública para decriptí-lo). Sendo igual, você terí certeza de que fomos nós que escrevemos aquela mensagem.
Mas a mensagem em si foi enviada sem criptografia. Qualquer um poderia ter lido! Então, vamos continuar... (jí estí acabando, prometemos!)
Tudo ao Mesmo Tempo Agora
Antes de continuarmos, feche os olhos e mentalize: "tranqüilas íguas azuis, tranqüilas íguas azuis..." Você estí calmo... Muito calmo... calmmmm...
Agora vamos lí: Nós queremos enviar para você uma mensagem grande, criptografada e assinada, e pretendemos poupar tempo. Portanto, criptografar a mensagem inteira (duas vezes!) com chaves assimétricas estí fora de cogitação. O que faremos? Vejamos...
Primeiro criamos um message digest da nossa mensagem e o encriptamos com a NOSSA chave PRIVADA. Depois, escolhemos uma chave SIMÉTRICA qualquer e encriptamos a mensagem inteira. Então nós encriptamos a chave simétrica com a SUA chave PÚBLICA. Agora enviamos tudo para você: o message digest da nossa mensagem encriptado com nossa chave privada, a mensagem criptografada com a chave simétrica, e a chave simétrica encriptada com a sua chave pública.
Ao receber a mensagem, você deverí fazer o seguinte: decriptar a chave simétrica com a sua chave privada. Com a chave simétrica decriptada, decripte a mensagem. Agora decripte nosso message digest com nossa chave pública e calcule o message digest da mensagem original. Finalmente, compare os dois message digest: o que lhe mandamos e o que você calculou. Se forem iguais, você terí certeza de que fomos nós que enviamos a mensagem e que a mensagem não sofreu nenhuma alteração.
Ufa!
O que? Ainda tem mais
Não, acabou! ;-) Mas vamos deixar uma questão para ser pensada e, quem sabe mais tarde, venhamos a falar no assunto...
É o seguinte: essa história de chave pública é muito bacana, mas precisamos dar um jeito para que as outras pessoas conheçam nossas chaves públicas. E ainda, você não pode pegar uma chave pública de alguém em qualquer lugar! Quem garante que aquela chave é verdadeira? Pode ser uma chave falsa, para que o falsificador possa ler as mensagens criptografadas.
A saàda mais sensata neste caso é criar sites onde se guardariam todas as chaves públicas, e onde se teria certeza de que as chaves lí postadas são autênticas. Estes sites emitiriam "certificados" de autenticidade, assinados por eles próprios.
Entretanto, as assinaturas destes sites seriam baseadas no mesmo esquema das chaves públicas e privadas. O site assinaria o certificado de autenticidade com sua chave privada e, caberia a nós, através da chave pública daquele site, julgar a "autenticidade do certificado de autenticidade". Portanto, caàmos no mesmo problema: como as chaves públicas dos sites autenticadores seriam distribuàdas, de forma que seus pares de chaves não possam ser falsificados?
Pense nisso...


Responder com Citação

