Рассмотреть возможность $Ч$ определяется как: SHA-512, с его выводом XORed с первыми 512 битами входного сообщения (дополненными нулями для короткого сообщения). С таким $Ч$, предлагаемый MAC небезопасен. Однако, насколько нам известно, это $Ч$ не хуже, чем SHA-512 со стандартной точки зрения.
Аргумент: заметьте, что если $H(m_1\mathbin\|m_2)=\operatorname{SHA-512}(m_1\mathbin\|m_2)\oplus m_1$ и $\operatorname{MAC}_k(m)=H(k\mathbin\|m)\oplus k$, то для 512-битного ключа¹ $к$ он держит $\operatorname{MAC}_k(m)=\operatorname{SHA-512}(k\mathbin\|m)$. Поэтому это $\имя_оператора{MAC}$ подвержен атаке с расширением длины².
Следовательно, невозможно доказать, что $H(k\mathbin\|m)\oplus k$ представляет собой безопасный MAC без какого-либо понимания внутренней структуры $Ч$.
Я довольно уверен, что предлагаемая конструкция MAC практически безопасна для хэшей семейства SHA-2 и даже для SHA-1. Мы могли бы захотеть доказывать безопасность в предположении, что хэш имеет Меркле-Дамгард структура, функция сжатия, построенная из блочного шифра $Е$ за Дэвис-Мейер конструкция с соответствующим размером блока и ключа для $Е$. Я думаю, что это было бы возможно в рамках идеальной модели шифра, но не стандартной модели безопасности $Е$. Проблема в том, что операция XOR ключа с выходом блочного шифра может ослабить его. Это тот случай, например.для AES-128 в режиме расшифровки, где XOR удаляет безопасность раунда.
¹ Для ключа произвольного размера $\operatorname{MAC}_k(m)=\operatorname{SHA-512}(k\mathbin\|m)\oplus F_{|k|}(m)$ куда $F_{|к|}(м)$ является $ 0 ^ {\ мин (| к |, 512)} $, а затем первый $\мин(\макс(512-|к|,0),|м|)$ кусочки $м$, с последующим $0^{\max(512-|k|-|m|,0)}$. Это все еще позволяет атаковать.
² Вопреки тому, что я написал изначально, мы не можем восстановить $к$ из запросов.