Armazenamento de senhas no Linux
Você sabe como são armazenadas as senhas no Linux? O que é e para que serve o salt number? O que é MD5? Este artigo não pretende ir muito a fundo no mundo da criptografia, mas sim explicar os conceitos necessários para entender o arquivo de senhas, os reais ataques. Quem programa para a WEB poderá achar este artigo além de curioso, muito útil!
Parte 3: Senha em um arquivo criptografado
Rapidamente alguém poderia pensar: bom, posso criptografar o arquivo de senhas, assim mesmo com permissão de leitura a leitura de nada adiantaria. Poderia usar os excelentes algoritmos como o AES128 para realizar esta cifragem.
O problema deste método é que algoritmos de criptografia requerem chave. Só a Microsoft conseguiu a façanha, até hoje sem nenhum sentido para mim, de criptografar pastas no Windows 2000 sem que o usuário precisasse colocar uma chave.
Se o arquivo de senhas ou mesmo parte dele estiver cifrado, significa que ele possui uma chave que permite abrí-lo. O fato é: "quem conhece esta chave"?
Criptografia tem muitas utilidades como cifrar documentos para que somente pessoas autorizadas possam abrir. 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 que poderia 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ípio pode parecer aceitável, mas lembre-se que sempre estamos trabalhando com a hipótese de alguém invadir o 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.
Para este problema esta solução definitivamente não serve. O arquivo de senhas não pode ser criptografado porque uma chave poderia abrir ele. Aos mais íntimos com criptografia observem que estou falando 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 a armazenam em lugar algum.
Isto é possível através da técnica de hash.
O problema deste método é que algoritmos de criptografia requerem chave. Só a Microsoft conseguiu a façanha, até hoje sem nenhum sentido para mim, de criptografar pastas no Windows 2000 sem que o usuário precisasse colocar uma chave.
Se o arquivo de senhas ou mesmo parte dele estiver cifrado, significa que ele possui uma chave que permite abrí-lo. O fato é: "quem conhece esta chave"?
Criptografia tem muitas utilidades como cifrar documentos para que somente pessoas autorizadas possam abrir. 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 que poderia 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ípio pode parecer aceitável, mas lembre-se que sempre estamos trabalhando com a hipótese de alguém invadir o 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.
Para este problema esta solução definitivamente não serve. O arquivo de senhas não pode ser criptografado porque uma chave poderia abrir ele. Aos mais íntimos com criptografia observem que estou falando 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 a armazenam em lugar algum.
Isto é possível através da técnica de hash.