48

Estive me questionando porque alguns sistemas exigirem senhas tão fortes.

Exemplo:

  • Minimo de 8 Caracteres
  • Maiúsculas e Minusculas
  • Números
  • Caracteres Especiais

Em vários locais dizem que senhas fortes garantem uma maior segurança do sistema e que ajudam a prevenir ataques de algorítimo como o Brute-force attack(algoritmo capaz de detectar senhas curtas), em contrapartida descobrir o algoritmo Dictionary attack.

Bancos por exemplo usam senhas com 4 dígitos e essa senha são números

Penso que senhas fortes e complexas dificultam e muito o usuário no login, pela dificuldade em lembrar qual senha criou.

Porque usar senhas tão complexas? Isso não dificultaria o usuário a lembrar essa senha em uma possível volta ao sistema? Porque uma senha sem esses critérios mencionados acima são consideradas fracas?

9
  • 20
    Se resume a essa imagem Commented 29/06/2017 às 17:08
  • 8
    Vou colocar em comentário apenas como forma de opinião, isto não é questão de User eXperience, isto é questão de segurança, o usuário comum não entende as questões de problemas de segurança, ele não sabe que softwares de "força bruta" podem quebrar senhas fracas rapidamente, o motivo disto existir é porque a UX não consegue acompanhar uma necessidade básico do mundo moderno.
    – Syzoth
    Commented 29/06/2017 às 17:13
  • 3
    Porque o cartão de crédito você consegue fazer uma compra usando apenas uma senha de 3 dígitos numéricos? Commented 29/06/2017 às 17:13
  • 2
    Também concordo que é uma questão relativa de UX. Aculturar as pessoas é ótimo, mas cria pequenos monstros: uma armadilha absurdamente comum é que, ultimamente, tudo que exige autenticação se "acha a última bolacha do pacote". Senhas longas e fortes são excelentes, mas o seu fórum sobre rock realmente precisa exigir senhas compostas de símbolos e números? Seu site de recrutamento, que não possui interação, realmente precisa de duplo fator de autenticação? O fato é que há muito exagero nisso. Segurança também é funcionalidade: deve ser usada onde importa, não por padrão. Commented 30/06/2017 às 18:55
  • 2
    A segurança que você quer implementar depende unicamente do risco que está disposto a correr.
    – Intruso
    Commented 6/07/2017 às 0:25

3 Respostas 3

54
+50

Os bancos se dão ao luxo de permitir que você use senhas fracas por dois motivos:

  • Eles podem bloquear sua senha impunemente sem perder você como usuário.

Não que isso seja ruim. Afinal, é o seu dinheiro que eles estão protegendo.

Se o Google ou o Facebook bloqueassem sua senha toda vez que achassem que algo errado aconteceu com sua conta, provavelmente você ficaria de saco cheio de ter que ficar trocando ela direto. Acabaria desistindo de usar seus serviços e suas redes sociais (e lembre-se, para eles você é fonte de renda, não cliente, então eles lhe querem usando essas coisas).

Mas se você não pode usar o seu cartão de débito, você tá muito fudido e portanto você vai se dar ao esforço de ir até a agência mais próxima para resolver isso o quanto antes. Isso está relacionado fortemente ao próximo motivo:

  • Eles têm como validar com muita precisão que você é quem diz ser.

Se você precisar criar uma nova senha para o XVideos porque esqueceu a sua, você não tem como se deslocar à agência mais próxima do XVideos porque ela não existe. Eles têm que usar o seu email, que é um mecanismo que pode estar comprometido, para lhe restaurar o seu acesso.

Já num banco você tem que se apresentar com seus documentos. Isso não é impossível de fraudar, mas é bem mais difícil, então o grau de confiança é maior.


Por isso, os bancos se dão ao luxo de te dar senhas fracas. Eles vão bloquear sua senha caso qualquer coisa errada seja detectada. Eles vão te bloquear até mesmo em casos de falso positivo (já aconteceu comigo). Como você vê, a escolha entre permitir senhas fracas e permitir senhas fortes por instituições e empresas grandes e que têm muito a perder/proteger é uma questão de equilíbrio entre praticidade e risco.


Quanto ao que faz uma senha forte ou não: não existe senha inquebrável, mas o que separa uma boa senha da senha que os seus parentes leigos costumam usar é o tempo que um hacker levaria para quebrá-la.

Considere as seguintes senhas:

  • 0004071974
  • sSashaGrey
  • TodoDia7a1
  • $7@CK 0V3R

