SecureTechTalks
303 subscribers
805 photos
1 video
1 file
803 links
Добро пожаловать на канал "SecureTechTalks"! Мы предлагаем вам увлекательное и информативное погружение в мир кибербезопасности. Здесь вы найдете актуальные новости, советы, методы и инсайты по инфобезу.
Download Telegram
🔐 PostgreSQL + pgcrypto: шифрование данных и его подводные камни

Когда речь заходит о защите конфиденциальных данных, большинство вспоминают про файрволы и VPN. Но мало кто думает о том, что утечка базы данных = утечка всего. PostgreSQL предоставляет мощное, но часто недооценённое средство — расширение pgcrypto, позволяющее шифровать и хешировать данные прямо в SQL-запросах.

Однако использовать его нужно с умом. Погружаемся в детали.

🌟 Зачем вообще нужно шифровать внутри БД?

🛡 Data-at-rest защита — украли диск или дамп? Без ключа злоумышленник увидит только мусор.
📜 Соответствие стандартам — PCI DSS, HIPAA, GDPR требуют защиты на уровне отдельных полей.
⛔️ Снижение риска при SQL-инъекциях — даже если атакующий получит доступ, он не расшифрует данные без ключа.
🎯 Избирательное шифрование — не нужно защищать всю таблицу, можно только нужные поля.

🔧 pgcrypto: как начать и не облажаться

Установка и изоляция:
CREATE EXTENSION pgcrypto SCHEMA crypto; REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA crypto FROM PUBLIC; GRANT EXECUTE ON FUNCTION crypto.encrypt(bytea, bytea, text) TO secure_user;


Хеширование и HMAC:
SELECT digest('text', 'sha256'); SELECT hmac('data', 'secretkey', 'sha512');


Пароли с солью:
SELECT crypt('пароль', gen_salt('bf')); 


💣 Плохие практики, которых стоит избегать

🚫 Хранить ключи в той же базе данных — если база скомпрометирована, ключ в таблице только усугубит ситуацию.
🚫 Захардкодить ключ в приложении — при утечке кода атака мгновенна.
🚫 Использовать режим шифрования ECB — он сохраняет паттерны и легко поддаётся анализу.
🚫 Раздавать EXECUTE-права на функции шифрования всем подряд — это прямой путь к злоупотреблениям.

🔐 Альтернатива: что такое pgTDE?

pgTDE (Transparent Data Encryption) — это расширение, которое обеспечивает шифрование данных на уровне ядра PostgreSQL. В отличие от pgcrypto, оно работает прозрачно: вам не нужно вручную вызывать encrypt() или decrypt() — все данные в таблице шифруются автоматически. Это полезно, если вы хотите защитить всю таблицу или базу целиком.

Также pgTDE:
Поддерживает работу с внешними системами управления ключами (например, HashiCorp Vault).
Совместим с индексами, в отличие от pgcrypto, где шифрование ломает возможность поиска.
Лучше подходит для защищённой работы в production, особенно при больших объёмах данных.

Проект пока не включён в официальный PostgreSQL, но развивается на GitHub: github.com/bcgit/pg_tde

Выводы

🔒 pgcrypto отлично подходит для точечного шифрования (например, номеров карт, паспортов, токенов).
⚙️ Но требует внимательной настройки: от схемы доступа до правильных алгоритмов и ключевого хранилища.

🧰 Если вы хотите защищать всю БД или крупные таблицы без боли — обратите внимание на pgTDE.

👀 Главное: инструмент — это только половина дела. Всё зависит от того, как именно вы его внедряете.

Stay secure and read SecureTechTalks 📚

#postgresql #pgcrypto #pgTDE #databaseencryption #infosec #dataatrest #compliance #devsecops #SecureTechTalks #cybersecurity
Please open Telegram to view this post
VIEW IN TELEGRAM