TLS Handshake: Under the Hood

Server — ServerKeyExchange

Esta mensagem carrega os parâmetros do algoritmo de troca de chaves que o cliente precisa do servidor para obter segredos intermiados que serão utilizados ao construir as chaves de sessão finais para cifra simétrica por ambas as partes. É opcional, uma vez que alguns algoritmos de troca de chaves, como a troca de chaves RSA, não requerem estes parâmetros, porque o certificado do servidor em si será suficiente para o cliente construir e comunicar de forma segura o segredo pré-mestre com o servidor.por exemplo: se o método de troca de chaves escolhido pelo servidor em uma etapa anterior é Diffie-Hellman( DH), o servidor inclui esta mensagem após o certificado, que incluirá os componentes públicos necessários para gerar o segredo mestre.

Server-CertificateRequest

Esta mensagem será enviada, Se a autenticação do cliente SSL estiver activa no servidor. Isto normalmente não é exigido na maioria dos servidores web, mas para requisitos de alta segurança, o servidor pode exigir o certificado do cliente para Autenticação. Junto com o pedido de certificado, o sever envia os tipos de clientes que são aceitáveis e também indica uma lista de nomes distintos de autoridades de certificados que são confiados pelo servidor. Esta lista inclui as autoridades do CA disponíveis na truststore do servidor.

Server-ServerHelloDone

finalmente, o servidor envia a mensagem ServerHelloDone indicando ao cliente que o servidor está a terminar de passar os parâmetros de segurança. Esta mensagem termina a parte do servidor na negociação do aperto de mão. Esta mensagem não trará qualquer outra informação.o cliente responde com um certificado do cliente se o servidor solicitar autenticação do cliente com mensagem de pedido de certificado. No entanto, antes do envio do certificado, o cliente irá verificar o DN do certificado do cliente do emitente pode ser encontrado na lista de nomes distintos de CAS confiável enviados pelo servidor. Se o DN do emitente não foi encontrado, o cliente não enviará o seu certificado para o servidor. No lado do servidor, se a autenticação do certificado do cliente for obrigatória, o aperto de mão do TLS falhará aqui. Caso contrário, o cliente irá enviar o seu certificado e quaisquer certificados intermédios necessários para a cadeia DN correspondente listada na mensagem de pedido de certificado.

Client-ClientKeyExchange

a mensagem ClientKeyExchange contém o segredo pré-mestre, que é gerado pelo cliente. Isto é conduzido de acordo com a suíte de cifra aggreed por ambas as partes em uma etapa anterior. Tanto o cliente como o servidor irão usar isto para gerar um segredo mestre do qual ambos irão derivar as chaves criptográficas finais necessárias para estabelecer o canal codificado. O cliente criptografa o segredo pré-mestre com a chave pública do servidor, de modo que se um bisbilhoteiro interceptar este bit de dados, ele não será capaz de descriptografá-lo, uma vez que ele não tem acesso à chave privada do servidor. A chave mestra fornece ao servidor os dados necessários para gerar as chaves para a criptografia simétrica. No entanto, se o conjunto de cifras escolhido para esta sessão foi DH, então o ClientKeyExchange contém os parâmetros DH públicos do cliente em vez de um segredo pré-mestre.esta mensagem é usada pelo cliente para provar ao servidor que possui a chave privada correspondente ao seu certificado de chave pública. A mensagem contém informação hashed (hash de todas as mensagens trocadas até agora durante o processo de aperto de mão) que é assinado digitalmente pelo cliente. É necessário se o servidor emitiu um certificado pedido para o cliente, de modo que o cliente enviou um certificado em resposta que precisa ser verificado no lado do servidor.

Client-ChangeCipherSpec

a mensagem ChangeCipherSpec é apenas uma mensagem do cliente para informar o servidor que todos os dados que o cliente envia daqui em diante serão criptografados usando os parâmetros de segurança acordados. Neste ponto, tanto o cliente quanto o servidor têm todos os componentes necessários para gerar o segredo mestre e, em seguida, derivar chaves de sessão criptográfica.ambos os lados verificam que o aperto de mão decorreu como planeado e que ambos geraram chaves idênticas, enviando uma mensagem final cifrada indicando um ao outro que a cifra é activada.

cliente-terminado

primeiro, o cliente envia uma mensagem cifrada terminada para o servidor. Esta mensagem é um hash criptográfico (message digest), de todas as mensagens de aperto de mão anteriores combinadas, seguido por um número especial identificando o papel do cliente, o segredo mestre e preenchimento. Isto é encriptado com a chave de sessão recém-gerada e enviado para o servidor.

Servidor — ChangeCipherSpec

Agora, o servidor envia uma ChangeCipherSpec mensagem de volta para o cliente para dizer ao cliente que todos os dados após esta mensagem será criptografada.

Server-Finished

ChangeCipherSpec message is followed by an encrypted Finished message from the server to the client. Este é um hash criptográfico gerado pelo servidor, de todos os componentes usados durante o processo hanshake, juntamente com um número especial identificando o papel do servidor.

Deixe uma resposta

O seu endereço de email não será publicado.