Quebra de Hashes MD5 de Forma Paralela Introdução ao Processamento Paralelo e Distribuído
Sumário o Caracterização do Hardware Utilizado o Caracterização do Problema o Heurísticas aplicadas o Abordagem em divisão de dados o Abordagem na divisão de tarefas o Resultado final o Propostas para melhoria
Sumário Caracterização do Hardware Utilizado o Caracterização do Problema o Heurísticas aplicadas o Abordagem em divisão de dados o Abordagem na divisão de tarefas o Resultado final o Propostas para melhoria
Caracterização do Hardware Utilizado Máquina 1 Intel Core i7 3770K Cores: 4 Threads: 8 Cache L3: 8MB Mem: 16GB
Caracterização do Hardware Utilizado Máquina 2 Intel Core i7 2670QM Cores: 4 Threads: 8 Cache L3: 6MB Mem: 6GB
Sumário Caracterização do Hardware Utilizado Caracterização do Problema o Heurísticas aplicadas o Abordagem em divisão de dados o Abordagem na divisão de tarefas o Resultado final o Propostas para melhoria
Caracterização do Problema 240 hashes MD5 a serem quebradas (excluindo as do próprio time) – 80 hashes de tamanho 4 – 80 hashes de tamanho 5 – 80 hashes de tamanho 6 85 caracteres válidos para combinação – 85 4 combinações = – 85 5 combinações = – 85 6 combinações =
Caracterização do Problema 240 hashes MD5 a serem quebradas (excluindo as do próprio time) – 80 hashes de tamanho 4 – 80 hashes de tamanho 5 – 80 hashes de tamanho 6 85 caracteres válidos para combinação – 85 4 combinações = x 4 bytes = 200 Mb – 85 5 combinações = x 5 bytes = 20,6 Gb – 85 6 combinações = x 6 bytes = 2,05 Tb
Caracterização do Problema 240 hashes MD5 a serem quebradas (excluindo as do próprio time) – 80 hashes de tamanho 4 – 80 hashes de tamanho 5 – 80 hashes de tamanho 6 85 caracteres válidos para combinação – 85 4 combinações = x 4 bytes = 200 Mb – 85 5 combinações = x 5 bytes = 20,6 Gb – 85 6 combinações = x 6 bytes = 2,05 Tb
Como paralelizar ??
Sumário Caracterização do Hardware Utilizado Caracterização do Problema Heurísticas aplicadas o Abordagem em divisão de dados o Abordagem na divisão de tarefas o Resultado final o Propostas para melhoria
Heurísticas aplicadas Estratégia em força bruta para gerar combinações – aaaa, aaab, aaac,...,<<<< – aaaaa, aaaab,..., <<<<< – aaaaaa, aaaaab,..., <<<<<< Estratégia randômica para gerar combinações – abDx, *98N,..., +=mA – aGb9x, 4*G8$,..., $Gm77 – #fbD4, Gt9gN,...,
Sumário Caracterização do Hardware Utilizado Caracterização do Problema Heurísticas aplicadas Abordagem em divisão de dados o Abordagem na divisão de tarefas o Resultado final o Propostas para melhoria
Abordagem na divisão dos dados - 1 Para cada hash MD5 lida do arquivo é disparado 3 Threads cada uma executanda a estratégia de Força Bruta. Para 240 hashes são disparadas 720 Threads. Hash MD5FB : 4aaaaFB : 5aaaaaFB : 6aaaaaaHash MD5FB : 4aaaaFB : 5aaaaaFB : 6aaaaaa
Abordagem na divisão dos dados - 1 Para cada hash MD5 lida do arquivo é disparado 3 Threads cada uma executanda a estratégia de Força Bruta. Para 240 hashes são disparadas 720 Threads. Hash MD5FB : 4aaaFB : 5aaaaaFB : 6aaaaaaHash MD5FB : 4aaaFB : 5aaaaaFB : 6aaaaaa
Abordagem na divisão dos dados - 2 A lista de hashes MD5 será subdividida em 8 subconjuntos. É disparado 3 Threads cada uma executando a estratégia de Força Bruta. Para 8 subconjuntos são disparadas 24Threads. Subconjunto de Hash MD5 FB : 4aaaaFB : 5aaaaaFB : 6aaaaaa Subconjunto de Hash MD5 FB : 4aaaaFB : 5aaaaaFB : 6aaaaaa
Abordagem na divisão dos dados - 2 A lista de hashes MD5 será subdividida em 8 subconjuntos. É disparado 3 Threads cada uma executando a estratégia de Força Bruta. Para 8 subconjuntos são disparadas 24Threads. Subconjunto de Hash MD5 FB : 4aaaFB : 5aaaaaFB : 6aaaaaa Subconjunto de Hash MD5 FB : 4aaaFB : 5aaaaaFB : 6aaaaaa
Sumário Caracterização do Hardware Utilizado Caracterização do Problema Heurísticas aplicadas Abordagem em divisão de dados Abordagem na divisão de tarefas o Resultado final o Propostas para melhoria
Abordagem na divisão de tarefas Gerar todas as combinações possíveis é custoso. – Ponto a ser explorado Hashes a serem quebradas passam a ser inseridas em uma TreeMap – Tempo de consulta log(n)
Abordagem na divisão de tarefas Vetor de caracteres de tamanho
Abordagem na divisão de tarefas Vetor dividido em 8 partes Para cada parte disparado 1 Thread em FB pesquisando a combinação da vez aaaa j<<< kkkk u<<< vvvv E<<< FFFF Q<<< RRRR 1<<< #### [<<< ]]]] <<<<
Abordagem na divisão de tarefas Tamanho 4
Abordagem na divisão de tarefas Tamanho 4
Abordagem na divisão de tarefas Tamanho 4
Abordagem na divisão de tarefas Tamanho 4
Abordagem na divisão de tarefas Sincroniza
Abordagem na divisão de tarefas Vetor de combinações partido em 2 e distribuído para cada máquina Máquina 1Máquina 2
Abordagem na divisão de tarefas Cada máquina executa 8 threads sobre seu trecho de combinação
Abordagem na divisão de tarefas Tamanho 4
Abordagem na divisão de tarefas Tamanho 4
Abordagem na divisão de tarefas Tamanho 4
Abordagem na divisão de tarefas Tamanho 4
Abordagem na divisão de tarefas Tamanho 4 Sincroniza
Abordagem na divisão de tarefas Estratégia extra para hashes de tamanho 6 Reverse
Abordagem na divisão de tarefas No modo reverse, a máquina que termina suas combinações antes, assume a parte da outra máquina no modo reverse somente para as hashes de tamanho 6. O modo reverse gera as combinações de trás para frente. A última combinação de cada trhead é testada por primeiro e assim por diante.
Abordagem na divisão de tarefas Reverse para 6 Encerrado
Abordagem na divisão de tarefas Reverse para 6 Encerrado
Abordagem na divisão de tarefas Reverse para 6 Encerrado
Abordagem na divisão de tarefas Reverse para 6 Encerrado
Abordagem na divisão de tarefas Reverse para 6 EncerradoInterrompe
Sumário Caracterização do Hardware Utilizado Caracterização do Problema Heurísticas aplicadas Abordagem em divisão de dados Abordagem na divisão de tarefas Resultado final o Propostas para melhoria
Resultado final Linguagem: Java Tempo total de execução: 16horas Total de Trheads rodando simultaneamente: 16 (8x2) Máquina 1 quebrou 99 hashes – 31 de tamanho 4 – 24 de tamanho 5 – 33 de tamanho 6 – 11 de tamaho 6 no modo reverse Máquina 2 quebrou 140 hashes – 49 de tamanho 4 – 56 de tamanho 5 – 35 de tamanho 6
Resultado final Máquinas extras rodando algoritmo randômico foram interrompidas. Hashes quebradas por esta estratégia não foram aproveitadas. 12 horas de trabalho quebraram 6 hashes de tamanho 6.
Sumário Caracterização do Hardware Utilizado Caracterização do Problema Heurísticas aplicadas Abordagem em divisão de dados Abordagem na divisão de tarefas Resultado final Propostas para melhoria
Propostas para melhoria Estender a estratégia para mais máquinas diminui o tempo total? Rodar modo reverse desde o ínicio? – Exige controle exato do range de combinações para evitar o retrabalho Modo reverse para todos os tamanhos? – Todas as combinações de tamanho 4 são testadas em ~10 segundos Melhorar a estratégia de distribuição pode reduzir o tempo.
Obrigado!