Тема: Программные средства защиты информации в сетях

  • Вид работы:
    Диплом
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
  • Формат файла:
    MS Word
  • Размер файла:
    683,75 Кб
Программные средства защиты информации в сетях
Программные средства защиты информации в сетях
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Московский технологический институт «ВТУ»

Уровень образования: БАКАЛАВРИАТ

Направление: «Информатика и вычислительная техника»

Специализация: «Сети ЭВМ и телекоммуникации»







ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

на тему: «Программные средства защиты информации в сетях»

Студент Ковтун Дмитрий

Руководитель Казаков Виталий Гиясович





Москва 2013

Оглавление

Введение

1. Теоретическая часть

1.1 Обзор аналогов

1.1.1 BestCrypt Volume Encryption

1.1.2 AAP Safe Cryptor

1.1.3 Dekart Secrets Keeper

1.2 Криптографические алгоритмы

1.2.1 Алгоритм ГОСТ 28147-89

1.2.2 Алгоритм AES

1.2.3 Алгоритм Anubis

1.2.4 Алгоритм Lucifer

2. Аналитическая часть

2.1 Развернутое техническое задание

2.2 Обоснование выбора аппаратно-программных средств

2.3 Проектирование системы криптографической защиты

2.3.1 Разработка структурной схемы программы

2.3.2 Разработка модели информационных потоков данных

2.3.3 Разработка алгоритмического обеспечения

2.3.4 Разработка интерфейса программы

3. Конструкторско-технологическая часть

3.1 Технология разработки программы

3.2 Технология тестирования программы

3.2.1 Тесты для проверки работоспособности разработанной программы

3.2.2 Результаты тестирования

Заключение

Список литературы

Приложение

Введение

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

Тема дипломного проекта - «Программные средства защиты информации в сетях».

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

Объект исследования - система безопасности.

Комплексная защита включает в себя следующие системы:

·Система защиты информации от НСД и управления доступом;

·Система аутентификации и авторизованного доступа к ресурсам;

·Система криптографической защиты, ЭЦП, удостоверяющий центр;

·Система защиты сегмента фронтальных серверов от сетевых атак;

·Система активного аудита и обнаружения компьютерных атак;

·Система антивирусной защиты;

·Система защиты от спама.

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

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

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

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

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

Цель дипломного проекта - разработка программного обеспечения для реализации криптографической защиты информации.

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

1. Теоретическая часть

.1 Обзор аналогов

.1.1 BestCrypt Volume Encryption

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

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

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

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

Между тем продуктов, осуществляющих шифрование реальных разделов, на рынке совсем немного. Именно поэтому утилита BestCrypt Volume Encryption выгодно отличается от многих своих конкурентов.

Особо стоит отметить, что зашифровывать она может не только отдельные разделы жестких дисков или мобильных накопителей наподобие флеш-дисков, но и различные распределенные тома: простые распределенные (spanned volumes), зеркальные (mirrored volumes), чередующиеся (striped volumes) и тома RAID-5. Эта особенность позволяет использовать рассматриваемую программу для защиты коммерческих данных, размещенных на серверах.

Рис. 1.1 - Главное окно программы BestCrypt Volume Encryption

Алгоритмы шифрования, поддерживаемые программой:

·AES 256-бит;

·Blowfish 448-бит;

·CAST 128-бит;

·GOST 256-бит;

·RC6 256-бит;

·Serpent 256-бит;

·Twofish 256-бит;

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

К тому же вся система автоматически шифруется при переходе ее в "спящий режим" и BestCrypt Volume Encryption поддерживает несколько функций спасения, позволяющие пользователю расшифровать тома, если случается серьезная поломка диска.

Системные требования

Включая 32-битные версии и версии для 64-битных платформ AMD64

·Windows 7;

·Windows Vista;

·Windows XP;

·Windows 2008 Server;

·Windows 2003 Server;

·Windows 2000 Server;

·Windows 2000 Professional.

Стоимость лицензий

лицензия 117.41 у.е. (за 1 лицензию)

-4 лицензии: 111.63 у.е. (за 1 лицензию)

-9 лицензий: 105.85 у.е. (за 1 лицензию)

-19 лицензий: 99.95 у.е. (за 1 лицензию)

-49 лицензий: 94.05 у.е. (за 1 лицензию)

-500 лицензий: 88.15 у.е. (за 1 лицензию)

1.1.2 AAP Safe Cryptor

Программа AAP Safe Cryptor предназначена для шифровки и дешифровки файлов. Ключевой особенностью является особо стойкий алгоритм крипто-защиты, использующий ключи очень большого размера. По желанию пользователя размер ключевого файла может составлять от нескольких килобайт до сотен мегабайт. Рекомендуется использовать ключевой файл размером около 1 МБ, состоящий из 10 составных ключей. Он позволяет генерировать неповторяющуюся последовательность вплоть до 10 в 50 степени байтов, что надежно шифрует данные даже очень большого размера. Лучше всего использовать программу следующим образом: создается архив, состоящий из всех конфиденциальных файлов, далее он шифруется и зашифрованный файл переписывается на CD или DVD-диск, Flash-карту или другой носитель. Эти данные можно безопасно передать на хранение в банк или знакомым, передавать по открытым каналам связи, так как дешифровать их не имея ключевого файла и лог-файла невозможно.

Рис. 1.2 - Главное окно программы AAP Safe Cryptor

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

·Windows 7;

·Windows Vista;

·Windows XP;