Todas possuem o mesmo tamanho. Porém, para fazer um ataque de força bruta em cada uma, precisaríamos da seguinte quantidade de combinações:

  • Para a primeira senha, que só usa números, 1010 tentativas. Número alto, mas nada que um cluster de computadores com várias GPU's cada um não mastigaria em pouco tempo hoje em dia. 10.000.000.000 combinações.
  • Para a segunda senha, temos apenas letras. A quantidade de combinações agora é 5210 (para o nosso alfabeto, considerando que as letras podem variar entre maiúsculas e minúsculas), um espaço amostral consideravelmente maior. Isso dá 144.555.105.949.057.024 combinações.
  • Para a terceira senha, temos letras e números. São 6210 combinações, ou 839.299.365.868.340.224 tentativas na pior das hipóteses. Compare com a combinação logo acima.
  • Para a senha final, supondo que nos limitemos apenas a tabela ASCII, temos noventa e quatro caracteres utilizáveis, logo temos 9410 combinações possíveis, ou 53.861.511.409.489.970.176.

Deixa eu listar apenas as quantidades de combinações possíveis, uma em cima da outra, para você sentir a pressão:

  • 10.000.000.000
  • 144.555.105.949.057.024
  • 839.299.365.868.340.224
  • 53.861.511.409.489.970.176

E isso se nós formos legais com o hacker e limitarmos todas as senhas a terem exatamente dez caracteres. O legal é deixar a quantidade variável, pois aí a quantidade de combinações possíveis é a soma das combinações de cada tamanho possível.

Aqui cabe um porém: a força das senhas não é limitada pelas formas que você permite, mas sim pelas formas que você exige. Se você permitir aos seus usuários usar todas as formas acima, mas não fizer exigências, na prática a maioria das pessoas vai usar a primeira ou a segunda forma. Como em geral os meliantes de hoje em dia estão mais interessados em quebrar muitas senhas de uma vez ao invés de hackear as contas de uma pessoa anônima qualquer por aí, os criminosos se contentariam em tentar adivinhar por força bruta apenas uma fração das senhas no seu banco de dados. Seria suficiente para eles usar a força bruta para quebrar somente as senhas do primeiro e do segundo tipos.

P.s.:

Porque usar senhas tão complexas? Isso não dificultaria o usuário a lembrar essa senha em uma possível volta ao sistema?

A maioria das pessoas hoje em dia navega sempre do mesmo dispositivo, e eles guardam a senha para a pessoa - removendo a restrição da dificuldade de lembrar a senha para a maioria dos casos.

9
  • 3
    E também, porque você precisa (pelo menos no meu cartão de débito) estar indo a um caixa eletrônico para se utilizar dele, lá no caixa há uma validação de 2 etapas, primeiro verifica o chip do cartão e depois solicita a senha ou a digital. Obviamente o lugar é monitorado, e assim não há como ter um hacker la tentando fazer brute force em um equipamento protegido, por isso eles usam dinamite :P Commented 29/06/2017 às 17:39
  • 1
    @diegofm é aquela história da praticidade VS risco. Para a maioria das pessoas perder as senhas do navegador não é tão grave nem ocorre com frequência. Commented 29/06/2017 às 17:42
  • 7
    +1 sSashaGrey
    – David
    Commented 29/06/2017 às 17:47
  • 1
    No seu segundo exemplo, se você diferencia as letras maiúsculas das minúsculas, o espaço a vasculhar é 52<sup>10</sup>; no terceiro, maiúsculas, minúsculas e letras fazem 62<sup>10</sup>; e no último, só há 94 caracteres "visíveis" no ASCII (33 a 126, inclusive). Somados ao espaço (ASCII 32), o espaço de busca nesse caso é 95<sup>10</sup>.
    – Wtrmute
    Commented 29/06/2017 às 18:25
  • 1
    @Marconi obrigado :) Commented 5/07/2017 às 12:34
8

Em minha opinião, não, vou explicar o por que:

De um modo geral, existem 2 alvos principais, o "Usuário" e o "Sistema".

Entretanto, a maioria dos ataques direcionados a um "Usuário" tem como real objetivo obter informações que serão usadas para atacar um "Sistema".

Em sistemas abertos o atacante nem necessita atacar um "Usuário" primeiro, para atacar o "Sistema", ele mesmo pode criar um "Usuário" e à partir dele explorar possíveis falhas. Diferente de sistemas fechados, onde terá como alvo um "Usuário" ou a "Rede" para tentar explorar o "Sistema".

Em ambos os casos, o "Usuário" não está preparado para se defender de um ataque se ele for o alvo. A maioria dos ataques realizados a "Usuários" comuns, se dão através de "Engenharia Social", então não importa quão grande ou complexa seja a senha se o atacante por meio da "Engenharia Social" conseguir presentear o "Usuário" com um trojan, a senha foi quebrada, a nível de "Usuário".

