You are on page 1of 42

Contornando Criptografia

Diego F. Aranha, dfaranha@ic.unicamp.br


Instituto de Computac
ao
UNICAMP

dfaranha (IC)

Contornando Criptografia

1/37

Introducao
Criptografia e difcil. Para funcionar a contento, uma tecnica
criptografica depende de in
umeros fatores:
- Um problema difcil subjacente;
- Um algoritmo que use o problema como fonte de seguranca;
- Uma forma segura de gerar e armazenar chaves para o algoritmo;
- Um protocolo que especifique como o algoritmo sera usado;
- Uma implementac
ao correta, segura e eficiente;
- Um regime jurdico amigavel?
Risco: Falsa sensacao de seguranca.

dfaranha (IC)

Contornando Criptografia

2/37

Introducao

Quando boa parte das premissas sao satisfeitas, as garantias podem ser
fortes. Segundo as Leis de Shamir:
1 Sistemas absolutamente seguros n
ao existem nem existirao no

futuro.
2 Para reduzir `
a metade o grau de vulnerabilidade, e preciso o dobro

do investimento.
3 Criptografia
e tipicamente contornada, nao penetrada.

Observacao: O papel da tecnica criptografica e nao ser ponto fraco.

dfaranha (IC)

Contornando Criptografia

3/37

Mudanca ligeira de paradigma


Classicamente, sempre se considerou que adversarios racionais
contornariam tecnicas criptograficas ao inves de ataca-las diretamente.
Entretanto, mecanismos de seguranca muitas vezes sao projetados e
implementados de maneira tao insegura quanto o restante do software.
Atacantes suficientemente equipados ja atacam criptografia
fraca/moderada. Evidencias:
- Flame utilizava variante nova de ataque de colisao ao MD5 para se
disseminar por certificado legado da Microsoft.
- NSA possivelmente quebra criptografia assimetrica com parametro
de tamanho insuficiente (Logjam).
- Agencias de inteligencia armazenam trafego para criptanalise futura.
- Ataque de busca exaustiva no caso conhecido como Apple vs FBI.

dfaranha (IC)

Contornando Criptografia

4/37

Mudanca ligeira de paradigma

Componentes que facilitam a tarefa para o atacante, em grau crescente


de complexidade de ataque:
1 Gera
c
ao de n
umeros aleat
orios;
2 Escolha de algoritmos, tamanhos de chaves e par
ametros;
3 Armazenamento/distribui
c
ao de chaves criptograficas;
4 Valida
c
ao insuficiente de chave p
ublica e certificados;
5 Canais laterais em implementac
oes de criptografia.

dfaranha (IC)

Contornando Criptografia

5/37

Geracao de numeros aleatorios

Figura: https://xkcd.com/221/

Vulnerabilidade
Utilizar dados com baixa aleatoriedade no lugar de valores
pseudo-aleatorios ou verdadeiramente aleat
orios compromete a maioria
dos mecanismos de seguranca.

dfaranha (IC)

Contornando Criptografia

6/37

Geracao de numeros aleatorios


Problemas:
- Valores ou sementes previsveis (tomadas de tempo);
- Geradores obsoletos/inseguros como Mersenne Twister;
- Funcoes de proposito geral (rand()/srand());
- Fontes p
ublicas/n
ao-confiadas como http://www.random.org;
- Projetar ou implementar seu pr
oprio gerador pseudo-aleatorio;
- Entropia insuficiente em sistemas embarcados;
- Testes estatsticos apenas da sada do gerador.
Defesa: Pesquisar cuidadosamente melhor opcao para
arquitetura/linguagem/sistema operacional.
Dicas: RDRAND, /dev/urandom, RtlGenRandom().

dfaranha (IC)

Contornando Criptografia

7/37

Geracao de numeros aleatorios

Exemplos:
- Implementacao SSL no navegador Netscape Navigator 1.1;
- Manutencao incorreta da biblioteca OpenSSL na plataforma Debian;
- Vazamento da chave privada da Sony por assinaturas digitais
ECDSA utilizando valores repetidos;
- Vazamento de chave privada de usuarios de BitCoin na plataforma
Android;
- Fatoracao de chaves p
ublicas RSA que compartilham fatores primos.

dfaranha (IC)

Contornando Criptografia

8/37

Geracao de numeros aleatorios


Semente aleat
oria e secreta (Aranha et al., 2014):

dfaranha (IC)

Contornando Criptografia

9/37

Geracao de numeros aleatorios

Figura: Got HW crypto? On the (in)security of a Self-Encrypting Drive series


(Alendal et al. 2015).

dfaranha (IC)

Contornando Criptografia

10/37

Geracao de numeros aleatorios

dfaranha (IC)

Contornando Criptografia

11/37

Escolha de algoritmos e parametros


Vulnerabilidade
Utilizar algoritmos demonstradamente inseguros ou algoritmos seguros
com tamanhos de parametros inadequados fragiliza a tecnica
criptografica.

Discussao:
- Exemplo de funcao de hash resistente a colisao?

dfaranha (IC)

Contornando Criptografia

12/37

Escolha de algoritmos e parametros


Vulnerabilidade
Utilizar algoritmos demonstradamente inseguros ou algoritmos seguros
com tamanhos de parametros inadequados fragiliza a tecnica
criptografica.

Discussao:
- Exemplo de funcao de hash resistente a colisao? SHA-2/3
- Exemplo de cifra de bloco segura?

dfaranha (IC)

Contornando Criptografia

12/37

Escolha de algoritmos e parametros


Vulnerabilidade
Utilizar algoritmos demonstradamente inseguros ou algoritmos seguros
com tamanhos de parametros inadequados fragiliza a tecnica
criptografica.

Discussao:
- Exemplo de funcao de hash resistente a colisao? SHA-2/3
- Exemplo de cifra de bloco segura? AES (disponvel em hardware!)
- Exemplo de cifra de fluxo segura?

dfaranha (IC)

Contornando Criptografia

12/37

Escolha de algoritmos e parametros


Vulnerabilidade
Utilizar algoritmos demonstradamente inseguros ou algoritmos seguros
com tamanhos de parametros inadequados fragiliza a tecnica
criptografica.

Discussao:
- Exemplo de funcao de hash resistente a colisao? SHA-2/3
- Exemplo de cifra de bloco segura? AES (disponvel em hardware!)
- Exemplo de cifra de fluxo segura? AES-CTR
- Exemplo de cifracao assimetrica segura?

dfaranha (IC)

Contornando Criptografia

12/37

Escolha de algoritmos e parametros


Vulnerabilidade
Utilizar algoritmos demonstradamente inseguros ou algoritmos seguros
com tamanhos de parametros inadequados fragiliza a tecnica
criptografica.

Discussao:
- Exemplo de funcao de hash resistente a colisao? SHA-2/3
- Exemplo de cifra de bloco segura? AES (disponvel em hardware!)
- Exemplo de cifra de fluxo segura? AES-CTR
- Exemplo de cifracao assimetrica segura? RSA PKCS #1 v2.1
- Exemplo de acordo de chaves seguro?

dfaranha (IC)

Contornando Criptografia

12/37

Escolha de algoritmos e parametros


Vulnerabilidade
Utilizar algoritmos demonstradamente inseguros ou algoritmos seguros
com tamanhos de parametros inadequados fragiliza a tecnica
criptografica.

Discussao:
- Exemplo de funcao de hash resistente a colisao? SHA-2/3
- Exemplo de cifra de bloco segura? AES (disponvel em hardware!)
- Exemplo de cifra de fluxo segura? AES-CTR
- Exemplo de cifracao assimetrica segura? RSA PKCS #1 v2.1
- Exemplo de acordo de chaves seguro? ECDH/Curve25519

dfaranha (IC)

Contornando Criptografia

12/37

Escolha de algoritmos e parametros


Problemas:
- Escolha inadequada da propriedade de seguranca
(sigilo/autenticacao/irretratabilidade);
- Projetar ou personalizar algoritmos criptograficos;
- Customizar implementac
oes de algoritmos criptograficos;
- Violar especificacao de algoritmos criptograficos;
- Utilizar one-time pad;
- Configuracao para agilidade permite deterioracao;
- Depositar confianca no sigilo do algoritmo/implementacao;
- Cifrar sem autenticar (especialmente em cifras de fluxo!).

dfaranha (IC)

Contornando Criptografia

13/37

Escolha de algoritmos e parametros

Defesas:
- Definir precisamente propriedades de seguranca;
- N
ao projetar ou implementar algoritmos criptograficos (a nao ser
que voce saiba mesmo o que esta fazendo);
- Respeitar especificacao de algoritmos (nonces!)
- Controlar conjunto de algoritmos para agilidade;
- Utilizar algoritmos padronizados e revisados por comunidade;
- Consultar tamanhos de chaves em http://www.keylength.com;
- Utilizar modo de operacao para cifrac
ao autenticada (AES-GCM).

dfaranha (IC)

Contornando Criptografia

14/37

Escolha de algoritmos e parametros

Figura: Cifracao de imagem utilizando modos de operacao distintos (Wikipedia).

dfaranha (IC)

Contornando Criptografia

15/37

Escolha de algoritmos e parametros

Figura: Probabilidade de recuperar byte em certa posicao, dadas 224 cifracoes


RC4 (Bernstein et al., 2013).

dfaranha (IC)

Contornando Criptografia

16/37

Escolha de algoritmos e parametros

Figura: Deterioracao de DH em PFS para 512 bits (Adrian et al., 2015).

dfaranha (IC)

Contornando Criptografia

17/37

Escolha de algoritmos e parametros

Figura: Ataque de personificacao e violacao de integridade no iMessage


(Garman et al., 2016).
dfaranha (IC)

Contornando Criptografia

18/37

Escolha de algoritmos e parametros

Figura: Ataque de violacao de integridade dos resultados (Grupo 1, TPS 2016).

dfaranha (IC)

Contornando Criptografia

19/37

Escolha de algoritmos e parametros

dfaranha (IC)

Contornando Criptografia

20/37

Armazenamento e derivacao de chaves


Vulnerabilidade
Chaves criptograficas compartilhadas ou armazenadas na superfcie de
ataque podem ser capturadas pelo atacante.

Figura: Sentido correto da funcao de resumo criptografico.

dfaranha (IC)

Contornando Criptografia

21/37

Armazenamento e derivacao de chaves


Problemas:
- Compartilhar chaves entre dispositivos distintos;
- Derivar chaves a partir de conjunto pequeno (k = H(Varejo));
- Armazenar chaves de maneira insegura (c
odigo-fonte).
Defesa:
- Utilizar funcoes de derivacao de chaves para atribuir chaves (PHC!);
- Utilizar criptografia assimetrica;
- Utilizar capacidade para armazenamento seguro de chaves (TPM!);
- Converter problema de armazenamento em autenticacao.

dfaranha (IC)

Contornando Criptografia

22/37

Armazenamento e derivacao de chaves

Figura: Compartilhamento massivo e armazenamento inseguro de chave que


cifra mdias de urnas eletr
onicas (Aranha et al., 2014)

dfaranha (IC)

Contornando Criptografia

23/37

Validacao de chave publica

Vulnerabilidade
Algoritmos para cifracao assimetrica s
o fornecem seguranca se chave
p
ublica for autentica.
Defesa: Verificar autenticidade de certificado do lado do cliente:
1 Verificar assinatura do certificado;
2 Verificar cadeia de certificac
ao;
3 Verificar revogac
ao do certificado;
4 N
ao confiar base local de certificados autoassinados;
5 Equipar cliente com informac
ao sobre certificado futuro (pinagem!).

dfaranha (IC)

Contornando Criptografia

24/37

Validacao de chave publica

Figura: Ataque NSA/GCHQ de inteceptacao de trafego SSL (Fantastico).


dfaranha (IC)

Contornando Criptografia

25/37

Validacao de chave publica

Figura: Em Maio, 6/7 aplicativos bancarios brasileiros vulneraveis a ataques


MITM, revelando credenciais e informacao financeira (Aranha et al., 2015).

dfaranha (IC)

Contornando Criptografia

26/37

Ataques de canal lateral


Do ingles side-channel attacks, utilizam informac
oes coletadas durante o
funcionamento de uma implementacao especfica do algoritmo para
comprometer as propriedades de seguranca fornecidas pelo mesmo.
Ataques de canal lateral podem ser divididos em algumas classes,
dependendo da natureza da informacao utilizada:
- Tratamento de erros: erros na execucao do algoritmo;
- Temporizac
ao: variancia em tempo de execucao;
- Pot
encia: variancia no consumo de energia;
- Eletromagn
eticos ou ac
usticos: emanac
oes do dispositivo;
- Remanesc
encia: recuperacao de dados latentes;
- Injec
ao de falhas: alteracao no fluxo de execucao ou valores
intermediarios.
Importante: Em ordem crescente de grau de intrusao.
dfaranha (IC)

Contornando Criptografia

27/37

Ataques de canal lateral


Ataques de temporizacao
Se o tempo de execucao de um algoritmo sofrer alteracao dependendo de
bits da chave, a informacao de tempo permite recuperar porcoes exatas
da chave criptografica.
EXTERN_C int __cdecl memcmp ( const void * Ptr1 ,
const void * Ptr2 , size_t Count ) {
INT v = 0;
BYTE * p1 = ( BYTE *) Ptr1 ;
BYTE * p2 = ( BYTE *) Ptr2 ;
while ( Count - - > 0 && v == 0) {
v = *( p1 ++) - *( p2 ++);
}
return v ;
}

Defesa: Implementacoes executadas em tempo constante, independente


do padrao da chave ou entrada.
dfaranha (IC)

Contornando Criptografia

28/37

Ataques de canal lateral


int util_cmp_const ( const void *a , const void *b ,
const size_t size ) {
const unsigned char * _a = ( const unsigned char *) a ;
const unsigned char * _b = ( const unsigned char *) b ;
unsigned char result = 0;
size_t i ;
for ( i = 0; i < size ; i ++) {
result |= _a [ i ] ^ _b [ i ];
}

return result ; /* returns 0 if equal , nonzero otherwise */


}

Importante: Rudo de rede nao e suficiente para ofuscar vazamento!


Exemplos:
- Tempo de resposta da mem
oria cache (implementacoes do AES);
- Algoritmos de exponenciacao executam operac
oes com latencia
diferente, dependendo dos bits da chave.
dfaranha (IC)

Contornando Criptografia

29/37

Ataques de canal lateral


Ataques de potencia
O consumo de energia de uma implementacao varia com o tipo e
operandos das instrucoes sendo executadas.

Figura: Extracao de chave por potencia/toque (Genkin et al., 2015)

Defesa: Utilizar implementac


oes regulares em energia e instrucoes!
dfaranha (IC)

Contornando Criptografia

30/37

Ataques de canal lateral


Ataques eletromagneticos ou acusticos
Analogos aos anteriores, mas natureza distinta!

Figura: Extracao de chave por som/emanac


oes (Genkin et al., 2014)

Defesa: Utilizar implementac


oes regulares em energia e instrucoes!
dfaranha (IC)

Contornando Criptografia

31/37

Ataques de canal lateral


Ataques de remanescencia
Objetivam recuperar informacao suspostamente eliminada, a partir de
exame do meio fsico de armazenamento.

Figura: Ataque de inicializacao a frio (coldboot) (Halderman et al., 2008)

Defesa: Utilizar meios de armazenamento volateis e sobrescrever


informacao sensvel com dados aleat
orios, m
ultiplas vezes se preciso.
dfaranha (IC)

Contornando Criptografia

32/37

Ataques de canal lateral


Ataques de injecao de falhas
Consistem em induzir falhas com o objetivo de revelar/manipular estado
interno do dispositivo.

Figura: Injecao de falha em transstores (Becker et al., 2013).

Defesa: Protecao fsica ou mitigacao da informacao vazada.


dfaranha (IC)

Contornando Criptografia

33/37

Conclusao
Criptografia e difcil. Que tal comecar resolvendo as partes mais faceis?

Perguntas?

Diego F. Aranha
https://sites.google.com/site/dfaranha
dfaranha@ic.unicamp.br
@dfaranha

dfaranha (IC)

Contornando Criptografia

34/37

Referencias
[1] N. Heninger, Z. Durumeric, E. Wustrow, J. A. Halderman:
Mining Your Ps and Qs: Detection of Widespread Weak Keys in
Network Devices. USENIX Security 2012: 205-220
[2] D. F. Aranha, M. M. Karam, A. de Miranda, F. Scarel: Software
vulnerabilities in the Brazilian voting machine. In: Design,
Development, and Use of Secure Electronic Voting Systems,
149-175, IGI Global, 2014.
[3] G. Alendal, C. Kison, modg. got HW crypto? On the (in)security
of a Self-Encrypting Drive series.
https://eprint.iacr.org/2015/1002, 2015.
[4] N. J. AlFardan, D. J. Bernstein, K. G. Paterson, B. Poettering, J.
C. N. Schuldt: On the Security of RC4 in TLS. USENIX Security
2013: 305-320
dfaranha (IC)

Contornando Criptografia

35/37

Referencias

[5] D. Adrian, K. Bhargavan, Z. Durumeric, P. Gaudry, M. Green, J.


A. Halderman, N. Heninger, D. Springall, E. Thome, L. Valenta, B.
VanderSloot, E. Wustrow, S. Z. Beguelin, P. Zimmermann:
Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice.
ACM CCS 2015: 5-17
[6] C. Garman, M. Green, G. Kaptchuk, I. Miers, M. Rushanan.
Dancing on the Lip of the Volcano: Chosen Ciphertext Attacks on
Apple iMessage, 2016.
[7] R. J. Cruz, D. F. Aranha: Analise de seguranca de aplicativos
bancarios na plataforma Android. SBSEG 2015.

dfaranha (IC)

Contornando Criptografia

36/37

Referencias
[8] D. Genkin, I. Pipman, E. Tromer: Get Your Hands Off My
Laptop: Physical Side-Channel Key-Extraction Attacks on PCs. J.
Cryptographic Engineering 5(2): 95-112 (2015)
[9] Daniel Genkin, Adi Shamir, Eran Tromer: RSA Key Extraction via
Low-Bandwidth Acoustic Cryptanalysis. CRYPTO (1) 2014: 444-461
[10] J. A. Halderman, S. D. Schoen, N. Heninger, W. Clarkson, W.
Paul, J. A. Calandrino, A. J. Feldman, J. Appelbaum, E. W. Felten:
Lest we remember: cold-boot attacks on encryption keys. Commun.
ACM 52(5): 91-98 (2009)
[11] G. T. Becker, F. Regazzoni, C. Paar, Wayne P. Burleson:
Stealthy Dopant-Level Hardware Trojans. 197-214

dfaranha (IC)

Contornando Criptografia

37/37