Стоимость лицензий

и более штук: 5 000.00 руб. (за 1 штуку)

1.1.3 Dekart Secrets Keeper

Dekart Secrets Keeper это программа для защиты информации в среде Windows Explorer и Microsoft Office. Secrets Keeper позволяет шифровать файлы любого типа, включая документы Microsoft Word, Excel и PowerPoint, и предотвращает несанкционированный просмотр и изменение информации. Для шифрования применяется 256-битный алгоритм AES. Доступ к зашифрованной информации может быть осуществлен только при предъявлении правильного пароля или PIN-кода, если используется USB-токен или смарт-карта. Без пароля или PIN-кода зашифрованный файл совершенно нечитаем.Secrets Keeper добавляет две дополнительные кнопки на панель инструментов продуктов Microsoft Office, делая процесс шифрования и расшифрования документов простым и быстрым. Все что пользователь должен делать - это просто нажимать на кнопки "Открыть зашифрованный документ" или "Сохранить документ зашифрованно". Документы могут быть также открыты двойным щелчком из Windows Explorer.

Рис. 1.3 - Главное окно программы Dekart Secrets Keeper

Системные требования

·Windows 7;

·Windows Vista;

·Windows XP;

·Windows 2008 Server;

·Windows 2003 Server;

·Windows 2000 Server;

·Windows 2000 Professional.

Стоимость лицензий

и более лицензий: 24.00 у.е. (за 1 лицензию)

1.2 Криптографические алгоритмы

.2.1 Алгоритм ГОСТ 28147-89

Этот алгоритм является обязательным для применения в качестве алгоритма шифрования в государственных организациях РФ и ряде коммерческих [17, 18].

Описание алгоритма

Схема алгоритма ГОСТ 28147-89 показана на рис. 1.4 [4]. Как видно, схема этого алгоритма достаточно проста, что однозначно упрощает его программную или аппаратную реализацию.

Алгоритм ГОСТ 28147-89 шифрует информацию блоками по 64 бита, которые разбиваются на два субблока по 32 бита ( и ). Субблок определенным образом обрабатывается, после чего его значение складывается со значением субблока (сложение выполняется по модулю 2), затем субблоки меняются местами. Такое преобразование выполняется определенное количество раундов: 16 или 32 в зависимости от режима работы алгоритма.

Рис. 1.4 - Схема алгоритма ГОСТ 28147-89

В каждом раунде выполняются следующие операции:

. Наложение ключа. Содержимое субблока складывается по модулю 232 с частью ключа .

Ключ шифрования алгоритма ГОСТ 28147-89 имеет размерность 256 битов, а - это его 32-битная часть, т. е. 256-битный ключ шифрования представляется в виде конкатенации 32-битных подключей (рис. 1.5):

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

. Табличная замена. После наложения ключа субблок разбивается на 8 частей по 4 бита, значение каждой из которых по отдельности заменяется в соответствии с таблицей замены для данной части субблока. Табличные замены (Substitution box, S-box) часто используются в современных алгоритмах шифрования, поэтому стоит рассмотреть их подробнее.

Рис. 1.5 - Ключ шифрования алгоритма ГОСТ 28147-89

Табличная замена используется таким образом: на вход подается блок данных определенной размерности (в этом случае - 4-битный), числовое представление которого определяет номер выходного значения. Например, имеем S-box следующего вида:

, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1.

Пусть на вход пришел 4-битный блок «0100», т. е. значение 4. Согласно таблице, выходное значение будет равно 15, т.е. «1111» (0 заменяется на 4, 1 - на 11, значение 2 не изменяется и т. д.).

Как видно, схема алгоритма весьма проста, что означает, что наибольшая нагрузка по шифрованию данных ложится на таблицы замен. К сожалению, алгоритм обладает тем свойством, что существуют «слабые» таблицы замен, при использовании которых алгоритм может быть раскрыт криптоаналитическими методами. К числу слабых относится, например, таблица, в которой выход равен входу [16]:

, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

. Побитовый циклический сдвиг влево на 11 битов.

Криптостойкость алгоритма.

В 1994 г. описание алгоритма ГОСТ 28147-89 было переведено на английский язык и опубликовано, именно после этого стали появляться результаты его анализа, выполненного зарубежными специалистами; однако в течение значительного времени не было найдено каких-либо атак, приближающихся к практически осуществимым.

Высокая стойкость алгоритма ГОСТ 28147-89 достигается за счет следующих факторов [16]:

·большой длины ключа- 256 битов; вместе с секретной синхропосылкой эффективная длина ключа увеличивается до 320 битов;

·32 раундов преобразований; уже после 8 раундов достигается полный эффект рассеивания входных данных: изменение одного бита блока открытого текста повлияет на все биты блока шифртекста, и наоборот, т. е. существует многократный запас стойкости.

1.2.2 Алгоритм AES

Алгоритм AES представляет блок данных в виде двумерного байтового массива размером 4x4. Все операции производятся над отдельными байтами массива, а также над независимыми столбцами и строками.

В каждом раунде алгоритма выполняются следующие преобразования (рис. 1.6):

. Операция SubBytes, представляющая собой табличную замену каждого байта массива данных согласно таблице (рис. 1.7).

Рис. 1.6 - Раунд алгоритма

Рис. 1.7 - Таблица замен для алгоритма AES

/ Операция ShiftRows, которая выполняет циклический сдвиг влево всех строк массива данных, за исключением нулевой. Сдвиг -й строки массива (для ) производится на байтов.

. Операция MixColumns. Выполняет умножение каждого столбца массива данных, который рассматривается как полином в конечном поле , на фиксированный полином :


Умножение выполняется по модулю .

. Операция AddRoundKey. Выполняет наложение на массив данных материала ключа. А именно, на -й столбец массива данных () побитовой логической операцией «исключающее или» (XOR) накладывается определенное слово расширенного ключа , где - номер текущего раунда алгоритма, начиная с 1.

Зависимость количества раундов алгоритма R от размера ключа приведена в табл. 1.1.

Таблица 1.1 - зависимость количества раундов от размера ключа

Размер ключа в битахКоличество раундов128101921225614

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

Последний же раунд отличается от предыдущих тем, что в нем не выполняется операция MixColumns.

Расшифровывание выполняется применением обратных операций в обратной последовательности. Соответственно, перед первым раундом расшифровывания выполняется операция AddRoundKey (которая является обратной самой себе), накладывающая на шифртекст четыре последних слова расширенного ключа, т. е. .

Затем выполняется R раундов расшифровывания.

1.2.3 Алгоритм Anubis

Алгоритм назван в честь древнеегипетского бога Анубиса- бога бальзамирования (embalming) и погребения (entombment); к его ведению авторы алгоритма решили отнести и криптографию[40].шифрует данные блоками по 128 битов с использованием ключа размером от 128 до 320 битов; размер ключа должен быть кратен 32 битам. Алгоритм представляет блок шифруемых данных в виде 16-байтового массива, который для удобства описания представлен в виде квадрата размером 4x4 байта. В каждом раунде алгоритма выполняются следующие действия [40]: 1. Табличная замена , выполняемая согласно таблицы с шестнадцатеричными значениями.

Значения таблицы выбираются псевдослучайным образом с учетом необходимости ее соответствия следующему соотношению:


. Операция - байтовая перестановка, простейшим образом преобразующая строку обрабатываемого блока ключевой информации в столбец:


где и - байты массива данных до и после выполнения текущей операции соответственно. 3. Операция , представляющая собой умножение массива на фиксированную матрицу (табл. 1.2).

программный криптографический защита информационный

Таблица 1.2 - Матрица

1246216446126421

Умножение выполняется в конечном поле .

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


Эта операция обозначается как .

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

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

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


где N - размер ключа в 32-битных фрагментах.

1.2.4 Алгоритм Lucifer

Принятый в США стандарт шифрования DES был основан на алгоритме Lucifer, разработанном в начале 1970-х гг. Алгоритм Lucifer и его история являются достаточно интересными и заслуживают отдельного рассмотрения.часто называют «первым алгоритмом шифрования для гражданских применений». На самом деле Lucifer представляет собой не один алгоритм, а целое семейство связанных между собой (разработанных в рамках одноименной исследовательской программы по компьютерной криптографии фирмы IBM [28]), но созданных в разное время, алгоритмов блочного симметричного шифрования данных.

По словам Брюса Шнайера [28], «существует, по меньшей мере, два различных алгоритма с таким именем, что ... привело к заметной путанице». Рассмотрим поочередно различные варианты алгоритма Lucifer.

Вариант № 1

Исходный вариант алгоритма Lucifer был разработан коллективом специалистов из компании IBM под руководством Хорста Фейстеля (Horst Feistel). Этот вариант алгоритма был запатентован компанией IBM в 1971 г. (патент выдан в 1974 г.), его подробное описание можно найти в патенте США №3798359.

Этот вариант алгоритма шифрует данные блоками по 48 битов, используя при этом 48-битный ключ шифрования.

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

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

Рис. 1.8 - Обобщенная схема варианта № 1

. Перемешивающее преобразование. Выполняется нелинейное преобразование данных, полученных в результате предыдущей операции, путем табличной замены, зависящей от значения конкретного бита ключа раунда. Причем такая зависимость является достаточно простой: если значение управляющего бита равно 1, выполняется табличная замена So, в противном случае используется таблица Si.

Каждый нибл данных заменяется независимо от других данных; таким образом, таблицы заменяют 4-битное входное значение также на 4-битное выходное.

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

,5,4,0,7,6,10,1,9,14,3,12,8,15,13,11.

Это означает, что входное значение 0 заменяется значением 2, значение 1 заменяется на 5 и т. д. до значения 15, которое заменяется на 11.

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

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

·48 битов для блока обратной связи;

·12 битов для блока перемешивания;

·48 битов для блока наложения ключа.

Для получения 16 108-битных раундовых ключей из исходного 48-битного ключа шифрования выполняется процедура расширения ключа (рис. 1.9):

. 48-битный ключ загружается в 8-битные регистры .

. Из этих регистров «набирается» необходимое количество битов ключевой информации с помощью расширяющей перестановки . Операция не выполняет каких-либо вычислений, получение 108 битов ключевой информации из 48 происходит путем неоднократного использования определенных битов ключевых регистров . Ключевая перестановка не описана подробно в спецификации алгоритма.

. Для получения ключевой информации для следующего раунда выполняется побитовый циклический сдвиг на 1 бит содержимого каждого из ключевых регистров . Затем снова производится перестановка . Этот шаг повторяется в цикле необходимое число раз до завершения работы алгоритма.

Рис. 1.9 - Процедура расширения ключа в варианте № 1

Вариант № 2

