Existem razões válidas para não permitir caracteres e limitar o tamanho das senhas?

39

Encontrei alguns sites que limitam o tamanho que permitem que as senhas sejam e / ou não permitem certos caracteres. Isso me limita, pois quero ampliar e aumentar o espaço de pesquisa da minha senha. Também me dá uma sensação desconfortável de que eles podem não estar fazendo hash.

Existem boas razões para definir um tamanho superior ou excluir caracteres nas senhas?

chris
fonte
26
Certo! Torna mais fácil adivinhar as senhas das pessoas! : P
FrustratedWithFormsDesigner
4
Estamos falando de razões "técnicas" válidas ou razões "comerciais" válidas?
Martin York
1
@ Martin: Eu estava pensando técnico, mas eu suponho.
chris
11
@JYelton Por que você se importa com o tamanho da senha original? O hash sempre terá o mesmo tamanho. Eu certamente espero que você não está armazenando-os em texto simples ...
Pewpewarrows

Respostas:

27

Não

Não há boas razões.

EDIT: Não posso provar que não há boas razões, porque não se pode provar um negativo. Não consigo pensar em boas razões para isso - como outros apontaram, o hash terá o mesmo tamanho, independentemente do tamanho da entrada, e a eliminação de caracteres válidos (do contexto da pergunta) apenas reduz o espaço de estados. A resposta parece óbvia em seu rosto: não há boas razões. Pode haver um grande número de razões que parecem boas ou que parecem boas, mas não são. Se fossem, alguém já os teria postado aqui, ou se não estiver aqui, certamente no security.stackexchange.com, e essa resposta não teria sido tão fortemente votada.

Steven A. Lowe
fonte
3
Concordo, mas o comentário que Kissaki faz sobre a codificação é válido. Algumas pilhas / programadores simplesmente não conseguem obter a codificação correta, pois limitar o ASCII é um truque barato para fazê-lo funcionar.
EdA-qa mort-ora-y
10
Você poderia pelo menos tentar elaborar? Ou você não sabe disso, ou tem motivos para acreditar que razões comuns / existentes não são válidas. Dando a você o benefício da dúvida e assumindo a última, você deve explicar por que essas razões não são válidas.
Aaronaught
8
-1 - Posso pensar em várias boas razões para limitar senhas a um determinado conjunto de caracteres. Da mesma forma, ter de suportar senhas de telefone com tom de toque e as que você digita via teclado também é uma situação que você deve ter em mente.
rjzii
9
-1. Sem justificativa, apenas opinião. Se você quiser fazer uma declaração geral, faça backup.
Michael K
4
Agora isso está sendo discutido em nosso site de meta-discussão : seria útil entender por que uma resposta de uma palavra é tão popular e o que podemos fazer para melhorar a qualidade de respostas como essa.
25

Limitar o comprimento pode ser uma medida para limitar o tempo de execução do hash, bem como limitar a largura de banda (e ambos são realmente marginais de qualquer maneira). Fora isso, não há uma boa razão, especialmente do ponto de vista da segurança.

Alguém poderia dizer: “As pessoas esquecerão senhas mais longas com mais facilidade” - mas isso é realmente uma afirmação estúpida e não chega ao ponto.

Quanto aos caracteres, desde que você esteja ciente de possíveis problemas de codificação com transferência e / ou migração de dados no futuro (por exemplo, você passará de ASCII para UTF-8 em 2 anos), permitindo que mais caracteres sejam bons apenas para a força das senhas.

Kissaki
fonte
4
Dada a sobrecarga de qualquer tamanho de protocolo moderno, absolutamente não pode ser uma boa razão - além de um limite alto como 1K apenas para evitar certos ataques / bobagens.
EdA-qa mort-ora-y
3
Limitar o tempo de execução do hash geralmente é ruim. Quanto mais tempo leva para calcular um hash, mais tempo leva para forçá-lo a força bruta.
tdammers
Embora seja isso mesmo, é sempre uma troca. Você não deseja sempre calcular o melhor hash que leva mais tempo. Daí handshake assimétrica vs fluxo de dados simétrica em VPN etc
Kissaki
17

Sim , há uma razão para caracteres especiais.

