Государственное Бюджетное
Общеобразовательное учреждение
г. Москвы
Школа 2087
Многопрофильный образовательный
комплекс Открытие
ПРОЕКТНАЯ РАБОТА
Обучающая программа
по информатике:
Криптография и шифрование данных
Выполнил:
Ученик 11А класса
Руководители:
Учитель
Учитель
Москва
2017-2018
СОДЕРЖАНИЕ
Введение ………………………………………………………………………………. | 3 |
1. Теоретические основы криптографии и шифрования………………... | 5 |
| История возникновения криптографии……………………………………… | 5 |
| Изучение и разбор основных шифров криптографии и криптографических устройств……………………………………………………………………….. | 6 |
2. Переложение шифров на язык программирования Java……………… | 8 |
2.1. Обоснование выбора языка Java………………………………….................... | 8 |
2.2. Описание структуры и работы программы…................................................... | 9 |
Заключение ………………………………..……………………………………….… | 14 |
Список литературы ……………………………………….………………………... | 15 |
ВВЕДЕНИЕ
Современную жизнь человека, которая зависит от информационных технологий, невозможно представить без криптографии и шифрования. Криптография очень древняя наука, но потребность в ней человека возрастает с каждым днём. Без криптографии и шифрования сложно представить передачу информации. Каждый день в сети интернет происходит обмен более чем миллиарда терабайтов данных, и чтобы обезопасить процесс их передачи создают всё более сложные методы шифрования.
Объектом исследования проектной работы является изучение основ криптографии и шифрования.
Целью работы является написание программы, позволяющей в доступной форме познакомить пользователей с основами криптографии путём переложения методов шифрования на язык программирования. А так же познакомиться с историей криптографии. Немногие люди способны представить, что именно происходит с нашими данными по ту сторону экрана, каким образом защищаются наши данные, и почему криптография и шифрование столь важны в наши дни. Поэтому, в связи с ростом популярности ПК, телефонов и других устройств, позволяющих нам хранить и передавать данные в интернете, возникает необходимость познакомить подрастающее поколение с такой наукой как криптография. В соответствии с поставленной целью необходимо решить следующие задачи:
- изучить теоретические основы криптографии и шифрования;
- рассмотреть возможности использования программирования для решения задач криптографии;
- написать программу для шифрования и дешифрования с элементами обучения.
Во введении определена важность, объект, цель и задача проекта. В первой главе рассматриваются теоретические основы криптографии. Вторая глава посвящена обоснованию выбора языка программирования, описанию структуры программы и порядка её работы. В заключении подведены итоги исследования, проанализированы проблемы и трудности, возникшие в процессе работы, и приведены выводы по рассматриваемой теме.
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ КРИПТОГРАФИИ
И ШИФРОВАНИЯ
1.1. История возникновения криптографии
Криптография начала зарождаться в древнем мире, её история насчитывает более 4 тысяч лет. Историю развития криптографии можно разделить на несколько этапов:
1 Этап. Криптография в Древнем мире. Именно на этом этапе началось зарождение криптографии, проводя исследования, ученые выяснили, что уже в древнем мире, с появлением письменности, люди пытались шифровать тексты, пропуская (изменяя) буквы в словах. Примером шифров древнего мира служат такие шифры как: Атбаш, Скитала (шифр древней Спарты), шифр Энея, и самый известный шифр древнего мира - шифр Цезаря.
2 Этап. Криптография от Средних Веков до Нового времени. На этом этапе развития криптографии появляется потребность в различных шифрах, разные слои общества начинают повседневно применять шифрование, это были дипломаты, купцы, и даже простые граждане. В связи с ростом популярности криптографии начали появляться более сложные методы шифрования. Примером шифров этого этапа служат такие шифры как: Миланский ключ, шифр Цезаря, шифр Виженера, решётка Кардано, шифр Бэкона, Великий шифр, Книжный шифр, шифр Плейфера.
3 Этап. Криптография Первой мировой войны. На этом этапе начинают выделять основных лидеров в продвижении криптографии, ими являлись Россия, Франция, США, Англия, Германия. Новых шифров почти не появлялось, один из новых шифров того времени, это немецкий шифр ADFGVX.
4 Этап. Криптография Второй мировой войны. К началу Второй мировой войны были изобретены электромеханические шифрующие устройства “Энигма” – они использовались войсками Германии, и “M-209” – Американская шифровальная машина. Результат их работы считался невскрываемым. Во время Второй мировой войны Германия изобретает ещё одно шифрующее устройство “Машина Лоренца”, так как ход работы “Энигмы” был расшифрован.
5 Этап. Развитие криптографии в послевоенное время. В этот период изучались новые методы шифрования, создавались государственные учреждения, компании, криптографические отделения, по разработке и дешифровке, выпускались книги. Одни из более известных организаций и компаний, занимающихся развитием криптографии, это АНБ, ФБР, IBM. На этом этапе был создан метод создания шифров под названием ячейка Фейстеля, на его основе изобретены такие шифры как: TEA (1994 год), Twofish (1998 год), IDEA (2000 год), а также ГОСТ 28147-89.
Изучение и разбор основных шифров криптографии и криптографических устройств
Атбаш
Шифр Атбаш был для сокрытия важных имен и названий, чтобы потом избежать преследования. Знания этих кодов и шифров были переданы Гностикам, которые, в свою очередь, передали их Катарам. Позже Орден Тамплиеров завербовал Катарских дворян и перенял знания шифров. Таким образом, шифр был использован на протяжении многих лет, от около 500 до н. э. до 1300 г. н. э. — момента, когда Орден Тамплиеров был распущен.
Атбаш – самый простой шифр, он состоит в замене i-й буквы алфавита буквой с номером n-i+1, где n-число букв в алфавите (нижний и верхний регистр). Пример для латинского алфавита:
Исходный текст: abcdefghijklmnopqrstuvwxyz
Зашифрованный текст: ZYXWVUTSRQPONMLKJIHGFEDCBA
Пример для русского алфавита:
Исходный текст: АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя
Зашифрованный текст: яЯюЮэЭьЬыЫъЪщЩшШчЧцЦхХфФуУтТсСрРпПоОнНмМлЛкКйЙиИзЗжЖёЁеЕдДгГвВбБаА
Например, возьмём букву “а”, русского алфавита, её номер 1. Число букв в алфавите вместе с нижним и верхним регистром равно 65(нумерация с 0), таким образом, по данной формуле: 64-1+1=64, 64-ая буква это “Я”, а буква “А”, стоящая в алфавите на первой позиции, превратилась бы в “я”, для дешифровки применяем формулу ещё раз.
Шифр Цезаря
Шифр Цезаря — один из древнейших шифров, использовался Цезарем для важных переписок. При шифровании каждый символ заменяется другим, отстоящим от него в алфавите на фиксированное число позиций (ключ). Шифр Цезаря можно классифицировать как шифр подстановки, при более узкой классификации — шифр простой замены.
Шифровку можно проводить по формуле: y = (x + k) mod n
Дешифровку: x = (y – k+n) mod n
Где x – буква исходного текста, y – буква зашифрованного теста, k – ключ, а n – мощность алфавита.
Шифр Виженера
Шифр Виженера — метод полиалфавитного шифрования буквенного текста с использованием ключевого слова.
Этот метод является простой формой многоалфавитной замены. Шифр Виженера изобретался многократно. Впервые этот метод описал Джован Баттиста Беллазо в книге 'La cifra del. Sig'. Giovan Battista Bellasо в 1553 году, однако в XIX веке получил имя Блеза Виженера, французского дипломата. Метод прост для понимания и реализации, он является недоступным для простых методов криптоанализа.
Блез Виженер представил своё описание простого, но стойкого шифра перед комиссией Генриха III во Франции в 1586 году, и позднее изобретение шифра было присвоено именно ему.
Первый символ исходного текста A зашифрован последовательностью L, которая является первым символом ключа. Первый символ шифрованного текста находится на пересечении строки L и столбца A в таблице Виженера. Точно так же для второго символа исходного текста используется второй символ ключа; то есть второй символ шифрованного текста X получается на пересечении строки E и столбца T. Остальная часть исходного текста шифруется подобным способом. Расшифровывание производится следующим образом: находим в таблице Виженера строку, соответствующую первому символу ключевого слова; в данной строке находим первый символ зашифрованного текста. Столбец, в котором находится данный символ, соответствует первому символу исходного текста. Следующие символы зашифрованного текста расшифровываются подобным образом.
ПЕРЕЛОЖЕНИЕ ШИФРОВ НА ЯЗЫК ПРОГРАММИРОВАНИЯ JAVA Обоснование выбора языка Java
На сегодняшний момент язык Java является одним из самых распространенных и популярных языков программирования. Первая версия языка появилась еще в 1996 году в недрах компании Sun Microsystems, впоследствии поглощенной компанией Oracle. Java задумывался как универсальный язык программирования, который можно применять для различного рода задач. И к настоящему времени язык Java превратился из просто универсального языка в целую платформу и экосистему, которая объединяет различные технологии, используемые для целого ряда задач: от создания десктопных приложений до написания крупных веб-порталов и сервисов. Кроме того, язык Java активно применяется для создания программного обеспечения для целого ряда устройств: обычных ПК, планшетов, смартфонов и мобильных телефонов и даже бытовой техники.
Выбор языка для написания программы обусловлен его широкими возможностями, наличием необходимых начальных знаний и опыта работы с данным языком программирования, а так же доступностью среды разработки.
Описание структуры и работы программы
Программа была создана при помощи среды разработки Eclipse и состоит из 5 классов. Текст, предназначенный для обработки, считывается программой из текстового файла.
![]()
Первый класс (kryptopr) отвечает за отображение элементов на панели и вызов функций.
Второй класс (kluch) проверяет введённый ключ.
Все последующие классы отвечают за шифрование и дешифрование.
Шифры Цезаря, Виженера и шифр атбаш реализованы формулами, которые применяются к массивам, содержащим алфавит, ключ и тексты. Шифры MD-2, MD-5, SHA-1, SHA-256, SHA-384, SHA-512 реализованы благодаря Apache Commons Codec.
Окно программы разделено на две части слева находятся вкладки, позволяющие выбрать ту панель, которая будет отображаться в правой части окна.

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

