cryptography oracle attacks
TRANSCRIPT
![Page 1: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/1.jpg)
Cryptography Oracle Attacks
![Page 2: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/3.jpg)
Não são tópicos desta apresentação…
![Page 4: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/6.jpg)
O Problema
![Page 7: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/8.jpg)
• 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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/10.jpg)
Cifra de Bloco:Modo Electronic Code Book (ECB)
![Page 11: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/18.jpg)
Erro Comum"Xoring Man"
![Page 19: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/21.jpg)
DEMO Time
![Page 22: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/22.jpg)
Estudo de Caso: Cifra de Bloco
![Page 23: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/23.jpg)
Cabeçalho da Página “My Account”
![Page 24: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/24.jpg)
Cookie EE é re-enviado em cada requisição
![Page 25: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/25.jpg)
Base-64 dos Cookies EE decodificados
![Page 26: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/26.jpg)
Base-64 dos Cookies EE decodificados: Repetições
![Page 27: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/27.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/28.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/29.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/30.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/31.jpg)
Impersonation Attack
E finalmente...SUCESSO!
![Page 32: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/32.jpg)
Resumo do Estudo de Caso...
Qual o modo de operação utilizado?
![Page 33: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/33.jpg)
Estudo de CasoPadding Oracle
● Vídeo
● Demo de quebra CBC
![Page 34: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/34.jpg)
Ataques de Canal Lateral
![Page 35: Cryptography Oracle Attacks](https://reader031.vdocuments.us/reader031/viewer/2022021814/58efd20a1a28ab562b8b45f9/html5/thumbnails/35.jpg)
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