По современным меркам 48-битный размер ключа шифрования является абсолютно недостаточным; видимо, подобные мысли были и у разработчиков алгоритма Lucifer, поэтому уже в том же 1971 г. появился второй вариант алгоритма, шифрующий данные 64-битным ключом. Однако второй вариант шифровал блоками всего по 32 бита, что также явно недостаточно (поскольку при -битном блоке после зашифровывания порядка блоков открытого текста на одном и том же ключе начинает происходить утечка информации о шифруемых данных).

Этот вариант алгоритма, как и предыдущий, запатентован фирмой IBM и описан в патенте.

Между вариантами № 2 и № 1 существенно больше различий, чем сходств. Второй вариант алгоритма разбивает шифруемый 32-битный блок данных на два субблока по 16 битов и выполняет 16 раундов преобразований, в каждом из которых выполняется следующая последовательность операций (общая структура алгоритма приведена на рис. 1.10):

Рис. 1.10 - Структура варианта № 2

. Шифруемый блок данных разбивается на два субблока: и .

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

. Каждый из фрагментов складывается по модулю 16 с - 4-битным фрагментом ключа раунда для операции сложения, где:

- номер обрабатываемого фрагмента;

- номер текущего раунда.

. Над каждым из фрагментов выполняется зависящая от ключа табличная замена: обрабатываемый фрагмент заменяется 4-битным значением согласно табл. 1.2.

Таблица 1.2.


где:

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

- обратное значение для .

Согласно входному значению, из таблицы выбираются битовые значения , например, для входного значения 14 и будут получены следующие значения:

. Выполняется наложение операцией последовательности , представляющей собой результат обработки фрагмента субблока , на определенные биты субблока . Биты субблока , участвующие в данной операции, выбираются с участием определенного 4-битного фрагмента ключа раунда согласно табл. 1.3.

Таблица 1.3.


Управляющим битом для является бит фрагмента .

Вариант № 3

Это наименее подробно описанный вариант алгоритма Lucifer, его описание приведено в статье [25]. Судя по описанию, алгоритм представляет собой последовательность следующих операций (рис. 1.11):

·управляемые контрольными битами секретного ключа табличные замены - аналогично варианту № 1, в зависимости от значения контрольного бита ключа выполняется замена или .

·фиксированные битовые перестановки .

Рис. 3.11 - Структура варианта № 3

Многократное повторение этих операций и представляет собой алгоритм шифрования.

В статье [25] не указывается подавляющее большинство параметров алгоритма: нет ни точного количества раундов, ни значений таблиц замен и перестановок, не указаны размер блока и ключа (128-битные блоки и ключи указываются лишь в качестве возможных значений). Таким образом, данный вариант алгоритма Lucifer является еще более «шаблонным», чем вариант №1. Стоит отметить тот факт, что даже всемирно известные эксперты в области криптографии делают различные предположения о том, какой из вариантов алгоритма Lucifer был предшественником алгоритма DES.

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

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

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

2. Аналитическая часть

.1 Развернутое техническое задание

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

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

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

Основание для разработки

Система разрабатывается на основании договора № 1267 от 21.01.2013 между ООО «Симплекс» и компанией «Интерсвязь».

Назначение

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

Требования к функциональным характеристикам

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

шифровка / расшифровка файлов;

шифровка / расшифровка сообщений.

Требования к надежности

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

Требования к составу и параметрам технических средств

Система должна работать на IBM-совместимых персональных компьютерах. Минимальная конфигурация:

один и более процессоров Intel или AMD с частотой от 1000 Мгц;

оперативная память, объёмом 512 Мб;

VGA видео карта;

дисплей;

жесткий диск емкостью 40 Гб;

клавиатура;

манипулятор типа «мышь».

Требования к информационной и программной совместимости

Система должна работать под управлением операционных систем семейства Windows.

Требования к программной документации

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

2.2 Обоснование выбора аппаратно-программных средств

Для работы разрабатываемого ПО необходимо наличие персонального компьютера типа IBM PC со следующими характеристиками:

·один и более процессоров Intel или AMD с частотой от 1000 Мгц;

·оперативная память, объёмом 512 Мб;

·VGA видео карта;

·дисплей;

·жесткий диск емкостью 40 Гб;

·клавиатура;

·манипулятор типа «мышь»;

В качестве ОС клиентских машин целесообразно выбрать Windows XP (локализованную версию), как одну из наиболее хорошо поддерживаемых клиентских ОС.

Для разработки программного обеспечения была выбрана среда Borland Delphi.++Builder и Delphi стали одними из самых популярных на сегодняшний день инструментов для создания как настольных, так и корпоративных информационных систем благодаря уникальному сочетанию удобства разработки пользовательских интерфейсов, компонентной архитектуры, однотипности доступа к разнообразным базам данных, начиная от плоских таблиц формата dBase и Paradox и кончая серверными СУБД. Во многом именно наличие таких продуктов стимулировало достаточно безболезненный перенос в архитектуру клиент/сервер ряда информационных систем, модернизация которых иными средствами была бы сопряжена с большими трудовыми и материальными затратами.

Следует отметить, что современные тенденции развития инструментальных средств таковы, что актуальным становится не просто появление новых гибких и мощных средств разработки, а создание семейств таких продуктов с похожими средами и принципами создания приложений, что в целом повторяет идеологию формирования офисных пакетов (текстовый процессор + электронная таблица + настольная СУБД + презентационный пакет) вместо выпуска отдельных офисных приложений. Если рассматривать линию продуктов Inprise, то в данный момент на рынке средств разработки присутствуют Delphi и C++Builder, а также сходные по методам создания приложений и среде JBuilder, IntraBuilder, Visual dBase.

