Введение
В настоящие время наиболее актуальным вопросом является безопасность и шифрование информации. Мы живем в мире, где необходимо защищать ценную информацию от посторонних. Шифрование используется и в повседневной жизни, и в специальных отраслях. При помощи шифра можно защитить важную информацию, но в тоже время сделать её понятной. При передаче конфиденциальной информации по открытым каналам связи её необходимо скрыть от посторонних лиц. В этом случае защита письменных текстов, данных, хранящихся на внешних носителях, сообщений, передаваемых в телекоммуникационных сетях, программного обеспечения, графики, речи, видео обеспечивается криптографическими методами.
Проблема защиты информации очень актуальна в настоящее время и в Донецкой Народной Республике. Многие пользователи имеют только поверхностное представление о проблемах защиты информации и поэтому относятся к защите информации несерьёзно, что часто приводит к проблемам.
Актуальность настоящей работы обусловлена возникшими противоречиями между возрастающими требованиями общества к уровню знаний подрастающего поколения в области защиты информации и современным состоянием процесса обучения в общеобразовательном учреждении по данному вопросу. Рассмотрение вопросов, связанных с данной тематикой, носит как теоретическую, так и практическую значимость.
Цель нашей работы состоит в исследовании методов криптографической защиты информации для создания программ шифрования и дешифрования на языке программирования С++.
Для достижения цели работы сформулированы задачи:
систематизировать научные знания по истории криптографии;
проанализировать основы симметричной криптографии;
расширить знания о существующих способах защиты данных и о преимуществах криптографической защиты информации;
автоматизировать алгоритм шифрования Цезаря, используя среду программирования С++.
Объект исследования: язык программирования С++.
Предмет исследования: описание и разработка алгоритма шифрования на языке программирования С++.
Гипотеза исследования: изучение среды программирования С++ позволяет сформировать навыки разработки криптологических алгоритмов и их практической реализации, через создание самостоятельных творческих проектов.
Методы исследования:
теоретический - анализ и синтез статей, обзоров специализированных и периодических изданий, информационных ресурсов Интернет по обозначенной теме;
эмпирический - проведение эксперимента по созданию программ автоматизации алгоритмов шифрования, используя среду программирования С++ и применение их в образовательном процессе.
Отличительной особенностью и новизной представленной работы является высокая значимость и недостаточная практическая разработанность этой проблемы. При этом приоритетное внимание уделяется практической работе.
Для реализации программы было решено использовать средства объектно-ориентированного программирования на C++ в среде Microsoft Visual Studio.
Практическое значение исследования: процесс исследования языка C++ для создания программы шифрования кодом Цезаря.
Раздел 1. История криптографии
Возникновение шифров
История человеческой цивилизации стала также историей создания систем безопасной передачи информации. Шифрование используется человечеством с того самого момента, как появилась первая секретная информация, доступ к которой должен быть ограничен. [1, с. 27]
Первый шифр известен примерно с 1900 года до н. э. и был использован древними египтянами, которые начали вместо обычных иероглифов использовались не совпадающие с ними символы. В 600 - 500 годы до н. э. древние евреи создали упорядоченную систему криптографии «Атбаш», суть которой заключалась в том, что при письме одна буква алфавита заменялась другой.
В XV веке итальянский математик Леон Батиста Альберти создал первую математическую модель криптографии и первое механическое устройство для шифрования секретных документов, а в 17 веке Фрэнсис Бэкон создал подобное устройство, где каждой букве алфавита могло соответствовать пять вариантов шифровки.
В XVII столетии Томас Джефферсон создал шифровальную машину, позволявшую использовать десятки вариантов кодирования. Подобные устройства использовались во всем мире до конца Второй мировой войны.
В XVIII веке английская разведка стала широко применять невидимые чернила – молоко. Метод письма молоком позже использовал Владимир Ленин.
В 1930-е годы германские ученые создали шифровальную машину Enigma - фактически первый специализированный механический компьютер. Через три года после появление Enigma принцип действия этого устройства был разгадан специально созданной группой английских учёных.
Криптография в наше время
С открытой публикации спецификации стандарта шифрования DES от NBS в статье Диффи — Хеллмана «New Directions in Cryptography» и открытия алгоритма RSA в середине 1970-х годов началось развитие криптографических исследований. После этого криптография получила широко распространение в компьютерных сетях и компьютерной безопасности.
До XX века криптография имела дело только с текстовыми образцами. Теперь в современной криптографии активно используется математика, включая теорию информации, теорию сложности вычислений, статистику, комбинаторику, абстрактную алгебру и теорию чисел. Также активно развиваются исследования по применению в криптографии квантовой физики.
Наибольший интерес сегодня вызывают следующие направления теоретических и прикладных исследований: создание и анализ надёжности криптографических алгоритмов и протоколов; адаптация алгоритмов к различным аппаратным и программным платформам; использование существующих технологий криптографии в новых прикладных системах; возможность использования технологий криптографии для защиты интеллектуальной собственности. [3, c. 2-3]
Стойкость криптосистемы сегодня оценивается объёмами вычислений, которые требуются для её вскрытия. Считается, что ключ шифрования достаточно стоек, если все известные способы его отыскать настолько сложны, что требуют больше времени, чем простой перебор всех возможных ключей.[2, c. 1-3]
Раздел 2. Описание разработанного алгоритма шифра Цезаря
2.1. Описание алгоритма Цезаря
Шифр Цезаря – это простой тип подстановочного шифра, где каждая буква исходного текста заменяется буквой с фиксированным сдвигом по алфавиту. Принцип его действия можно увидеть на рисунке 1.
Рис. 1. Принцип действия шифра Цезаря
Таким образом, для шифрования данного текста нам нужно целое значение – ключ, которое указывает количество позиций, на которые каждая буква текста была сдвинута. На рисунке 1 значение ключа равно 3.
2.2. Математическая модель шифра Цезаря
Если сопоставить каждый символ алфавита с его порядковым номером (нумеруя с 0), то шифрование и дешифрование можно выразить формулами:
y = (x + k) % n
x = (y − k) % n,
где x – символ открытого текста, y – символ шифрованного текста, n – мощность алфавита (количество символов), а k – ключ, % – остаток от деления.
Например, при шифровании с использованием ключа k = 5 буква «К» сдвигается на пять букв вперед и становится буквой «П»; «Р», перемещенная на пять букв вперед, становится буквой «Х», буква «И», перемещенная на пять букв вперед, становится буквой «Н», и так далее:
Исходный алфавит:
А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
Шифрованный:
Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д
Оригинальный текст: криптография наука о шифре информации
Шифрованный текст: пхнфчузхещнгтешпеуэнщхйнтщухсеынн
2.3. Описание основного алгоритма программы
Рассмотрим детальнее основной алгоритм программы шифрования Цезаря. В нашей работе используется тот же принцип шифрования, что и в шифре Цезаря. В своём шифре Цезарь использовал один ключ, в нашей программе количество ключей увеличено в десятки раз.
Весь процесс сокрытия данных благодаря программной оболочке С++, которую мы использовали для создания своей программы, выполняется автоматически. Доступно два языка шифрования данных: английский и русский. Простота шифра исключает ошибки операционных систем при выполнении данной программы, что является важнейшим требованием для криптографических систем. Более подробное описание и блок-схемы представлены в приложении.
Раздел 3. Описание разработанной программы
3.1. Главное меню программы
Для реализации программы было решено использовать средства объектно-ориентированного программирования на C++ в среде Microsoft Visual Studio.
Для работы с программой вам понадобится установленный Microsoft .NET Framework 3.5 или выше. При открытии программы появляется такое окно:
Рис. 2. Интерфейс программы
3.2. Шифрование и дешифрование текста
Главная форма состоит из поля для ввода текста, поля для ввода ключа шифрования, переключателя для выбора языка, кнопок «Шифрование», «Дешифрование», «Считать из файла» и «Выход».
В верхнее поле пользователь может ввести текст самостоятельно или из существующего текстового файла. Затем ниже надписи «Ключ» можно ввести нужное значение ключа, после чего нажать кнопку «Шифрование». После того, как процесс шифрования будет окончен, в нижнем поле появляется зашифрованный текст.
Рис. 3. Шифрование текста
Для дешифрования текста, его помещают в нижнее поле, выбирают нужное значение ключа, после чего нажать кнопку «Дешифрование». После того, как процесс дешифрования будет окончен, в верхнем поле появляется дешифрованный текст.
Программа, как и все симметричные алгоритмы шифрования основана на том, что отправитель и получатель информации используют один и тот же ключ. Этот ключ должен храниться в тайне и передаваться способом, исключающим его перехват. Если каждый день для каждого сеанса связи будет использоваться свой уникальный ключ, то это значительно повысит защищённость системы.
Обзор существующих аналогов показал, что создать программу шифрования текста кодом Цезаря можно с помощью известных языков программирования, таких как Delphi, Python, C++, C#.
Шифр Цезаря – один из наиболее известных древнейших известных шифров. Существует очень много он-лайн калькуляторов, написанных преимущественно средствами JavaScript: http://planetcalc.ru/1434/, http://hostciti.net/calc/it/cipher-ceaser.html, http://archive.is/U7nN9, http://www.planetcalc.com/1434/ и другие.
Эти калькуляторы дают возможность шифровать и дешифровать текст шифром Цезаря на русском и английском языках.
Однако мы не встретили ресурса, который можно было бы использовать и без доступа к Интернету, чтобы в нем были два алфавита и возможность считывать текст из файла, что реализовано в нашем проекте.
Преимуществом разработанной программы можно считать возможность генерировать произвольный ключ, вводить текст в поле и из файла, шифровать и дешифровать текст шифром Цезаря на русском и английском языках без доступа к Интернету.
Программу можно использовать для передачи шифрованных сообщений. Установив программу на устройства двух пользователей, можно реализовать обмен информацией в три этапа:
отправитель передаёт получателю ключ (в случае сети с несколькими абонентами у каждой пары абонентов должен быть свой ключ, отличный от ключей других пар);
отправитель, используя ключ, шифрует сообщение, при помощи нашей программы и пересылает получателю;
получатель получает сообщение и используя программу дешифрует его.
Этот процесс наглядно показан на рисунке 4.
Рис.4. Процесс обмена шифрованными сообщениями
Также разработанную программу можно использоваться на уроках по теме «Кодирование информации» при изучении простых алгоритмов шифрования и для проверки навыков шифрования и дешифровки информации, используя шифр Цезаря, а также на кружке по информатике.
Заключение
В ходе выполнения работы были изучены основные принципы программирования на языке программирования С++ при разработке программы шифрования текстовых данных кодом Цезаря.
Помимо этого, во время выполнения проекта были закреплены теоретические знания в области программирования на C++, в частности, а также существенно расширены практические навыки программирования на языках с С-подобным синтаксисом.
Практической значимостью даннойработы стало привлечение внимания к изучению проблем защиты информации в общеобразовательной школе. Часть вопросов защиты информации может быть изучена в рамках школьной программы по информатике. Алгоритм шифрования Цезаря является удобным материалом при изучении основ программирования.
Работа над данной программой дала возможность на практике оценить возможности вышеупомянутого языка программирования в области самостоятельной разработки пользовательского интерфейса без использования готовых графических элементов.
Подводя итоги исследования, можно сказать, что цель работы достигнута и получены следующие результаты:
систематизированы научные знания по истории криптографии;
проанализированы основы симметричной криптографии;
расширены знания о существующих способах защиты данных и о преимуществах криптографической защиты информации;
создана программа алгоритмы шифра Цезаря, позволяющая шифровать и дешифровать текст на английском и русском языках с использованием среды программирования С++.
Список использованных источников и литературы
Бунин О., «Занимательное шифрование» // «Мир ПК», Москва, июль 2003г.
Волкова Ю., «Тайны тайнописи»: [Электронный ресурс]. – Режим доступа: http://www.technofresh.ru/technology/appearance/cryptography-1.html
Волчков А, «Современная криптография»: [Электронный ресурс]. – Режим доступа: http://www.osp.ru/os/2002/07-08/181699/
Гатченко Н.А., Исаев А.С., Яковлев А.Д. «Криптографическая защита информации» – СПб: НИУ ИТМО, 2012. – 142 с.
Методы защиты данных. Классификация средств защиты. Физические и аппаратные средства защиты: [Электронный ресурс]. – Режим доступа: http://lektsii.org/5-15096.html
Танова Э.В., «Введение в криптографию: как защитить свое письмо от любопытных», Москва. Бином. Лаборатория знаний, 2007. – 79c.
Приложение 1. Блок-схемы программы
Рис. 1.1. Общая блок-схема программы шифрования
Рис. 1.2. Блок-схема подготовки данных
Рис. 1.3. Блок-схема вывода данных
Рис.1.4. Блок-схема шифрования данных
Рис. 1.5. Блок-схема дешифрования данных