Разработка прикладной программы по шифрованию файлов

Автор работы: Пользователь скрыл имя, 26 Ноября 2012 в 11:47, дипломная работа

Описание работы

Целью дипломного проекта является разработка подсистемы криптографической защиты экономической информации в рамках одного частного предприятия. В качестве объекта автоматизации выбран бухгалтерский отдел предприятия.
Для достижения цели необходимо решить следующие задачи:
Провести анализ деятельности предприятия;
Разработать криптографическую программу;
Рассчитать экономическую эффективность проекта;
Определить требования к безопасности и охране труда;

Файлы: 1 файл

Пояснительная записка.doc

— 1.10 Мб (Скачать файл)

 

2. ПРОЕКТНАЯ ЧАСТЬ

2.1 Функциональная  модель криптографической защиты

 

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

 

 

Рисунок 2.1 - Диаграмма А4 «Осуществить свод финансовых результатов деятельности предприятия»

 

Функциональная модель разработки программного обеспечения является структурированным изображением функций, выполняемых в ходе его проектирования, а также информации, связывающей эти функции. Цель функциональной модели: определить функции подсистемы, показать перечень и взаимоувязку задач подсистемы, состав входных и выходных документов. Функциональная модель отражает функциональное содержание рассматриваемого процесса и является структурированным изображением функций процесса, связей между ними и со средой, семантики, отражающей эти функции. Методологическую основу проектирования программного обеспечения составляет системный подход, в соответствии с которым, каждая система представляет собой совокупность взаимосвязанных объектов, функционирующих для достижения общей цели. Под проектом понимается проектно-конструкторская и технологическая документация, в которой представлено описание проектных решений по созданию и эксплуатации программного обеспечения в конкретной программно-технической среде. Технология проектирования программного обеспечения представляет собой совокупность методологий и средств проектирования, а также методов и средств проектирования (управление процессами создания и модернизация проекта). Функциональная модель разработки программного обеспечения представлена в приложении Б.

2.2 Классификация  криптоалгоритмов

 

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

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

Основной схемой классификации  всех криптоалгоритмов является следующая:

  • Тайнопись: Отправитель и получатель производят над сообщением преобразования, известные только им двоим. Сторонним лицам неизвестен сам алгоритм шифрования. Некоторые специалисты считают, что тайнопись не является криптографией вообще;
  • Криптография с ключом: Алгоритм воздействия на передаваемые данные известен всем сторонним лицам, но он зависит от некоторого параметра – "ключа", которым обладают только отправитель и получатель;
  • Симметричные криптоалгоритмы: Для зашифровки и расшифровки сообщения используется один и тот же блок информации (ключ). Симметричные криптоалгоритмы выполняют преобразование блока данных в зависимости от ключа таким образом, что прочесть исходное сообщение можно только зная этот секретный ключ;

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

  • Асимметричные криптоалгоритмы: Алгоритм таков, что для зашифровки сообщения используется один ("открытый") ключ, известный всем желающим, а для расшифровки – другой ("закрытый"), существующий только у получателя.

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

  • Перестановочные: Блоки информации (байты, биты, более крупные единицы) не изменяются сами по себе, но изменяется их порядок следования, что делает информацию недоступной стороннему наблюдателю;
  • Подстановочные: Сами блоки информации изменяются по законам криптоалгоритма. Подавляющее большинство современных алгоритмов принадлежит этой группе. Любые криптографические преобразования не увеличивают объем информации, а лишь изменяют ее представление. Поэтому, если программа шифрования значительно увеличивает объем выходного файла, то в ее основе лежит неоптимальный, а возможно и вообще некорректный криптоалгоритм. Уменьшение объема закодированного файла осуществляется при помощи встроенного алгоритма архивации в криптосистеме и при условии сжимаемости информации (так, например, архивы, музыкальные файлы формата MP3, видеоизображения формата JPEG сжиматься более чем на 2-4% не будут);

