Федеральное агентство по образованию
Дальневосточная государственнаясоциально-гуманитарная академия
Факультет математики и информатики
Кафедра информационных систем иприкладной информатики
Пояснительнаязаписка
к курсовой работе
по информационной безопасности
на тему «Разработка программы,
реализующей алгоритм шифрования ГОСТ 28147-89».
Студент группы 1541
Р.В. Ткачук
Руководитель
В.А. Глаголев
Биробиджан, 2008
Содержание
TOC o«1-3» Введение… 3
1 Криптология. Основные понятия… 5
2 Требования к криптосистемам… 7
3 ГОСТ 28147-89… 8
3.1 История создания.Правомерность использования… 8
3.2 Описание метода… 9
3.2.1 Базовые понятия исоставляющие алгоритма… 9
3.2.2 Основной шагкриптопреобразования… 10
3.2.3 Базовые циклы криптографическихпреобразований… 12
3.2.4 Основные режимышифрования… 15
4 Руководство к программе… 23
Заключение… 24
Список использованной литературы… 25
Приложение… 26
Введение
То, что информация имеетценность, люди осознали очень. Ведь еще с древних времен переписка правителей былаобъектом пристального внимания их недругов и друзей. Именно тогда и возниклазадача защиты этой переписки от чрезмерно любопытных глаз. Древние пыталисьиспользовать для решения этой задачи самые разнообразные методы, и одним из нихбыла тайнопись – умение составлять сообщения таким образом, чтобы его смысл былнедоступен никому кроме посвященных в тайну. На протяжении всей своеймноговековой истории, вплоть до совсем недавнего времени, это искусство служилонемногим, в основном верхушке общества, не выходя за пределы резиденций главгосударств, посольств и т.д. И лишь несколько десятилетий назад все изменилоськоренным образом – информация приобрела самостоятельную коммерческую ценность истала широко распространенным, почти обычным товаром. Ее производят, хранят,транспортируют, продают и покупают, а значит, воруют и подделывают и,следовательно, ее необходимо защищать. Современное общество все в большейстепени становится информационно–обусловленным, успех любого вида деятельностивсе сильней зависит от обладания определенными сведениями и от отсутствия их уконкурентов. И чем сильней проявляется этот эффект, тем больше потребность взащите информации. Одним словом, возникновение индустрии обработки информациипривело к возникновению индустрии средств защиты информации.
Среди всего спектраметодов защиты данных от нежелательного доступа особое место занимаюткриптографические методы. В отличие от других методов, они опираются лишь насвойства самой информации и не используют свойства ее материальных носителей,особенности узлов ее обработки, передачи и хранения.
Почему же проблемаиспользования криптографических методов в информационных системах (ИС) стала внастоящий момент особо актуальна? С одной стоpоны, расширилось использование компьютерныхсетей, в частности глобальной сети Интеpнет, по которым передаются большиеобъемы информации государственного, военного, коммерческого и частного хаpактеpа, не допускающего возможностьдоступа к ней посторонних лиц. С другой стороны, появление новых мощных компьютеров,технологий сетевых и нейронных вычислений сделало возможным дискредитациюкриптографических систем еще недавно считавшихся практически не раскрываемыми.
Целью данной курсовогопроекта является разработка программы, реализующей шифрование ГОСТ 28147-89.
В курсовом проекте былипоставлены следующие задачи:
· Анализлитературы при разработке программы шифрования на основе ГОСТ 28147-89;
· Анализалгоритмов шифрования ГОСТ 28147-89;
· Разработкапрограммы реализующей алгоритм шифрования ГОСТ 28147-89;
· Разработкаруководства пользователя;
· Разработкаруководства программы.
Объектом в курсовомпроекте является — методы шифрования ГОСТ28147-89.
Предметом является – разработкапрограммы для шифрования и дешифрования файлов алгоритмом ГОСТ 28147-89 методомгаммирования с обратной связью в среде программирования Delphi.
1 КРИПТОЛОГИЯ. ОСНОВНЫЕ ПОНЯТИЯ
Пpоблемой защиты инфоpмации путем ее пpеобpазования занимается кpиптология(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аздела:
1. Системные криптосистемы;
2. Криптосистемы с открытым ключом;
3. Системы электронной подписи;
4. Системы управления ключами.
Основные нап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истика шифpа, опpеделяющая его стойкость к дешифpованию без знания ключа (т.е. кpиптоанализу). Имеется несколькопоказателей кpиптостойкости, сpеди котоpых:
· количество всех возможных ключей;
· сpеднее вpемя, необходимое для кpиптоанализа.
2Требования к криптосистемам
П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ования и д.р.
3 ГОСТ 28147-89
3.1 История создания. Правомерность использования
Как всякое уважающее себягосударство, СССР имел свой стандарт шифрования. Этот стандарт закреплен ГОСТом №28147-89,принятом еще в 1989 году. Однако, безсомнения, история этого шифра гораздо более давняя. Стандарт родился предположительно в недрахвосьмого главного управления КГБ СССР, преобразованного ныне в ФАПСИ. В тевремена он имел гриф «Совершенно секретно», позже гриф был изменен на «Секретно»,затем снят совсем. К сожалению, в отличие от самого стандарта, история егосоздания и критерии проектирования шифра до сих пор остаются тайной за семьюпечатями.
Возможное использованиеГОСТа в собственных разработках ставит ряд вопросов. Вопрос первый – нет ли юридическихпрепятствий для этого. Таких препятствийнет, и все могут свободно использовать ГОСТ, он не запатентован, следовательно,не у кого спрашивать разрешения. На указПрезидента России №334 от 03.04.95 и соответствующие постановленияправительства РФ, можем вообще смело закрыть глаза. Хотя данный документформально и запрещают разработку систем, содержащих средства криптозащитыюридическими и физическими лицами, не имеющими лицензии на этот виддеятельности, реально указ распространяется лишь на случай государственныхсекретов, данных, составляющих банковскую тайну и т.п.
Вторым вопросом являетсявопрос целесообразности – прежде всего, можем ли мы доверять этому порождениюмрачной Лубянки, не встроили ли товарищи чекисты множества лазеек в алгоритмышифрования? Это весьма маловероятно, таккак ГОСТ создавался в те времена, когда было немыслимо его использование запределами государственных режимных объектов. С другой стороны, стойкость криптографического алгоритма нельзяподтвердить, ее можно только опровергнуть взломом. Поэтому, чем старше алгоритм, тем большешансов на то, что, если уж он не взломан до сих пор, он не будет взломан и вближайшем обозримом будущем.
3.2 Описание метода
3.2.1 Базовые понятия и составляющие алгоритма
На различных шагахалгоритмов ГОСТа данные, которыми они оперируют, интерпретируются ииспользуются различным образом. В некоторых случаях элементы данныхобрабатываются как массивы независимых битов, в других случаях – как целоечисло без знака, в третьих – как имеющий структуру сложный элемент, состоящийиз нескольких более простых элементов. Поэтому во избежание путаницы следуетдоговориться об используемых обозначениях.
Элементы данных обозначимзаглавными латинскими буквами с наклонным начертанием (например, X). Через |X| обозначается размер элемента данныхXв битах. Таким образом, еслиинтерпретировать элемент данных Xкак целое неотрицательное число,можно записать следующее неравенство: 0
Если элемент данныхсостоит из нескольких элементов меньшего размера, то этот факт обозначаетсяследующим образом:
X= (X0, X1, ..., Xn-1) = X0||X1||...||Xn-1.
Процедура объединениянескольких элементов данных в один называется конкатенацией данных и обозначается символом ||. Естественно, дляразмеров элементов данных должно выполняться следующее соотношение: |X|=|X0|+|X1|+...+|Xn-1|.
Все алгоритмы шифрованияГОСТа опираются на три алгоритма низшего уровня, называемые базовые циклами. Они имеют следующиеназвания и обозначения:
· цикл шифрования (32-З);
· цикл дешифрования (32-Р);
· цикл выработки имитовставки (16-З).
В свою очередь, каждый избазовых циклов представляет собой многократное повторение одной единственнойпроцедуры. Назовем ее основным шагомкриптопреобразования.
Таким образом, чтобыразобраться в ГОСТе, необходимо понять три следующие вещи:
· что такое основной шагкриптопреобразования;
· как из основных шагов складываютсябазовые циклы;
· как из трех базовых цикловскладываются все практические алгоритмы ГОСТа.
Прежде чем перейти кизучению этих вопросов, следует поговорить о ключевой информации, используемой алгоритмамиГОСТа. Ключевая информация состоит из двух структур данных. Помимо ключа, необходимого для всех шифров, онасодержит еще и таблицу замен.
Ключявляется массивом из восьми 32-битных элементов кода. Далее онобозначается символом К:
Таблица заменявляется матрицей 8´16,содержащей 4-битовые элементы, которые можно представить в виде целых чисел от0 до 15. Строки таблицы заменназываются узлами замен, они должнысодержать различные значения, то есть каждый узел замен должен содержать 16 различных чисел от 0 до 15 впроизвольном порядке. Далее таблица замен обозначается символом H: ´16 элементов ´4 бита = 512 бит или 64 байта.
3.2.2 Основной шаг криптопреобразования
Основной шагкриптопреобразования (рис. 1) по своей сути является оператором, определяющимпреобразование 64-битового блока данных. Дополнительным параметром этогооператора является 32-битовый блок, в качестве которого используется какой-либоэлемент ключа.
Рис. 1. Схема основного шага криптопреобразования алгоритмаГОСТ 28147-89.
Шаг 0. Определение исходных данных для основного шагакриптопреобразования, где N –преобразуемый64-битовый блок данных, в ходе выполнения шага его младшая (N1) и старшая (N2) части обрабатываются какотдельные 32-битовые целые числа без знака. Таким образом, можно записать N=(N1,N2), а X– 32-битовый элемент ключа.
Шаг 1. Сложение с ключом. Младшая половина преобразуемого блокаскладывается по модулю 232 с используемым на шаге элементом ключа,результат передается на следующий шаг.
Шаг 2. Поблочная замена. 32-битовое значение, полученное на предыдущемшаге, интерпретируется как массив из восьми 4-битовых блоков кода: S= (S0,S1,S2,S3,S4,S5,S6,S7). Далее значение каждого из восьмиблоков заменяется на новое, которое выбирается по таблице замен следующимобразом: значение блока Smзаменяется на Sm-ный по порядку элемент (нумерация снуля) m-ного узла замен (т.е. m-ной строки таблицы замен, нумерация также с нуля). Другимисловами, в качестве замены для значения блока выбирается элемент из таблицызамен с номером строки, равным номеру заменяемого блока, и номером столбца,равным значению заменяемого блока как 4-битового целого неотрицательного числа.
Шаг 3. Циклический сдвиг на 11 бит влево. Результат предыдущего шагасдвигается циклически на 11 бит в сторону старших разрядов и передается наследующий шаг. На схеме алгоритма символом Θ11 обозначенафункция циклического сдвига своего аргумента на 11 бит в сторону старшихразрядов.
Шаг 4. Побитовое сложение: значение, полученное на шаге 3, побитноскладывается по модулю 2 со старшей половиной преобразуемого блока.
Шаг 5. Сдвиг по цепочке: младшая часть преобразуемого блока сдвигается наместо старшей, а на ее место помещается результат выполнения предыдущего шага.
Шаг 6. Полученное значение преобразуемого блокавозвращается как результат выполнения алгоритма основного шагакриптопреобразования.
3.2.3 Базовые циклы криптографических преобразований
Базовые циклы построеныиз основных шагов криптографическогопреобразования, рассмотренного в предыдущем разделе. В процессе выполненияосновного шага используется только один элемент ключа, в то время как ключ ГОСТсодержит восемь таких элементов. Следовательно, чтобы ключ был использованполностью, каждый из базовых циклов должен многократно выполнять основной шаг сразличными его элементами.
Базовые циклы заключаютсяв многократном выполнении основного шагас использованием разных элементов ключа и отличаются друг от друга толькочислом повторения шага и порядком использования ключевых элементов. Нижеприведен этот порядок для различных циклов.
1. Цикл шифрования 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.
2. Цикл дешифрования 32-Р:
K0,K1,K2,K3,K4,K5,K6,K7,K7,K6,K5,K4,K3,K2,K1,K0,K7,K6,K5,K4,K3,K2,K1,K0, K7,K6,K5,K4,K3,K2,K1,K0.
3. Цикл выработки имитовставки 16-З:
K0,K1,K2,K3,K4,K5,K6,K7,K0,K1,K2,K3,K4,K5,K6,K7.
Каждый из циклов имеетсобственное буквенно-цифровое обозначение, соответствующее шаблону «n-X», где первый элемент обозначения (n), задает число повторений основного шага в цикле, авторой элемент обозначения (X), буква, задает порядок шифрования(«З») или дешифрования («Р») в использовании ключевых элементов. Цикл дешифрованиядолжен быть обратным циклу шифрования, то есть последовательное применение этихдвух циклов к произвольному блоку должно дать в итоге исходный блок. Длявыполнения этого условия для алгоритмов, подобных ГОСТу, необходимо идостаточно, чтобы порядок использования ключевых элементов соответствующимициклами был взаимообратным (рис. 2а,рис. 2б).
Схемы базовых цикловприведены на рисунках 2а, 2б, 2в. Каждый из них принимает в качестве аргументаи возвращает в качестве результата 64-битный блок данных, обозначенный насхемах N. Символ Шаг (N,Kj) обозначает выполнение основногошага криптопреобразования для блока Nс использованием ключевого элемента K.
Рис. 2а. Схема цикла шифрования 32-З.
Рис. 2б. Схема цикла дешифрования 32-Р.
Рис. 2в. Схема цикла выработки имитовставки 16-З.
3.2.4 Основные режимы шифрования
ГОСТ 28147-89предусматривает три следующих режима шифрования данных:
· простая замена,
· гаммирование,
· гаммирование с обратной связью.
Кроме того, предусмотрен одиндополнительный режим выработки имитовставки.
В любом из этих режимовданные обрабатываются блоками по 64 бита, на которые разбивается массив,подвергаемый криптографическому преобразованию, именно поэтому ГОСТ относится кблочным шифрам. Однако в двух режимах гаммирования есть возможность обработкинеполного блока данных размером меньше 8 байт, что существенно при шифрованиимассивов данных с произвольным размером, который может быть не кратным 8байтам.
Прежде чем перейти крассмотрению конкретных алгоритмов криптографических преобразований, необходимопояснить обозначения, используемые на схемах в следующих разделах:
Tо, Tш– массивы соответственно открытых и зашифрованныхданных;
– i-тые по порядку 64-битные блоки соответственнооткрытых и зашифрованных данных;
n– число 64-битных блоков в массиведанных;
ЦX– функция преобразования 64-битного блока данных по алгоритмубазового цикла «X».
Далее описаны режимышифрования по алгоритму ГОСТ 28147-89.
Простая замена.
Шифрование в данномрежиме заключается в применении цикла 32-З к блокам открытых данных, дешифрование– цикла 32-Р к блокам зашифрованных данных. Это наиболее простой из режимов,64-битовые блоки данных обрабатываются в нем независимо друг от друга. Схемыалгоритмов шифрования и дешифрования в режиме простой замены приведены нарисунках 3а и 3б соответственно.
Рис. 3а. Алгоритм шифрования данных врежиме простой замены.
Рис. 3б. Алгоритм дешифрования данныхв режиме простой замены.
Размер массива открытыхили зашифрованных данных, подвергающийся соответственно зашифрованию илирасшифрованию, должен быть кратен 64 битам: |Tо|=|Tш|=64· n, после выполнения операции размер полученного массива данных неизменяется.
Режим шифрования простойзаменой имеет следующие особенности:
1) Так как блоки данных шифруютсянезависимо друг от друга и от их позиции в массиве данных, при зашифрованиидвух одинаковых блоков открытого текста получаются одинаковые блоки шифртекстаи наоборот. Отмеченное свойство позволит криптоаналитику сделать заключение отождественности блоков исходных данных, если в массиве зашифрованных данных емувстретились идентичные блоки, что является недопустимым для серьезного шифра;
2) Если длина шифруемого массива данныхне кратна 8 байтам или 64 битам, возникает проблема, чем и как дополнятьпоследний неполный блок данных массива до полных 64 бит. Эта задача не такпроста, как кажется на первый взгляд. Очевидные решения типа «дополнитьнеполный блок нулевыми битами» или «дополнить неполный блок фиксированнойкомбинацией нулевых и единичных битов» могут при определенных условиях дать вруки криптоаналитика возможность методами перебора определить содержимое этогосамого неполного блока, и этот факт означает снижение стойкости шифра. Крометого, длина шифртекста при этом изменится, увеличившись до ближайшего целого,кратного 64 битам, что часто бывает нежелательным.
На первый взгляд,перечисленные выше особенности делают практически невозможным использованиережима простой замены, ведь он может применяться только для шифрования массивовданных с размером кратным 64 битам, не содержащим повторяющихся 64-битовыхблоков. Кажется, что для любых реальных данных гарантировать выполнениеуказанных условий невозможно. Это почти так, но есть одно очень важноеисключение: вспомните, что размер ключа составляет 32 байта, а размер таблицызамен – 64 байта. Кроме того, наличие повторяющихся 8-байтовых блоков в ключеили таблице замен будет говорить об их весьма плохом качестве, поэтому вреальных ключевых элементах такого повторения быть не может. Именно поэтомуГОСТ предписывает использовать режим простой замены исключительно дляшифрования ключевых данных.
Гаммирование.
Гаммирование – этоналожение (снятие) на открытые (зашифрованные) данные криптографической гаммы,т.е. последовательности элементов данных, вырабатываемых с помощью некоторогокриптографического алгоритма, для получения зашифрованных (открытых) данных.Для наложения гаммы при зашифровании и ее снятия при расшифровании должныиспользоваться взаимно обратные бинарные операции, например, сложение ивычитание по модулю 264 для 64-битовых блоков данных. В ГОСТе дляэтой цели используется операция побитового сложения по модулю 2, поскольку онаявляется обратной самой. Гаммирование решает обе вышеупомянутые проблемыпростой замены: во-первых, все элементы гаммы различны для реальных шифруемыхмассивов и, следовательно, результат шифрования даже двух одинаковых блоков водном массиве данных будет различным. Во-вторых, хотя элементы гаммы ивырабатываются одинаковыми порциями в 64 бита, использоваться может и частьтакого блока с размером, равным размеру шифруемого блока.
Гамма получаетсяследующим образом: с помощью некоторого алгоритмического рекуррентногогенератора последовательности чисел (РГПЧ) вырабатываются 64-битовые блокиданных, которые далее подвергаются преобразованию по циклу 32-З, то естьзашифрованию в режиме простой замены, в результате получаются блоки гаммы.Благодаря тому, что наложение и снятие гаммы осуществляется при помощи одной итой же операции побитового исключающегоили, алгоритмы шифрования и дешифрования в режиме гаммирования идентичны,их общая схема приведена на рисунке 4.
РГПЧ, используемый длявыработки гаммы, является рекуррентной функцией: где – элементырекуррентной последовательности, а f – функция преобразования. Неизбежновозникает вопрос о том, что же представляет из себя элемент синхропосылкой, а вГОСТе – начальным заполнением одного из регистров шифрователя. По определеннымсоображениям разработчики ГОСТа решили использовать для инициализации РГПЧ ненепосредственно синхропосылку, а результат ее преобразования по циклу 32-З: i (X) = f (fi–1(X)), f0 (X)= X. С учетом преобразования по алгоритму простой замены добавляется еще изависимость от ключа. Таким образом, последовательность элементов гаммы дляиспользования в режиме гаммирования однозначно определяется ключевыми данными исинхропосылкой.
Рис. 4. Алгоритм шифрования(дешифрования) в реж