Armazenamento de Senhas No Linux [Artigo]

9
Armazenamento de senhas no Linux Autor: Elgio Schlemer <elgio.schlemer at gmail.com> Data: 08/02/2008 Introdução Autenticar um usuário em um sistema sempre foi alvo de pesquisa. Para que um sistema aceite o usuário é necessário que ele, de alguma forma, prove que ele é o usuário que diz ser. A autenticação sempre é baseada em três princípios, sendo que a combinação de mais de um deles aumenta a segurança; 1) baseado no que você tem Neste tipo de autenticação o usuário precisa provar que tem a posse de alguma coisa, supondo que somente o usuário real tem este objeto. Não estou falando de senha, pois a senha o usuário "não tem", ele "conhece". Um exemplo bem atual deste sistema é o cartão de banco. Se você não tiver o cartão não poderá se autenticar perante o terminal de saque. 2) baseado em algo que você é Neste caso o sistema identificará você pelo que você é. Resumindo em uma única palavra: BIOMETRIA. Autenticação por impressão digital, análise da retina e outras mais sofisticadas e ainda em estudo como reconhecimento facial são exemplos deste tipo de autenticação. 3) baseado no que você sabe Aqui entra o foco deste estudo. Você será reconhecido pelo sistema se souber um segredo que, supostamente, ninguém mais saberia. Aqui entra a senha. Muitos sistemas críticos de segurança usam mais de um tipo de autenticação podendo até usar os três ao mesmo tempo. Bancos geralmente usam o tipo 1 e tipo 3. Você tem um cartão mas também precisa conhecer a senha, não raro mais de uma (senha, três letrinhas, últimos dígitos do cartão que você tem e as vezes informações pessoais do seu cadastro). Sistemas computacionais geralmente usam somente a senha para autenticar o usuário. O problema é: como armazenar com segurança as senhas de todos os usuários? A maneira mais infantil e, claro, não usada nem mesmo pela Microsoft é armazenar as senhas em um arquivo texto ou em um Banco de Dados. É muito fácil prever o desastre que pode ocorrer se alguém roubar este arquivo, fato que muito freqüentemente ocorre em sites da Internet que insistem em armazenar senhas desta forma precária. Mas existem outras, sendo que a melhor delas ainda é HASH com salt numbers. Armazenamento de senhas no Linux [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7812 1 de 9 2/1/2014 10:18

Transcript of Armazenamento de Senhas No Linux [Artigo]

Page 1: Armazenamento de Senhas No Linux [Artigo]

Armazenamento de senhas no Linux

Autor: Elgio Schlemer <elgio.schlemer at gmail.com>Data: 08/02/2008

Introdução

Autenticar um usuário em um sistema sempre foi alvo de pesquisa. Para que um sistema aceite o usuário énecessário que ele, de alguma forma, prove que ele é o usuário que diz ser.

A autenticação sempre é baseada em três princípios, sendo que a combinação de mais de um delesaumenta a segurança;

1) baseado no que você tem

Neste tipo de autenticação o usuário precisa provar que tem a posse de alguma coisa, supondo quesomente o usuário real tem este objeto. Não estou falando de senha, pois a senha o usuário "não tem", ele"conhece". Um exemplo bem atual deste sistema é o cartão de banco. Se você não tiver o cartão nãopoderá se autenticar perante o terminal de saque.

2) baseado em algo que você é

Neste caso o sistema identificará você pelo que você é. Resumindo em uma única palavra: BIOMETRIA.

Autenticação por impressão digital, análise da retina e outras mais sofisticadas e ainda em estudo comoreconhecimento facial são exemplos deste tipo de autenticação.

3) baseado no que você sabe

Aqui entra o foco deste estudo. Você será reconhecido pelo sistema se souber um segredo que,supostamente, ninguém mais saberia. Aqui entra a senha.

