На днях я участвовал в обсуждении реализации сквозной аутентификации. Связь между каждым бэкэндом происходит через Протокол сообщений SOAP (XML).
Задача:
Аутентифицируйте вызовы, исходящие от Backend A <> Backend B. Можно считать, что все соединения сначала проходят через туннелирование TLS.
Предлагаемое ими решение:
Добавить Подпись в заголовке XML, который вычисляется с использованием только определенных частей тела запроса и временной метки, зашифрованной с помощью AES-ECB
Секреты передаются по внешнему каналу и поддерживаются на каждом конце.
Мои проблемы/собственное решение:
С моей точки зрения, эта проблема требует MAC-тип аутентификации, которая гарантировала бы целостность и подлинность сообщения.
Я бы порекомендовал им вместо этого использовать HMAC-SHA256 с временной отметкой nonce для предотвращения повторных атак и передать ее в пользовательском XML-заголовок который будет проверен каждым бэкэндом.
Я не понимаю необходимости использования здесь шифрования, тем более, что они не шифруют тело запроса (конфиденциальность). Тем не менее, у меня нет достаточно веских аргументов, чтобы Почему их решение небезопасный / неподходящий
NB: Я считаю, что режим шифрования ECB также может иметь проблемы с оракулом, и обычно CBC предпочтительнее, чем он?