Разрабатываемое нами веб-приложение содержит персональную информацию, такую как адреса электронной почты клиентов, в базе данных (PostgreSQL). Для повышения безопасности, когда серверы приложений получают адреса электронной почты от клиентов, они немедленно шифруются (AES256) на серверах приложений вместо использования функций шифрования базы данных из-за предотвращения отправки открытого текста в сетях между серверами приложений и базами данных. Также мы хотели бы использовать случайный IV. Но в приложении должна быть функция поиска адресов электронной почты (только точное совпадение), поэтому мы не можем использовать случайный IV для шифрования. В этом случае, я думаю, есть два способа шифрования и возможности поиска.
- Сохраняет зашифрованные данные (случайные значения IV) с хешированными данными без соли. При поиске хеширует искомое слово, а затем проверяет хешированные данные в базах данных, используя его.
- Сохраняет зашифрованные данные (не случайные IV). При поиске зашифровывает искомое слово, а затем проверяет зашифрованные данные в базах данных, используя его.
Конечно, я знаю, что мы не сможем добиться максимальной безопасности при внедрении поисковой системы, но что лучше?