Я запускаю службу, где пользователи могут войти в систему, но мне никогда не понадобится отправлять им электронные письма.Я стараюсь сохранить пользовательские данные как можно более анонимными.Я не заинтересован в отслеживании пользователей, продаже данных и т. Д. Я знаю, что для этого вопроса будут более простые решения, такие как «не использовать адреса электронной почты в первую очередь», но они делают хороший идентификатор входа в систему, потому что они являются GUID.,Мой сервис проходит через процесс, когда пользователь проверяет адрес, это единственное письмо, которое я когда-либо отправляю.
Так что у меня возникла идея хранить адреса анонимно.Моей первой мыслью было просто сохранить хэш SHA512 каждого адреса, но в случае взлома, который, как я полагаю, предотвратит моя безопасность, технически кто-то может использовать радужные таблицы для восстановления хотя бы некоторых адресов.
Чтобы использовать соленый хеш, мне нужен какой-то способ сузить список потенциальных результатов, чтобы я не вычислял хеш для каждого пользователя для каждого входа в систему.Это не будет масштабироваться.Чтобы достичь этого, моя идея состояла в том, чтобы сохранить первые 5 символов сообщения SHA512.Конечно, это не было бы уникальной ценностью, но это дает мне меньший пул потенциальных совпадений.Технически все это прекрасно работает.
Хотя я обеспокоен тем, что это все еще уязвимо для радужных столов.Этих 5 символов достаточно для поиска возможных входных данных, и злоумышленник уже знает, что действительными будут только входные данные, похожие на адреса электронной почты.У них все еще было бы достаточно, чтобы определить адрес электронной почты, учитывая первую часть несоленного хеша и весь соленый хеш.
Хотя я слишком обдумываю это?Для записи, я использую pgsql и php в этом случае, но это на самом деле подробности реализации.
Обновление : я все еще не уверен, собираюсь ли я идти впередс этим, но для любого любопытного, проблема с радужными таблицами здесь может быть решена довольно легко.Вместо того, чтобы хэшировать всю электронную почту и брать первые несколько символов хеша, используйте первые несколько символов электронной почты в качестве ввода хеша и сохраните весь хэш.Он достигает того же эффекта, но в лучшем случае радужный стол покажет только первые несколько символов.