<< Introdução Modelo de Operação >> 

2. Criptografia Básica

2.1. Tipos de Criptografia

Seja para trafegar dados, autenticar os nós ou verificar informações, um componente comum em qualquer conexão segura é um segredo. Somente utilizando-se de informações restritas a pelo menos uma das partes garante-se que intrusos não possam comprometer uma conexão, já que os algoritmos de criptografia são públicos, portanto a forma de embaralhar/desembaralhar a informação pode ser realizada por qualquer um que detenha domínio do algoritmo usado na transmissão.

A forma mais simples ( e a mais usada) de manter uma conexão segura é escolher um segredo (uma chave secreta) e configurar dois nós para criptografar seus dados usando a mesma. Esta criptografia é chamada de simétrica.

O ponto crítico da criptografia simétrica encontra-se na premissa de que os dois nós acordaram sobre uma chave a ser usada e somente eles possuem conhecimento sobre esta chave. Em transações onde os nós não podem obedecer a esta premissa, que representam grande parte das transações realizadas via Internet, faz-se necessário o uso de algum algoritmo que não necessite de uma chave pré-estabelecida entre as duas partes. A solução para este problema foi dada pela criptografia assimétrica (algoritmo de chave pública), que possibilitou a explosão das transações por intermédio das redes de computadores.

2.2. Criptografia Simétrica

Como citado acima, a criptografia baseada em chaves simétricas, fundamenta-se em chaves secretas pré-definidas pelas partes dispostas a manter uma conexão segura, que deverão garantir o sigilo desta chave, com a pena de comprometer toda a segurança dos dados.

Os algoritmos de encriptação dos dados (também chamados de ciphers) são usualmente operações matemáticas reversíveis, que combinam os dados de entrada com a chave secreta nas operações. A qualidade da encriptação está diretamente ligada ao tamanho da chave usada, já que quanto maior o tamanho da chave, maior o numero de chaves possíveis, o que dificulta a quebra da criptografia por força bruta. Se por exemplo, um algoritmo de encriptação por chave secreta utilizar uma chave de 2 bits, ele pode ser facilmente quebrado, pois basta um intruso testar no máximo 4 diferentes chaves até descobrir o segredo da transmissão.

Por realizar operações matemáticas relativamente simples, o tempo computacional gasto pelos algoritmos de chave simétrica é satisfatoriamente curto para ser implementado sem adicionar sobrecarga nos sistemas físicos atualmente no mercado.

2.3. Criptografia Assimétrica

A inconveniência do pré-estabelecimento de uma chave secreta exigido pelo algoritmo de chave simétrica é contornada utilizando-se a criptografia assimétrica.

Neste modelo de criptografia, duas chaves são utilizadas para realizar o processo de encriptação/desencriptação , o que uma encriptar somente a outra pode desencriptar. Desta forma, uma parte querendo estabelecer uma conexão segura com outra, deverá gerar as duas chaves: a chave pública e a chave privada. A chave pública pode ser livremente distribuída, já que de nada adianta a chave pública sem a privada para completar a encriptação/desencriptação.

Como utiliza-se de algoritmos reversos para desencripar mensagens, o tempo computacional utilizado pelos algoritmos de criptografia assimétrica é muito elevado, tornando-se inviável o uso de uma comunicação intensa de dados utilizando-se estes algoritmos.

2.4. Combinando os Tipos

O protocolo TLS e SSL combinam as criptografias simétrica e assimétrica, para contornar o problema do segredo pré-estabelecido da simétrica e o alto gasto computacional da assimétrica. Nestes protocolos, a solução consiste em uma etapa inicial de negociação (handshake), onde utiliza-se de criptografia assimétrica para autenticar os nós e combinar uma chave secreta para uso na criptografia simétrica. Terminada esta etapa, o algoritmo por chave pública garante que a negociação da chave secreta foi feita em um canal seguro e que somente as duas partes a conhecem, portanto pode-se trabalhar durante todo o restante da conexão utilizando-se os algoritmos de chave simétrica, tornando a transmissão computacionalmente viável.

2.5. Gerenciamento de Chaves

Nos tópicos acima, foi apresentado um problema gerado pelos algoritmos de criptografia por chave simétrica, que necessitavam de um gerenciamento prévio das chaves utilizadas na conexão. Foi apresentada também uma solução utilizando-se algoritmos de chave pública, porém uma questão ainda não foi resolvida: como acreditar que o nó que envia a chave pública é realmente o nó que se espera que seja?

Este é um dos pontos onde os protocolos que utilizam-se de chaves públicas para garantir segurança nas conexões ficam mais sucetíveis a ataques, já que de forma alguma o protocolo pode controlar por quem (na vida real) foi emitida aquela chave pública.

A solução para esta vulnerabilidade foi a criação de certificados de autenticidade. Ao invés de mandar somente uma chave pública para o nó a ser estabelecida uma conexão segura, uma parte deve enviar um certificado, que contém, além da chave pública, outras informações que identificam aquele nó como a entidade esperada. Neste ponto, é confiada à parte que recebe o certificado a checagem dos dados existentes no certificados, que garantem que ela realmente estabelecerá uma conexão com quem ela deveria.

Um outro problema surge com o uso dos certificados: se alguém pode emitir certificados para a empresa XYZ, por que eu não posso emitir um certificado para mim chamando-me de XYZ? Novamente, necessitamos de intervenção nesta etapa de autenticação, onde a solução adotada foi a criação de entidades certificadoras. Empresas ou organizações que emitem certificados e garantem a autenticidade dos dados neles contidos. Portanto, se eu acredito que a entidade certificadora da UFRJ é confiável, e recebo um certificado da empresa XYZ com uma assinatura digital da certificadora da UFRJ, eu posso confiar na chave pública que recebi e dar continuidade à transmissão.

 

 << Introdução Modelo de Operação >>