76
Для защиты протоколов от попыток противника навязать ранее переданные и перехваченные сообщения в процедурах обмена информацией используются случайные числа, неповторяющиеся числа, метки времени. Эти дополнительные параметры выполняют роль уникальных меток сообщений, наличие и корректность применения которых контролируется взаимодействующими сторонами.
Например, «неповторяющиеся» последовательности чисел используются независимо для сообщений доказывающего и проверяющего, а также для сообщений каждой пары участников протокола идентификации. Взаимодействующие стороны следуют заранее определенной политике формирования числовых последовательностей. Примером простейшей политики может служить использование натурального ряда целых чисел для пометки следующих друг за другом сообщений. В этой ситуации сообщение принимается только в том случае, если его метка не использовалась ранее и превышает предыдущую на единицу.
Недостатком метода использования «неповторяющихся» последовательностей чисел является необходимость хранения соответствующей информации каждым доказывающим и проверяющим, а также невозможность выявления фактов задержки сообщений противником.
Использование меток времени позволяет исключить попытки навязывания ранее переданных сообщений, выполнять контроль своевременности поступления и единственности сообщений. Кроме того, в отличие от рассмотренного выше, этот способ не требует хранения никакой дополнительной информации. Протоколы с использованием меток времени реализуются следующим образом. Сторона, направляющая сообщение, считывает показания своих системных часов и вставляет в сообщение соответствующую метку времени. Вторая сторона, получив сообщение, также считывает показания, но уже своих системных часов и сравнивает их с поступившей меткой времени. Сообщение принимается, если выполняется следующее условие. Метка времени сообщения находится в пределах заранее установленного временного окна – интервала времени, необходимого для передачи самого большого сообщения в условиях максимальной рассинхронизации системных часов взаимодействующих сторон.
Рассмотрим три протокола идентификации типа «запрос-ответ» с использованием симметричных алгоритмов шифрования.
77
Положим, что доказывающий А и проверяющий В имеют общий секретный ключ k. Кроме того, положим, что:
tA, tВ – временные метки доказывающего А и проверяющего В соответственно;
zA, zB – случайные числа, выбираемые А и В соответственно; id(A), id(B) – идентификаторы А и В соответственно;
Ek, Dk – алгоритмы зашифрования и расшифрования на ключе k соответственно.
Протокол односторонней идентификации с использованием меток времени
1 шаг |
А → В |
id(A), Ek (tA, id(B)) |
2 шаг |
В |
Dk (Ek (tA, id(B)). |
На первом шаге протокола доказывающий А передает проверяющему свой идентификатор, являющийся заявкой на идентификацию, и шифртекст двух параметров – своей метки времени и идентификатора проверяющего В. Тем самым доказывающий А демонстрирует свое знание общего секрета k. Получив сообщение, пользователь В проверяет соответствие значения метки времени допустимому временному окну и своего идентификатора. Передача значения id(B) как составной части шифртекста необходима для исключения попыток немедленной передачи противником перехваченного сообщения в адрес пользователя А системы.
Протокол односторонней идентификации с использованием случайных чисел
1 шаг |
А → В |
id(A) |
2 шаг |
В → А |
zB |
3 шаг |
А → В |
Ek (zB, id(B)) |
4 шаг |
В |
Dk (Ek (zB, id(B))). |
На первом шаге протокола доказывающий А передает проверяющему свой идентификатор, являющийся заявкой на идентификацию. В ответ пользователь В выбирает и передает А случайное число zB, которое выступает в роли временной метки предыдущего протокола. Передачей шифртекста двух параметров zB и id(B) доказывающий А демонстрирует свое знание секрета k. На последнем шаге протокола пользователь В, как и в предыдущем протоколе, выполняет проверку поступивших данных.
78
Для предотвращения возможности криптоанализа с помощью специально подобранных открытых текстов, которые на 2-ом шаге под видом пользователя В может предложить противник, доказывающему А на 3-ем шаге рекомендуется включить в сообщение свое случайное число, как это предлагается в следующем протоколе.
Протокол взаимной идентификации с использованием случайных чисел
1 шаг |
А → В |
id(A) |
2 шаг |
В → А |
zB |
3 шаг |
А → В |
Ek (zA, zB, id(B)) |
4 шаг |
В |
Dk (Ek (zA, zB, id(B))) |
5 шаг |
В → А |
Ek (zA, zB, id(А)) |
6 шаг |
А |
Dk (Ek (zA, zB, id(B))). |
Как и в рассмотренном выше протоколе, пользователь В на 4 шаге выполняет проверку поступивших данных. Далее на 5-ом и 6-ом шаге приведенного протокола пользователи меняются ролями: А становится проверяющим, В – доказывающим. На 5-ом шаге пользователь В формирует шифртекст, используя значение случайного числа zA, переданное пользователем А. На 6-ом шаге протокола пользователь А осуществляет необходимые проверки.
В протоколах идентификации, построенных с применением ассиметричных алгоритмов шифрования, доказывающий может продемонстрировать свое знание секрета одним из двух способов:
–при расшифровании запроса проверяющего, зашифрованного на открытом ключе пользователя А;
–при проверке пользователем В цифровой подписи А, поставленной «под сообщением».
Протокол односторонней идентификации с использованием случайных чисел
Пусть EA и DA – алгоритмы зашифрования и расшифрования дока-
зывающего А. |
|
|
1 шаг |
А → В |
id(A) |
2 шаг |
В → А |
EА (z, id(B)) |
3 шаг |
А |
DА(EА (z, id(B))) |
4 шаг |
А → В |
z. |
79
На первом шаге протокола доказывающий А передает проверяющему свой идентификатор, являющийся заявкой на идентификацию. В ответ пользователь В выбирает случайное число z и передает шифртекст этого числа и своего идентификатора, образованный с помощью открытого ключа зашифрования пользователя А. После расшифрования сообщения А возвращает В значение случайного числа. Тем самым доказывающий подтверждает свое знание уникального секретного ключа расшифрования kрA и, следовательно, свою идентичность.
Теперь рассмотрим протоколы идентификации с применением цифровой подписи SA и SB.
Протокол односторонней идентификации с использованием меток времени
1 шаг А → В id(A), id(B), tA, SA(tA, id(B)).
Получив сообщение, пользователь В проверяет соответствие значения метки времени tA установленному в системе временному окну, совпадение значения поступившего идентификатора id(B) с его собственным и достоверность цифровой подписи доказывающего А.
Протокол односторонней идентификации с использованием случайных чисел
1 шаг |
А → В |
id(A) |
2 шаг |
В → А |
zB |
3 шаг |
А → В |
zA, id(B), SA (zA, zB, id(B)). |
Получив на 3 шаге протокола сообщение, пользователь В проверяет соответствие значения пришедшего идентификатора и достоверность цифровой подписи под строкой (zA, zB, id(B)).
80
Л е к ц и я 9. КРИПТОГРАФИЧЕСКИЕ ХЭШ-ФУНКЦИИ
Понятие хэш-функции
Хеширование (иногда хэширование, англ. hashing) – преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также на-
зываются хеш-функциями или функциями свертки, а их результаты называют хешем, хеш-кодом или дайджестом сообщения (англ. message digest).
Хэш-функция (далее ХФ) – функция, осуществляющая хэширование массива данных посредством отображения значений из (очень) большого множества-значений в (существенно) меньшее множествозначений.
ХФ – это функция, предназначенная для отображения значений произвольного сообщения или набора данных, записанного, как правило, в двоичном алфавите, в некоторую битовую комбинацию фиксированной длины, называемую сверткой.
ХФ применяются для решения следующих задач:
–при проведении статистических экспериментов;
–при тестировании логических устройств;
–при построении алгоритмов быстрого поиска;
–при проверке целостности записей в базах данных и т. п. Например, для осуществления быстрого поиска нужного сообще-
ния в большом списке сообщений различной длины удобнее сравнивать друг с другом не сами сообщения, а короткие значения их сверток, играющих одновременно роль контрольных сумм. Основным требованием к таким хэш-функциям является равномерность распределения их значений при случайном выборе значений аргументов.
ХФ позволяют обеспечивать решение следующих криптографических задач:
–в системах контроля целостности данных при их передаче или хранении;
–в системах аутентификации источника данных.
При решении первой задачи для каждого набора данных вычисляется значение ХФ (называемое кодом аутентификации сообщения или имитовставкой), которое передается или хранится вместе с самими данными. При получении данных пользователь вычисляет значе-