Desabilitar caracteres especiais é mais uma questão de usabilidade, em vez de relacionada à segurança. Antes de tudo, eles podem ser mutilados por problemas de codificação. Segundo, mesmo se você garantir sempre usar a mesma codificação, ainda há o problema do dispositivo de entrada. Você dependeria de ter o teclado completo (o que elimina a maioria dos dispositivos móveis), com o mesmo layout de teclado. Posteriormente, diferem não apenas entre idiomas, mas também entre sistemas operacionais, layouts para Windows, Linux e OSX podem ser um pouco diferentes. Então eu vejo uma boa razão para não permitir senha como: √Ω≈ç∫∞§…¬å∑±.

vartec
fonte
3
a menos que você esteja fornecendo uma senha aos seus usuários, ou seja, se eles mesmos digitarem a senha, se optarem por usar algum símbolo matemático estranho, isso realmente será problema deles. agora eu concordo com o problema de codificação aqui, embora ache mais uma desculpa passar abaixo da incompetência do radar do que uma boa razão para impedir arbitrariamente certos caracteres.
Newtopian
2
@ new: não é da conta deles. Se eles derem um tiro no próprio pé, ainda perceberão um problema com o seu aplicativo e ligarão para o seu suporte.
vartec
7
@ Newtopian: Eu odeio quando eu, como usuário, sou circunscrito por motivo de ignorância (como não poder especificar um "+" no meu endereço de e-mail). Às vezes, no entanto, é uma boa idéia não dar aos usuários muita corda com a qual se enforcarem. Eu acho que essa é uma ocasião. Não se trata de "arbitrariamente" impedir certos caracteres.
Zano 28/06
1
Então, você está defendendo que gregos, árabes, chineses e outros usam US-ASCII?
l0b0
@ l0: não, estou defendendo que eles usem caracteres normais e comumente usados ​​em seus idiomas, em vez de alguns caracteres especiais, que podem estar ausentes em alguns layouts.
vartec
13

Houve um pouco de controvérsia no mundo da segurança alguns anos atrás, quando os clientes do Chase descobriram que suas senhas não diferenciam maiúsculas de minúsculas. Acontece que a página da Web era apenas uma interface para um sistema de back-end do OS / 400 de 30 anos, que tinha uma limitação técnica que ignorava o caso. Consertar isso aparentemente custaria milhões de dólares.

O ponto é que pode haver razões legadas caras para não permitir senhas com um determinado comprimento.
(Observe que não estou desculpando essa desculpa ...)

BlueRaja - Danny Pflughoeft
fonte
1
na medida em que essa é a única boa razão para limitar a senha de qualquer forma ... somente se o sistema subjacente tiver essas limitações em primeiro lugar.
Newtopian
8

A maioria dos bancos, departamentos de TI etc. que impõem restrições máximas de senha não o fazem por motivos técnicos. Eles estão perfeitamente cientes de como o hash de senha funciona e de como armazenar senhas complexas. Eles impõem essas limitações porque reduzem o número de chamadas de suporte para pessoas que esqueceram suas senhas. Essa é uma boa razão para impor esse tipo de limitação? De jeito nenhum. Mas, no entanto, é a principal razão.

Greg Jackson
fonte
1
Vejo reduzir as chamadas de suporte como um valid Business reason(Pessoalmente, eu realmente não acredito que há uma correlação)
Martin Iorque
2
Bem, existem outras maneiras de redefinir senhas ou instruir os usuários sobre como escolher senhas suficientemente complexas e fáceis de lembrar. Minhas últimas senhas no trabalho têm mais de 25 caracteres e não tive problemas para lembrar delas. Além disso, presumivelmente, as pessoas que têm problemas para lembrar suas senhas longas ainda escolherão senhas mais curtas, embora eu não tenha idéia de quantas vezes isso é verdade. Reduzir as chamadas de suporte parece ser um motivo comercial válido na superfície, mas ainda é um péssimo motivo para restringir o tamanho da senha.
Greg Jackson
1
Eu acho que meu (e muitas pessoas) acharia digitando com precisão (não apenas lembrando) 25 caracteres sem ver a saída quase impossível. Até agora, corrigi 5 erros de digitação ao digitar isso!
Gerry
Bem, lembrar não é o mesmo que digitar. Lembrar senhas longas é muito fácil se você souber como escolhê-las; basta escolher linhas de histórias ou peças de teatro ou partes de poemas ou letras de músicas. Contanto que você mude uma ou duas coisas (erros ortográficos intencionais, mude uma palavra para outra que soa como a mesma coisa, etc.), é muito fácil e extremamente seguro. É verdade que digitar pode ser mais difícil, mas não é desculpa para os bancos obrigarem você a digitar menos de 8/10/12 caracteres.
Greg Jackson
tente digitar a senha de 25 letras em um dispositivo móvel
Lie Ryan
7

