criptografar senhas

votos
27

Qual é a maneira mais rápida ainda, seguro para criptografar senhas em (PHP preferido), e para o qual nunca método escolhido é portátil?

Em outras palavras, se eu mais tarde migrar meu site para um servidor diferente vai minhas senhas continuar a trabalhar?

O método que estou usando agora como me foi dito é dependente das versões exatas das bibliotecas instaladas no servidor.

Publicado 03/08/2008 em 12:50
fonte usuário
Em outras línguas...                            


7 respostas

votos
29

Se você está escolhendo um método de criptografia para o seu sistema de login, em seguida, a velocidade não é seu amigo, Jeff tinha um to-e-frow com Thomas Ptacek sobre senhas ea conclusão foi que você deve usar o método de criptografia mais lento, mais seguro você pode dar ao luxo de .

Do blog de Thomas Ptacek:
A velocidade é exatamente o que você não quer em uma função hash de senha.

esquemas de senha modernos são atacados com biscoitos da senha incrementais.

biscoitos incrementais não precalculate todas as senhas possíveis rachados. Eles consideram cada hash de senha individual, e eles se alimentam seu dicionário através da função hash de senha da mesma maneira sua página de login PHP faria. O arco-íris biscoitos de mesa como Ophcrack usar o espaço para atacar senhas; biscoitos incrementais como John the Ripper, Crack, eo trabalho LC5 com o tempo: as estatísticas e de computação.

O jogo ataque de senha é marcado no tempo necessário para quebrar a senha X. Com tabelas do arco-íris, que o tempo depende de quão grande a sua mesa precisa ser e quão rápido você pode pesquisá-lo. Com biscoitos incrementais, o tempo depende de quão rápido você pode fazer a função hash de senha prazo.

O melhor que você pode otimizar a sua função hash de senha, o mais rápido sua função hash de senha fica, mais fraco o seu esquema é. MD5 e SHA1, mesmo cifras de bloco convencionais, como DES, são projetados para ser rápido. MD5, SHA1, e DES são hashes de senha fracos. Em processadores modernos, cripto-prima blocos de construção como DES e MD5 pode ser bitsliced, vetorizado, e paralelizado para fazer pesquisas senha relâmpago rápido. Jogo mais implementações FPGA custam apenas algumas centenas de dólares.

Respondeu 03/08/2008 em 13:48
fonte usuário

votos
14

Eu estou com Peter. Desenvolvedor não parecem compreender senhas. Todos nós escolher (e eu sou culpado por isso também) MD5 ou SHA1, porque eles são rápidos. Pensando nisso ( 'cuz alguém apontou recentemente para mim) que não faz qualquer sentido. Devemos ser a escolha de um algoritmo de hash que é estúpido lento. Quer dizer, na escala das coisas, um local movimentado vai hash das senhas que? cada 1/2 minutos? Quem se importa se levar 0,8 segundos vs 0,03 servidor segundos sábio? Mas isso lentidão extra é enorme para evitar todos os tipos de ataques comuns brute-forcish.

Da minha leitura, bcrypt é projetado especificamente para hash de senha segura. É baseado em blowfish, e há muitos implementação.

Para PHP, veja PHPPass http://www.openwall.com/phpass/

Para qualquer um que faz .NET, veja BCrypt.NET http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

Respondeu 03/08/2008 em 14:48
fonte usuário

votos
8

Deve-se salientar que você não quer para criptografar a senha, você quer botar ele.

senhas criptografadas pode ser decifrada, deixar alguém ver a senha. Hash é uma operação one-way para que a senha original do usuário é (criptografia) foi.


Quanto a qual algoritmo você deve escolher - utilizar o aceito atualmente padrão um:

  • SHA-256

E quando você hash de senha do usuário, certifique-se também de hash em algum outro lixo com ele. por exemplo:

  • senha: password1
  • sal: PasswordSaltDesignedForThisQuestion

Acrescente o sal a senha do usuário:

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
Respondeu 17/09/2008 em 19:06
fonte usuário

votos
7

Faça o que fizer, não escreva o seu próprio algoritmo de criptografia. Fazendo isso vai quase garantir (a menos que você é um criptógrafo) que haverá uma falha no algoritmo que irá tornar mais trivial de crack.

Respondeu 17/09/2008 em 19:16
fonte usuário

votos
2

Considere usar bcryptele é usado em muitas estruturas modernas como laravel.

Respondeu 16/07/2016 em 07:47
fonte usuário

votos
2

Eu não estou necessariamente procurando o mais rápido, mas um bom equilíbrio, alguns do servidor que este código está sendo desenvolvido para são bastante lento, o script que hashes e armazena a senha está tomando 5-6 segundos para executar, e não tenho reduzi-lo ao hashing (se eu comentar o hashing fora ele é executado, em 1-2 segundos).

Ele não tem que ser o mais seguro, eu não sou codding para um banco (no momento), mas eu certamente não irá armazenar as senhas como texto simples.

Respondeu 05/08/2008 em 00:07
fonte usuário

votos
0

password_hash ( string $password , int $algo [, array $options ] ). (PHP 5> = 5.5.0, PHP 7)

password_hash () cria um novo hash de senha usando um algoritmo de hash unidirecional forte. password_hash () é compatível com cripta (). Portanto, hash de senha criada por cripta () pode ser usado com password_hash ().

Respondeu 18/05/2018 em 18:27
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more