Em relação a comparação que fez com o Banco, o sistema envolve uma série de outras políticas do que a senha em si, por exemplo, como dito o cartão de crédito são 4 dígitos, mas na verdade, a transação de crédito, dependendo do meio, nem precise dos 4 dígitos, apenas os dados do cartão, entretanto o "Sistema" é capaz de avaliar se essa compra está dentro dos padrões do "Usuário" e tomar as medidas necessárias, caso a operação seja suspeita.

Em resumo, em se tratando de "Usuário"(UX), não acredito que forçar uma senha complexa seja indispensável a segurança, em relação ao "Sistema", esse tema ocupa extensa literatura.

inserir a descrição da imagem aqui

6
  • Em sistemas abertos o atacante nem necessita atacar um "Usuário" primeiro, para atacar o "Sistema", ele mesmo pode criar um "Usuário" e à partir dele explorar possíveis falhas. Mas é muito mais gostoso quando você pega a senha do Admin :D Commented 29/06/2017 às 18:24
  • Se a senha do Admin compromete todo o sistema, algo precisa ser revisto e pelo que agente vê no dia dia, percebemos como muitos estão vulneráveis. Pelo que ando vendo em (GRC), é o que você falou, quanto menor o risco maior o custo(monetário e burocrático)...
    – MagicHat
    Commented 29/06/2017 às 18:33
  • @MagicHat Quando você diz ataques a um Usuário você fala sobre os ataques XSS? o "Sistema" é capaz de avaliar se essa compra está dentro dos padrões do "Usuário" e tomar as medidas necessárias você quer dizer o Anti Fraudes das empresas?
    – Marconi
    Commented 30/06/2017 às 12:14
  • 2
    @Marconi usuário como utilizador humano de um sistema, o sistema se defende do XSS o usuário se defende da engenharia social. Noutro ponto, entenda sistema como um conjunto de regras e políticas que será analisado por um algorítimo a cada operação, incluindo o sistema Anti Fraudes. Veja minha resposta no que tange a segurança é bem genérica, a intenção foi deixar explícito os personagens e atribuir a responsabilidade da segurança a quem é devido, no caso o sistema. Nesse aspecto Global entenda sistema como o conjunto de todos os elementos do diagrama da imagem e não apenas ao software.
    – MagicHat
    Commented 30/06/2017 às 12:48
  • Uma ataque ao usuário pode ser feito com engenharia social tambem, é até mais fácil.
    – Intruso
    Commented 6/07/2017 às 0:27
8

Como já responderam muito bem sob os aspectos técnicos, vou responder sob o ponto de vista da UX.

Porque alguns sistemas exigem senhas tão fortes?

Porque há uma preocupação legítima com a segurança dos usuários - e também com o negócio da empresa. Não importa o serviço que se esteja oferecendo (saque do próprio dinheiro ou acesso aos memes no Facebook, por exemplo), se a conta de um usuário for roubada esse usuário não será o único a ter problemas. A percepção geral da qualidade do serviço será afetada em pouco tempo, pois o usuário certamente irá compartilhar essa ocorrência com seus pares. Além disso, enquanto que do ponto de vista do indivíduo o pior que pode ocorrer é o roubo dos seus dados/bens, do ponto de vista da companhia o pior é o roubo da identidade: ao se passar por alguém que não é, o meliante terá mais facilidade para roubar mais usuários usando engenharia social (se fazendo passar por um amigo do Facebook, por exemplo) e ajudará o problema a crescer exponencialmente.

A solução utilizada então é dificultar ao máximo o acesso não autorizado, mesmo que em detrimento de outras qualidades (mais a seguir). Como os colegas já responderam bem, senhas complexas e maiores são estatisticamente mais difíceis de serem adivinhadas e comprovadamente mais difíceis de serem quebradas.

Isso não dificultaria o usuário a lembrar essa senha em uma possível volta ao sistema?

Certamente sim. Na resposta aceita foi comentado que os bancos podem se permitir fornecer senhas curtas porque há outras restrições (até mesmo físicas). Embora isso seja verdade, essa não é a motivação. Trata-se de outra preocupação legítima com os usuários e com o negócio. Uma senha menor é potencialmente mais fácil de ser lembrada, mas o mais importante é que é mais rápido digitá-la na fila do banco! Senhas complexas requerem não somente equipamentos mais complexos (e caros), como também procedimentos igualmente mais complexos. Por exemplo, o teclado numérico do caixa eletrônico ocupa menos espaço físico do que um teclado alfanumérico; além disso, o usuário não precisa segurar um SHIFT para entrar com um caractere diferente. Ou seja, a preocupação do banco é fazer você aguardar menos tempo na fila porque isso é bom para você e (principalmente) para o banco, já que diminui as filas e permite o uso por mais clientes.

