Профессиональная минимизация налогов цены в Воронеже изумительны.
.




   
      

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

Данная статья является продолжением серии статей
автора о реализациях и использованииРоссийского стандарта шифрования [1,2,3] и
об архитектуре и режимах использования блочных шифров [4], и посвящена
проблемамподтверждения подлинности и авторства сообщений. Статья была написана
осенью 1995 года – почти три года назад, иподготовлена для публикации в журнале
«Монитор», где у автора вышли 2 статьи по криптографии. Однако по разным
причинамстатья тогда не была опубликована – сначала из-за нехватки времени на ее
окончательную доводку и подготовку кодов–примеров к статье, а затем из-
зазакрытия
«Монитора». Введение.............
................................................................................
............................................ 2 1. Задача аутентификации
данных..........................................................................
..................... 2. Контроль неизменности массивов
данных..........................................................................
... 2.1. Задача имитозащиты
данных..........................................................................
................... 2.2. Подходы к контролю неизменности
данных...................................................................
2.3. Выработка кода аутентификации
сообщений..................................................................
2.4. Выработка кода обнаружения
манипуляций....................................................................
3.1. Что такое цифровая
подпись.........................................................................
.................. 3.2. Базовая идея Диффи и
Хеллмана........................................................................
............. 3.4. Схема цифровой подписи на основе
блочного шифра.................................................
Заключение...............................................................
....................................................................
24 Литература.............................................................
.......................................................................
24 Наш совсем уже близкий к
своему завершению век с полным правом может считаться веком тотальной
информатизацииобщества – роль информации в современном мире настолько велика,
что информационная индустрия стала одной из ведущих отраслей наших дней,
аполучившие огромное распространение устройства для обработки цифровых данных –
компьютеры – являются одним из символов нашей цивилизации. Информация,
представленная в самых различныхформах, подобно другим товарам производится,
хранится, транспортируется к потребителю, продается, покупается наконец
потребляется, устаревает, портится,и т.д.. На протяжении жизненного цикла
информационные массивы могут подвергаться различным нежелательным для
ихпотребителя воздействиям, проблемам борьбы с которыми и посвящена данная
статья. Так как информация имеет нематериальный характер, массивы данных
не несут на себе никаких отпечатков, покоторым можно было бы судить об их
прошлом – о том, кто является автором, о времени создания, о фактах, времени и
авторах вносимых изменений. Модификация информационного массива неоставляет
осязаемых следов на нем и не может быть обнаружена обычными методами. «Следы
модификации» в той илииной форме могут присутствовать только на материальных
носителях информации – так, специальная экспертиза вполне способна установить,
что сектор на некоей дискете был записан позже всехостальных
секторов с данными на этой же дорожке дискеты, и эта запись производилась на
другом дисководе. Указанный факт, будучи установленным, может, например,
означать, что в данные, хранимые на дискете, были внесены изменения. Но после
того, как эти данные будут переписаны на другойноситель, их копии уже не будут
содержать никаких следов модификации. Реальные компьютерные данные за время
своейжизни многократно меняют физическую основу представления и постоянно кочуют
с носителя на носитель, в силу чего их не обнаружимое искажение не представляет
серьезныхпроблем. Поскольку создание и использование информационных массивов
практически всегда разделены во времении/или в пространстве, у потребителя
всегда могут возникнуть обоснованные сомнения в том, что полученный им массив
данных создан нужным источником ипритом в точности таким, каким он дошел до
него. Таким образом, в системах обработки информации помимо обеспечения ее
секретности важно гарантироватьследующие свойства для каждого обрабатываемого
массива данных: – он пришел к
потребителю именно таким, каким был создан источником и непретерпел на своем
жизненном пути несанкционированных
изменений; аутентификации аутентичностью На первый взгляд может показаться, что данная
задача решается простым шифрованием. Действительно, если массив данных
зашифрован с использованиемстойкого шифра, такого, например, как ГОСТ 28147–89,
то для него практически всегда будет справедливо следующее: в него
трудно внести изменения осмысленным образом, поскольку со степеньювероятности,
незначительно отличающейся от единицы, факты модификации зашифрованных массивов
данных становятся очевидными после их расшифрования –эта очевидность выражается
в том, что такие данные перестают быть корректными для их интерпретатора: вместо
текста на русском языке появляется белиберда,архиваторы сообщают, что
целостность архива нарушена и т.д.; только обладающие секретным
ключом шифрования пользователи системы могут изготовитьзашифрованное сообщение,
таким образом, если к получателю приходит сообщение, зашифрованное на его
секретном ключе, он может быть уверенным в его авторстве,так как кроме него
самого только законный отправитель мог изготовить это
сообщение. Тем не менее, использование шифрования в системах
обработки данных само по себе неспособно обеспечить их аутентичностипо следующим
причинам: 1. Изменения, внесенные в зашифрованные данные, становятся
очевидными после расшифрования только в случае большой избыточности
исходныхданных. Эта избыточность имеет место, например, если массив информации
является текстом на каком-либо человеческомязыке. Однако в общем случае это
требование может не выполняться – если случайная модификация данных не делаетих
недопустимым для интерпретации со сколько-нибудь значительной долей вероятности,
то шифрование массива не обеспечивает его подлинности. Говоря языком
. Или, более просто: свойства системобработки информации
обеспечивать секретность и подлинность обрабатываемых данных в общем случае
могут не совпадать 2. Факт успешного (в смысле предыдущего пункта)
расшифрования зашифрованных на секретном ключе данных может подтвердить их
авторство только вглазах самого получателя. Третья сторона не сможет сделать на
основании этого однозначного вывода об авторствемассива информации, так как его
автором может быть любой из обладателей секретного ключа, а их как минимум два –
отправитель и получатель. Поэтому в данном случае споры об авторствесообщения
не могут быть разрешены независимым арбитражем. Это важно для тех систем, где
междуучастниками нет взаимного доверия, что весьма характерно для банковских
систем, связанных с управлением значительными ценностями. Таким образом,
существование проблемы подтверждения подлинности и авторства массивов данных,
отдельной отзадачи обеспечения их секретности, не вызывает сомнения. В
последующих разделах настоящей статьиизлагаются подходы к ее решению,
базирующиеся на использовании классических блочных шифров. В разделе
2рассматриваются подходы к решению задачи подтверждения подлинности данных, а в
разделе 3 – к задаче подтверждения их авторства. В принципе, для решения
указанных задач может быть использованлюбой традиционный блочный
криптографический алгоритм. В компьютерных кодах, прилагаемых кнастоящей
статье, автор использует наиболее знакомый и близкий ему шифр – криптоалгоритм
ГОСТ28147–89. 2.1.Задача
имитозащитыданных. данных в системах
их обработки понимают защиту от навязывания ложныхданных. Как мы уже выяснили,
практически всегда на некоторых этапах своего жизненного цикла
информацияоказывается вне зоны непосредственного контроля за ней. Это
случается, например, при передаче данныхпо каналам связи или при их хранении на
магнитных носителях ЭВМ, физический доступ к которым посторонних лиц исключить
почти никогда не представляетсявозможным. Только если целиком заключить линию
связи в кожух из твердого металла, внутрь кожуха закачать газпод давлением и
высылать роту автоматчиков прочесывать местность каждый раз, когда в секции
такой системы будут зафиксированы малейшие изменения давления,как это, послухам,
делают Российские спецслужбы, ответственные за правительственную связь, будет
хоть какая-то гарантия неприкосновенностипередаваемых данных, не всегда,
впрочем, достаточная. Но подобный подход многократно удорожает стоимость
каналов связи,ведь стоимость кожуха, защищенных помещений для обработки сигнала
и услуг вооруженных людей на много порядков превышает стоимость проложенной
витой парыпроводов. И как в этом случае быть с электромагнитным сигналом? –
ведь не до всех мест можно дотянуть провод, атакой сигнал, даже если это
узконаправленный лазерный пучок, не говоря об обычном радиосигнале, не спрячешь
в кожух. Таким образом, физически предотвратить внесение
несанкционированных изменений в данные в подавляющембольшинстве реальных систем
их обработки, передачи и хранения не представляется возможным. Поэтому крайне
важносвоевременно обнаружить сам факт таких изменений – если подобные случайные
или преднамеренные искажения будут вовремя выявлены, потери пользователей
системыбудут минимальны и ограничатся лишь стоимостью «пустой» передачи или
хранения ложных данных, что, конечно, во всех реальных ситуациях неизмеримо
меньшевозможного ущерба от их использования. Целью злоумышленника,
навязывающего системе ложную информацию, являетсявыдача ее за подлинную, а это
возможно только в том случае, если сам факт такого навязывания не будет вовремя
обнаружен, поэтому простая фиксация этогофакта сводит на нет все усилия
злоумышленника. Подведем итог – под защитой данных от несанкционированных
изменений в криптографиипонимают не исключение самой возможности таких
изменений, а набор методов, позволяющих надежно зафиксировать их факты, если они
имели место. подходы к построению
такой защиты. Прежде всего, в распоряжении получателя информации должна быть
процедурапроверки или ,
позволяющая проверитьподлинность полученного массива данных .
На выходе указанная процедура должна выдавать одно из двух возможныхбулевых
значений – массив данных опознается как подлинный, либо как ложный:
. Условимся, что значение
1 соответствует подлинному массиву данных, а значение 0 – ложному. Процедура
аутентификации должна обладать следующими свойствами, ограничивающимивозможность
злоумышленника подобрать массив данных ¹ у злоумышленника
не должно быть возможности найти такое сообщение иначе как путемперебора по
множеству допустимых сообщений – последняя возможность есть в его распоряжении
всегда; универсальность конструируемой схемы защиты, которая, в частности,
означает, что схема должнабыть пригодной для защиты любого массива данных
из достаточно широкого класса. Однако, если реализовать схему
буквально,т.е. использовать для проверки в точности то сообщение, которое
отправитель должен передать получателю, принцип универсальности может придти в
противоречиесо вторым требованием к процедуре проверки. Действительно, исходя
из этого принципа мы можем потребовать, чтобы были допустимыми, что совершенно явно нарушит второетребование
к функции проверки. Для того, чтобы их примирить, в схему необходимо ввести
дополнительные шаги –преобразование данных отправителем и обратное
преобразование получателем. Отправитель выполняет преобразование данныхс
использованием некоторого алгоритма ). Тогда, помимо
процедурыаутентификации, в распоряжении получателя должна быть процедура
). Весь смысл
этих преобразований заключается втом, чтобы множество преобразованных сообщений
{ }, было неизвестно
злоумышленнику, и вероятностьслучайно угадать элемент из этого множества была
достаточно мала для того, чтобы ее можно было не принимать во
внимание. Последнее требование в сочетанием с принципом универсальности
однозначно приводит к необходимостивнесения определенной избыточности в
сообщение, что означает попросту тот факт, что размер преобразованного сообщения
должен быть больше размера исходногосообщения на некоторую величину, как раз и
составляющую степень избыточности: . Очевидно, что чем больше эта
величина, тем меньше вероятностьпринять случайно взятое сообщение за подлинное –
эта вероятность равна 2 . Если бы не требование внесения избыточности, в
качестве функцийпреобразования данных
могли бы использоваться функции зашифрования ирасшифрования данных на некотором
ключе ). Однако при их использовании размер массива зашифрованныхданных
Наиболее естественно реализовать алгоритм преобразования с
внесением избыточности простым добавлением к исходнымданным контрольной
комбинации фиксированного размера, вычисляемой как некоторая функция от этих
данных:
. В этом случае выделение
исходных данных изпреобразованного массива заключается в простом отбрасывании
добавленной контрольной комбинации полученного массива
данных ) и сравнении его с
переданнымзначением контрольной комбинацией Теперь рассмотрим свойства, которым должна удовлетворять функция
выработки контрольной комбинации 1. Эта функция должна
быть вычислительно необратимой, то есть не должно существоватьспособа подобрать
массив данных иначе как перебором по пространствувозможных значений
2. Эта функция не должна быть известна злоумышленнику – у
него не должно быть способавычислить контрольную комбинацию f во-первых, в соответствии с общепризнанным в
криптографии принципом Кирхгоффа требование секретности функции
выработкиконтрольной комбинации следует заменить на применение открытой функции,
использующей вектор секретных параметров (ключ) – точно так же, как это делается
припостроении шифров:
во-вторых, оказывается, что в отдельных случаях
этотребование можно существенно ослабить. Дело в том, что истинная цель этого
пункта – исключить длязлоумышленника возможность отправить ложное сообщение
= (a) с помощью
использованного выше требования секретности функции вычисления контрольной
комбинации или зависимости ее от вектора секретныхпараметров (ключа); (b)
с помощью организации такого протокола использования средств защиты, который бы
исключал возможность подобного навязывания ложных данных. Очевидно, что
возможность (b) может быть реализована только если контрольная комбинация
передается или хранится отдельно отзащищаемых данных. Несмотря на кажущуюся
экзотичность, такая возможность встречается достаточно часто, речь оней
впереди. Рассмотрим некоторые хорошо известные способы вычисления
контрольной комбинации и оценим возможность ихиспользования в рассматриваемой
системе имитозащиты данных. Простейшим примером такой комбинацииявляется
контрольная сумма блоков сообщения, взятая по модулю некоторого числа, обычно
берут два в степени размера блока: m 2 Однако такое
преобразование не соответствует обоим вышеизложенным требованиям к функции
вычисления контрольнойкомбинации и поэтому непригодно для использования в схеме
имитозащиты: во-первых, и это самое главное – оно не исключает
возможность подбора данных под заданнуюконтрольную комбинацию. Действительно,
пусть отправитель информации передал по ненадежному каналу сообщение
для него,вычисленную по
приведенной выше формуле. В этом случае все, что потребуется злоумышленнику для
навязыванияполучателю произвольно взятого ложного массива данных
' ' Все
блоки ложного сообщения, кроме одного, не обязательно последнего, злоумышленник
может установить произвольными. во-вторых, рассмотренное
преобразование не является криптографическим, и длязлоумышленника не составит
труда изготовить контрольную комбинацию для произвольного выбранного им
сообщения, что позволяет ему успешно выдать его заподлинное – если контрольная
комбинация хранится или передается вместе с защищаемым массивом
данных. В настоящее время известны два подхода к
решению задачи защиты данных от несанкционированного изменения,базирующихся на
двух изложенных выше подходах к выработке контрольной комбинации: . Этот подход заключается в том, что
контрольная комбинация вычисляется с использованием секретного ключа с помощью
некоторогоблочного шифра. Важно, что на основе любого такого шифра можно
создать алгоритм вычисления иногда не вполне корректно называется
криптографической контрольной суммой, или, что более точно,
криптографическойконтрольной комбинацией. Данный подход к аутентификации данных
общепризнан и закреплен практически во всех криптографических стандартах -
имитовставка, формируемая согласно ГОСТ 28147-89 является типичным образцом
кода обнаружения манипуляций для блока данныхиспользуется так называемая необратимая функция
сжатия информации, в литературе также называемая односторонней функцией,
функцией одностороннего сжатия (преобразования)информации, криптографической
хэш–функцией, или просто хэш–функцией. Понятно, что ее необратимость должна
носитьвычислительный характер: ) легкоосуществимо
вычислительно; )неосуществимо
вычислительно, то есть не может быть выполнено более эффективным путем, чем
перебором по множеству возможных значений принимают в
качестве аргумента блок данных произвольногоразмера и выдают в качестве
результата блок данных фиксированного размера. Таблица 1.
Сравнительные характеристики подходов к решению задачи контроля неизменности
массивов данных.
Криптографическое
пре­образование (функция зашифрования) Возможность для
третьей стороны вычислить кон­трольную комбинацию Злоумышленник не может вычислить контрольную комбинацию, если
ему не известен секретный ключ Злоумышленник
может вычислить контрольную комбинацию для произ­вольного блока данных
Хранение и передача кон­трольной комбинации
Контрольная комбинация может храниться и пере­даваться вместе с защища­емым
массивомданных Контрольная комбина­ция
должна храниться и передаваться отдельно от защищаемого массива данных Требует
предварительного распределения ключей между участниками ин­формационного
обмена 6. Защита от несанкциони­рованных изменений дан­ных при
их передаче Разовая передача мас­сивов
данных, контроль неизменности файлов данных и программ требует
для вычисления контрольной комбинации секретного ключа, для второго этоне
нужно. Потенциальный злоумышленник не сможет вычислить , так
как для этого не требуется никаких секретных данных, поэтому требуется защищенный канал. Казалось бы, преимущества первого
подхода настолько очевидны, что второй подход не сможет найти себеприменения.
Однако это не так – использование требует, чтобы предварительно между
участниками информационного обмена были распределеныключи. Если же этого не
произошло, для его реализации необходим специальный канал, обеспечивающий
передаваемой информации, по которому
параллельно с передачей данных по незащищенному каналу будут передаваться
ключи. Для передачи же передаваемых данных, требование секретности отсутствует, и это
делает данный метод предпочтительным при одноразовой передаче данных: основная
информацияпередается по обычному незащищенному каналу, а сообщается
отправителем получателю по каналу, который может прослушиваться но не может быть
использовандля навязывания ложных данных – например, голосом по телефону – если
участники обмена лично знакомы и хорошо знают голоса друг друга. Кроме того,
подход на основе выработки более прост и удобендля систем, где
создание и использование информационных массивов разделены во времени, но не в
пространстве, то есть для контроля целостности информации – например, для контроля неизменности программ и
данных в компьютерных системах. При этом контрольная комбинация ( Оба подхода допускают возможность реализации
на основе любого классического блочного шифра. При этом надежность полученной
системыимитозащиты, конечно при условии ее корректной реализации, будет
определяться стойкостью использованного блочного шифра – это утверждение
исключительно легкодоказывается. В двух последующих разделах будут рассмотрены
оба подхода к контролю неизменности массивов данных. Выработка кода аутентификации сообщений с использованием
процедуры криптографического преобразования данныхофициально или полуофициально
закреплена во многих стандартах на алгоритмы шифрования. Так, например, в
различныхкомментариях к стандарту шифрования США рекомендуется использовать DES
для выработки контрольнойкомбинации [5]. Российский стандарт шифрования
ГОСТ28147‑89 [6] явным образом предусматривает режим выработки
имитовставки, которая является не чем иным, какобразцом
для выработки кода аутентификации весьмапроста: все исходное сообщение
разбивается на блоки, затем последовательно для каждого блока находится
результат преобразования по алгоритму побитовой
суммы блока по модулю 2 срезультатом выполнения предыдущего шага. Таким
образом, получаем следующее уравнение для выработки
контрольнойкомбинации: 1 Å Шаг 0. Входные данные – массив данных блоковфиксированного размера, равного размеру блока данных
использованного шифра (для большинства наиболее известных шифров – 64 бита):
). Последний блок данных
каким-либо способом дополняется до полного
блока данных, еслиимеет меньший размер. Следующий шаг алгоритма 2 выполняются
последовательного для каждого блока исходных данныхв порядке их
следования c текущим значением
подвергается преобразованию поалгоритму
зашифрования, результат становится новым текущим значением Рис. 1. Алгоритм
выработки кода аутентификации для массива данных. для
входного массива данных – являетсяпоследнее текущее значение K 1.
Преобразование данных должно использовать в ка­честве параметра секретный ключ
2. Преобразование данных должно быть криптографи­чески стойким, то
есть не должно существовать иной возможности определить входной блокалгоритма
при известном выходном и неизвестном ключе, или определить ключ при известных
входном и выходном блоках иначе как перебором по возможным значениямвходного
блока и ключа в первом и во втором случаях соответственно. предполагается использовать для выработки кода
аутентификации,выполнение третьего свойства не требуется, так как при этом
преобразование всегда выполняется в одну сторону. Кроме того криптостойкость
алгоритма преобразования может быть несколько ниже, чем при шифровании, и это не
приведет к снижению надежности всейсхемы. Действительно, при выработке
,который является функцией сразу всех блоков исходного текста, а при
зашифровании в его распоряжении есть набор блоков шифротекста, каждый изкоторых
зависит только от одного блока исходного текста. Очевидно, в первом случае его
задачасущественно сложнее. Именно по этой причине в ГОСТе 28147–89 для
выработки имитовставки используется упрощенный16-раундовый цикл преобразования,
тогда как для шифрования – полный 32-раундовый. Подход к выработке контрольной комбинации массива данных
с помощью вычислительно необратимых функций получилразвитие только в последнее
время в связи с появлением практических схем цифровой подписи, так как по своей
сути он является способом вычисленияхэш-функции, которая используется во всех
схемах цифровой подписи. Существует большое количество возможных подходов
к построению вычислительно необратимых функций, практическивсегда самым трудным
является обоснование свойства необратимости предложенной функции. Однако есть
класс способов,где такое свойство не нуждается в доказательстве, оно просто
следует из характеристик примененного метода – это построение функций
одностороннегопреобразования на основе классических блочных шифров. Данный
подход известен достаточно давно и изложен в ряде работ,из русскоязычных отметим
[7], в его основе лежит тот факт, что уравнение зашифрования блока данных по
циклу простой замены
X не может быть определен иначе как перебором по
множествувозможных значений. Алгоритм выработки контрольной комбинации для
массива данных разбивается на блоки фиксированного размера,равного размеру
ключа используемого
шифра: m . при необходимости
последний (неполный) блок дополняется каким-либо образом до блокаполного
размера; ( –
1 – начальное заполнение алгоритма – может выбираться
произвольно, обычно полагают ) под заданную
контрольную комбинацию эквивалентна следующей системе уравнений
подбора ключа для заданных входного и выходного блоков
данныхкриптоалгоритма: E –
1 ,кроме одного, могут быть выбраны
произвольными – это определит, все значения ,
и лишь один,любой из них, должен быть определен решением соответствующего
уравнения
. Так как данная задача
вычислительнонеразрешима в силу использования криптостойкого алгоритма
шифрования, предложенная схема вычисления Однако данная схема не
учитывает проблему побочных ключей шифра, которая заключается в следующем: может
существоватьнесколько ключей, с использованием которых при зашифровании
одинаковые блоки открытого текста переводятся в одинаковые блоки
шифротекста: ) при некоторых
Один из этих ключей
– тот, на котором проводилось зашифрование – «истинный», а другой – «побочный».
Таким образом, побочным ключом длянекоторого блока данных , который дает точно такой же результат зашифрования
блока ). Ясно, что для различных блоков исходного массива данныхпобочные
ключи также в общем случае различны – вероятность встретить пару ключей,
переводящих одновременно несколько пар одинаковых блоков открытыхтекстов в пары
одинаковых блоков шифротекстов стремительно убывает с ростом числа этих пар.
Поэтому обнаружениепобочного ключа криптоаналитиком при дешифровании сообщения
не является его особым успехом, так как с вероятностью, незначительно
отличающейся от 1, наэтом найденном ключе он не сможет правильно расшифровать
никаких других блоков шифротекста. Совершенно иное дело валгоритме выработки
– здесь обнаружение побочного ключа означает, что злоумышленник
подобрал такой ложный, то естьотсутствующий всообщении блок данных,
использование которого приводит к истинному Для того, чтобы уменьшить вероятность навязывания ложных данных
через нахождение побочных ключей, в шагахкриптографического преобразования
применяются не сами блоки исходного сообщения, а результат их расширения по
некоторой схеме. Под схемой расширениея здесь понимается процедура построения
блоков данных большего размера из блоков данных меньшего размера. Примером
может служить, например, функциярасширения, в которой выходной блок строится из
байтов (или 2-,4-,... и т.д. -байтовых слов) исходного блока, перечисляемых в
различном порядке. Указанное расширение стоит применять, еслиразмер ключа
использованного шифра в несколько раз превышает размер его блока данных. Так,
для алгоритма DES, с размером блока данных64 бита и ключа 56 бит в расширении
нет необходимости. Если в схеме используется алгоритмГОСТ28147–89 с размером
блока 64 бита и размером ключа 256 бит, стоит использовать 64- или 128-битные
блоки исходного текста и расширять их доразмеров 256 бит. Пример функции
расширения 128-битового блока в 256-битовый может быть, например,
следующим: B B B , , 10 6 2 14 Рис. 2. Алгоритм
выработки кода обнаружения манипу- ляций для массива данных. блоков фиксированного размера,
непревышающего размер ключа использованного криптоалгоритма и, как правило,
делящего его нацело:
). Последний блок данных
каким-либо способом дополняется до полного
блока данных, еслиимеет меньший размер. Последующие шаги 2 и 3 алгоритма выполняются последовательного
для каждого блока исходныхданных в порядке их следования
данных с помощью функции расширения на
ключе, полученном на шаге 2,результат становится новым текущим значением
для всего
входного массиваданных) является последнее текущее значение Рассмотренный алгоритм также может быть использован
для выработки хэш–кода в схемах цифровой подписи. На первый взгляд, сама эта идея может показаться абсурдом.
Действительно, общеизвестно, что так называемая «современная», она
жедвухключевая криптография возникла и стала быстро развиваться в последние
десятилетия именно потому, что ряд новых криптографических протоколов типа
протоколацифровой подписи, в которых возникла острая необходимость в связи с
проникновением электронных технологий в новые сферы, не удалось реализовать
набазе традиционных криптоалгоритмов, широко известных и хорошо изученных к тому
времени. Тем не менее, этовозможно. И первые, кто обратил внимание на такую
возможность, были … родоначальники криптографии с открытымключом У.Диффи
(W.Diffie) и М.Е.Хеллман (M.E.Hellman). В своей работе [8] они опубликовали
описание подхода, позволяющего выполнятьпроцедуру цифровой подписи одного бита с
помощью блочного шифра. Прежде чем изложить эту изящную идею,сделаем несколько
замечаний о сути и реализациях цифровой подписи. Итак, схема
цифровой подписи или электронно-цифровой подписи – это набор алгоритмов и
,
позволяющих построить информационное взаимодействие между двумя и
болееучастниками таким образом, чтобы факт авторства переданного массива данных,
«подписанного» одним из участников, мог быть надежно подтвержден илиопровергнут
третьей стороной, «независимым арбитражем». Подобная схема необходима для всех
системэлектронной обработки данных, где нет полного взаимного доверия между
участниками информационного процесса, прежде всего это касается
финансовойсферы. Любая схема цифровой подписи предполагает добавление к
«подписываемому» массиву данных дополнительного кода– собственно «цифровой
подписи», выработать который может только автор сообщения, обладающий секретным
ключом подписи, а все остальные могут лишьпроверить соответствие этой «подписи»
подписанным данным. Поэтому каждая схема должна предусмотреть,как минимум,
определение трех следующих алгоритмов: и проверки подписи S S – ключ проверки
подписи, он не является секретным и доступен каждому, ктодолжен иметь
возможность проверять авторство сообщений. где проверки подписи с использованием
ключа проверки подписи , выдающий вкачестве
результата булево значение – подтверждается или не подтверждается авторство
сообщения: {0,1}. На практике логический
результат всегда получают как результат сравнения двух чисел, или кодов, или
блоков данных – речь об одном и том же. Практически во всех известных
схемахцифровой подписи это сравнение производят следующим
образом: с использованием подписанного сообщения и цифровой
подписи: сравнивают контрольную комбинацию , если они совпадают, то подпись
признается верной, а данные – подлинными, в противном случае данныесчитаются
ложными. Собственно
говоря, указанных трех алгоритмов достаточно для реализации схемы цифровой
подписи, однако на практике в схемы добавляют еще один алгоритм– функцию
выработки хэш–блока для подписываемого массива данных .
Большинство криптографических алгоритмовоперируют блоками данных фиксированного
размера, а массивы большего размера обрабатывают по частям, что необходимо для
обеспечения эффективности инадежности этих схем. Если такой же подход
использовался при выработке цифровой подписи, блоки массивов
информацииподписывались бы отдельно друг от друга, и размер подписи оказался бы
сравнимым с размером подписываемого массива данных, что по вполне понятным
причинам неудобно. Поэтому в практических схемах ЭЦП подписывается не само
сообщение, а его хэш–код, то есть результатвычисления функции необратимого
сжатия для этого массива, который имеет фиксированный размер. Таким образом,
всхему ЭЦП добавляется четвертый алгоритм: Алгоритм
вычисления хэш–функции и прочие алгоритмы схемы не зависят друг от друга
исогласуются только по размеру блоков, которыми они оперируют. Это позволяет
при необходимости менять всхеме подписи способ вычисления хэш–
значений. никто, кроме лица, обладающего
секретным ключом подписи Поскольку сторона, проверяющая подпись,
обладает открытым ключом проверки подписи, из
указанного свойстваследует, что не должно существовать вычислительно
эффективного алгоритма вычисления секретного ключа никто, включая лицо,
обладающее ключом подписи, не в состоянии построить
сообщение При предложении какой-либо схемы подписи оба
эти свойства необходимо доказывать, что делается обычнодоказательством
равносильности соответствующей задачи вскрытия схемы какой-либо другой, о
которой известно, что она вычислительно неразрешима. Практически все современные
алгоритмы цифровой подписи и прочие схемы «современной криптографии» основаны на
так называемых «сложных математическихзадачах» типа факторизации больших чисел
или логарифмирования в дискретных полях. Однако доказательствоневозможности
эффективного вычислительного решения этих задач отсутствует, и нет никаких
гарантий, что они не будут решены в ближайшем будущем, асоответствующие схемы
взломаны – как это произошло с «ранцевой» схемой цифровой подписи [9]. Более
того, с бурным прогрессом средств вычислительных техники«границы надежности»
методов отодвигаются в область все больших размеров блока. Всего пару
десятилетийназад, назаре криптографии с открытым ключом считалось, что для
реализации схемы подписи RSA достаточно 128- илидаже битовых чисел. Сейчас эта
граница отодвинута до 1024-битовых чисел – практически на порядок, – и это
далеко ещене предел. Надо ли объяснять, что с каждой такой «подвижкой»
приходится перепроектировать аппаратуру и переписыватьпрограммы, реализующие
схему. Ничего подобного нет в области классических блочных шифров, если не
считать изначальноущербного и непонятного решения комитета по стандартам США
ограничить размер ключа алгоритма DES 56-юбитами, тогда как еще во время
обсуждения алгоритма предлагалось использовать ключ большего размера [5]. Схемы
подписи, основанные на классических блочных шифрах,свободны от указанных
недостатков: Надо ли говорить, что
классические методы шифрования изучены гораздо больше, а их надежность
обоснована неизмеримо лучше, чем надежность методов«современной
криптографии». во-вторых, даже если стойкость использованного в
схеме подписи шифра окажетсянедостаточной в свете прогресса вычислительной
техники, его легко можно будет заменить на другой, более устойчивый, с тем же
размером блока данных и ключа,без необходимости менять основные характеристики
всей схемы – это потребует только минимальной модификации программного
обеспечения; Итак, вернемся к схеме Диффи и Хеллмана подписи одного
бита сообщения с помощью алгоритма, базирующегося налюбом классическом блочном
шифре. Предположим, в нашем распоряжении есть алгоритм зашифрования
и использующий ключ
размером . Структура ключевой информации в
схемеследующая: =( Таким образом, размер ключа подписи равен
удвоенному размеру ключа использованного блочного
шифра: ключ проверки вычисляется как пара блоков криптоалгоритма
по следующим
уравнениям: C 1 где являющиеся параметром схемы блоки данных
Таким образом, размер ключа проверки
подписи равен удвоенному размеру блока использованного блочного
шифра: Алгоритмы схемы цифровой подписи Диффи и Хеллмана следующие: Ключ проверки подписи вычисляем как
результат двух циклов зашифрования по алгоритму
)=( X {0,1})
заключается просто ввыборе соответствующей половины из пары, составляющей
секретный ключ
подписи: V X t – цифровая
подпись бита, t Не правда ли,
все три алгоритма этой схемы изумительно простоты в сравнении со схемами RSA и
эль-Гамаля?! Покажем, что данная схема работоспособна,для чего проверим
выполнение необходимых свойств схемы цифровой подписи: Действительно, для выполнения этого злоумышленнику потребовалось
бы решить уравнение
относительно , эта задача эквивалентна
определению ключа для известных блока шифротекста и соответствующего ему
открытого текста, чтовычислительно невозможно в силу использования стойкого
шифра. ,
которое подходило бы под заданную подпись очевидна,потому что число
возможныхзначений бита всего два и вероятность выполнения двух следующих условий
одновременно пренебрежимо мала в просто в силуиспользования криптостойкого
алгоритма: Таким образом,
предложенная Диффи и Хеллманом схема цифровой подписи на основе классического
блочного шифракриптостойка настолько, насколько стоек использованный шифр, и при
этом весьма проста. Теперь самое время рассказать,почему же эта замечательная
схема не нашла сколько-нибудь значительного практического применения. Все дело
в том, что у нееесть два недостатка. Всего два, но каких! Первый
недостаток сразу бросается в глаза – он заключается в том, что данная схема
позволяет подписатьлишь один бит информации. В блоке большего размера придется
отдельно подписывать каждый бит, поэтому даже сучетом хеширования сообщения все
компоненты подписи – секретный ключ, проверочная комбинация и собственно подпись
получаются довольно большими поразмеру и более чем на два порядка превосходят
размер подписываемого блока. Предположим, что в схемеиспользуется
криптографический алгоритм n . Тогда размеры основных рабочих блоков будут
следующими: K H × Если, например, в качестве основы в
данной схеме будет использован шифр ГОСТ28147–89 с размеромблока
=256
бит, и для выработки хэш–блоков будет использован тот же самыйшифр в режиме
выработки MDC, что даст размер хэш–блока размер ключа проверки
подписи: n × Sg бит = 2048
байт. Второй недостаток
данной схемы, быть может, менее заметен, но зато гораздо более серьезен. Дело в
том, что пара ключей подписи и проверки в ней одноразовая! Действительно,
выполнение процедуры подписибита сообщения приводит к раскрытию половины
секретного ключа, после чего он уже не является полностью секретным и не может
быть использован повторно. Поэтому для каждого подписываемого
сообщениянеобходим свой комплект ключей подписи и проверки. Это исключает
возможность практического использованиярассмотренной схемы Диффи–Хеллмана в
первоначально предложенном варианте в реальных системах ЭЦП. В силу
указанных двух недостатков предложенная схемы до сравнительно недавнего
временирассматривалась лишь как курьезная теоретическая возможность, никто
всерьез не рассматривал возможность ее практического использования. Однако
несколько лет назад в работе [7] былапредложена модификация схемы Диффи–
Хеллмана, фактически устраняющая ее недостатки. В настоящей работе даннаясхема
не рассматривается во всех деталях, здесь изложены только основные принципы
подхода к модификации исходной схемы Диффи–Хеллмана и описанияработающих
алгоритмов. В данном разделе изложены идеи авторов
[7], позволившие перейти от подписи отдельных битов в исходной схемы Диффи–
Хеллмана к подписи битовыхгрупп. Центральным в этом подходе является алгоритм
«односторонней криптографической прокрутки», который внекотором роде может
служить аналогом операции возведения в степень. Как обычно, предположим, что в
нашемраспоряжении имеется криптографический алгоритм
K –
битовых блоков данных в K размером 0) с помощью следующей
рекурсивной формулы: X -битовый блок
данных,являющийся параметром процедуры прокрутки. По своей идее функция
односторонней прокрутки чрезвычайно проста, надовсего лишь нужное количество
раз ( до размера ключа
использованного криптоалгоритма ( ,
результат зашифрования занести на место исходногоблока данных
( ) обладает двумя крайне важными для
нассвойствами: )). k ) для любого
– если бы это было возможно, в нашем
распоряжении был бы способ определить ключ шифрования по известному входному и
выходному блоку криптоалгоритма Теперь покажем, как указанную
операцию можно использовать для подписи группы битов: изложим описание схемы
подписи блока
битов, по точно такой же схеме, по которой в предыдущем разделеописывается схема
подписи одного бита. K Таким образом, размер ключа подписи равен
удвоенному размеру блока данных использованного блочного
шифра: ключ
проверки вычисляется как пара блоков, имеющих размер блоков
данныхиспользованного криптоалгоритма по следующим
формулам: K – В этих
вычислениях также используются несекретные блоки данных
, являющиеся
параметрами функции«односторонней прокрутки», они обязательно должны быть
различными. Таким образом, размер ключа проверки подписи равен удвоенному
размеру блока данных использованного блочного
шифра: Алгоритмы
модифицированной авторами [7] схемы цифровой подписи Диффи и Хеллмана
следующие: Берем случайный блок данных подходящего размера 2 , Ключ проверки подписи вычисляем как
результат «односторонней прокрутки» двух соответствующих половин секретного
ключа подписи на число, равноемаксимальному возможному числовому значению
выработки цифровойподписи для
, ограниченного, по
своему значению, условием 0 –1,заключается в
выполнении «односторонней прокрутки» обеих половин ключа подписи
S )=
( n , которые, очевидно, должны выполняться дляподлинного блока данных
s R –1–
2 n + . Покажем, что для данной схемы выполняются необходимые условия
работоспособности схемы подписи: ,
его подпись
C ). Пользуясь этой информацией, злоумышленникпытается найти правильную
подпись
n . Для этого ему надо решить следующие уравнения
относительно n
0 В распоряжении злоумышленника есть блок
данных ), и это
позволяет ему вычислить одно иззначений
(a) если K (b) если
n ( k ( , что является
вычислительноневозможным. Таким образом, злоумышленник не может подделать
подпись под сообщением, если не располагаетсекретным ключом подписи. , отличный от блока , но обладающий такой
же цифровой подписью, чрезвычайномала и может не приниматься во внимание.
Действительно, пусть цифровая подпись блоков n ' n s T T' £ T R T 2 Последнее условие
означает, что прокручивание двух различных блоков данных одно и то же число раз
оставляет их значения неизменными. Вероятность такого события чрезвычайно малаи
может не приниматься во внимание. Таким образом рассмотренная модификация
схемы Диффи–Хеллмана делает возможным подпись не одного бита, а целой
битовойгруппы. Это позволяет в несколько раз уменьшить размер подписи и ключей
подписи/проверки данной схемы. Однако надо понимать, что увеличение
размераподписываемых битовых групп приводит к экспоненциальному росту объема
необходимых вычислений и начиная с некоторого значения делает работу
схемынедопустимо неэффективной. Граница «разумного размера» подписываемой
группы находится где-то рядом с восемьюбитами, и блоки большего размера все
равно необходимо подписывать «по частям». Теперь найдем размеры ключей и
подписи, а также объем необходимых для реализации схемы вычислений. Пусть
размер хэш–блока и блока используемогошифра одинаковы и равны .
Предположим также, что если последняя группасодержит меньшее число битов,
обрабатывается она все равно как полная -битовая
группа. Тогда размеры ключей подписи/проверки исамой подписи совпадают и равны
следующей величине: где
до ближайшего целого в сторону
возрастания. Число операций шифрования
),требуемое для реализации процедур
схемы, определяются нижеследующими соотношениями: при
подписи и проверке подписи оно вдвое меньше: В
следующей ниже таблице 2 приведены рассчитанные значения размеров ключей и
подписи, и числа требуемыхопераций шифрования в зависимости от размера
подписываемых битовых групп при условии использования блочного криптоалгоритма с
размером блока Размер подписи и
ключей, байт
6 8
10 12 14 5 16 1. Нет
необходимости хранить ключи подписи отдельных битовых групп, их можно
динамически вырабатывать в нужный момент времени с помощьюгенератора
криптостойкой гаммы. Ключом подписи в этом случае будет являться обычный ключ
использованного в схемеподписи блочного шифра. Для ГОСТа 28147–89 этот размер
равен 256 битам, поэтому если схема подписи будетпостроена на ГОСТе, размер
ключа подписи будет равен тем же 256 битам. 2. Точно так же, нет
необходимости хранить массив ключей проверки подписи отдельных битовых групп
блока, достаточно хранить егохэш-комбинацию. При этом алгоритм выработки ключа
подписи и алгоритм проверки подписи будут дополнены еще однимшагом – вычислением
хэш-кода для массива проверочных комбинаций отдельных битовых групп. Таким
образом, проблема размера ключей и подписи полностью решена, однако, главный
недостаток схемы –одноразовость ключей – не преодолен, поскольку это невозможно
в рамках подхода Диффи–Хеллмана. Для практическогоиспользования такой схемы,
рассчитанной на подпись ключей проверки, что достаточно неудобно. Однако эта проблема
может быть решена вточности так же, как была решена проблема ключей для
множественных битовых групп – генерацией ключей подписи для
всех сообщений из одного мастер-ключа и свертывание всех
проверочных комбинаций в одну контрольную комбинацию с помощью алгоритма
выработкихэш-кода. Такой подход решил бы проблему размера хранимых ключей,
однако привел бы к необходимости вместеподписью каждого сообщения высылать
недостающие –1 проверочных комбинаций, необходимых
длявычисления хэш-кода от массива всех контрольных комбинаций отдельных
сообщений. Ясно, что такой вариант необладает преимуществами по сравнению с
исходным. Однако в [7] был предложен механизм, позволяющий значительно снизить
остроту проблемы. Его основная идея – вычислять контрольную комбинацию
(ключпроверки подписи) не как хэш от линейного массива проверочных комбинаций
всех сообщений, а попарно – с помощьюбинарного дерева. На каждом уровне
проверочная комбинация вычисляется как хэш от двух проверочных
комбинациймладшего уровня. Чем выше уровень комбинации, тем больше отдельных
ключей проверки в ней «учтено». Предположим, что наша схема рассчитанана
2 i -того уровня. Если нумерацию комбинаций и уровней
начинать с нуля, то справедливо следующееусловие: 0 -тая проверочная комбинация × -тогоуровня – одна, она и является контрольной
комбинацией всех 2 сообщений, на которые рассчитана
схема. На каждом уровне, начиная с первого,проверочные комбинации
рассчитываются по следующей
формуле: При использовании указанного подхода вместе с подписью
сообщения необходи­мо передать не контрольных комбинаций. Передаваться
должны комбинации, соответствующие смежным ветвям дерева на пути от конечной
вершины, соответствующей номеру использованной подписи, ккорню.
(1
0 C
) Рис. 3.
Схема попарного хеширования проверочных комбинаций при выработке
общего ключа проверки подписи. Схема попарного хеширова­ния проверочных комбинаций при
выработке общего ключа проверки подписи на восемь сообщенийпри­ведена на рисунке
3. Так, в схеме на 8 сообщений при передаче сообще­ния №5 (контрольная
комбинация выделенарамкой) вместе с его под­писью должны быть переданы
кон­трольная комбинация сообщения №4
( (1 ),все они выделе­ны
на рисунке другим фоном. При проверке подписи значение
будет вычислено из
сообщения и его подписи,а итоговая контрольная комбинация, подлежащая сравнению
с эталонной, по следующей
формуле: C Номера контрольных комбинаций каждого уровня,
которые должны быть переданы вместе с подписью сообщения сномером
),
вычисляются по следующей формуле: =0,..., 1 означаетчисло, получающееся в результате
инвертирования младшего бита в числе Необходимость
отправлять вместе с подписью сообщения дополнительную информацию, нужную для
проверки подписи, насамом деле не очень обременительна. Действительно, в
системе на 1024=2 подписей вместе с сообщением и его подписью
необходимодополнительно передавать 10 контрольных комбинаций, а в системе на
1048576=2 подписей – всего 20 комбинаций. Однако при большом
числе подписей, накоторые рассчитана система, возникает другая проблема –
хранение дополнительных комбинаций, если они рассчитаны предварительно, или их
выработка в моментформирования подписи. Дополнительные контрольные
комбинации, которые передаются вместе с подписью и используются при еепроверке,
вырабатываются при формировании ключа проверки по ключу подписи и могут
храниться в системе и использоваться в момент формирования подписи,
либовычисляться заново в этот момент. Первый подход предполагает затраты
дисковой памяти, так как необходимохранить
2 –2 хэш-комбинаций всех уровней, а
второй требует большого объема вычислений в момент формированияподписи. Можно
использовать и компромиссный подход – хранить все хэш-комбинации начиная с
некоторогоуровня , а комбинации меньшего
уровня вычислять при формировании подписи. В рассмотренной выше схеме подписи на
8 сообщений можно хранить все 14 контрольных комбинаций, используемых при
проверки (всего их 15, но самаяверхняя не используется), тогда при проверке
подписи их не надо будет вычислять заново. Можно хранить 6 комбинаций начиная
с уровня 1 ( C ), тогда при проверкеподписи
сообщения №5 необходимо будет заново вычислить комбинацию
, ) взять из «хранилища», и т.д.. Указанный подход
позволяет достичь компромисса между быстродействием и требованиям к занимаемому
количеству дискового пространства. Надо отметить, что отказ от
хранениякомбинаций одного уровня приводит к экономии памяти и росту
вычислительных затрат примерно вдвое, то есть зависимость носит экспоненциальный
характер. Ниже приведены числовые параметры и используемые
вспомогательные алгоритмы рассматриваемой схемыцифровой
подписи: и , -битового вектора начальных параметров
(синхропосылки) , представляет собой рекуррентный алгоритмвыработки
– набор
функций расширения (типично –
для кратных – фактор количества
подписей (системарассчитана на – число битов в
подписываемых битовых группах, тогда число групп равно Ниже изложены алгоритмы схемы подписи: (a)
Формирования ключа подписи. -битовый блок данных спомощью аппаратного генератора
случайных кодов или криптостойкого программного генератора псевдослучайных кодов
(...)
. Битыключа должны быть независимы и с равной вероятностью принимать оба
возможных значения – 0 и 1. (b) Формирования ключа проверки подписи.
Схема алгоритма формирования ключа проверки подписи изображена нарисунке
4. S -битовых групп в
подписываемыхблоках. Следующие шаги 2–9 выполняются столько раз, на
сколько подписей рассчитана схема, т.е. для каждого номера подписи
системы. Рис. 4. Алгоритм
выработки ключа проверки подписи. бит с помощью
генератора криптостойкой гаммы на ключе nn X затем для каждого
элемента этого массива вычисляется результат его «односторонней прокрутки»
2 вычисляется и записывается в блок данных младших бит номера
подписи – единицы, переход к шагу 6, иначе – выполнение циклапрекращается и
управление передается на шаг 7. l , и для полученного
массива вычисляется хэш–значение, которое становится новойтекущей хэш–
комбинацией.
уровня и будет являться результатом работы
алгоритма – ключом проверки подписи. Кроме того, в ходе выполненияалгоритма
будут последовательно выработаны хэш-комбинации всех уровней от 0 до
, 0 £ , которые
могут храниться в системе ииспользоваться при формировании подписи. Схема алгоритма
подписи хэш-блока массива данных изображена на рисунке 5. -битовый хэш-блокмассива
данных; – число Шаг 2. Выработать блок
гаммы размером 2 с начальным
заполнением затем для каждой
составляющей каждого элемента этого массива, соответствую­щего определенной
битовой группе хэш-блока, нужное число развыполняется процедура «односторонней
прокрутки». Рис. 5. Алгоритм
подписи хэш-кода сообщения. Шаг 4. К
индивидуальной проверочной комбинации последовательно добавляется попарные хэш-
комбинации, по одной комбинации с каждого уровняот 0 до ), общей для всех сообщений. Номер добавляемой комбинации
каждого уровня определяется отбрасыванием количества последних бит в
номереподписи, равного номеру уровня, и в инвертировании младшего бита
полученного числа. D ),необходимых для выполнения процедуры
проверки подписи и используемых при вычислении попарных проверочных
комбинаций. Схема алгоритма проверки подписи хэш-блока массива данных
изображена на рисунке 6. Рис. 6. Алгоритм
проверки подписи. – подпись хэш–
блока, состоит из массива -битовых элементов подписи битовых
групп, и массива – порядковый номер
подписи. –битовых групп в подписываемомхэш–блоке, имеющем
размер Шаг 2. В соответствии с правилами проверки
подписи производится «односторонняя прокрутка» элементов подписи битовых
групп,содержащихся в массиве вычисляется и записывается в
-той подписи. -того бита (нумерация с 0 со стороны младшего бита) номера
подписи. Шаг 5. Если значение бита равно 0, то к коду справа добавляется
очередная хэш-комбинация, содержащаяся в подписи, для полученногоблока
вычисляется хэш-функция, которая замещает предыдущее содержимое
Шаг 6. Если значение бита равно 1, то выполняется то же
самое, только хэш-комбинация добавляется к коду слева. содержится код, который должен быть
сравнен с ключом проверки подписи, если коды одинаковы,подпись считается верной,
иначе – неверной. Стойкость предложенной схемы
цифровой подписи определяется стойкостью использованного блочного шифра,
аустойчивость ко вскрытию переборными методами –наименьшим из чисел
. Ключевой комплект в данной схеме
рассчитанна определенное число подписей, что, с одной стороны, может
восприниматься как недостаток схемы, но с другой позволяет лицензировать
количество подписей,облегчая тем самым ее коммерческое использование.
Рассматриваемая схема подписи не соответствует стандарту Россиина цифровую
подпись, а алгоритм вычисленияMDC – стандарту на выработку хэш-кода массива
данных, что делаетневозможным аттестацию в соответствующих организациях
устройств и программных продуктов, их реализующих. Однакоизложенные схемы
вполне могут быть использованы там, где спорные вопросы не могут быть вынесены
на уровень арбитражных и судебных разбирательств, например,в системах
автоматизации внутреннего документооборота учреждений, особенно если электронный
документооборот не заменяет бумажный, а существует в дополнение кнему для
ускорения прохождения документов. В качестве приложения к настоящей статье
приведены исходные тексты на языке ассемблера для процессоровклона Intel 8086
функции вычисления MDC для блоков данных и функции, реализующие алгоритмы
описанной схемы цифровой подписи. Функция выработкихэш-кода (MDC) написана таким
образом, что позволяет обрабатывать блоки данных по частям, то есть занесколько
вызовов. Все функции используют в качестве основы алгоритм зашифрования по
ГОСТ28147–89. Также прилагаются тексты тестовых программна языке Си для
проверки неизменности файлов на основе MDC и цифровой
подписи. 2. А.Ю.Винокуров. Еще раз про ГОСТ.,
М., Монитор.–1995.–N5. 3. А.Ю.Винокуров. Алгоритм шифрования ГОСТ 28147-
89, его использование и реализация для компьютеровплатформы Intel x86.,
Рукопись, 1997. 5. М.Э.Смид, Д.К.Бранстед. Стандарт шифрования данных: прошлое и
будущее. /пер. с англ./ М., Мир,ТИИЭР.–1988.–т.76.–N5. 6. Системы
обработки информации. Защита криптографическая. Алгоритм криптографического
преобразования ГОСТ 28147–89, М., Госстандарт, 1989. 7. Б.В.Березин,
П.В.Дорошкевич. Цифровая подпись на основе традиционной криптографии//Защита
информации, вып.2.,М.: МП Ирбис-II ,1992. 8.
W.Diffie,M.E.Hellman. New Directions in cryptography// IEEE Trans. Inform.
Theory, IT-22, vol 6 (Nov. 1976), pp. 644-654. 9. У.Диффи. Первые десять
лет криптографии с открытым ключом. /пер. с англ./ М., Мир,ТИИЭР.–1988.–т.76.–
N5. Протоколов в криптографии
называется набор правил и алгоритмов более высокого порядка,регламентирующих
использование алгоритмов низшего порядка. Его основное назначение –
гарантировать правильное использование
криптографическихалгоритмов.