cryptography oracle attacks

36
Cryptography Oracle Attacks

Upload: diego-mariano

Post on 14-Apr-2017

147 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Cryptography Oracle Attacks

Cryptography Oracle Attacks

Page 2: Cryptography Oracle Attacks

Introdução - Diego Mariano

• No mundo corporativoCoordenador de Segurança de Canais Digitais – Itaú Unibanco

• Nas horas vagas…Doutorando em Engenharia da Computação - POLI USPÁrea de Pesquisa: Protocolos Criptográficos

Page 3: Cryptography Oracle Attacks

Não são tópicos desta apresentação…

Page 4: Cryptography Oracle Attacks

Tópicos

• O Problema• Conceitos Básicos• O que é Oracle• Análise de Cifras• Erro Comum - DEMO• Estudos de Caso• Ataques de Canal Lateral

Page 5: Cryptography Oracle Attacks

Objetivo

• Entender e reconhecer algumas características de implementação criptográfica "não muito boa".

• Técnicas básicas para analisar e identificar dados cifrados.

Page 6: Cryptography Oracle Attacks

O Problema

Page 7: Cryptography Oracle Attacks

Conceitos Muito Básicos• Cifração – Cipher• Chave – Key• Vetor de Inicialização – Initialization Vector (IV)• Texto aberto – Plaintext• Texto cifrado – Ciphertext• Cifrar – Encryption• Decifrar – Decryption• Cifra de Bloco – Block Cipher• Cifra de Fluxo – Stream Cipher

Page 8: Cryptography Oracle Attacks

• Cifras de Bloco– Opera em grupos de comprimento fixo de bytes, chamados blocos.– Os tamanhos dos blocos variam dependendo do algoritmo.– Vários modos diferentes de operação para cifração de mensagens maiores do que o

tamanho básico do bloco.– Exemplos: DES, 3DES, Blowfish, IDEA, Skipjack, AES

• Cifras de fluxo– Opera no texto um byte por vez.– Uma keystream é gerada independentemente dos dados da mensagem, e então

combinada com o texto (para cifrar) ou texto cifrado (para decifrar).– Exemplos: RC4, ORYX, SEAL

Cifração Simétrica

Page 9: Cryptography Oracle Attacks

Cifra de Bloco:Modo Electronic Code Book (ECB)

• Blocos de texto de tamanho fixo são cifrados independentemente• Cada bloco de texto é substituído por bloco de texto cifrado• Desvantagens

– Estrutura em texto é refletida no texto cifrado;– Blocos de texto cifrado podem ser alterados sem detecção.

Page 10: Cryptography Oracle Attacks

Cifra de Bloco:Modo Electronic Code Book (ECB)

Page 11: Cryptography Oracle Attacks

Cifra de Bloco:Modo Cipher Block Chaining (CBC)

• Cada bloco de texto é combinado (XOR) com o bloco de texto cifrado anterior antes de ser cifrado.

• Alteração da mensagem afeta todos os blocos de texto cifrado seguintes.• Vetor de Inicialização é usado para cifrar o 1° bloco.

Page 12: Cryptography Oracle Attacks

Cifra de Fluxo

• A mensagem de texto é processada byte por byte (um fluxo).• O algoritmo Key Scheduler gera uma keystream usando uma chave

e um IV.• O texto cifrado é gerado através de um XOR entre o texto e uma

keystream.

Page 13: Cryptography Oracle Attacks

O Que é Oracle

• Um sistema que recebe queries e provê respostas.• Queries podem ser:– Texto– Texto cifrado

• Respostas podem ser:– Texto correspondente– Texto cifrado correspondente– Informação sobre operação

Page 14: Cryptography Oracle Attacks

Análise - Crypto Recon

• O comprimento dos dados cifrados é um múltiplo do tamanho de um bloco?– Provê indicação de que pode ser uma cifra de bloco.

• Existem blocos de dados que parecem repetir na mesma mensagem cifrada ou por várias mensagens cifradas?– Possivelmente modo ECB– Determine o tamanho do bloco e tente alterar blocos individuais ou trocar blocos

entre mensagens.• Várias mensagens cifradas começam com o mesmo bloco ou série de blocos?

– Possivelmente modo CBC com um IV estático– A troca de blocos não é possível porque mudar um bloco afeta os próximos blocos.

Page 15: Cryptography Oracle Attacks

Erro ComumProprietary Substitution Cipher

• Ocasionalmente, as pessoas tentam fazer seus próprios algoritmos.– E não são criptógrafos...

