Sua senha, sua vida
No conto “Ali Babá e os 40 ladrões”, Ali Babá esconde-se no alto de uma árvore ao perceber a aproximação de um bando de ladrões, montados a cavalo. Perto da árvore, diante de uma grande pedra junto à montanha, o bando pára e o chefe dos ladrões pronuncia a célebre frase: “Abre-te sésamo” e a grande pedra se move, revelando uma caverna. Os ladrões entram com os cavalos carregados e depois de algum tempo saem da caverna sem as cargas, quando o chefe do bando pronuncia “Fecha-te sésamo” e a grande pedra volta a fechar a caverna. Algum tempo depois dos ladrões partirem, Ali Babá aproxima-se da pedra e pronuncia a mesma frase: “Abre-te sésamo”. E a pedra se move revelando um grande tesouro…
Esse é um clássico exemplo de captura de senha, feita por Alí Babá. Como o sistema de segurança da caverna não possuía um sistema biométrico (reconhecimento de voz), mas tão somente o reconhecimento da fala, qualquer um que soubesse a senha poderia abrir a caverna, tal como Alí Babá, revelando-se um sistema de segurança muito frágil.
Claro que isso é uma brincadeira, mas no mundo real e altamente tecnológico de hoje, utilizamos senhas a todo instante: para acessar o computador, ler e-mail, fazer transações bancárias, pagar um compra com cartão magnético e até para almoçar (para quem usa ticket em meio magnético). Muito de nossas vidas depende das senhas que utilizamos e é fundamental que saibamos utiliza-las da forma mais segura possível.
Para que serve uma senha
Embora todo mundo use, muitos não se percebem do seu sentido. Quando você vai acessar um sistema, tem que informar uma identificação: seu nome de usuário, sua agência e conta bancária, seu número de cartão de crédito, etc. que servem para identificar você, ou seja, “quem é você”. Até aí não quer dizer muita coisa, pois qualquer pessoa poderia informar a sua identificação para tentar se passar por você.
Para que um sistema tenha certeza que “você é quem diz ser”, torna-se necessário que haja uma autenticação. Para isso existem os Fatores de Identificação, divididos em 3 categorias:
- Algo que só você sabe: senha, frase de segurança, PIN
- Algo que só você possui: cartão de identificação, security token
- Alguma característica que só você tem: impressão digital, padrão de retina, padrão de voz e outras características biométricas.
A senha é o método mais utilizado por ser mais barato e simples de utilizar embora apresente alguns inconvenientes. Se for muito simples é fácil de ser quebrada. Se for muito complexa é mais fácil de esquecer. Mas, como (teoricamente) trata-se de um segredo que só você conhece, é suficiente para comprovar a sua autenticidade.
Para aumentar a segurança, alguns sistemas utilizam um segundo fator de autenticação, como um cartão magnético, que seria algo que só você possui. É o caso do cartão magnético do banco. Alguém pode descobrir sua senha, mas sem o cartão, não vai conseguir fazer nada. Da mesma forma, se alguém roubar seu cartão, não vai conseguir fazer nada se não souber a sua senha. O mesmo princípio é observado nos cofres: além do segredo, existe uma chave. O cofre só se abre com a chave e segredo corretos. É a chamada Autenticação de Dois Fatores.
Como funciona uma senha
Para que um sistema possa verificar a sua autenticidade através de senha, ele tem que armazena-la juntamente com o seu login (identificação). Armazena-la em texto claro não oferece qualquer segurança, pois qualquer pessoa que tenha acesso ao local em que elas estão armazenadas, terá acesso às senhas.
Alguns sistemas pouco seguros aplicam algum método criptográfico para armazena-las. Quando você se autentica, eles descriptografam a senha armazenada para comparar com a senha que você forneceu. Ou fazem o inverso: criptografam a senha digitada e comparam com a que está armazenada. Esse método também é inseguro porque toda criptografia depende de uma chave e um método criptográfico. Uma vez conhecidos, podem revelar todas as senhas.
Os sistemas mais seguros trabalham com uma forma de criptografia unidirecional, denominada de hash. Quando sua senha vai ser armazenada, o sistema aplica um método matemático para gerar uma seqüência numérica de tamanho fixo, geralmente representada em hexadecimal. O modelo matemático aplicado é publicamente conhecido, mas o resultado gerado é único para cada senha. Teoricamente é impossível que existam duas senhas diferentes que gerem o mesmo valor de hash. Pequenas variações na senha também geram hashes totalmente diferentes impossibilitando a dedução pela seqüência.
Exemplo:
| Senha | Hash |
| aaa | 1c3a2b6d939a1021aad3b435b51404ee:e24106942bf38bcf57a6a4b29016eff6 |
| aab | ef20f1afa8178582aad3b435b51404ee:741fe226bbd8e7181493b650a769c619 |
| aac | 20606b82a2c18ceaaad3b435b51404ee:a6d6f7ae9b6d52f7bc7c2b23e6dd1d92 |
| aaaaa | a80f6e6a87ba6ac2aad3b435b51404ee:75c06256f58d07a18b239e4cc39a382d |
Observe que a simples alteração de uma letra, resulta em um hash totalmente diferente e do mesmo tamanho, não importando o tamanho da sua senha.
Como não é possível decodificar o hash para obter a senha que o gerou, no momento da sua autenticação, o sistema aplica o mesmo método de cálculo na senha que você está fornecendo para obter o seu hash e assim comparar com o hash armazenado. Se forem iguais, sua senha está correta e você é autenticado.
Quebrando senhas
Você deve estar imaginando que, como o hash é uma criptografia “sem volta”, sua senha está segura. Depende… Como não há como decodificar o hash, aplicamos a chamada “Força Bruta” ou seja, método de tentativa e erro, para testar todas as combinações de caracteres possíveis, até encontrar aquela que gere o hash desejado. Com o poder computacional dos dos micros atuais e uso de programas específicos para isso, QUALQUER senha do Windows pode ser quebrada em questão de 1 ou 2 dias (na configuração padrão do Windows até a versão XP, daqui a pouco você vai entender a razão).
O tempo necessário para se quebrar uma senha depende de alguns fatores:
- Comprimento da senha: número de caracteres utilizados.
- Conjunto de caracteres: maiúsculas, minúsculas, números e símbolos.
- Poder computacional: quantas tentativas podem ser feitas num intervalo de tempo.
Imagine um sistema que só aceite como senha, valores numéricos de 0 a 9. Não é necessário ser nenhum cracker para quebrar uma senha que ofereça somente 10 possibilidades. Imagine agora, que esse sistema foi aprimorado e passa a aceitar senhas de um ou dois dígitos numéricos. Agora já temos 10 possibilidades (de 0 à 9) + 100 possibilidade (de 00 à 99), totalizando 110 combinações diferentes de senha. Já dá um pouco de trabalho, mas ainda é possível de se fazer manualmente.
Agora, vamos considerar que ao invés de usar somente dígitos numéricos, podemos utilizar somente letras maiúsculas. Temos então 26 possibilidades para uma senha de um caracter + 26 * 26 (ou 262 ) para dois caracteres, totalizando 702 combinações (26+676). Perceba que não alteramos o tamanho da senha, mas somente o conjunto de caracteres possíveis de serem combinados. Agora já fica mais difícil para uma pessoa quebrar manualmente, mas para um computador ainda é mais rápido que um piscar de olhos.
Para quem gosta de exercícios matemáticos, o número de combinações é calculada pela seguinte fórmula:
KS = Lm + Lm+1 + Lm+2 + …….. + LM
onde:
KS = número total de senhas possíveis
L = comprimento do conjunto de caracteres
m = comprimento mínimo da senha
M = comprimento máximo da senha
Para quem não quer ter trabalho, a tabela abaixo ilustra as quantidades totais de combinações possíveis para senhas que tenham de 1 até 7 caracteres. Na primeira coluna temos o conjunto de caracteres utilizados; na segunda, a quantidade de caracteres desse conjunto; na terceira coluna, temos o total de combinações possíveis.
Combinações entre 1 a 7 caracteres por senha:
| Conjunto de Caracteres |
Quant. |
Combinações |
| Números |
10 |
11.111.110 |
| Letras Maúsculas |
26 |
8.353.082.582 |
| Letras Maiúsculas + Números |
36 |
80.603.140.212 |
| Maiúsculas + Números + “!@#$%^&*()-_+=~`[]{}|\:;”‘<>,.?/” |
68 |
6.823.331.935.124 |
| Maiúsc. + Minúsc. + Núm. + “!@#$%^&*()-_+=~`[]{}|\:;”‘<>,.?/” |
94 |
65.545.047.154.954 |
Se você observou a fórmula, o número de possibilidades cresce de forma exponencial, determinado pelo comprimento da senha e conjunto de caracteres utilizados. Resumindo: quanto mais diversificados forem os caracteres utilizados e quanto maior for a senha, mais difícil ela se torna para ser quebrada. Dependendo do sistema e de como você constrói sua senha ela pode ser quebrada em milissegundos ou em anos.
A fragilidade do Windows
Quando o Windows foi criado, a Microsoft utilizou um método de hash chamado de LM Hash ou Lan Manager Hash. Para os padrões da época, podiam até ser suficientes, mas com o poder computacional das máquinas atuais, tornou-se muito fácil de ser quebrado por força bruta. Posteriormente, a Microsoft passou a adotar o NT Hash, que já tem um nível de segurança muito melhor, mas por questões de compatibilidade com os sistemas antigos (Windows 95 e 98), o LM Hash continua a ser utilizado, habilitado por padrão no Windows XP, 2000 e 2003, juntamente com o NT Hash.
A fragilidade do LM hash está no fato de que, apesar de aceitar senhas de até 14 caracteres, o que já daria um bom nível de segurança, ele divide a senha em duas partes de 7 caracteres e ainda por cima, converte todas as letras para maiúsculas, reduzindo assim o universo de caracteres utilizados e o comprimento efetivo da senha para 7 posições.
Comparando os dois padrões:
- LM hash é case-insensitive (ignora se é maiúscula ou minúscula); o NT hash é case-sensitive.
- LM hash aceita um conjunto de 142 caracteres; NT hash aceita praticamente todo conjunto de 65,536 caracteres do padrão Unicode.
- LM hash divide a senha em dois blocos de 7 caracteres, ignorando o excedente; NT hash utiliza a senha inteira fornecida pelo usuário.
Embora o NT hash seja muito mais seguro, a coexistência com o LM hash permite que os programas quebrem a senha LM hash e depois tente diversas variações de minúsculas e maiúsculas para encontrar a senha NT hash.
——
Na segunda parte desse artigo, eu mostro como as senhas são (facilmente?) quebradas e como melhorar a segurança das suas senhas.
(Parte 2)
7 respostas Até agora ↓
Daniel Alencar da Costa // Setembro 5, 2008 às 10:12 am |
Parabéns pelo post, Megumi
esse seu blog é nota 10!
Ribamar // Setembro 5, 2008 às 10:36 am |
Muito bom o artigo da semana,
Parabéns!
Adilson // Setembro 6, 2008 às 12:41 am |
Interessante o artigo publicado no blog. Na minha opinião faltou dizer que, embora haja tecnologia para garantir a segurança de uma senha, eventualmente o acesso às informações de uma base de dados necessita ser concedido, mediante a uma decisão judicial.
drwhitehat // Setembro 6, 2008 às 1:10 am |
Concordo quando se tratar de alguma ação investigativa e que que implique em quebra de sigilo ou privacidade, entretanto, num ambiente corporativo já existe jurisprudência no sentido de que o seu parque tecnológico e as informações nelas contidas constituem ativos de sua propriedade, sendo lícito, portanto, que os responsáveis pela gerência desses recursos, em nome da segurança e zêlo dessas informações, efetuem testes para verificar a existência de vulnerabilidades em suas proprias redes, incluindo-se aí, uma auditoria no sistema a procura de senhas fracas, sem que para isso tenha que pedir qualquer autorização judicial.
Alem disso, crackers e ciber criminosos não fazem uso de nenhum recurso legal para invadir um sistema, por isso precisamos saber nos defender desses indivíduos.
Venancio // Setembro 10, 2008 às 4:12 pm |
Uma certa vez,escutei um comentário dentro de um banco,onde o gerente tentava convencer a uma cliente já idosa, que a senha dela tinha que ter uma certa complexidade, nao poderia ser senha fácil.
Neste momento ela fez um comentário que até hoje nunca saiu daminha memória, ela falou “quero uma senha fácil”, se for abordada pelo bandido preciso passar rápido pra ele, e com isso preservo minha vida. ou seja segurança da vida x segurança da informação.
drwhitehat // Setembro 10, 2008 às 6:22 pm |
Isso é no mínimo um dilema curioso… Nunca tinha visto algo assim.
Michael // Setembro 12, 2008 às 2:44 pm |
Vou alterar minha senha. Esta muito fraca
Parabéns pelo Texto.