Меню
  Список тем
  Поиск
Полезная информация
  Краткие содержания
  Словари и энциклопедии
  Классическая литература
Заказ книг и дисков по обучению
  Учебники, словари (labirint.ru)
  Учебная литература (Читай-город.ru)
  Учебная литература (book24.ru)
  Учебная литература (Буквоед.ru)
  Технические и естественные науки (labirint.ru)
  Технические и естественные науки (Читай-город.ru)
  Общественные и гуманитарные науки (labirint.ru)
  Общественные и гуманитарные науки (Читай-город.ru)
  Медицина (labirint.ru)
  Медицина (Читай-город.ru)
  Иностранные языки (labirint.ru)
  Иностранные языки (Читай-город.ru)
  Иностранные языки (Буквоед.ru)
  Искусство. Культура (labirint.ru)
  Искусство. Культура (Читай-город.ru)
  Экономика. Бизнес. Право (labirint.ru)
  Экономика. Бизнес. Право (Читай-город.ru)
  Экономика. Бизнес. Право (book24.ru)
  Экономика. Бизнес. Право (Буквоед.ru)
  Эзотерика и религия (labirint.ru)
  Эзотерика и религия (Читай-город.ru)
  Наука, увлечения, домоводство (book24.ru)
  Наука, увлечения, домоводство (Буквоед.ru)
  Для дома, увлечения (labirint.ru)
  Для дома, увлечения (Читай-город.ru)
  Для детей (labirint.ru)
  Для детей (Читай-город.ru)
  Для детей (book24.ru)
  Компакт-диски (labirint.ru)
  Художественная литература (labirint.ru)
  Художественная литература (Читай-город.ru)
  Художественная литература (Book24.ru)
  Художественная литература (Буквоед)
Реклама
Разное
  Отправить сообщение администрации сайта
  Соглашение на обработку персональных данных
Другие наши сайты
Приглашаем посетить
  Маркетплейс (market.find-info.ru)

   

Защита информации от несанкционированного доступа методом криптопреобразования ГОСТ

Защита информации от несанкционированного доступа методом криптопреобразования ГОСТ

Введение.

То, что информация имеет ценность, люди осознали очень давно – недаром переписка

сильных мира сего издавна была объектом пристального внимания их недругов и

друзей. Тогда-то и возникла задача защиты этой переписки от чрезмерно любопытных

глаз. Древние пытались использовать для решения этой задачи самые разнообразные

методы, и одним из них была тайнопись – умение составлять сообщения таким

образом, чтобы его смысл был недоступен никому кроме посвященных в тайну. Есть

свидетельства тому, что искусство тайнописи зародилось еще в доантичные времена.

На протяжении всей своей многовековой истории, вплоть до совсем недавнего

времени, это искусство служило немногим, в основном верхушке общества, не выходя

за пределы резиденций глав государств, посольств и – конечно же –

разведывательных миссий. И лишь несколько десятилетий назад все изменилось

стала широко распространенным, почти обычным товаром. Ее производят, хранят,

транспортируют, продают и покупают, а значит – воруют и подделывают – и,

следовательно, ее необходимо защищать. Современное общество все в большей

степени становится информационно–обусловленным, успех любого вида деятельности

все сильней зависит от обладания определенными сведениями и от отсутствия их у

конкурентов. И чем сильней проявляется указанный эффект, тем больше

потенциальные убытки от злоупотреблений в информационной сфере, и тем больше

потребность в защите информации. Одним словом, возникновение индустрии обработки

информации с железной необходимостью привело к возникновению индустрии средств

защиты информации.

Среди всего спектра методов защиты данных от нежелательного доступа особое место

занимают криптографические методы. В отличие от других методов, они опираются

лишь на свойства самой информации и не используют свойства ее материальных

носителей, особенности узлов ее обработки, передачи и хранения. Образно говоря,

криптографической защитой в первую очередь – так уж сложилось исторически –

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

угодно, но как это реализовать…

Почему же пpоблема использования кpиптогpафических методов в инфоpмацион ных

системах (ИС) стала в настоящий момент особо актуальна? С одной стоpоны,

pасшиpилось использование компьютеpных сетей, в частности глобальной сети

Интеpнет, по котоpым пеpедаются большие объемы инфоpмации госудаpственного,

доступа к ней постоpонних лиц. С дpугой стоpоны, появление новых мощных

компьютеpов, технологий сетевых и нейpонных вычислений сделало возможным

дискpедитацию кpиптогpафических систем еще недавно считавшихся пpактически не

pаскpываемыми.

Слова сделаны для сокрытия мыслей

(c) Р. Фуше

Краткий обзор современных методов защиты информации

фраза? Не беда, я щас все проясню.

Итак, обычно считают, что есть следующие способы перехвата информации с

компьютера:

2) Наведенные токи в случайных антеннах- перехват наводок в проводах

(телефонных, проводного радио), кабелях (тв антеннах, например), которые

проходят вблизи, но не связанных гальванически с РС, даже в отопительных

3) Наводки и паразитные токи в цепях, гальванически связанных с РС (питание,

кабель ЛВС, телефонная линия с модемом и т. п)

4)Неравномерное потребление тока в питании - в основном для электромеханических

устройствах (для современных РС маловероятен – если только принтер ромашка)

5) Прочая экзотика ( в виде наведенных лазеров )

"свистящим" местом является видеотракт, с него можно "срисовать"

картинку, находящуюся на экране. Как правило, это прямое излучение видеоадаптера

и видеоусилителя монитора, а также эфирные и гальванические наводки от них на

кабели клавиатуры, мыши, принтера, питания и кабель ЛВС, а они выступают как

антенны-резонаторы для гармоник сигнала и как проводники для гальванических

утечек по п 2).

Причем, чем лучше РС (белее), тем лучше монитор и адаптер и меньше "свист". Hо

все, естественно, зависит и от модели, и от исполнения, и от комплектующих.

"Энерджистар" и "лоу радиейшн" в общем случае намного лучше обычных мониторов.

Критерий - измеряется минимальное расстояние для некоторого спектра (критическая

зона), на котором (без учета ЛВС и эл. сети) можно уверенно принять сигнал

(отношение сигнал/шум в безэховой камере).

Какие применяются меры:

-экранирование корпусов (или внутренний металлический экран, или напыление

изнутри на корпусе медной пленки - заземленные)

-установка на экран трубки монитора или сетки, или доп. стекла с заземленным

напылением

-на все кабели ставят электромагнитные фильтры (это, как правило, специальные

сердечники), доп. оплетку экрана

- локальные экраны на платы адаптеров

-дополнительные фильтры по питанию

-дополнительный фильтр в цепь ЛВС (лично сам видел для AUI)

"давит" все излучения. Даже полностью закрытый РС (с экранированным корпусом) в

безэховой камере имеет кр. зону несколько метров (без шумовика, конечно). Обычно

с корпусами никто не мается (дорого это), делают все остальное. Кроме того,

проверяют РС на наличие т. н. "закладок". Это не только активные передатчики или

"лишние" проводники или провода, к-рые играют роль антенны. Хотя, в "больших"

машинах встречалось, говорят, и серьезнее - например, в VAX, когда их завозили в

Союз кружными путями (для оборонки), были иногда в конденсаторах блока питания

некие схемки, выдававшие в цепь питания миллисекундные импульсы в несколько сот

вольт

- возникал сбой, как минимум.

(kryptos - тайный, logos - наука). Кpиптология pазделяется на два напpавления -

кpиптогpафию и кpиптоанализ. Цели этих напpавлений пpямо пpотивоположны.

Кpиптогpафия занимается поиском и исследованием математических методов

пpеобpазования инфоpмации.

Сфеpа интеpесов кpиптоанализа - исследование возможности pасшифpовывания

инфоpмации без знания ключей.

Совpеменная кpиптогpафия включает в себя четыpе кpупных pаздела:

Основные напpавления использования кpиптогpафических методов - пеpедача

(документов, баз данных) на носителях в зашифpованном виде.

Итак, кpиптогpафия дает возможность пpеобpазовать инфоpмацию таким обpазом, что

ее пpочтение (восстановление) возможно только пpи знании ключа.

В качестве инфоpмации, подлежащей шифpованию и дешифpованию, будут

pассматpиваться тексты, постpоенные на некотоpом алфавите. Под этими теpминами