Сходство C++Builder и Delphi не является чисто внешним. C++Builder обладает компонентной архитектурой и создан на основе библиотеки визуальных компонентов Delphi, ставшей за последние два года весьма популярной среди разработчиков. По этой причине этот продукт имеет общую с Delphi библиотеку классов, часть из которых написана на Object Pascal.

Однако совместимость C++Builder и Delphi этим не исчерпывается. В проектах C++Builder можно использовать не только библиотеку компонентов Delphi, но и код, написанный на Object Pascal, а также формы и модули Del-phi. Поддерживается визуальное наследование форм и модулей данных, в том числе и созданных в Delphi. Эти возможности появились благодаря включению в C++Builder обоих компиляторов C++ и Object Pascal.

Это означает, что можно создавать общие проекты, используя оба средства разработки - и C++BuiIder, и Delphi. Части одного приложения могут быть созданы с помощью двух средств, и теперь к работе над проектом можно привлекать разработчиков, использующих как Delphi, так и C++. Во-вторых, и это очень важно, C++Builder может использовать компоненты, созданные для Delphi, а их за последние несколько лет создано огромное количество. Это богатство, накопленное разработчиками всего мира, сегодня способно удовлетворить самые причудливые запросы.предоставляет программисту широкие возможности повторного использования кода не только за счет наличия библиотеки компонентов, но и за счет поддержки стандарта ActiveX, что позволяет встраивать в приложения ActiveX-компоненты как сторонних производителей, так и созданные собственноручно с помощью самого Delphi

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

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

2.3 Проектирование системы криптографической защиты

.3.1 Разработка структурной схемы программы

Программа условно подразделяется на блоки:

·Интерфейс пользователя;

·Шифрование файлов;

·Шифрование сообщений;

·Расшифровка файлов;

Структурная схема программы представлена на рисунке 2.1.





Рис. 2.1 - Структурная схема программы

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

Сообщения - шифрование/расшифровка сообщений;

Выход - завершение работы с программой.

Шифрование/расшифровка файлов вынесены на главную форму программы.

2.3.2 Разработка модели информационных потоков данных

Модель информационных потоков представлена на рис. 2.2.








Рис. 2.2 - Модель информационных потоков

2.3.3 Разработка алгоритмического обеспечения

Исходный код шифрования/расшифровки файлов.

procedure TForm1.Button1Click(Sender: TObject);

var: TDCP_rijndael;: string;, Dest: TFileStream;:= '';Button1.Caption='Зашифровать' then:= TFileStream.Create(Edit1.Text,fmOpenRead);:= TFileStream.Create(Edit2.Text,fmCreate);:= TDCP_rijndael.Create(Self);.Init(KeyStr,sizeof(KeyStr)*8,nil);// инициализация.EncryptStream(Source,Dest,Source.Size); // шифруем.Burn;.Free;.Free;.Free;('Файл успешно зашифрован',mtInformation,[mbOK],0);('Ошибка ввода/вывода',mtError,[mbOK],0);;:= TFileStream.Create(Edit1.Text,fmOpenRead);:= TFileStream.Create(Edit2.Text,fmCreate);:= TDCP_rijndael.Create(Self);.Init(KeyStr,sizeof(KeyStr)*8,nil);// инициализация.DecryptStream(Source,Dest,Source.Size); // расшифровываем.Burn;.Free;.Free;.Free;('Файл успешно расшифрован',mtInformation,[mbOK],0);('Ошибка ввода/вывода',mtError,[mbOK],0);;;.Text:='';.Text:='';.Enabled:=False;;

Исходный код шифрования сообщения.

procedure TForm2.Button1Click(Sender: TObject);

var: HCRYPTHASH;: HCRYPTKEY;, DataLen: DWORD;: String;.Enabled:=false;.Enabled:=true;(Prov,CALG_SHA,0,0,@Hash);(Hash,PByte(Password),Length(Password),0);(Prov,CALG_RC2,Hash,0,@Key);.Clear;.WriteBuffer(Pointer(mmIn.Text)^,Length(mmIn.Text));:=Length(mmIn.Text);(Key,0,true,0,nil,@BufLen,0);.SetSize(BufLen);(Key,0,true,0,PByte(Stream.Memory),@DataLen,BufLen);(Str,BufLen);.Seek(0,soFromBeginning);.ReadBuffer(Pointer(Str)^,BufLen);.Text:=Str;(Key);(Hash);;

Исходный код расшифровки сообщения.

procedure TForm2.Button2Click(Sender: TObject);

var: HCRYPTHASH;: HCRYPTKEY;: DWORD;: String;.Enabled:=false;.Enabled:=true;(Prov,CALG_SHA,0,0,@Hash);(Hash,PByte(Password),Length(Password),0);(Prov,CALG_RC2,Hash,0,@Key);:=Stream.Size;(Key,0,true,0,PByte(Stream.Memory),@DataLen);(Str,DataLen);.Seek(0,soFromBeginning);.ReadBuffer(Pointer(Str)^,DataLen);.Text:=Str;(Key);;

2.3.4 Разработка интерфейса программы

Главное окно программы представлено на рис. 2.3.

Рис. 2.3 - Главное окно программы

Окно для шифрования/расшифровки сообщений представлено на рис. 2.4.

Рис. 2.4 - Окно для шифрования/расшифровки сообщений

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

