Pesquisar no blog

quinta-feira, 12 de agosto de 2010

Criptografia

        O termo Criptografia vem do grego kryptós ("escondido") e gráphein ("escrita"). Criptografar consiste da técnica de torna uma mensagem a ser enviada incompreensível, de forma a ser compreensível apenas pelo seu destinatário, que provavelmente terá métodos para torná-la compreensível. Esses métodos são algoritmos que fazem o processo inverso da criptografia, ou seja, consiste em descriptografar a mensagem.

        Algoritmos Criptográficos
       
        Existem duas classes de algoritmos criptográficos: simétricos (ou de chave-secreta) e assimétricos (ou de chave-pública). Os algoritmos simétricos utilizam uma mesma chave tanto para cifrar como para decifrar (ou pelo menos a chave de decifração pode ser obtida trivialmente a partir da chave de cifração), ou seja, a mesma chave utilizada para “fechar o cadeado” é utilizada para “abrir o cadeado”. Nos algoritmos assimétricos temos chaves distintas, uma para cifrar e outra para decifrar e, além disso, a chave de decifração não pode ser obtida a partir do conhecimento da chave de cifração apenas. Aqui, uma chave é utilizada para “fechar” e outra chave, diferente, mas relacionada à primeira, tem que ser utilizada para “abrir”. Por isso, nos algoritmos assimétricos, as chaves são sempre geradas aos pares: uma para cifrar e a sua correspondente para decifrar.
        Pela sua característica no uso da chave, os algoritmos simétricos exigem que a chave seja mantida secreta, do conhecimento exclusivo dos dois interlocutores (remetente e destinatário). Este fato requer um canal seguro que permita a um usuário transmitir a chave ao seu interlocutor. A figura 1 ilustra a forma de operação de uma algoritmo criptográfico simétrico, onde Bob envia uma mensagem cifrada para Alice, tendo antes que enviar a chave que vai utilizar, secretamente, para Alice.


        Os algoritmos assimétricos permitem que a chave de cifração possa ser tornada pública, por exemplo, disponibilizando-a em um repositório de acesso público (“canal público”), e por isso denominada chave-pública, retirando aquele problema existente nos algoritmos simétricos. Qualquer um pode cifrar mensagens com uma dada chave-pública, contudo somente o destinatário, detentor da correspondente chave de decifração (denominada chave-privada, ou secreta), poderá decifrá-la. Na figura 2 temos uma ilustração da operação de um algoritmo assimétrico. Aqui, Alice gera seu par de chaves, e envia (publica) sua chave-pública para Bob. Este cifra a mensagem com a chave-pública de Alice (KPública), a qual, e somente ela, será capaz de decifrá-la, utilizando sua chave-privada (KSecreta).


        Geralmente os algoritmos simétricos são mais eficientes computacionalmente que os assimétricos, podendo ser bastante rápidos em sua execução, permitindo altas taxas de cifração (até da ordem de GB/s). Os algoritmos assimétricos são geralmente menos eficientes, e normalmente a tendência é a utilização dos dois tipos de algoritmos em conjunto, tal que um algoritmo de chave-pública é utilizado para cifrar uma chave criptográfica, gerada aleatoriamente, para ser então utilizada para cifrar a mensagem através de um algoritmo simétrico. O destinatário então primeiro decifra a chave simétrica utilizando sua chave-privada no sistema de chave-pública, e após decifra a mensagem utilizando a chave recuperada no sistema simétrico. Desta forma não há o problema de "compartilhar o segredo da chave" com ninguém. A cada nova mensagem pode-se sempre repetir todo o processo. Nesta situação, se Bob deseja enviar uma mensagem para Alice, ele primeiro escolhe uma chave K, e a envia através do algoritmo de chave-pública cifrada com a KPública de Alice. Esta recupera K decifrando o criptograma recebido com sua chave privada KSecreta. Agora Bob pode enviar a mensagem real através do algoritmo simétrico, mais eficiente para isto, cifrando-a com a chave K, que Alice já dispõe, e enviada a ela de forma segura.


        Algoritmos Simétricos
       
        Após virmos às características, vantagens e desvantagens do uso das chaves simétricas e assimétricas, veremos agora alguns tipos de algoritmos simétricos. Os algoritmos de chave simétrica podem ser divididos em cifras de fluxo (ou contínuas) e em cifras por bloco. As cifras de fluxo cifram os bits da mensagem um a um, enquanto que as cifras por bloco pegam um número de bits e cifram como uma única unidade. Tipicamente são utilizados blocos de 64 bits; o algoritmo AES em dezembro de 2001 passou a usar blocos de 128, 192 ou 256 bits e chaves de 128, 192 ou 256 bits. Contudo, os algoritmos de chave simétrica raramente são usados sozinhos. Alguns exemplos de algoritmos simétricos populares e bem reputados são:
                • AES - é uma cifra de bloco adotada como padrão de criptografia pelo governo dos Estados Unidos. Espera-se que seja utilizada em todo o mundo e analisada extensivamente, assim como foi seu predecessor, o DES.
                • Blowfish - É conhecido pela sua velocidade, sendo mais rápido do que o RC2, DES e IDEA. Usa blocos fixos com 64 bits (8 bytes), mas as chaves podem ter qualquer comprimento sendo o de 128 bits o mais corrente;
                • RC2, RC4 E RC5 (RC - Rivest Ciphers) – possibilitam maior flexibilidade e maior segurança do que o DES. Todas as suas versões são algoritmos simétricos. O RC2 caracteriza-se por blocos de entrada de 64 bits, contudo podem ser usadas chaves com vários tamanhos. Já o RC4 não é uma técnica de blocos, mas sim de fluxo de entrada de bytes e saída de bytes cifrados ou decifrados conforme o caso. Esta é uma técnica atualmente muito usada, por um lado porque funciona em fluxo continuo e por outro lado porque é bastante rápida. Por fim o RC5 é uma técnica de cifragem em bloco, ele caracteriza-se por uma grande flexibilidade e possibilidade de parametrização. Com o RC5 os blocos de entrada podem ter qualquer dimensão pré-determinada e a chave também. Ele é muito flexível, estando sujeito a uma série de parâmetros que devem ser ajustados às necessidades particulares de cada caso.
                • DES (Data Encryption Standard) – foi desenvolvido nos anos 70. Utiliza uma chave de 56 bits que é aplicada a blocos de dados com 64 bits, o objetivo destes algoritmos é que seja difícil calcular a chave K, mesmo conhecendo o algoritmo DES. O algoritmo usado é algo complexo: Primeiro a mensagem de 64 bits é dividida em duas partes de 32 bits cada. Depois a chave de 56 bits é usada para gerar 16 chaves de 18 bits cada. E em seguida é aplicado sucessivamente 16 vezes um algoritmo, usando as chaves geradas;
                • IDEA - É uma técnica de cifragem em bloco usada na atualidade. Usa blocos fixos com 64 bits (8 bytes) e usa chaves com 128 bits (16 bytes). É considerada segura, mas ao contrário dos algoritmos RC usa chaves de comprimento fixo que certamente vão comprometer o seu futuro.

Nenhum comentário:

Postar um comentário