Это вопрос реального мира (и, поскольку я не эксперт в криптографии, у меня есть только некоторые базовые знания с точки зрения его использования, а не глубокое понимание того, как он работает под капотом.): Система для сбора данных от многих встроенные конечные устройства используют AES128 GCM/GMAC для защиты сообщений с точки зрения конфиденциальности и подлинности: каждое сообщение $ млн $ зашифрован $С = Е(К, М)$ и защищен тегом $Т=Т(К, М)$ с использованием симметричных ключей: $(С, Т)$ отправляется получателю.
В расширенной версии системы дополнительно к этой защите добавлена цифровая подпись $С=С(М)$ на основе ECDSA (с использованием ключевого материала ECC NIST): первый знак $ млн $, затем зашифровать:
Результатом подписания является кортеж $(С, М)$
тогда ${E(K,(S,M)), T(K, (S,M))}$ отправляется получателю, у которого есть открытый ключ ECC.
Q1: Какую дополнительную выгоду мы получаем от использования этой дополнительной подписи?
Если GCM/GMAC используется правильно (например, с использованием векторов инициализации только один раз) и симметричный ключ не скомпрометирован, тогда GCM/GMAC является хорошей защитой. Каковы сценарии, в которых дополнительное использование подписи помогает улучшить безопасность?
Q2: Помимо подписи сообщений, ECDH используется для согласования новых симметричных ключей время от времени. В «старой» версии это делалось с помощью (стандартизированного) алгоритма переноса ключей, который зависит от симметричного KEK. Я снова спрашиваю: в чем реальная польза от использования ECDH вместо Key Wrap?
Я, конечно, знаю принципы криптографии с открытым ключом, но не могу реально оценить дополнительную ценность, которую мы получаем по сравнению с использованием только симметричного варианта, который оправдывает усилия по реализации расширенной версии.