Nem todos os dispositivos de entrada (em termos de hardware) geralmente possuem todos os caracteres que um teclado completo possui ou da mesma forma. Se alguém não estiver usando um gerenciador de senhas, poderá encontrar problemas ao digitar essa senha, não? E o Unicode ainda está muito longe (muito longe) de ser um padrão.

Torre
fonte
1
Geralmente, as pessoas que inserem senhas usarão o mesmo hardware (ou classe de hardware) para criá-las e autenticá-las. Não vejo como isso é um argumento para limitar conjuntos de caracteres ou comprimento. Quanto ao Unicode, ao criar o lado do servidor (a parte de autenticação), por que você limitaria o tamanho ou os conjuntos de caracteres? qualquer sistema que exija uma senha deve poder controlar como essa senha é inserida no sistema; portanto, se você precisar de um Unicode para o seu cliente, que assim seja!
Newtopian
@ Newtopian Você está assumindo que não precisa fazer interface com sistemas legados ou sistemas fora do seu controle.
grahamparks
1
pediram um bom motivo, esta não é uma boa razão
2
@ Jarrod - Não conseguir digitar uma senha não é uma boa razão ?! De qualquer forma, não vi você sugerir uma melhor (ou nenhuma).
01
3
@Rook, você não deveria ter usado esses caracteres se soubesse que não poderia selecioná-los em um dispositivo, o que não torna um bom motivo para limitá-los a todos, mas é um bom motivo para você não usá-los pessoalmente .
7

Existem boas razões para definir um tamanho superior ou excluir caracteres nas senhas?