Muitos sistemas críticos de segurança usam mais de um tipo de autenticação podendo até usar os três aomesmo tempo. Bancos geralmente usam o tipo 1 e tipo 3. Você tem um cartão mas também precisaconhecer a senha, não raro mais de uma (senha, três letrinhas, últimos dígitos do cartão que você tem e asvezes informações pessoais do seu cadastro).

Sistemas computacionais geralmente usam somente a senha para autenticar o usuário.

O problema é: como armazenar com segurança as senhas de todos os usuários?

A maneira mais infantil e, claro, não usada nem mesmo pela Microsoft é armazenar as senhas em umarquivo texto ou em um Banco de Dados. É muito fácil prever o desastre que pode ocorrer se alguémroubar este arquivo, fato que muito freqüentemente ocorre em sites da Internet que insistem em armazenarsenhas desta forma precária. Mas existem outras, sendo que a melhor delas ainda é HASH com saltnumbers.

Armazenamento de senhas no Linux [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7812

1 de 9 2/1/2014 10:18

Page 2: Armazenamento de Senhas No Linux [Artigo]

Senha em um simples arquivo texto

O primeiro método que se possa pensar é ter um arquivo com as senhas. Cito este método porqueinfelizmente ele ainda é amplamente usado em sites. Usarei exemplos de arquivos, mas o conceito valepara banco de dados (alguém pode pensar que o BD tem maior segurança porque exige autenticação. Ora,em um ataque supõe-se que o atacante invadiu a máquina e teve plenas condições de ler os fontes de teuPHP para ver a senha do Banco de Dados!).

Se este método fosse o usado no Linux, poderíamos imaginar um arquivo /etc/passwd deste jeito:

elgio:teste123:Elgio Schelmer:/home/elgio:/bin/bash

O formato do arquivo /etc/passwd realmente é este, com cada campo separado com dois pontos, mas asenha não fica armazenada assim em texto claro.

A autenticação seria fácil: usuário fornece seu login, sistema lê o arquivo de senhas e lá pega a senha dele(teste123). Usuário fornece senha, se for realmente "teste123" ele acertou a senha e pode se logar.

Contudo é muito fácil imaginar os problemas: qualquer um que tivesse acesso de leitura no arquivo/etc/passwd (e no Linux TODOS precisam ter este acesso) poderia ver a senha de todos. Além do mais sealguém roubasse este arquivo teria ali, sem dificuldade a senha até do root.

Sem dúvida um método extremamente ingênuo e não deveria ser usado para nada, absolutamente nada.

Senha em um arquivo criptografado

Rapidamente alguém poderia pensar: bom, posso criptografar o arquivo de senhas, assim mesmo compermissão de leitura a leitura de nada adiantaria. Poderia usar os excelentes algoritmos como o AES128para realizar esta cifragem.

O problema deste método é que algoritmos de criptografia requerem chave. Só a Microsoft conseguiu afaçanha, até hoje sem nenhum sentido para mim, de criptografar pastas no Windows 2000 sem que ousuário precisasse colocar uma chave.

Se o arquivo de senhas ou mesmo parte dele estiver cifrado, significa que ele possui uma chave quepermite abrí-lo. O fato é: "quem conhece esta chave"?

Criptografia tem muitas utilidades como cifrar documentos para que somente pessoas autorizadas possamabrir. Eu mesmo tenho uma partição inteira cifrada e para montá-la eu preciso sempre fornecer a chave.

Quando se envolve criptografia ou se solicita a chave cada vez que for abrir o arquivo ou se memoriza ela.

Esta solução não se aplica para este problema pois:

a) não se pode solicitar a chave ao usuário pois ele não a conhece. Se ele a conhecesse significa quepoderia abrir o arquivo de senhas e novamente ler a senhas de todos, até do root.

b) é o Sistema Operacional quem precisa conhecer a chave, logo ele precisa memorizá-la. Isto, a princípiopode parecer aceitável, mas lembre-se que sempre estamos trabalhando com a hipótese de alguém invadiro sistema. O que o impediria de ler a senha que o SO armazena? O Windows em sua criptografia de pastasé assim. Ele fica com a chave.