В зависимости от размера блока  информации криптоалгоритмы делятся  на:

  • Потоковые шифры: Единицей кодирования является один бит. Результат кодирования не зависит от прошедшего ранее входного потока. Схема применяется в системах передачи потоков информации, то есть в тех случаях, когда передача информации начинается и заканчивается в произвольные моменты времени и может случайно прерываться. Наиболее распространенными представителями поточных шифров являются скремблеры;
  • Блочные шифры: Единицей кодирования является блок из нескольких байтов. Результат кодирования зависит от всех исходных байтов этого блока.Блочные шифры шифруют целые блоки информации как единое целое – это значительно увеличивает стойкость преобразований к атаке полным перебором и позволяет использовать различные математические и алгоритмические преобразования.

На сегодняшний день разработано  достаточно много стойких блочных  шифров. Практически все алгоритмы используют для преобразований определенный набор биективных (обратимых) математических преобразований Характерной особенностью блочных криптоалгоритмов является тот факт, что в ходе своей работы они производят преобразование блока входной информации фиксированной длины и получают результирующий блок того же объема, но недоступный для прочтения сторонним лицам, не владеющим ключом. Таким образом, схему работы блочного шифра можно описать функциями Z=EnCrypt(X,Key) и X=DeCrypt(Z,Key) Ключ Key является параметром блочного криптоалгоритма и представляет собой некоторый блок двоичной информации фиксированного размера. Исходный (X) и зашифрованный (Z) блоки данных также имеют фиксированную разрядность, равную между собой, но необязательно равную длине ключа. Блочные шифры являются основой, на которой реализованы практически все криптосистемы. Методика создания цепочек байт, зашифрованных блочными алгоритмами, позволяет шифровать пакеты информации неограниченной длины. Криптоалгоритм разрабатываемой программы является блочным шифром.

2.3 Разработка  криптографической программы CRYPTO_ XOR

 

В качестве основного  средства для разработки программного обеспечения была выбрана среда  визуального программирования Borland Delphi 7.

Borland Delphi 7– это комбинация нескольких важнейших технологий:

  • Высокопроизводительный компилятор в машинный код;
  • Объектно-ориентированная модель компонент;
  • Визуальное (а, следовательно, и скоростное) построение приложений.

Компилятор, встроенный в Borland Delphi 7, обеспечивает высокую производительность, необходимую для построения приложений. Этот компилятор в настоящее время является самым быстрым в мире. Он предлагает легкость разработки и быстрое время проверки готового программного блока, и в то же время обеспечивает качество кода. Кроме того, Borland Delphi 7 обеспечивает быструю разработку без необходимости писать вставки  или ручного написания кода (хотя это возможно). В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы - после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Borland Delphi 7 мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10 - 20 раз быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь. В Borland Delphi 7 компиляция производится непосредственно в родной машинный код. В то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения. Объектно-ориентированная модель программных компонент заключается в максимальном реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для Borland Delphi 7. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Действительно, все в Borland Delphi 7 написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет никакой разницы между объектами, поставляемыми Borland Delphi 7 или третьими фирмами, и объектами, которые вы можете создать. В стандартную поставку Borland Delphi 7 входят основные объекты, которые образуют удачно подобранную иерархию.

Требования к разрабатываемой  программе:

1. Удобный графический пользовательский  интерфейс (GUI)

2. Простота в обращении

3. Обеспечение шифрования всех типов файлов

4. Надежность функционирования

5. Невысокая стоимость

6. Способность к изменению и  дополнению

7. Наличие справочной системы

 

2.4 Описание программы CRYPTO_XOR

 

CRYPTO_XOR – это криптографическая программа, предназначенная для шифрования файлов c рамширением .txt . «Сердцем» криптографической программы является криптоалгоритм. Разработанная криптографическая программа является завершенной комплексной моделью, способной производить двусторонние криптопреобразования над данными произвольного объема.

Программа CRYPTO_XOR выполняет следующие функции:

  • Шифрование файлов;
  • Сжатие файлов;
  • Расшифровка зашифрованных файлов;
  • Усиление защищенности данных;
  • Облегчение работы с криптоалгоритмом со стороны человека;
  • Обеспечение совместимости потока данных с другим программным обеспечением.

