Выработка кода аутентификации сообщений.
Выработка кода аутентификации сообщений с использованием процедуры криптографического преобразования данных официально или полуофициально закреплена во многих стандартах на алгоритмы шифрования. Так, например, в различных комментариях к стандарту шифрования США рекомендуется использовать DES для выработки контрольной комбинации [5]. Российский стандарт шифрования ГОСТ 28147?89 [6] явным образом предусматривает режим выработки имитовставки, которая является не чем иным, как образцом MAC.
Схема использования криптографического преобразования EK для выработки кода аутентификации весьма проста: все исходное сообщение разбивается на блоки, затем последовательно для каждого блока находится результат преобразования по алгоритму EK побитовой суммы блока по модулю 2 с результатом выполнения предыдущего шага. Таким образом, получаем следующее уравнение для выработки контрольной комбинации:
C=CK(T)=EK(T1ÅEK(T2ÅEK(...ÅEK(Tm)))).
Схема алгоритма выработки MAC приведена на рисунке 1.
Øàã 0. Входные данные – массив данных T, разбитый на m блоков фиксированного размера, равного размеру блока данных использованного шифра (для большинства наиболее известных шифров – 64 бита): T=(T1,T2,...,Tm). Последний блок данных Tm каким-либо способом дополняется до полного блока данных, если имеет меньший размер.
Øàã 1. MAC получает нулевое начальное значение.
Следующий шаг алгоритма 2 выполняются последовательного для каждого блока исходных данных в порядке их следования.
Øàã 2. Побитовая сумма по модулю 2 очередного блока исходных данных Ti c текущим значением MAC S подвергается преобразованию по алгоритму зашифрования, результат становится новым текущим значением MAC.
Рис. 1. Алгоритм выработки кода аутентификации для массива данных. |
Øàã 3. Результатом работы алгоритма – MAC для входного массива данных – является последнее текущее значение MAC, полученное на шаге 2.
Рассмотрим свойства криптографических преобразований EK, используемых для шифрования данных, и определим те из них, которые необходимы при выработке MAC:
1. Преобразование данных должно использовать в качестве параметра секретный ключ K. Его секретность определяет секретность зашифрованных данных.
2. Преобразование данных должно быть криптографически стойким, то есть не должно существовать иной возможности определить входной блок алгоритма при известном выходном и неизвестном ключе, или определить ключ при известных входном и выходном блоках иначе как перебором по возможным значениям входного блока и ключа в первом и во втором случаях соответственно.
3. Преобразование данных должно быть обратимым – для того, чтобы была осуществима процедура расшифрования.
Если шифрующее преобразование EK предполагается использовать для выработки кода аутентификации, выполнение третьего свойства не требуется, так как при этом преобразование всегда выполняется в одну сторону. Кроме того криптостойкость алгоритма преобразования может быть несколько ниже, чем при шифровании, и это не приведет к снижению надежности всей схемы. Действительно, при выработке MAC в распоряжении криптоаналитика есть только один блок данных – MAC, который является функцией сразу всех блоков исходного текста, а при зашифровании в его распоряжении есть набор блоков шифротекста, каждый из которых зависит только от одного блока исходного текста. Очевидно, в первом случае его задача существенно сложнее. Именно по этой причине в ГОСТе 28147–89 для выработки имитовставки используется упрощенный 16-раундовый цикл преобразования, тогда как для шифрования – полный 32-раундовый.