Implementação de hash PBKDF2 (ou BCrypt) para Apache HTTPD ou APR

Implementação de hash PBKDF2 (ou BCrypt) para Apache HTTPD ou APR

Alguém conhece uma maneira (simples) de usar PBKDF2 ou BCrypt como um hash de senha no Apache HTTPD.

O cenário geral é que tenho um recurso em /private que gostaria de restringir a um determinado grupo de usuários. Esses usuários terão senhas armazenadas em um banco de dados e verificadas usando um arquivo mod_auth_dbd.

Eu poderiacomopara evitar o uso do SSHA.

Posso ver no Apache apr-util que existe uma função apr_password_validate(que lida com todos os tipos de hash agora desaprovados); e em apr_crypto_openssl.c existe crypto_passphraseuma implementação do PBKDF2.

Alguém soldou os dois juntos? (ou perdi algo óbvio em algum lugar dos documentos do Apache?)

Responder1

Então, depois de uma análise mais aprofundada, parece que tudo foi muito mais simples do que eu imaginava.

HTTPD usa a função de criptografia fornecida pelo sistema e, portanto, aproveita sua modularidade.

http://en.wikipedia.org/wiki/Crypt_(Unix)#Modular_crypt.283.29_Algorithms

Em teoria, ele suporta BCrypt diretamente (embora eu não tenha testado). Testei o SHA-512 usando o prefixo $6.

Portanto, definir uma senha conforme calculado abaixo alcança o resultado desejado:

salt = 'fGn9LR75';
puts 'quohjo5oor4ac3Deolei'.crypt('$6$' + salt);
=>    
"$6$fGn9LR75$juRSrMtKBa8pdZ8tbTouUvDItoF9Fp.LVk8Kqv2ZL5T.R.q/nUQNGePve1Ge/8rDf/xqUwgpY.3F1MQ0qtauf0"

Responder2

Para futuros pesquisadores, observe que o suporte ao bcrypt foi adicionado ao Apache na versão 2.4.4, lançada em fevereiro de 2013.

$ htpasswd -nbB -C 11 nome de usuário senha nome de usuário:$2y$11$p1icdLB/EqI2z2EPt6JrQOUdy1GzHg5GdDWcwdj3MIXJLSkgrILoa

informação relacionada