Page 16: Cryptography Oracle Attacks

Erro ComumProprietary Substitution Cipher

• Cada caracter é substituído com uma seleção “aleatória”, porém única de 2 ou 3 caracteres.– Exemplo: “hello” se torna “KqIKefKPrPKPrPKuJXK”

• Existe substituição?– Submeter “AAAA” : Recebe “KLoKLoKLoKLoK”– Existe!

• Existe transposição?– Submeter “AABB” : Recebe “KLoKLoKaBeKaBeK”– Não!

Page 17: Cryptography Oracle Attacks

Erro ComumProprietary Substitution Cipher

• Mais padrões– O “K” parece ser um delimitador– Substituição não altera posição– Uma substituição por letra– Submeter “BABA” : Recebe “KaBeKLoKaBeKLoK”– Submeter: “abcdefghi...XYZ0123456789” : Recebe a chave inteira!

Page 18: Cryptography Oracle Attacks

Erro Comum"Xoring Man"

Page 19: Cryptography Oracle Attacks

Erro Comum"Xoring Man"

• Cifra– c1 = k m1⊕– c2 = k m2⊕

• Podemos calcular– c1 c2 =(k m1) (k m2) = m1 m2⊕ ⊕ ⊕ ⊕ ⊕

• Isso vaza informação sobre m1 e m2!– m1 m2 revela onde m1, m2 diferem⊕

Page 20: Cryptography Oracle Attacks

Erro Comum"Xoring Man"

• Todas as letras começam com 01...

• O caracter espaço começa com 00...

• XOR de duas letras resulta em 00...

• XOR de letras e espaço resulta em 01...

• Fácil identificar XOR de letra e espaço!

Page 21: Cryptography Oracle Attacks

DEMO Time

Page 22: Cryptography Oracle Attacks

Estudo de Caso: Cifra de Bloco

Page 23: Cryptography Oracle Attacks

Cabeçalho da Página “My Account”

Page 24: Cryptography Oracle Attacks

Cookie EE é re-enviado em cada requisição

Page 25: Cryptography Oracle Attacks

Base-64 dos Cookies EE decodificados

Page 26: Cryptography Oracle Attacks

Base-64 dos Cookies EE decodificados: Repetições

Page 27: Cryptography Oracle Attacks

Determinando a construção do Token

Os únicos blocos variáveis são os 2 últimos◦ Possivelmente um timestamp do “último acesso”

Registrar outra conta com nome de usuário de ‘c’ x 32, o máximo comprimento permitido, e observar o valor do cookie EE.

O token é mais longo! A repetição dos blocos de texto cifrado espelha os caracteres ‘c’

repetidos no texto do nome de usuário.

Page 28: Cryptography Oracle Attacks

Determinando a construção do Token Registre outra conta com um nome de usuário de ‘c’ x 16, e compare

com o cookie EE gerado no passo anterior.

Por que não vemos dois blocos idênticos para ‘c’ x 16 e quatro blocos idênticos para ‘c’ x 32?

Deve haver entre 1 e 7 caracteres no início do texto, que é o offset do nome de usuário. Por ex.: “xxxx|cccccccc...”

Page 29: Cryptography Oracle Attacks

Determinando a localização do Offset

Determinar a localização do delimitador, para assegurar que os offsets estão corretos.

Contas de usuário adicionais foram criadas com nomes de usuário específicos, para determinar se há padding inicial no 1° bloco.

Page 30: Cryptography Oracle Attacks

Impersonation Attack Sabe-se, através de uma outra vulnerabilidade de enumeração de

usuário, que existe um usuário chamado “siteadmin”.

Para se passar por esse usuário, precisamos obter os blocos de texto cifrado válidos.

Page 31: Cryptography Oracle Attacks

Impersonation Attack

E finalmente...SUCESSO!

Page 32: Cryptography Oracle Attacks

Resumo do Estudo de Caso...

Qual o modo de operação utilizado?

Page 33: Cryptography Oracle Attacks

Estudo de CasoPadding Oracle

● Vídeo

● Demo de quebra CBC

Page 34: Cryptography Oracle Attacks

Ataques de Canal Lateral

Page 35: Cryptography Oracle Attacks

Conclusão

• O que não fazer– Algoritmos proprietários– Modos de operação inseguros (ECB, CBC)– Reuso de chave– Tamanho de chave insuficiente– Textos cifrados não assinados– Uso incorreto de uma API

Page 36: Cryptography Oracle Attacks

Obrigado!Diego Mariano

[email protected]

@diegomcampos