Na verdade o ideal para um banco seria não precisar de senha alguma, pois qualquer erro de digitação também gera atrasos (<ironia>ah, sim, claro, não vamos esquecer do usuário, que não precisaria mais ficar lembrando de nada</ironia>). Não é para menos que até o Banco do Brasil agora tem caixas eletrônicos com leitores de impressões digitais ou palma da mão...

Sistemas devem forçar o usuário a criar uma senha forte?

Não, não deveriam. Em verdade a minha resposta para essa pergunta é a sugestão de troca de uma única palavra: Sistemas deveriam auxiliar o usuário a criar uma senha forte.

Primeiramente, é do interesse do usuário que seu perfil, seus dados e bens sejam mantidos seguros, de forma que as pessoas naturalmente se sentem motivadas a atuar para aumentar a segurança. Por exemplo, quer mais motivação intrínseca do que ser obrigado a alterar uma senha a cada 6 meses, utilizando tamanho mínimo de 8 caracteres, ao menos 1 dígito e 1 símbolo, não podendo repetir as 3 últimas senhas utilizadas, e mesmo assim continuar usando o serviço? (infelizmente é um caso real...). Em outras palavras, as pessoas tendem a utilizar as senhas que uma empresa obrigar mesmo que isso torne a vida delas um inferno. Isso me faz crer que se esse processo for facilitado, elas irão continuar tendo esse interesse (ao contrário do que talvez se acredite por aí).

Em segundo lugar, já é amplamente sabido que senhas complexas demais são ruins não somente para a experiência do usuário, mas também para a segurança do sistema. Se o usuário for obrigado a utilizar uma senha difícil de memorizar (principalmente quando o processo de criação é obscuro para ele), são grandes as chances de ele anotar, reutilizar a mesma senha em diversos sistemas diferentes, e principalmente esquecer e precisar trocar. Estudos demonstraram, por exemplo, que o esquecimento de senhas não decorre de idade, como o senso comum pode levar a acreditar, mas à quantidade de senhas utilizadas pelo indivíduo e aos diferentes contextos em que são utilizadas (referência do estudo: Passwords Usage and Human Memory Limitations: A Survey across Age and Educational Background). Em outras palavras, quanto mais senhas uma pessoas precisa lembrar, e quanto mais deslocadas do contexto de uso cada uma dessas senhas são, mais as pessoas irão esquecer as senhas e precisar constantemente alterá-las.

Por isso o ideal seria que os projetistas construissem os sistemas de forma que os usuários fossem permitidos de construir senhas livremente, mas instruídos a fazê-lo usando sentenças reais e significativas pessoalmente no contexto de uso do sistema. Por exemplo, poder-se-ia ilustrar aos usuários que uma senha forte para um site de literatura não é um trecho de um livro de Shakespeare (que todo mundo pode conhecer), mas uma frase própria que traduz como ele se sente em relação ao serviço.

Por exemplo, considere a frase: "O livro que eu mais gosto de George Orwell é 1984!". Ela é relativamente fácil de ser lembrada pelo usuário porque (1) foi ele quem a escolheu livremente; (2) ela é significativa para o indivíduo; e (3) tem muita relação com o contexto de uso do sistema. Poder-se-ia argumentar que isso reduz a segurança pois essa informação pode ser conhecida por outras pessoas. Só que muito embora isso possa ser verdade, a frase é suficientemente complexa no sentido da quantidade de permutações para dificultar enormemente sua adivinhação exata. E, na prática, é isso que ocorre de qualquer forma: se a livraria usasse a mesma tática do banco, a senha desse usuário provavelmente seria apenas "1984". :)

4
  • 1
    Eu queria poder dar múltiplos votos positivos, em especial por "Em verdade a minha resposta para essa pergunta é a sugestão de troca de uma única palavra: Sistemas deveriam auxiliar o usuário a criar uma senha forte." Mas com relação à senha do banco: eu tenho senhas distintas para ATM e Internet Banking em dois bancos. As de ATM são realmente simples e pequenas, mas as de Internet Banking não. Uma delas inclusive tem caracteres especiais, o que não é possível no ATM. Commented 28/07/2017 às 12:59
  • Vou lembrar das minhas senhas de acordo com o último paragrafo, ótima ideia :). @Luiz você acha que devo trocar o titulo da minha pergunta? Já deixei o meu +1, excelente resposta.
    – Marconi
    Commented 28/07/2017 às 13:59
  • 1
    É porque na sua Internet não tem fila @Renan. :) Commented 28/07/2017 às 18:28
  • 1
    Obrigado @Marconi. Mas não acho que seja necessário mudar nada na sua pergunta. Commented 28/07/2017 às 18:34

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .