Proteger as senhas do usuário em aplicativos de desktop
Pergunta
Eu estou fazendo um cliente twitter, e estou avaliando as várias maneiras de proteger informações de login do usuário.
- Hashing, aparentemente, não fazê-lo
- Ofuscando de forma reversível é como tentar esconder atrás meu dedo
- Plain sons de texto e Propably é promíscuo
- exigir que o usuário digite sua senha cada vez que tornaria a aplicação cansativo
Todas as idéias?
Solução
Você poderia fazer algumas chamadas de sistema operacional para criptografar a senha para você.
No Windows:
- Você pode criptografar um arquivo (em um sistema de arquivos NTFS)
- Use o DPAPI de C
- Use o DPAPI em .Net usando a ProtectedData classe
Outras dicas
CryptProtectData é um Windows funcionar para armazenar esse tipo de dados sensíveis.
http://msdn.microsoft.com/en-us/library /aa380261.aspx
Para um exemplo ver como Chrome usa-lo:
http: //blog.paranoidferret .com / index.php / 2008/09/10 / how-google-cromo-lojas-passwords /
Para Windows: criptografar a senha usando DPAPI (armazenamento do usuário) e armazená-lo em seu arquivo de configurações ou em outro lugar. Isto irá funcionar em regime de utilizador por, por exemplo, diferentes usuários na mesma máquina terá diferentes chaves de criptografia não relacionado.
O que plataforma?
Em * nix, guarde a senha em texto simples em um arquivo chmoded 400 em um subdiretório do diretório home. Ver, por exemplo ~ / .subversion. Os administradores podem fazer qualquer coisa que eles gostam de usuários de qualquer maneira, incluindo a substituição de seu programa com a sua própria versão hackeada que captura senhas, então não há nenhum dano no fato de que eles podem ver o arquivo. Tenha em atenção que a senha também é acessível para alguém que leva a esse disco rígido -. Se este é um problema, então quer obter o usuário a digitar novamente a senha cada vez ou verificar se esta versão do * nix tem criptografia de arquivos
No Windows Pro, guarde a senha em um arquivo criptografado.
No Windows Amador, fazer o mesmo que * nix. [Edit: CryptProtectData parece ser bom, como Aleris sugere. Se ele está disponível em todos os Windowses, então ele resolve o problema apenas das versões mais caras apoiando arquivos criptografados].
Em Symbian, armazenar a senha em sua gaiola de dados. Programas com permissão AllFiles são raros e supostamente confiável de qualquer maneira, um pouco como os administradores * nix.
Você não pode ter seu bolo e comê-lo. Quer armazenar a senha (que você já descartada), ou não fazer e exigem que ele seja digitado em cada tempo (que você já descartada.)
Tenha um bom esquema de criptografia simétrica, deve fazê-lo o suficiente difícil de decifrar as credenciais que não vale a pena tentar. Caso contrário, se o serviço requer apenas o hash a ser enviados através da rede, você pode armazenar o hast criptografada. Desta forma, mesmo a descriptografia não terá o atacante mais perto da solução. No entanto outros usuários são verdadeiras. Se você armazenar os dados que ele pode ser encontrado. A chave é encontrar o equilíbrio entre segurança e usabilidade.