Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouJónatas de Sá Cabreira Alterado mais de 8 anos atrás
1
Quebra de Hashes MD5 de Forma Paralela Introdução ao Processamento Paralelo e Distribuído
2
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
3
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
4
Caracterização do Hardware Utilizado Máquina 1 Intel Core i7 3770K Cores: 4 Threads: 8 Cache L3: 8MB Mem: 16GB
5
Caracterização do Hardware Utilizado Máquina 2 Intel Core i7 2670QM Cores: 4 Threads: 8 Cache L3: 6MB Mem: 6GB
6
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
7
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 = 52.200.625 – 85 5 combinações = 4.437.053.125 – 85 6 combinações = 377.149.515.625
8
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 = 52.200.625 x 4 bytes = 200 Mb – 85 5 combinações = 4.437.053.125 x 5 bytes = 20,6 Gb – 85 6 combinações = 377.149.515.625 x 6 bytes = 2,05 Tb
9
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 = 52.200.625 x 4 bytes = 200 Mb – 85 5 combinações = 4.437.053.125 x 5 bytes = 20,6 Gb – 85 6 combinações = 377.149.515.625 x 6 bytes = 2,05 Tb
10
Como paralelizar ??
11
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
12
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,..., +HnX@
13
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
14
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
15
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
16
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
17
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
18
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
19
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)
20
Abordagem na divisão de tarefas Vetor de caracteres de tamanho 85 0 84
21
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 0 910 2021 3031 4243 5253 6263 7475 84 aaaa j<<< kkkk u<<< vvvv E<<< FFFF Q<<< RRRR 1<<< 2222 @<<< #### [<<< ]]]] <<<<
22
Abordagem na divisão de tarefas 0 910 2021 3031 4243 5253 6263 7475 84 Tamanho 4
23
Abordagem na divisão de tarefas 0 910 2021 3031 4243 5253 6263 7475 84 Tamanho 4
24
Abordagem na divisão de tarefas 0 910 2021 3031 4243 5253 6263 7475 84 Tamanho 4
25
Abordagem na divisão de tarefas 0 910 2021 3031 4243 5253 6263 7475 84 Tamanho 4
26
Abordagem na divisão de tarefas 0 910 2021 3031 4243 5253 6263 7475 84 Sincroniza
27
Abordagem na divisão de tarefas Vetor de combinações partido em 2 e distribuído para cada máquina 0 84 4142 Máquina 1Máquina 2
28
Abordagem na divisão de tarefas Cada máquina executa 8 threads sobre seu trecho de combinação 0 84 4142
29
Abordagem na divisão de tarefas 0 84 4142 Tamanho 4
30
Abordagem na divisão de tarefas 0 84 4142 Tamanho 4
31
Abordagem na divisão de tarefas 0 84 4142 Tamanho 4
32
Abordagem na divisão de tarefas 0 84 4142 Tamanho 4
33
Abordagem na divisão de tarefas 0 84 4142 Tamanho 4 Sincroniza
34
Abordagem na divisão de tarefas Estratégia extra para hashes de tamanho 6 Reverse
35
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.
36
Abordagem na divisão de tarefas 0 84 4142 Reverse para 6 Encerrado
37
Abordagem na divisão de tarefas 0 84 4142 Reverse para 6 Encerrado
38
Abordagem na divisão de tarefas 0 84 4142 Reverse para 6 Encerrado
39
Abordagem na divisão de tarefas 0 84 4142 Reverse para 6 Encerrado
40
Abordagem na divisão de tarefas 0 84 4142 Reverse para 6 EncerradoInterrompe
41
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
42
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
43
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.
44
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
45
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.
46
Obrigado!
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.