![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||
Главная
Рефераты по биологии Рефераты по экономике Рефераты по москвоведению Рефераты по экологии Краткое содержание произведений Рефераты по физкультуре и спорту Топики по английскому языку Рефераты по математике Рефераты по музыке Остальные рефераты Рефераты по авиации и космонавтике Рефераты по административному праву Рефераты по безопасности жизнедеятельности Рефераты по арбитражному процессу Рефераты по архитектуре Рефераты по астрономии Рефераты по банковскому делу Рефераты по биржевому делу Рефераты по ботанике и сельскому хозяйству Рефераты по бухгалтерскому учету и аудиту Рефераты по валютным отношениям Рефераты по ветеринарии Рефераты для военной кафедры Рефераты по географии Рефераты по геодезии Рефераты по геологии |
Реферат: Применение алгоритма RSA для шифрования потоков данныхРеферат: Применение алгоритма RSA для шифрования потоков данныхСОДЕРЖАНИЕ
ВВЕДЕНИЕ Проблема защиты информации путем ее преобразования, исключающего ее прочтение посторонним лицом, волновала человеческий ум с давних времен. История криптографии - ровесница истории человеческого языка. Более того, первоначально письменность сама по себе была своеобразной криптографической системой, так как в древних обществах ею владели только избранные. Священные книги древнего Египта, древней Индии тому примеры. История криптографии условно можно разделить на 4 этапа. 1) наивная криптография. 2) формальная криптография. 3) научная криптография. 4) компьютерная криптография. Для наивной криптографии (до нач. XVI века) характерно использование любых (обычно примитивных) способов запутывания противника относительно содержания шифруемых текстов. На начальном этапе для защиты информации использовались методы кодирования и стеганографии, которые родственны, но не тождественны криптографии. Большинство из используемых шифров сводились к перестановке или моноалфавитной подстановке. Одним из первых зафиксированных примеров является шифр Цезаря, состоящий в замене каждой буквы исходного текста на другую, отстоящую от нее в алфавите на определенное число позиций. Другой шифр, полибианский квадрат, авторство которого приписывается греческому писателю Полибию, является общей моноалфавитной подстановкой, которая проводится с помощью случайно заполненной алфавитом квадратной таблицейдля греческого алфавита размер составляет 5x5). Каждая буква исходного текста заменяется на букву, стоящую в квадрате снизу от нее. Этап формальной криптографии (кон. XV века - нач. XX века) связан с появлением формализованных и относительно стойких к ручному криптоанализу шифров. В европейских странах это произошло в эпоху Возрождения, когда развитие науки и торговли вызвало спрос на надежные способы защиты информации. Важная роль на этом этапе принадлежит Леону Батисте Альберти, итальянскому архитектору, который одним из первых предложил многоалфавитную подстановку. Данный шифр, получивший имя дипломата XVI века Блеза Вижинера, состоял в последовательном «сложении» букв исходного текста с ключом (процедуру можно облегчить с помощью специальной таблицы). Его работа «Трактат о шифре» (1466) считается первой научной работой по криптологии. Одной из первых печатных работ, в которой обобщены и сформулированы известные на тот момент алгоритмы шифрования является труд «Полиграфия» (1508 г.) немецкого аббата Иоганна Трисемуса. Ему принадлежат два небольших, но важных открытия: способ заполнения полибианского квадрата (первые позиции заполняются с помощью легко запоминаемого ключевого слова, остальные - оставшимися буквами алфавита) и шифрование пар букв (биграмм). Простым но стойким способом многоалфавитной замены (подстановки биграмм) является шифр Плейфера, который был открыт в начале XIX века Чарльзом Уитстоном. Уитстону принадлежит и важное усовершенствование - шифрование «двойным квадратом». Шифры Плейфера и Уитстона использовались вплоть до первой мировой войны, так как с трудом поддавались ручному криптоанализу. В XIX веке голландец Керкхофф сформулировал главное требование к криптографическим системам, которое остается актуальным и поныне: секретность шифров должна быть основана на секретности ключа, но не алгоритма. Наконец, последним словом в донаучной криптографии, которое обеспечили еще более высокую криптостойкосить, а также позволило автоматизировать (в смысле механизировать) процесс шифрования стали роторные криптосистемы. Одной из первых подобных систем стала изобретенная в 1790 году Томасом Джефферсоном, будущим президентом США механическая машина. Многоалфавитная подстановка с помощью роторной машины реализуется вариацией взаимного положения вращающихся роторов, каждый из которых осуществляет «прошитую» в нем подстановку. Практическое распространение роторные машины получили только в начале XX века. Одной из первых практически используемых машин, стала немецкая Enigma, разработанная в 1917 году Эдвардом Хеберном и усовершенствованная Артуром Кирхом. Роторные машины активно использовались во время второй мировой войны. Помимо немецкой машины Enigma использовались также устройства Sigaba (США), Турех (Великобритания), Red, Orange и Purple2 (Япония). Роторные системы -вершина формальной криптографии так как относительно просто реализовывали очень стойкие шифры. Успешные криптоатаки на роторные системы стали возможны только с появлением ЭВМ в начале 40-х годов. Главная отличительная черта научной криптографии (30-е - 60-е годы XX века) - появление криптосистем со строгим математическим обоснованием криптостойкости. К началу 30-х годов окончательно сформировались разделы математики, являющиеся научной основой криптологии: теория вероятностей и математическая статистика, общая алгебра, теория чисел, начали активно развиваться теория алгоритмов, теория информации, кибернетика. Своеобразным водоразделом стала работа Клода Шеннона «Теория связи в секретных системах» (1949), где сформулированы теоретические принципы криптографической защиты информации. Шеннон ввел понятия «рассеивание» и «перемешивание», обосновал возможность создания сколь угодно стойких криптосистем. В 60-х годах ведущие криптографические школы подошли к созданию блочных шифров, еще более стойких по сравнению с роторными криптосистемами, однако допускающие практическую реализацию только в виде цифровых электронных устройств. Компьютерная криптография (с 70-х годов XX века) обязана своим появлением вычислительным средствам с производительностью, достаточной для реализации критосистем, обеспечивающих при большой скорости шифрования на несколько порядков более высокую криптостойкость, чем «ручные» и «механические» шифры. Первым классом криптосистем, практическое применение которых стало возможно с появлением мощных и компактных вычислительных средств, стали блочные шифры. В 70-е годы был разработан американский стандарт шифрования DES (принят в 1978 году). Один из его авторов, Хорст Фейстел (сотрудник IBM), описал модель блочных шифров, на основе которой были построены другие, более стойкие симметричные криптосистемы, в том числе отечественный стандарт шифрования ГОСТ 28147-89. С появлением DES обогатился и криптоанализ, для атак на американский алгоритм был создано несколько новых видов криптоанализа (линейный, дифференциальный и т.д.), практическая реализация которых опять же была возможна только с появлением мощных вычислительных систем. В середине 70-х годов произошел настоящий прорыв в современной криптографии - появление асимметричных криптосистем, которые не требовали передачи секретного ключа между сторонами. Здесь отправной точкой принято считать работу, опубликованную Уитфилдом Диффи и Мартином Хеллманом в 1976 году под названием «Новые направления в современной криптографии». В ней впервые сформулированы принципы обмена шифрованной информацией без обмена секретным ключом. Независимо к идее асимметричных криптосистем подошел Ральф Меркли. Несколькими годами позже Рон Ривест, Ади Шамир и Леонард Адлеман открыли систему RSA, первую практическую асимметричную криптосистему, стойкость которой была основана на проблеме факторизации больших простых чисел. Асимметричная криптография открыла сразу несколько новых прикладных направлений, в частности системы электронной цифровой подписи (ЭЦП) и электронных денег. В 80-90-е годы появились совершенно новые направления криптографии: вероятностное шифрование, квантовая криптография и другие. Осознание их практической ценности еще впереди. Актуальной остается и задача совершенствования симметричных криптосистем. В 80-90-х годах были разработаны нефейстеловские шифры (SAFER, RC6 и др.), а в 2000 году после открытого международного конкурса был принят новый национальный стандарт шифрования США - AES. 1. ПОСТАНОВКА ЗАДАЧИ Безопасность передачи данных по каналам связи является актуальной. Современные компьютерные сети не исключение. К сожалению, в сетевых операционных системах (Windows NT/XP, Novell и т.д.) иностранного производства, как следствие, из-за экспортных соображений уровень алгоритмов шифрования заметно снижен. Задача: исследовать современные методы шифрования и их приложимость к шифрованию потоков данных. Разработать собственную библиотеку алгоритмов шифрования и программный продукт, демонстрирующий работу этих алгоритмов при передаче данных в сети. 2. АЛГОРИТМ RSA Труды Евклида и Диофанта, Ферма и Эйлера, Гаусса, Чебышева и Эрмита содержат остроумные и весьма эффективные алгоритмы решения диофантовых уравнений, выяснения разрешимости сравнений, построения больших по тем временам простых чисел, нахождения наилучших приближений и т.д. В последние два десятилетия, благодаря в первую очередь запросам криптографии и широкому распространению ЭВМ, исследования по алгоритмическим вопросам теории чисел переживают период бурного и весьма плодотворного развития. Вычислительные машины и электронные средства связи проникли практически во все сферы человеческой деятельности. Немыслима без них и современная криптография. Шифрование и дешифрование текстов можно представлять себе как процессы переработки целых чисел при помощи ЭВМ, а способы, которыми выполняются эти операции, как некоторые функции, определённые на множестве целых чисел. Всё это делает естественным появление в криптографии методов теории чисел. Кроме того, стойкость ряда современных криптосистем обосновывается только сложностью некоторых теоретико-числовых задач.
Но возможности
ЭВМ имеют
определённые
границы. Приходится
разбивать
длинную цифровую
последовательность
на блоки ограниченной
длины и шифровать
каждый такой
блок отдельно.
Мы будем считать
в дальнейшем,
что все шифруемые
целые числа
неотрицательны
и по величине
меньше некоторого
заданного
(скажем, техническими
ограничениями)
числа m.
Таким же условиям
будут удовлетворять
и числа, получаемые
в процессе
шифрования.
Это позволяет
считать и те,
и другие числа
элементами
кольца вычетов
а число
Простейший
шифр такого
рода - шифр замены,
соответствует
отображению
В 1978 г. американцы
Р. Ривест, А. Шамир
и Л. Адлеман
(R.L.Rivest.
A.Shamir.
L.Adleman)
предложили
пример функции
1) существует
достаточно
быстрый алгоритм
вычисления
значений
2) существует
достаточно
быстрый алгоритм
вычисления
значений обратной
функции
3) функция
Еще до выхода из печати статьи копия доклада в Массачусетском Технологическом институте, посвящённого системе RSA. была послана известному популяризатору математики М. Гарднеру, который в 1977 г. в журнале Scientific American опубликовал статью посвящённую этой системе шифрования. В русском переводе заглавие статьи Гарднера звучит так: Новый вид шифра, на расшифровку которого потребуются миллионы лет. Именно эта статья сыграла важнейшую роль в распространении информации об RSA, привлекла к криптографии внимание широких кругов неспециалистов и фактически способствовала бурному прогрессу этой области, произошедшему в последовавшие 20 лет. 2.1. система шифрования RSA
Пусть
Для расшифровки
сообщения
При некоторых
условиях на
Для того,
чтобы описать
эти условия
и объяснить,
как можно найти
решение, нам
потребуется
одна теоретико-числовая
функция, так
называемая
функция Эйлера.
Эта функция
натурального
аргумента
Если показатель
степени
Такое число
существует,
поскольку
Таким
образом, в
предположении
Если дополнительно
предположить,
что число
Функция
(1), принятая в
системе RSA,
может быть
вычислена
достаточно
быстро. Обратная
к
Для вычисления
функции (1) достаточно
знать лишь
числа
Авторы
схемы RSA
предложили
выбирать число
то единственное
условие на
выбор показателя
степени
Итак, лицо,
заинтересованное
в организации
шифрованной
переписки с
помощью схемы
RSA,
выбирает два
достаточно
больших простых
числа
Для иллюстрации
своего метода
Ривест, Шамир
и Адлеман
зашифровали
таким способом
некоторую
английскую
фразу. Сначала
она стандартным
образом (а=01, b=02,
.... z=26,
пробел=00) была
записана в виде
целого числа
m=11438162575788886766932577997614661201021829672124236256256184293570 6935245733897830597123563958705058989075147599290026879543541
и
была обещана награда в 100$.
Эта история
завершилась
спустя 17 лет в
1994 г., когда D.
Atkins,
M.
Graff,
А. К. Lenstra
и Р. С. Leyland
сообщили о
расшифровке
фразы. Числа
Этот замечательный результат (разложение на множители 129-значного десятичного числа) был достигнут благодаря использованию алгоритма разложения чисел на множители, называемого методом квадратичного решета. Выполнение вычислений потребовало колоссальных ресурсов. В работе, возглавлявшейся четырьмя авторами проекта, и продолжавшейся после предварительной теоретической подготовки примерно 220 дней, на добровольных началах участвовало около 600 человек и примерно 1600 компьютеров, объединённых сетью Internet. Наконец, отметим, что премия в 100$ была передана в Free Software Foundation. 2.2.Сложность теоретико-числовых алгоритмов Сложность алгоритмов теории чисел обычно принято измерять количеством арифметических операций (сложений, вычитаний, умножений и делений с остатком), необходимых для выполнения всех действий, предписанных алгоритмом. Впрочем, это определение не учитывает величины чисел, участвующих в вычислениях. Ясно, что перемножить два стозначных числа значительно сложнее, чем два однозначных, хотя при этом и в том, и в другом случае выполняется лишь одна арифметическая операция. Поэтому иногда учитывают ещё и величину чисел, сводя дело к так называемым битовым операциям, т. е. оценивая количество необходимых операций с цифрами 0 и 1, в двоичной записи чисел. Говоря о сложности алгоритмов, мы будем иметь в виду количество арифметических операций. При построении эффективных алгоритмов и обсуждении верхних оценок сложности обычно хватает интуитивных понятий той области математики, которой принадлежит алгоритм. Формализация же этих понятий требуется лишь тогда, когда речь идёт об отсутствии алгоритма или доказательстве нижних опенок сложности. Приведем теперь примеры достаточно быстрых алгоритмов с опенками их сложности. Здесь и в дальнейшем мы не будем придерживаться формального описания алгоритмов, стараясь в первую очередь объяснить смысл выполняемых действий.
Следующий
алгоритм вычисляет
2.2.1.
Алгоритм
вычисления
3) Справедливость этого алгоритма вытекает из сравнения
легко
доказываемого
индукцией по
Так как
каждое вычисление
на шаге 2 требует
не более трёх
умножений
по модулю
Второй
алгоритм - это
классический
алгоритм Евклида
вычисления
наибольшего
общего делителя
целых чисел.
Мы предполагаем
заданными два
натуральных
числа
2.2.2. Алгоритм Евклида
Теорема
1. При вычислении
наибольшего
общего делителя
Доказательство.
Положим
Пусть также
Немного
подправив
алгоритм Евклида,
можно достаточно
быстро решать
сравнения
2.2.3.
Алгоритм
решения уравнения
0) Определим
матрицу
1) Вычислим
Если обозначить
через
Три приведённых
выше алгоритма
относятся к
разряду так
называемых
полиномиальных
алгоритмов.
Это название
носят алгоритмы,
сложность
которых оценивается
сверху степенным
образом в зависимости
от длины записи
входящих чисел.
Если наибольшее
из чисел, подаваемых
на вход алгоритма,
не превосходит
Полиномиальные алгоритмы в теории чисел - большая редкость. Да и опенки сложности алгоритмов чаше всего опираются на какие-либо не доказанные, но правдоподобные гипотезы, обычно относящиеся к аналитической теории чисел. Для некоторых задач эффективные алгоритмы вообще не известны. Иногда в таких случаях все же можно предложить последовательность действий, которая, «если повезет», быстро приводит к требуемому результату. Существует класс так называемых вероятностных алгоритмов, которые дают правильный результат, но имеют вероятностную опенку времени работы. Обычно работа этих алгоритмов зависит от одного или нескольких параметров. В худшем случае они работают достаточно долго. Но удачный выбор параметра определяет быстрое завершение работы. Такие алгоритмы, если множество «хороших» значений параметров велико, на практике работают достаточно эффективно, хотя и не имеют хороших опенок сложности. Мы будем иногда использовать слова детерминированный алгоритм, чтобы отличать алгоритмы в обычном смысле от вероятностных алгоритмов.
Как пример,
рассмотрим
вероятностный
алгоритм, позволяющий
эффективно
находить решения
полиномиальных
сравнений по
простому модулю.
Пусть
Например,
речь может идти
о решении
квадратичных
сравнений, если
степень многочлена
Согласно
малой теореме
Ферма, все элементы
поля
Для вычисления
многочлена
Таким
образом, обсуждая
далее задачу
нахождения
решений сравнения
(8), мы можем предполагать,
что в кольце
многочленов
2.2.4.
Алгоритм нахождения
делителей
многочлена
1) Выберем
каким-либо
способом элемент
4) Если окажется,
что
Количество
операций на
шаге 2 оценивается
величиной
Количество
решений уравнения
состоит
не менее, чем
из
Итак, существует
не менее
Заметим,
что при опенке
вероятности
мы использовали
только два
корня многочлена
Если в
сравнении (8)
заменить простой
модуль
3. КАЧЕСТВЕННАЯ ТЕОРИЯ АЛГОРИТМА RSA
Существует
довольно эффективный
способ убедиться,
что заданное
число является
составным, не
разлагая это
число на множители.
Согласно малой
теореме Ферма,
если число
Если же
при каком-то
К сожалению,
такой подход
не всегда даёт
то, что хотелось
бы. Имеются
составные числа
В 1976 г. Миллер
предложил
заменить проверку
(9) проверкой
несколько
иного условия.
Если
делится
на
Пусть
1)
2)
Из сказанного
ранее следует,
что для простого
числа
Теперь можно построить вероятностный алгоритм, отличающий составные числа от простых. 3.1. Алгоритм, доказывающий непростоту числа
Из сказанного
выше следует,
что составное
число не будет
определено
как составное
после однократного
выполнения
шагов 1-3 с вероятностью
не большей
Миллер
предложил
детерминированный
алгоритм определения
составных
чисел, имеющий
сложность
Напомним
некоторые
понятия, необходимые
для формулировки
расширенной
гипотезы Римана.
Они понадобятся
нам и в дальнейшем.
Пусть
С каждым
характером
может быть
связана так
называемая
В 1952 г. Анкени
с помощью расширенной
гипотезы Римана
доказал, что
для каждого
простого числа
Алгоритм
Миллера принципиально
отличается
от алгоритма
2.1., так как полученное
с его помощью
утверждение
о том, что число
3.2. Нахождение больших простых чисел Конечно же, большие простые числа можно строить сравнительно быстро. При этом можно обеспечить их случайное распределение в заданном диапазоне величин. В противном случае теряла бы всякий практический смысл система шифрования RSA. Наиболее эффективным средством построения простых чисел является несколько модифицированная малая теорема Ферма.
Теорема
2. Пусть
Тогда каждый
простой делитель
Доказательство.
Пусть
Обозначим
буквой
Следствие.
Если выполнены
условия теоремы
2 и
Действительно,
пусть
Покажем
теперь, как с
помощью последнего
утверждения,
имея большое
простое число
Для этого
можно случайным
образом выбирать
число
Если при
выбранном
Предположим,
что построенное
число
Заметим,
что построенное
таким способом
простое число
Обсудим
теперь некоторые
теоретические
вопросы, возникающие
в связи с нахождением
числа
Таким
образом, в настоящее
время никаких
теоретических
гарантий для
существования
простого числа
Очень важен
в связи с описываемым
методом построения
простых чисел
также вопрос
о расстоянии
между соседними
простыми числами
в арифметической
прогрессии.
Ведь убедившись,
что при некотором
В качестве
итога обсуждения
в этом пункте
подчеркнём
следующее: если
принять на
веру, что наименьшее
простое число,
а также расстояние
между соседними
простыми числами
в прогрессии
Конечно, способ конструирования простых чисел для использования в схеме RSA должен быть массовым, а сами простые числа должны быть в каком-то смысле хорошо распределёнными. Это вносит ряд дополнительных осложнений в работу алгоритмов.
Наконец,
отметим, что
существуют
методы построения
больших простых
чисел, использующие
не только простые
делители
3.3. Проверка большого числа на простоту
Есть некоторое
отличие в постановках
задач предыдущего
и настоящего
пунктов. Когда
мы строим простое
число
В этом пункте
мы предполагаем
лишь, что нам
задано некоторое
число
В настоящее
время известны
детерминированные
алгоритмы
различной
сложности для
доказательства
простоты чисел.
Мы остановимся
подробнее
на одном из
них, предложенном
в 1983 г. в совместной
работе Адлемана.
Померанца и
Рамели. Для
доказательства
простоты или
непростоты
числа
В основе
алгоритма лежит
использование
сравнений типа
малой теоремы
Ферма, но в кольцах
целых чисел
круговых полей,
т. е. полей. порождённых
над полем
Следующая функция, определённая на множестве целых чисел.
является
характером
по модулю
Сумма
называется суммой Гаусса. Формулируемая ниже теорема 3 представляет собой аналог малой теоремы Ферма, используемый в алгоритме Адлемана - Ленстры.
Теорема
3. Пусть
Если при
каких-либо
числах
В случае
где
Пример
(X.
Ленстра). Пусть
а кроме
того с некоторым
целым числом
Как уже
указывалось,
при простом
Докажем,
что из выполнимости
(14-15) следует, что
каждый делитель
Не уменьшая
общности, можно
считать, что
означающие (в силу того, что символ Якоби может равняться лишь -1 или +1), что
При
Информация
такого рода
получается
и в случае
произвольных
простых чисел
Опишем
схему алгоритма
Адлемана - Ленстры
для проверки
простоты
1) выбираются
различные
простые числа
1) для каждого
1)
4) проверяется,
содержит ли
найденное
множество
делители
Если число
Сумма Якоби
определяется
для двух характеров
связывающее
суммы Гаусса
с суммами Якоби
и позволяющее
переписать
сравнение
теоремы 3 в терминах
сумм Якоби.
Так. при
где
В 1984 г. было
внесено существенное
усовершенствование
в алгоритм,
позволившее
освободиться
от требования
неделимости
чисел
Персональный компьютер с процессором Pentium-150. пользуясь реализацией этого алгоритма на языке UBASIC, доказал простоту записываемого 65 десятичными знаками, большего из простых чисел в примере Ривеста, Шамира и Адлемана за 8 секунд. Сравнение этих 8 секунд и 17 лет, потребовавшихся для разложения на множители предложенного в примере числа, конечно, впечатляет.
Отметим,
что опенка
сложности этого
алгоритма
представляет
собой трудную
задачу аналитической
теории чисел.
Как уже указывалось,
количество
операций оценивается
величиной
4. ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА Представленный выше алгоритм шифрования был реализован с помощью интегрированного пакета фирмы Borland Delphi 5.0. Выбор данного языка программирования обоснован тем что, он предоставляет такие возможности, как объектно-ориентированный подход к программированию, основанный на формах, интеграция с программированием для Windows и компонентная технология. Среду визуального программирования Delphi 5 позволяет с помощью компонентного подхода к созданию приложений, быстро и качественно "собрать" интерфейс программы и большую часть времени использовать именно на реализацию составленного алгоритма. Программа построена по технологии клиент/сервер, т.е. клиент передает по сети данные из стандартного потока ввода (с клавиатуры), предварительно зашифровав, сервер, получая поток данных, автоматически его расшифровывает.
Программный
продукт состоит
из двух приложений.
Первое приложение
представляет
собой программу
генерации
ключей. Она
выводит все
простые числа
заданного
диапазона, из
которых потом
выбираются
числа
4.1. Реализованные алгоритмы
В программном
продукте были
реализованы
основные алгоритмы
схемы RSA.
Функция ModDegree
производит
вычисление
4.2. Анализ результатов Результатом работы созданной программы являются зашифрованные и расшифрованные сообщения.
Для тестирования
программы
использовался
пример приведенный
в [11]
5. ВЫВОДЫ Перейдем к обсуждению выводов после детального просмотра специфики метода, реализованного программного продукта на основе построенного алгоритма, а также представленного анализа результатов по обработанному материалу. 5.1 Алгоритм Использованный алгоритм RSA имеет ряд преимуществ: 1) алгоритм RSA является ассиметричным, т.е. он основывается на распространении открытых ключей в сети. Это позволяет нескольким пользователям обмениваться информацией, посылаемой по незащищенным каналам связи;
2) пользователь
сам может менять
как числа
При всех этих преимуществах данный алгоритм имеет существенный недостаток – невысокая скорость работы. Алгоритм RSA работает более чем в тысячу раз медленнее симметричного алгоритма DES. Из всего вышесказанного можно заключить, что данный алгоритм шифрования, хотя довольно медленный, но он ассиметричный и позволяет добиваться нужной криптостойкости, что делает его незаменимым при работе в незащищенных каналах связи. 5.2 Алгоритм и программа Исходя из проработанных данных, по построенному алгоритму и созданному программному продукту сделаны следующие выводы: 1) построенный алгоритм, а соответственно и созданный на его базе программный продукт, полностью реализует базовые механизмы схемы RSA и, таким образом удовлетворяют основным поставленным задачам; 2) данный программный продукт построен по технологии клиент/сервер и предназначен сохранять конфиденциальность передачи информации в сети. Таким образом, по выводам о построенном алгоритме и созданном программном продукте можно заключить, что он подходит для решения проблем шифрования информации, связанных с передачей данных по сети. ЗАКЛЮЧЕНИЕ В рамках данного дипломного проектирования перед студентом Малышевым А.А. была поставлена задача: на основе алгоритма RSA для шифрования блоков данных, построить алгоритм и реализовать программный продукт для шифрования потоков данных. В результате выполнения дипломного проектирования был составлен принципиальный алгоритм для решения поставленной задачи. Далее он был детализован и реализован на ЭВМ. В конце, был проведён анализ полученных результатов, и сделаны необходимые выводы. За основу построения алгоритма был принят алгоритм RSA для шифрования блоков данных, изучена соответствующая литература по алгоритму, и был построен алгоритм и реализован программный продукт в среде визуального программирования Delphi 5 под ОС типа Windows для IBM PC-совместимых компьютеров. Созданный программный продукт позволяет решить поставленную задачу и, дополнительно, содержит в себе небольшую базу данных абонентов. Т.е. в результате выполнения программы исходное сообщение шифруется и передается по сети, где оно расшифровывается. Также можно указать о том, что программа имеет интуитивно понятный интерфейс, что дополнительно помогает пользователю с наибольшей результативностью использовать всю ресурсную базу. В заключении, после анализа полученных результатов были сделаны выводы, согласно которым алгоритм работает и применим для поставленной задачи. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 1. Ященко В. В. Основные понятия криптографии // Математическое просвещение. Сер. 3. №2. 1998. С. 53-70. 2. Виноградов И. М. Основы теории чисел. М.: Наука. 1972. 3. Карацуба А. А. Основы аналитической теории чисел. М.: Наука. 1983 г. 4. Кнут Д. Искусство программирования на ЭВМ. Т.2: Получисленные алгоритмы. М.: Мир. 1977. 5. Ахо А.. Хопкрофт Дж.. Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир. 1979. 6. Варновский Н. П. Криптография и теория сложности // Математическое просвещение. Сер. 3. №2. 1998. С. 71-86. 7. Василенко О. Н. Современные способы проверки простоты чисел // Кибернетический сборник, вып. 25. 1988. С. 162-188. 8. Прахар К. Распределение простых чисел. М.: Мир. 1967. 9.Боревич З.И. Шафаревич И.Р. Теория чисел. М.: Наука. 1964. 10. Кострикин А.И. Введение в алгебру. М.: Наука. 1977. 11. Брассар Дж. Современная криптология. Мир ПК. №3. 1997. ПРИЛОЖЕНИЕ 1 Листинг программы Модуль Key.pas Function Prost(n:integer):Boolean; var k:Boolean; i:integer; begin k:=true; if n<>2 then for i:=2 to trunc(sqrt(n))+1 do if (n/i)=trunc(n/i) then begin k:=False; Break; end; Prost:=k; end; {________________________________________________________} Function Evklid(Num1,Num2:integer):integer; var r,q1,p1:array of integer; i,n,k:integer; begin if Num1>=Num2 then begin SetLength(r,10); r[0]:=Num1; r[1]:=Num2; end else begin SetLength(r,10); r[0]:=Num2; r[1]:=Num1; end; i:=1; while r[i]<>0 do begin inc(i); r[i]:=r[i-2] mod r[i-1]; end; n:=i-2; SetLength(q1,n+1); for i:=0 to n do q1[i]:=r[i] div r[i+1]; SetLength(p1,n+2); p1[0]:=1; p1[1]:=q1[0]; k:=length(q1); if k>1 then for i:=2 to k do p1[i]:=q1[i-1]*p1[i-1]+p1[i-2]; Result:=trunc(power(-1,k-1))*p1[k-1] mod Num2; end; {________________________________________________________} Function HOD(Num1,Num2:integer):integer; var r:array of integer; i:integer; begin if Num1>=Num2 then begin SetLength(r,Num2); r[0]:=Num1; r[1]:=Num2; end else begin SetLength(r,Num1); r[0]:=Num2; r[1]:=Num1; end; i:=1; While r[i]<>0 do begin inc(i); r[i]:=r[i-2] mod r[i-1]; end; Result:=r[i-1]; end; {________________________________________________________} Function ModDegree(Num,Degree,n:integer):integer; var x:array of integer; i:integer; begin SetLength(x,n); x[1]:=Num mod n; for i:=2 to Degree do x[i]:=x[i-1]*Num mod n; Result:=x[Degree]; end; ПРИЛОЖЕНИЕ 2 Главная форма программы
ПРИЛОЖЕНИЕ 3 Форма базы данных абонентов
ПРИЛОЖЕНИЕ 4 Форма нахождения простых чисел и генерации ключей
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ АМУРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Факультет математики и информатики Кафедра математического анализа и моделирования Специальность 010200 – “прикладная математика” ДОПУСТИТЬ К ЗАЩИТЕ Зав. кафедрой ____________________ ___________Т.В.Труфанова «____»_____________2002 г. ДИПЛОМНАЯ РАБОТА на тему Применение алгоритма RSA при шифровании потоков данных Исполнитель студент группы 752 А. А. Малышев Руководитель к.ф.-м.н., доцент А.Н. Семочкин Нормоконтроль к.т.н., доцент А.Н. Гетман Рецензент к.ф.-м.н., доцент Е.Ф. Алутина Благовещенск 2002 МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ АМУРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Факультет математики и информатики Кафедра математического анализа и моделирования Утверждаю: Зав. кафедрой _______________________ подпись И.О.Фамилия «__»_____________ 200_г. ЗАДАНИЕ К дипломной работе студента Малышева Андрея Александровича 1. Тема дипломной работы Применение алгоритма RSA при шифровании потоков данных (утверждено приказом от ____ №___________) 2. Срок сдачи студентом законченной работы ________________________ 3. Исходные данные к дипломной работе ___________________________ 4. Содержание дипломной работы (перечень подлежащих разработке вопросов) Исследовать современные методы шифрования и их приложимость к шифрованию потоков данных. Разработать собственную библиотеку алгоритмов шифрования и программный продукт, демонстрирующий работу этих алгоритмов при передаче данных в сети. 5. Дата выдачи задания « » ____________2002 г. Руководитель дипломной работы Семочкин Александр Николаевич к.ф.-м.н., доцент кафедры МАиА. Задание принял к исполнению _____________________________________ РЕФЕРАТ Дипломная работа 48 стр., 11 источников, 4 приложения. АЛГОРИТМ RSA, ФУНКЦИЯ ЭЙЛЕРА, ВЗАИМНО ПРОСТЫЕ ЧИСЛА В данном дипломном проекте рассматривается задача анализа алгоритма шифрование в потоках данных RSA. Для этого построен алгоритм и реализован программный продукт. Программный продукт создан в среде визуального программирования Delphi 5.0, отлажен и протестирован. На основании анализа полученных результатов сделаны выводы, указаны замечания и рекомендации исследователю по практическому использованию программы, а также по дальнейшему улучшению алгоритма и программного продукта в целом. |
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|