Citações por inadmissibilidade de senha globalmente exclusiva

20

Estou tendo um desacordo com alguém (um cliente) sobre o processo de identificação / autenticação de usuário de um sistema. O ponto principal é que eles querem que cada usuário tenha uma senha globalmente exclusiva (ou seja, dois usuários não podem ter a mesma senha). Eu expus todos os argumentos óbvios contra isso (é uma vulnerabilidade de segurança, confunde identificação com autenticação, é inútil etc.), mas eles estão insistindo que não há nada de errado com essa abordagem.

Eu fiz várias pesquisas no Google procurando opiniões autoritativas (ou semi-autoritativas ou até mesmo independentes) sobre isso, mas não consigo encontrar nenhuma (principalmente é apenas uma falsa paleta óbvia que não parece digna de advertência, pois Até onde eu sei). Alguém pode me indicar uma opinião independente, por favor?

[EDIT]
Obrigado por todas as suas respostas, mas eu já entendo os problemas com essa abordagem / requisito proposto e posso até explicá-los ao cliente, mas o cliente não os aceita, portanto, meu pedido de fontes independentes e / ou autorizadas .

Eu também encontrei o artigo do Daily WTF, mas sofre com o problema que Jon Hopkins apontou - que este é um WTF tão evidente que parece não valer a pena explicar o porquê .

E sim, as senhas serão salgadas e hash. Nesse caso, pode ser difícil garantir a exclusividade global, mas isso não resolve o meu problema - significa apenas que eu tenho um requisito de que o cliente não se mexa, isso não é apenas desaconselhado, mas também é difícil de resolver. implemento. E se eu estivesse em posição de dizer "Eu não estou começando a usar sal e hash", estaria em posição de dizer "Não estou implementando senhas globalmente únicas".

Quaisquer indicações para fontes independentes e / ou autorizadas sobre por que essa é uma idéia ainda recebida com gratidão ...
[/ EDIT]

gkrogers
fonte
2
Essa é uma idéia bastante estranha que eu acho que você terá sorte de encontrar muito escrito sobre isso. Na minha opinião, é tão obviamente falha que não seria considerado suficientemente sério para ser escrito pelos especialistas em segurança.
Jon Hopkins
3
Eu realmente espero que você não esteja armazenando senhas em texto simples, mas salgado e com hash. Se eles são salgados e misturados, será difícil garantir a exclusividade global. Caso contrário, não me importo com sua segurança, pois já sei que é ruim.
David Thornley
1
Não obstante as vulnerabilidades de segurança, você não poderia simplesmente rejeitar a senha se ela falhar no hash exclusivo?
Robert Harvey
Após a edição, repito minha resposta - não é um "não", é um "não" (devido à maneira como as senhas precisam ser armazenadas) - então, em vez de explicar por que isso é ruim para alguém que não é ' Não está interessado em voltar ao processo e entender por que o cliente sente que isso é necessário em primeiro lugar.
Murph
2
É interessante que eles confiem em você o suficiente para projetar o sistema deles, mas não o suficiente para aconselhá-los sobre o design do sistema.
Gary Rowe

Respostas:

24

Sempre que um cliente tenta criar uma senha que já existe, recebe feedback de que algum usuário já usa essa senha, geralmente uma violação do contrato de privacidade.

Além disso, os nomes de usuário são muito mais fáceis de adivinhar (e, se houver um fórum, você pode encontrar muitos nomes de usuário lá) e está sugerindo maneiras de o usuário invadir o site.

Deve haver alguma página na internet em algum lugar que descreva a parte de violação do contrato de privacidade, além de que seja apenas senso comum: eles basicamente estariam fornecendo a alguém uma chave e uma lista de endereços residenciais.

EDIT: Não é perto do autor, mas talvez seja útil depois de explicar o que significa o WTF: http://thedailywtf.com/Articles/Really_Unique_Passwords.aspx

deltreme
fonte
+1 Além disso, a maioria dos esquemas de autenticação permite que você tente quantos nomes de usuário quiser, enquanto oferece apenas três tentativas em uma senha.
Michael K
1
Esse WTF é para usar a senha como uma chave primária / estrangeira mais do que qualquer outra coisa. Bem, talvez também para senhas de texto simples.
Murph
2
+1: você nunca deve permitir que outro usuário tenha a mesma senha. Fale sobre uma falha de segurança maciça ... Você pode executar ataques de senha de força bruta alterando sua senha repetidamente. Isso voaria sob o radar de muitos sistemas de monitoramento.
236102Data de publicação
Na verdade, em alguns contextos, ter um único campo para uma credencial de login seria razoável, se fosse necessário escolher senhas para que uma parte específica [por exemplo, a primeira letra] fosse única. Se alguém tem 26 ou menos usuários, por exemplo, pode-se dizer que cada usuário precisa escolher uma senha que comece com uma letra diferente. Esse sistema seria equivalente a ter 26 nomes de usuário de caractere único distintos, mas evitaria a necessidade de pressionar 'tab' ou 'enter' entre o nome e a senha.
precisa
10

