Курсовая на тему Разработка программы защиты информации от несанкционированного доступа на базе алгоритма шифрования
Работа добавлена на сайт bukvasha.net: 2014-11-30Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Министерство образования и науки Украины
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту
На тему "Разработка программы защиты информации
от несанкционированного доступа на базе алгоритма
шифрования методом открытого ключа"
по дисциплине "Кодирование и защита информации"
2003
СОДЕРЖАНИЕ
Введение
1. Краткий обзор алгоритмов защиты информации
2. Постановка задачи по разработке программы
3. Входные данные
4. Выходные данные
5. Описание алгоритма программы
6. Описание метода шифрования с открытым ключом
7. Описание алгоритма асимметричного метода шифрования с открытым ключом RSA
8. Структура программы
9. Тестирование программы и анализ вычислительного эксперимента
10. Описание интерфейса программы
Заключение
Библиографический список
Приложение
ВВЕДЕНИЕ
В данном документе описывается программа, написанная в соответствии с постановкой задачи на курсовое проектирование по теме "Защита информации от несанкционированного доступа на базе алгоритма шифрования методом открытого ключа" по дисциплине "Кодирование и защита информации". Данная программа позволяет зашифровать исходное сообщение одним из наиболее часто используемых типов асимметричных методов шифрования с открытым ключом – методом RSA. Входными данными являются:
при зашифровании - символы текстового файла c расширением txt.
при расшифровании - символы текстового файла c расширением rsr.
Выходными данными являются:
при зашифровании - текстовый файл c расширением rsr, содержащий символы исходного файла, преобразованные по определённому алгоритму.
При расшифровании - получаем текстовый файл, содержащий исходные символы.
Для проверки работы программы разработан тестовый пример. Результаты тестирования доказывают, что программа правильно выполняет все операции по обработке входных данных и формирования выходных данных.
Требованием к аппаратному и программному обеспечению является наличие любого IBM-совместимого компьютера с наличием накопителя на гибких и (или) жестких магнитных дисках и наличием достаточного количества оперативной памяти (достаточно 640к). На компьютере должна быть установлена операционная система Windows’95(или выше) или любая другая, совместимая с ней.
Примечание. В силу того, что данная программа является учебной и курсовой проект предполагает разработку и реализацию только самой идеи (сути) алгоритма, а не создание сверхнадёжной системы защиты информации, числа p и q, используемые для образования ключей, имеют по три десятичных знака.
1. КРАТКИЙ ОБЗОР АЛГОРИТМОВ ЗАЩИТЫ
ИНФОРМАЦИИ
Симметричные методы шифрования
Долгое время традиционной криптографической схемой была схема с симметричным ключом [symmetric key, dual key]. В этой схеме имеется один ключ, который участвует в шифровании и дешифровании информации. Шифрующая процедура при помощи ключа производит ряд действий над исходными данными, дешифрующая процедура при помощи того же ключа производит обратные действия над кодом. Дешифрование кода без ключа предполагается практически неосуществимым. Если зашифрованная таким образом информация передается по обычному, т.е. незащищенному, каналу связи, один и тот же ключ должен иметься у отправителя и получателя, вследствие чего возникает необходимость в дополнительном защищенном канале для передачи ключа, повышается уязвимость системы и увеличиваются организационные трудности.
Шифрование с помощью датчика псевдослучайных чисел
К классу алгоритмов с симметричным ключом относится метод “одноразового блокнота” [one-time pad], заключающийся в побитовом сложении (“гаммировании”) шифруемого текста со случайной последовательностью битов - ключом (см. [S94]). Длина ключа должна совпадать с длиной шифруемого текста и каждый отрезок ключа должен использоваться однократно; в противном случае текст легко поддается несанкционированной расшифровке. При выполнении же этих условий данный метод является единственным методом, теоретически устойчивым против криптоанализа противника с неограниченными вычислительными ресурсами. Несмотря на это, в настоящее время метод “одноразового блокнота” практически не применяется из-за организационных сложностей, связанных с генерацией, передачей и хранением используемых в нем сверхдлинных ключей.
Алгоритм шифрования DES
Другим примером схемы с симметричным ключом может служить алгоритм DES (Data Encryption Standard), принятый 23 ноября1976 г . в качестве официального криптографического стандарта США для защиты некритичной [unclassified] информации (см. [S94], с.219-243). В стандарт было включено положение об обязательной ресертификации (пересмотре) алгоритма каждые пять лет; последняя такая ресертификация состоялась в 1992 г . По мнению экспертов, в связи с определенными успехами в криптоанализе DES и появлением новых методов шифрования с симметричным ключом, алгоритм может не быть ресертифицирован на следующий пятилетний срок. Тем не менее, DES по-прежнему считается криптографически стойким алгоритмом и остается самой распространенной схемой шифрования с симметричным ключом.
Алгоритм шифрования ГОСТ 28147-89
Российский стандарт на криптографию с симметричным ключом определен ГОСТ 28147-89 “Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования”, который был введен в действие 1 июля1990 г . В отличие от DES, стандарт содержит указание на то, что он “по своим возможностям не накладывает ограничений на степень секретности защищаемой информации”. В общих чертах алгоритм ГОСТ 28147 аналогичен DES, но имеется ряд существенных отличий, как, например, длина ключа и трактовка содержимого узлов замены [в схеме DES называемых “S-boxes”]. В то время, как заполнение узлов замены DES оптимизировано с точки зрения криптографической стойкости и явно указано в стандарте, заполнение узлов замены ГОСТ 28147 “является секретным элементом и поставляется в установленном порядке”. Учитывая, что оно в то же время “является долговременным ключевым элементом, общим для сети ЭВМ”, и что “установленный порядок” поставки может не предусматривать криптографическую оптимизацию, этот пункт стандарта представляется одним из его слабых мест, затрудняющим реализацию и не способствующим криптографической стойкости. Однако при задании оптимизированных значений для узлов замены криптографическая стойкость алгоритма сравнима со стойкостью DES.
Асимметричные методы шифрования
В1976 г . У.Диффи и М.Хеллманом [DH76] был предложен новый тип криптографической системы - система с открытым ключом [public key cryptosystem]. В схеме с открытым ключом имеется два ключа, открытый [public] и секретный [private, secret], выбранные таким образом, что их последовательное применение к массиву данных оставляет этот массив без изменений. Шифрующая процедура использует открытый ключ, дешифрующая - секретный. Дешифрование кода без знания секретного ключа практически неосуществимо; в частности, практически неразрешима задача вычисления секретного ключа по известному открытому ключу. Основное преимущество криптографии с открытым ключом - упрощенный механизм обмена ключами. При осуществлении коммуникации по каналу связи передается только открытый ключ, что делает возможным использование для этой цели обычного канала и устраняет потребность в специальном защищенном канале для передачи ключа.
Система RSA
В1978 г . Р.Ривест, А.Шамир и Л.Адлеман [RSA78] создали первую криптосистему с открытым ключом для шифрования и цифровой подписи, получившую название RSA (по первым буквам фамилий авторов). Система описывается в терминах элементарной теории чисел. Ее надежность обуславливается практической неразрешимостью задачи разложения большого натурального числа на простые множители. Современное состояние алгоритмов факторизации (разложения на множители) позволяет решать эту задачу для чисел длиной до 430 бит; исходя из этого, ключ длиной в 512 бит считается надежным для защиты данных на срок до 10 лет, а в 1024 бита - безусловно надежным. Длина подписи в системе RSA совпадает с длиной ключа.
Несмотря на то, что отсутствует математически доказанное сведение задачи раскрытия RSA к задаче разложения на множители, а также задачи разложения на множители к классу NP-полных задач, система выдержала испытание практикой и является признанным стандартом de-facto в промышленной криптографии, а также официальным стандартом ряда международных организаций. С другой стороны, свободное распространение программного обеспечения, основанного на RSA, ограничено тем, что алгоритм RSA защищен в США рядом патентов.
Проект DSS
В1991 г . в США был опубликован проект федерального стандарта цифровой подписи - DSS (Digital Signature Standard, [DSS91], см. также [S94], с.304-314), описывающий систему цифровой подписи DSA (Digital Signature Algorithm). Одним из основных критериев при создании проекта была его патентная чистота.
Предлагаемый алгоритм DSA, имеет, как и RSA, теоретико-числовой характер, и основан на криптографической системе Эль-Гамаля [E85] в варианте Шнорра [S89]. Его надежность основана на практической неразрешимости определенного частного случая задачи вычисления дискретного логарифма. Современные методы решения этой задачи имеют приблизительно ту же эффективность, что и методы решения задачи факторизации; в связи с этим предлагается использовать ключи длиной от 512 до 1024 бит с теми же характеристиками надежности, что и в системе RSA. Длина подписи в системе DSA меньше, чем в RSA, и составляет 320 бит.
С момента опубликования проект получил много критических отзывов (см., напр., [R92]), многие из которых были учтены при его доработке. Одним из главных аргументов против DSA является то, что, в отличие от общей задачи вычисления дискретного логарифма, ее частный случай, использованный в данной схеме, мало изучен и, возможно, имеет существенно меньшую сложность вскрытия. Кроме того, стандарт не специфицирует способ получения псевдослучайных чисел, используемых при формировании цифровой подписи, и не указывает на то, что этот элемент алгоритма является одним из самых критичных по криптографической стойкости.
Функции DSA ограничены только цифровой подписью, система принципиально не предназначена для шифрования данных. По быстродействию система DSA сравнима с RSA при формировании подписи, но существенно (в 10-40 раз) уступает ей при проверке подписи.
Вместе с проектом DSS опубликован проект стандарта SHS (Secure Hash Standard), описывающий однонаправленную хэш-функцию SHA (Secure Hash Algorithm), рекомендованную для использования вместе с DSA (см. [S94], с.333-336). Хэш-функция SHA является модификацией алгоритма MD4, хорошо известного в криптографической литературе.
Российский стандарт цифровой подписи
В1993 г . в России были изданы два государственных стандарта “Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма” и “Функция хэширования”, под общим заголовком “Информационная технология. Криптографическая защита информации”.
Стандарт “Процедуры выработки и проверки электронной цифровой подписи...” во многом схож со своим американским аналогом DSS. Для формирования и проверки цифровой подписи в нем используется тот же алгоритм Эль-Гамаля и Шнорра, что и в DSS, с незначительными модификациями. Имеется две альтернативных длины ключа, 512 и 1024 бит; длина подписи составляет 512 бит.
Для генерации ключей предложен ряд новых алгоритмов. Ключи, получаемые при помощи этих алгоритмов, имеют специальный вид, что потенциально может упростить задачу вскрытия системы по сравнению с DSS. Критика DSS, связанная с недостаточно разработанным теоретическим обоснованием алгоритма, в случае росийского стандарта несколько смягчается тем, что элемент ключа q выбирается более длинным, чем в DSA. Критика, связанная с отсутствием спецификации на способ получения псевдослучайных чисел, остается в силе.
Как и DSS, российский стандарт определяет только алгоритм цифровой подписи, но не шифрования. Быстродействие обоих алгоритмов приблизительно совпадает.
Стандарт “Функция хэширования” предназначен для использования вместе со стандартом “Процедуры выработки и проверки цифровой подписи” и представляет собой оригинальный алгоритм, основанный на методе шифрования с симметричным ключом ГОСТ 28147. Стандарт не содержит криптографического обоснования выбранного алгоритма и не корректирует ГОСТ 28147 в части заполнения узлов замены.
Несмотря на указанные недостатки, система, описанная в российском стандарте, применима во многих областях, особенно для коммерческих приложений.
2. ПОСТАНОВКА ЗАДАЧИ ПО РАЗРАБОТКЕ ПРОГРАММЫ
Требуется написать программу, осуществляющую:
зашифрование содержания исходного текстового файла c расширением txt с получением текстового файла с расширением rsr, символы которого являются символами исходного файла, преобразованными по алгоритму шифрования методом открытого ключа (система RSA).
расшифрование содержания текстового файла с расширением rsr по алгоритму шифрования методом открытого ключа с получением текстового файла, символы которого являются символами исходного текстового файла.
3. ВХОДНЫЕ ДАННЫЕ
Входными данными при зашифровании являются символы исходного текстового файла. Входные данные передаются в программу при открытии файла с помощью пункта меню File\Open File.
Входными данными при расшифровании являются символы текстового файла с расширением rsr. Входные данные передаются в программу при открытии файла с помощью пункта меню File\Open Shfile.
Для тестирования программы используется файл TestFile.txt (см. пункт – тестирование программы), находящийся на дискете в папке Test.
4. ВЫХОДНЫЕ ДАННЫЕ
Выходными данными при зашифровании являются символы полученного текстового файла с расширением rsr. Выходными данными при расшифровании являются символы полученного текстового файла с расширением txt. Символы выходного файла образуются после прохождения арифметической части алгоритма программы кодовыми значениями символов исходного текстового файла.
Зашифрование и расшифрование (получение выходных данных) осуществляется путём выбора пунктов меню Edit\Encrypt File и Edit\Decrypt File соответственно. При зашифровании либо расшифровании необходимо в обязательном порядке выбрать пункт меню Edit/Generation Key для генерации открытого и закрытого ключей, на основании которых и будет происходить преобразование символов исходного файла в зашифрованный тест и обратно.
5. ОПИСАНИЕ АЛГОРИТМА ПРОГРАММЫ
Алгоритм программы заключается в следующем:
при открытии файла код каждого символа запоминается в целочисленном массиве;
в соответствии с введёнными пользователем значениями p и q (или значениями, используемыми по умолчанию) вычисляются и/или подбираются значения всех остальных чисел, участвующих в формировании ключа и формулах за- и расшифровывания;
формируются открытый и закрытый ключи;
массив исходных данных в соответствии с формулами за- и расшифровывания преобразуется в массив выходных данных;
каждое значение массива выходных данных переводится в символ согласно таблице кодировок ANSI.
Как уже говорилось выше, надежность обуславливается практической неразрешимостью задачи разложения большого натурального числа на простые множители. Соответственно появляется и сложность в реализации алгоритма работы с большими числами. В данной программе данная проблема решается методом последовательного возведения в квадрат. После каждого возведения в квадрат результат сводится по модулю n. При этом никогда не возникает степеней больше n2.
Более подробно: рассмотрим двоичное представление r
k
r = xj2j , xj = 0,1; k=[log2 r]+1
j=0
Предположим, что мы знаем все числа
(a2, mod n) , 0<=j<=k,
тогда (ar, mod n) может быть вычислено помощью не более k-1 произведений и сведением каждого произведения по модулю n. Таким образом, достаточно вычислить числа, которые требуют k модульных возведения в квадрат и дополнительно не более k –1 модульных произведений. Это означает, что вычисляется не более 2k – 1 произведений с обоими множителями, меньшими, чем n, и сведением произведений по модулю n. Если r является большим и известно m, то r может быть вначале взято по модулю
К примеру, вычисляя (783, mod 61),замечаем, что 760=1(mod61).Следовательно, мы можем вычислить (723, mod 61).С помощью возведения в квадрат мы получаем степени семёрки, где показатель в свою очередь является степенью двойки.
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту
На тему "Разработка программы защиты информации
от несанкционированного доступа на базе алгоритма
шифрования методом открытого ключа"
по дисциплине "Кодирование и защита информации"
2003
СОДЕРЖАНИЕ
Введение
1. Краткий обзор алгоритмов защиты информации
2. Постановка задачи по разработке программы
3. Входные данные
4. Выходные данные
5. Описание алгоритма программы
6. Описание метода шифрования с открытым ключом
7. Описание алгоритма асимметричного метода шифрования с открытым ключом RSA
8. Структура программы
9. Тестирование программы и анализ вычислительного эксперимента
10. Описание интерфейса программы
Заключение
Библиографический список
Приложение
ВВЕДЕНИЕ
В данном документе описывается программа, написанная в соответствии с постановкой задачи на курсовое проектирование по теме "Защита информации от несанкционированного доступа на базе алгоритма шифрования методом открытого ключа" по дисциплине "Кодирование и защита информации". Данная программа позволяет зашифровать исходное сообщение одним из наиболее часто используемых типов асимметричных методов шифрования с открытым ключом – методом RSA. Входными данными являются:
при зашифровании - символы текстового файла c расширением txt.
при расшифровании - символы текстового файла c расширением rsr.
Выходными данными являются:
при зашифровании - текстовый файл c расширением rsr, содержащий символы исходного файла, преобразованные по определённому алгоритму.
При расшифровании - получаем текстовый файл, содержащий исходные символы.
Для проверки работы программы разработан тестовый пример. Результаты тестирования доказывают, что программа правильно выполняет все операции по обработке входных данных и формирования выходных данных.
Требованием к аппаратному и программному обеспечению является наличие любого IBM-совместимого компьютера с наличием накопителя на гибких и (или) жестких магнитных дисках и наличием достаточного количества оперативной памяти (достаточно 640к). На компьютере должна быть установлена операционная система Windows’95(или выше) или любая другая, совместимая с ней.
Примечание. В силу того, что данная программа является учебной и курсовой проект предполагает разработку и реализацию только самой идеи (сути) алгоритма, а не создание сверхнадёжной системы защиты информации, числа p и q, используемые для образования ключей, имеют по три десятичных знака.
1. КРАТКИЙ ОБЗОР АЛГОРИТМОВ ЗАЩИТЫ
ИНФОРМАЦИИ
Симметричные методы шифрования
Долгое время традиционной криптографической схемой была схема с симметричным ключом [symmetric key, dual key]. В этой схеме имеется один ключ, который участвует в шифровании и дешифровании информации. Шифрующая процедура при помощи ключа производит ряд действий над исходными данными, дешифрующая процедура при помощи того же ключа производит обратные действия над кодом. Дешифрование кода без ключа предполагается практически неосуществимым. Если зашифрованная таким образом информация передается по обычному, т.е. незащищенному, каналу связи, один и тот же ключ должен иметься у отправителя и получателя, вследствие чего возникает необходимость в дополнительном защищенном канале для передачи ключа, повышается уязвимость системы и увеличиваются организационные трудности.
Шифрование с помощью датчика псевдослучайных чисел
К классу алгоритмов с симметричным ключом относится метод “одноразового блокнота” [one-time pad], заключающийся в побитовом сложении (“гаммировании”) шифруемого текста со случайной последовательностью битов - ключом (см. [S94]). Длина ключа должна совпадать с длиной шифруемого текста и каждый отрезок ключа должен использоваться однократно; в противном случае текст легко поддается несанкционированной расшифровке. При выполнении же этих условий данный метод является единственным методом, теоретически устойчивым против криптоанализа противника с неограниченными вычислительными ресурсами. Несмотря на это, в настоящее время метод “одноразового блокнота” практически не применяется из-за организационных сложностей, связанных с генерацией, передачей и хранением используемых в нем сверхдлинных ключей.
Алгоритм шифрования DES
Другим примером схемы с симметричным ключом может служить алгоритм DES (Data Encryption Standard), принятый 23 ноября
Алгоритм шифрования ГОСТ 28147-89
Российский стандарт на криптографию с симметричным ключом определен ГОСТ 28147-89 “Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования”, который был введен в действие 1 июля
Асимметричные методы шифрования
В
Система RSA
В
Несмотря на то, что отсутствует математически доказанное сведение задачи раскрытия RSA к задаче разложения на множители, а также задачи разложения на множители к классу NP-полных задач, система выдержала испытание практикой и является признанным стандартом de-facto в промышленной криптографии, а также официальным стандартом ряда международных организаций. С другой стороны, свободное распространение программного обеспечения, основанного на RSA, ограничено тем, что алгоритм RSA защищен в США рядом патентов.
Проект DSS
В
Предлагаемый алгоритм DSA, имеет, как и RSA, теоретико-числовой характер, и основан на криптографической системе Эль-Гамаля [E85] в варианте Шнорра [S89]. Его надежность основана на практической неразрешимости определенного частного случая задачи вычисления дискретного логарифма. Современные методы решения этой задачи имеют приблизительно ту же эффективность, что и методы решения задачи факторизации; в связи с этим предлагается использовать ключи длиной от 512 до 1024 бит с теми же характеристиками надежности, что и в системе RSA. Длина подписи в системе DSA меньше, чем в RSA, и составляет 320 бит.
С момента опубликования проект получил много критических отзывов (см., напр., [R92]), многие из которых были учтены при его доработке. Одним из главных аргументов против DSA является то, что, в отличие от общей задачи вычисления дискретного логарифма, ее частный случай, использованный в данной схеме, мало изучен и, возможно, имеет существенно меньшую сложность вскрытия. Кроме того, стандарт не специфицирует способ получения псевдослучайных чисел, используемых при формировании цифровой подписи, и не указывает на то, что этот элемент алгоритма является одним из самых критичных по криптографической стойкости.
Функции DSA ограничены только цифровой подписью, система принципиально не предназначена для шифрования данных. По быстродействию система DSA сравнима с RSA при формировании подписи, но существенно (в 10-40 раз) уступает ей при проверке подписи.
Вместе с проектом DSS опубликован проект стандарта SHS (Secure Hash Standard), описывающий однонаправленную хэш-функцию SHA (Secure Hash Algorithm), рекомендованную для использования вместе с DSA (см. [S94], с.333-336). Хэш-функция SHA является модификацией алгоритма MD4, хорошо известного в криптографической литературе.
Российский стандарт цифровой подписи
В
Стандарт “Процедуры выработки и проверки электронной цифровой подписи...” во многом схож со своим американским аналогом DSS. Для формирования и проверки цифровой подписи в нем используется тот же алгоритм Эль-Гамаля и Шнорра, что и в DSS, с незначительными модификациями. Имеется две альтернативных длины ключа, 512 и 1024 бит; длина подписи составляет 512 бит.
Для генерации ключей предложен ряд новых алгоритмов. Ключи, получаемые при помощи этих алгоритмов, имеют специальный вид, что потенциально может упростить задачу вскрытия системы по сравнению с DSS. Критика DSS, связанная с недостаточно разработанным теоретическим обоснованием алгоритма, в случае росийского стандарта несколько смягчается тем, что элемент ключа q выбирается более длинным, чем в DSA. Критика, связанная с отсутствием спецификации на способ получения псевдослучайных чисел, остается в силе.
Как и DSS, российский стандарт определяет только алгоритм цифровой подписи, но не шифрования. Быстродействие обоих алгоритмов приблизительно совпадает.
Стандарт “Функция хэширования” предназначен для использования вместе со стандартом “Процедуры выработки и проверки цифровой подписи” и представляет собой оригинальный алгоритм, основанный на методе шифрования с симметричным ключом ГОСТ 28147. Стандарт не содержит криптографического обоснования выбранного алгоритма и не корректирует ГОСТ 28147 в части заполнения узлов замены.
Несмотря на указанные недостатки, система, описанная в российском стандарте, применима во многих областях, особенно для коммерческих приложений.
2. ПОСТАНОВКА ЗАДАЧИ ПО РАЗРАБОТКЕ ПРОГРАММЫ
Требуется написать программу, осуществляющую:
зашифрование содержания исходного текстового файла c расширением txt с получением текстового файла с расширением rsr, символы которого являются символами исходного файла, преобразованными по алгоритму шифрования методом открытого ключа (система RSA).
расшифрование содержания текстового файла с расширением rsr по алгоритму шифрования методом открытого ключа с получением текстового файла, символы которого являются символами исходного текстового файла.
3. ВХОДНЫЕ ДАННЫЕ
Входными данными при зашифровании являются символы исходного текстового файла. Входные данные передаются в программу при открытии файла с помощью пункта меню File\Open File.
Входными данными при расшифровании являются символы текстового файла с расширением rsr. Входные данные передаются в программу при открытии файла с помощью пункта меню File\Open Shfile.
Для тестирования программы используется файл TestFile.txt (см. пункт – тестирование программы), находящийся на дискете в папке Test.
4. ВЫХОДНЫЕ ДАННЫЕ
Выходными данными при зашифровании являются символы полученного текстового файла с расширением rsr. Выходными данными при расшифровании являются символы полученного текстового файла с расширением txt. Символы выходного файла образуются после прохождения арифметической части алгоритма программы кодовыми значениями символов исходного текстового файла.
Зашифрование и расшифрование (получение выходных данных) осуществляется путём выбора пунктов меню Edit\Encrypt File и Edit\Decrypt File соответственно. При зашифровании либо расшифровании необходимо в обязательном порядке выбрать пункт меню Edit/Generation Key для генерации открытого и закрытого ключей, на основании которых и будет происходить преобразование символов исходного файла в зашифрованный тест и обратно.
5. ОПИСАНИЕ АЛГОРИТМА ПРОГРАММЫ
Алгоритм программы заключается в следующем:
при открытии файла код каждого символа запоминается в целочисленном массиве;
в соответствии с введёнными пользователем значениями p и q (или значениями, используемыми по умолчанию) вычисляются и/или подбираются значения всех остальных чисел, участвующих в формировании ключа и формулах за- и расшифровывания;
формируются открытый и закрытый ключи;
массив исходных данных в соответствии с формулами за- и расшифровывания преобразуется в массив выходных данных;
каждое значение массива выходных данных переводится в символ согласно таблице кодировок ANSI.
Как уже говорилось выше, надежность обуславливается практической неразрешимостью задачи разложения большого натурального числа на простые множители. Соответственно появляется и сложность в реализации алгоритма работы с большими числами. В данной программе данная проблема решается методом последовательного возведения в квадрат. После каждого возведения в квадрат результат сводится по модулю n. При этом никогда не возникает степеней больше n2.
Более подробно: рассмотрим двоичное представление r
Предположим, что мы знаем все числа
(a2, mod n) , 0<=j<=k,
тогда (ar, mod n) может быть вычислено помощью не более k-1 произведений и сведением каждого произведения по модулю n. Таким образом, достаточно вычислить числа, которые требуют k модульных возведения в квадрат и дополнительно не более k –1 модульных произведений. Это означает, что вычисляется не более 2k – 1 произведений с обоими множителями, меньшими, чем n, и сведением произведений по модулю n. Если r является большим и известно m, то r может быть вначале взято по модулю
К примеру, вычисляя (783, mod 61),замечаем, что 760=1(mod61).Следовательно, мы можем вычислить (723, mod 61).С помощью возведения в квадрат мы получаем степени семёрки, где показатель в свою очередь является степенью двойки.
j 0 1 2 3 4
72^j 7 49 22 54 16
Так как 23 = 10111, мы получаем желаемый результат следующим образом:
(723, mod 61) = (61*(22*(49*7)), mod 61) =17.
6. ОПИСАНИЕ МЕТОДА ШИФРОВАНИЯ С ОТКРЫТЫМ КЛЮЧОМ
В
С появлением систем с открытым ключом понятие о защите информации, а вместе с ним функции криптографии значительно расширились. Если раньше основной задачей криптографических систем считалось надежное шифрование информации, в настоящее время область применения криптографии включает также цифровую подпись (аутентификацию), лицензирование, нотаризацию (свидетельствование), распределенное управление, схемы голосования, электронные деньги и многое другое (см. [BFS91], ч.7, [S94], ч.1). Наиболее распространенные функции криптографических систем с открытым ключом - шифрование и цифровая подпись, причем роль цифровой подписи в последнее время возросла по сравнению с традиционным шифрованием: некоторые из систем с открытым ключом поддерживают цифровую подпись, но не поддерживают шифрование.
Цифровая подпись используется для аутентификации текстов, передаваемых по телекоммуникационным каналам. Она аналогична обычной рукописной подписи и обладает ее основными свойствами: удостоверяет, что подписанный текст исходит именно от лица, поставившего подпись, и не дает самому этому лицу возможности отказаться от обязательств, связанных с подписанным текстом. Цифровая подпись представляет собой небольшое количество дополнительной информации, передаваемой вместе с подписываемым текстом. В отличие от шифрования, при формировании подписи используется секретный ключ, а при проверке - открытый.
Из-за особенностей алгоритмов, лежащих в основе систем с открытым ключом, их быстродействие при обработке единичного блока информации обычно в десятки раз меньше, чем быстродействие систем с симметричным ключом на блоке той же длины. Для повышения эффективности систем с открытым ключом часто применяются смешанные методы, реализующие криптографические алгоритмы обоих типов. При шифровании информации выбирается случайный симметричный ключ, вызывается алгоритм с симметричным ключом для шифрования исходного текста. а затем алгоритм с открытым ключом для шифрования симметричного ключа. По коммуникационному каналу передается текст, зашифрованный симметричным ключом, и симметричный ключ, зашифрованный открытым ключом. Для расшифровки действия производятся в обратном порядке: сначала при помощи секретного ключа получателя расшифровывается симметричный ключ, а затем при помощи симметричного ключа - полученный по каналу зашифрованный текст. Для формирования электронной подписи по подписываемому тексту вычисляется его однонаправленная хэш-функция (дайджест) [one-way hash function, digest], представляющая собой один короткий блок информации, характеризующий весь текст в целом; задача восстановления текста по его хэш-функции или подбора другого текста, имеющего ту же хэш-функцию, практически неразрешима. При непосредственном формировании подписи, вместо шифрования секретным ключом каждого блока текста секретный ключ применяется только к хэш-функции; по каналу передается сам текст и сформированная подпись хэш-функции. Для проверки подписи снова вычисляется хэш-функция от полученного по каналу текста, после чего при помощи открытого ключа проверяется, что подпись соответствует именно данному значению хэш-функции. Алгоритмы вычисления однонаправленных хэш-функций, как правило, логически тесно связаны с алгоритмами шифрования с симметричным ключом.
Описанные гибридные методы шифрования и цифровой подписи сочетают в себе эффективность алгоритмов с симметричным ключом и свойство независимости от дополнительных секретных каналов для передачи ключей, присущее алгоритмам с открытым ключом. Криптографическая стойкость конкретного гибридного метода определяется стойкостью слабейшего звена в цепи, состоящей из алгоритмов с симметричным и с открытым ключом, выбранных для его реализации.
7. ОПИСАНИЕ АЛГОРИТМА АСИММЕТРИЧНОГО
МЕТОДА ШИФРОВАНИЯ С ОТКРЫТЫМ КЛЮЧОМ RSA
RSA (авторы: Rivest, Shamir и Alderman) это система с открытым ключом (public-key) предназначенная как для шифрования, так и для аутентификации была разработана в 1977 году. Она основана на трудности разложения очень больших целых чисел на простые сомножители.
RSA очень медленный алгоритм. Для сравнения, на программном уровне DES по меньше мере в 100 раз быстрее RSA, на аппаратном аж в 1,000-10,000 раз, в зависимости от выполнения.
Алгоритм асимметричного метода шифрования с открытым ключом RSA:
1. Берутся два очень больших целых числа P и Q и находятся N=PQ и M=(P-1)(Q-1)
2. Выбирается случайное целое число D, взаимно простое с M и вычисляется E=(1MODM)/D
3. Потом публикуется D и N как открытый ключ, E сохраняется в тайне.
4. Если S - сообщение, длина которого, определяемая по значению выражаемого им целого числа, должна быть в интервале (1,N), то оно превращается в шифровку возведением в степень D по модулю N и отправляется получателю C=SD MOD N
5. Получатель сообщения расшифровывает его, возведя в степень E (число E ему уже известно) по модулю N, т.к. S=CE MOD N.
8. СТРУКТУРА ПРОГРАММЫ
Данная программа написана на языке Object Pascal в соответствии с принципами структурного программирования и представляет собой набор процедур и функций, выполняющих определенные действия основной программы, осуществляющей синхронизацию процесса обработки данных и вызов соответствующих функций. Такой подход к написанию программ позволяет с высокой степенью эффективности осуществлять их отладку, а также, изменять их функциональные возможности, так как в данном случае за каждую операцию, выполняемую программой, отвечает относительно автономная подпрограмма (процедура или функция).
Рассматриваемая программа предусматривает работу в диалоге с пользователем. Для этого разработана система меню и использована библиотека Borland Delphi.
Основная программа представляет собой три этапа: подготовка к работе, сама работа и её завершение.
Алгоритм основной программы заключается в инициализации модулей программы и, в зависимости от выбора пользователя, управление передаётся одной из процедур или функций, находящейся в определённом модуле, либо осуществляется выход из программы. Все функции работают автономно и требуют для работы вызова основных модулей библиотеки Borland Delphi.
Процедуры по обработке данных требуют предварительного введения исходных данных из файла.
Таким образом, с точки зрения пользователя программа представляет собой исполняемый EXE файл и два модуля небольшого размера. Для запуска программы используется EXE файл, действующий под управлением операционной системы Windows. Программный интерфейс программы представляет собой меню, из которого происходит доступ ко всем процедурам и функциям программы.
С точки зрения программиста программный продукт представляет собой структурированную программу на языке Object Pascal, хранящуюся в пяти исходных файлах, один из которых является главным и содержит код инициализации модулей, а четыре других являются модулями, содержащими основные процедуры и функции, выполняющие вычисления для преобразования символов. Таким образом, в текст программы, кроме основных подпрограмм управления процессом обработки информации и создающих интерфейс, входят следующие процедуры и функции:
процедура вычисления n и m; в этой же процедуре находится d – взаимнообратное число с m и вычисляется e;
функция для работы с большими числами, т.е. функция, осуществляющая алгоритм последовательного возведения в квадрат, описанный выше (см. пункт 5);
функция возведения в степень (результат не должен превышать значение 9*1018);
процедура зашифрования;
процедура расшифрования.
Остальные процедуры и функции, использующиеся в программе, являются стандартными процедурами и функциями библиотеки языка Borland Delphi.
9. ТЕСТИРОВАНИЕ ПРОГРАММЫ И АНАЛИЗ ВЫЧИСЛИТЕЛЬНОГО ЭКСПЕРИМЕНТА
Для проверки работоспособности программы и правильности выполняемых программой операций был разработан тестовый пример. Тестовый пример заключается в получении преобразованных символов текстового файла в соответствии с алгоритмом за- и расшифрования методом шифрования RSA.
Тестовый пример представляет собой заранее подготовленный файл входных данных с именем TestFile.txt следующего содержания (ниже представлена часть файла, поскольку описывать весь файл не имеет смысла):
Таблица №1. Исходный текст.
ПОЛЕЗНЫЕ СОВЕТЫ ПО РАБОТЕ С КОМПЬЮТЕРОМ версия 23 от 7.05.2000 (338 советов) Подборка советов, касающихся Windows 95/98/NT, Word, Excel, FAR, Интернет, локальных сетей, антивирусной защиты, BIOS и компьютерного "железа". Оформлено в виде Windows help-файла и текстового файла в кодировке DOS (CP-866) на случай, если перестанет загружаться Windows. В последнем случае при отсутствии программы Norton Commander, Dos Navigator, Volkov Commander и т.п. посмотреть текстовый файл можно, например, с помощью стандартной команды: more sovety.txt |
Таблица №2. Зашифрованный текст.
GD_[ф+чЃц54P _чЃ )<_[ДyчЃђ‘ _ GD_[ бќ4Vю!_[ђ‘чЃ )< 13_[ё‰GDEWU_ђ‘чЃбќ_[ё‰`L__sџХ‡_њю‚гzщ‚ Р0Y Ь€K’ ћ~Ѓ/Щn\Ѓ/Р0ЩnЩnЩn …_YY_‡ ю‚Ь€sџХ‡K’Ь€sџvЊ`L __`L__GDЬ€ЩXуoЬ€_њ>VEK ю‚Ь€sџХ‡K’Ь€sџВC >VEKю‚EKCќз гz?_ю‚щ‚ »M(?_TZJ;ќ?_ ОY\ОY_‡Љ_Ь{ЂcВC »MZJgЋ lВC _‘Iaѓ_ю…Ў%ВC`L__MW p_NВC 9_і‚K’Х‡_њі‚Х‡K’ВC {8Ь€>VEK{8k€і‚>~?_ ю‚Х‡K’Х‡0ВC EKі‚K’гzsџгz_њfўю‚і‚Ь€0 5ЊEKз гzK’>~ВC zcвr'_кd гz`L__>VЬ€_|Xk€CќK’Х‡_њі‚Ь€_dЬ€ _ѓ[_Х‡{8Х‡5ЊEK_ѓЃ/`L__`L___[ЕWЬ€_њ_{8Х‡і‚Ь€ sџ sџгzЩXХ‡ »M(?_TlZJ;ќ?_ %”ю…Ў%№y¶_ЕWEK0{8EK гz K’Х‡>Vю‚K’Ь€sџЬ€_dЬ€ ЕWEK0{8EK џ`L__>VЬ€ЩXгz_њЬ€ sџ>VХ‡ $x'_кd …_љ__d¶__‡=<=<vЊ і‚EK ю‚{8fўоNEK0ВC Х‡ю‚{8гz |XХ‡_њХ‡ю‚K’EKі‚Х‡K’`L__5ЊEK_d_њfў[_EKK ’k€ю‚щ‚ »M(?_TlZJ;ќ?_Ѓ/ Дy |XЬ€ю‚{8Х‡ЩXі‚Х‡_ ю‚{8fўоN EKХ‡ |X_њгz Ь€K’ю‚fўK’ю‚K’sџгzгz`L__|X_њЬ€_d_њEK_ _>~ Ь{ZJgЋЭ'ZJ_T љ_ZJ#Ѓ#Ѓ ‑_Tlю…gЋВC $xZJ?_ Ь{ ‑А€(?Ђ1 ‑Э'ZJgЋВC .џZJЎ%_)ZJА€ љ_ZJ#Ѓ#Ѓ ‑_T…gЋ`L__гz K’Ѓ/|XЃ/ |
10. ОПИСАНИЕ ИНТЕРФЕЙСА ПРОГРАММЫ
Программа имеет удобный интерфейс, позволяющий работать с ней пользователям любого уровня. На рисунке 10.1 изображено начальное(стартовое) окно, предназначенное для ввода имени пользователя.
Рисунок 10.1 – начальное окно
На рисунке 10.2 представлено основное окно программы.
Рисунок 10.2 – основное окно программы
Описание пунктов меню:
File\Open File – открытие незашифрованного файла
File\Open Shfile – открытие зашифрованного файла
File\Save Result – сохранение результата
File\Reset – сброс установок программы в начальные
File\Exit – выход из программы
Edit\Generation Key – генерация открытого и закрытого ключей, а также расчёт всех основных характеристик
Edit\Encrypt File – зашифрование информации
Edit\Decrypt File – расшифрование информации
Edit\Information – просмотр информации, т.е. значений характеристик и ключей
Option\Show All – отображение в списке файлов из текущей директории файлов с любым расширением
Option\Show Encrypted – отображение в списке файлов из текущей директории файлов с расширением rsr
Option\Show Decrypted – отображение в списке файлов из текущей директории файлов с расширением txt
Option\ANSI – перевод содержимого окна просмотра в кодировку ANSI (кодировку Windows)
Option\ASCII – перевод содержимого окна просмотра в кодировку ASCII (кодировку DOS)
Option\Show Hidden – показать/спрятать скрытые файлы в списке файлов из текущей директории
Option\Show System – показать/спрятать системные файлы в списке файлов из текущей директории
Help\Contents – вызов окна помощи
Находясь в программе, пользователь может узнать об объекте, расположенном на форме, направив курсор мыши на данный объект. При этом около курсора мыши появится всплывающее меню с краткой информацией о данном объекте, а более полная информация буде отображаться на информационной панели, находящейся в нижней части формы. В правой части формы находится комплекс для выбора и просмотра того или файла. Просмотр файла осуществляется путём нажатия на клавишу View; при этом данные будут отображаться в окне просмотра информации.
Пользователь может использовать числа p и q, используемые для генерации открытого и закрытого ключей, как назначенные по умолчанию (это числа 127 и 331), так и собственные. Для записи собственных значений необходимо переключить режим Encryption Options в положение Personal. При обратном включении в положение Corporate текущие значения чисел p и q теряются и им присваиваются значения, назначенные по умолчанию.
ЗАКЛЮЧЕНИЕ
Данная программа разработана в соответствии с постановкой задачи на курсовое проектирование по теме "Защиты информации от несанкционированного доступа на базе алгоритма шифрования методом открытого ключа "По дисциплине "Кодирование и защита информации" (КИЗИ). При написании программы использованы методические указания по курсовому проектированию по дисциплине "КИЗИ". Интерфейс программы удобен для использования. Выходные данные представлены в виде текстового файла. По своей структуре программа хорошо организована, что позволяет в случае необходимости легко ее модифицировать. Для проверки работоспособности программы и правильности обработки входных данных разработан тестовый пример. Тестирование программы подтвердило, что программа правильно выполняет обработку данных и выдаёт верные результаты.
Всё это свидетельствует о работоспособности программы и позволяет сделать вывод о пригодности программы к использованию её в целях шифрования данных.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Саломаа А. Криптография с открытым ключом. – Перевод с англ. Вихлянцева И.А. под ред. Андреева А.Е. и Болотова А.А.
2. Ляшенко И.Н. Линейное и нелинейное программирование – К.: Высш. школа, 1975.-369с.
3. Н.Джахани "Программирование на языке Паскаль": Москва 1988