В чем разница между хэшем и MAC (код аутентификации сообщения)?
По своим определениям они, похоже, выполняют одну и ту же функцию.
Может кто-нибудь объяснить, в чем разница?
В чем разница между хэшем и MAC (код аутентификации сообщения)?
По своим определениям они, похоже, выполняют одну и ту же функцию.
Может кто-нибудь объяснить, в чем разница?
Основное отличие концептуально: в то время как хеши используются для обеспечения целостности данных, MAC гарантирует целостность и аутентификацию.
Это означает, что хэш-код слепо сгенерирован из сообщения без какого-либо внешнего входа: то, что вы получаете, является тем, что может быть использовано для проверки того, получило ли сообщение какое-либо изменение во время его перемещения.
Вместо этого MAC использует закрытый ключ в качестве семени для хеш-функции, используемой при генерации кода: это должно гарантировать, что получатель не только не изменил сообщение, но и отправил его, что мы были ожидая: в противном случае злоумышленник не мог знать секретный ключ, используемый для генерации кода.
Согласно википедии, у вас есть:
В то время как функции MAC похожи на криптографические хэш-функции, они обладают различными требованиями к безопасности. Чтобы считаться безопасным, функция MAC должна противостоять экзистенциальной подделке при атаках с выбранным-открытым текстом. Это означает, что даже если злоумышленник имеет доступ к оракулу, который обладает секретным ключом и генерирует MAC-адреса для сообщений выбранного злоумышленника, злоумышленник не может угадать MAC для других сообщений, не выполняя неосуществимых вычислений.
Конечно, хотя их сходства, они реализованы по-другому: обычно алгоритм генерации MAC основан на алгоритме генерации хеш-кода с расширением, которое заботится об использовании закрытого ключа.
Хеш - это функция, которая создает дайджест из сообщения. Криптографически безопасный хеш, для которого вычислительно невозможно создать сообщение с данным дайджестом. Сам по себе хэш сообщения не дает информации о отправителе данного сообщения. Если вы можете безопасно передавать хеш сообщения, его можно использовать для проверки правильности приема большого сообщения по незащищенному транспорту.
Код аутентификации сообщения - это способ объединения общего секретного ключа с сообщением, чтобы получатель сообщения мог аутентифицировать, что отправитель сообщения имеет общий секретный ключ, а тот, кто не знает секретный ключ мог отправить или изменить сообщение.
HMAC - это код аутентификации сообщения на основе хэша. Обычно это включает применение хеш-функции один или несколько раз к какой-то комбинации общего секрета и сообщения. HMAC обычно ссылается на алгоритм, зарегистрированный в RFC 2104 или FIPS-198.
MAC не шифрует сообщение, чтобы сообщение было в виде обычного текста. Он не раскрывает секретный ключ, поэтому MAC может быть отправлен через открытый канал без компрометации ключа.
Нашел это, чтобы ответить на вопрос от другого форума.
Эти типы криптографических примитивов можно отличить по целям безопасности, которые они выполняют (в простом протоколе "добавление к сообщению" ):
Целостность: Может ли получатель быть уверенным, что сообщение не было случайно изменено?
Аутентификация: Может ли получатель быть уверенным, что сообщение отправлено от отправителя?
Неотказание: Если получатель передает сообщение и подтверждение третьим лицам, может ли третья сторона быть уверенным, что сообщение возникло у отправителя? (Пожалуйста, обратите внимание, что я говорю об отказе в отказе в криптографическом смысле, а не в юридическом смысле.) Также важно этот вопрос:
Ключи: Требуется ли примитиву общий секретный ключ или публичные ключи? Я думаю, что короткий ответ лучше всего объяснить таблицей:
Cryptographic primitive | Hash | MAC | Digital
Security Goal | | | signature
------------------------+------+-----------+-------------
Integrity | Yes | Yes | Yes
Authentication | No | Yes | Yes
Non-repudiation | No | No | Yes
------------------------+------+-----------+-------------
Kind of keys | none | symmetric | asymmetric
| | keys | keys
Помните, что аутентификация без уверенности в используемых ключах бесполезна. Для цифровых подписей получатель должен быть уверен, что ключ проверки фактически принадлежит отправителю. Для MAC-адресов получатель должен быть уверен, что общий симметричный ключ был передан только отправителю.
В основном основное различие заключается в том, что MAC использует закрытый ключ, а хэш не использует никаких ключей. Из-за этого MAC позволяет нам добиться аутентификации.
HASH FUNCTION: функция, которая отображает сообщение любой длины в хеш-значение фиксированной длины, которое служит аутентификатором.
MAC: функция сообщения и секретный ключ, который создает фиксированное значение длины, которое служит в качестве аутентификатора.
A Hash - это сводка или отпечаток пальца сообщения и не обеспечивает ни целостности, ни аутентификации, поскольку она подвержена атаке "человек-в-середине". Предположим, что A хочет отправить сообщение M в сочетании с хешей H из M на B. Вместо этого C захватить сообщение и сгенерировать сообщение M2 и хеш H2 из M2 и отправить его на B. Теперь B ни в коем случае не может проверить, это оригинальное сообщение от A или нет. Однако хэш может использоваться другими способами для обеспечения целостности и аутентификации, таких как MAC.
MAC, который также является сводкой сообщения, обеспечивает целостность и аутентификацию. MAC может быть вычислен многими способами. Самый простой способ - использовать хэш-функцию с двумя входами, сообщением и общим секретным ключом. Использование общего секретного ключа добавляет способность аутентификации к MAC и, таким образом, обеспечивает целостность и аутентификацию. Однако MAC по-прежнему не обеспечивает отказ от отказа, так как любая из сторон, имеющих общий секретный ключ, может выдать сообщение и MAC. При этом в действии происходит цифровая подпись и криптография с открытым ключом.