Quebra de Hashes MD5 de Forma Paralela Introdução ao Processamento Paralelo e Distribuído.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Sistemas Operacionais
Sistemas Cliente/Servidor Introdução
OpenMP.
Solved Exercises 1. Finding the Peak. Let A= a1,…,an be a sequence of n numbers with the following property: there is p in {1,…,n} for which (i) the.
MULTICORE Aluno: Gabriel Antonio Leite São processadores caracterizados por apresentar vários cores (núcleos de processamento) em um único chip.
ARQUITETURA DE COMPUTADORES II
Arquitetura de Sistemas Operacionais
Meta - heurísticas Prof. Aurora
Sumário 1 SQL Embutida 2 Processamento de Consultas
Coerência de Memórias Cache e Modelos de Consistência de Memória
Aproveitamento do Processador
Interação Cliente Servidor
Busca Cega (Exaustiva)
Rejane Sobrino Pinheiro Tania Guillén de Torres
Arquitetura de Sistemas Operacionais
INTRODUÇÃO AO PROCESSAMENTO DE DADOS
PERÍCIA EM INFORMÁTICA
Sistemas Operacionais I
Meta - heurísticas Prof. Aurora
Prof. Felipe Ferreira de Oliveira
Concorrência em Java Threads em Java.
Unidade 1-1 Processos e Threads
Sistemas Operacionais
Sistemas Operacionais
CUDA vs OpenCL Introdução.
Fundamentos de programação CUDA
Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.
Linguagem de Programação IV
Algorítmos e estrutura de dados III
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Aula 14.
Concorrência entre Threads Java
Laboratório I Mateus Raeder Material baseado nos originais da
Unidade 2 - Parte 1 Programação Concorrente
Introdução aos Agentes Inteligentes Busca Cega (Exaustiva)
Processadores Multicore
Sistemas Inteligentes - UFRN. Gestão de Ativos Monitorar processo e equipamentos; Índice de eficiência em equipamentos; Quebra de equipamentos; Análise.
Introdução à Informática
Sistemas Operacionais
POLIMIG Curso Técnico em Informática Disciplina: Hardware
Computação L1: Infra-Estrutura Básica
Apresentação de SISTEMAS OPERATIVOS   Curso Profissional de Técnico de Gestão e Programação de Sistemas Informáticos     MÓDULO V   Arquitectura de Sistemas.
Monografia Eriko Werbet Unifor-CNPq
Sistemas Operacionais
Gestão de defeitos.
Busca Combinatorial e Métodos de Heurística
1 / 18 Um breve estudo da adição de um quarto nível de cache em processadores multicore Carlos Eduardo Benevides BezerraWorkshop de Processamento Paralelo.
José Reinaldo Lemes Júnior Orientador: Prof. Wilian Soares Lacerda.
Linguagem de Programação IV Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Sistemas Distribuídos Aula 05 – Programação Multithread/Paralela
Algoritmos FPT para o Problema da k-Cobertura por Vértices
Algoritmos.
SISTEMAS OPERACIONAIS
Processamento de Alto Desempenho Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Sistemas de Arquivos Paralelos Alternativas para a redução do gargalo no acesso ao sistema de arquivos Roberto Pires de Carvalho carvalho arroba ime ponto.
Introdução à Informática
Alexandre Mota Breve introdução à CSO (Communicating Scala Objects)
Gerenciamento de Memória Sistemas Recentes
Prof. Alexander Roberto Valdameri
Administração de Sistemas Operacionais 1 -Windows
Infra-Estrutura de Comunicação (IF678) Aula Prática 03 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
Paralelismo.
Projetar Processos. Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Projetar distribuição | 2 Descrição do Projeto.
Sistemas Inteligentes Busca Cega (Exaustiva)
CIn-UFPE1 Projeto de Gerenciamento de Dados. CIn-UFPE2 Objetivos n Definir o que significa gerenciamento de dados do sistema; n Entender abordagens diferentes.
Aula Prática: Demo de Sistemas Distribuídos
Engenharia de Sistemas (Lato Sensu) Victor Costa de Alemão Cisneiros Hudson Ramos Aracaju/SE COMPARAÇÃO ENTRE SERVIDORES WEB APACHE HTTP SERVER E NGINX.
 Processamento de dados: requer a execução de uma série de passos, o programa (software)  Cada passo é uma instrução, ou ordem de comando, dada ao.
Transcrição da apresentação:

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!