Шифрование данных в PostgreSQL
Шифрование данных в PostgreSQL
Чтобы шифровать данные в PostgreSQL, можно добавить расширение pgcrypto. Это расширение предоставляет набор криптографических функций для защиты данных с помощью:
- стандартного хеширования данных — digest(), hmac();
- хеширования паролей — crypt(), gen_salt();
- симметричных и открытых ключей (шифруют данные по стандарту OpenPGP) — pgp_sym_encrypt(), pgp_sym_decrypt(), pgp_pub_encrypt(), pgp_pub_decrypt(), armor(), dearmor();
- шифрования низкого уровня — encrypt(), decrypt();
- получения случайных данных — gen_random_bytes(), gen_random_uuid().
При использовании расширения pgcrypto учтите ограничения безопасности.
Посмотрите примеры шифрования данных с помощью расширения pgcrypto.
Подробнее о расширении pgcrypto и его функциях в статье pgcrypto — cryptographic functions документации PostgreSQL.
Ограничения безопасности расширения pgcrypto
- данные и пароли передаются между функциями pgcrypto и клиентскими приложениями открытым текстом, поэтому рекомендуем подключаться к кластеру баз данных с SSL;
- защита данных с помощью расширения pgcrypto уязвима для атак по сторонним каналам. Например, длительность расшифровки текстов одинакового размера может различаться.