69
CRIPTOGRAFIA ASSINATURAS DIGITAIS CERTIFICADOS DIGITAIS SSL/TLS Professor Edgard Jamhour

CRIPTOGRAFIA ASSINATURAS DIGITAIS ... - ppgia.pucpr.brjamhour/Pessoal/Graduacao/Ciencia/... · CRIPTOGRAFIA ASSINATURAS DIGITAIS CERTIFICADOS DIGITAIS SSL/TLS Professor Edgard Jamhour

Embed Size (px)

Citation preview

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