Программа CRYPTO_XOR имеет классический вид. Шифрование файлов осуществляется по оригинальному алгоритму с использованием симметричного ключа, который формируется на основании пароля, введенного пользователем. Минимальной длины пароля – от 1 символа. Пароль вводится цифровыми клавишами. В результате хеширования пароля ключ достигает необходимой длины. Алгоритм шифрования является блочным шифром, то есть информация шифруется блоками определенной длины (255 байт). Шифрование каждого последующего блока данных зависит от всех предыдущих. В процессе шифрования происходит также сжатие данных, что обеспечивает еще большую надежность шифрования, так как между зашифрованными блоками данных отсутствует корреляционная зависимость. Временная задержка в проверке пароля не позволяет злоумышленникам узнавать пароль методом полного перебора. Размер исходного файла дожжен быть не меньше 10 байт. Зашифрованный файл имеет расширение .txt. Расшифровка зашифрованного файла возможна только при правильно введенном пароле, который использовался при шифровании этого файла. Экранные формы программы CRYPTO_XOR представлены в приложении Б, фрагмент листинга программы представлен в приложении В.

2.5 Блок-схема  алгоритма

 

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

Нужно понимать, что предписание  считается алгоритмом, если оно обладает тремя следующими свойствами:

  • Однозначностью;
  • Массовостью;
  • Результативностью.

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

Алгоритм программы CRYPTO_XOR состоит из следующих основных процедур: шифрование, расшифровка.

Алгоритм решения задачи может  быть представлен в виде словесного описания или графически – в виде блок-схемы. Для разработки структуры программы удобно пользоваться записью алгоритма в виде блок-схемы (в англоязычной литературе используется термин flowchart). Для изображения основных алгоритмических структур и блоков на блок-схемах используют специальные графические символы. Они приведены на рисунке 2.2.

 

 

Рисунок 2.2 Обозначения, используемые в блок-схемах алгоритмов

 

Представление алгоритма в виде блок-схемы позволяет программисту уяснить последовательность действий, которые должны быть выполнены для решения задачи, убедиться в правильности понимания поставленной задачи. При программировании в среде Borland Delphi 7 алгоритм решения задачи представляет собой совокупность алгоритмов процедур обработки событий. Блок-схема алгоритма программы приведена в приложении А.

2.6 Математическая  модель программы CRYPTO_XOR

 

Математическая модель программы  CRYPTO_XOR представляет собой набор математических и алгоритмических преобразований, производимых над данными, для достижения поставленной цели. Основной функцией является функция шифрования. Схему работы алгоритма шифрования можно описать функциями Z = EnCrypt (X, Key) и X = DeCrypt (Z, Key). Для преобразований алгоритм шифрования использует определенный набор биективных (обратимых) математических функций. В качестве биективной функции используется функция сложения. Ключ Key является параметром блочного криптоалгоритма и представляет собой некоторый блок двоичной информации фиксированного размера. Key получается на основе пароля, введенного пользователем. Криптоалгоритм является идеально стойким, если прочесть зашифрованный блок данных можно только перебрав все возможные ключи, до тех пор, пока сообщение не окажется осмысленным. Так как по теории вероятности искомый ключ будет найден с вероятностью 1 / 2 после перебора половины всех ключей, то на взлом идеально стойкого криптоалгоритма с ключом длины N потребуется в среднем 2N-1 проверок. Таким образом, в общем случае стойкость блочного шифра зависит только от длины ключа и возрастает экспоненциально с ее ростом. Кроме этого условия к идеально стойким криптоалгоритмам применяется еще одно очень важное требование, которому они должны обязательно соответствовать. При известных исходном и зашифрованном значениях блока ключ, которым произведено это преобразование, можно узнать также только полным перебором. Ситуации, в которых постороннему наблюдателю известна часть исходного текста, встречаются повсеместно. Это могут быть стандартные надписи в электронных бланках, фиксированные заголовки форматов файлов, довольно часто встречающиеся в тексте длинные слова или последовательности байт. В свете этой проблемы описанное выше требование не является ничем чрезмерным и также строго выполняется стойкими криптоалгоритмами, как и первое.

Информация о работе Разработка прикладной программы по шифрованию файлов