Если злоумышленник имеет несколько отдельных элементов (например: адреса электронной почты) и знает зашифрованное значение каждого элемента, может ли злоумышленник легче определить секретную кодовую фразу, используемую для шифрования этих элементов? Смысл, могут ли они определить кодовую фразу, не прибегая к грубой силе?
Этот вопрос может показаться странным, поэтому позвольте мне привести пример использования:
- Пользователь подписывается на сайт с адресом электронной почты
- Сервер отправляет этот адрес электронной почты URL-адрес подтверждения (например: https://my.app.com/confirmEmailAddress/bill%40yahoo.com)
- Атакующий может угадать URL-адрес подтверждения и, следовательно, может зарегистрироваться с другим адресом электронной почты и "подтвердить" его, даже не войдя в учетную запись электронной почты этого человека и не увидите URL-адрес подтверждения. Это проблема.
- Вместо того, чтобы отправлять URL-адрес обычного текста в URL-адрес, мы отправим его зашифрованным секретной кодовой фразой.
- (Я знаю, что злоумышленник все равно может перехватить сообщение электронной почты, отправленное сервером, поскольку электронная почта - это простой текст, но нести меня здесь.)
- Если злоумышленник регистрируется с несколькими бесплатными учетными записями электронной почты и видит несколько URL-адресов, каждый с соответствующим зашифрованным адресом электронной почты, может ли злоумышленник легче определить кодовую фразу, используемую для шифрования?
Альтернативное решение
Вместо этого я мог бы отправить случайный номер или односторонний хэш своего адреса электронной почты (плюс случайная соль). Это исключает хранение секретной фразы, но это означает, что мне нужно сохранить это случайное число/хеш в базе данных. Первоначальный подход, описанный выше, не требует хранения в базе данных.
Я склоняюсь к односторонней-хэш-памяти в-дБ, но мне все же хотелось бы знать ответ: имеет ли несколько нешифрованных адресов электронной почты и их зашифрованные копии упрощает определить используемую ключевую фразу?