Материал: Щерба В.В. Криптографическая защита информации

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

86

Рассмотрим конкретные примеры хэш-функций, построенных на основе некоторых алгоритмов преобразования блоков.

Пусть Ek – алгоритм блочного шифрования, n – размер блока, l – размер ключа и G – некоторое отображение, ставящее в соответствие вектору длины n вектор длины l. Рассмотрим следующие одношаговые сжимающие функции, построенные на основе алгоритма Ek:

а) F(х, H) = Eх (H) H (Дэвис – Мейер);

б) F (х, Н) = ЕG(H)(х) х (Матиас – Мейер – Осеас); в) F(х, H) = ЕG(H)(х) х Н (Миагучи – Принель).

Значением любой из хэш-функций, построенных по правилу (1) из приведенных одношаговых сжимающих функций, является вектор длины n, равной размеру блока. В случае если эта величина оказывается недостаточной, ее можно увеличить, заменив одношаговую функцию F на функцию F’ с удвоенной размерностью значений. Это можно сделать, например, путем двукратного применения функции F с последующим перемешиванием полублоков согласно формуле:

F’(x,H1,H2)=π(F(х,H1),F(x,H2)),

в которой переставляет произвольные полублоки а, b, с, d по правилу ((а,b),(с,d))=(а,d,с,b). Такой подход реализован в конструкции одношаговой функции МDС-2.

Другие примеры бесключевых хэш-функций дают известные алгоритмы МD-4, МD-5 и SНА. Они оперируют с блоками длины n, совпадающей с длиной результирующего значения свёртки, причем n = 128 для алгоритма МD-4 и n = 160 для МD-5 и SHА. Указанные алгоритмы спроектированы специально с учетом эффективной реализации на тридцатидвухразрядных вычислительных машинах.

При их использовании исходное сообщение M разбивается на блоки длиной m = 512 бит. Последний блок формируется путем дописывания к концу сообщения комбинации 10...0 до получения блока размера 448 бит, к которому затем добавляется комбинация из 64 бит, представляющая битовую длину сообщения. Затем вычисляется значение свертки согласно процедуре [9.1] с использованием одношаговой сжимающей функции, заданной формулой (х,H)=Eх(H) H, где х – блок сообщения длины m = 512 бит, Н – блок из n бит, а Ех – некоторое преобразование множества блоков. Значение начального вектора определяется в описании преобразования Ех.

В стандарте ХФ ГОСТ Р 34.11-94 приняты значения n=m=512. Одношаговая сжимающая функция (х, Н), используемая для вычис-

87

ления последовательности значений Нi= (хi, Нi-1), построена на базе четырех параллельно работающих схем блочного шифрования (ГОСТ 28147-89), каждая из которых имеет 256-битовый ключ и оперирует с блоками размера 64 бита. Каждый из ключей вычисляется в соответствии с некоторой линейной функцией от блока исходного сообщения хi и значения Hi-1. Значение Нi является линейной функцией от результата шифрования, блока исходного сообщения хi и значения Нi-1. После вычисления значения НN для последовательности блоков m1,m2,..,mN, применяют еще два шага вычисления согласно формуле:

H=h(M)=F(Z mN,F(L,HN)),

где Z – сумма по модулю два всех блоков сообщения, а L – длина сообщения.

Целостность данных и аутентификация сообщений

Рассмотрим требования, которым должна соответствовать хэшфункция для того, чтобы она могла использоваться в качестве аутентификатора сообщения. Рассмотрим очень простой пример ХФ. Затем проанализируем несколько подходов к построению ХФ.

ХФ Н, которая используется для аутентификации сообщений, должна обладать следующими свойствами:

1.Хэш-функция Н должна применяться к блоку данных любой длины.

2.Хэш-функция Н создает выход фиксированной длины.

3.Н (М) относительно легко (за полиномиальное время) вычисляется для любого значения М.

4.Для любого данного значения хэш-кода h вычислительно невозможно найти M такое, что Н (M) = h.

5.Для любого данного х вычислительно невозможно найти у х,

что H (у) = H (х).

6.Вычислительно невозможно найти произвольную пару (х, у) такую, что H (у) = H (х).

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

Четвертое свойство определяет требование односторонности ХФ: легко создать хэш-код по данному сообщению, но невозможно восстановить сообщение по данному хэш-коду. Это свойство важно, если аутентификация с использованием ХФ включает секретное значение. Само секретное значение может не посылаться, тем не менее, ес-

88

ли хэш-функция не является односторонней, противник может легко раскрыть секретное значение следующим образом. При перехвате передачи атакующий получает сообщение М и хэш-код С = Н (SAB || M). Если атакующий может инвертировать хэш-функцию, то, следовательно, он может получить SAB || M = H-1 (C). Так как атакующий теперь знает и М и SAB || M, получить SAB совсем просто.

