Segurança de Sessão
Jaime Dias
FEUP > DEEC > MRSC > Segurança em Sistemas e Redes
v3.1
SSL/TLS
1
SSL/TLS
Introdução
• Netscape desenvolveu SSL (Secure Socket Layer)
ƒ Versões 2 e 3
• IETF Î TLS 1.0 (Transport Layer Security)
ƒ TLS 1.0 corresponde à versão 3.1 do SSL
• TLS 1.0 não é compatível com SSL 3.0
ƒ Aplicações implementam TLS e SSL
• SSL/TLS transparente para os protocolos de aplicação
• Tipicamente Î protocolo sobre SSL/TLS acrescenta-se um “S”.
ƒ ex: HTTPS, IMAPS, POP3S
• Aplicações à escuta em portos diferentes. Ex:
ƒ HTTP 80 Æ HTTPS 443
ƒ SMTP 25 Æ SMTPS 465 (25)
ƒ POP3 110 Æ POP3S 995
ƒ…
MRSC > SSR > seg_sessao_v3.1
3
MRSC > SSR > seg_sessao_v3.1
4
SSL/TLS
Pilha protocolar
2
SSL/TLS
Pilha protocolar
• Record Protocol
ƒ Confidencialidade, autenticidade e integridade
das mensagens
ƒ Fragmentação e eventual compressão das mensagens
• Handshake Protocol
ƒ Permite autenticação do cliente e servidor
ƒ Negociação de algoritmos criptográficos a usar em cada conexão (CipherSuite)
ƒ Troca de chaves simétricas para confidencialidade, autenticidade e integridade
(MAC)
• Alert Protocol
ƒ Tipos de alerta: warning ou fatal
ƒ Descrição do alerta: ex: unexpected_message, bad_record_mac
• Change Cipher Spec protocol
ƒ O protocolo mais simples Î 1 byte com valor 1
ƒ Quando recebido aplica o CipherSuite negociado à currente conexão
MRSC > SSR > seg_sessao_v3.1
5
Record Protocol
Autenticação e integridade dos dados
Cifragem dos dados (confidencialidade)
MRSC > SSR > seg_sessao_v3.1
6
3
Handshake Protocol
3 fases
• Mensagens Hello
• Mensagens de troca de certificados e de geração de chaves
• Mensagens ChangeCipherSpec e Finished
MRSC > SSR > seg_sessao_v3.1
7
Handshake Protocol
Servidor
Cliente
Selecciona um dos
cipherSuites apresentados
Apresenta possíveis
CipherSuites
Envia certificado
Envia chave simétrica
cifrada com a
chave pública do servidor
Fim da negociação
do servidor
Activa a cifragem
dos dados
Handshake
do cliente finalizado
Activa a cifragem
dos dados
Handshake
do servidor finalizado
A partir daqui os dados são cifrados
MRSC > SSR > seg_sessao_v3.1
8
4
Mensagem ClientHello
• Versão do protocolo
ƒ SSLv3(major=3, minor=0)
ƒ TLS (major=3, minor=1)
• Número aleatório
ƒ 32 bytes
ƒ Primeiros 4 bytes consistem na hora do dia em segundos, os restantes
28 bytes são aleatórios
ƒ Previne ataques de repetição
• ID da sessão
ƒ 32 bytes – indica a utilização de chaves criptográficas de uma
conexão anterior (mesma sessão)
• Algoritmo de compressão
ƒ Normalmente é nulo
MRSC > SSR > seg_sessao_v3.1
9
Mensagem ClientHello
• CipherSuite
ƒ Conjunto do algoritmos a utilizar
ƒ O SSL/TLS suporta vários ciphersuites
ƒ O cliente propõe um ou mais ciphersuites; o servidor escolhe um.
MRSC > SSR > seg_sessao_v3.1
10
5
Mensagem ClientHello
CipherSuite
ƒ KeyExchange (esquema para troca de chave simétrica)
o
RSA (chave de sessão é cifrada com chave pública do servidor): mais comum
o
Fixed Diffie-hellman (certificado de chave pública DH)
o
Ephemeral Diffie-Hellman (chave pública DH assinada com RSA ou DSS)
o
Anonymous Diffie-Hellman (sem certificados Æ vulnerável a ataque MIM)
ƒ CipherSpec (algoritmos simétricos e de síntese, para confidencialidade,
autenticidade e integridade)
o
CipherAlgorithm: RC4, RC2, DES, 3DES…
o
MACAlgorithm: MD5 ou SHA1
o
IsExportable
o
HashSize
o
Key Material
o
IV Size
MRSC > SSR > seg_sessao_v3.1
11
Mensagem ClientHello
CipherSuite
SSL_NULL_WITH_NULL_NULL = { 0, 0 }
Algoritmo de
chave pública
Algoritmo de
chave simétrica
CipherSuite inicial (nulo)
Algoritmo de
síntese
SSL_RSA_WITH_NULL_MD5 = { 0, 1 }
Códigos dos ciphersuites
usados nas mensagens SSL
SSL_RSA_WITH_NULL_SHA = { 0, 2 }
SSL_RSA_EXPORT_WITH_RC4_40_MD5 = { 0, 3 }
SSL_RSA_WITH_RC4_128_MD5 = { 0, 4 }
SSL_RSA_WITH_RC4_128_SHA = { 0, 5 }
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = { 0, 6 }
SSL_RSA_WITH_IDEA_CBC_SHA = { 0, 7 }
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA = { 0, 8 }
SSL_RSA_WITH_DES_CBC_SHA = { 0, 9 }
SSL_RSA_WITH_3DES_EDE_CBC_SHA = { 0, 10 }
…
MRSC > SSR > seg_sessao_v3.1
12
6
Mensagem ServerHello
• Versão do protocolo
• Número aleatório
ƒ Previne ataques de repetição
• ID da sessão
ƒ Permite ao cliente retomar a sessão mais tarde
• CipherSuite
ƒ Normalmente, mas não obrigatoriamente, a escolha recai na proposta
mais segura
• Compression method
MRSC > SSR > seg_sessao_v3.1
13
Mensagem Certificate
• Utilizada para transportar certificados
• Opcional
ƒ Mas, sem certificados Æ vulnerável a ataque “Man in the Middle”
• Normalmente certificados X.509
ƒ Corrente de certificados: certificado do servidor, da CA…
• Tipicamente, só o servidor apresenta certificado
ƒ Devido essencialmente ao custo dos certificados e sua gestão
ƒ Cliente (utilizador) pode autenticar-se ao nível do protocolo de
aplicação
o
Username/password
• Certificado X.509 associa uma chave pública a uma identidade
MRSC > SSR > seg_sessao_v3.1
14
7
Mensagem Certificate
• Os certificados devem ser verificados
• A CA tem de ser confiada por ambos, servidor e cliente
ƒ Uma CA pode gerar um certificado para uma outra CA (sub-CA)
• É necessário verificar que o certificado não foi revogado
ƒ Certificate Revocation List (CRL)
ƒ Online Certificate Status Protocol (OCSP)
MRSC > SSR > seg_sessao_v3.1
15
Mensagem ClientKeyExchange
• PremasterSecret
ƒ Usada como uma semente para calcular outras chaves de sessão
ƒ Quando KeyExchange=RSA:
o
Chave simétrica criada pelo cliente
o
2 bytes com a versão do SSL + 46 bytes aleatórios
o
Chave é cifrada com chave pública do servidor (RSA) e enviada para o
servidor
MRSC > SSR > seg_sessao_v3.1
16
8
Mensagens ChangeCipherSpec e Finished
• Change Cipher Spec
ƒ Aplica os algoritmos e respectivas chaves de sessão
ƒ A partir daqui os dados são cifrados
• Finished
ƒ Primeira mensagem cifrada
ƒ Finaliza o processo de handshake
MRSC > SSR > seg_sessao_v3.1
17
Geração de chaves
• PremasterSecret
ƒ Chave simétrica criada pelo cliente
• MasterSecret
ƒ Calculada por ambos, servidor e cliente, a partir da chave PremasterSecret e
dos números aleatórios gerados pelo cliente e pelo servidor.
• Material criptográfico (Key Material)
ƒ Gerado a partir da chave MasterSecret e dos números aleatórios
• Chaves de sessão
ƒ Extraídas a partir do material criptográfico para
o
autenticação e integridade das mensagens (MAC)
o
confidencialidade – cifragem dos dados (ex: DES, RC4)
o
vectores de inicialização – algoritmos simétricos por bloco (ex: DES) em modo
CBC ou algoritmos simétricos por fluxo (ex: RC4)
ƒ Um conjunto de chaves para cada sentido
MRSC > SSR > seg_sessao_v3.1
18
9
MasterSecret
MASTER SECRET = 3 * 128 = 384 bits
MRSC > SSR > seg_sessao_v3.1
19
MRSC > SSR > seg_sessao_v3.1
20
Material criptográfico
10
Chaves de sessão
MRSC > SSR > seg_sessao_v3.1
21
Sessões
• Sessões vs. conexões
ƒ Múltiplas conexões na mesma sessão
ƒ Uma conexão TCP Æ uma conexão SSL
ƒ Uma negociação por sessão
• Retoma de sessão
ƒ Através de IDs de sessão
ƒ Cliente usa o FQDN ou endereço IP como referência
ƒ O servidor usa o ID de sessão fornecido pelos clientes
• Repetição de handshake
ƒ O cliente pode iniciar um novo handshake durante a mesma sessão
MRSC > SSR > seg_sessao_v3.1
22
11
Overhead
• 2 a 10 vezes mais lento que uma sessão TCP
• Atraso devido a:
ƒ Handshake
o
Recurso a criptografia de chave-pública
ƒ Transferência de dados
o
Dados são cifrados com criptografia simétrica
MRSC > SSR > seg_sessao_v3.1
23
SSH – Secure SHell
12
SSH
Enquadramento
• Objectivo inicial: substituir o telnet, rlogin, rsh… por uma alternativa segura
• Actualmente também permite
ƒ Substituição do FTP e rcp por sftp/scp para transferência segura de ficheiros
ƒ Encapsulamento seguro de protocolos de aplicação (ex: POP3, SMTP)
• SSH 1 desenvolvido por Ylönen em 1995
• IETF Î SSH 2
• Arquitecturas
ƒ SSH 1 Î monolítica
ƒ SSH 2 Î arquitectura melhorada Î vários sub-protocolos
• SSH1 Î vulnerável a ataques MIM
MRSC > SSR > seg_sessao_v3.1
25
SSH 2
Pilha protocolar
scp, sftp, ...
SSH Authentication Protocol
SSH Connection Protocol
SSH Transport protocol
TCP
MRSC > SSR > seg_sessao_v3.1
26
13
SSH 2
Pilha protocolar
• Transport Protocol
ƒ Autenticação do servidor
ƒ Estabelecimento de um canal seguro para transporte dos outros
protocolos
ƒ Compressão opcional dos dados
ƒ Transportado sobre protocolo de transporte fiável Æ TCP
• Authentication Protocol
ƒ Autentica o cliente
ƒ Diversos protocolos de autenticação
• Connection Protocol
ƒ Permite o suporte de várias sessões em simultâneo. Cada sessão é
encapsulada num canal lógico.
MRSC > SSR > seg_sessao_v3.1
27
Transport Layer protocol
• Negociação de:
ƒ Método para troca de chaves de sessão
ƒ Algoritmo de chave pública para autenticação do servidor
ƒ Algoritmo de chave simétrica para confidencialidade
ƒ Algoritmo MAC para integridade e autenticidade
• Confidencialidade
ƒ Cada pacote é cifrado com um algoritmo de chave simétrica
ƒ Algoritmos: 3des-cbc, blowfish-cbc, twofish256-cbc, twofish192-cbc,
twofish128-cbc, aes256-cbc, aes192-cbc, aes128-cbc, …, nenhum (não
recomendado)
• Integridade e autenticidade
ƒ A cada pacote é acrescentado um MAC (Message Authentication Code)
ƒ Algoritmos: hmac-sha1, hmac-sha1-96, hmac-md5, hmac-md5-96, nenhum (não
aconselhável)
• Compressão dos dados opcional: ZLIB (LZ77)
MRSC > SSR > seg_sessao_v3.1
28
14
Transport Layer protocol
Troca de chaves e autenticação do servidor
• Recorrendo ao método Diffie-Hellman, cliente e servidor geram um
chave simétrica de sessão K comum, a qual servirá para derivar novas
chaves simétricas para confidencialidade e integridade (e
autenticidade): uma chave para confidencialidade, outra para
integridade, em cada sentido.
ƒ Método único para derivação de K: diffie-hellman-group1-sha1
• Cada servidor tem um par de chaves assimétricas. A pública (Host
Key) é utilizada para autenticar o servidor perante o cliente.
• Servidor autentica-se enviando a sua chave pública (ou certificado
com a mesma) juntamente com o resumo da chave K cifrado com a
sua chave privada (assinatura).
• Cliente verifica assinatura Æ confirma que o servidor é o detentor da
chave privada correspondente e que não houve um ataque MIM
MRSC > SSR > seg_sessao_v3.1
29
Transport Layer protocol
Validação da chave pública
• Dois métodos para a validação:
ƒ Através de um certificado (ex: pgp, x.509, spki)
ƒ Cliente gere uma base de dados do tipo {host/chave}
o
o
o
Cada vez que se inicia uma sessão, se servidor novo ou se chave
modificada Æ cliente ssh informa utilizador do fingerprint (resumo) da
chave
Decisão de confiança é do utilizador Æ quando não verificado é
possível um ataque MIM
Solução para evitar/minimizar ataques MIM: divulgação do fingerprint
através de canais alternativos (ex: telefone, e-mail).
• Algoritmos: ssh-dss, ssh-rsa, x509v3-sign-rsa, x509v3-sign-dss,
spki-sign-rsa, spki-sign-dss, pgp-sign-rsa, pgp-sign-dss
MRSC > SSR > seg_sessao_v3.1
30
15
Autentication Protocol
• Autentica o utilizador perante o servidor
• Métodos suportados
ƒ password – UserID/Password (o mais simples e mais vulgar)
ƒ pubkey – UserID/chave pública do utilizador
ƒ hostbased – (UserID/)chave pública do host
ƒ Outros métodos
o
Certificado digital
o
S/Key
o
SecurID
o
Kerberos
o
…
• Também permite a alteração de password
MRSC > SSR > seg_sessao_v3.1
31
Connection Protocol
• Oferece os serviços:
ƒ Sessão remota interactiva
ƒ Execução remota de comandos
ƒ Reencaminhamento de conexões TCP
ƒ Reencaminhamento de conexões X11
• Para cada serviço são estabelecidos um ou mais canais lógicos
• Todos os canais lógicos são multiplexados numa conexão
Transport Protocol
MRSC > SSR > seg_sessao_v3.1
32
16
Connection Protocol
Reencaminhamento de conexões TCP
• Permite ultrapassar firewalls
• Criar túneis seguros
• Parâmetros
ƒ Porto local Î porto onde cliente ssh fica à escuta de conexões
TCP
ƒ (host local)
ƒ Host remoto Î host onde reside o serviço (aplicação remota)
ƒ Porto remoto Î porto no host remoto onde o serviço está à
escuta
ƒ Servidor SSH Î host que corre o servidor SSH
MRSC > SSR > seg_sessao_v3.1
33
Connection Protocol
Reencaminhamento de conexões TCP
• Fluxo de dados
ƒ Aplicação cliente estabelece uma conexão TCP para host
local/porto local
ƒ Cliente SSH encapsula dados transferidos na conexão tcp para um
canal seguro entre host local e servidor SSH
ƒ Quando chegam a servidor SSH, dados são novamente
encapsulados numa conexão TCP (em claro) entre servidor
SSH/porto dinâmico e host remoto/porto remoto
MRSC > SSR > seg_sessao_v3.1
34
17
Connection Protocol
Reencaminhamento de conexões TCP: Exemplo
• Envio de e-mails a partir de portátil quando fora da rede da empresa
• Configurar cliente SSH
ƒ Porto local = 25
ƒ Host remoto = smtp.empresa.pt
ƒ Porto remoto = 25
ƒ Servidor SSH = proxy.empresa.pt
ƒ port# ssh -L 25:smtp.empresa.pt:25 proxy.empresa.pt
SMTP
• Configurar cliente de e-mail com servidor SMTP = localhost:25
SM
TP
MRSC > SSR > seg_sessao_v3.1
35
SSH 1 - Vulnerabilidades
• SSH 1 não é seguro, tem várias vulnerabilidades
• Por questões de compatibilidade clientes e servidores vêm por
vezes com suporte de SSH 1 activado
• Mesmo que cliente e servidor sejam configurados para usar SSH 2
por omissão, é possível que um atacante altere as mensagens
iniciais entre cliente e servidor em que acordam a versão a utilizar
de forma a que seja usado o SSH 1.
• Depois explora vulnerabilidades do SSH 1 Æ MIM
MRSC > SSR > seg_sessao_v3.1
36
18
Download

Segurança de Sessão SSL/TLS