Questão:
Qual é a 'complexidade computacional' de um ataque?
Adi
2013-04-18 13:58:55 UTC
view on stackexchange narkive permalink

Estou escrevendo um relatório em linguagem empresarial sobre o MD5. Em minha pesquisa, encontrei um artigo de Yu Sasaki e Kazumaro Aoki explicando seu ataque de pré-imagem de 2 123.4 em MD5.

Eu sei que ele tem algo a ver com a viabilidade (ou em alguns casos, até mesmo a possibilidade) de um ataque, mas não tenho uma boa compreensão do que é exatamente a complexidade computacional.

Então, o que é computacional complexidade nesse contexto? E em que limite podemos dizer que este ataque não é viável ou este ataque não é possível ?

Um responda:
Thomas Pornin
2013-04-18 16:29:00 UTC
view on stackexchange narkive permalink

"Complexidade computacional" é uma medida do esforço de CPU / RAM envolvido na execução de um algoritmo. No caso de um ataque a um algoritmo criptográfico (por exemplo, MD5), a complexidade é medida em relação ao algoritmo atacado. O MD5 processa dados por blocos de 512 bits, portanto tem um "custo elementar" que é a quantidade de CPU necessária para fazer o hash de uma pequena mensagem (de 0 a 447 bits, para ser mais preciso). Como o MD5 oferece uma saída de 128 bits, portanto, para um ataque de pré-imagem (encontrando m tal que MD5 ( m ) = x , onde x é fornecido), o ataque genérico de "sorte" tem um custo médio 2 128 vezes o custo de hash de uma pequena mensagem. Na verdade, o ataque de "sorte" consiste em escolher m aleatórios até que uma correspondência seja encontrada, o que, para uma função hash "perfeita" (um oráculo aleatório) funciona com probabilidade 2 -128 para cada tentativa.

Portanto, expressamos "esforço da CPU" como o número de vezes que a função atacada poderia ser avaliada com tantos ciclos de clock investidos. Esta unidade de medida tem a boa propriedade de mostrar facilmente se uma função está "academicamente quebrada" ou não. O ataque de "sorte" é genérico: funciona para todas as funções hash, independentemente de sua perfeição. O custo médio desse ataque é 2 n para uma função hash com uma saída de n bits. Portanto, qualquer ataque que tenha um desempenho melhor, mesmo que ligeiramente, conta como uma "pausa". No caso do MD5, o ataque apresentado custou 2 123,4 , o que significa que é cerca de 20 vezes mais rápido do que o ataque de "sorte". Mas ainda é completamente inviável na prática. O limite realista para um invasor poderoso (digamos, alguém com o orçamento do Google) é de cerca de 2 80 invocações de MD5.

Obrigado! Esta é exatamente a resposta que eu estava procurando.


Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...