3. Конструкторско-технологическая часть

.1 Технология разработки программы

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

Этапы разработки приложений.

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











Рисунок 3.1 - Основные фазы разработки программы

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

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

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

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

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

Заметим, что разработка программного обеспечения (ПО) - итерационный процесс, некоторые этапы которого могут перекрываться.

Действия, выполняемые при разработке ПО, лучше производить в группе. Групповой подход к проектированию имеет следующие преимущества:

·Скорость - быстрое получение промежуточных результатов;

·Использование опыта членов группы - разрешение вопросов с использованием опыта всех членов группы.

Число людей, работающих над проектом, зависит от масштаба проекта, времени, отпущенного на создание ПО и суммы бюджета. На количество разработчиков влияют:

·Эффективность организационной структуры;

·Степень важности проекта;

·Уровень профессионализма членов группы.

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

Таблица 3.1 - Функции участников проекта

ФункцияОбязанностиОтветственный за выпуск ПОРабота с клиентами, определение общих требований к ПО, детализация требований.Руководитель проектаРуководство проектом, определение сроков окончания промежуточных этапов. Информирование руководства о ходе реализации проекта.ПрограммистРазработка структуры программы, написание кода и выявление ошибок.Тестер (испытатель)Разработка плана тестирования и тестовых последовательностей, оценка качества программы и документации, проверка соответствия программы и проектаОтветственный за документированиеРазработка системы справочной информации, руководства пользователя и других материалов.

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

Промежуточные результаты и их контроль.

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

·Выявить требования.

·Разработать проект в общих чертах.

·Определить план разработки.

·Разработать альфа-версию.

·Разработать бета-версию.

·Разработать окончательную версию.

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

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

Определен план разработки. Группа разработала план кодирования, тестирования, документирования и поставки программного продукта. План позволяет разделить проект на этапы и выделить ресурсы на их выполнение. Кроме того, выявляются препятствия, которые могут помешать своевременной реализации проекта.

Разработка альфа-версии. Программисты построили полностью работоспособную (или почти работоспособную) версию программного продукта (функциональный прототип). Проект разработан во всех деталях, включая все средства для задания условий на значения, исправления ошибок, обеспечения защиты и создания отчетов. Основные функциональные возможности реализованы и работают, хотя некоторые специальные средства могут быть не готовы и имеется большое число ошибок. На основе альфа-версии можно проводить тесты над всем программным продуктом. Начиная с этого времени, необходимо хранить записи об ошибках, классифицируя их по степени серьезности. Кроме того, требуется начать составление документации.

Разработка бета-версии. Группа создала опытную версию программного продукта, которую пользователи могут установить и проверить. На данном этапе требуется определить необходимый уровень качества для бета-версии. Следует убедиться, что пользователь может инсталлировать программу. Для этого требуется установить программный продукт во всех операционных средах, которые могут применяться пользователем.

Разработчики должны также устранить все серьезные ошибки. Число и степень серьезности ошибок должны быть достаточно низкими, хотя все зависит от цели выпуска опытной версии и отношений с пользователями. Обычно ошибки, которые приводят к большим проблемам, устраняются полностью перед распространением бета-версии. Однако если требуется получить отзыв о некоторых возможностях продукта немедленно, то можно оставить ошибки, которые не отражаются на работе интересующих разработчиков средств. Не распространяйте бета-версию, если она содержит ошибки, которые могут испортить данные пользователя.

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

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

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

Разработка окончательной версии. Окончательная версия разработана и отлажена, а документация проверена. Устранены все серьезные ошибки, а документация является точной и полной. Программный продукт подготовлен к распространению.

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

3.2 Технология тестирования программы

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

1. Запуск программы.

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

. Работа диалогов открытия и сохранения файлов.

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

Также проверяется обработка ошибки при совпадении имен файлов до и после преобразования.

. Работа шифрованием файлов.

Проверка операций шифрования и расшифрования файлов.

. Работа шифрованием сообщений.

Проверка операций шифрования и расшифрования сообщений.

. Завершение работы с программой.

Проверка корректности завершения работы программы при нажатии кнопки «Выход».

3.2.2 Результаты тестирования

1. Запуск программы.

Рис. 3.2 - Результат запуска программы

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

Тест пройден успешно.

. Работа диалогов открытия и сохранения файлов.

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

Рис. 3.3 - Диалог открытия файла

Рис. 3.4 - Диалог сохранения файла

Проверим обработку ошибки при совпадении имен файлов до и после преобразования.

Рис. 3.5 - Сообщение об ошибке

Тест пройден успешно.

. Работа шифрованием файлов.

Проверим операции шифрования и расшифрования файлов.

Рис. 3.6 - Выбор файла для шифрования и задание имени файлу результата

Нажимаем кнопку «Зашифровать».

Рис. 3.7 - Сообщение о зашифровке файла

Рис. 3.8 - Исходный и зашифрованный файлы

Шифрование файла изменило структуру, поэтому открыть его программой WinDjView невозможно.

Выполним расшифровку файла.

Рис. 3.9 - Выбор зашифрованного файла и задание имени файлу результата

Нажмем кнопку «Расшифровать».

Рис. 3.10 - Сообщение о расшифровке файла

Рис. 3.11 - Открытие расшифрованного файла

Тест успешно пройден.

. Работа шифрованием сообщений.

Выбираем в пользовательском меню пункт «Сообщения».

Рис. 3.12 - Окно для шифрования/расшифровки сообщений

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