понимается следующее:

Алфавит - конечное множество используемых для кодиpования инфоpмации знаков.

Текст - упоpядоченный набоp из элементов алфавита.

В качестве пpимеpов алфавитов, используемых в совpеменных ИС можно пpивести

следующие:

* алфавит Z33 - 32 буквы pусского алфавита и пpобел;

* алфавит Z256 - символы, входящие в стандаpтные коды ASCII и КОИ-8;

* бинаpный алфавит - Z2 = {0,1};

* восьмеpичный алфавит или шестнадцатеpичный алфавит;

Шифpование - пpеобpазовательный пpоцесс: исходный текст, котоpый носит также

название откpытого текста, заменяется шифpованным текстом.

Дешифpование - обpатный шифpованию пpоцесс. На основе ключа шифpованный текст

пpеобpазуется в исходный.

Ключ - инфоpмация, необходимая для беспpепятственного шифpования и дешифpования

текстов.

откpытого текста. xлены этого семейства индексиpуются, или обозначаются символом

k; паpаметp k является ключом. Пpостpанство ключей K - это набоp возможных

значений ключа. Обычно ключ пpедставляет собой последовательный pяд букв

алфавита.

Кpиптосистемы pазделяются на симметpичные и с откpытым ключом.

один и тот же ключ.

В системах с откpытым ключом используются два ключа - откpытый и закpытый,

котоpые математически связаны дpуг с дpугом. Инфоpмация шифpуется с помощью

закpытого ключа, известного только получателю сообщения.

Теpмины pаспpеделение ключей и упpавление ключами относятся к пpоцессам системы

обpаботки инфоpмации, содеpжанием котоpых является составление и pаспpеделение

ключей между пользователями.

кpиптогpафическое пpеобpазование, котоpое позволяет пpи получении текста дpугим

пользователем пpовеpить автоpство и подлинность сообщения.

Кpиптостойкостью называется хаpактеpистика шифpа, опpеделяющая его стойкость к

дешифpованию без знания ключа (т. е. кpиптоанализу). Имеется несколько

* количество всех возможных ключей;

* сpеднее вpемя, необходимое для кpиптоанализа.

Пpеобpазование Tk опpеделяется соответствующим алгоpитмом и значением паpаметpа

k. Эффективность шифpования с целью защиты инфоpмации зависит от сохpанения

Тpебования к кpиптосистемам

стоимостью, однако ей пpисущи и пpеимущества: высокая пpоизводительность,

пpостота, защищенность и т. д. Пpогpаммная pеализация более пpактична, допускает

известную гибкость в использовании.

Для совpеменных кpиптогpафических систем защиты инфоpмации сфоpмулиpованы

следующие общепpинятые тpебования:

* число опеpаций, необходимых для опpеделения использованного ключа шифpования

по фpагменту шифpованного сообщения и соответствующего ему откpытого текста,

должно быть не меньше общего числа возможных ключей;

* число опеpаций, необходимых для pасшифpовывания инфоpмации путем пеpебоpа

всевозможных ключей должно иметь стpогую нижнюю оценку и выходить за пpеделы

возможностей совpеменных компьютеpов (с учетом возможности использования сетевых

вычислений);

* знание алгоpитма шифpования не должно влиять на надежность защиты;

зашифpованного сообщения даже пpи использовании одного и того же ключа;

* стpуктуpные элементы алгоpитма шифpования должны быть неизменными;

полностью и надежно скpыты в шифpованном тексте;

* длина шифpованного текста должна быть pавной длине исходного текста;

* не должно быть пpостых и легко устанавливаемых зависимостью между ключами,

последовательно используемыми в пpоцессе шифpования;

* любой ключ из множества возможных должен обеспечивать надежную защиту

инфоpмации;

этом изменение длины ключа не должно вести к качественному ухудшению алгоpитма

шифpования.

(c) Слепцов А. И.

ГОСТ №28147-89

Как всякое уважающее себя государство, СССР имел свой стандарт шифрования. Этот

стандарт закреплен ГОСТом №28147-89, принятом, как явствует из его обозначения,

еще в 1989 году в СССР. Однако, без сомнения, история этого шифра гораздо более

давняя. Стандарт родился предположительно в недрах восьмого главного управления

"Сов.

секретно", позже гриф был изменен на "секретно", затем снят совсем. Мой же

экземпляр описания алгоритма ГОСТ №28147-89 был взят из книги Спесивцева А. В.

"Защита инфоpмации в пеpсональных ЭВМ", М., Радио и связь, 1992. К сожалению, в

отличие от самого стандарта, история его создания и критерии проектирования

шифра до сих пор остаются тайной за семью печатями.

Возможное использование ГОСТа в собственных разработках ставит ряд вопросов.

Вопрос первый – нет ли юридических препятствий для этого. Ответ здесь простой –

таких препятствий нет и все могут свободно использовать ГОСТ, он не

запатентован, следовательно, не у кого спрашивать разрешения. Более того, все мы

имем на это полное моральное право как наследники тех, кто оплатил разработку

стандарта из своего кармана, – прежде всего я имею ввиду ваших родителей. На

известный указ Президента России №334 от 03. 04. 95 и соответствующие

постановления правительства РФ, которые ничего нового не вносят в эту картину,

повиннi виконувати закони, шо цiлком стосуються "клятих москалiв" Хотя они

формально и запрещают разработку систем, содержащих средства криптозащиты

деятельности, но реально указ распространяется лишь на случай государственных

секретов, данных, составляющих банковскую тайну и т. п., словом, он действует

только там, где нужна бумажка, что "данные защищены".

Что же касается Украинского законодательства, то тута, в отличие от России,

в оном направлении, но, в частности, на официальном сервере правительства

Украины – www.rada.kiev.ua про них абсолютно ничего не сказано, кроме как

"Извините, страничка under construction!" Да и какой смысл пытаться секретить

то, что уже давно ни для кого не является секретом, и про что можно запросто

прочитать как где-нибудь в Интернете, так и в обычной книжке, коих теперь валом…

вопросе целесообразности – прежде всего, можем ли мы доверять этому порождению

мрачной Лубянки, не встроили ли товарищи чекисты лазеек в алгоритмы шифрования?

Это весьма маловероятно, так как ГОСТ создавался в те времена, когда было

можно только опровергнуть взломом. Поэтому, чем старше алгоритм, тем больше

шансов на то, что, если уж он не взломан до сих пор, он не будет взломан и в

ближайшем обозримом будущем. В этом свете все разговоры о последних

"оригинальных разработках" "талантливых ребят" в принципе не могут быть

серьезными – каждый шифр должен выдержать проверку временем. Но ведь шифров,

выдержавших подобную проверку, заведомо больше одного – кроме ГОСТа ведь есть

еще и DES, его старший американский братец, есть и другие шифры. Почему тогда

том, что ГОСТ по большинству параметров превосходит все эти алгоритмы, в том

числе и DES. Вам интересно, о каких это параметров идет речь? Далi буде.

Получается код, где все разряды

- нули, а один из них - единица.

Описание метода

Описание стандарта шифрования данных содержится в очень интересном документе,

озаглавленном "Алгоритм криптографического преобразования данных ГОСТ 28147-89".

"шифрование" фигурирует более общее

понятие "криптографическое преобразование", вовсе не случайно. Помимо нескольких

построенный на общих принципах с ними алгоритм выработки имитовставки. Последняя

является не чем иным, как криптографической контрольной комбинацией, то есть

целью имитозащиты, или защиты данных от внесения в них несанкционированных

изменений.

На различных шагах алгоритмов ГОСТа данные, которыми они оперируют,

данных обрабатываются как массивы независимых битов, в других случаях – как

целое число без знака, в третьих – как имеющий структуру сложный элемент,

состоящий из нескольких более простых элементов. Поэтому во избежание путаницы

следует договориться об используемых обозначениях.

неотрицательное число, можно записать следующее неравенство: 0?X<2X.

Если элемент данных состоит из нескольких элементов меньшего размера, то этот

Процедура объединения нескольких элементов данных в один называется

конкатенацией данных и обозначается символом. Естественно, для размеров

элементов данных должно выполняться следующее соотношение: X=X0+X1+...+Xn-1. При

данных перечисляются в порядке возрастания старшинства. Иными словами, если

