Pular para conteúdo

Transport Layer Secutrity (TLS) é um protocolo de segurança de criptografia, usado para proteger a comunicação entre duas partes da rede. Este protocolo garante: - Confidencialidade; - Integridade; - Auntenticação;

O protocolo opera acima do TCP e abaixo dos protocolos de aplicação (HTTP, SMTP, IMAP). Na camada OSI, o TLS é frequentemente associaco á camada 6 (apresentação), embora na prática seja tratado como parte da pilha de aplicação.

TLS Handshake:

Antes de trafegar dados, o cliente e servidor realizam um handshake TLS para negociar segurança.

Quem inicia o TLS Handshake?

Sempre o CLIENTE

Exemplos de cliente: - Navegador (Chrome, Firefox) - curl - wget - Um app mobile - Um serviço backend

O servidor nunca inicia o handshake TLS por conta própria.

Por que o handshake existe?

Para responder 3 perguntas críticas: 1. Quem é o servidor? (autenticação) 2. Como vamos criptografar? (algoritmos) 3. Qual chave vamos usar? (chave de sessão)

Sem handshake, não existe comunicação segura.

Passo a passo simplificado:

1 - ClientHello - Versão TLS suportada - Cipher suites - Random do cliente

2 - ServerHello - Cipher suite escolhida - Certificado digital - Random do servidor

3 - Validação do certificado - Cliente verifica: - Autoridade certificadora (CA) - Validade - Domínio

4 - Troca de chaves - Geração de chave de sessão simétrica

5 - Handshake finalizado - Comunicação segura começa

CLIENTE                          SERVIDOR
  |                                  |
  | --- TCP Handshake -------------->|
  |                                  |
  | --- ClientHello ---------------->|
  |                                  |
  | <--- ServerHello + Certificado --|
  |                                  |
  | --- Validação do Certificado --->|
  |                                  |
  | --- Troca de Chaves ------------>|
  |                                  |
  | --- Finished ------------------->|
  | <--- Finished -------------------|
  |                                  |
  | === Comunicação Criptografada ===|

Importante entender

  • TLS NÃO é automático
  • TLS não começa com o servidor
  • TLS sempre vem depois do TCP
  • TLS não criptografa a conexão inteira, só após o handshake