Предположим, я продаю Алисе и Бобу сервис типа VPN, позволяющий им через мой сервер обмениваться пакетами данных (пакеты небольшие, ~1.5K, но трафик может быть большой).
Внутри себя эти пакеты либо зашифрованные, либо не нуждаются в шифровании. В общем, это личное дело Алисы и Боба. Мое же дело, чтобы халявщица Ева не могла использовать мой сервер, не договорившись со мной.
Очевидное решение — я договариваюсь с Алисой и Бобом (с каждым по отдельности) о секретный ключах, и дальше пакеты от них ко мне приходят зашифрованными и подписанными каким-нибудь AES-GCM'ом.
Но шифрование-то на самом деле не нужно, и мне как-то обидно тратить мегагерцы своего сервера на расшифровывание, если мне, на самом деле, надо только проверить аутентичность отправителя.
В связи с этим ищется Message Authentication Code (MAC), обладающий следующими свойствами:
1. Проверка пакета должна быть существенно дешевле, чем AES-GCM. При этом предполагается, что сервер работает на современном интеловском железе с аппаратным ускорением AES'а
2. Нет ничего страшного, если Ева сможет на халяву пробросить несколько пакетов, или даже несколько десятков пакетов. Лишь бы она не смогла организовать поток. Т.е., в отличии от обычного MAC'а, требования к секурности довольно слабые
3. Как следствие из 2-го пункта, изучение подписанных пакетов не должно помогать восстановить секретный ключ
Никто не подкинет идею, куда смотреть?
В частности, можно ли, например, использовать GCM без AES'а, или это небезопасно?