4. Funcionamento
Protocolos
A comunicação em ambos os estágios se dá pelo uso dos sub-protocolos SSL Record Protocol e SSL Handshake Protocols, como mostrado na figura 3.
graphic
Figura 3: SSL e seus sub-protocolos
Record Protocol
É responsável por encapsular as mensagens antes de serem enviadas para a camada TCP (e desencapsulá-la no destinatário antes de entregar a mensagem para a camada superior). Em seu cabeçalho é identificado qual protocolo de nível superior corresponde à mensagem sendo carregada, além do identificador de sua versão e do tamanho de seu corpo (body).
Também é nele que é feita a criptografia simétrica do SSL, bem como a compressão da mensagem.
Protocolo de Handshake
Define as mensagens de handshake, as quais serão vistas mais a frente, quando for explicado o Estágio de Handshake.
Protocolo de troca de algoritmo
Apenas indica que as duas partes podem passar a usar a chave simétrica e o algoritmo de hash, sem mais depender das chaves assimétricas.
Protocolo de Alertas
É responsável por informar o interlocutor dos erros que ocorrem durante a conexão, podendo ser de dois tipos: alerta fatal ou alerta de aviso.
Os motivos para geração de um alerta fatal são:
- Recebimento de uma mensagem inesperada (Unexpected_message);
- Hash não confere (Bad_record_mac);
- O tamanho da mensagem após a descompressão excede o limite (Decompression_failure);
- Problema de segurança durante o handshake (Handshake_failure);
- Algum parâmetro do handshake não confere (Illegal_parameter).
Já os alertas de aviso informam coisas como a invalidez do certificado (por ter expirado, por ter sido revogado, ou por ser desconhecido, por exemplo).
Estágios
O protocolo funciona em dois estágios: estabelecimento da conexão (handshake) e transmissão dos dados.
Handshake
O estabelecimento da conexão serve, por exemplo, para combinar o algoritmo a ser usado para criptografar o restante da transmissão. Ele também é responsável por:
  • Autenticar o servidor para o cliente;
  • Autenticar o cliente para o servidor, se for o caso;
  • Gerar chaves secretas (para criptografia simétrica) usando criptografia assimétrica para transmissão dessa chave; se beneficiando da eficiência da chave simétrica e da segurança da chave assimétrica.
  • Estabelecer uma conexão segura via SSL.
Algoritmos
Alguns dos algoritmos usados em conexões SSL são:
Procedimento
   1. O cliente envia para o servidor a versão do protocolo SSL e configurações do algoritmo que ele usa, alguns dados gerados aleatoriamente, e outras informações necessárias ao servidor para que a conexão SSL seja estabelecida.
   2. O servidor responde com a versão do protocolo SSL e configurações do algoritmo que ele usa, alguns dados gerados aleatoriamente, e outras informações necessárias ao cliente para que a conexão SSL seja estabelecida. O servidor então envia seu certificado, autenticando-o, e, se for o caso, pede o certificado do cliente.
   3. O cliente, a partir das informações recebidas, tenta autenticar o servidor; se for bem sucedido, segue para o passo seguinte, caso contrário, envia uma mensagem de erro para o servidor e informa que a conexão não pôde ser criada.
   4. Usando os dados trocados até agora, o cliente, possivelmente com a colaboração do servidor, cria um segredo temporário (premaster secret), a encripta com a chave pública obtida do certificado do servidor, e a envia.
   5. Se a autenticação do cliente também foi requisitada, este envia seu certificado junto a outros dados extras, encriptando esse conteúdo com a chave secreta temporária gerada no passo 4.
   6. Continuando o passo 5, no caso de a autenticação do cliente ter sido requisitada pelo servidor, este tentará validar aquele, de modo análogo à autenticação do servidor. Se a operação for bem sucedida, o servidor usa sua chave privada para decriptar o segredo temporário (premaster secret), e depois segue uma série de passos que são igualmente seguidos pelo cliente para gerar o segredo a ser usado (master secret).
   7. Tanto o cliente, quanto o servidor usam o segredo citado para gerar as chaves simétricas a serem usadas na sessão. Com essas chaves, os dois participantes encriptarão e decriptarão as informações transmitidas durante a sessão SSL.
   8. O cliente, então, envia uma mensagem ao servidor informando que as novas mensagens serão encriptadas com a chave secreta. Depois, ele envia uma mensagem indicando o fim de sua parte do handshake.
   9. Análogo ao passo 8, sob o ponto de vista do servidor.
  10. O handshake foi finalizado e o cliente e o servidor trocam mensagens usando a chave simétrica para garantir a segurança.
O processo é resumido a seguir, na figura 2.
graphic
Figura 2: Handshake
Transmissão
Feito o handshake, a transmissão de dados pode ser iniciada. Nessa fase, a única novidade trazida pelo protocolo em estudo é a criptografia feita a partir da chave secreta. A camada do SSL recebe da camada superior a mensagem que se deseja transmitir, encripta a mesma usando a chave simétrica e repassa a mensagem para a camada inferior: TCP.