Проблема аутентификации данных и блочные шифры

       

Выработка кода обнаружения манипуляций.


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

Существует большое количество возможных подходов к построению вычислительно необратимых функций, практически всегда самым трудным является обоснование свойства необратимости предложенной функции.  Однако есть класс способов, где такое свойство не нуждается в доказательстве, оно просто следует из характеристик примененного метода – это построение функций одностороннего преобразования на основе классических блочных шифров.  Данный подход известен достаточно давно и изложен в ряде работ, из русскоязычных отметим [7], в его основе лежит тот факт, что уравнение зашифрования блока данных по циклу простой замены  Y=EK(X)  вычислительно неразрешимо относительно ключа K – это является неотъемлемым свойством любого действительно стойкого шифра.  Даже при известных открытом  (X)  и зашифрованном  (Y)  блоках ключ  K  не может быть определен иначе как перебором по множеству возможных значений.  Алгоритм выработки контрольной комбинации для массива данных  T  следующий:

  • массив данных  T  разбивается на блоки фиксированного размера, равного размеру ключа используемого шифра:
  • T=(T1,T2,...,Tm);

    |T1|=|T2|=...=|Tm–1|=|K|,  0<|Tm|£|K|.

    • при необходимости последний (неполный) блок дополняется каким-либо образом до блока полного размера;
    • MDC или хэш сообщения вычисляется по следующей формуле:
    • C=H(T)=ETm(ETm–1(...ET1(S))),

      где  S

      – начальное заполнение алгоритма – может выбираться произвольно, обычно полагают  S=0;

      Несложно доказать, что задача подбора массива данных  T'=(T'1,T'2,...,T'm')  под заданную контрольную комбинацию  C  эквивалентна следующей системе уравнений подбора ключа для заданных входного и выходного блоков данных криптоалгоритма:


      ET'1(S)=S1,

      ET'2(S1)=S2,

      ...



      ET'm'(Sm'–1)=C,

      Нет необходимости решать сразу все эти уравнения относительно ключа  Ti'  – все блоки массива данных  T', кроме одного, могут быть выбраны произвольными – это определит, все значения Si, и лишь один, любой из них, должен быть определен решением соответствующего уравнения  ET'i(Si–1)=Si  относительно  T'i.  Так как данная задача вычислительно неразрешима в силу использования криптостойкого алгоритма шифрования, предложенная схема вычисления MDC обладает гарантированной стойкостью, равной стойкости используемого шифра.

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

      EK1(X)=EK2(X)  при некоторых  X  и  KK2.

      Один из этих ключей – тот, на котором проводилось зашифрование – «истинный», а другой – «побочный».  Таким образом, побочным ключом для некоторого блока данных X  и некоторого истинного ключа  K  называется ключ  K', который дает точно такой же результат зашифрования блока  X, что и истинный ключ  K: EK'(X)=EK(X).  Ясно, что для различных блоков исходного массива данных побочные ключи также в общем случае различны – вероятность встретить пару ключей, переводящих одновременно несколько пар одинаковых блоков открытых текстов в пары одинаковых блоков шифротекстов стремительно убывает с ростом числа этих пар.  Поэтому обнаружение побочного ключа криптоаналитиком при дешифровании сообщения не является его особым успехом, так как с вероятностью, незначительно отличающейся от 1, на этом найденном ключе он не сможет правильно расшифровать никаких других блоков шифротекста.  Совершенно иное дело в алгоритме выработки MDC – здесь обнаружение побочного ключа означает, что злоумышленник подобрал такой ложный, то есть отсутствующий в сообщении блок данных, использование которого приводит к истинному MDC



      исходного массива данных.

      Для того, чтобы уменьшить вероятность навязывания ложных данных через нахождение побочных ключей, в шагах криптографического преобразования применяются не сами блоки исходного сообщения, а результат их расширения по некоторой схеме.  Под схемой расширениея здесь понимается процедура построения блоков данных большего размера из блоков данных меньшего размера.  Примером может служить, например, функция расширения, в которой выходной блок строится из байтов (или 2-,4-,... и т.д. -байтовых слов) исходного блока, перечисляемых в различном порядке.  Указанное расширение стоит применять, если размер ключа использованного шифра в несколько раз превышает размер его блока данных.  Так, для алгоритма DES, с размером блока данных 64 бита и ключа 56 бит в расширении нет необходимости.  Если в схеме используется алгоритм ГОСТ 28147–89 с размером блока 64 бита и размером ключа 256 бит, стоит использовать 64- или 128-битные блоки исходного текста и расширять их до размеров 256 бит.  Пример функции расширения 128-битового блока в 256-битовый может быть, например, следующим:

      Исходный блок:             T=(B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16),

      После расширения: P(T)=(B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16,

      B1, B4, B7, B10, B13, B16, B3, B6, B9, B12, B15, B2, B5, B8, B11, B14),

      где  Bi – байты блока данных,  |Bi|=8.

      Схема алгоритма выработки MDC (хэш–кода) с использованием классического блочного шифра приведена на рисунке 2.





           Рис. 2.  Алгоритм выработки      кода обнаружения манипу-     ляций для массива данных.
      Øàã 0.    Входные данные – массив данных  T, разбитый на m  блоков фиксированного размера, не превышающего размер ключа использованного криптоалгоритма и, как правило, делящего его нацело:  T=(T1,T2,...,Tm).  Последний блок данных Tm  каким-либо способом дополняется до полного блока данных, если имеет меньший размер.

      Øàã 1.    MDC получает нулевое начальное значение (это значение может быть, в принципе, любым).

      Последующие шаги 2 и 3 алгоритма выполняются последовательного для каждого блока исходных данных в порядке их следования.

      Øàã 2.    Выполняется расширение очередного блока Ti данных с помощью функции расширения P до размера ключа шифра.

      Øàã 3.    Выполняется зашифрование текущего значения MDC на ключе, полученном на шаге 2, результат становится новым текущим значением MDC.

      Øàã 4.    Результатом работы алгоритма (т.е. MDC для всего входного массива данных) является последнее текущее значение MDC, полученное на шаге 3.

      Рассмотренный алгоритм также может быть использован для выработки хэш–кода в схемах цифровой подписи.


      Содержание раздела