ISO 9797-1: разбираем стандарт криптографической защиты данных
Стандарт ISO 9797-1 определяет методы вычисления MAC-кодов для защиты целостности данных. Разбираем его структуру, алгоритмы и практическое применение для разработчиков.

ISO 9797-1 — это международный стандарт, который описывает методы вычисления кодов аутентичности сообщений (MAC) с использованием блочных шифров. Для разработчика, не имеющего профильного математического образования, этот документ может показаться настоящей «поросячьей латынью» — настолько он перегружен формулами и терминами. Однако понимание стандарта критически важно для тех, кто занимается разработкой систем защиты информации, платёжных решений или протоколов обмена данными.
Стандарт определяет несколько алгоритмов, обозначаемых от MAC Algorithm 1 до MAC Algorithm 6. Каждый из них использует блочный шифр (например, DES, 3DES или AES) в определённых режимах и с определёнными схемами обработки данных. Разница между алгоритмами заключается в способе разбиения сообщения на блоки, использовании дополнительных операций (например, XOR с константами) и количестве проходов шифрования.
Что такое ISO 9797-1 и зачем он нужен
ISO 9797-1 — это первая часть стандарта ISO 9797, посвящённая методам вычисления MAC. MAC (Message Authentication Code) — это короткая строка фиксированной длины, которая вычисляется из сообщения и секретного ключа. Она позволяет проверить, что сообщение не было изменено в процессе передачи и что оно действительно отправлено владельцем ключа.
Стандарт был разработан для обеспечения целостности и аутентичности данных в различных приложениях: от банковских транзакций до протоколов интернета вещей. Он используется в платёжных системах, таких как EMV (Europay, MasterCard, Visa), и в некоторых криптографических протоколах.
Как работает ISO 9797-1: основные алгоритмы
Стандарт определяет шесть алгоритмов, каждый из которых имеет свои особенности. MAC Algorithm 1 — самый простой: сообщение разбивается на блоки по размеру блока шифра, каждый блок шифруется с использованием предыдущего результата (сцепление блоков), а в конце применяется один или два прохода шифрования. MAC Algorithm 2 использует дополнительное XOR-сложение последнего блока с константой, что повышает устойчивость к определённым атакам.
MAC Algorithm 3 и 4 используют два ключа: один для шифрования, другой для финальной обработки. MAC Algorithm 5 и 6 — это более сложные варианты с тройным шифрованием и дополнительными преобразованиями. Выбор конкретного алгоритма зависит от требований к безопасности и производительности.
Чем отличаются версии стандарта
ISO 9797-1 был впервые опубликован в 1999 году, но с тех пор пересматривался. Текущая версия — ISO/IEC 9797-1:2011. В новой версии уточнены некоторые определения, добавлены рекомендации по использованию современных блочных шифров, таких как AES. Важно понимать, что стандарт не привязан к конкретному шифру — он определяет общую схему, а выбор шифра остаётся за разработчиком.
Однако на практике чаще всего используются алгоритмы 1 и 3, особенно в банковской сфере. Например, алгоритм 3 с использованием 3DES широко применялся в платёжных системах, но сейчас постепенно вытесняется алгоритмами на основе AES.
Практическое применение: как использовать ISO 9797-1 в своих проектах
Для разработчика, который хочет реализовать MAC-алгоритм в своём приложении, есть несколько путей. Самый простой — использовать готовые криптографические библиотеки, такие как OpenSSL или Bouncy Castle. В них уже реализованы все алгоритмы ISO 9797-1, и достаточно вызвать соответствующую функцию.
Но если вы пишете свою реализацию, нужно быть внимательным к деталям. Например, важно правильно обрабатывать последний блок сообщения: если его длина меньше размера блока, его необходимо дополнить (обычно нулями или специальной схемой). Также нужно правильно выбрать режим шифрования — стандарт предполагает использование ECB или CBC, но с определёнными модификациями.
Кого затронет и как
Разработчики, работающие с платёжными системами, системами аутентификации и защитой данных, должны знать ISO 9797-1. Без этого невозможно правильно реализовать защищённый обмен данными с банками или другими финансовыми организациями. Также стандарт важен для специалистов по информационной безопасности, которые проводят аудит криптографических систем.
В России и СНГ этот стандарт используется в банковской сфере, а также в некоторых государственных информационных системах. Например, при разработке интеграций с НСПК (Национальная система платёжных карт) часто требуется поддержка MAC-алгоритмов, совместимых с ISO 9797-1.
Что будет дальше
С развитием квантовых компьютеров и появлением новых атак на симметричные шифры стандарт, вероятно, будет пересматриваться. Уже сейчас идут работы по стандартизации постквантовых криптографических алгоритмов, которые в будущем могут заменить текущие методы. Однако ISO 9797-1 останется актуальным ещё долгое время, поскольку огромное количество систем уже построено на его основе.
Итог
ISO 9797-1 — это ключевой стандарт для обеспечения целостности данных в финансовой и промышленной сферах. Понимание его принципов необходимо каждому разработчику, который сталкивается с задачами криптографической защиты. Несмотря на сложность документа, разобравшись в нём один раз, вы сможете уверенно проектировать защищённые системы и избегать типичных ошибок.