As melhores práticas impedem o cumprimento do requisito:

Você não pode fazer isso porque não sabe quais são as senhas, portanto não pode compará-las porque tudo o que você armazena é o hash da senha e um salt (que você pode armazenar ao lado da senha do hash). Esta é uma prática recomendada, e é isso que você faz. Feito.

Outra edição: Doh! A retrospectiva é fácil - você ainda pode verificar a singularidade, porque (é claro) você tem sal ... apenas atire em mim agora ... é claro que não precisa mencionar esse detalhe ao cliente.


FWIW, não é tão burro quanto você pensa que é - o objetivo é impedir que grupos de usuários concordem e compartilhem a mesma senha, o que as pessoas farão acreditando que isso facilitará suas vidas.

Se aplicado com a exigência de alterar a senha regularmente e com uma restrição que impeça as pessoas de reutilizarem uma senha atual ou usada anteriormente (de todo), além de requisitos sensíveis de "força" (ou pelo menos um dicionário pré-carregado de "bloqueado") "senhas), você chegará a um ponto, com bastante rapidez, em que as probabilidades não estão a favor do hacker.


Ok, minha resposta começou originalmente com:

Notionalmente, há muito pouco de errado com isso, dadas algumas ressalvas - a maioria das quais é que eu estou sendo grossa ...

Humor inapropriado aparentemente - o ponto era que, se você não tem a restrição globalmente única, está criando oportunidades diferentes, talvez menos perigosas - eu não sei.

Murph
fonte
4
+1 por oferecer alguma introspecção a respeito de porque alguém poderia pedir senhas únicas
Michael Haren
3
Mas é uma vulnerabilidade de segurança - se você é um usuário, insira uma nova senha e será informado que ela é inválida. Agora você sabe que pelo menos um usuário tem essa senha. Combine isso com outros fatores (digamos o idioma em que a palavra está, ou algum contexto / significado que possa ter para alguém) e você descobriu um número muito limitado de opções que podem facilmente cair em um ataque de força bruta - até mesmo potencialmente manual 1.
Jon Hopkins
Erm, eu não disse que não era um problema em potencial, eu disse que não era tão idiota quanto foi sugerido na pergunta porque impede que vários usuários tenham a mesma senha (o que acontece) e que é pior se essas senhas são fracas em primeiro lugar. Permitir que os usuários acessem um sistema é uma vulnerabilidade de segurança ... mas é preciso aturar e, consequentemente, tudo o que é comprometido.
Murph
+1 por indicar que você não pode fazer isso se estiver manipulando senhas corretamente.
David Thornley
Também podemos observar que a minha resposta é que você não pode testar a exclusividade porque deve estar usando a senha com hash de qualquer maneira? Então, se eu tenho um voto negativo por sugerir que gostaria de saber por quê?
Murph
10

A imposição de senhas irrepetíveis vaza informações

Quão? Como toda vez que um cracker tenta criar um novo usuário com uma senha simples, seu sistema responde com "Não, não pode ter essa senha", o cracker diz "Goody, esse é um da lista".

Vazar informações sobre sua segurança geralmente é uma coisa ruim. OK, terceiros sabendo que o algoritmo é bom (ele precisa de revisão por pares), mas permitindo que um cracker deduza as chaves - ruim, muito, muito ruim.

Recursos que descrevem políticas de gerenciamento de senhas boas e ruins

Leia este artigo do especialista em segurança Bruce Schneier para uma discussão aprofundada sobre a força da senha.

Leia este PDF dos pesquisadores de segurança Philip Inglesant e M. Angela Sasse para uma discussão aprofundada sobre "O verdadeiro custo das políticas de senhas inutilizáveis". Para citar a conclusão:

Contra a visão de mundo de que "se apenas [os usuários] entendessem os perigos, eles se comportariam de maneira diferente" [12], argumentamos que "se apenas os gerentes de segurança entendessem os verdadeiros custos para os usuários e a organização, eles definiriam políticas de maneira diferente".

Falso senso de segurança

Portanto, o cliente insere: "Se ninguém tiver a mesma senha, se uma for quebrada, apenas uma pessoa será afetada". Não. Todos são afetados porque o cracker demonstrou que seu sistema de senhas é fundamentalmente defeituoso: é vulnerável a um ataque de dicionário em um sistema on-line. Não deveria ter sido possível para um cracker tentar várias suposições contra uma senha em primeiro lugar.