Vou adivinhar e dizer que algumas dessas restrições se devem à filtragem de caracteres no site ( & < > #) para manter os hackers afastados. Enquanto outras são idéias idiotas que saem de comitês de chefes de cabelos pontudos.

Eu me deparei com várias decisões realmente estúpidas (na minha opinião) "segurança". Como exemplo, uma grande empresa de investimento lida com minhas contas de IRA e com minha pensão. Para fazer qualquer contato com a pensão, é necessário que eu digite minha senha no telefone (você não pode contatá-la). Minha conta de corretagem / IRA usa letras (maiúsculas e minúsculas) e algumas pontuações - nenhum desses caracteres aparece em um teclado numérico. Se você não conseguir fazer login com a senha pelo telefone, ele permitirá que você redefina a senha da sua conta de corretagem para algo que possa ser digitado pelo telefone.

Meu sistema de folha de pagamento (para a empresa de consultoria em que trabalho) exige números e apenas números - isso permite que eles usem o mesmo banco de dados, independentemente de o usuário ligar (nunca fiz isso) ou usar a interface da Web (apenas uso isso) .

Dito isto, é hora de mudar minha senha no escritório. Eles têm restrições tão loucas que eu acredito que levará cerca de meio dia para encontrar uma senha aceitável pelo sistema: pelo menos 2 letras maiúsculas, pelo menos 2 letras minúsculas, pelo menos 2 dígitos (que não podem ser +/- 1 das senhas anteriores), pelo menos 2 caracteres não alfabéticos / não numéricos, não podem corresponder a nenhuma das últimas 24 senhas, não podem conter nenhuma sequência (para frente ou para trás) que seja uma palavra (com três ou mais letras) em inglês ( também algumas outras línguas que não tenho autorização para conhecer). Eu acho que o tamanho mínimo é de 10 a 11 caracteres.

Tangurena
fonte
Sim, eu vi esses personagens na lista não.
21411 chris
5
Ataque simples: encontre notas adesivas em teclados, porque ninguém se lembra da senha.
Jeffo
@ Jeff, isso está correto. Se eu deixar meu notebook em casa, as senhas serão muito complicadas de lembrar, por isso não consigo fazer login. E no sistema de folha de pagamento, coloquei o nome de usuário e a senha como parte do marcador.
Tangurena
"não pode conter nenhuma string (para frente ou para trás) que seja uma palavra (3 ou mais letras) em inglês" Essa foi a que me pegou. Os ataques de dicionário não são eficazes se a senha contiver palavras inteiras, mas se a senha inteira consistir em nada além de palavras completas ... Bem, na verdade, uma palavra completa ou frases muito comuns. As senhas mais seguras que são práticas para usar sem escrever são frases que surgem de livros, poemas, letras de músicas etc. - alteram algumas letras em números, escrevem incorretamente alguma coisa e capitalizam imprevisivelmente e ninguém vai quebrar essa senha.
Greg Jackson
1
A filtragem de caracteres é um sinal claro de código de lixo não testado em segundo plano. Os desenvolvedores precisam aprender a escapar de strings.
l0b0
5

Uma razão para limitar caracteres seria devido à forma como a senha é então inserida.

Vários bancos, por exemplo, com seus sites de Internet Banking, solicitam caracteres específicos de uma senha e você seleciona os caracteres apropriados através de uma caixa suspensa.

Eles fazem isso, presumivelmente, para que os keyloggers não possam detectar o pressionamento de teclas e, portanto, conheçam [caracteres da] sua senha. Embora eu saiba que existem muitas outras maneiras pelas quais essas medidas podem ser contornadas, por exemplo, captura de tela; ainda é eficaz contra keyloggers.

Se eles tivessem que permitir todos os caracteres, o comprimento da caixa suspensa se tornaria complicado e também permitiria confusão entre caracteres com aparência semelhante.

Megan Walker
fonte
1
Certamente as pessoas (técnicas) digitariam a carta de qualquer maneira?
Gerry
@Gerry - esse é um comportamento específico do navegador, e não um padrão absoluto, e também depende do conhecimento do usuário para torná-lo viável.
Jon Hopkins
Meu banco usou um applet pop-up de teclado por um motivo semelhante. Mas era muito difícil de usar e tem um monte de críticas por ser inacessível (não trabalho para os leitores de tela, entrada alternativa etc)
JQA
1
@ Jon - eu disse pessoas técnicas e não conheço nenhum navegador de janelas que não implemente pelo menos a primeira correspondência de caracteres, pois é o comportamento padrão do Windows - não posso falar para Mac e * nix
Gerry
1
@Gerry O navegador do meu telefone Android não permite isso. Espero que seja o mesmo para muitos dispositivos móveis.
RoundTower
2

Não permitir caracteres especiais como tab seria válido. Você pode fazer logon ou alterar sua senha com um caractere de tabulação no modo de texto, mas não pode usá-la em uma GUI ou ambiente da web. Um caractere de barra invertida também apresentará alguns problemas de plataforma cruzada.

As senhas longas não são senhas - são senhas. Seu usuário médio não consegue se lembrar de 2Z8d!% G # x, mas pode lembrar 'o nome do meu animal de estimação é fido the dog'. O texto mais longo é mais difícil de decifrar por força bruta e tem muito menos probabilidade de ser escrito em uma nota anexada à tela.

jqa
fonte
Veja também xkcd.com/936
sergut
0

Quando as pessoas digitam, cometem erros, chamados "erros de digitação". Normalmente as pessoas veem seus erros e os corrigem. Para entrada de senha, geralmente você não pode ver o que digitou e, portanto, não pode corrigir seus erros de digitação. Você comete erros sem perceber, envia sua senha e ela volta como "senha inválida". Então você tenta novamente. Então você tenta novamente.

Você pode pensar nisso como "três pequenos erros de digitação e então você é indistinguível de um ataque de força bruta". Como os sistemas se defendem contra ataques de força bruta? Uma resposta explícita " Muitas tentativas, vá embora, você não será capaz de fazer login, mesmo que faça isso corretamente "? Aumento exponencial de atrasos na entrada de senha, causando o tempo limite do navegador quando o atraso é muito longo, tornando impossível tentar efetuar login novamente? As abordagens variam, mas sempre há uma consequência em um sistema bem projetado.

Você pode pensar nisso como "três pequenos erros de digitação e então obtém algum tipo de negação de serviço".

À medida que o comprimento da senha aumenta, aumenta o risco de erros de digitação (e, portanto, o risco de negar o acesso de uma pessoa autorizada). Qualquer coisa com mais de 20 caracteres será digitada incorretamente com frequência (a menos que o usuário seja esperto / preguiçoso e armazene sua senha em algum lugar para que possa "copiar e colar" sem se preocupar com erros de digitação, como um bom arquivo de texto simples em sua área de trabalho chamado " senhas .txt ").

Brendan
fonte