Secure
Socket Layer (SSL)
Definição:
é um protocolo desenvolvido pela Netscape com o intuito de possibilitar o
envio de informações criptografadas pela Internet.
O SSL funciona como uma camada adicional entre as camadas inferiores do
protocolo TCP/IP e a camada de aplicação. Ele adiciona à capacidade de
envio de fluxo de informações do protocolo TCP/IP as seguintes características:
-
autenticação
e não repudiação do servidor e do cliente através do uso de
assinaturas digitais;
-
confidencialidade
de dados através da criptografia;
-
integridade
de dados através de códigos de autenticação de mensagens.
Funcionamento:
1.
O cliente envia uma mensagem inicial (client hello message), na qual
ele especifica a versão do protocolo SSL que deseja utilizar, uma relação
do conjunto de algoritmos de criptografia e compressão de dados suportados
pelo cliente e um número utilizado para identificar a sessão de comunicação
entre o servidor e o cliente.
2. O servidor responde a mensagem inicial
com outra mensagem (server hello message), na qual estão definidos os
algoritmos de compressão e criptografia escolhidos pelo servidor, segundo a
lista fornecida pelo cliente na mensagem inicial. O servidor escolherá os
algoritmos de criptografia mais fortes suportados simultaneamente entre o
cliente e o servidor. Caso o servidor não responda a mensagem inicial do
cliente, o processo de abertura de conexão é abortado.

3.
Após enviar a mensagem hello, o servidor envia seu certificado digital
para que o cliente possa autenticar o servidor com o qual irá se conectar.
4. Depois que o servidor enviou o seu
certificado, este pode opcionalmente requerer o certifidado digital do
cliente. Somente um servidor autenticado pode requerer o certificado digital
do cliente.

5.
O servidor envia uma mensagem (hello done) indicando que o processo de
especificação dos protocolos de criptografia da sessão foi finalizado.
Após enviar esta mensagem, o servidor irá aguardar a resposta do cliente.
6.
Após receber a mensagem de hello done, o cliente irá validar o
certificado do servidor e verificar se os parâmetros definidos na conexão
são aceitáveis.
7.
Caso a autenticação do cliente seja requisitada, o cliente irá enviar seu
certificado digital para o servidor ou uma mensagem indicando que não possue
um certificado digital.
8. O cliente gera então uma
pré-chave (pre-master secret) e enviará a pré-chave criptografa com
a chave pública do servidor (especificada no certificado digital) para este.

9.
O cliente e o servidor podem agora gerar uma chave chamada master secret
a partir da pré-chave, que será utilizada para gerar as demais chaves dos
algoritmos de criptografia definidos anteriormente.
10.
Em seguida, o cliente envia duas mensagens para o servidor: uma mensagem (change
cipher message) sinalizando que a comunicação passará a ser criptografa
com os algoritmos de criptografia negociados e outra de finished
indicando o término do processo de negociação e início do envio de dados.
11.
O servidor responde enviando uma mensagem change cipher message
(indicando que está pronto para receber mensagens criptografadas com o
algoritmo negociado) e uma finished (indicando que está
sincronizado com o cliente e pronto para enviar e receber dados).
12. A partir deste momento o cliente
e o servidor passam a trocar dados.

Características:
-
Utiliza
algoritmos e chaves diferentes para executar as funções de criptografia,
autenticação, integridade de dados e autenticação;
-
Utiliza
um único par de chaves públicas e privadas durante as conexões com um
determinado cliente (os algortimos de chave pública são mais lentos que
os de chave assimétrica);
-
A
autenticação do cliente e do servidor é feita através de certificados
digitais emitidos por uma entidade certificadora;
-
Funciona
com protocolos TCP/IP, http, pop3, smtp;
-
Oferece
proteção contra ataques de interceptação de dados e reenvio de
mensagens;
-
Suporta
compressão de dados.