(Tempo de Leitura: 7-10 minutos)
Você acorda e vai trabalhar (eventualmente trabalha de casa). Abre seu e-mail e lá está uma mensagem gerada automaticamente informando que já se passaram X (90, 120, 180) dias desde a última vez que você trocou sua senha, logo, essa troca deve ser feita nos próximos Y (5, 10, 15) dias para que você não perca o acesso. Resmungando, você navega até algum link contido no e-mail e realiza a troca da senha, já se preparando para refazer essa atividade em X dias.
Essa é a realidade de boa parte dos funcionários (hoje chamados de colaboradores) de empresas que tenham times de Segurança da Informação. Na visão do time de segurança é apenas mais uma boa prática que está sendo implementada em prol do bem do próprio usuário e da empresa. Na visão do usuário é apenas mais uma razão para criticar o time de segurança, dizendo que sempre atravancam os processos, principalmente quando o usuário tenta colocar uma senha que ele utilizou há um ano e meio e o sistema reclama que essa senha já foi antes utilizada.
Por mais que essa prática tenha sido boa, as coisas evoluíram (no sentido de mudar, não de melhorar) mas não temos visto (generalizando) padrões de mercado se adaptando ao novo mundo. Nesse post vou explicar (1) a razão pela qual a troca se tornou uma boa prática anos atrás e, principalmente, (2) mostrar que não é mais necessário obrigar o usuário a trocar periodicamente suas senhas. Vamos lá.
É o que diz o NIST (National Institute of Standards and Technology, ou Instituto Nacional de Padrões e Tecnologias) em sua publicação especial (SP) 800-63B, na seção 5.1.1.3, traduzida com adaptações abaixo:
Não deve ser considerada obrigatória a troca arbitrária (periódica) de segredos/senhas. Entretanto, a troca deve ser forçada em casos em que há evidências de comprometimento de segredos/senhas.
Segundo a mesma publicação, a razão por trás dessa forma diferente de pensar é que os usuários têm uma tendência a escolher senhas mais fracas que consigam memorizar quando sabem que vão ter que trocar de senha em um futuro breve, bem como quando têm muitas senhas a memorizar. Quando é necessário trocar a senha, os usuários costumam fazer alguma transformação da senha anterior, o que, estatisticamente se dá pelo incremento de algum número da senha e que, na prática, apenas entrega ao possível hacker mais insumos para conseguir quebrar senhas.
O CONTEXTO HISTÓRICO…
É a história que explica o motivo de fazermos expiração de senhas. Em um tempo não muito distante, 90 dias era considerado como um tempo médio necessário para que um "hash" de senha fosse quebrado. Logo, na essência, se 90 dias era o tempo médio para conseguir quebrar um "hash" de senha, deveria-se trocar a senha em um período inferior a 90 dias. Dessa forma, quando um hacker conseguisse descobrir a senha, a mesma já estaria obsoleta.
Aos poucos esse foi se tornando um requerimento de diversos padrões da indústria de segurança. Também aos poucos, a origem (90 dias médios para quebrar uma senha) foi esquecida e restou apenas a cultura obrigatória de que era necessário trocar a senha como um bom padrão. Quem não seguisse essa norma seria um péssimo profissional de segurança da informação.
O fato é, no entanto, que as coisas mudaram e, diferentemente deste passado recente, hoje o tempo para quebrar uma senha é menor. MUITO MENOR.
Em média, uma senha de 8 caracteres (composta de caracteres maiúsculos, minúsculos, números e caracteres especiais - ou seja, talvez o MAIS COMUM PADRÃO DO MERCADO) pode levar 4.2 horas para ser quebrado. Sim, 4.2 horas. Graças à nuvem e, gastando algo entre 50 e 150 dólares, um hacker consegue suficiente processamento computacional com GPUs que conseguem quebrar uma senha de 8 caracteres, onde cada um desses caracteres tem 26 possibilidades maiúsculas, 26 minúsculas, 10 algarismos e 33 caracteres especiais.
O supracitado já nos dá uma dica: se quebrar uma senha curta (8 caracteres) é fácil, o tempo de 90 dias de rotação começa a não fazer sentido. Além disso, o hacker esperto moderno não costuma gastar dinheiro comprando GPUs. Não é eficiente. Ao invés de força bruta vale mais a pena investir em "harvesting" (perdão, "colheita" não faria sentido) de senhas, com uso de phishing ou com os famosos Keyloggers, algo que pode atingir mais usuários ao invés de quebras individuais de senhas.
O fato é: se a sua senha for roubada, provavelmente isso acontecerá em questão de segundos, minutos ou horas. Não 90 dias.
COMPORTAMENTO DO USUÁRIO...
Como dito anteriormente, ao obter um hash de senha de um usuário o hacker precisa quebrá-lo. Se o hacker tiver dois, três, quatro hashes de senhas diferentes, maiores são as chances de quebrar as senhas. E é exatamente isso que podemos entregar para o hacker: se a cada 90 dias solicita-se uma troca, em apenas um ano geram-se 4 distintas senhas. E isso ainda piora se a entropia das senhas for mínima. Explico entropia mínima com o exemplo abaixo:
Vamos supor que você, usuário, é obrigado a utilizar uma senha que tenha uma combinação de pelo menos uma letra maiúscula, pelo menos uma letra minúscula, pelo menos um número e pelo menos um caractere especial, além de um mínimo de 8 caracteres. Não sou mágico mas uma combinação de ciência e experiência me fariam acreditar (em palestras e reuniões com clientes, percebo a assertividade pelas risadas) que o padrão final de senha será algo como:
1 Letra Maiúscula + Letras minúsculas + Número(s) + Caractere Especial ao final, algo como:
Supersenha1!
E digo mais: não me surpreenderia se, passados 90 dias, você trocasse essa senha por:
Supersenha2!
E 90 dias depois: Supersenha3!
Talvez você não saiba o que entropia (aulas de química?) significa mas, acredite, a entropia dessas senhas, individualmente e, entre elas, é baixa. Do ponto de vista do hacker, se a troca é obrigatória a cada 90 dias, em apenas um ano você está criando 4 hashes distintos que são um prato cheio para facilitar a quebra das senhas.
Saimos de um mundo em que levava 90 dias médios para quebrar uma senha para outro em que leva minutos ou horas. Trocar a senha, portanto, apenas faz com que (1) os usuários criem senhas cada vez mais fáceis de memorizar e, por consequência, mais fáceis de serem quebradas, bem como (2) dá mais insumos (hashes) para o hacker conseguir quebrá-las.
Bem, seguramente a mensagem aqui não é a de desistir de tudo já que uma senha pode ser quebrada em 4.2h mas sim, reforçar que deve-se mudar a estratégia. Ao invés de se solicitar uma troca periódica, deve-se implementar algo diferente:
MFA ou 2FA - Usar apenas um fator (senha) é uma droga. Utilizar mais de um fator ajuda. SMS não é excelente, mas é melhor que nada. Authenticators (Apps) ainda são suscetíveis a Man-In-The-Middle mas são melhores que SMS. O melhor caminho é utilizar tokens físicos, em compliance com FIDO e que usam U2F (Universal Second Factor).
Passphrases - ou frases-senha. Dado que o principal fator para quebrar uma senha hoje é o poder computacional, podemos deixar as coisas mais difíceis para os hackers. O mesmo poder computacional que quebra 8 caracteres em 4.2 horas leva 5.7 trilhões de anos para quebrar 16 caracteres. E a melhor forma de criar 16 caracteres facilmente memorizáveis pelo usuário é utilizando frases que façam sentido. Podemos até trocar os famigerados 8 caracteres de data de nascimento (11091976) por !EuN@sciEm1976! (favor não usar essa senha).
Trocar as senhas é, sim, importante, desde que haja motivos para tanto. Se houver suspeita de que houve alguma quebra de segurança, solicite, sim, a troca da mesma.
A maior parte das senhas é inserida em Browsers nesse mundo da Nuvem em que vivemos. Utilize a ajuda de soluções de Cofre de Senha ou plugins (escolha com cuidado) que ajudem a gerenciá-las. É a única forma de garantir senhas únicas para cada aplicação
Na linha do item 4, no mundo ideal o usuário terá senhas únicas para cada aplicação. No mundo real ele jamais vai conseguir memorizar tantas senhas. Portanto, a recomendação aqui é ou utilizar algum gerenciador de senhas (item 4) e/ou utilizar Single Sign-On (SSO).
No final das contas, removendo o requerimento de troca periódica e reforçando a necessidade de uma senha perene (salvo suspeita de quebra) estamos criando uma cultura de amizade entre negócio e segurança da informação, usuários mais felizes e riscos reduzidos. Sem falar em uma economia com chamados de Help-Desk dos usuários que não trocaram a senha quando solicitado e agora "não conseguem acessar mais nada".
Você, usuário: leve esse texto para seu amigo de segurança da informação.
Você, de SegInfo: pense com carinho nessa mudança. Poucas vezes temos uma simbiose facilmente executável entre segurança e negócio, vale a pena.
https://towardsdatascience.com/password-cracking-is-easy-heres-how-to-do-it-875806a1e42a
Marcos Cavinato é especialista em Segurança e Compliance em uma das maiores multinacionais do planeta. É certificado CISSP, CCSP, CEH, GCP Security, GCP Architect, Instrutor do Curso de Segurança em Redes de Computadores e do Curso de Segurança em Nuvem aqui na SegInfoBrasil e criador do Canal Segurança Cavinato no Youtube.