В чем разница между хэшем и MAC (код аутентификации сообщения)? - PullRequest
49 голосов
/ 14 мая 2010

В чем разница между хэшем и MAC (код аутентификации сообщения)?

По своим определениям они, похоже, выполняют одну и ту же функцию.

Может кто-нибудь объяснить, в чем разница?

Ответы [ 7 ]

50 голосов
/ 14 мая 2010

Основное различие концептуально: в то время как хэши используются для гарантии целостности данных, MAC гарантирует целостность И аутентификацию.

Это означает, что хеш-код генерируется вслепую из сообщения без какого-либо внешнего ввода: то, что вы получаете, может быть использовано для проверки того, что сообщение изменилось во время его перемещения.

MAC вместо этого использует закрытый ключ в качестве начального числа для хэш-функции, которую он использует при генерации кода: это должно гарантировать получателю, что не только сообщение не было изменено, но и кто его отправил - это то, чем мы были ожидание: в противном случае злоумышленник не может знать секретный ключ, использованный для генерации кода.

Согласно википедии у вас есть:

Хотя функции MAC аналогичны криптографическим хеш-функциям, они предъявляют различные требования безопасности. Чтобы считаться защищенной, функция MAC должна противостоять экзистенциальной подделке при атаках с использованием открытого текста. Это означает, что даже если злоумышленник имеет доступ к оракулу, который обладает секретным ключом и генерирует MAC-адреса для сообщений по выбору злоумышленника, злоумышленник не может угадать MAC-адрес для других сообщений без выполнения недопустимых объемов вычислений.

Конечно, несмотря на их сходство, они реализованы по-другому: обычно алгоритм генерации MAC основан на алгоритме генерации хеш-кода с расширением, которое заботится об использовании закрытого ключа.

18 голосов
/ 14 мая 2010

Хеш - это функция, которая генерирует дайджест из сообщения. Криптографически безопасный хеш, для которого невозможно вычислить сообщение с данным дайджестом. Сам по себе хеш сообщения не дает информации об отправителе данного сообщения. Если вы можете безопасно передать хэш сообщения, его можно использовать для проверки правильности получения большого сообщения по незащищенному транспорту.

Код аутентификации сообщения - это способ комбинирования общего секретного ключа с сообщением, чтобы получатель сообщения мог подтвердить, что отправитель сообщения имеет общий секретный ключ, а не тот, кто не знает секретный ключ мог отправить или изменить сообщение.

HMAC - это код аутентификации сообщений на основе хеша. Обычно это включает в себя применение хеш-функции один или несколько раз к некоторой комбинации общего секрета и сообщения. HMAC обычно ссылается на алгоритм, описанный в RFC 2104 или FIPS-198.

MAC не зашифровывает сообщение, поэтому оно отображается в виде обычного текста. Он не раскрывает секретный ключ, поэтому MAC может быть отправлен по открытому каналу без компрометации ключа.

10 голосов
/ 16 июня 2016

Нашел ответ на этот вопрос с другого форума.

Эти типы криптографических примитивов можно отличить по целям безопасности, которые они выполняют (в простом протоколе «добавления к сообщению»):

Целостность: Может ли получатель быть уверен, что сообщение не было случайно изменено?

Аутентификация: Может ли получатель быть уверен, что сообщение отправлено отправителем?

Безотказность: Если получатель передает сообщение и подтверждение третьей стороне, может ли третья сторона быть уверенной в том, что сообщение отправлено отправителем? (Обратите внимание, что я говорю о непризнании в криптографическом смысле, а не в юридическом смысле.) Также важен этот вопрос:

Ключи: Требуется ли примитиву общий секретный ключ или пары открытых и закрытых ключей? Я думаю, что короткий ответ лучше всего объяснить с помощью таблицы:

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 получатель должен быть уверен, что общий симметричный ключ был предоставлен только отправителю.

Нажмите здесь для получения дополнительной информации

3 голосов
/ 06 ноября 2014

HASH FUNCTION: функция, которая отображает сообщение любой длины в хеш-значение фиксированной длины, которое служит аутентификатором.

MAC: функция сообщения и секретного ключа, который создает значение фиксированной длины, которое служит аутентификатором.

3 голосов
/ 12 мая 2014

Основное отличие состоит в том, что MAC использует закрытый ключ, а хеш не использует никаких ключей. Благодаря этому MAC позволяет нам выполнять аутентификацию.

2 голосов
/ 16 декабря 2016

Хеш - это сводка или отпечаток пальца сообщения, который не обеспечивает ни целостности, ни самой аутентификации, так как он подвержен атаке «человек посередине». Предположим, что A хочет отправить сообщение M в сочетании с хешем H из M на B. Вместо этого C захватывает сообщение и генерирует сообщение M2 и хэш H2 из M2 и отправляет его в B. Теперь B никак не может проверить, исходное сообщение от А или нет. Тем не менее, для достижения целостности и аутентификации хеш можно использовать и другими способами, такими как MAC.

MAC, который также является кратким описанием сообщения, обеспечивает целостность и аутентификацию. MAC может быть вычислен разными способами. Самый простой способ - использовать хеш-функцию с двумя входами, сообщением и общим секретным ключом. Использование общего секретного ключа добавляет возможность аутентификации MAC и, таким образом, обеспечивает целостность и аутентификацию. Тем не менее, MAC по-прежнему не обеспечивает отказ от авторства, поскольку любая из сторон, имеющих общий секретный ключ, может создать сообщение и MAC. А вот и цифровая подпись и криптография с открытым ключом в действии.

0 голосов
/ 22 апреля 2013
  1. Хеш-функции используют асимметричную криптографию, тогда как MAC используют симметричную криптографию.
  2. Криптографические хеш-функции не всегда являются MAC, но MAC может быть криптографическими хеш-функциями (ключевыми хеш-функциями).
  3. Хеш-функции обеспечивают безотказность, в то время как MAC не предоставляют не-ре
...