Diretório do artigo
Um artigo para você entender completamente o protocolo SSL / TLS
SSL / TLS é uma estrutura de comunicação criptográfica, é o método de comunicação criptográfica mais utilizado no mundo. O SSL / TLS usa de maneira abrangente a criptografia simétrica em criptografia, códigos de autenticação de mensagens, criptografia de chave pública, assinaturas digitais, geradores de números pseudo-aleatórios, etc. Pode-se dizer que é o mestre da criptografia.
SSL (Secure Socket Layer) é um conjunto de protocolos projetados pela Netscape em 1994 e lançados na versão 3.0 em 1995.
O TLS (Transport Layer Security) é um protocolo desenvolvido pela IETF com base no SSL3.0, que na verdade é equivalente à versão subsequente do SSL.
Aplicação de SSL / TLS
SSL / TLS é uma estrutura de comunicação segura, que pode transportar o protocolo HTTP ou SMTP / POP3.
Arquitetura de protocolo TLS
O TLS é dividido principalmente em duas camadas: a camada inferior é o protocolo de gravação TLS, responsável principalmente pela criptografia de mensagens usando cifras simétricas.
A camada superior é o protocolo de handshake TLS, dividido principalmente em quatro partes: protocolo de handshake, protocolo de alteração de especificação de senha e protocolo de dados de aplicativos.
-
O protocolo de handshake é responsável pela negociação de algoritmos criptográficos e chaves compartilhadas entre o cliente e o servidor, incluindo a autenticação de certificado, sendo a parte mais complexa dos quatro protocolos.
-
O contrato de alteração de especificação de senha é responsável por comunicar o sinal ao parceiro de comunicação para alterar o método de senha
-
O contrato de aviso é responsável por comunicar o erro à outra parte quando ocorrer um erro
-
O protocolo de dados do aplicativo é responsável por comunicar os dados do aplicativo transportados pelo TLS ao objeto de comunicação.
Acordo de aperto de mão
O protocolo de handshake é um protocolo muito importante no protocolo TLS. Através da interação entre o cliente e o servidor e o compartilhamento de algumas informações necessárias, são geradas uma chave compartilhada e um certificado interativo.
Não fale, primeira foto:
A seguir, apresentamos o significado de cada etapa, passo a passo:
-
olá cliente
O cliente envia uma mensagem de saudação ao cliente para o servidor, incluindo o seguinte:
- Número da versão disponível
- Hora atual
- Número aleatório do cliente
- ID da sessão
- Lista de conjuntos de criptografia disponíveis
- Lista de métodos de compactação disponíveis
Mencionamos anteriormente que o TLS é realmente um conjunto de estruturas de criptografia, algumas das quais são realmente substituíveis. Aqui, os números de versão disponíveis, a lista de pacotes de criptografia disponíveis e a lista de métodos de compactação disponíveis devem perguntar ao servidor quais serviços o outro lado suporta.
O número aleatório do cliente é um número aleatório gerado pelo cliente e usado para gerar uma chave simétrica.
-
olá servidor
Depois de receber a mensagem de saudação do cliente, o servidor retornará uma mensagem de saudação do servidor ao cliente, incluindo o seguinte conteúdo:
- Número da versão usada
- Hora atual
- Número aleatório do servidor
- ID da sessão
- Conjunto de criptografia usado
- Método de compressão usado
O número da versão usada, o conjunto de criptografia usado e o método de compactação usado são as respostas para a etapa 1.
O número aleatório do servidor é um número aleatório gerado pelo servidor e usado para gerar uma chave simétrica.
-
Etapa opcional: certificado
O servidor envia sua própria lista de certificados, porque o certificado pode ser hierárquico; portanto, além de processar o próprio certificado do servidor, você também precisa enviar o certificado assinado para o servidor.
O cliente verificará o certificado do servidor. Se estiver se comunicando de maneira anônima, nenhum certificado é necessário. -
Etapa opcional: ServerKeyExchange
Se as informações do certificado na terceira etapa forem insuficientes, você poderá enviar o ServerKeyExchange para criar um canal criptografado.
O conteúdo do ServerKeyExchange pode conter duas formas:
- Se o protocolo RSA for selecionado, os parâmetros (E, N) da criptografia de chave pública do RSA serão passados. Vamos lembrar a fórmula para criar uma chave pública no RSA: , e E, enquanto o know N, a chave pública RSA para saber, em que a transmissão é E, N dois números. O conteúdo específico pode se referir àexplicação detalhada do algoritmo RSA
- Se o protocolo de troca de chaves Diff-Hellman for selecionado, os parâmetros da troca de chaves serão passados.Para obter detalhes, consulte o método de geração de chaves mais seguro Diffie-Hellman
-
Etapa opcional: CertificateRequest
Se estiver em um ambiente de acesso restrito, como uma malha, o servidor também precisará solicitar um certificado ao cliente.
Se a autenticação do cliente não for necessária, esta etapa não será necessária. -
olá servidor pronto O
servidor envia uma mensagem olá servidor pronto para informar ao cliente que sua mensagem terminou. -
Etapa opcional: certificado
Em resposta à etapa 5, o cliente envia o certificado do cliente para o servidor
-
ClientKeyExchange
Ainda existem dois casos:
- No caso de chave pública ou modo RSA, o cliente gerará uma senha mestre preliminar com base no número aleatório gerado pelo cliente e no número aleatório gerado pelo servidor e, em seguida, usará a chave pública para criptografar e devolvê-la ao servidor.
- Se o protocolo de troca de chaves Diff-Hellman for usado, o cliente enviará o valor que a parte precisa divulgar para gerar a chave Diff-Hellman. O conteúdo específico pode se referir ao método de geração de chaves mais seguro, Diffie-Hellman , para que o servidor possa calcular a senha mestre preliminar com base nesse valor público.
-
Etapa opcional: CertificateVerify
O cliente prova para o servidor que é o detentor do certificado do cliente.
-
ChangeCipherSpec (prepare-se para mudar a senha)
ChangeCipherSpec é uma mensagem do protocolo de alteração de especificação de cifra, indicando que as mensagens subsequentes serão criptografadas com a chave negociada anteriormente.
-
concluído (contrato de final de aperto de mão)
O cliente informa ao servidor que o protocolo de handshake terminou.
-
ChangeCipherSpec (prepare-se para mudar a senha)
O servidor diz ao cliente que ele deseja mudar a senha.
-
concluído (contrato de final de aperto de mão)
O servidor informa ao cliente que o protocolo de handshake terminou.
-
Alternar para o protocolo de dados do aplicativo
Depois disso, o servidor e o cliente se comunicam de maneira criptografada.
Senha mestra e senha mestra preliminar
A etapa 8 acima gera uma senha mestre preliminar.A senha mestre é gerada pelo gerador de números pseudo-aleatórios + senha mestre preliminar + número aleatório do cliente + número aleatório do lado do servidor implementado pela função hash unidirecional definida no conjunto de cifras.
A senha principal é usada principalmente para gerar a chave denominada senha, a chave do código de autenticação de mensagens e o vetor de inicialização usado no modo CBC da senha simétrica. Consulte a cifra e modo de bloco para obter detalhes
Protocolo de Registro TLS
O protocolo de gravação TLS é responsável principalmente pela compactação de mensagens, criptografia e autenticação de dados:
Primeira foto.
A mensagem será segmentada primeiro, depois compactada e, em seguida, o código de verificação da mensagem é calculado e criptografado com uma senha simétrica.A criptografia usa o modo CBC.O vetor inicial do modo CBC é gerado pela senha mestra.
Após a obtenção do texto cifrado, informações adicionais como tipo, versão e comprimento serão anexadas para formar os dados finais da mensagem.
Para mais informações, visite o blog do flydean