Respostas:
Para conhecer o histórico inicial do armazenamento de senhas Unix, leia Robert Morris e Password Security: A Case History de Ken Thompson . Eles explicam por que e com que antecedência os sistemas Unix adquiriram a maioria dos recursos que ainda são vistos hoje como os recursos importantes do armazenamento de senhas (mas se saíram melhor).
crypt
função que hashes a senha. É descrito como "criptografia" em vez de "hash" porque a terminologia criptográfica moderna ainda não foi estabelecida e usou um algoritmo de criptografia, embora de uma maneira não convencional. Em vez de criptografar a senha com uma chave, o que seria fácil de desfazer quando você tiver a chave (que precisaria ser armazenada no sistema), eles usam a senha como chave.Originalmente, o hash da senha estava no arquivo legível publicamente /etc/passwd
. Colocar o hash em um arquivo separado /etc/shadow
que apenas o sistema (e o administrador do sistema) poderia acessar foi uma das muitas inovações a surgir da Sun, datada do SunOS 4 em meados da década de 1980. Ele se espalhou gradualmente para outras variantes do Unix (parcialmente por meio do pacote de sombra de terceiros cujo descendente ainda é usado no Linux atualmente) e não estava disponível em todos os lugares até meados da década de 1990.
Ao longo dos anos, houve melhorias no algoritmo de hash. O maior salto foi o algoritmo baseado em MD5 de Poul-Henning Kamp em 1994, que substituiu o algoritmo baseado em DES por um com um design melhor. Ele removeu a limitação para 8 caracteres de senha e 2 caracteres de sal e aumentou a lentidão. Veja Desenvolvimento do IEEE com software de código aberto , jan-fev. 2004, p. 7-8 . Os algoritmos baseados em SHA-2, atualmente o padrão de fato, são baseados no mesmo princípio, mas com um design interno ligeiramente melhor e, mais importante, um fator de lentidão configurável.
Ainda não tenho uma fonte primária, mas de acordo com este post do TrustedSec (ênfase minha):
Os primeiros sistemas armazenavam senhas em texto sem formatação, mas eventualmente isso foi substituído por formas mais seguras de armazenamento de senhas. Robert Morris desenvolveu criptografia baseada na máquina de codificação m-209 e apareceu na Versão 3 Unix , embora o Crypt não tenha sido usado para armazenar senhas até a 6ª Edição Unix (1974).
Segundo várias fontes, a versão 3 do UNIX foi lançada em fevereiro de 1973 .
Do artigo original de Thompson e Morris , podemos confirmar que o armazenamento de texto sem formatação foi originalmente usado:
O sistema UNIX foi implementado pela primeira vez com um arquivo de senha que continha as senhas reais de todos os usuários e, por esse motivo, o arquivo de senha teve que ser fortemente protegido contra a leitura ou gravação.
/ etc / shadow apareceu em vários ramos do UNIX, conforme observado em outras respostas.
De acordo com a História seção da wikipedia passwd página,
O sombreamento de senha apareceu pela primeira vez nos sistemas Unix com o desenvolvimento do SunOS em meados da década de 1980, [10] System V Release 3.2 em 1988 e BSD4.3 Reno em 1990. Mas os fornecedores que haviam realizado portas de versões anteriores do UNIX nem sempre incluíam os novos recursos de sombreamento de senha em suas versões, deixando os usuários desses sistemas expostos a ataques de arquivos de senha.
Os administradores de sistema também podem organizar o armazenamento de senhas em bancos de dados distribuídos, como NIS e LDAP, em vez de arquivos em cada sistema conectado. No caso do NIS, o mecanismo de senha de sombra ainda é frequentemente usado nos servidores NIS; em outros mecanismos distribuídos, o problema de acesso aos vários componentes de autenticação do usuário é tratado pelos mecanismos de segurança do repositório de dados subjacente.
Em 1987, a autora do Shadow Password Suite original, Julie Haugh, sofreu uma invasão de computador e escreveu o lançamento inicial do Shadow Suite contendo os comandos login, passwd e su. O lançamento original, escrito para o sistema operacional SCO Xenix, foi rapidamente transportado para outras plataformas. O Shadow Suite foi portado para o Linux em 1992, um ano após o anúncio original do projeto Linux, e foi incluído em muitas distribuições iniciais, e continua a ser incluído em muitas distribuições atuais do Linux.