CRIPTOGRAFIA
ASSINATURAS DIGITAIS
CERTIFICADOS DIGITAIS
SSL/TLS
Professor
Edgard Jamhour
CRIPTOGRAFIA E DESCRIPTOGRAFIA
Texto Aberto
(PlainText)
Texto Fechado
(Ciphertext)
CRIPTOGRAFIA
DECRIPTOGRAFIA
SISTEMA DE CRIPTOGRAFIA SIMPLES
Caesar Cipher: Shift Cipher
Substituição de letras pelas letras deslocadas de N.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Nada de novo
no front.
Qdgd gh qryr
qr iurqw.
N = 3
N = 4 Rehe hi rszs rs
jvstx.
ESPAÇO DAS CHAVES (KEYSPACE)
Uma chave é um valor específico do espaço de chaves (keyspace).
No exemplo anterior:
• Keyspace = 25
• N = 3, é a chave específica.
Algoritmos modernos:
• Chaves binárias: 128, 256, 1024, 2048 bits
Tipos de Criptografia:
• Simétrico: Keyspace 2tamanho da chave
• Assimétrico: Keyspace 2tamanho da chave
MARIE-ANTOINETTE AND AXEL VON
FERSEN
palavra secreta: depuis
plain-text: le roi e la reine
l e r o i e t l a r e i n e
D E P U I S D E P U I S D E
Q U K C E & C B Q P I Y R U
QUEBRA DE CRIPTOGRAFIA
A quebra da criptografia utilizando força bruta é inviável para espaço de chaves acima
de 128 bits.
• 2128 = 69 bilhões de vezes a massa da Terra medida em gramas
Keyspace
= 256
Computador: Deep Crack (1856 chips)
72 quatrilhões de chaves
90 bilhões de chaves por segundo
Tempo para encontrar uma chave: 56 horas
Keyspace
= 2128
Computador: Hipotético
1 quintilhão de chaves por segundo
Tempo para testar todas as chaves: 100
milhões de bilhões de anos.
ANÁLISE DE
FREQUÊNCIA
15 (87 times)
7 (56 times)
22 (54 times)
24 (42 times)
21 (41 times)
23 (40 times)
25 (40 times)
5 (38 times)
18 (35 times)
2 (26 times)
14 (23 times)
26 (18 times)
11 (14 times)
13 (13 times)
8 (12 times)
12 (11 times)
6 (11 times)
4 (9 times)
29 (8 times)
9 (8 times)
3 (7 times)
19 (5 times)
0 (3 times)
1 (1 time)
17 (1 time)
32 (1 time)
33 (1 time)
40 (1 time)
61 (1 time)
84 (1 time)
ANÁLISE DE FREQUÊNCIA
Letras mais usadas em inglês: ETAONISH
• 15=E
Palavra mais usada em inglês: THE
A sequência: 22 18 15 é a que se repete mais vezes (12)
• 22=T, 18=H e 15=E
Outras deduções:
T H 25 E E = THREE; T H 25 E = THERE
• 25 = R
Analisando a sequência:
"a 26 t e r = 9 a r 14 23 - 8 24 24 29 e r a t e - 9 21 t h - y 24 6“
“a F t e r = W a r D S C O O P e r a t e W I t h y O U
CRIPTOGRAFIA SIMÉTRICA E
ASSIMÉTRICA
Dois sistemas de criptografia são usados atualmente:
• Sistemas de chave secreta (secret-key)
• Também denominados simétricos
• Trabalha com uma única chave, denominada SECRETA.
• Sistemas de chave pública (public-key)
• Também denominado assimétrico
• Trabalho com um par de chaves
• CHAVE PÚBLICA
• CHAVE PRIVADA
CHAVE SECRETA (CRIPTOGRAFIA SIMÉTRICA)
Texto
Simples
(plaintext)
Texto
Codificado
(ciphertext)
Texto
Simples
(plaintext)
Chave Secreta
Algoritmo de
Criptografia
Algoritmo de
Decriptografia
Chave Secreta =
DES – DATA ENCRYPTION STANDARD
Um dos algoritmo de chave secreta mais difundido é o DES.
• Originalmente desenvolvido pela IBM.
• Baseado no algoritmo de Host Feistel
• Aprovado pelo NSA (National Security Agency)
• Algoritmo padronizado pelo NBS (atual NIST) em 1997.
DES criptografa blocos de 64 bits com chaves de 56 bits.
• DES utiliza técnicas baseadas em substituição e permutação de bits (funções Feistel).
O algoritmo é considerado obsoleto:
1998: DES-cracker da Electronic Frontier Foundation (EFF)
1850 chips desenvolvidos especialmente para quebrar o código
Custo de US$250.000, quebrou o algoritmo em 2 dias.
2008:
COPACOBANA RIVYERA (128 Spartan-3 5000's),
Custo de US$10.000, quebrou o algoritmo em menos de um dia.
CIFRAS BASEADAS EM FEISTEL
Dado:
Sequência de chaves: K0, ..., Kn
Bloco a ser criptografado:
• Bloco é dividido em 2 partes iguais
Criptografia: n+1 rounds
• Li+1 = Ri
• Ri+1= Li F(Ri,Ki)
Descriptografia:
• mesma operação com chaves na ordem
reversa
• Ri = Li+1
• Li= Ri+1 F(Li+1,Ki)
DES - ESTRUTURA
1) Uma permutação inicial (IP)
2) 16 rounds de processamento (função de Feistel –F)
3) Uma permutação final (FP)
16 chaves de 48 bits diferentes são
geradas a partir da chave original
de 56 bits usando operações de
“shift left” e “permutation choice”
Chave: sequência de 16 chaves
FUNÇÃO DE FEISTEL
Opera em meio bloco (32 bits) de cada vez.
É composto de 4 operações:
Expansion: expande o bloco de 32 bits em 48,
duplicando 16 bits.
Key Mixing: efetua um XOR entre o bloco expandido
e uma subchave
Substitution : divide o bloco em partes de 6-bits e
aplica o (S-Boxes = Substitution Boxes).
Cada um dos 8 S-boxes substitui uma parte de 6 bits
por outra de 4 bits através de uma operação tabelada.
Permutation : efetua uma permutação nos 32 bits
para espalhar os bits de cada S-box em pelo menos 4
S-boxes diferentes para o próximo round. Bloco de 32 bits
MODOS DE OPERAÇÃO
Block Cipher Mode of Operation:
• Muitos algoritmos de criptografia conseguem criptografar apenas um
tamanho fixo de bits denominado “bloco”.
• O modo de operação define como aplicar um algoritmo de bloco em
múltiplos blocos
O DES usa blocos de 64 bits, e possui vários modos de operação.
Alguns exemplos são:
• ECB: Electronic Codebook Mode
• CBC: Cipher Block Chaining
MODO ECB
O Modo ECB divide a mensagem em blocos de 64 bits, e criptografa
cada bloco de maneira independente.
DADOS
BLOCO 64 bits
CRIPTOGRAFIA
BLOCO 64 bits
(cipher text)
BLOCO 64 bits
CRIPTOGRAFIA
BLOCO 64 bits
(cipher text)
BLOCO 64 bits
CRIPTOGRAFIA
BLOCO 64 bits
(cipher text)
MODO CBC
O Metodo CBC torna a criptografia de um bloco dependente do bloco
anterior.
DADOS
BLOCO 64 bits
CRIPTOGRAFIA
BLOCO 64 bits
(cipher text)
BLOCO 64 bits
CRIPTOGRAFIA
BLOCO 64 bits
(cipher text)
XOR
BLOCO 64 bits
CRIPTOGRAFIA
BLOCO 64 bits
(cipher text)
XOR
ALGORITMOS SIMÉTRICOS USADOS
ATUALMENTE
AES: Advanced Encryption Standard
• Derivado dos algoritmos Rijndael
• Publicado pelo NIST em 2001
• NIST: National Institute of Standards and Technology
• Adotado pelo governo Americano
• Baseado em SPN: Substitution-Permutation Network (Similar ao DES)
Algoritmos usados pelo Google Chrome em ordem de preferência:
• AES: 128
• AES: 256
• 3DES: 3 x 56 bits
CHAVE PÚBLICA = CRIPTOGRAFIA
ASSIMÉTRICA
Sistema de Criptografia Assimétrico
• Utiliza um par de chaves.
• A chave publica (não é secreta) criptografa a mensagem.
• A chave privada (é secreta) descriptografa a mensagem.
A chave pública deve ser distribuída para os transmissores para garantir comunicação
segura com o receptor.
CHAVE PÚBLICA (CRIPTOGRAFIA
ASSIMÉTRICA)
Texto
Simples
(plaintext)
Texto
Codificado
(ciphertext)
Texto
Simples
(plaintext)
Chave Pública Chave Privada
Algoritmo de
Criptografia Algoritmo de
Descriptografia
RSA (RIVEST, SHAMIR, ADLEMAN)
Sejam p, q números primos (> 512 bits).
• n = p*q
• escolher e co-primo com n tal que: 1 < e < (p-1)(q-1)
• encontrar d tal que: e*d % (p-1)(q-1) = 1
As chaves são definidas da seguinte maneira:
• Chave pública: (n,e)
• Chave privada: (n,d)
Para criptografar uma mensagem “m” efetua-se a operação:
• s = me mod n
Para descriptografar, efetua-se a operação:
• m = sd mod n
RSA ALGORITHM EXAMPLE
1. Escolher: p = 3 e q = 11
2. Calcular: n = p * q = 3 * 11 = 33
3. Calcular: φ = (p - 1) * (q - 1) = 2 * 10 = 20
4. Escolher: e tal que 1 < e < φ e e e n são co-primos. solução possível: e = 7
5. Calcular: d tal que (d * e) % φ(n) = 1. solução possível: d = 3 pois (3 * 7) % 20 = 1
6. Escolher: chave pública = (e, n) (7, 33)
7. Escolher: chave privada = (d, n) (3, 33)
8. Criptografar: c = me mod n: se m = 2 c = 27 % 33 = 29
9. Descriptografar: m = sd mod n: se c = 29 m = 293 % 33 = 2
RSA
Ron Rivest, Adi Shamir, and Leonard Adleman publicaram o algoritmo pela primera vez em 1978.
O mesmo algoritmo era conhecido pelo governo britânico desde 1973 (Clifford Cocks), mas só foi
tornado público em 1997.
O algoritmo RSA é muito mais lento que o DES, pois os cálculos efetuados são complexos.
Por utilizar números primos, o RSA precisa de chaves muito grandes para reproduzir o mesmo grau
de segurança do DES.
As chaves em RSA são em geral da ordem de 1024 bits.
Por isso o RSA não é usado para criptografar dados.
ALGORITMOS DE HASH
Mapeia dados de tamanho variável em códigos de tamanho fixo:
• Digest ou Hashes
Principais aplicações:
• tabelas hash: indexar e localizar rapidamente estruturas de dados
• detectar duplicação de registros em tabelas
• verificar a integridade de dados recebidos pela rede ou potencialmente modificados por virus
colisão: entradas diferentes geram o mesmo digest.
Em verificação de integridade o algoritmo precisa ser
resistente a colisão.
Não deve ser possível encontrar duas mensagens que
gerem o mesmo Digest usando menos tentativas que a
força bruta
CRYPTOGRAPHIC HASH
Uma função de hash precisa atender a certas propriedades para ser
aplicável em criptografia:
(SHA1 – efeito avalanche)
1. determinística
2. rápida
3. inversão inviável
4. efeito avalanche
5. achar colisões inviável
APLICAÇÃO DE FUNÇÕES HASH
Verificação de
integridade de
distribuições de
software e
mensagens
transmitidas.
EXEMPLO: MD5 (MESSAGE DIGEST V5)
Projetado por Ronald Rivest, 1991 (RFC 1321)
Gera Digests de 128 bits.
A mensagem original é fragmentada em blocos de 512 bits (16x32)
Para mensagens não múltiplo de 512 é feito padding no bloco final: 100...0 + tamanho original (64 bits)
A, B, C, D: Bloco inicial fixo de 128 bits dividido em partes de 32 bits:
Mi Parte de 32 bits da mensagem original (16 partes)
Ki Constante diferente para cada operação
S Quantidade de bits deslocados (varia a cada operação)
Cada bloco é processado em 4 rounds, usando funções F diferentes a
cada vez:
Cada round consiste de 16 operação, cada uma com uma parte de 32 bits
Mi da mensagem original
ASSINATURA DIGITAL COM
CRIPTOGRAFIA ASSIMÉTRICA
Permite ao receptor verificar a integridade e autenticidade da
mensagem:
• Integridade: a mensagem não recebida é igual aquela gerada.
• Autenticidade: a origem (identidade do autor) é comprovada.
• Non-Repudiation: quem executa uma ação não pode negar sua autoria
Assinatura
digital
Chave privada
HASH + Criptografia Eu sou Jon
Snow
E eu não
sei de nada
ASSINATURA DIGITAL COM
CRIPTOGRAFIA ASSIMÉTRICA
DIGEST
F18901B
Função
Hash
ASSINATURA
DIGITAL
Mensagem com
Assinatura
Digital
MENSAGEM
aberta
ASSINATURA
criptografada
Chave Privada
do Autor
Eu sou Jon
Snow
E eu não sei
de nada
Eu sou Jon
Snow
E eu não sei
de nada
GERAÇÃO E VALIDAÇÃO DAS
ASSINATURAS
Digest 1B2A37...
chave privada
do Jon Snow
Rede
TRANSMISSOR Eu sou Jon
Snow
E eu não sei
de nada
criptografia
função hash
Eu sou Jon
Snow
E eu não sei de
nada
RECEPTOR
Eu sou Jon
Snow
E eu não sei de
nada
Digest
função hash chave pública
do Jon Snow
descriptografia
Digest
==
?
Assinatura Digital
Assinatura Digital
VERIFICAÇÃO DA ASSINATURA DIGITAL
Transmissor
(A)
Receptor
(B)
MENSAGEM ASSINATURA
DIGITAL
CHAVE PRIVADA DE A CHAVE PÚBLICA DE A
O receptor precisa ter a chave pública do
transmissor para verificar a assinatura.
COMO TER CERTEZA QUE A CHAVE
PÚBLICA ESTÁ CORRETA?
Rede
Transmissor
(A)
Receptor
(B)
BadBoy
(C)
NAT
SERVIDOR
DNS FALSO
ou injeta endereço de DNS
falso em A
cria regras de redirecionamento para C
responde o nome de B
com o endereço de C
Solicita a chave pública de B
Recebe a chave pública de C
Chave Pública
do BadBoy
1
2
MODELOS DE AUTENTICAÇÃO
WOT: Web of Trust
• Modelo descentralizado de confiança
• PGP (Pretty Good Privacy)
• Phil Zimmermann em 1991
PKI: Public Key Infrastructure
• Modelo centralizado e hierárquico de confiança
• Certificados X509 usados em SSL/TLS
• Versão original 1988 (para redes X500)
• Versão para uso na Internet: RFC 5280
• Usualmente referida como PKIX
PGP: PRETTY GOOD PRIVACY
Rede
chave secreta
de Bob
(randômica)
Mensagem
de Bob
Mensagem
de Bob
cifrada
chave publica
de Alice
criptografia
simétrica
criptografia
assimétrica
Mensagem
Cifrada
Mensagem
Cifrada
Mensagem
de Bob
cifrada
chave privada
de Alice
descriptografia
simétrica
chave secreta
de Bob
descriptografia
assimétrica
Mensagem
de Bob
WEB OF TRUST & PATH SERVERS
COMO SHARAPOVA PODE VALIDAR A MENSAGEM DE MARTINA?
Sharapova
Serena
Martina
Venus
conhece Serena
conhece Venus
conhece Martina
OBS: conhecer é ter a chave pública e a assinatura é feita com a chave privada
Essa chave pública pertence a
Venus. Assinado: Serena
Essa chave pública pertence a
Martina. Assinado: Venus
Mensagem assinada com a
chave privada de Martina
Qual o menor caminho de
validação para chave de Martina?
PKI (PUBLIC KEY INFRASTRUCTURE)
O termo PKI (Infraestrutura de chave pública) é utilizado para
descrever o conjunto de elementos necessários para implementar um
mecanismo de certificação por chave pública.
EMPRESA
A
EMPRESA
B
CA
(Autoridade
Certificadora) certificados certificados
CERTIFICADOS X509
Campo Exemplo
Versão v3
Número de Série 3b 5b 9d 41 f0 00 b6 e4 95 c3 fc 84 24 41 37 f7
Algoritmo de Assinatura sha256RSA (sha256WithRSAEncryption)
Algoritmo de Hash sha256
Emissor CN = GeoTrust SHA256 SSL CA, O = GeoTrust Inc., C = US
Validade de domingo, 16 de outubro de 2016 21:00:00
até terça-feira, 17 de outubro de 2017 20:59:59
Requerente CN = conteudo2.uol.com.br, OU = Universo Online AS, O = Universo Online AS, L =
Sao Paulo, S = Sao Paulo, C = BR
Chave Pública RSA (2048)
.... muitos e muitos bytes ...
Lista de Revogação: URL=http://gj.symcb.com/gj.crl
Assinatura Digital 67 30 f1 f0 07 72 f6 99 d1 14 a1 dc 98 31 84 49 a9 e9 98 cf
AUTORIDADE CERTIFICADORA
C.A.
(Certification Authority)
Subject Assinatura Digital
Autoridade
Certificadora
(Verisign,
Certisign,
Etc.)
Chave pública
(e.g., Banco do Brasil)
CHAVE
PRIVADA
Issuer
Certificado X509
www.bancodobrasil.com.br
Banco do Brasil S.A.
Brasilia, DF, Brasil
www.verisign.com
Verisign, Inc.
NOMENCLATURA X509
Um certificado X509 é emitido para um distinguished name.
DN Field Abbrev. Description Example
Common Name CN Name being certified CN=Joe Average
Organization or
Company O
Name is associated with this
organization O=Snake Oil, Ltd.
Organizational Unit OU Name is associated with this
organization unit, such as a department
OU=Research
Institute
City/Locality L Name is located in this City L=Snake City
State/Province ST Name is located in this State/Province ST=Desert
Country C Name is located in this Country (ISO
code) C=XZ
ESTRATÉGIAS DE CERTIFICAÇÃO
O software que recebe o certificado (por exemplo, o browser) deve possuir a chave pública da autoridade certificadora.
Base
de
chaves
Subject Assinatura
Issuer
VERISIGN: www.verisign.com
Off-line On-line
www.google.com
TIPOS DE CERTIFICADOS
• Certificado Root
• Auto assinado
• Representa uma Autoridades Certificadoras (CA)
• Validado com sua própria chave pública
• O certificado precisa estar previamente armazenado
• Certificados Intermediários
• Assinado por um certificado Root ou Intermediário
• Representa uma Autoridade Certificadora (CA)
• Usado para assinar o certificado da Entidade Final
• O certificado não precisa estar previamente armazenado
• Certificados de Entidade Final
• Assinado com um certificado Root ou Intermediário
• Usado para identificar Servidores HTTP e outros serviços
• O certificado não precisa estar previamente armazenado
CADEIA DE CERTIFICAÇÃO
Certificados Intermediários são usados para:
• Escalabilidade no processo de geração de certificados
• Redução do risco de exposição da chave privada do
Root
• Redução dos certificados comprometidos em caso de
exposição da chave privada
Entidade Final
Subject: www.uol.com.br
Issuer: RapidSSL SSHA56
C.A. Intermediária
Subject: RapidSSL SHA256
Issuer: GeoTrust Global
C.A. Root
Subject: GeoTrust Global
Issuer: GeoTrust Global
Entidade Final
Subject: www.uol.com.br
Issuer: RapidSSL SSHA56
-----
C.A. Intermediária
Subject: RapidSSL
SHA256 Issuer: GeoTrust
Global
-----
C.A. Root
Subject: GeoTrust Global
Issuer: GeoTrust Global
Cadeia completa
transmitida ao cliente
(Apenas o root é opcional)
REVOGAÇÃO DE CERTIFICADOS
• De acordo com a RFC 5280: PKIX
• Certificados são identificados por números de série
• Unicos para cada C.A.
• CRL: Certificate Revogation List
• Lista de certificados revogados assinados pela CA e disponível publicamente
em um repositório
• Certificados são identificados pelo seu “numero de série”
• CRLs são atualizadas periodicamente pela CA
• Clientes fazem verificação periódica das CRLs
COMO A CRIPTOGRAFIA PODE SER
IMPLEMENTADA?
HTTP, FTP, SSH,
TELNET, etc.
TCP, UDP
Enlace
IP
Física
Aplicações
Interface de
Rede
aplicação
transporte
rede
enlace
física
Seqüência de
empacotamento
Sistema
Operacional
(Kernel)
Aplicação
SOCKET
INTERFACE
SEGURANÇA FEITA PELA APLICAÇÃO
SSL E TLS
SSL: Secure Socket Layer
• Definido pela Netscape
• Ultima versão: 3.0 (0.3% das conexões HTTPs feitas pelo Firefox)
• Considerado vulnerável atualmente (ataques POODLE e BEAST)
TLS: Transport Layer Security
• Definido pelo IETF
• Versão 1.0: RFC 2246 (Janeiro de 1999)
• TLS 1.0 também é considerado vulnerável a ataques BEAST (javascript)
• Versão atual: 1.2
• O TLS 1.0 é baseado no SSL 3.0, mas introduziu melhorias que o tornam
mais seguro
• Novas melhorias foram introduzidas nas versões TLS 1.1 e TLS 1.2
INÍCIO DE UMA CONEXÃO SEGURA
• Existem duas formas de um Cliente iniciar uma conexão segura
(TLS/SSL) com um Servidor:
• Por porta (modo explícito):
• O cliente conecta-se a uma porta diferente para iniciar a conexão
segura:
• Exemplo: 80 para conexão normal, 443 para conexão segura
• Por protocolo (modo implícito)
• O cliente envia um “hello” desprotegido para o servidor e inicia um
handshake
• Se o handshake for bem sucedido, comuta para o modo seguro
• Exemplo: STARTTLS usado pelo SMTP
INICIALIZAÇÃO POR PORTA
TCP/IP
POP IMAP SMTP HTTP TELNET
110 143 25 80 22
SOCKET Interface
POPS IMAPS SMTPS HTTPS TELNETS
995 993 465 443 992
SSL/TLS Interface
SOCKET Interface
EXEMPLO: HTTPS
CLIENTE SERVIDOR
SOCKS
SSL
>1023
>1023
SOCKS
SSL 443
80
HTTP
HTTPS
Recurso
Não
Protegido
Recurso
Protegido
X
TLS - VISÃO SIMPLIFICADA Servidor
(Subjet) Autoridade
Certificadora
1 O servidor gera um par de chaves
assimétricas (pública e privada)
Chave privada
{PriS}
Chave pública
{PubS}
2
O servidor envia um CSR ,
contendo sua chave pública para a CA
A CA envia o certificado X509 para o
servidor 4
CSR
[PubS]
Certificado
[PubS][AssCA]
3
Chave privada
{PriCA} Certificado
[PubS][AssCA]
CSR
[PubS]
A CA assina o CSR
TLS- VISÃO SIMPLIFICADA
Cliente Servidor
(Subject) Requisição TCP para um
recurso protegido
Chave privada
{PriS}
Chave pública
{PubS}
O servidor envia o seu
certificado para o cliente 6
Certificado
[PubS][AssCA]
5
7
Certificado
[PubS][AssCA] Chave pública
{PubCA}
O cliente valida o
certificado usando a chave
pública da CA e extrai a
chave pública do servidor
Chave pública
{PubS} 8
O cliente envia um segredo aleatório
{SegC} criptografado com a chave
pública do servidor
{{SegC}PubS}
TLS - VISÃO SIMPLIFICADA
Cliente
Servidor
(Subject)
9
O servidor decifra o segredo
do cliente usando sua chave
privada Segredo
{SegC}
10
Chave privada
{PriS}
{(Dados)SecC}
{{SegC}PubS}
Cliente e Servidor geram uma chave secreta a
partir do segredo aleátório
Segredo
{SegC}
Cliente e Servidor se comunicam com criptografia
simétrica usando a chave secreta.
Chave Secreta
{SecC}
Chave Secreta
{SecC}
TLS: OBJETIVOS
Segurança criptográfica entre dois pontos.
Interoperabilidade: cliente e servidor de fabricantes diferentes.
Extensibilidade: novos algoritmos de criptografia podem ser incorporados quando necessário.
Eficiência: reduzir o uso de CPU e o tráfego de rede a níveis aceitáveis.
TLS: SUB-PROTOCOLOS
• TLS Handshake Protocol
• Utilizado para negociar o algoritmo e as chaves de criptografia
antes que o primeiro byte da comunicação seja transmitido.
• TLS Record Protocol
• Utilizado para encapsular os protocolos das camadas superiores.
• Para controle de integridade, MAC (Message Authentication Code)
ou HMAC é adicionado a cada registro.
TLS RECORD PROTOCOL
TLS HANDSHAKE
Source: https://hpbn.co/transport-layer-security-tls/
TLS HANDSHAKE
• Escolha dos algoritmos de assinatura e criptografia
• Troca de certificados entre o cliente e o servidor
• Troca de segredo compartilhado para geração da chave secreta
SSL/TLS
O cliente se autentica para o servidor (opcional)
O servidor se autentica para o cliente (obrigatório)
ESCOLHA DO ALGORITMO DE
CRIPTOGRAFIA
O cliente oferece uma lista de opções de algoritmos de criptografia
para o servidor.
O servidor escolhe um dos algoritmos e informa o cliente.
A comunicação segura acontece usando uma chave secreta gerada
de acordo com o algoritmo escolhido.
info
(chave secreta
aleatória)
info
(chave secreta
aleatória)
TLS HANDSHAKE: CLIENTE HELLO
TLS HANDSHAVE: SERVER HELLO
Identificação
do CA
AUTENTICAÇÃO DO SERVIDOR
• O envio do certificado do servidor para o cliente é obrigatório.
• Caso o certificado tenha sido assinado por uma CA intermediária, o
certificado da CA também precisa ser enviado.
SSL
Identificação do
Servidor
Chave pública
do servidor
Assinatura Digital
de uma CA
TLS HANDSHAKE: SERVER CERTIFICATE
CERTIFICADOS DE SERVIDOR
• Both Alice and Bob generate their
own public and private keys.
• Both Alice and Bob hide their
respective private keys.
• Alice shares her public key with
Bob, and Bob shares his with
Alice.
• Alice generates a new message
for Bob and signs it with her
private key.
• Bob uses Alice’s public key to
verify the provided message
signature.
AUTENTICAÇÃO DO CLIENTE
O envio do certificado do cliente é requisitado pelo servidor.
Esse mecanismo é opcional, e permite autenticar a máquina do
usuário sem intervenção manual.
SSL
Identificação
do CA
Identificação do
Cliente
Chave pública
do Cliente
Assinatura Digital
de uma CA
CERTIFICADOS DE CLIENTE
TLS HANDSHAKE: RESUMO
1. TLS é executado sobre uma conexão TCP já estabelecida
2. O cliente envia a versão de TLS e a lista de ciphersuites
suportados para o servidor.
3. O servidor envia para o cliente o ciphersuite escolhido e seu
certificado. Opcionalmente solicita o certificado do cliente.
4. O cliente inicia uma troca de chaves do tipo RSA ou Diffie-Hellman
para estabelecer a sessão segura baseada em chave secreta
5. O servidor envia uma mensagem criptografada com a chave
secreta
6. O cliente descriptografa a mensagem gerada com a chave
secreta.
ESCOLHA DO ALGORITMO DE
CRIPTOGRAFIA
info
(chave secreta aleatória)
info
(chave secreta aleatória)
API SSL Cria contexto
API: SSL_CTX_new
(SSL_CTX *)
Cria um socket TCP (socket)
> 1023 > 80
Associa o socket ao contexto
API: SSL_set_bio
(SSL *ssl)
Verifica o certificado do servidor
SSL_get_verify_result(SSL * ssl)
Efetua a conexão SSL
SSL_connect( SSL *ssl)
(chave secreta associada ao socket SSL)
Envia dados criptografados
SSL_write(SLL *ssl, ...)
Recebe dados já descriptografados
SSL_read(SSL * ssl, ...)
Encerra conexão e libera recursos
SSL_shutdown(ssl)
SSL_free(ssl)
Carrega bibliotecas
Define versão do SSL
Carrega certificado do cliente
Carrega certificados da CA
Certificado do Servidor
[Requisição do certificado cliente]
segredos
Dados criptografados com a chave
secreta
Dados criptografados com a chave
secreta
CONCLUSÃO
Criptografia Simétrica
• Chaves de pelo menos 128 bits
• Rápido
• Usado para proteção de dados
Criptografia Assimétrica
• Chaves de pelo menos 2048 bits
• Lento
• Usado no processo de negociação de chaves
Top Related