Безопасно сохраняйте электронные письма в черном списке

У меня есть веб-сайт, на котором я хочу, чтобы люди, у которых нет аккаунта, могли отказаться от получения электронных писем. Этого можно достичь, просто сохранив их адреса электронной почты в таблице "черного списка" и просмотрев их перед отправкой некоторой почты.

Чтобы обеспечить защиту данных и по соображениям безопасности, я хочу хранить электронные письма в зашифрованном виде. Я думал о простом md5(password), но это слишком легко взломать. Вторая мысль состоит в том, чтобы использовать bcrypt / scrypt, чтобы иметь функцию медленного хеширования, но у них есть немного соли для каждой записи, поэтому мне нужно было бы хэшировать почту для каждой записи для сравнения. Это было бы довольно медленно с временем выполнения O(n) где n - количество записей в черном списке.

Есть ли другой способ надежно хэшировать почту для быстрого сравнения с черным списком? Так должно быть O(1) время выполнения, независимо от количества записей.

1 ответ

Решение

Вы можете использовать любую функцию получения ключа, например PBKDF2 или даже BCrypt/SCrypt.

Поскольку хэши должны быть доступны для поиска, нельзя использовать уникальные случайные соли. Вместо этого мы можем передать статическую соль, которая действует как ключ на стороне сервера.

С KDF мы можем извлечь выгоду из стоимостного фактора, который значительно замедляет брутфорсинг. Статическая соль / ключ предотвращает грубое форсирование, если у злоумышленника есть доступ к базе данных, но нет привилегий на сервере (ключ остается секретным), это типичный сценарий внедрения SQL-кода. Просто убедитесь, что соль не является частью хеш-строки, большинство реализаций BCrypt сделают это, потому что они предназначены для хеширования пароля.

Проблема этого подхода заключается в том, что он не адаптируется к более быстрому оборудованию в будущем. Но даже если KDF просто нужны несколько миллисекунд, это намного лучше, чем использование простого хэша. Может быть, вы должны спросить об этом по информационной безопасности, они могут знать лучшую альтернативу.

Другие вопросы по тегам