Я не очень силен в криптографии, поэтому есть мой вопрос.
Наше приложение - форум - отправляет нашим пользователям уведомления о новых сообщениях, если они выбрали его. В электронном письме должна быть ссылка на отписку от этого сообщения. Теперь я хочу, чтобы эта ссылка работала, даже если пользователь в настоящее время не проходит проверку подлинности в нашем сервисе (без файлов cookie).
Для этого я решил просто подписать запрос с SHA1, например:
http://example.com/unsubscribe?u=234&s=52342&h=0b071440146545eaf3f00ef9cdeb1d47d006dfff
Здесь u
- это идентификатор пользователя, который хочет отписаться, s
- некоторая случайная соль, h
- безопасный хеш, рассчитанный путем объединения имени действия (отписаться), параметров и их значений. (u = 234s = 52342) и некоторую секретную строку, указанную в конфигурации нашего сервиса и вычисляющую хеш SHA1 для полученной строки:
sha1('unsubscribeu=234s=52342supersecret')
Мой вопрос об этом параметре s
, который генерируется случайным образом каждый раз. Это добавляет к безопасности здесь или нет? Это действительно нужно?
Если я вместо этого использую шифрование, имеет ли смысл добавлять этот тип соли к зашифрованным данным?
Это скорее теоретический вопрос, поскольку очень маловероятно, что кто-то захочет догадаться, что «суперсекрет» в нашем сервисе просто разыграть-отписать группу пользователей, но все же интересно.