quarta-feira, 4 de maio de 2016

Quantas cifras por segundo meu PC consegue testar?

Com o Hash de uma senha é possível encontrar, depois de muito processamento, o texto equivalente através de força bruta. O ataque por força bruta consiste em testar todas as possibilidades até encontrar a senha correta.
O Hash pode ser em MD5, LM, SHA, CRYPT, etc. Cada um deste possui dificuldade distinta.

Objetivo do teste

Identificar quantas cifras o PC i7 com 8GB de RAM, com Linux, consegue gerar em apenas 1 segundo.

Atividade

A ferramenta "John the Ripper" oferece um parâmetro "-test" que gera um benchmark das cifras mais conhecidas. Veja o resultado:

root@info:/home# john -test
Created directory: /root/.john
Benchmarking: descrypt, traditional crypt(3) [DES 128/128 SSE2]... DONE
Many salts: 3772K c/s real, 3772K c/s virtual
Only one salt: 3573K c/s real, 3580K c/s virtual

Benchmarking: bsdicrypt, BSDI crypt(3) ("_J9..", 725 iterations) [DES 128/128 SSE2]... DONE
Many salts: 122649 c/s real, 122649 c/s virtual
Only one salt: 119680 c/s real, 119919 c/s virtual

Benchmarking: md5crypt [MD5 32/32]... DONE
Raw: 9279 c/s real, 9279 c/s virtual

Benchmarking: bcrypt ("$2a$05", 32 iterations) [Blowfish 32/32 X2]... DONE
Raw: 683 c/s real, 683 c/s virtual

Benchmarking: LM [DES 128/128 SSE2]... DONE
Raw: 48577K c/s real, 48577K c/s virtual

Benchmarking: AFS, Kerberos AFS [DES 48/64 4K MMX]... DONE
Short: 422297 c/s real, 422297 c/s virtual
Long: 1268K c/s real, 1268K c/s virtual

Benchmarking: tripcode [DES 128/128 SSE2]... DONE
Raw: 3327K c/s real, 3334K c/s virtual

Benchmarking: dummy [N/A]... DONE
Raw: 59150K c/s real, 59150K c/s virtual

Benchmarking: crypt, generic crypt(3) [?/32]... DONE
Many salts: 250867 c/s real, 250867 c/s virtual
Only one salt: 244665 c/s real, 244665 c/s virtual

Logotipo da ferramenta John "The Ripper".

Problema: Força Bruta no crypt

O crypt é o algoritmo utilizado pela maioria dos Linux para armazenar as senhas dos usuários. Segundo o comando john, o PC testado acima, consegue testar aproximadamente 250mil senhas por segundo.

A tabela abaixo demonstra o tempo para quebrar uma senha utilizando o CRYPT, dependendo do tamanho de caracteres utilizado:


Tamanho da Senha Tempo para quebrar a senha
4 caracteres 5 minutos
5 caracteres 8 horas
6 caracteres 1 mês
7 caracteres 8 anos
8 caracteres 8 Séculos
9 caracteres 74 milênios
10 caracteres 6900 milênios

Foi considerado que o usuário utilizou os caracteres imprimíveis (94 caracteres), e que letras maiúsculas e minúsculas são diferentes.
A máquina utilizada é caseira, veja que senhas pequenas são relativamente fáceis de quebrar, em até 1 mês é possível quebrar uma senha com 6 dígitos.

Conclusão

O John the Ripper é a ferramenta mais conhecida para quebrar senhas, ele possui muitas funcionalidades. O texto teve por objetivo checar quantas cifras um PC consegue gerar.
Foi observado que, dependendo do algoritmo de criptografia utilizado, o tempo muda muito. E este tempo que define a força de determinada criptografia.
No teste foi utilizado uma máquina simples, em um Cluster o tempo para quebrar seria muito inferior.
O "John the Ripper" também pode ser utilizado para testar quantas hash um servidor consegue gerar por segundo. Servidores de autenticação são os que mais realizam esta operação.

Nenhum comentário:

Postar um comentário