PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

postgresql des criptografar

Crypt e DES são cifras antigas e não devem ser usadas


Plain old DES é um algoritmo obsoleto. Você não pode realmente compará-lo com o AES128; é como reclamar que um hash SHA256 é maior que um hash MD5 - sim, é, mas apenas um deles pode retardar o invasor por um tempo. O DES era amplamente considerado fraco mesmo em 1999 e nunca deve ser usado em novas aplicações. Não use isso.

Não acho uma boa ideia procurar um método de criptografia que "forneça o menor tamanho de dados possível" - porque é basicamente uma perda de tempo criptografar dados usando DES. Por que não usar ROT13 (cifra caesar)? O resultado "criptografado" é do mesmo tamanho que a entrada, pena que a criptografia pode ser quebrada por uma criança de 3 anos.

criptografia é de safra semelhante. O antigo algoritmo de hash de criptografia UNIX é ... idoso ... e totalmente inadequado para qualquer nova aplicação. Hashes devem ser SHA256 no mínimo, realmente.

Crypt é um hash unidirecional


Quanto a não conseguir descobrir como descriptografar dados criptografados:crypt não é um algoritmo de criptografia, é uma função hash criptográfica ou "hash de sentido único". Os hashes unidirecionais são adequados para verificar se os dados não são modificados, comparando com um salted hash para autenticação de senha, para uso em autenticação de resposta de desafio , etc. Você não pode descriptografar dados criptografados.

Lidar com o tamanho


Use uma função criptográfica decente e viva com o aumento de tamanho. bf ou aes128 são os mais fracos que você pode usar razoavelmente.

Pessoalmente, prefiro fazer minha criptografia/descriptografia no aplicativo, não no banco de dados. Se for feito no banco de dados, as chaves podem ser reveladas por pg_stat_statements , nos registros por log_statement ou erros, etc. Melhor que a chave nunca esteja no mesmo lugar que os dados armazenados.

A maioria das linguagens de programação tem boas rotinas criptográficas que você pode usar.

É difícil oferecer mais conselhos, pois você realmente não explicou o que está criptografando, por que, quais são seus requisitos, quais são as ameaças etc.

Senhas?


Se você está armazenando senhas, provavelmente está fazendo isso errado.

  • Se possível, deixe outra pessoa fazer a autenticação:

    • OAuth ou OpenID para Internet

    • SSPI, Kerberos/GSSAPI, Active Directory, ligação LDAP, SASL, HTTP DIGEST, etc para intranet

  • Se você realmente precisar fazer a autenticação por conta própria, adicione um sal às senhas e faça um hash do resultado. Guarde o haxixe e o sal. Quando você precisar comparar senhas, salgue o novo texto simples do usuário com o mesmo sal que você usou para o hash armazenado, faça o hash da nova senha+sal e veja se o hash é o mesmo que você armazenou. Se for, eles deram a senha correta.

  • Você quase certamente não precisa recuperar senhas de texto simples. Em vez disso, implemente uma redefinição de senha segura. Se você realmente precisa, use um algoritmo decentemente seguro como o aes para criptografá-los e pense cuidadosamente sobre armazenamento e gerenciamento de chaves. Veja outros posts no SO sobre armazenamento/gerenciamento de chaves com pgcrypto.

Veja também: