1. Симметричное Шифрование
  2. Криптографические хеш-функции
  3. Message Authentication Code

Message Authentication Code(MAC) - имитовставки/коды аутентичности сообщения/аутентификационные жетоны.

MAC используются в популярных безопасных сетевых протоколах, например TLS, SSH и IPsec, для гарантирования целостности и подлинности передаваемых данных.

MAC – это короткий массив битов длиной, скажем, 256, который аутентифицирует сообщение. Это означает, что полу­чатель может удостовериться, что сообщение поступило от декларируемого отправителя и не было изменено в процессе передачи. Чтобы сгенерировать MAC, отправителю нужны сообщение и секретный ключ. Для проверки MAC получателю нужны сообщение и тот же самый ключ. Имитовставка порожда­ется функцией вычисления MAC.

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

Хеш-­значения гарантируют только целостность сообщения, а имитовставки – целостность и аутентичность.

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

HMAC – MAC на основе функции хеширования

Имитовставка на основе функции хеширования (Hash­based Message Authentication Code – HMAC) – это имитовставка, которая генерируется функцией вычисления HMAC.

В функции вычисления HMAC используются криптографическая функция хеширования и секретный ключ.

HMAC(K, message) = H(K’ XOR opad ‖H(K’ XOR ipad ‖message))

  • message: сообщение, подлежащее аутентификации;
  • H: функция хеширования, например SHA3­256;
  • K: секретный ключ;
  • K’: ключ длины, равной размеру блока, сформированный на основе K и зависящий от длины внутреннего блока функции хеширования, B;
  • ipad: внутреннее дополнение, состоящее из байта 0x36, повторенного B раз;
  • opad: внешнее дополнение, состоящее из байта 0x5C, повторенного B раз;
  • :символ конкатенации.

K’ формируется из K следующим образом:

  • если длина K меньше или равна B, то K’ совпадает с K, дополненным байтами 0x00 до длины B;
  • если длина K больше B, то K’ совпадает с H(K), дополненным байтами 0x00 до длины B.

Размер внутреннего блока функции хеширования, B, не со­впадает с длиной генерируемого хеша. Как правило, длина хеша меньше B. Например, длина хеша функции SHA­256 равна 256 бит, тогда как размер ее внутреннего блока равен 1088 бит.

Имя функции вычисления HMAC, пользующейся некото­рой функцией хеширования, часто образуется из префикса HMAC- и имени этой функции. Например, функция вычисления HMAC, основанная на функ­ции SHA­256, называется HMAC-SHA-256.

Функция вычисления HMAC порождает значение HMAC той же длины, что длина хеша, порождаемого базовой функцией хеширования. Так, функция HMAC-­SHA­256 порождает 256­-битовую HMAC.

MAC, шифрование и принцип криптографической обреченности

  • шифрование, затем MAC (Encrypt­then­MAC – EtM): открытый текст сначала шифруется, после чего для шифртекста вычисляется MAC и отправляется вместе с шифртекстом;
  • шифрование и MAC (Encrypt­and­MAC – E&M): открытый текст шифруется, но MAC вычисляется для открытого текста, а не для шифртекс­та. Затем шифртекст и MAC отправляются вместе;
  • MAC, затем шифрование (MAC­then­Encrypt – MtE): MAC вычисляется для открытого текста. Затем шифруются конкатенация открытого текста и MAC.

На принимающей стороне схема EtM позволяет проверить аутентичность зашифрованного сообщения еще до операции расшифрования. Две другие схемы предполагают расшифрование открытого текста до проверки MAC.

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

Если расшифрование производится до проверки аутентичности сообщения получателем, то противник может подменить любые сообщения при пере­даче и атаковать шифрование, прежде чем получатель отбросит сообщение.

В 2011 году известный исследователь безопасности Мокси Марлинспайк сформулировал принцип криптографической обреченности. Проще говоря, если вы вынуждены выполнить любую криптографическую операцию до про­верки имитовставки полученного сообщения, то это так или иначе, но неиз­бежно приведет к роковому концу.

Хотя EtM является самой безопасной схемой, две другие тоже можно реализовать безопасно, если принять необходимые меры предосторожности.

Еще несколько лет назад аутентификацию (вычисление MAC) и шифрование можно было применять только в виде двух отдельных операций. Но не­давно стали популярны режимы шифрования с аутентификацией, например AES-­GCM или ChaCha20­-Poly1305, которые постепенно вытесняют режимы шифрования без аутентификации. В этом случае аутентификация встроена непосредственно в режим и не требует отдельной операции, например вы­числения HMAC открытого или шифртекста. Используя шифрование с аутен­тификацией, не нужно выбирать между EtM и MtE. Специального термина для такой схемы не существует, но можно было бы сказать, что производится вычисление MAC в процессе шифрования.

Исторически TLS использовался совместно со схемой MtE. Впоследствии было внедрено EtM-расширение протокола TLS, которое позволяло клиенту и серверу TLS согласовать применение EtM вместо MtE. В версии TLS 1.2 в протокол был добавлены шифры с аутентификацией. Наконец, в версии TLS 1.3 допустимы только шифры с аутентификацией. Важно помнить, что хотя для шифров с аутентификацией отдельная операция вычисления MAC не нужна, HMAC все равно используется в TLS 1.3 как основа для псевдослучайной функции (Pseudor­andom Function – PRF), необходимой для обмена ключами.

Протокол SSH тоже старый, как и TLS. Текущая версия 2 была опубликована в 1998 году. Исторически в SSH использовалась схема E&M. Однако схема аутентификации в SSH зависит от алгоритма вычисления MAC, а в новых ал­горитмах используется схема EtM. Более современные алгоритмы со схемой EtM предпочтительнее старых со схемой E&M. Кроме того, новые реализации SSH поддерживают шифры с аутентификацией, не требующие отдельного вычисления MAC.

В протоколе IPsec, созданном в 1990­х годах, схема EtM использовалась с самого начала. Впоследствии в IPsec были добавлены шифры с аутентифи­ кацией, как в TLS и SSH.


Комментарии в Telegram-группе!