3. Tipos de Criptografia

     No caso das Chaves (tanto Simétrica quanto Assimétrica), o nível de segurança de uma criptografia é medido no número de bits, ou seja, quanto mais bits forem usados, mais difícil será quebrar a criptografia na força bruta.
     Ex: Se tivermos uma criptografia de 10 bits, existirão apenas 2¹º (ou 1024) chaves, porém, ao usarmos 64 bits, o número de chaves possíveis subirá para aproximadamente 20 x 10^18 chaves, um número alto até mesmo para um computador.

     No caso da função Hash, o nível de segurança é dado pela dificuldade de se criar colisões intencionais, evitando que haja sequência iguais para dados diferentes.
Criptografia Hash

     A criptografia hash permite que, através de uma string de qualquer tamanho, seja calculado um identificador digital de tamanho fixo, chamado de valor hash. O valor hash geralmente é formado por 16 bytes (no caso do MD-2, MD-4 e MD- 5) ou 20 bytes (no caso do SHA-1), mas pode se estender, embora não passe de 512 bytes.
Seja uma função hash H, e x uma string qualquer, teremos que H(x) será o valor hash para a string x.
As características básicas de uma função hash são:

  • O valor de entrada da função possui qualquer tamanho;
  • O valor de saída da função possui tamanho fixo;
  • H(x) é relativamente fácil de ser computado, para qualquer valor de x;
  • H(x) é uma função “one-way”;
  • H(x) é livre de colisão.

     Uma função hash é dita "one-way” pois uma vez obtido o valor hash  h para uma string x, é computacionalmente impossível fazer o processo inverso, ou seja, encontrar um valor x tal que H(x) = h.   

    Diz-se ainda que H(x) é livre de colisão, significando que as funções hash devem garantir uma probabilidade mínima de que duas strings diferentes acabem por resultar no mesmo valor hash. Qualquer alteração na string original que deu origem ao identificador digital, mesmo que de um único bit, acabará por gerar uma alteração significativa no valor hash final.
Chaves Simétricas

     É o tipo mais simples de criptografia, já que tanto o emissor quanto o receptor da mensagem possuem a mesma chave, ou seja, a mesma chave é usada tanto na codificação quanto na decodificação.
     Para ser realizada, basta que o emissor, antes de enviar a mensagem criptografada, envie a chave privada que será utilizada para descriptografá-la.


graphic
Retirado do site da USP

Existem diversos algoritmos criptográficos que fazem uso da Chave Simétrica, tais como:

 - DES (Data Encryption Standard)

     Criado pela IBM em 1977, usa criptografia de 56 bits, o que corresponde a cerca de 72 quadrilhões de chaves diferentes. Apesar de ser um valor bastante alto, foi quebrado por em 1997 por força bruta (tentativa e erro), em um desafio feito na Internet.

 - IDEA (Internacional Data Encryption Algorithm)

     Criado em 1991 por Massey e Xuejia Lai, utiliza chaves de 128 bits com uma estrutura semelhante ao anteriormente citado DES, porém, possui uma implementação mais simples.

 - RC (Ron’s Code ou Rivest Cipher)

     Desenvolvido por Ron Rivest, é largamente utilizado em e- mails. Possui diversas versões (RC2, RC4, RC5 e RC6), com chaves que vão de 8 à 1024 bits

     Podemos citar ainda o 3DES, o Twofish e o Blowfish, entre outros.

     Porém, a Chave Simétrica apresenta alguns problemas graves, tais como a necessidade da troca constante dessas chaves e a impossibilidade de serem usados com fins de autentificação (já que a transmissão da chave privada de um para o outro pode não ser segura e acabar caindo em outras mãos), apesar de seus algoritmos serem mais rápidos do que os algoritmos assimétricos.

Chaves Assimétricas

     Diferentemente do método de Chave Simétrica, esse tipo utiliza 2 chaves, uma pública e uma privada. O sistema funciona da forma que alguém cria uma chave e envia essa chave à quem quiser mandar informações à ela, essa é a chamada chave pública. Com ela é feita a codificação da mensagem. Para decodificação será necessário utilizar uma outra chave que deve ser criada, a chave privada – que é secreta.

graphic
Retirado da Wikipedia
graphic
Retirado da Wikipedia
Na figura, a chave verde representa a chave pública, enquanto a chave rosa reprenta a chave privada.
     
     Esse esquema de chaves pública e privada atuando em conjunto funciona muito bem, principalmente quando queremos garantir a confiabilidade nos dados, já que somente o proprietário da chave privada será capaz de descriptografar a mensagem e vice-versa (nem mesmo o dono da chave pode descriptar a mensagem que ele encriptou, a não ser que ele possua a outra chave), ou seja, mesma que ela caia em “mãos erradas”, essa pessoa não será capaz de lê-la.
     Existem diversos algoritmos criptograficos que fazem uso da Chave Simétrica, tais como:

      - RSA (Rivest, Chamir e Adleman)

     Criado em 1977 por Ron Rivest, Adi Shamir e Len Adleman, é um dos algoritmos de chave assimétrica mais utilizados. Seu funcionamento consiste na multiplicação de 2 números primos muito grandes para a geração de um terceiro número. Para quebrar essa cripografia, seria necessário a fatoração desse número para encontrar os 2 números primos que o geraram, porém, para isso é necessário um poder muito alto de processamento, o que acaba inviabilizando a tarefa. A chave privada são os dois números primos e a pública é o terceiro número.

      - ElGamal

     Desenvolvido por Taher ElGamal, faz uso de um algoritmo conhecido como “logaritmo discreto” para se tornar seguro. É frequente seu uso em assinaturas digitais.
     Podemos citar ainda o DSS (Digital Signature Standard), entre outros.

     Assim como a Chave Simétrica, a Assimétrica também tem seus problemas. A utilização de algoritmos reversos para desencriptação de mensagens acaba por elevar o tempo computacional dos algoritmos de criptografia assimétrica, tornando inviável o seu uso em uma comunicação intensa.

Combinação dos Tipos

     Com os dois tipos de Chaves (Simétrica e Assimétrica) tendo suas vantagens e desvantagens, era natural o surgimento um método que buscasse mixar as vantagens de cada um, eliminando assim, suas desvantagens.
     Os protocolos TLS (Transport Layer Security) e SSL (Secure Sockets Layer) são exemplos desse mix. Para compensar o problema do segredo pré-estabelecido da chave simétrica e o alto poder computacional necessário na chave simétrica, foi elaborado um meio onde em sua primeira etapa (handshake), seja utilizado a criptografia assimétrica, autenticando assim os nós e combinando uma chave secreta para um uso posterior na criptografia simétrica. Como o algoritmo de chave pública garante que a negociação foi realizada em um canal seguro, não havendo a necessidade da troca periódica da chave (problemas no caso da Chave Simétrica), todo o restante do processo pode passar a ser realizado utilizando algoritmos de chave simétrica, o que diminui potencialmente a necessidade do poder computacional, permitindo seu uso em uma comunicação mais intensa (problemas encontrados na Chave Assimétrica).