- Симметричное Шифрование
- Криптографические хеш-функции
- Message Authentication Code
Message Authentication Code(MAC) - имитовставки/коды аутентичности сообщения/аутентификационные жетоны.
MAC используются в популярных безопасных сетевых протоколах, например TLS, SSH и IPsec, для гарантирования целостности и подлинности передаваемых данных.
MAC – это короткий массив битов длиной, скажем, 256, который аутентифицирует сообщение. Это означает, что получатель может удостовериться, что сообщение поступило от декларируемого отправителя и не было изменено в процессе передачи. Чтобы сгенерировать MAC, отправителю нужны сообщение и секретный ключ. Для проверки MAC получателю нужны сообщение и тот же самый ключ. Имитовставка порождается функцией вычисления MAC.
Разница между имитовставкой и хеш-значением сообщения заключается в том, что хеш-значение не защищено от подделки, тогда как MAC обеспечивает такую защиту. Если сообщение и его хеш-значение передаются по незащищенной сети, то противник может изменить сообщение и пересчитать его хеш-значение, так чтобы они соответствовали друг другу.
Хеш-значения гарантируют только целостность сообщения, а имитовставки – целостность и аутентичность.
MAC также отличается от цифровой подписи. В цифровых подписях используется асимметричная криптография, т.е. подписывающая и проверяющая стороны пользуются разными ключами из одной и той же пары ключей. Создать подпись может только подписывающая сторона, потому что только она обладает закрытым ключом. Таким образом, цифровая подпись обеспечивает неотрицаемость, т.е. подписывающая сторона не сможет впоследствии отрицать, что располагала информацией, которую подписала. При использовании MAC отправитель и получатель используют один и тот же секретный ключ. Поэтому обе стороны могут сгенерировать MAC для любой информации, которой обладают, и третьей стороне трудно определить, кто именно это сделал. Поэтому MAC, в отличие от цифровой подписи, не обеспечивает неотрицаемости.
HMAC – MAC на основе функции хеширования
Имитовставка на основе функции хеширования (Hashbased Message Authentication Code – HMAC) – это имитовставка, которая генерируется функцией вычисления HMAC.
В функции вычисления HMAC используются криптографическая функция хеширования и секретный ключ.
HMAC(K, message) = H(K’ XOR opad ‖H(K’ XOR ipad ‖message))
message
: сообщение, подлежащее аутентификации;H
: функция хеширования, например SHA3256;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. Например, длина хеша функции SHA256 равна 256 бит, тогда как размер ее внутреннего блока равен 1088 бит.
Имя функции вычисления HMAC, пользующейся некоторой функцией хеширования, часто образуется из префикса HMAC- и имени этой функции. Например, функция вычисления HMAC, основанная на функции SHA256, называется HMAC-SHA-256.
Функция вычисления HMAC порождает значение HMAC той же длины, что длина хеша, порождаемого базовой функцией хеширования. Так, функция HMAC-SHA256 порождает 256-битовую HMAC.
MAC, шифрование и принцип криптографической обреченности
- шифрование, затем MAC (EncryptthenMAC – EtM): открытый текст сначала шифруется, после чего для шифртекста вычисляется MAC и отправляется вместе с шифртекстом;
- шифрование и MAC (EncryptandMAC – E&M): открытый текст шифруется, но MAC вычисляется для открытого текста, а не для шифртекста. Затем шифртекст и MAC отправляются вместе;
- MAC, затем шифрование (MACthenEncrypt – 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 как основа для псевдослучайной функции (Pseudorandom Function – PRF), необходимой для обмена ключами.
Протокол SSH тоже старый, как и TLS. Текущая версия 2 была опубликована в 1998 году. Исторически в SSH использовалась схема E&M. Однако схема аутентификации в SSH зависит от алгоритма вычисления MAC, а в новых алгоритмах используется схема EtM. Более современные алгоритмы со схемой EtM предпочтительнее старых со схемой E&M. Кроме того, новые реализации SSH поддерживают шифры с аутентификацией, не требующие отдельного вычисления MAC.
В протоколе IPsec, созданном в 1990х годах, схема EtM использовалась с самого начала. Впоследствии в IPsec были добавлены шифры с аутентифи кацией, как в TLS и SSH.
Комментарии в Telegram-группе!