Рис. 3.13 - Ввод исходного сообщения

Нажимаем кнопку «Зашифровать».

Рис. 3.14 - Результат шифрования сообщения

Проверим операцию расшифрования сообщения.

Копируем текст из нижней части окна в верхнюю часть. Нажимаем кнопку «Расшифровать».

Рис. 3.15 - Результат расшифровки сообщения

Тест успешно пройден.

. Завершение работы с программой.

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

Тест пройден.

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

Заключение

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

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

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

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

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

. Разработкой методов преобразования (шифрования) информации с целью ее защиты от незаконных пользователей занимается криптография. Такие методы и способы преобразования информации называются шифрами.

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

В рамках дипломного проекта было разработано программное обеспечение для криптографической информации.

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

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

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

Список литературы

1.Беляев А. В. Методы и средства защиты информации (курс лекций) // #"justify">.Беляев А. В., Панасенко С. П., Петренко С. А. Перспективы прикладной криптографии // Защита информации. Конфидент. 2001. № 6. с. 70-78.

.Брассар Ж. Современная криптология. - Пер. с англ.: М: Полимед, 1999 - 176 с.

.ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. М.: Госстандарт СССР, 1989.

.Киви Б. Конкурс на новый криптостандарт AES // #"justify">.Панасенко С. П. Атаки на алгоритмы шифрования // BYTE. 2004. № 11. с. 77-79.

.Панасенко С. П. Конкурсы AES и NESSIE // 2004. № 12. с. 88-92.

.Панасенко С. П. Конкурс NESSIE и алгоритм MISTY 1 // Банки и технологии. 2004. № 5. с. 76-79.

.Панасенко С. П. Назначение и структура алгоритмов шифрования // iXBT. - #"justify">.Панасенко С. П. «Неудачники» конкурса AES: алгоритм шифрования Е2 // Банки и технологии. 2003. № 6. с. 82-85.

.Панасенко С. П. Современные алгоритмы шифрования // BYTE. 2003. № 8. с. 18-22.

.Панасенко С. П. Стандарт шифрования США // Мир и безопасность. 2003. №6. с. 29-31.

.Панасенко С. П. NESSIE - конкурс криптоалгоритмов // Управление безопасностью. 2004. № 3. с. 23-25.

.Панасенко С. П., Батура В. П. Основы криптографии для экономистов: учебное пособие. Под ред. Л. Г. Гагариной. - М.: Финансы и статистика, 2005 - 176 с.

.Панасенко С., Удовицкий А. Алгоритм шифрования SAFER+ // Банки и технологии. 2004. № 2. с. 60-64.

.Петров А. А. Компьютерная безопасность: криптографические методы защиты. - М.: ДМК, 2000. 448 с.

.Положение ФАПСИ «Система сертификации средств криптографической защиты информации». Октябрь 1993//#"justify">.Приказ ФАПСИ от 23.09.1999 г. № 158. «Об утверждении положения о порядке разработки, производства, реализации и использования средств криптографической защиты информации с ограниченным доступом, не содержащей сведений, составляющих государственную тайну» // Российская газета. 2000. № 18.

.Применко Э. А., Винокуров А. А. Сравнение российского стандарта шифрования алгоритма ГОСТ 28147-89 и алгоритма Rijndael, выбранного в качестве нового стандарта шифрования США // Системы безопасности. 2001. № 1. с. 79-82.

.Религии мира. Справочник. - Пер. с англ.: М.: Белфаксиздатгрупп, 1994.

.Романец Ю. В., Тимофеев П. А., Шаньгин В. Ф. Защита информации в компьютерных системах и сетях. 2-е издание - М: Радио и связь, 2001 - 376 с.

.Ростовцев А. Г., Маховенко Е. Б. Два подхода к анализу блочных шифров // #"justify">.Ростовцев А. Г., Маховенко Е. Б., Филиппов А. С, Чечулин А. А. О стойкости ГОСТ 28147-89 // #"justify">.Соколов А. В., Шаньгин В. Ф. Защита информации в распределенных корпоративных сетях и системах. - М.: ДМК Пресс, 2002. 656 с.

.Фейстель X. Криптография и компьютерная безопасность. - Пер. с англ.: А. Винокуров - #"justify">.Шеннон К. Теория связи в секретных системах. - Пер. с англ.: В. Ф. Писаренко. - #"justify">.Шнайер Б. Курс самоподготовки по криптоанализу блочных шифров. - Пер. с англ: Быбин С. С. - #"justify">.Adams С. RFC 2144: The CAST-128 Encryption Algorithm // Entrust Technologies, May 1997 - #"justify">.Adams C, Gilchrist J. RFC 2612: The CAST-256 Encryption Algorithm // Entrust Technologies, June 1999 - #"justify">.Advanced Encryption Standard (AES). Questions and Answers // #"justify">.AES Round 1 Information // #"justify">.Anderson R., Biham E. Two Practical and Provably Secure Block Ciphers: BEAR and LION // #"justify">.Anderson R., Biham E., Knudsen L. Serpent: A Proposal for the Advanced Encryption Standard // #"justify">.Aoki K., Ichikawa Т., Kanda M., Matsui M., Moriai S., Nakajima J., Tokita T. Camellia: A 128-Bit Block Cipher Suitable for Multiple Platforms // #"justify">.Baldwin R., Rivest R. RFC 2040: The RC5, RC5-CBC, RC5-CBC-Pad, and RC5-CTS Algorithms // #"justify">.Bar-El H., Choukri H., Naccache D., Tunstall M., Whelan C. The Sorcerer's Apprentice Guide to Fault Attacks // #"justify">.Barkan E., Biham E., Keller N. Instant Ciphertext-Only Cryptanalysis of GSM Encrypted Communication // #"justify">.Barreto P. S. L. M., Rijmen V. The Anubis Block Cipher // #"justify">Приложение. Исходный текст программы