целые числа без знака, то можно записать следующее равенство:

В алгоритме элемент данных может интерпретироваться как массив отдельных битов,

в этом случае биты обозначаем той же самой буквой, что и массив, но в строчном

X = (x0, x1, ..., xn–1) = x0+21·x1+...+2n–1·xn–1.

Если над элементами данных выполняется некоторая операция, имеющая логический

смысл, то предполагается, что данная операция выполняется над соответствующими

символом “•” обозначается произвольная бинарная логическая операция; как

правило, имеется ввиду операция исключающего или, она же – операция суммирования

Логика построения шифра и структура ключевой информации ГОСТа.

Если внимательно изучить оригинал ГОСТа 28147–89, можно заметить, что в нем

содержится описание алгоритмов нескольких уровней. На самом верхнем находятся

практические алгоритмы, предназначенные для шифрования массивов данных и

выработки для них имитовставки. Все они опираются на три алгоритма низшего

уровня, называемые в тексте ГОСТа циклами. Эти фундаментальные алгоритмы

упоминаются в данной статье как базовые циклы, чтобы отличать их от всех прочих

циклов. Они имеют следующие названия и обозначения, последние приведены в

скобках и смысл их будет объяснен позже:

цикл зашифрования (32-З);

цикл расшифрования (32-Р);

цикл выработки имитовставки (16-З).

свою очередь, каждый из базовых циклов представляет собой многократное

повторение одной единственной процедуры, называемой для определенности далее в

настоящей работе основным шагом криптопреобразования. Таким образом, чтобы

разобраться в ГОСТе, надо понять три следующие вещи:

а) что такое основной шаг криптопреобразования;

б) как из основных шагов складываются базовые циклы;

Прежде чем перейти к изучению этих вопросов, следует поговорить о ключевой

информации, используемой алгоритмами ГОСТа. В соответствии с принципом Кирхгофа,

которому удовлетворяют все современные известные широкой общественности шифры,

именно ее секретность обеспечивает секретность зашифрованного сообщения. В ГОСТе

ключевая информация состоит из двух структур данных. Помимо собственно ключа,

необходимого для всех шифров, она содержит еще и таблицу замен. Ниже приведены

основные характеристики ключевых структур ГОСТа.

настоящей работе он обозначается символом К: . В ГОСТе элементы ключа

используются как 32-разрядные целые числа без знака: . Таким образом, размер

ключа составляет 32·8=256 бит или 32 байта.

2. Таблица замен является матрицей 8ґ16, содержащей 4-битовые элементы,

которые можно представить в виде целых чисел от 0 до 15. Строки таблицы замен

называются узлами замен, они должны содержать различные значения, то есть каждый

узел замен должен содержать 16 различных чисел от 0 до 15 в произвольном

порядке. В настоящей статье таблица замен обозначается символом H: . Таким

образом, общий объем таблицы замен равен: 8 узлов ґ 16 элементов/узел ґ 4

бита/элемент = 512 бит или 64 байта.

Основной шаг криптопреобразования по своей сути является оператором,

определяющим преобразование 64-битового блока данных. Дополнительным параметром

этого оператора является 32-битовый блок, в качестве которого используется

какой-либо элемент ключа. Схема алгоритма основного шага приведена на рисунке 1.

Ниже даны пояснения к алгоритму основного шага:

Определяет исходные данные для основного шага криптопреобразования:

N–преобразуемый 64-битовый блок данных, в ходе выполнения шага его младшая

числа без знака. Таким образом, можно записать N=(N1,N2).

Сложение с ключом. Младшая половина преобразуемого блока складывается по

модулю 232 с используемым на шаге элементом ключа, результат передается на

следующий шаг;

Поблочная замена. 32-битовое значение, полученное на предыдущем шаге,

интерпретируется как массив из восьми 4-битовых блоков кода:

S=(S0,S1,S2,S3,S4,S5,S6,S7).

таблице замен следующим образом: значение блока Si заменяется на Si-тый по

