Claudio André

O impacto das GPUs na quebra de senhas

Atualizado: 01/12/2015 às 12:00

Em meados de 2015 o software foi novamente otimizado o que gerou novo ganho de desepenho na GPU.

O software de auditoria de senhas John The Ripper incluiu recentemente em sua árvore de desenvolvimento o suporte à quebra do protocolo SHA-512 crypt via programação massivamente paralela. O SHA-512 crypt é o mecanismo de cifragem de senhas atualmente em uso nas distribuições Linux.

Portanto, a partir desta versão é possível utilizar o paralelismo oferecido pelas modernas GPUs para acelerar a descoberta de senhas do Linux. Neste protocolo o John já oferecia acesso ao poder das GPUs NVIDIA através do CUDA. Porém, esta nova versão suporta AMD, NVIDIA, Intel e qualquer outro dispositivo compatível com o padrão OpenCL, inclusive CPUs multicore. Assim, a gama de dispositivos suportados se amplia e não está mais está restrita apenas às GPUs.

No momento é possível comprar GPUs que oferecem centenas, algumas, milhares de núcleos de processamento (seu chip dual core deve morrer de inveja). Este grau de paralelismo pode diminuir muito o tempo gasto para se executar uma tarefa. Fiz um teste comparando uma GPU Radeon HD 6770 e um processador X6 1075 de 3GHz (usando todos os 6 núcleos) e a GPU foi capaz de realizar quase quatro vezes mais trabalho no mesmo intervalo de tempo.

Como nem tudo são flores, mais rigor e cautela devem ser empregados ao se definir uma senha. A partir de agora, será mais fácil quebrá-la.

Interessante notar que uma pesquisa no Google sugere que nenhum outro software oferece este recurso. Sequer os caros sistemas proprietários (agora, início de 2013, outras ferramentas oferecem). E o desenvolvimento foi feito por brasileiros.

Testar a nova versão é simples e os pré requisitos são poucos: drivers proprietários, OpenSSL e OpenCL instalados.
- git clone git://github.com/magnumripper/JohnTheRipper.git paralelo
- cd paralelo/src
- make linux-x86-64-opencl
- ../run/john arquivo_de_senhas --format=sha512crypt-opencl

Mais informações sobre como instalar a partir dos fontes pode ser encontrada (em inglês) em: http://www.openwall.com/john/doc/INSTALL.shtml.

Conclusão dos testes realizados:
Ao se considerar o investimento necessário, os resultados obtidos na GPU foram bons, ou seja, um pequeno investimento gerou um ganho de desempenho adequado. Porém, ao se considerar as especificações da placa Radeon HD 6770, as expectativas eram maiores e fiquei um pouco decepcionado.

Mas, apesar do OpenCL ser uma tecnologia recente, seu potencial ficou comprovado: é sempre bom lembrar que um computador com esta configuração custa seis vezes mais que a GPU Radeon 6770.

Portanto, os riscos de segurança só aumentaram. E, claro, as GPUs seguem evoluindo, inclusive em circuitos híbridos, como as APUs.



[Atualizado V]
A performance foi novamente ajustada. Vejamos:
- a Radeon HD 6770 (fora de linha) processa, aproximadamente, 10.800 senhas candidatas por segundo (c/s).
- um núcleo de uma CPU SSE2 processa de 200 a 300 c/s. Com AVX2 atingimos 2.300 c/s.
- usando TODOS os núcleos de uma CPU topo de linha é possível processar 2.000 c/s. Com AVX2 9.000 c/s.
- Portanto, a GPU HD 6770 é mais rápida que a moderna CPU Intel i7-4770K [1].
- Usando-se uma GPU TITAN X é possível processar mais de 110.000 senhas por segundo.

[1] Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz (US$ 400 - Amazon, nov/2015).


[Atualizado IV]
A performance em GPUs AMD melhorou consideravelmente. Vejamos:
- a Radeon HD 6770 (velhinha e fora de linha) processa, aproximadamente, 9.000 senhas candidatas por segundo.
- usando um núcleo de uma CPU topo de linha é possível processar de 200 a 300 senhas por segundo APENAS.
- usando TODOS os núcleos de uma CPU topo de linha é possível processar 2.000 senhas por segundo.
- Um servidor com duas CPUs [1] usando TODOS os núcleos disponíveis [2] processa 5.700 senhas por segundo.
- Portanto, a GPU HD 6770 foi mais rápida que o servidor que custa milhares de dólares.

[1] Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz (US$ 1500 cada CPU - Amazon, out/2014).
[2] São 8 núcleos por CPU, máximo de 16 threads por CPU. Portanto, foram 32 threads em execução.

[Atualizado III]
Esta nova versão (paralela) do John the Ripper foi usada em um concurso. Os resultados podem ser vistos em:
- http://contest-2012.korelogic.com/stats_sha512crypt.html (resultado do SHA 512).
- http://contest-2012.korelogic.com/stats.html (resultado geral).

[Atualizado II]
Mais algums números. Desta feita, comparando-se os resultados com um programa tradicional, ou seja, um programa que usa APENAS um núcleo da CPU:
- a GTX 570 é 35,7 vezes mais rápida que o processador AMD FX™-8120 Eight-Core Processor.
- a GTX 570 é 29,8 vezes mais rápida que o processador AMD Phenom™ II X6 1075T Processor.
- a Radeon HD 7970 é 36,6 vezes mais rápida que o processador AMD FX™-8120 Eight-Core Processor.
- a Radeon HD 7970 é 30,5 vezes mais rápida que o processador AMD Phenom™ II X6 1075T Processor.

[Atualizado I]
Testei a quebra do protocolo em foco neste texto. Os tempos de execução foram comparados com as CPUs em capacidade máxima, ou seja, com todos os processadores em uso (via OpenMP). Abaixo alguns resultados:
- a GTX 570 é 8,6 vezes mais rápida que o processador AMD FX™-8120 Eight-Core Processor.
- a GTX 570 é 8,1 vezes mais rápida que o processador AMD Phenom™ II X6 1075T Processor.
- a Radeon HD 7970 é 8,8 mais rápida que o processador AMD FX™-8120 Eight-Core Processor.
- a Radeon HD 7970 é 8,3 mais rápida que o processador AMD Phenom™ II X6 1075T Processor.

© 2003-2011 Claudio André. Todos os direitos reservados