Main;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Menus, XPMan, StdCtrls, DCPrijndael, DCPcrypt2, DCPblockciphers;= class(TForm): TXPManifest;: TMainMenu;: TMenuItem;: TMenuItem;: TLabel;: TLabel;: TLabel;: TButton;: TEdit;: TEdit;: TButton;: TButton;: TComboBox;: TOpenDialog;: TSaveDialog;N2Click(Sender: TObject);N1Click(Sender: TObject);Button4Click(Sender: TObject);Button5Click(Sender: TObject);Button1Click(Sender: TObject);ComboBox1Change(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;

implementationShifrMessage;

{$R *.dfm}TForm1.N2Click(Sender: TObject);

begin.Close;;

procedure TForm1.N1Click(Sender: TObject);

begin.ShowModal;;

procedure TForm1.Button4Click(Sender: TObject);

beginOpenDialog1.Execute then.Text:= OpenDialog1.FileName;;(Edit1.Text<>'') and (Edit2.Text<>'') then.Enabled:=True;;

procedure TForm1.Button5Click(Sender: TObject);

beginSaveDialog1.Execute then.Text:=SaveDialog1.FileName;;Edit1.Text=Edit2.Text then.Text:='';('Имена исходного файла и файла-результата идентичны!',mtError,[mbOK],0);;(Edit1.Text<>'') and (Edit2.Text<>'') then.Enabled:=True;;

procedure TForm1.Button1Click(Sender: TObject);

var: TDCP_rijndael;: string;, Dest: TFileStream;:= '';Button1.Caption='Зашифровать' then:= TFileStream.Create(Edit1.Text,fmOpenRead);:= TFileStream.Create(Edit2.Text,fmCreate);:= TDCP_rijndael.Create(Self);.Init(KeyStr,sizeof(KeyStr)*8,nil);// инициализация.EncryptStream(Source,Dest,Source.Size); // шифруем.Burn;.Free;.Free;.Free;('Файл успешно зашифрован',mtInformation,[mbOK],0);('Ошибка ввода/вывода',mtError,[mbOK],0);;:= TFileStream.Create(Edit1.Text,fmOpenRead);:= TFileStream.Create(Edit2.Text,fmCreate);:= TDCP_rijndael.Create(Self);.Init(KeyStr,sizeof(KeyStr)*8,nil);// инициализация.DecryptStream(Source,Dest,Source.Size); // расшифровываем.Burn;.Free;.Free;.Free;('Файл успешно расшифрован',mtInformation,[mbOK],0);('Ошибка ввода/вывода',mtError,[mbOK],0);;;.Text:='';.Text:='';.Enabled:=False;;

procedure TForm1.ComboBox1Change(Sender: TObject);

beginComboBox1.Text='Зашифровать' then.Caption:='Зашифровать'.Caption:='Расшифровать';;.ShifrMessage;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls,Wcrypt2;= class(TForm): TLabel;: TButton;: TMemo;: TButton;: TMemo;: TButton;Button3Click(Sender: TObject);FormCreate(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);Button1Click(Sender: TObject);Button2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm2;: String = 'Пароль';: HCRYPTPROV;: TMemoryStream;

{$R *.dfm}TForm2.Button3Click(Sender: TObject);

begin.Close;;

procedure TForm2.FormCreate(Sender: TObject);

begin(@Prov,nil,nil,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT);:=TMemoryStream.Create;;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);

begin.Free;(Prov,0);;

procedure TForm2.Button1Click(Sender: TObject);

var: HCRYPTHASH;: HCRYPTKEY;, DataLen: DWORD;: String;.Enabled:=false;.Enabled:=true;(Prov,CALG_SHA,0,0,@Hash);(Hash,PByte(Password),Length(Password),0);(Prov,CALG_RC2,Hash,0,@Key);.Clear;.WriteBuffer(Pointer(mmIn.Text)^,Length(mmIn.Text));:=Length(mmIn.Text);:=Length(mmIn.Text);(Key,0,true,0,nil,@BufLen,0);.SetSize(BufLen);(Key,0,true,0,PByte(Stream.Memory),@DataLen,BufLen);(Str,BufLen);.Seek(0,soFromBeginning);.ReadBuffer(Pointer(Str)^,BufLen);.Text:=Str;(Key);(Hash);;

procedure TForm2.Button2Click(Sender: TObject);

var: HCRYPTHASH;: HCRYPTKEY;: DWORD;: String;.Enabled:=false;.Enabled:=true;(Prov,CALG_SHA,0,0,@Hash);(Hash,PByte(Password),Length(Password),0);(Prov,CALG_RC2,Hash,0,@Key);:=Stream.Size;(Key,0,true,0,PByte(Stream.Memory),@DataLen);(Str,DataLen);.Seek(0,soFromBeginning);.ReadBuffer(Pointer(Str)^,DataLen);.Text:=Str;(Key);(Hash);;.

Похожие работы

 

Не нашел материал для курсовой или диплома?
Поможем написать качественную работу
Без плагиата!