У меня есть много маленьких секретов, которые я хочу хранить в зашифрованном виде в базе данных. Клиент базы данных будет иметь ключи, а сервер базы данных не будет заниматься шифрованием и дешифрованием. Все мои секреты имеют размер 16 байт или меньше, что означает всего один блок при использовании AES. Я использую постоянный IV (и ключ), чтобы сделать шифрование детерминированным, и моя причина для выполнения детерминированного шифрования состоит в том, чтобы иметь возможность легко запрашивать базу данных с использованием зашифрованного текста и убедиться, что один и тот же секрет не сохраняется дважды (путем создания столбца UNIQUE ). Насколько я вижу, с этим не должно возникнуть проблем, если ключ секретный. Но я хочу быть уверенным: прав я или нет? В случае, если я ошибаюсь, какие атаки могут быть сделаны?
Кстати: Хэши здесь совершенно бесполезны из-за относительно небольшого количества возможных открытых текстов. С помощью хэша было бы тривиально получить исходный открытый текст.