Я пишу приложение, которое интенсивно использует криптологию. Как и большинство сетевых приложений, моя разделяет данные на различные типы сообщений (мгновенные сообщения, файловый блок, видеокадр и т. Д.), И каждое из них должно быть проверено на подлинность как на предмет защиты от подделки, так и на правильное происхождение. Пока я могу использовать ECDH для согласования общего секрета, который я уже использую для AES. Конечно, этот же общий секрет может быть использован позже.
Мой вопрос: В этом случае есть ли какое-либо дополнительное преимущество использования ECDSA для подписи каждого сообщения, а не просто использования общего секрета, установленного ECDH с HMAC?
Ниже, когда я говорю M, я имею в виду либо зашифрованное сообщение, либо открытый текст; это не должно иметь значения. Пожалуйста, исправьте все ошибки ниже.
Я понимаю, что в ECDSA (или DSA) обычно хэширует сообщение (M
) с алгоритмом безопасного хеширования (в настоящее время я использую один из SHA-2) для создания H(M)
, затем шифрует H(M)
используя закрытый ключ подписавшего. Это производит R
и S
целые числа (подпись). Затем M, R и S отправляются получателю, который уже владеет открытым ключом отправителя. H'(M)
рассчитывается, а подпись проверяется с использованием R
и S
. BouncyCastle предоставляет ECDSASigner
, который реализует это.
В HMAC требуется общий секрет, который у меня есть. Тогда:
HMAC(K, M) := H( f2(K) || H(f1(K) || M) )
(Спасибо за исправление, Paŭlo Ebermann. Подробности смотрите в его ответе.)
Итак, учитывая, что DH / ECDH безопасно согласовывает общий секрет, есть ли причина, по которой я не должен использовать HMAC?
Связанный: почему NSA определяет стандартный алгоритм для DSA, а не MAC? Только потому, что это может быть SHA-2 + AES?
Здесь важна скорость , потому что я хочу, чтобы этот протокол, который я создаю, теперь поддерживал не только текстовые сообщения, но и большие файлы и видеокадры в ближайшем будущем. Поэтому я предпочитаю использовать HMAC, но хочу убедиться, что смогу достичь поставленных целей.
Спасибо за вашу помощь!