Слева в данной панели расположен список, содержащий наименования шифров. При выборе одного из них (двойной щелчок левой кнопкой мыши), в поле, которое находится справа от списка, будет выведена краткая информация о выбранном шифре. Далее нужно перейти во вкладку “Параметры шифрования/дешифрования”.
Панель с параметрами:

На данный момент параметра всего два. Первый параметр – ключ, ввод которого осуществляется только в том случае, если шифр его использует. Второй параметр – язык, на котором написан ключ и текст, который нужно зашифровать/дешифровать. Далее нужно перейти во вкладку “Ввод текста”.
Панель ввода теста:

Панель ввода текста содержит два поля. В верхнее поле вводится текст, который нужно зашифровать (клавиша F7) / дешифровать (клавиша F8) , а в нижнем поле отображается желаемый результат. Кроме того, на этой панели расположены две кнопки. Кнопка “Открыть файл” позволяет вывести текст из выбранного текстового (.txt) файла на экран, а кнопка “Сохранить файл” позволяет сохранить текст, который содержит поле вывода.
Вкладка “Тесты” находится в разработке.
ЗАКЛЮЧЕНИЕ
Результатом данной работы является программа, позволяющая пользователям ознакомиться с некоторыми шифрами и опробовать эти шифры на практике.
В соответствии с поставленной целью были решены следующие задачи:
- изучены теоретические основы криптографии и шифрования;
- использованы возможности программирования для решения задач криптографии;
- написана программа для шифрования и дешифрования с элементами обучения.
Работа над проектом состояла из нескольких этапов:
Составление плана работы Проработка структуры программы и интерфейса Подбор и изучение теоретического материала Написание программы Оформление проектной работыНа втором этапе был придуман вид интерфейса, на основании которого определена предварительная структура программы. На данном этапе было сложно определиться с количеством нужных классов и их содержанием.
Подбор теоретического материала осуществлялся аналитическими методами сравнения информации из разных интернет-источников. Основной проблемой, которая возникала на этом этапе, являлось то, что иногда информация в одном источнике отличалась от аналогичной в другом, что требовало дополнительной проверки в иных источниках.
Написание программы осуществлялось на языке программирования Java. Объём знаний, полученных ранее, не позволял написать программу должным образом, поэтому пришлось искать дополнительную информацию о данном языке программирования в книгах и интернете.
Предварительная структура программы предусматривала разбиение текстов на части и реализацию кнопок “Назад” и ”Далее” для просмотра части текста, не помещающейся в текстовом поле. В целях уменьшения размера приложения было решено использовать полосы прокрутки, добавление которых требовало дополнительных знаний.
Работа с данной программой позволяет пользователю не только получить знания об истории и методах шифрования, но и даёт возможность применить на практике методы, различные по сложности своей структуры и возникшие в разные временные периоды.
Дальнейшие шаги по работе над проектом:
- Разработка тестов для оценки и контроля знаний, полученных в ходе изучения темы “Криптография и шифрование”, Создание учебно-методического пособия для организации уроков информатики с использованием данной программы.
СПИСОК ЛИТЕРАТУРЫ
Самоучитель Java 7: Пер. с нем. / Д. Льюис, П. Мюллер. – СПб.: БХВ-Петербург, 2014. – 464 с.: - (Самоучитель) Основы программирования на языке Java для школьников / 1С:Учебный центр №1 – Москва, 2013 – (Методические материалы для слушателей сертифицированного курса) http://dic. academic. ru/ https://ru. wikipedia. org/ http://www. cyberforum. ru/ http:///

