В моем проекте существует реализация простого единого входа между нашими клиентами и веб-сервисом на веб-портале нашей компании.Благодаря этой реализации между нами и заказчиком существует общий симметричный пароль.Когда пользователь переходит с веб-сайта клиента в нашу компанию, он создает токен для проверки целостности следующим образом:
token = hash(field1 || symmetric-secret || field 2 || field 3 || timestamp)
Рассчитанный токен, а также эти 3 поля и метка времени отправляются в параметрах URL-запроса.,Получив этот HTTP-запрос, наш бэкэнд вычисляет другой токен с тем же секретом, объединяя эти параметры запроса в том же порядке и проверяет целостность, проверяя эти два токена.В настоящее время SHA1 используется как хэш-метод.Я указал на атаку с расширением длины, и теперь вместо нее будет использоваться SHA256.
IMO, реализация неверна во многих аспектах, т. Е. Single Log Out не поддерживается с точки зрения управления сеансом.Я очень обеспокоен перспективой безопасности с этим подходом, который я не смог доказать.В одном мысленном сценарии я мог бы легко манипулировать javascript во внешнем интерфейсе сайта нашего клиента, чтобы генерировать тысячи подобных токенов SSO.Со всеми этими токенами единственное изменение в входных данных для хэш-метода - это отметка времени.Мне просто интересно, можно ли взломать этот скрытый симметричный секрет, анализируя хешированные токены в дополнение к их соответствующим входным данным.Любые мысли о слабости с точки зрения безопасности, связанные с этой реализацией, приветствуются.