Armazenamento de senhas no Linux [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7812

2 de 9 2/1/2014 10:18

Page 3: Armazenamento de Senhas No Linux [Artigo]

Para este problema esta solução definitivamente não serve. O arquivo de senhas não pode sercriptografado porque uma chave poderia abrir ele. Aos mais íntimos com criptografia observem que estoufalando de criptografia não de HASH!

Na verdade só existe uma única solução possível: simplesmente não armazenar a senha em lugar algum.Isto mesmo. O Linux e demais Sistemas Operacionais não sabem a tua senha. Sim, eles não tem ela, não aarmazenam em lugar algum.

Isto é possível através da técnica de hash.

Algoritmos de HASH

Muita confusão se faz quanto aos algoritmos de HASH. Muitos acham que ele é um algoritmo decriptografia. Não é. Pertence a ciência da criptografia, alguns são até baseados em algoritmos decriptografia, mas o que quero deixar claro é que Algoritmos de HASH não servem para cifrar.

HASH são também conhecidos como "algoritmos de mão única". Qualquer coisa que se "cifra" com eles éimpossível matematicamente de se recuperar. Além disso eles possuem outras características:

a) não possuem chave. Gerar o hash não envolve nenhum segredo que deva ser compartilhado.

b) tamanho único. Não importa o quão grande é a informação original, o hash será sempre de um mesmotamanho. Como exemplo o famoso e depreciado MD5. Ele tem 128 bits de tamanho, mesmo que seja oHASH de uma única letra (8bits) ou de um arquivo de 1GB!

c) infinitos hashes para uma mesma mensagem. Isto é meio confuso de entender e pode até parecer umafraqueza. Novamente o caso do MD5: como ele possui sempre 128 bits, o número de hashes MD5

existentes no Universo é grande, mas limitado e conhecido. É 2128. Contudo o número de mensagens éinfinito. Não tem hashes únicos para cada diferente mensagem no Universo. Logo, tem mensagens quepossuem o mesmo HASH. Se o HASH da frase "Eu sou Viva o Linux" tiver como HASH FE:45:56,existem outras infinitas mensagens que gerem o mesmo hash FE:45:56. Isto vale para qualquer algoritmode hash e não significa uma fraqueza, apenas uma conclusão matemática. Descobrir duas ou maismensagens que geram o mesmo hash é chamado de colisão, coisa que o pessoal de Banco de Dados estuda(porque se usa hash como método de pesquisa em BD).

Para tornar mais fácil entender o que é um algoritmo de HASH eu costumo apresentar em sala de aula o"HASH by Elgio". Um HASH podre, fraco, mas fácil de entender.

Meu algoritmo de HASH consiste em simplesmente somar os bytes de uma frase, com teto de 255 (255 +2= 257 = 2). Matematicamente pode-se expressar como o Modulo 256 da soma de todos os bytes. Depoisde somar todos os caracteres o byte final é considerado o hash.

Na frase "Viva o Linux" tem-se os seguintes bytes:

'V' 'i' 'v' 'a' ' ' 'o' ' ' 'L' 'i' 'n' 'u' 'x'

086 105 118 097 032 111 032 076 105 110 117 120

Soma dos bytes = 1109

1109 mod 256 = 85

Neste caso o Hash de "Viva o Linux" através do algoritmo "by Elgio" seria 85. Veja que pelo meu métodonão importa o tamanho da frase, o HASH será sempre um número entre 0 e 255. Isto serve para explicar apropriedade que eu citei de que o hash é sempre do mesmo tamanho.