Пятое свойство гарантирует, что невозможно найти другое сообщение, чье значение ХФ совпадало бы со значением ХФ данного сообщения. Это предотвращает подделку аутентификатора при использовании зашифрованного хэш-кода. В данном случае противник может читать сообщение и, следовательно, создать его хэш-код. Но так как противник не владеет секретным ключом, он не имеет возможности изменить сообщение так, чтобы получатель этого не обнаружил. Если данное свойство не выполняется, атакующий имеет возможность выполнить следующую последовательность действий: перехватить сообщение и его зашифрованный хэш-код, вычислить хэш-код сообщения, создать альтернативное сообщение с тем же самым хэшкодом, заменить исходное сообщение на поддельное. Поскольку хэшкоды этих сообщений совпадают, получатель не обнаружит подмены.

Хэш-функция, которая удовлетворяет первым пяти свойствам, на-

зывается простой или слабой хэш-функцией. Если, кроме того, вы-

полняется шестое свойство, то такая функция называется сильной хэш-функцией. Шестое свойство защищает против класса атак, известных как атака «день рождения».

Термин «аутентификация» означает установление подлинности. Он может относиться ко всем аспектам взаимодействия: сеансу связи, сторонам, передаваемым сообщениям и т. д. Применительно к самой информации аутентификация означает проверку того, что данные, передаваемые по каналу связи, являются подлинными по своему источнику и содержанию, по времени создания, времени пересылки и т. д. Рассмотрим эти свойства более подробно.

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

Аутентификация источника данных – получение подтверждения того, что рассматриваемый документ создан именно указанным источником информации. Следует подчеркнуть, что при этом не требу-

89

ется проверки времени создания и единственности документа, важно только то, что он был создан в некоторый (обычно неопределенный) момент времени в прошлом. Наличие «дубликата документа» подразумевает его повторную передачу или повторное использование. Если источник сообщений фиксирован, то вместо термина «аутентификация источника данных» используют термин «аутентификация сообщений».

Целостность данных и аутентификация источника данных тесно связаны друг с другом. Действительно, если данные подверглись модификации, то у них автоматически изменился источник. Если же не установлен источник, то без ссылки на него нельзя разрешить проблему целостности. В связи с этим будем считать по определению, что аутентификация источника данных включает проверку целостности данных.

Рассмотрим примеры.

1.Для обеспечения целостности хранимых данных (М) можно до-

бавить к ним значение криптографической ХФ (М, hk (М)), зависящей от ключа, известного только владельцу информации. Такой способ автоматически решает проблему аутентификации источника данных.

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

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

4.Аутентификация источника возможна также при совместном использовании бесключевой ХФ и симметричного шифрования. Для этого достаточно воспользоваться одной из следующих форм переда-

90

ваемого сообщения: Еk(М,h(М)) или (М,Еk(h(М))). В рассматриваемом случае можно повторить те же комментарии, что и в п. 2. К этому следует добавить, что алгоритм шифрования Еk должен быть стойким к атакам на основе известного открытого текста.

5.На практике чаще, чем предыдущие, применяются схемы, использующие бесключевые ХФ в сочетании с асимметричным шифро-

ванием. Подобным образом на основе схемы (М, Еk(h(М))) строятся алгоритмы вычисления цифровой подписи. Подобные схемы позволяют решать проблему аутентификации источника как при взаимодействии доверяющих друг другу, так и не доверяющих друг другу сторон.

6.Возможно совместное использование ключевой ХФ и симметричного шифрования в соответствии с одной из следующих схем:

Ek(M,Hk2(M)),

(Ek1(M),hk2(M)), (Ek1(M),hk2(Ek1(M)))и т. д.

При таком подходе не только ключи шифрования (k1) и (k2) ХФ должны быть независимыми, но и сами алгоритмы шифрования и вычисления значения ХФ также должны иметь существенные различия. В противном случае возникают дополнительные соотношения, которые можно использовать для отбраковки ключей.

В заключение необходимо рассмотреть вопрос о дополнительных гарантиях единственности и своевременности передачи сообщений. В этом случае используется термин «аутентификация транзакции», который означает аутентификацию сообщения с подтверждением единственности и своевременности передачи данных. Данный тип аутентификации предоставляет возможность защититься от повторного использования ранее переданных сообщений. Это необходимо в тех случаях, когда подобная угроза может привести к необратимым последствиям. Примером таких задач являются электронные банковские платежи или системы автоматизированного управления различными объектами.

Чтобы обеспечить единственность и своевременность передачи сообщений, обычно дополняют аутентифицирующие параметры, которые вставляются в передаваемые сообщения. Для этого используют метки времени и некоторые последовательности чисел. Если метки времени позволяют установить время создания или передачи документа, то последовательность чисел гарантирует правильность порядка получения сообщений. Помимо этого, для аутентификации последующих сообщений могут использоваться случайные числа, передаваемые в предыдущих сообщениях. Такой способ позволяет организовать «жесткое сцепление» идущих друг за другом сообщений.