Para conhecer a história inicial do armazenamento de senhas do Unix, leia o Password Security: A Case History de Robert Morris e Ken Thompson . Eles explicam por que e como os primeiros sistemas Unix adquiriram a maioria dos recursos que ainda são vistos hoje como os recursos importantes do armazenamento de senhas (mas com melhor desempenho).
Os primeiros sistemas Unix armazenavam senhas em texto simples. O Unix Third Edition introduziu a cryptfunção que faz o hash da senha. É descrito como “criptografia” em vez de “hashing” porque a terminologia criptográfica moderna ainda não foi estabelecida e usou um algoritmo de criptografia, embora de maneira não convencional. Em vez de criptografar a senha com uma chave, o que seria trivial desfazer quando você tiver a chave (que teria que ser armazenada no sistema), eles usam a senha como chave.
Quando o Unix mudou de uma cifra anterior para o DES então moderno , ele também ficou mais lento pela iteração do DES várias vezes. Não sei exatamente quando isso aconteceu: V6? V7?
O mero hashing da senha é vulnerável a ataques de vários alvos: faça o hash de todas as senhas mais comuns de uma vez por todas e procure na tabela de senhas uma correspondência. Incluir um sal no mecanismo de hash, onde cada conta tem um sal único, anula essa pré-computação. Unix adquiriu um sal na Sétima Edição em 1979 .
O Unix também adquiriu regras de complexidade de senha, como um comprimento mínimo na década de 1970.
Originalmente, o hash de senha estava no arquivo de leitura pública /etc/passwd. Colocar o hash em um arquivo separado /etc/shadowque apenas o sistema (e o administrador do sistema) poderia acessar foi uma das muitas inovações que vieram da Sun, que datam do SunOS 4 em meados da década de 1980. Ele se espalhou gradualmente para outras variantes do Unix (em parte por meio do pacote de sombra de terceiros cujo descendente ainda é usado no Linux hoje) 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 de 8 caracteres de senha e 2 caracteres salt e aumentou a lentidão. Consulte Desenvolvimento com software de código aberto do IEEE , janeiro a fevereiro. 2004, pág. 7–8 . Os algoritmos baseados em SHA-2 que são o padrão de fato hoje são baseados no mesmo princípio, mas com um design interno ligeiramente melhor e, o mais importante, um fator de lentidão configurável.
Os primeiros sistemas armazenavam senhas em texto simples, mas eventualmente isso foi substituído por formas mais seguras de armazenamento de senhas. Robert Morris desenvolveu a cripta com base na máquina de cifra m-209 e apareceu na versão 3 do Unix , embora a cripta não tenha sido usada para armazenar senhas até a 6ª edição do Unix (1974).
De acordo com várias fontes, a versão 3 do UNIX foi lançada em fevereiro de 1973 .
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 essa razão, o arquivo de senha tinha que ser fortemente protegido contra leitura ou gravação.
/etc/shadow apareceu em várias ramificações do UNIX, conforme observado em outras respostas.
De acordo com a seção History na página passwd da wikipedia ,
A sombra de senha apareceu pela primeira vez em 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. os novos recursos de sombra de senha em seus lançamentos, deixando os usuários desses sistemas expostos a ataques de arquivos de senha.
Os administradores de sistema também podem providenciar o armazenamento de senhas em bancos de dados distribuídos, como NIS e LDAP, em vez de em arquivos em cada sistema conectado. No caso do NIS, o mecanismo de senha de sombra geralmente ainda é 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 a versão inicial do Shadow Suite contendo os comandos login, passwd e su. A versão original, escrita para o sistema operacional SCO Xenix, rapidamente foi portada para outras plataformas. O Shadow Suite foi portado para 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 Linux atuais.
Para conhecer a história inicial do armazenamento de senhas do Unix, leia o Password Security: A Case History de Robert Morris e Ken Thompson . Eles explicam por que e como os primeiros sistemas Unix adquiriram a maioria dos recursos que ainda são vistos hoje como os recursos importantes do armazenamento de senhas (mas com melhor desempenho).
crypt
função que faz o hash da senha. É descrito como “criptografia” em vez de “hashing” porque a terminologia criptográfica moderna ainda não foi estabelecida e usou um algoritmo de criptografia, embora de maneira não convencional. Em vez de criptografar a senha com uma chave, o que seria trivial desfazer quando você tiver a chave (que teria que ser armazenada no sistema), eles usam a senha como chave.Originalmente, o hash de senha estava no arquivo de leitura pública
/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 que vieram da Sun, que datam do SunOS 4 em meados da década de 1980. Ele se espalhou gradualmente para outras variantes do Unix (em parte por meio do pacote de sombra de terceiros cujo descendente ainda é usado no Linux hoje) 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 de 8 caracteres de senha e 2 caracteres salt e aumentou a lentidão. Consulte Desenvolvimento com software de código aberto do IEEE , janeiro a fevereiro. 2004, pág. 7–8 . Os algoritmos baseados em SHA-2 que são o padrão de fato hoje são baseados no mesmo princípio, mas com um design interno ligeiramente melhor e, o mais importante, um fator de lentidão configurável.
Ainda não tenho uma fonte primária, mas de acordo com esta postagem do TrustedSec (ênfase minha):
De acordo com várias fontes, a versão 3 do UNIX foi lançada em fevereiro de 1973 .
A partir do artigo original de Thompson e Morris , podemos confirmar que o armazenamento de texto simples foi originalmente usado:
/etc/shadow apareceu em várias ramificações do UNIX, conforme observado em outras respostas.
De acordo com a seção History na página passwd da wikipedia ,