Armazenamento de senhas no Linux [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7812

3 de 9 2/1/2014 10:18

Page 4: Armazenamento de Senhas No Linux [Artigo]

Mas a grande pergunta é para que serve isto (não este meu algoritmo que só serve para fins didáticos).

Se eu previamente conheço o HASH (85) e alguém me apresenta a frase "Grande Linux" dizendo que ela édo hash armazenado, ao verificar eu percebo que a frase fornecida possui o HASH 129. Como não é 85,esta frase não é deste hash.

A grande sacada do arquivo de senhas do Linux é armazenar apenas o HASH. Se minha senha fosse "Vivao Linux" o arquivo de senhas teria apenas 85. Se eu digitar corretamente a senha o SO deverá calcular osmesmos 85 o que indica que acertei a senha. Assim o sistema não precisa armazenar a senha, mas somenteo HASH.

Não se apressem em falar mal deste meu HASH by Elgio! Ele é ruim mesmo e é bom que seja para meusfins didáticos.

O problema é que com este meu algoritmo de HASH ridículo é muito fácil alguém, até com papel e lápis,chegar aos mesmos 85 sem saber a frase. De cara eu percebo que apenas a letra 'U' já resolve meuproblema pois ela é justamente 85. Apresentei este algoritmos by Elgio para explicar o que é HASH, masnão como exemplo de um que possa ser usado. Ele não resiste ao mais simples ataque: o da força bruta.

Um algoritmo de HASH sério precisa fazer exatamente isto, reduzir cadeias de bytes para uma sequênciamenor de tamanho reduzido, mas sem que alguém tenha meios de quebrar.

O MD5 é bom nisto. Como seus 128 bits, um ataque de força bruta poderia levar até 2128 possibilidades(um cara muito azarado).

Considerando que não existem caras tão azarados de acertar justamente na última tentativa, trabalhar coma metade é uma boa medida.

Qual a metade de 2128?

NÃO NÃO!!

Não é 264

A metade de 2128 é 2127!

Isto ainda dá 170141183460469231731687303715884105728 possibilidades! (Você consegue ler estenúmero? )

Vamos a uma simulação: se eu tiver 5.000.000 de computadores, cada um deles com 100.000processadores de 100Ghz que consiga a façanha de realizar uma tentativa por ciclo de clock (100Gtentativas por segundo), o tempo estimado para quebrar seria:

170141183460469231731687303715884105728 / 100.000.000.000 / 100.000 / 5.000.000

Dividi por 100 bilhões porque é quantas tentativas um processador completa por segundo (100Ghz), dividipor 100.000 porque cada computador tem cem mil processadores e dividi novamente por 5.000.000porque tenho cinco milhões de computadores iguais a este.

Ainda assim isto resulta em 3.402.823.669.209.384 segundos ou 107.902.830 anos! Bem vindo a força damatemática da força bruta. Novamente, aos já iniciados em criptografia, estou falando de força brutasendo que bem sabemos que existem atalhos em alguns métodos.

Armazenamento de senhas no Linux [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7812

4 de 9 2/1/2014 10:18

Page 5: Armazenamento de Senhas No Linux [Artigo]

Resumindo: existem algoritmos de HASH que são impossíveis de se quebrar por força bruta. MD5 ainda éum exemplo deles (as vulnerabilidades descobertas no MD5 tem ver com colisões não com força bruta).

Tais algoritmos podem ser usados para nosso propósito e de fato o são!

Armazenando senhas com segurança

A solução é óbvia: ao invés de armazenar uma senha eu armazeno o HASH dela.Jamais armazeno a senha.

As vantagens são muitas pois nem mesmo o root sabe a senha de um usuário. Ele tem poderes parasobrescrevê-la mas não para saber qual era.

Para exemplificar e antes de falar como isto realmente fora implementado no Linux, vou dar novamenteum exemplo hipotético usando MD5 que todos podem reproduzir em seus Linux, em uma shell.

Meu arquivo de senhas é:

login:HASH:Nome:HOME:BASH

Usuário Elgio está cadastrado e vai cadastrar a sua senha:

Changing password for elgio(current) UNIX password:

Elgio digita como senha "Ola345". O Sistema Operacional calcula o hash de “Ola345”. Vamos calcularassim:

$ echo "Ola345"|md5sum2d3956215ec2d09484165c0d5261303c

Está ai o hash. O sistema armazena:

elgio:2d3956215ec2d09484165c0d5261303c:Elgio Schlemer:/home/elgio:/bin/bash

Em algum momento o Elgio vai se autenticar e fornecer a sua senha. Veja que nem o Linux sabe qual é asenha. A única coisa que ele sabe é que seja lá qual for a senha, o hash dela é2d3956215ec2d09484165c0d5261303c!

Se elgio digitar como senha "Ola346" (senha ERRADA), o sistema calcula o HASH do que o usuáriodigitou:

$ echo "Ola346"|md5sum23d863d17e7b64552104747ad3c30522

Veja que não é e nem passou perto do hash armazenado. Usuário errou a senha.

Este simples método já é muito bom e pode ser usado nos sistemas de autenticações de páginas WEB commuita facilidade. Qualquer um tem implementação de MD5. 128 bits lhe parecem pouco? Use o SHA1então.

O Windows usava (desconheço o que usa o Vista) o fraco algoritmo RC4 para cifrar suas senhas e ainda

Armazenamento de senhas no Linux [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7812

5 de 9 2/1/2014 10:18

Page 6: Armazenamento de Senhas No Linux [Artigo]

com o agravante de não diferenciar letras minúsculas de maiúsculas no lampasswd (lam pode bem lembrar"lambança". Eu realmente não falo mal da Microsoft mas neste ponto eles realmente pisaram na bola.Quem administra Windows DESATIVE URGENTEMENTE senhas no formato lampasswd).

No NTpassword melhorou muito com o uso do MD4 armazenando-as em formato HEXA decimal. Trata-sede um HASH da senha em Unicode feita várias vezes (tive que implementar em PHP isto!! tsctsctsc)

Mas o Linux vai ainda além disto...

Antes de mostrar como o Linux trata suas senhas, vamos ver os possíveis ataques que este sistema podesofrer.

Ataques ao Sistema de HASH

Basicamente existem três ataques que podem ser feitos, sem falar do cara olhando por cima do teu ombroenquanto você digita a senha!

a) O primeiro ataque é o de força bruta. Neste o atacante tem a posse do hash, mas não sabe que senhagerou ele. Ele pode tentar todas as possibilidades até conseguir. Ai entra o esforço de milhares de anospara o MD5 que mencionei.

b) ataque do dicionário: para que realizar força bruta se os usuários colocam senhas fáceis baseadas empalavras conhecidas. Mesmo o algoritmo mais forte do mundo perecerá se o idiota do usuário colocarcomo senha 1234. Ou ainda, baseado em seu login (elgio08 por exemplo). Neste ataque se usa palavras dodicionário para tentar combinações que usuários comuns tentariam. É IMPRESSIONANTE como aindahoje este ataque quebra mais de 70% de senhas de usuários.

c) ataque por comparação de hashes. Neste o atacante tem um Banco de Dados com inúmeros hashespré-compilados. Ao ver um HASH ele consulta se já não é um hash conhecido. Existem na Internet sitesque fazem isto.

