10.4. DES, MD5, e Crypt

Parcialmente reescrito e atualizado por Bill Swingle.

Cada usuário em um sistema UNIX® tem sua senha associada com sua conta. Parece óbvio que estas senhas precisam ser conhecidas apenas pelo usuário e o sistema operacional atual. A fim de manter estas senhas em segredo, são criptografadas com o que é conhecido como ``one-way hash'', isto é, podem somente ser criptografadas fácilmente mas não descriptografadas. Em outras palavras, o que nós lhe dissemos a pouco, era óbvio, não é mesmo verdade: o próprio sistema operacional não sabe realmente a senha. Sabe somente o formulário de criptografia da senha. A única maneira de obter a senha em ``texto puro'' é procurar por força bruta no espaço de senhas possíveis.

Infelizmente a única maneira segura de criptografar senhas foi quando UNIX veio a ser baseado em DES, Data Encryption Standard. Este não era um problema para usuários residentes nos EUA, mas desde que o código fonte para o DES não pudesse ser exportado para fora dos EUA, o FreeBSD teve que encontrar uma maneira para cumprir com as leis dos EUA e manter compatibilidade com todos as outras variantes do UNIX que ainda usam DES.

A solução devia dividir as bibliotecas de criptografia de modo que os usuários dos EUA pudessem instalar as bibliotecas DES e usar o DES, mas usuários internacionais tiveram ainda um método de criptografia que pudesse ser exportado. Isto é como o FreeBSD veio a usar o MD5 como seu método padrão de criptografia. O MD5 acredita-se ser mais seguro do que o DES, assim instalando o DES é oferecido principalmente por razões de compatibilidade.

10.4.1. Reconhecendo Seu Mecanismo de Criptografia

Antes do FreeBSD 4.4 a libcrypt.a era um link simbólico apontando para a biblioteca que era usada para criptografia. O FreeBSD 4.4 mudou a libcrypt.a para fornecer uma biblioteca hash configuravel para autenticação de senha. Atualmente a biblioteca suporta as funções hash DES, MD5 e Blowfish. Por padrão o FreeBSD usa MD5 para senhas criptografadas.

É consideravelmente fácil identificar que médoto de criptografia o FreeBSD esta configurado para usar. Examinando as senhas criptografadas no arquivo /etc/master.passwd é uma maneira. Senhas criptografadas com com o hash MD5 são mais longas do que aquelas criptografadas com o hash DES e começam também com os carácteres $1$. Senhas começando com $2$ estão criptografadas com funções hash Blowfish. Strings de senhas DES não tem nenhum detalhe identificando suas características, mas são muito mais curtas do que senhas MD5, e são codificadas em alfabeto de 64-carácteres que não inclui o carácter $, assim uma string relativamente pequena que não começa com um sinal de dólar é muito provável uma senha DES.

O formato de senha usado para senhas novas é controlado pela capacidade de login passwd_format em /etc/login.conf, que aceita os valores de des, md5 ou blf. Veja as páginas de manual login.conf(5) para mais informação sobre capacidades de login.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.