Gerador de Bcrypt

5 de 2 avaliações

O Gerador de Bcrypt é uma ferramenta gratuita que cria um hash bcrypt a partir de qualquer texto, permitindo armazenar palavras-passe de forma segura.

O que é o bcrypt e continua a ser seguro?

O bcrypt é um algoritmo de hash de palavras-passe que continua a ser adequado para o seu armazenamento quando configurado com um custo apropriado, embora os sistemas mais recentes prefiram frequentemente o Argon2id. Niels Provos e David Mazières criaram o bcrypt em 1999, recorrendo ao processo de expansão de chaves da cifra Blowfish para tornar cada tentativa de adivinhar uma palavra-passe deliberadamente dispendiosa.

O hashing é unidirecional. Por isso, uma aplicação verifica uma palavra-passe aplicando hash a uma tentativa com os parâmetros armazenados, em vez de recuperar o valor original. Ao contrário de algoritmos de uso geral como o SHA-3, o bcrypt produz um registo codificado autónomo e de comprimento fixo, que inclui a versão, o custo, o salt e a soma de verificação.

Um registo bcrypt padrão tem 60 carateres ASCII. A soma de verificação representa 184 bits e surge como 31 carateres na codificação própria do bcrypt, semelhante a Base64. O bcrypt não é considerado criptograficamente comprometido, mas tem uma limitação associada à sua idade: as implementações tradicionais não processam mais de 72 bytes de entrada. O Argon2id também oferece proteção baseada no uso intensivo de memória, algo que o bcrypt não faz.

Como utilizar o Gerador de Bcrypt?

Introduz o texto ao qual pretendes aplicar hash, executa o gerador e copia o valor apresentado no campo de resultado Hash Bcrypt. Guarda o resultado completo, em vez de extraíres apenas a soma de verificação final.

  1. Utiliza a palavra-passe ou o texto de teste exato, respeitando maiúsculas, minúsculas, espaços e pontuação.
  2. Gera o resultado bcrypt.
  3. Copia os 60 carateres, incluindo o marcador de versão inicial e o custo.
  4. Guarda o resultado na coluna de hashes de palavras-passe da base de dados.
  5. Durante o início de sessão, utiliza a função de verificação bcrypt da tua plataforma, em vez de gerares um hash e comparares diretamente o texto.

Normalmente, o bcrypt utiliza um novo salt aleatório para cada hash. Por esse motivo, aplicar hash duas vezes à mesma entrada pode produzir dois registos diferentes, sendo ambos válidos para essa entrada. Este comportamento é esperado e impede que palavras-passe iguais tenham valores armazenados idênticos.

O processamento é feito no servidor. A entrada é enviada para o servidor através de HTTPS e não é armazenada. Antes de introduzires uma palavra-passe real de produção num serviço online de terceiros, verifica se isso está de acordo com a política de segurança da tua organização.

É possível desencriptar ou reverter um hash bcrypt?

Não. Um hash bcrypt não pode ser desencriptado, porque não corresponde a dados encriptados e não contém uma chave de desencriptação. Na prática, a forma de o atacar consiste em tentar palavras-passe possíveis e verificar cada tentativa em relação ao hash armazenado.

O bcrypt abranda esse processo de tentativa através do seu custo configurável. No entanto, não consegue tornar segura uma palavra-passe curta, comum ou anteriormente divulgada, e um atacante determinado pode ainda descobrir entradas fracas. O salt impede que os atacantes reutilizem uma única tabela pré-calculada em várias contas, mas não é secreto e faz parte do registo armazenado.

Como interpretar um resultado bcrypt

Um resultado bcrypt segue geralmente o formato modular crypt. Um exemplo da sua estrutura é $2y$12$[22-character salt][31-character checksum]. Trata-se apenas de uma ilustração do formato, não do hash de uma palavra-passe específica.

Parte Comprimento habitual Finalidade
Marcador de versão 4 carateres Identifica uma variante do bcrypt, como $2y$ ou $2b$.
Custo 3 carateres Regista o custo de dois algarismos, seguido de um separador.
Salt 22 carateres Codifica um salt aleatório de 128 bits.
Soma de verificação 31 carateres Codifica a soma de verificação bcrypt de 184 bits.

Mantém todas estas partes juntas. Alterar um caráter, cortar o valor ou guardá-lo numa coluna demasiado curta fará normalmente com que a verificação falhe. O marcador de versão pode variar entre bibliotecas compatíveis. Por isso, as aplicações devem recorrer a API estabelecidas para palavras-passe, em vez de analisarem e reconstruírem diretamente o registo.

Quando se deve utilizar bcrypt?

O bcrypt deve ser utilizado para aplicar hash a palavras-passe em sistemas que já o suportem, sobretudo quando a compatibilidade com uma base de dados ou framework existente for importante. É deliberadamente lento e utiliza salt, o que o torna inadequado como soma de verificação genérica de ficheiros ou identificador de desduplicação.

  • Utilizações adequadas incluem palavras-passe de aplicações, testes de migração, verificação do tamanho dos campos da base de dados e reprodução de um ambiente de desenvolvimento compatível com bcrypt.
  • Utiliza antes Argon2id num novo sistema de palavras-passe, caso a plataforma o suporte e seja possível gerir corretamente as respetivas definições de memória.
  • Utiliza antes SHA-3 para verificar a integridade de ficheiros, criar impressões digitais de conteúdos ou efetuar desduplicação. O Gerador SHA-3/384 e o Gerador SHA-3/512 produzem resumos de uso geral, não registos de palavras-passe.
  • Não utilizes bcrypt para assinaturas digitais, autenticação de mensagens, encriptação ou armazenamento de dados que tenham de ser recuperados mais tarde.

Os espaços, a pontuação e os números são processados como dados de entrada, não ignorados. Os carateres acentuados e não latinos são codificados em bytes antes de o bcrypt os processar. Por isso, ambos os sistemas têm de produzir os mesmos bytes, utilizando uma codificação de carateres e uma normalização Unicode consistentes. O limite de 72 bytes é especialmente relevante neste caso, porque um caráter Unicode pode ocupar mais de um byte. Tecnicamente, é possível aplicar hash a uma entrada vazia, mas uma palavra-passe vazia não oferece qualquer resistência relevante a tentativas de descoberta.

Perguntas frequentes

Quanto espaço ocupa um hash bcrypt na base de dados?

Reserva pelo menos 60 carateres ASCII para um registo bcrypt convencional. Um campo ligeiramente mais largo pode facilitar futuras migrações para outros algoritmos de palavras-passe, enquanto uma coluna binária é desnecessária para o formato codificado padrão.

Posso migrar hashes de palavras-passe SHA existentes para bcrypt?

Não é possível converter um resumo SHA existente no hash bcrypt da palavra-passe original sem conhecer essa palavra-passe. Um método de migração comum consiste em verificar o hash antigo quando o utilizador voltar a iniciar sessão, aplicar bcrypt ou Argon2id à palavra-passe introduzida e substituir o registo antigo.

Antes de guardares um resultado, confirma que copiaste o valor completo de 60 carateres, que o campo da base de dados não o corta e que a aplicação de destino suporta o marcador de versão presente no registo.

Ferramentas Populares