Para acesso on-line, basta 6 caracteres

Falando fora do tópico, mas achei que valeria a pena mencionar para os leitores interessados. Em termos de segurança, um sistema on-line é aquele que possui um processo de gerenciamento de segurança ativo, monitorando e controlando o acesso aos dados. Um sistema off-line é aquele que não possui (como ter dados criptografados em um disco rígido que foi roubado).

Se você possui um sistema de senhas on-line, não precisa de senhas de alta segurança. As senhas precisam ser suficientemente complexas para evitar suposições dentro de 20 tentativas (portanto, um simples ataque de "nome do cônjuge / filho / animal de estimação" falhará). Considere o seguinte algoritmo:

  1. O cracker adivinha a senha usando a abordagem "raiz mais sufixo" para minimizar as suposições
  2. Credenciais rejeitadas e novas tentativas de login impedidas por N * 10 segundos
  3. Se N> 20 bloquear a conta e informar o administrador
  4. N = N +1
  5. Informe ao usuário que o próximo login pode ocorrer no horário T (calculado acima)
  6. Vá para a etapa 1

Para uma senha simples de 6 caracteres, o algoritmo acima evitará ataques de dicionário, permitindo que até mesmo o usuário mais inepto de um teclado móvel passe eventualmente. Nada impedirá o chamado "ataque da mangueira de borracha", onde você vence o titular da senha com uma mangueira de borracha até que eles avisem.

Para um sistema off-line quando os dados criptografados estão espalhados em uma unidade flash e o cracker tem a liberdade de tentar qualquer coisa contra isso, você deseja a chave mais resistente que puder encontrar. Mas esse problema já está resolvido .

Gary Rowe
fonte
1
O que você quer dizer com acesso "on-line"? Existe outro tipo?
Robert Harvey
Veja a última frase para a diferença em termos de segurança.
Gary Rowe
4

Se você os aconselhou contra esse curso de ação, e forneceu-lhes razões, eu aceitaria a palavra deles e apenas implementaria o sistema, conforme sugerido. Pode não ser satisfatório, mas você fez o seu trabalho e eles estão pagando a conta; portanto, devem conseguir o que querem.

Há uma exceção. Se as conseqüências negativas de uma violação do sistema forem severas (por exemplo, se informações muito particulares provavelmente serão comprometidas por uma violação de segurança), você poderá, de fato, ter um dever profissional de não implementar o sistema desejado. Não espere que ele se torne popular se você recusar, mas não deixe que esse seja o seu guia.

PeterAllenWebb
fonte
4

Eu só quero reforçar a resposta de Murph. Sim, é um problema de segurança e há vulnerabilidades de divulgação de informações na sua implementação. Mas do ponto de vista do cliente, ele não parece estar muito preocupado com isso.

O que você deve salientar é que é fisicamente inviável implementar realmente uma verificação de "senha exclusiva". Se você está salgando e hash a senha, e não as armazenando como texto não criptografado, são operações O (n) (caras) que realmente executam a verificação de exclusividade.

Você pode imaginar se você possui 10.000 usuários e leva 30 segundos para passar pela senha de todos os usuários para verificar a exclusividade sempre que alguém se cadastra ou altera sua senha?

Eu acho que essa é a resposta que você precisa dar ao seu cliente.

Dean Harding
fonte
Sim. Este seria um bom argumento a ser feito.
precisa saber é o seguinte
1

Pensando em termos de local apropriado para fazer a pergunta, a seção de segurança de TI do Stack Exchange deve ser um ponto útil para você. Experimente /security/tagged/passwords - várias pessoas focadas na segurança de TI devem poder fornecer respostas específicas.

Rory Alsop
fonte
0

Ele provavelmente gostaria da criptografia RSA de dois fatores. Se você estiver usando a associação ao Active Directory ou ASP.NET, isso é óbvio.

texto alternativo

O token de hardware ou software gera uma senha exclusiva dependente do tempo, seguida por um código PIN. Juntos, isso fornece uma senha exclusiva para cada usuário.

goodguys_activate
fonte
Dois fatores são inúteis para impedir ataques do tipo man-in-the-middle.
precisa
É verdade, mas essa afirmação não parece estar relacionada à questão em questão.
goodguys_activate
Mas agora eu sei o seu 2º fator !!! Ah, espere ... atualize sua imagem #
Michael Haren
2
Hmm, eu acho que seria legal para fazer que um GIF animado
goodguys_activate