O ataque de força bruta se resolve adotando um bom algoritmo como o MD5 (bom neste sentido. Nãopensem que estou defendendo o MD5, só que contar as fraquezas dele vai além do objetivo deste artigo).Mesmo o jurássico DES com seus 56 bits de chave ainda é forte para resistir por meses um ataque de forçabruta realizado por UM ÚNICO PC.

O ataque do dicionário não tem solução!! Sim, vai enfiar na cabecinha dos usuários que eles devemcolocar uma senha difícil, com pelo menos SEIS caracteres, sem usar apenas números, etc, etc... Ou ele teignora ou escolhe a tal senha difícil e a escreve embaixo do teclado para não esquecer. A solução passapelo treinamento deste sersinho: o usuário!

O ataque por comparação se resolve com "salt numbers", uma lição que a Microsoft insiste em nãoaprender.

Uso de salt number

Seu uso não é recente, pelo contrário, desde que conheço UNIX já existem os salt numbers.

O fato é que a senha "Teste" sempre terá o mesmo hash, certo? No caso do MD5, como vimos, o HASHserá:

Armazenamento de senhas no Linux [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7812

6 de 9 2/1/2014 10:18

Page 7: Armazenamento de Senhas No Linux [Artigo]

$ echo "Teste"|md5sum26e71657bf4137cbc676dc982aad3c5b

E se dois usuários colocarem a mesma senha "Teste"? E se alguém já tem em seu banco de dados o hash dapalavra "Teste"? Danou-se!

Dois usuários tendo a mesma senha significa que seus hashes seriam idênticos. No mínimo um dos usuáriosmais atentos veria no arquivo de senhas que o HASH do outro é igualzinho ao seu. Isto éINADMISSÍVEL! E a Microsoft não usa salt numbers... tsctsc

Salt number consiste em misturar ao hash caracteres aleatórios. Por serem aleatórios não são escolhidospelo usuário, mas sim pelo programa que cadastra senha. Veja que se eu introduzir apenas um número de0-9 como salt já crio 10 possibilidades diferentes para a palavra "Teste". Se eu colocar 3 caracteres comohash e eles podendo ser apenas números (000 a 999) crio mil possíveis hashes.

Qual a implicação disto?

Se alguém quiser pré-compilar e armazenar o hash da palavra "Teste" terá que armazenar 1000 deles.

Mas o Linux usava para o hash DES DOIS caracteres e não precisavam ser apenas números. Podiam serletras, números e alguns símbolos. Deixemos os símbolos de lado e fiquemos com as letras e números. DeA-Z temos 26 possibilidades, de a-z mais 26 e de 0-9 temos 10. Cada posição pode ser uma dentre 62possibilidades. Como temos duas letras, tem-se um total de 62^2 hashes possíveis o que nos dá 3844possíveis hashes. Isto que deixei símbolos de lado.

O que isto quer dizer?

Quer dizer que se alguém quiser armazenar o hash da palavra "Teste" terá que computar todos os possíveis3844 hashes dela e armazenar todos. E tudo outra vez para a palavra "TEste" que já não é a mesma.

Quer saber do melhor? Hashes DES tá depreciado. Caiu! Até o MD5 já está depreciado, contudo é oatualmente usado. No MD5 o salt number pode ter vários caracteres!

Com QUATRO caracteres o número de hashes pula para algo perto de 14 milhões. Atualmente se usamOITO caracteres. É uma estupidez que inviabiliza por completo o ataque por comparação.

Como o Linux armazena

Enfim, depois desta teoria para explicar o porque das coisas, vamos a como HOJE o Linux armazenasenhas e o porque deste método.

O Linux ainda aceita hashes no formato DES (veja minhas referências no final do artigo), além do MD5 eSHA1. O formato DES é facilmente identificado. Exemplo de um hash DES:

Hash DES da palavra teste: rtyBls.8pJAuo

No caso do DES, sempre os primeiros dois cars são o salt number. Claro, se o salt number é geradoaleatoriamente ele precisa ser armazenado. O restante é o hash de teste com o salt number "rt". Noexemplo rtyBls.8pJAuo tem-se:

rt = salt numberyBls.8pJAuo = hash gerado

Armazenamento de senhas no Linux [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7812

7 de 9 2/1/2014 10:18

Page 8: Armazenamento de Senhas No Linux [Artigo]

Os hashes MD5 e posteriores começam com $. A presença de $ indica que não é DES. Um $1$ no iníciodo hash indica ser MD5 enquanto um $2$ indica ser SHA1 (dá um cat no teu /etc/shadow agora e veja).

Após o $1$ ou $2$ vem o salt number até o próximo $. Depois vem o HASH propriamente dito emformato base64.

Exemplo para a palavra teste:

$1$F1CsIATU$HUmNHU5PSCRmRA.EYHYy0.

$1$ = MD5F1CsIATU = salt number usadoHUmNHU5PSCRmRA.EYHYy0. = hash da palavra teste com o salt number.

Na hora de gerar o hash MD5 o Linux faz centenas de vezes o processo. O Hash é calculadorecursivamente várias e várias vezes, usando hora o salt number, hora a senha, ora algum outro hash.Realizar o MD5 centenas ou mesmo milhares de vezes não o torna mais forte, mas sim o torna MAISLENTO!

Sim, mais lento. Se eu desacelerar o processo em centenas de vezes significa tornar mais lento uma forçabruta também centena de vezes.

Então, quando a senha é cadastrada o sistema gera um salt number, calcula o hash da senha com o saltnumber, armazena salt + hash e ESQUECE a senha.

Para verificar, o usuário digita a senha, o Sistema Operacional lê o salt number e recalcula o HASH. Sebater ele acertou a senha. Simples e brilhante.

Conclusões e referências

A forma como o Linux (por favor, sim, sim, Unix e FreeBSD também. É uma boa herança) armazenasenhas é extremamente segura. Os ataques possíveis são por culpa do usuário que insiste em por umasenha fácil.

Como objetivo principal deste artigo espero que os programadores armazenem senhas de uma forma maissegura em seus sistemas. Um simples função de HASH md5 já melhora muito, mas para quem quiser irmais além, não custa nada implementar salt numbers. Pode ser até concatenando os salt numbers na senhado usuário. Já inviabiliza os ataques, exceto, evidentemente, os de senha fácil.

Em uma universidade que ajudei a administrar implementamos uma página para trocar senha. Ela nãoaceitava senhas fáceis, como somente números, somente letras, baseadas em login. Usuário é usuário emuitos ficavam horas tentando por uma senha ou mesmo desistiam. Usuário é sempre o ponto mais fraco.Como convencê-lo a não usar a placa do carro como senha? Se você o obriga por força do seu cargo (eusou o administrador, eu determino que a senha seja assim), você terá um eterno inimigo ou ainda terá queeles passarão a anotar a senha em algum lugar, como no celular por exemplo. Obrigar eles a trocar a senhaa cada seis meses então... xiiii...

Como referência para este artigo confesso que realmente não consultei nada para escrevê-lo. É um assuntobem conhecido meu e claro que na minha formação li vários livros e sites que explicavam. Para escrevereste artigo usei como base um email meu que enviei para os alunos de segurança. Este email não é igual aeste artigo. Ele é mais técnico e dentro de um conceito de aula específico. Mesmo assim se alguém quiser

Armazenamento de senhas no Linux [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7812

8 de 9 2/1/2014 10:18

Page 9: Armazenamento de Senhas No Linux [Artigo]

ver o email eu o coloquei no meu site:

http://gravatai.ulbra.tche.br/~elgio/senhas.html

(podia simplesmente ter adaptado o email ao VOL, mas preferi escrever outro)

Um site para quebrar hashes MD5 ou SHA1 pode ser encontrado em http://passcracking.com/

Tente com estes HASHES:

698DC19D489C4E4DB73E28A713EAB07B = teste2FE04E524BA40505A82E03A2819429CC = ola

Muita gente se surpreende com este site e acha que o mundo acabou, que não existe senha segura...Bobagem...

Por fim, eu me empolguei mais do que gostaria neste artigo. Alguns itens, caso seja do interesse, podemficar para um segundo artigo. Não descrevi como realmente e matematicamente a senha é gerada (está noemail) e nem porque o MD5 já é depreciado.

Uma boa leitura é o artigo Introdução a Criptografia aqui no VOL.

http://www.vivaolinux.com.br/artigo/Armazenamento-de-senhas-no-Linux

Voltar para o site

Armazenamento de senhas no Linux [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7812

9 de 9 2/1/2014 10:18