Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leonardoFelipe

[Resolvido] Criptografia - Segurança VS Desempenho

Recommended Posts

Bom dia!

 

Galera fiquei numa dúvida se o processo que criei para criptografar e testar a senha para login está LEGAL/BEM ESCRITA E/OU VIÁVEL(SEGURANÇA/DESEMPENHO), desta forma:

 

*** Para Cadastrar:

--------------------------------------------

$salt1 = md5($_POST[id]);

$salt2 = md5($_POST[cpf]);

$salt3 = md5($_POST);

$salt4 = md5($_POST[senha]);

 

$salt = hash('512',$salt1.$salt2.$salt3.$salt4);

 

$hashSenha = hash('whirlpool', $senha . $salt)

 

// SQL pra cadastrar Usuário

--------------------------------------------

 

*** Para Logar:

--------------------------------------------

$usuario = 'admin';

$senha = 'senha123';

 

SELECT id, cpf, email, senha FROM usuarios WHERE $usuario = '$usuario' AND senha = '$senha' LIMIT 1;

 

// return $id, $cpf, $email, $senhaDB;

 

$salt1 = md5($id);

$salt2 = md5($cpf);

$salt3 = md5($email);

$salt4 = md5($senhaDB);

 

$salt= hash('512',$salt1.$salt2.$salt3.$salt4);

 

$hash = hash('whirlpool', $senha . $salt);

 

// SQL pra testar Usuário

--------------------------------------------

 

Em relação a este método que fiz cheio de encriptação, que me intrigam um pouco:

 

1) DÁ PRA FAZER ASSIM, TÁ LEGAL! NÃO AFETA ou AFETA POUCO o desempenho...

 

2) NÃO DÁ PRA FAZER ASSIM, LOUCURA! Está INVIÁVEL para o desempenho(ou seja não há a necessidade dessa bagaça(POG) que você fez, pois afetará o desempenho)...

 

-- Se a segunda questão for a escolhida(rsrs), então outro questionamento:

 

3) Se eu fizesse desta forma mais simples estaria seguro da mesma forma? Tipo apenas 1 hash + salt, estaria seguro SIM, mas MENOS seguro que da primeira forma? Ou NÃO seguro, "mas fazer oq!"?

 

--------------------------------------------

$usuario = 'admin';

$senha = 'senha123';

 

SELECT id, cpf, email, senha FROM usuarios WHERE $usuario = '$usuario' AND senha = '$senha' LIMIT 1;

 

// return $id, $cpf, $email, $senhaDB;

 

$salt = $id.$cpf.$email.$senhaDB;

 

$hash = hash('whirlpool', $senha . $salt);

 

// SQL pra testar Usuário

--------------------------------------------

 

Pondo na balança SEGURANÇA vs DESEMPENHO. Qual a forma mais viável?

 

Obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho desnecessário tudo isso.

 

Neste comentário do Manual tem um pequeno teste de performance e o algorítimo whirlpool está entre os três mais lentos.

 

Isso aliado ao fato de você estar usando 4 vezes o MD5 e um 512 que não consta na lista de hash_algos() é uma perda e tanto em termos de performance.

 

Por si só o MD5 é bem difícil de reverter. Seriam necessários vários meses num computador parrudo para se encontrar uma colisão.

 

Se você quiser algo ainda mais seguro, pode usar o algorítimo SHA-512, mesmo que este também esteja entre os menos eficientes em termos de performance.

 

Porém justifica-se dado o nível de criptografia oferecido. Pelo menos você roda uma só vez.

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw pelas respostas....

 

Resolvi fazer usando 2 sha-512 e 1 whirlpool... LOCALMENTE não teve problema de desempenho não... ao terminar o projeto e for por em PRODUÇÃO, se houver perda de desempenho tratarei usando outra abordagem de encriptação para resolver.

 

Obrigado pela ajuda.... Tópico encerrado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.