Quando o Unix parou de armazenar senhas em texto não criptografado?


37

Quando o Unix deixou de armazenar senhas de texto não criptografado na senha? Além disso, quando o arquivo shadow foi introduzido?


Você pesquisou alguma coisa?
Ken Sharp

Respostas:


62

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).

  • Os primeiros sistemas Unix armazenavam senhas em texto simples. O Unix Third Edition introduziu a cryptfunçã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.
  • Quando o Unix mudou de uma cifra anterior para o DES então moderno , ele também ficou mais lento ao repetir o DES várias vezes. Não sei exatamente quando isso aconteceu: V6? V7?
  • O simples hash da senha é vulnerável a ataques com vários destinos: mistura todas as senhas mais comuns de uma vez por todas e procura uma correspondência na tabela de senhas. A inclusão de um sal no mecanismo de hash, em que cada conta possui um sal exclusivo, derrota essa pré-computação. O Unix adquiriu um sal na sétima edição em 1979 .
  • O Unix também adquiriu regras de complexidade de senha, como comprimento mínimo na década de 1970.

Originalmente, o hash da senha estava no arquivo legível publicamente /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 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.


Aliás, o sal é o que está sendo criptografado.
Joshua

Para aqueles que não têm um visualizador Postscript, eu encontrei uma cópia em PDF do papel Morris & Thompson aqui
grahamj42

8

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.


6

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.


5
Non-shadow password storage! = Armazenamento em texto sem formatação.
rackandboneman 23/09
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.