La seguretat de la informació és un component essencial de l'administració de bases de dades.
PostgreSQL proporciona diversos mecanismes per garantir la confidencialitat,
la integritat i la protecció del contingut emmagatzemat.
En aquests apunts es detallen els conceptes, els components i els procediments principals
relacionats amb l'encriptació en PostgreSQL.
pgcrypto és una extensió que proporciona funcions criptogràfiques per encriptar i desencriptar
informació a nivell de columna. Cal habilitar-la una vegada en cada base de dades:
Xifratge simètric (pgp_sym_encrypt i pgp_sym_decrypt)¶
Les funcions pgp_sym_encrypt i pgp_sym_decrypt xifren i desxifren text mitjançant
una contrasenya (clau simètrica), seguint l'estàndard OpenPGP. És a dir, la mateixa clau
serveix per xifrar i per desxifrar:
La funció hmac genera un codi d'autenticació de missatge (MAC). És semblant a digest,
però utilitza una clau, de manera que només qui coneix la clau pot generar o comprovar el codi:
Per emmagatzemar contrasenyes de manera segura, pgcrypto ofereix les funcions crypt i gen_salt.
Aquestes funcions afigen una sal (salt), un valor aleatori que es combina amb la contrasenya
abans de calcular el hash. D'aquesta manera, dues contrasenyes iguals generen hashes diferents
i s'eviten els atacs amb diccionaris precalculats:
-- EmmagatzemarSELECTcrypt('passwd',gen_salt('bf'))AScontrasenya_emmagatzemada;-- Validar (compara el hash calculat amb l'emmagatzemat)SELECT(crypt('passwd',contrasenya_emmagatzemada)=contrasenya_emmagatzemada)AScoincideix;
S'observa que, per validar la contrasenya, es passa el hash guardat com a sal:
crypt n'extrau la sal i, si la contrasenya és correcta, torna a obtindre el mateix hash.
Sense xifratge, qualsevol persona que puga capturar el trànsit de la xarxa pot llegir les consultes
i els resultats, incloses les contrasenyes. Per activar les connexions xifrades, cal seguir
aquests passos:
Disposa d'un certificat (server.crt) i una clau privada (server.key) al directori de dades.