O que é um Aperto de mão SSL/TLS?
Um Aperto de mão SSL/TLS é uma negociação entre duas partes numa rede – como um navegador e um servidor web – para estabelecer os detalhes da sua conexão. Ele determina qual versão do SSL/TLS será usada na sessão, qual pacote de cifras criptografará a comunicação, verificará o servidor (e às vezes também o cliente) e estabelecerá que uma conexão segura está no lugar antes de transferir dados.
Isso tudo acontece em segundo plano, felizmente – toda vez que você direciona seu navegador para um site seguro, uma interação complexa ocorre para garantir que seus dados estejam seguros.
Essa é a versão simples. Você pode notar que qualquer dúzia de descrições se ajustará mais ou menos a este formato, enquanto diferindo em detalhes uma dúzia de maneiras diferentes – às vezes de forma confusa. Vamos lançar um gráfico que mostra um modelo amplo de como funciona um aperto de mão TLS, devemos?
PEDIDO AGORA
Gráfico obrigatório de aperto de mão SSL/TLS
Todos os sites relacionados com SSL/TLS têm a sua própria versão de um diagrama de aperto de mão – aqui está a nossa! (Clique para enbiggen.)
Let’s Clear Up Some Confusion, If We Can
Some confusion about how SSL/TLS handshakes work is due to the handshake being only the prelude to the real, secured session itself. Vamos tentar abordar alguns pontos comuns:
Criptografia assimétrica vs simétrica
O próprio aperto de mão usa criptografia assimétrica – duas chaves separadas são usadas, uma pública e uma privada. Uma vez que os sistemas de encriptação assimétrica têm uma sobrecarga muito maior, eles não são utilizáveis para fornecer segurança a tempo inteiro, no mundo real. Assim, a chave pública é utilizada para encriptação e a chave privada para descriptação apenas durante o aperto de mão, o que permite que as duas partes estabeleçam confidencialmente e troquem uma “chave partilhada” recém-criada. A própria sessão utiliza esta única chave compartilhada para realizar a criptografia simétrica, e é isso que torna uma conexão segura viável na prática real (a sobrecarga é muito menor). Então a resposta completa e correta para “A encriptação SSL/TLS é assimétrica ou simétrica?” é “Primeiro uma, depois a outra”
O que é um “conjunto de cifras”?
O próprio aperto de mão tem múltiplas etapas, cada uma gerida de acordo com regras diferentes. Os detalhes podem ser encontrados aqui, mas o mais importante é que ao invés de uma série de negociações separadas (sobre quais chaves usar, como criptografar o próprio aperto de mão, como autenticar o aperto de mão e assim por diante) as partes podem concordar em usar uma “suíte de cifras” – uma seleção pré-existente ou um kit de componentes acordados. (Lembre-se que a criptografia assimétrica é dispendiosa em termos de tempo e recursos – usar o conjunto de cifras como atalho acelera o próprio aperto de mão). As especificações do TLS permitem um grande número de suítes de cifras, e o cliente e o servidor terão quase sempre acesso a uma que ambos podem empregar.
Basic vs handshake mutuamente autenticado
Outro ponto confuso é que o modelo básico que descrevemos acima permite ao cliente verificar o servidor, e a grande maioria das sessões asseguradas pelo TLS só requerem isso. No entanto, algumas suítes de cifras exigirão que o cliente também envie um certificado e uma chave pública para autenticação mútua de ambas as partes. Esta autenticação bidireccional irá, naturalmente, adicionar sobrecarga ao aperto de mão – no entanto, em alguns casos (por exemplo, onde dois bancos estão negociando uma conexão segura para transferências de fundos) a suíte de cifras irá insistir nisso, e a segurança extra é considerada como valendo a pena.
Sessões diferentes terão parâmetros de segurança diferentes
Cada novo aperto de mão cria uma nova sessão, e as configurações usadas em uma podem diferir drasticamente de outra, dependendo da suíte de cifras escolhida. Esta é uma das razões pelas quais existem tantas iterações diferentes do maldito gráfico do aperto de mão, e porque estamos a dar aqui uma visão geral bastante ampla. Saiba também que as sessões podem definir parâmetros que podem não ser exatamente o que você espera. Dependendo do conjunto de cifras, alguns passos podem ser adicionados (como a exigência de autenticação bidirecional) ou ausentes. Na verdade, existem suítes de cifras que negociam uma sessão para não usar criptografia alguma. (Sim, nós sabemos, uma conexão HTTPS sobre a porta 443 que decide enviar dados no clear também não faz sentido para nós. SSL.com recomenda fortemente que você não faça isso – apenas esteja ciente de que está no reino do possível.)