порядку элемент (нумерация с нуля) i-того узла замен (т. е. i-той строки

значения блока выбирается элемент из таблицы замен с номером строки, равным

как 4-битового целого неотрицательного числа. Теперь становится понятным

размер таблицы замен: число строк в ней равно числу 4-битных элементов в

32-битном блоке данных, то есть восьми, а число столбцов равно числу различных

Циклический сдвиг на 11 бит влево. Результат предыдущего шага сдвигается

циклически на 11 бит в сторону старших разрядов и передается на следующий шаг.

На схеме алгоритма символом ?11 обозначена функция циклического сдвига своего

аргумента на 11 бит в сторону старших разрядов.

Побитовое сложение: значение, полученное на шаге 3, побитно складывается по

Сдвиг по цепочке: младшая часть преобразуемого блока сдвигается на место

старшей, а на ее место помещается результат выполнения предыдущего шага.

Базовые циклы криптографических преобразований.

то есть единицей обработки информации в нем является блок данных. Следовательно,

вполне логично ожидать, что в нем будут определены алгоритмы для

"учета" в контрольной комбинации одного блока данных. Именно эти алгоритмы и

для построения этого шифра.

Базовые циклы построены из основных шагов криптографического преобразования,

используется только один элемент ключа, в то время как ключ ГОСТ содержит восемь

таких элементов. Следовательно, чтобы ключ был использован полностью, каждый из

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

элементами. Вместе с тем кажется вполне естественным, что в каждом базовом цикле

соображениям стойкости шифра это число должно быть больше одного.

верными. Базовые циклы заключаются в многократном выполнении основного шага с

использованием разных элементов ключа и отличаются друг от друга только числом

повторения шага и порядком использования ключевых элементов. Ниже приведен этот

порядок для различных циклов.

Цикл зашифрования 32-З:

K0,K1,K2,K3,K4,K5,K6,K7,K0,K1,K2,K3,K4,K5,K6,K7,K0,K1,K2,K3,K4,K5,K6,K7,K7,K6,K5,K4,K3,K2,K1,K0.

Цикл расшифрования 32-Р:

Цикл выработки имитовставки 16-З:

K0,K1,K2,K3,K4,K5,K6,K7,K0,K1,K2,K3,K4,K5,K6,K7.

Каждый из циклов имеет собственное буквенно-цифровое обозначение,

соответствующее шаблону "n-X", где первый элемент обозначения (n), задает число

повторений основного шага в цикле, а второй элемент обозначения (X), буква,

задает порядок зашифрования ("З") или расшифрования ("Р") в использовании

Цикл расшифрования должен быть обратным циклу зашифрования, то есть

последовательное применение этих двух циклов к произвольному блоку должно дать в

итоге исходный блок, что отражается следующим соотношением: Ц32-Р(Ц32-З(T))=T,

где T – произвольный 64-битный блок данных, ЦX(T) – результат выполнения цикла X

ГОСТу, необходимо и достаточно, чтобы порядок использования ключевых элементов

соответствующими циклами был взаимно обратным. В справедливости записанного

условия для рассматриваемого случая легко убедиться, сравнив приведенные выше

последовательности для циклов 32-З и 32-Р. Из сказанного вытекает одно

интересное следствие: свойство цикла быть обратным другому циклу является

взаимным, то есть цикл 32-З является обратным по отношению к циклу 32-Р. Другими

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

цикла расшифрования, в этом случае расшифрование блока данных должно быть

расшифрования данных, однако стандарт ГОСТ28147-89 закрепляет роли за циклами и

Цикл выработки имитовставки вдвое короче циклов шифрования, порядок

использования ключевых элементов в нем такой же, как в первых 16 шагах цикла

последовательности, поэтому этот порядок в обозначении цикла кодируется той же

самой буквой "З".

Схемы базовых циклов приведены на рисунках 2а-в. Каждый из них принимает в

обозначенный на схемах N. Символ Шaг(N,X) обозначает выполнение основного шага

криптопреобразования для блока N с использованием ключевого элемента X. Между

циклами шифрования и вычисления имитовставки есть еще одно отличие, не

упомянутое выше: в конце базовых циклов шифрования старшая и младшая часть блока

результата меняются местами, это необходимо для их взаимной обратимости.

Основные режимы шифрования.

простая замена,

гаммирование,

гаммирование с обратной связью,

и один дополнительный режим выработки имитовставки.

В любом из этих режимов данные обрабатываются блоками по 64 бита, на которые

разбивается массив, подвергаемый криптографическому преобразованию, именно

поэтому ГОСТ относится к блочным шифрам. Однако в двух режимах гаммирования есть

возможность обработки неполного блока данных размером меньше 8 байт, что

существенно при шифровании массивов данных с произвольным размером, который

может быть не кратным 8 байтам.

Прежде чем перейти к рассмотрению конкретных алгоритмов криптографических

преобразований, необходимо пояснить обозначения, используемые на схемах в

следующих разделах:

Tо,Tш– массивы соответственно открытых и зашифрованных данных;

, – i-тые по порядку 64-битные блоки соответственно открытых и зашифрованных

ЦX– функция преобразования 64-битного блока данных по алгоритму базового цикла

"X";

Теперь опишем основные режимы шифрования:

Простая замена.

Зашифрование в данном режиме заключается в применении цикла 32-З к блокам

открытых данных, расшифрование – цикла 32-Р к блокам зашифрованных данных. Это

наиболее простой из режимов, 64-битовые блоки данных обрабатываются в нем

простой замены приведены на рисунках 3а и б соответственно, они тривиальны и не

нуждаются в комментариях.

Размер массива открытых или зашифрованных данных, подвергающийся соответственно

зашифрованию или расшифрованию, должен быть кратен 64 битам: Tо=Tш=64·n, после

выполнения операции размер полученного массива данных не изменяется.

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

одинаковые блоки шифротекста и наоборот. Отмеченное свойство позволит

криптоаналитику сделать заключение о тождественности блоков исходных данных,

если в массиве зашифрованных данных ему встретились идентичные блоки, что

является недопустимым для серьезного шифра.

возникает проблема, чем и как дополнять последний неполный блок данных массива

до полных 64 бит. Эта задача не так проста, как кажется на первый взгляд,

"дополнить неполный блок нулевыми битами"

или, более обще, "дополнить неполный блок фиксированной комбинацией нулевых и

" могут при определенных условиях дать в руки криптоаналитика

возможность методами перебора определить содержимое этого самого неполного

блока, и этот факт означает снижение стойкости шифра. Кроме того, длина

шифротекста при этом изменится, увеличившись до ближайшего целого, кратного 64

битам, что часто бывает нежелательным.

первый взгляд, перечисленные выше особенности делают практически невозможным

использование режима простой замены, ведь он может применяться только для

шифрования массивов данных с размером кратным 64 битам, не содержащим

повторяющихся 64-битных блоков. Кажется, что для любых реальных данных

гарантировать выполнение указанных условий невозможно. Это почти так, но есть

одно очень важное исключение: вспомните, что размер ключа составляет 32 байта,

а размер таблицы замен – 64 байта. Кроме того, наличие повторяющихся

качестве, поэтому в реальных ключевых элементах такого повторения быть не

может. Таким образом мы выяснили, что режим простой замены вполне подходит для

менее удобны, поскольку требуют наличия дополнительного синхронизирующего

элемента данных – синхропосылки (см. следующий раздел). Наша догадка верна,

ГОСТ предписывает использовать режим простой замены исключительно для

шифрования ключевых данных.

Как же можно избавиться от недостатков режима простой замены? Для этого

необходимо сделать возможным шифрование блоков с размером менее 64 бит и

обеспечить зависимость блока шифротекста от его номера, иными словами,

рандомизировать процесс шифрования. В ГОСТе это достигается двумя различными

способами в двух режимах шифрования, предусматривающих гаммирование.

Гаммирование – это наложение (снятие) на открытые (зашифрованные) данные

криптографической гаммы, то есть последовательности элементов данных,

операции, например, сложение и вычитание по модулю 264 для 64-битных блоков

данных. В ГОСТе для этой цели используется операция побитного сложения по модулю

2, поскольку она является обратной самой себе и к тому же наиболее просто

реализуется. Гаммирование решает обе упомянутые проблемы; во первых, все

элементы гаммы различны для реальных шифруемых массивов и, следовательно,

различным. Во вторых, хотя элементы гаммы и вырабатываются одинаковыми порциями

в 64 бита, использоваться может и часть такого блока с размером, равным размеру

шифруемого блока.

Теперь перейдем непосредственно к описанию режима гаммирования. Гамма для этого

режима получается следующим образом: с помощью некоторого алгоритмического

64-битные блоки данных, которые далее подвергаются преобразованию по циклу 32-З,

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

гаммы. Благодаря тому, что наложение и снятие гаммы осуществляется при помощи

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

расшифрования в режиме гаммирования идентичны, их общая схема приведена на

рисунке 5.

преобразования. Следовательно, неизбежно возникает вопрос о его инициализации,

то есть об элементе ?0. В действительности, этот элемент данных является

называется в криптографии синхропосылкой, а в нашем ГОСТе – начальным

разработчики ГОСТа решили использовать для инициализации РГПЧ не непосредственно

Последовательность элементов, вырабатываемых РГПЧ, целиком зависит от его

fi(X)=f(fi–1(X)), f0(X)=X. С учетом преобразования по алгоритму простой замены

добавляется еще и зависимость от ключа:

гаммы, K – ключ.

Таким образом, последовательность элементов гаммы для использования в режиме

гаммирования однозначно определяется ключевыми данными и синхропосылкой.

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

уникальности гаммы, невыполнение которого приводит к катастрофическому снижению

стойкости шифра, следует, что для шифрования двух различных массивов данных на

одном ключе необходимо обеспечить использование различных синхропосылок. Это

приводит к необходимости хранить или передавать синхропосылку по каналам связи

вместе с зашифрованными данными, хотя в отдельных особых случаях она может быть

массивов на одном ключе.

обеспечения каких-либо статистических характеристик вырабатываемой

последовательности чисел. РГПЧ спроектирован разработчиками ГОСТа исходя из

необходимости выполнения следующих условий:

период повторения последовательности чисел, вырабатываемой РГПЧ, не должен

сильно (в процентном отношении) отличаться от максимально возможного при

заданном размере блока значения 264;

соседние значения, вырабатываемые РГПЧ, должны отличаться друг от друга в

каждом байте, иначе задача криптоаналитика будет упрощена;

РГПЧ должен быть достаточно просто реализуем как аппаратно, так и программно

на наиболее распространенных типах процессоров, большинство из которых, как

известно, имеют разрядность 32 бита.

Исходя из перечисленных принципов создатели ГОСТа спроектировали весьма

удачный РГПЧ, имеющий следующие характеристики:

64-битовом блоке старшая и младшая части обрабатываются независимо друг от

друга: , фактически, существуют два независимых РГПЧ для старшей и младшей

частей блока.

рекуррентные соотношения для старшей и младшей частей следующие:

, где C1=101010116;

, где C2=101010416;

Нижний индекс в записи числа означает его систему счисления, таким образом,

константы, используемые на данном шаге, записаны в 16-ричной системе

счисления.

дается комментарий, что, оказывается, под операцией взятия остатка по модулю

232–1 там понимается не то же самое, что и в математике. Отличие заключается в

том, что согласно ГОСТу (232–1)mod(232–1)=(232–1), а не 0. На самом деле, это

упрощает реализацию формулы, а математически корректное выражение для нее

период повторения последовательности для младшей части составляет 232, для

старшей части 232–1, для всей последовательности период составляет

232?(232–1), доказательство этого факта, весьма несложное, получите сами.

Первая формула из двух реализуется за одну команду, вторая, несмотря на ее

кажущуюся громоздкость, за две команды на всех современных 32-разрядных

процессорах.

алгоритма шифрования в режиме гаммирования приведена на рисунке 4, ниже

изложены пояснения к схеме:

0. Определяет исходные данные для основного шага криптопреобразования:

Tо(ш) – массив открытых (зашифрованных) данных произвольного размера,

подвергаемый процедуре зашифрования (расшифрования), по ходу процедуры

S– синхропосылка, 64-битный элемент данных, необходимый для инициализации

генератора гаммы;

1. Начальное преобразование синхропосылки, выполняемое для ее "рандомизации",

результат используется как начальное заполнение РГПЧ;

2. Один шаг работы РГПЧ, реализующий его рекуррентный алгоритм. В ходе данного

шага старшая (S1) и младшая (S0) части последовательности данных

вырабатываются независимо друг от друга;

процедуре зашифрования по циклу 32–З, результат используется как элемент гаммы

для зашифрования (расшифрования) очередного блока открытых (зашифрованных)

данных того же размера.

4. Результат работы алгоритма – зашифрованный (расшифрованный) массив данных.

1. Одинаковые блоки в открытом массиве данных дадут при зашифровании

различные блоки шифротекста, что позволит скрыть факт их идентичности.

2. Поскольку наложение гаммы выполняется побитно, шифрование неполного

блока данных легко выполнимо как шифрование битов этого неполного блока, для

чего используется соответствующие биты блока гаммы. Так, для зашифрования

неполного блока в 1 бит можно использовать любой бит из блока гаммы.

3. Синхропосылка, использованная при зашифровании, каким-то образом

должна быть передана для использования при расшифровании. Это может быть

хранить или передавать синхропосылку вместе с зашифрованным массивом данных,

синхропосылки, то есть на 8 байт;

использовать предопределенное значение синхропосылки или вырабатывать ее

синхронно источником и приемником по определенному закону, в этом случае

изменение размера передаваемого или хранимого массива данных отсутствует;

экзотический. Второйспособ имеет гораздо меньшее применение, поскольку сделать

комплекте ключевой информации шифруется заведомо не более одного массива

данных, что бывает в редких случаях. Генерировать синхропосылку синхронно у

источника и получателя массива данных также не всегда представляется

возможным, поскольку требует жесткой привязки к чему-либо в системе. Так,

здравая на первый взгляд идея использовать в качестве синхропосылки в системе

передачи зашифрованных сообщений номер передаваемого сообщения не подходит,

поскольку сообщение может потеряться и не дойти до адресата, в этом случае

произойдет десинхронизация систем шифрования источника и приемника. Поэтому в

рассмотренном случае нет альтернативы передаче синхропосылки вместе с

зашифрованным сообщением.

С другой стороны, можно привести и обратный пример. Допустим, шифрование

данных используется для защиты информации на диске, и реализовано оно на

секторам. В этом случае невозможно хранить синхропосылку вместе с

зашифрованными данными, поскольку размер сектора нельзя изменить, однако ее

можно вычислять как некоторую функцию от номера считывающей головки диска,

номера дорожки (цилиндра) и номера сектора на дорожке. В этом случае

синхропосылка привязывается к положению сектора на диске, которое вряд ли

может измениться без переформатирования диска, то есть без уничтожения данных

Режим гаммирования имеет еще одну интересную особенность. В этом режиме биты

массива данных шифруются независимо друг от друга. Таким образом, каждый бит

шифротекста зависит от соответствующего бита открытого текста и, естественно,

порядкового номера бита в массиве: . Из этого вытекает, что изменение бита

шифротекста на противоположное значение приведет к аналогичному изменению бита

открытого текста на противоположный:

, где обозначает инвертированное по отношению к t значение бита ( ).

Данное свойство дает злоумышленнику возможность воздействуя на биты

шифротекста вносить предсказуемые и даже целенаправленные изменения в

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

при этом секретным ключом. Это иллюстрирует хорошо известный в криптологии

факт, что "секретность и аутентичность суть различные свойства шифров". Иными

словами, свойства шифров обеспечивать защиту от несанкционированного

ознакомления с содержимым сообщения и от несанкционированного внесения

изменений в сообщение являются независимыми и лишь в отдельных случаях могут

не защищающие от внесения изменений и наоборот, обеспечивающие аутентичность

данных и никак не ограничивающие возможность ознакомления с ними. По этой

причине рассматриваемое свойство режима гаммирования не должно рассматриваться

Гаммирование с обратной связью.

Данный режим очень похож на режим гаммирования и отличается от него только

способом выработки элементов гаммы – очередной элемент гаммы вырабатывается

как результат преобразования по циклу 32-З предыдущего блока зашифрованных

данных, а для зашифрования первого блока массива данных элемент гаммы

вырабатывается как результат преобразования по тому же циклу синхропосылки.

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

зависит от соответствующего и всех предыдущих блоков открытого текста. Поэтому

стойкость шифра факт зацепления блоков не оказывает никакого влияния.

Схема алгоритмов за- и расшифрования в режиме гаммирования с обратной связью

приведена на рисунке 5 и ввиду своей простоты в комментариях не нуждается.

Шифрование в режиме гаммирования с обратной связью обладает теми же

особенностями, что и шифрование в режиме обычного гаммирования, за исключением

влияния искажений шифротекста на соответствующий открытый текст. Для сравнения

запишем функции расшифрования блока для обоих упомянутых режимов:

, гаммирование;

, гаммирование с обратной связью;

влияют только на соответствующие биты открытого текста, то в режиме

гаммирования с обратной связью картина несколько сложнее. Как видно из

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

соответствующего и предыдущего блоков зашифрованных данных. Поэтому, если

окажутся два блока открытых данных – соответствующий и следующий за ним,

причем искажения в первом случае будут носить тот же характер, что и в режиме

словами, в соответствующем блоке открытых данных искаженными окажутся те же

самые биты, что и в блоке шифрованных данных, а в следующем блоке открытых

данных все биты независимо друг от друга с вероятностью 1/2 изменят свои

Выработка имитовставки к массиву данных.

В предыдущих разделах мы обсудили влияние искажения шифрованных данных на

соответствующие открытые данные. Мы установили, что при расшифровании в режиме

простой замены соответствующий блок открытых данных оказывается искаженным

непредсказуемым образом, а при расшифровании блока в режиме гаммирования

изменения предсказуемы. В режиме гаммирования с обратной связью искаженными

оказываются два блока, один предсказуемым, а другой непредсказуемым образом.

Значит ли это, что с точки зрения защиты от навязывания ложных данных режим

гаммирования является плохим, а режимы простой замены и гаммирования с

необходимо учесть то, что непредсказуемые изменения в расшифрованном блоке

данных могут быть обнаружены только в случае избыточности этих самых данных,

практически неизбежно. Однако в других случаях, например, при искажении сжатых

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

наше ухо. Искажение в этом случае останется необнаруженным, если, конечно, нет

априорной информации о характере звука. Вывод здесь такой: поскольку

способность некоторых режимов шифрования обнаруживать искажения, внесенные в

избыточности шифруемых данных, эта способность не является имманентным

свойством соответствующих режимов и не может рассматриваться как их

достоинство.

Для решения задачи обнаружения искажений в зашифрованном массиве данных с

заданной вероятностью в ГОСТе предусмотрен дополнительный режим

криптографического преобразования – выработка имитовставки. Имитовставка – это

контрольная комбинация, зависящая от открытых данных и секретной ключевой

информации. Целью использования имитовставки является обнаружение всех

случайных или преднамеренных изменений в массиве информации. Проблема,

изложенная в предыдущем пункте, может быть успешно решена с помощью добавления

к шифрованным данным имитовставки. Для потенциального злоумышленника две

следующие задачи практически неразрешимы, если он не владеет ключевой

информацией:

вычисление имитовставки для заданного открытого массива информации;

подбор открытых данных под заданную имитовставку;

Cхема алгоритма выработки имитовставки приведена на рисунке 6. В качестве

имитовставки берется часть блока, полученного на выходе, обычно 32 его младших

бита. При выборе размера имитовставки надо принимать во внимание, что

вероятность успешного навязывания ложных данных равна величине 2–И на одну

попытку подбора. При использовании имитовставки размером 32 бита эта

Криптографическая стойкость ГОСТа.

При выборе криптографического алгоритма для использования в конкретной

вопросам:

теоретически стойкими. Существование подобных шифров доказывается теоремой

Шеннона, однако ценой этой стойкости является необходимость использования для

шифрования каждого сообщения ключа, не меньшего по размеру самого сообщения.

Во всех случаях за исключением ряда особых эта цена чрезмерна, поэтому на

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

Таким образом, наиболее употребительные схемы шифрования могут быть раскрыты

за конечное время или, что точнее, за конечное число шагов, каждый из которых

раскрытия. Количественной мерой этой трудности может служить число

элементарных арифметических и логических операций, которые необходимо

вероятностью, не меньшей заданной величины, определить соответствующий

открытый текст. При этом в дополнении к дешифруемому массиву данных

криптоаналитик может располагать блоками открытых данных и соответствующих им

зашифрованных данных или даже возможностью получить для любых выбранных им

открытых данных соответствующие зашифрованные данные – в зависимости от

криптоанализа.

современные криптосистемы построены по принципу Кирхгоффа, то есть секретность

зашифрованных сообщений определяется секретностью ключа. Это значит, что даже

если сам алгоритм шифрования известен криптоаналитику, тот тем не менее не в

состоянии расшифровать сообщение, если не располагает соответствующим ключом.

принципу и спроектированы таким образом, чтобы не было пути вскрыть их более

эффективным способом, чем полным перебором по всему ключевому пространству,

т. е. по всем возможным значениям ключа. Ясно, что стойкость таких шифров

шифре ГОСТ используется 256-битовый ключ и объем ключевого пространства

составляет 2256. Ни на одной из существующих в настоящее время или

предполагаемых к реализации в недалеком будущем ЭВМ общего применения нельзя

подобрать ключ за время, меньшее многих сотен лет. Российский стандарт

проектировался с большим запасом и по стойкости на много порядков превосходит

американский стандарт DES с его реальным размером ключа в 56 бит и объемом

ключевого пространства всего 256. В свете прогресса современных вычислительных

средств этого явно недостаточно. В этой связи DES может представлять скорее

исследовательский или научный, чем практический интерес. Как ожидается, в 1998

году он перестанет быть стандартом США на шифрование.

Замечания по архитектуре ГОСТа.

Общеизвестно, что шифр ГОСТ 28147-89 является представителем целого семейства

шифров, построенных на одних и тех же принципах. Самым известным его

"родственником" является американский стандарт шифрования, алгоритм DES. Все

эти шифры, подобно ГОСТу, содержат алгоритмы трех уровней. В основе всегда

лежит некий "основной шаг", на базе которого сходным образом строятся "базовые

", и уже на их основе построены практические процедуры шифрования и

семейства заключена именно в его основном шаге, точнее даже в его части. Хотя

архитектура классических блочных шифров, к которым относится ГОСТ, лежит

далеко за пределами темы настоящей статьи, все же стоит сказать несколько слов

Алгоритмы "основных шагов криптопреобразования" для шифров, подобных ГОСТу,

основного шага подается блок четного размера, старшая и младшая половины

которого обрабатываются отдельно друг от друга. В ходе преобразования младшая

половина блока помещается на место старшей, а старшая, скомбинированная с

помощью операции побитного исключающего или с результатом вычисления некоторой

младшую половину блока и некоторый элемент ключевой информации (X), является

содержательной частью шифра и называется его функцией шифрования. Соображения

стойкости шифра требуют, чтобы размеры всех перечисленных элементов блоков

Если применить сказанное к схеме основного шага алгоритма ГОСТ, станет

очевидным, что блоки 1,2,3 алгоритма определяют вычисление его функции

шифрования, а блоки 4 и 5 задают формирование выходного блока основного шага

исходя из содержимого входного блока и значения функции шифрования.

В предыдущем разделе мы уже сравнили DES и ГОСТ по стойкости, теперь мы

шифрования ГОСТа основной шаг повторяется 32 раза, для DESа эта величина равна

16. Однако сама функция шифрования ГОСТа существенно проще аналогичной функции

DESа, в которой присутствует множество перекодировок по таблицам с изменением

размера перекодируемых элементов. Кроме того, между основными шагами в циклах

шифрования DESа необходимо выполнять битовые перестановки в блоках данных. Все

эти операции чрезвычайно неэффективно реализуются на современных

неспециализированных процессорах. ГОСТ не содержит подобных операций, поэтому

он значительно удобней для программной реализации. Ни одна из рассмотренных

автором реализаций DESа для платформы Intel x86 не достигает даже половины

производительности предложенной вашему вниманию в настоящей статье реализации

ГОСТа, несмотря на вдвое более короткий цикл. Все сказанное выше

свидетельствует о том, что разработчики ГОСТа учли как положительные, так и

отрицательные стороны DESа, а также более реально оценили текущие и

Требования к качеству ключевой информации и источники ключей.

Не все ключи и таблицы замен обеспечивают максимальную стойкость шифра. Для

информации. Так, для алгоритма DES известно существование так называемых

"слабых ключей", при использовании которых связь между открытыми и

зашифрованными данными не маскируется достаточным образом, и шифр сравнительно

просто вскрывается.

Исчерпывающий ответ на вопрос о критериях качества ключей и таблиц замен ГОСТа

если и можно вообще где-либо получить, то только у разработчиков алгоритма.

Соответствующие данные не были опубликованы в открытой печати. Однако согласно

использованы ключевые данные, полученные от уполномоченной организации.

ключевых данных на "вшивость". Сам факт существования слабых ключевых данных в

Российском стандарте шифрования не вызывает сомнения. Очевидно, нулевой ключ и

тривиальная таблица замен, по которой любое значение заменяется но него

самого, являются слабыми, при использовании хотя бы одного из них шифр

достаточно просто взламывается, каков бы ни был второй ключевой элемент.

однако на их счет все же можно высказать некоторые соображения:

1. Ключ должен являться массивом статистически независимых битов,

принимающих с равной вероятностью значения 0 и 1. При этом некоторые

"слабыми", то есть шифр может не

обеспечивать заданный уровень стойкости в случае их использования. Однако,

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

ничтожно мала. Поэтому ключи, выработанные с помощью некоторого датчика

истинно случайных чисел, будут качественными с вероятностью, отличающейся от

единицы на ничтожно малую величину. Если же ключи вырабатываются с помощью

генератора псевдослучайных чисел, то используемый генератор должен

обеспечивать указанные выше статистические характеристики, и, кроме того,

обладать высокой криптостойкостью, не меньшей, чем у самого ГОСТа. Иными

Кроме того, для отбраковки ключей с плохими статистическими характеристиками

могут быть использованы различные статистические критерии. На практике обычно

хватает двух критериев, – для проверки равновероятного распределения битов

ключа между значениями 0 и 1 обычно используется критерий Пирсона ("хи

квадрат"), а для проверки независимости битов ключа – критерий серий. Об

упомянутых критериях можно прочитать в учебниках или справочниках по

математической статистике.

2. Таблица замен является долговременным ключевым элементом, то есть

действует в течение гораздо более длительного срока, чем отдельный ключ.

Предполагается, что она является общей для всех узлов шифрования в рамках

одной системы криптографической защиты. Даже при нарушении конфиденциальности

таблицы замен стойкость шифра остается чрезвычайно высокой и не снижается ниже

допустимого предела. К качеству отдельных узлов замен можно предъявить

приведенное ниже требование. Каждый узел замен может быть описан четверкой

Необходимо, чтобы эти функции были достаточно сложными. Это требование

сложности невозможно выразить формально, однако в качестве необходимого

условия можно потребовать, чтобы соответствующие логические функции,

с использованием основных логических операций, не были короче некоторого

необходимого минимума. В первом и очень грубом приближении это условие может

бывает достаточно получить узлы замен как независимые случайные перестановки

чисел от 0 до 15, это может быть практически реализовано, например, с помощью

перемешивания колоды из шестнадцати карт, за каждой из которых закреплено одно

Необходимо отметить еще один интересный факт относительно таблицы замен. Для

обратимости циклов шифрования 32–З и 32–Р не требуется, чтобы узлы замен были

перестановками чисел от 0 до 15. Все работает даже в том случае, если в узле

замен есть повторяющиеся элементы, и замена, определяемая таким узлом,

необратима, однако в этом случае снижается стойкость шифра. Почему это именно

так, не рассматривается в настоящей статье, однако в самом факте убедиться

несложно. Для этого достаточно, используя демонстрационную программу

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

затем расшифровать файл данных, использовав для этой процедуры "неполноценную"

таблицу замен, узлы которой содержат повторяющиеся значения.

Если вы разрабатываете программы, использующие криптографические алгоритмы,

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

экономическим соображениям. В качестве разумной альтернативы возможно (и очень

широко распространено) использование различных программных датчиков СЧ. При

генерации небольшого по объему массива ключевой информации широко применяется

метод "электронной рулетки", когда очередная получаемая с такогодатчика порция

случайных битов зависит от момента времени нажатия оператором некоторой

клавиши на клавиатуре компьютера.

Этот подход использован в программе генерации одного ключа, исходный текст

которой на языке Си с ассемблерными вкраплениями прилагается к настоящей

статье в файле make1key. c. Для выработки случайных чисел из заданного

диапазона используется канал 2 системного таймера, информация считывается с

него при нажатии оператором какой-либо клавиши на клавиатуре дисплея. За одно

нажатие генерируется один байт ключа и на экран выводится точка. Чтобы было

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

между циклами генерации введена временная задержка и в начале каждого цикла

проверяется, было ли во время паузы нажатие клавиши. Если таковое имело место,

выдается звуковой сигнал и нажатие игнорируется. Программу целесообразно

запускать только из "голого" DOSа, в DOS-сеансе Windows 3. x/95 она также

работает, но нет уверенности в обеспечении нужных статистических

напрямую в порты) вообще не работает корректно.

В реализации алгоритмов были использованы изложенные ниже подходы, позволившие

достигнуть максимальной производительности. Первые два из них достаточно

очевидны, настолько, что встречаются практически в каждой реализации ГОСТа.

Базовые циклы ГОСТа содержат вложенные циклы (звучит коряво, но по-другому

не скажешь), причем во внутреннем цикле порядок использования восьми

упростить реализацию и повысить эффективность базовых циклов можно, если

избежать использования вложенных циклов и просматривать последовательность

элементов ключа только один раз. Для этого необходимо предварительно

сформировать последовательность элементов ключа в том порядке, в котором они

В основном шаге криптопреобразования 8 раз выполняется подстановка 4-битных

дает следующие выгоды:

за одну команду выполняются сразу две замены;

исчезает необходимость выделять полубайты из двойных слов для выполнения

так, что за все приходится платить, и в данном случае платой является

узлов замен заменяется одним 8-разрядным узлом, который, говоря языком

математики, представляет собой прямое произведение узлов, входящих в пару.

Пара 4-разрядных узлов требует для своего представления 16 байтов, один

8-разрядный – 256 байтов. Таким образом, размер таблицы замен, которая должна

храниться в памяти компьютера, увеличивается до 4·256=1024 байтов, или до

эффективности реализации вполне приемлема.

После выполнения подстановок кода по таблице замен основной шаг

криптопреобразования предполагает циклический сдвиг двойного слова влево на 11

бит. В силу 16-разрядной архитектуры рассматриваемых процессоров вращение

32-разрядного блока даже на 1 бит невозможно реализовать менее, чем за три

ассемблерные команды, а вращение на большее число разрядов только как

последовательность отдельных вращений на 1 разряд. К счастью, вращение на 11

бит влево можно представить как вращение на 8 бит, а затем еще на 3 бита

командами обмена байтовых регистров (xchg). Но секрет третьей оптимизации даже

не в этом. Замена одного байта по таблице замен осуществляется командой xlat,

которая выполняет операцию над аргументом в регистре AL, для того, чтобы

заменить все байты двойного слова, их надо последовательно помещать в этот

регистр. Секрет третьей оптимизации заключается в том, что эти перестановки

можно организовать так, что в результате двойное слово окажется повернутым на

влево. Еще один момент, на который стоит обратить внимание, это оптимальное

кодирование трех последовательных вращений на 1 бит, это может быть

реализовано по-разному и важно было выбрать оптимальный способ, который

битовых сдвигов и использования команды суммирования с битами переноса (adc),

то есть бит помещается на свою позицию не командой сдвига, а командой

суммирования!

Описание функций и особенности реализации.

С учетом изложенных выше принципов созданы две реализации ГОСТа для

процессоров семейства Intel x86, близкие по быстродействию к возможному

оптимуму – соответственно для 16-и и 32-х битовых процессоров. Код для

32-разрядных процессоров примерно в полтора раза быстрее соответствующего кода

для 16-разрядных процессоров. Ядром является подпрограмма, реализующая

универсальный базовый цикл ГОСТа. Исходные тексты всех подпрограмм приведены в

качестве приложений к настоящей статье в отдельных файлах, они перечислены в

следующей ниже таблице 1. Все функции являются самодокументированными, каждая

описана в соответствующем файле с ее исходным текстом.

1. Универсальный базовый цикл ГОСТаgost$. asm

2. Функция за- и расшифрования данных в режиме простой заменыsimple$. asm

3. Функция за- и расшифрования данных в режиме гаммированияgamma$. asm

4. Функция зашифрования данных в режиме гаммирования с обратной

связьюgammale$. asm

связьюgammald$. asm

6. Функция вычисления имитовставки для массива данныхimito$. asm

7. Функция построения расширенного ключаexpkey$. asm

8. Функция построения расширенной (1Кбайт) формы таблицы замен из обычной

формы (128 байт)Expcht. asm

приложение, 32-битовым. expkey$. asm

10. Заголовочный файл для использования криптографических функций в

программах на языке СиGost. h

Комплект модулей включает функции для основных режимов шифрования, а также две

вспомогательные функции, предназначенные для построения расширенных

соответственно ключа и таблицы замен. Ниже изложены принципы построения

Все функции шифрования и вычисления имитовставки обрабатывают (т. е.

шифруют или вычисляют имитовставку) области с размером, кратным восьми.

Длина обрабатываемой области при вызове упомянутых функций задается в

восьмибайтных блоках. В реальных ситуациях это не приводит к неудобству по

следующим причинам:

при шифровании простой заменой размер шифруемой области обязан быть

кратным восьми байтам;

при шифровании гаммированием (с или без обратной связи) массива данных с

размером, не кратным восьми, будет также шифроваться и "мусор",

содержащийся в последнем восьмибайтовом блоке за пределами значащих

данных, однако его содержимое не оказывает никакого влияния на значащие

данные и может не приниматься во внимание;

при вычислении имитовставки для массивов данных их размер должен быть

приведен к значению, кратному восьми, добавлением какого-либо

фиксированного кода (обычно нулевых битов).

выполнять обработку массивов данных по частям. Это означает, что при

вызове соответствующей функции один раз для некоторой области данных и при

этой же области (естественно их размер должен быть кратным восьми байтам,

см. предыдущее замечание) будет получен один и тот же результат. Это

позволяет обрабатывать данные порциями, используя буфер размером всего 8

байтов.

Для за- и расшифрования массива данных в режиме простой замены

осуществляется заданием соответствующего расширенного ключа. Порядок

следования элементов ключа должен быть взаимно обратным для указанных

операций.

Для за- и расшифрования блока данных в режиме гаммирования используется

одна и та же функция, поскольку в данном режиме зашифрование и

расшифрование данных идентичны. Функция, реализующая шифрование

гаммированием не осуществляет начальное преобразование синхропосылки (см.

явного вызова функции шифрования в режиме простой замены для

синхропосылки, – это плата за возможность шифровать массив по частям.

свеч.

Для ассемблирования (компиляции) и сборки приложенных модулей мной

использовались средства разработки фирмы Borland – TASM 2. 5 и выше,

Borland C/C++ 2. 0 и выше. При использовании других средств разработки

возможно потребуется внесение изменений в исходные тексты программ.

настоящей статье приложены также текст программы шифрования файлов данных

gost386. mak Файл проекта для 32-разрядной версии программы шифрования

файлов.

Описание построения и синтаксиса вызова (командной строки) программы

шифрования файлов также прилагается.

Вопрос быстродействия.

После разработки новой программной реализации было измерено ее быстродействие,

построения измерительной задачи. Эта задача фиксирует и выводит на дисплей

время (в тактах генератора тактовой частоты таймера, 1193180 Герц),

работы подпрограммы затем вычисляется (вручную) ее быстродействие как

отношение количества работы ко времени ее выполнения.

Максимальная измеряемая программой длительность процесса равна

Для модулей ГОСТа измерялась длительность шифрования одного мегабайта данных,

которое моделировалось 32-кратным шифрованием 32-Килобайтной области памяти.

Измерения проводились на машинах различных классов, результаты измерения

приведены ниже в таблице 2. Для 32-битовых процессоров также приведено

быстродействие 32-битовых реализаций криптографических модулей (нижнее число в

соответствующей ячейке). Для сравнения также приведены измерения

быстродействия реализации американского стандарта шифрования DES,

опубликованной в журнале "Монитор" №7/1994. Результаты тестов показали, что

быстродействие модуля вычисления имитовставки приблизительно вдвое превышает

быстродействие шифрования – что, собственно, и ожидалось. Реализация

шифрования по ГОСТ существенно (более чем в два раза) превышает исследованную

Таблица 2. Результаты измерения быстродействия модулей шифрования

Марка компьютера,т. ч.,Быстродействие криптографических модулей

тип процессораМГцgammagammaLDgammaLEsimpleImitoDES

Искра 1031, К1810ВМ884. 528. 48. 68. 78. 716. 9нет данных

AMI 286 Intel 802861020. 420. 720. 820. 840. 811. 2

13922. 0

Неизв. модель Intel 386SX-333363. 8 87. 664. 5 94. 564. 7 89. 563. 8 95. 0124

BYTEX Intel 386DX-404089 12090 13591 12291 135177 26439. 3

Presario 460 Intel486SX2-6666225 298222 319229 303227 324451 63782. 2

Теперь оценим достигнутые показатели с качественной точки зрения. Предельные

шифрования "Криптон–3" (до 70 Кбайт/с) и примерно соответствуют быстродействию

платы "Криптон–4" (около 400 Кбайт/с). Достигнутой производительности не

достаточно для действительно прозрачного шифрования данных, хранимых на

жестких дисках или передаваемых через быструю сеть. Вместе с тем,

отказаться от цикла в подпрограмме "gost", продублировав тело цикла 32 раза,

"Криптон". При этом можно не

разворачивать ключ в линейную последовательность элементов, но тогда для

каждого базового цикла криптографического преобразования придется сделать свой

криптографических процедур в 32+32+16=80 экземплярах. Такой способ повышения

эффективности приводит к многократному разбуханию кода при более чем скромном

выигрыше в производительности, поэтому вряд ли его можно считать хорошим.

Надежность реализации.

Вопрос надежности программного средства криптографической защиты это не только

вопрос стойкости использованного алгоритма. Использование стойкого шифра само

по себе не может сделать вашу систему надежной, хотя и является необходимым

условием. Весьма важную роль играет и способ применения криптографического

алгоритма. Так, в приложение к настоящей программе шифрования файлов, хранение

ключевой информации на дисках в открытом виде делает систему, которая была бы

реализована на этой программе, потенциально нестойкой. Процедуры и правила

более высокого уровня, регламентирующие использование алгоритмов шифрования и

все связанное с этим, в совокупности составляют так называемый

вопросы. Так вот, чтобы ваша система, использующая реализацию алгоритмов

ГОСТа, была действительно надежна, вам необходимо будет позаботиться о

разработке соответствующего протокола.

Очень часто для использования в системе криптографической защиты данных

требуется алгоритм с большим, чем у ГОСТа быстродействием реализации, и при

этом не требуется такая же высокая как у ГОСТа криптостойкость. Типичным

примером подобных задач являются различного рода биржевые торговые системы,

управляющие торговыми сессиями в реальном времени. Здесь от использованных

алгоритмов шифрования требуется, чтобы было невозможно расшифровать

оперативные данные системы в течение сессии (данные о выставленных заявках, о

заключенных сделках и т. п.), по ее истечении же эти данные, как правило, уже

бесполезны для злоумышленников. Другими словами, требуется гарантированная

стрельбой из пушки по воробьям.

модификацию алгоритма ГОСТ с меньшим количеством основных шагов в базовых

циклах. Этого можно достигнуть двумя путями – уменьшением длины ключа и

уменьшением числа циклов использования элементов ключа – вспомните, что число

основных шагов в базовых циклах шифрования равно N=n·m, где n – число

32-битных элементов в ключе, m – число циклов использования ключевых

элементов, в стандарте n=8, m=4. Во сколько раз уменьшается число основных

К несчастью, нет никаких сведений о том, как изменяется криптостойкость

подобного ослабленного варианта ГОСТа. Что касается криптоанализа по

достаточно ясно, так как эта величина определяется только размером ключа.

Гораздо труднее предсказать, насколько менее сложным станет криптоанализ по

шифровании).

"редуцированного цикла" надо принимать во внимание, что

ГОСТ проектировался с учетом возможного прогресса вычислительной техники на

несколько десятилетий вперед и в нем заложен огромный запас криптостойкости.

По моему мнению (глубоко личному), в большинстве практических случаев

представляется разумным использование редуцированных вариантов ГОСТа без

размером ключа (n=2) – это позволит увеличить скорость шифрования примерно

вчетверо. По стойкости к статистическим методам криптоанализа данная

модификация с ее 64-битным ключом будет надежнее, чем DES с размером ключа в

56 бит.

Функции криптопреобразования, прилагающиеся к настоящей статье, допускают

подобное использование, поскольку длина развернутого ключа передается в

качестве параметра в каждую из подпрограмм криптографического преобразования,

а подпрограмма "расширения" ключа позволяет работать с произвольной длиной

имитозащита данных. Однако у криптографической гаммы есть еще одно важное

применение – выработка ключевой информации. Выработка массива ключевой или

парольной информации большого объема является типовой задачей администратора

безопасности системы. Как уже было отмечено выше, ключ может быть сгенерирован

как массив нужного размера статистически независимых и равновероятно

распределенных между значениями 0 и 1 битов, для этого можно использовать

программу, вырабатывающую ключ по принципу "электронной рулетки". Но такой

велик. В этом случае идеально использование аппаратных датчиков случайных

чисел, что, однако, не всегда возможно по экономическим или техническим

быть использован генератор гаммы на основе любого блочного шифра, в том числе

и ГОСТ 28147-89, так как, по определению, криптографическая гамма обладает

необходимыми статистическими характеристиками и криптостойкостью. Таким

данных по алгоритму выработки гаммы, и нарезать его на порции нужного размера,

для стандартного варианта – 32 байта.

С паролями дело обстоит несколько сложнее. Прежде всего возникает вопрос,

зачем вообще нужно их генерировать, не проще ли по мере надобности брать их из

головы. Несостоятельность такого подхода была наглядно продемонстрирована

серией инцидентов в компьютерных сетях, самым крупным из которых был суточный

паралич сети Internet в ноябре 1988 г (вирус Морриса). Одним из способов

доступа злоумышленной программы в систему был подбор паролей: программа

пыталась войти в систему, последовательно пробуя пароли из своего внутреннего

списка в несколько сотен, причем в значительной доле случаев ей это удавалось

сделать – фантазия человека по выдумыванию паролей оказалась очень бедной.

Именно поэтому в тех организациях, где безопасности уделяется должное

внимание, пароли генерирует и раздает пользователям системный администратор по

безопасности. Выработка паролей чуть сложнее, чем выработка ключей, так как

"сырую" двоичную гамму необходимо преобразовать к символьному виду, а

не просто "нарезать" на куски. Основное, на что необходимо обратить внимание

при этом – обеспечение равной вероятности появления каждого из символов

алфавита.

Вывод.

Итак, в этой работе был сделан краткий обзоp наиболее pаспpостpаненных в

конкpетных ИС должен быть основан на глубоком анализе слабых и сильных стоpон

тех или иных методов защиты. Обоснованный выбоp той или иной системы защиты в

общем-то должен опиpаться на какие-то кpитеpии эффективности. К сожалению, до

сих поp не pазpаботаны подходящие методики оценки эффективности

кpиптогpафических систем.

или мощность множества ключей (М). По сути это то же самое, что и

кpиптостойкость. Для ее численной оценки можно использовать также и сложность

дpугих важных тpебований к кpиптосистемам:

* невозможность pаскpытия или осмысленной модификации инфоpмации на основе

анализа ее стpуктуpы,

* минимальный объем используемой ключевой инфоpмации,

стоимость,

Желательно конечно использование некотоpых интегpальных показателей,

учитывающих указанные фактоpы. Для учета стоимости, тpудоемкости и объема

ключевой инфоpмации можно использовать удельные показатели - отношение

эффективным пpи выбоpе и оценке кpиптогpафической системы является

использование экспеpтных оценок и имитационное моделиpование.

В любом случае выбpанный комплекс кpиптогpафических методов должен сочетать

как удобство, гибкость и опеpативность использования, так и надежную защиту от

злоумышленников циpкулиpующей в ИС инфоpмации.