Разработка криптографического редактора
Разработка блочных шифров. Анализ криптографических методов шифрования данных. Расшифрование, шифрование и аутентификация почтовых сообщений. Создание криптосистемы основанной на схеме Эль-Гамаля. Выбор языка программирования и среды разработки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 25.10.2017 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
В настоящее время методы криптографии нашли большое пpимeнeниe нe только для зaщиты данных от нежелательного доступа, но и в качестве основы многих новых информационных технологий -- электронных денег, документооборота, тайного голосования и другие. Современная криптография решает следующие три основные задачи:
· обеспечение конфиденциальности;
· обеспечение проверки подлинности информации и источника сообщений;
· обеспечение анонимности.
Первая задача известна с древних времен, другие две являются относительно новыми, и с их решением связан ряд перспективных направлений теоретической и практической криптографии. Тем не менее, традиционная криптографическая задача обеспечения конфиденциальности информации не утратила своей актуальности и в наше время. Это связано, в свою очередь, с тем, что в эпоху массового распространения компьютерных технологий задача защиты данных приобрела характер широкомасштабной проблемы. При этом к методам шифрования предъявляются жесткие технологические требования, которые продиктованы их использованием в различных электронных устройствах. Важным для технологических применений криптографических средств является возрастание требований к шифрам одновременно по стойкости, скорости и по простоте реализации. Ужесточение требований по стойкости обусловлено тем, что разностороннее использование криптографических алгоритмов связано с более широкими возможностями для атакующего следовать особенностям конкретных условий, в которых работает криптосистема. Возросшие требования к скорости связаны с необходимостью сохранения высокой производительности компьютерных систем после встраивания в них защитных механизмов. Простота реализации необходима для снижения стоимости средств шифрования, что будет способствовать их более широкому применению и более широким возможностям интегрирования в портативную технику. В силу специфики представления информации в цифровых устройствах больший интерес представляют блочные шифры, которые могут, обеспечить произвольный доступ к информации на закодированных носителях.
Таким образом, разработка блочных шифров является важной задачей прикладной криптографии. В этой области сделано немалое число решений со стороны российских и зарубежных криптографов. Характерным для большого количества новых скоростных шифров являются предвычисления, осуществляющие расширение секретного ключа. При создании шифров применение сложных алгоритмов предвычислений с целью упрощения шифрующих преобразований в большинстве приложений является оправданным. При создании шифров двойной ориентации, например американского стандарта AES, криптографы также, во-первых, учитывают возможности современных процессоров, полагая, что современная микроэлектронная технология легко может обеспечить аппаратную реализацию весьма сложных алгоритмов. Однако, при широком использовании аппаратов шифрования в компьютерных и телекоммуникационных системах, экономия аппаратных ресурсов является крайне важной. Наиболее экономичные решения дают возможность изготовить менее дорогостоящие и более надежные устройства, а также снизить потребление мощности.
Большому количеству пользователей доводилось замечать личные данные в свободном доступе, в интернете. Многих людей это справедливо возмущало, и они требовали прекращение свободного распространения личной информации. Но проблема состояла в том, что персональная информация не была четко классифицирована, и не было ясности в том, что можно распространять, а что нет.
Неясности были устранены законом Российской Федерации №152-ФЗ от 27 июля 2006 года. И теперь известно, что личные данные это любая информация, относящаяся к определенному или определяемому физическому лицу, в том числе его фамилия, имя, отчество, год, месяц, дата и место рождения, адрес, имущественное, социальное, семейное положение, профессия, образование, доходы, другая информация.
Закон накладывает обязательства на операторов личных данных - те компании и организации, которые оперируют такими данными. Согласно закону, с 1 января 2010 года все операторы персональных данных должны обеспечить защиту персональных данных в соответствии с требованиями закона 152-ФЗ. А «лица, виновные в нарушении требований настоящего Федерального закона, несут гражданскую, уголовную, административную, дисциплинарную и иную предусмотренную законодательством Российской Федерации ответственность».
В данной работе будет рассмотрен алгоритм, при помощи которого можно защитить свои персональные данные. Выбор пал на схему Эль-Гамаля по следующим причинам:
· в изучаемой программной платформе «.NETFramework»данный алгоритм не встроен, в отличие от алгоритма RSA;
· основан на трудной задаче вычисления дискретных логарифмов в конечном поле;
· позволяет быстро генерировать ключи без снижения стойкости;
· используется в алгоритме цифровой подписи DSA-стандарта DSS, разработанного службой АНБ и принятого в качестве государственного стандарта США;
· код данной программы применим и в других приложениях для шифрования информации;
· возможность расширения функционала, путем использования схемы Эль-Гамаля для создания электронно-цифровой подписи;
· безопасный обмен данными по незащищенным каналам.
Дипломная работа состоит из двух глав, введения и заключения. В первой главе будет рассмотрена аналитическая часть, то есть будут освещены некоторые факты из истории криптографии, рассмотрены существующие криптографические системы, поставлены задачи для выполнения в рамках данного дипломного проекта. Во второй главе будет подробно рассмотрена схема Эль-Гамаля, средства для разработки и, непосредственно, описана сама разработка криптографического редактора.
1. АНАЛИТИЧЕСКИЙ РАЗДЕЛ
1.1 анализ криптографических методов шифрования данных
Данные, передаваемые из одной системы в другую через общедоступную сеть, могут быть защищены с помощью методов шифрования, используя «ключ». Только пользователь, имеющий доступ к этому «ключу» может зашифровать / расшифровать данные. Этот метод известен как симметричный или метод с закрытым ключом. Примерами могут послужить AES, 3DES и т.д. Эти стандартные симметричные алгоритмы, определенно доказано имеют высокий уровень безопасности и проверены временем. Но проблема этих алгоритмов состоит в процессе обмена ключами. Сообщающиеся стороны требуют наличия общего секретного «ключа», чтобы наладить защищенную связь. Безопасность алгоритма симметричного ключа зависит от секретности ключа. Ключи, как правило, составляют сотни битов в длину, в зависимости от используемого алгоритма. В большой сети, где существуют сотни систем, обмен ключами в автономном режиме кажется слишком трудным и даже нереальным. Тогда шифрование с открытым ключом приходит на помощь. Использование алгоритма с открытым ключом общего доступа может быть установлено онлайн между взаимодействующими сторонами без необходимости обмена какими-либо секретными данными.
В 1976 году два исследователя, Уитфилд Диффи и Мартин Хеллман, из Стэндфордского университета решили проблему передачи секретных ключей используемых в симметричных системах шифрования. Протокол Diffie-Hellman позволил двум и более сторонам получить общий секретный ключ. Они предложили криптосистему, в которой ключ шифрования и ключ дешифрования были разными. Такой подход в криптографии, известен как метод с открытым ключом, использует пару криптографических ключей, открытый ключ и закрытый ключ. Секретный ключ хранится в секрете, в то время как открытый ключ может распространяться открыто, тем самым устраняя необходимость передачи секретного ключа заранее. Ключи связаны математически, что позволяет отправителю сообщения, зашифровать его сообщение с помощью открытого ключа получателя. Затем сообщение может быть расшифровано только с помощью закрытого ключа получателя. Только конкретный пользователь / устройство знает секретный ключ, а открытый ключ распространяется среди всех пользователей / устройств, участвующих в сообщении. Знание открытого ключа не ставит под угрозу безопасность алгоритмов.
Функция «One-Way». В ассиметричной криптографии, ключи и сообщения выражены в цифровой форме, операции представлены математически. Частный и публичный ключи связаны с помощью математической функции, называемой односторонней функцией. Односторонние функции являются математическими функции, в которых преобразование в одну сторону может быть сделано легко, но обратная операция настолько сложна, что практически невозможна. Получение секретного ключа из открытого ключа является обратной операцией.
В криптографии, система шифрования ElGamal является асимметричным алгоритмом шифрования для криптографии с открытым ключом, который основан на обмене ключами Диффи-Хеллмана. Он был описан Тахером Эль-Гамалем - рисунок 1.1, в 1984 г. Схема шифрования используется в программе шифрования GNU Privacy Guard, последние версии PGP и другие криптосистемы. Алгоритм цифровой подписи представляет собой вариант схемы подписи ElGamal, который не следует путать с шифрованием ElGamal.
Рисунок 1.1 - Тахер Эль - Гамаль
В отличие от RSA алгоритм Эль-Гамаля не был запатентован и, поэтому, стал более дешевой заменой, так как не требовалась оплата за лицензию. Считается, что данный метод попадает под действие патента Диффи-Хеллмана.
Схема ElGamal состоит из трех компонентов:
· Основной генератор;
· Алгоритм шифрования;
· Алгоритм дешифрования.
Метод Эль-Гамаля основан на проблеме дискретного логарифма, то есть нахождение такого x при данных p, g и y, что gx = y (mod p). Этим он похож на алгоритм Диффи-Хеллмана. Если возводить число в степень в конечном поле достаточно легко, то восстановить аргумент по значению (то есть найти логарифм в множестве целых чисел) довольно трудно.
В свою очередь метод RSA основан на вычислительной сложности задачи факторизации больших целых чисел. То есть, стойкость алгоритма основывается на сложности вычисления обратной функции к функции шифрования, злоумышленнику необходимо узнать dпри неизвестном ц(n) -формула (1.1):
(1.1).
Время выполнения наилучших из известных алгоритмов разложения при n=10100 на сегодняшний день выходит за пределы современных технологических возможностей.
1.2 Обзор существующих систем
Приведем пример двух известных криптосистем, таких как PGP(Pretty Good Privacy)- программа, которая позволяет производить операции шифрования и цифровой подписи различной информации в электронном виде - рисунок 1.2, и GNUPG(GNU Privacy Guard) - свободная программа для шифрования информации и создания электронных цифровых подписей. Разработана как альтернатива PGP - рисунок 1.3.
Рисунок 1.2 - Pretty Good Privacy
Рисунок 1.3 - GNU Privacy Guard
Данные криптосистемы имеют широкий функционал:
· Расшифрование, шифрование и аутентификация почтовых сообщений;
· Поддержка ЭЦП с помощью алгоритмов ElGamal, DSA, RSA;
· Работа с асимметричным шифрованием ElGamal и RSA;
· Поддержка алгоритмов сжатия: ZIP, ZLIB, BZIP2;
· Создание новых алгоритмов с помощью дополнительных модулей;
Недостатки:
· Требование больших вычислительных мощностей;
· Отсутствие поддержки русского языка;
· Закрытый код;
· Неоднозначный, зачастую непонятный интерфейс, либо слишком большое нагромождение различных функций;
· Большой объем программного продукта из-за добавления функций, не имеющих отношения к основной функции - шифрованию.
Исходя из этого, было решено реализовать надежный, бесплатный , интуитивно понятный в использовании продукт, код которого можно интегрировать и в другие приложения, при необходимости шифрования данных внутри других проектов.
1.3 Постановка задачи
Операция шифрования является одним из основных видов деятельности программных разработчиков, а для некоторых из них эти операции стали главным источником доходов. Однако преобразование данных -- самый трудоемкий и затратный по вычислительным мощностям этап процесса шифрования, так как на этом этапе обрабатывается наибольший объем данных и вовлечено большое число аппаратных ресурсов. Поэтому сегодня одним из условий поддержания конкурентоспособности программных продуктов на рынке является повышение скорости обработки данных, а так же обеспечение конфиденциальности, анонимности и подлинности информации.
Таким образом, видим, что автоматизация процесса шифрования информации является актуальной задачей, поскольку повышает безопасность пользователей и качество обслуживания клиентов различных организаций.
Предмет исследования: редактор для работы с документами, с возможностью шифрования данных и их передачи по незащищенным каналам, с целю дальнейшего совершенствования.
Проблема: отсутствие в свободном доступе интуитивно понятных криптосистем с минимально-нужным набором функций и с открытым кодом.
Цель исследования: Необходимо разработать и реализовать программный продукт, который бы предоставлял удобный интерфейс для надежного хранения и передачи конфиденциальной информации в виртуальном пространстве.
Задачи:
· Анализ предметной области
· Обзор существующих методов и инструментов шифрования;
· Определение функциональных и нефункциональных требований;
· Построение визуального представления криптосистемы;
· Создание криптосистемы основанной на схеме Эль-Гамаля;
· Проверка корректности работы криптосистемы.
2. ПРОЕКТНЫЙ РАЗДЕЛ
2.1 Алгоритм шифрования Эль-Гамаля
Рассмотрим способ шифрования Эль-Гамаля - рисунок 2.1, который использует вероятностный механизм преобразования исходного текста. Этот способ основан на процедурах возведения в дискретную степень и состоит в следующем. Аналогично методу открытого распределения ключей Диффи--Хеллмана, выбирается большое простое число P и любое число G, но меньше P, причем число P обязательно должно быть больше чем длина используемого алфавита. Далее выбирается секретный ключ - K(секретный), это число должно принадлежать множеству простых чисел и находиться в диапазоне от 1 до P-1. Затем по формуле (2.1) найдем открытый ключ - K(открытый):
(2.1)
После чего получатель посылает отправителю три числа(Коткрытый; G; P), а Ксекретный остается в секрете и хранится - его личный секретный ключ.
Рисунок 2.1 - Схема Эль-Гамаля
Отправитель выбирает число K, которое меньше P-1 и взаимнопростое с P-1, то есть НОД(K, P-1) должен быть равен 1. Далее переходит к операции шифрования - формула(2.2):
(2.2)
где a и k - переменные, которые генерируются при каждой операции шифрования, b-зашифрованные данные, Tот - исходные данные. Любое сообщение можно разбить на фрагменты необходимого размера и каждый из них зашифровать отдельно, что повысит криптосктойкость.
Дешифруя сообщения получатель, используя свой Kсекретный, должен произвести следующие вычисления - формула (2.3):
(2.3)
Для наглядного представления рассмотрим пример передачи сообщения между двумя абонентами - Аней и Борисом.
Пример:
Допустим, что Аня хочет отправить Борису слово «ШИФР», каждому символу сообщения соответствует порядковый номер в алфавите(Ш-23, И-8, Ф-19, Р-15), эти числа и будут являться Tоткрытый. Для этого Борис делает следующие шаги:
1. выбирает P=179 - простое;
2. выбирает G=47, 1<G<P;
3. выбирает Kсекретный=79 - простое Kсекретный<P;
4. вычисляет по формуле (2.1)Kоткрытый=4779(Mod 179)=56;
5. отправляет(P; G; Kоткрытый)=(179; 47; 56) Ане.
Затем Аня делает следующие шаги:
1. выбирает число K=29, 1< K< P-1 и взаимнопростое с P-1;
2. вычисляет по формуле (2.2) a=4729(Mod 179)=110;
3. шифрует каждый символ по формуле (2.2):
1) Ш-23, b=5629*23(Mod 179)=176;
2) И-8= b=5629*8(Mod 179)=69;
3) Ф-19= b=5629*19(Mod 179)=52;
4) Р-15= b=5629*15(Mod 179)=107;
4. Отправляет (a, b) Борису.
Теперь сообщение «ШИФР» представляет собой следующую последовательность: 176 69 52 107.
Для расшифровки полученного сообщения Борису остается сделать обратные действия - формула (2.3), но с использованием своего секретного ключа:
1. получить порядковые номера зашифрованных символов:
1) 176*110179-79-1(Mod 179)=23;
2) 69*110179-79-1(Mod 179) =8;
3) 52*110179-79-1(Mod 179)=19;
4) 107*110179-79-1(Mod 179)=15;
2. выбрать из алфавита символы по соответствующим порядковым номерам:
1) 23-Ш;
2) 8-И;
3) 19-Ф;
4) 15-Р;
Расшифрованный текст соответствует исходному, следовательно, алгоритм работает корректно.
2.2 Обоснование выбора средств разработки
2.2.1 обоснование выбора языка программирования
В качестве языка программирования был выбран язык C#. Главной причиной к этому стало то, что разработка ПО - это сфера, в которой C# последнее время является одним из популярных языков программирования. Результат работы программы, написанной на C#, работает быстрее и требует меньше ресурсов, чем результат работы программ, написанных на языках того же уровня. Кроме того, благодаря возможностям «.NETFramework» в плане написания кода реализация схемы Эль-Гамаля легче, чем на родственных языках.
программирование шифр гамаль криптосистема
2.2.2 Обоснование выбора среды разработки
Средой программирования был выбран «.NETFramework», как среда, для программистов на C#, она очень удобна и функциональна и, по общественному мнению, не имеет конкурентов среди бесплатных и недорогих решений.«.NET Framework» -- платформа, разработанная корпорацией Microsoft. Основой платформы является общая языковая среда выполнения Common Language Runtime. По данным свободной энциклопедии «Википедия» - в отличие от переносимых виртуальных машин Java, абстрагирующихся от нижележащих операционных систем, CLR позиционируется как не «виртуализированная» платформа, тесно связанная с операционной системой Microsoft Windows.
2.2.3 Назначение UML
Язык UML(Unified Modeling Language) -- унифицированный язык моделирования) создан для решения таких задач как:
Предоставить в распоряжение пользователей специально предназначенный для разработки язык визуального моделирования сложных систем, который легко воспринять.
Речь идет о том, что главными парадигмами являются интуитивная ясность и понятность основных конструкций языка. Язык UML содержит в себе не только абстрактные конструкции для визуализирования моделей систем, но и ряд понятий, имеющих вполне определенное значение. Это позволяет UML достичь не только универсальности представления моделей, но и возможности описания тонких деталей реализации этих моделей.
Снабдить исходные понятия языка UML возможностью расширения и специализации для более точного представления моделей систем в конкретной предметной области.
Язык UML является формальным, его формальность отличается от синтаксиса традиционных формальных логических языков и от синтаксиса известных языков программирования. В самом описании языка UML содержится механизм расширения базовых понятий, который представляет собой самостоятельный элемент языка и имеет собственное описание, которое является правилами расширения. Поэтому разработчики предполагают, что язык UML может быть приспособлен для конкретных предметных областей как никакой другой.
В рамках данного проекта для создания модели разрабатываемого программного продукта будут использоваться такие диаграммы UML как:
· Диаграмма вариантов использования (use case diagram);
· Диаграмма классов (class diagram);
· Диаграмма последовательности (sequence diagram).
2.3 Разработка криптосистемы
Глоссарий
Таблица 1.
Термин |
Значение |
|
Шифр |
Преобразованные исходные данные |
|
ElGamal |
Алгоритм шифрования Эль-Гамаль |
|
Открытый ключ |
Kот, G, P |
|
Алфавит |
Коллекция <list>, которая содержит прописные и маленькие буквы русского и английского алфавитов, цифры 0-9, все знаки содержащиеся на клавиатуре. |
|
SMTP-сервер |
Доставляющий сообщения от имени лица пользователей сервер |
|
587 |
Порт SMTP сервера |
|
K |
Число, которое генерируется при каждой операции шифрования, оно создается только в момент шифрования, после чего удаляется |
Далее, выделим действующих лиц и рассмотрим функциональные и нефункциональные требования.
Функциональные требования:
· Открывать файлы с данными для де/шифрования;
· Записывать данные в файл;
· Генерировать ключи;
· Шифровать данные;
· Дешифровать данные;
· Отправлять результат работы программы на электронный ящик.
Нефункциональные требования:
· Удобство использования;
· Пользовательский интерфейс должен быть Windows - совместимым;
· Пользовательский интерфейс системы должен быть понятным;
· Программный продукт должен обеспечивать стабильную работу;
· Необходимо, чтоб криптосистема корректно реализовывала схему ElGamal.
Действующие лица:
Пользователь - получает сгенерированные необходимые для операций шифрования и дешифрования ключи, вводит ключи необходимые для дешифрования или шифрования. Вводит исходную информацию для преобразования, зашифрованные данные для дешифрования, отправляет полученные ключи абоненту. Отправляет данные, полученные в результате работы программы, на электронную почту своему абоненту, сохраняет информацию, полученную в результате выполнения алгоритмов де/шифрования, открывает файлы, содержащие шифр или исходные данные для дальнейшего преобразования в исходные данные или шифр. Так как данный программный продукт не предусматривает хранение личной конфиденциальной информации, отпадает необходимость авторизации.
Исходя из требований действующего лица, выделяются следующие варианты использования:
1. Открыть файл с данными;
2. Записать данные в файл;
3. Генерировать ключи;
4. Шифровать данные;
5. Дешифровать данные;
6. Отправить результат работы на почту.
Диаграмма вариантов использования - Рисунок 2.2. На данном рисунке представлены все действия, совершаемые пользователем. Варианты использования позволяют описать только функциональные требования к системе.
Рисунок 2.2 - Диаграмма вариантов использования.
Далее, детально рассмотрим варианты использования.
Вариант использования «Открыть файл с данными».
Краткое описание: Этот вариант использования описывает загрузку данных из txt файлов в текстовое поле на основной форме для дальнейших преобразований загруженной информации.
Основной поток событий: Данный вариант использования начинает выполняться, когда пользователь выберет в меню раздел «Файл=> Открыть».
1. Система предлагает выбрать нужный файл;
2. Пользователь подтверждает выбор;
3. Система загружает данные из файла
4. Система отображает данные в текстовом поле.
Вариант использования «Записать данные в файл».
Краткое описание: Текущий вариант использования описывает загрузку де/шифрованных данных из текстового поля на основной форме в txt файл для хранения.
Основной поток событий: Начинает выполняться, когда пользователь выберет в меню раздел «Файл=> Сохранить».
1. Система предлагает создать новый файл или выбрать существующий;
2. Пользователь подтверждает свой выбор;
3. Система загружает информацию из текстового поля в файл.
Вариант использования «Генерировать ключи».
Краткое описание: Этот вариант использования описывает генерацию случайных ключей необходимых для де/шифрования, предоставляет их пользователю.
Основной поток событий: Вариант использования начинает выполняться, когда пользователь нажмет на кнопку «Генерировать ключи».
1. Пользователь нажимает на кнопку;
2. Система генерирует случайные величины, производит над ними сложные вычисления;
3. Система предоставляет пользователю результат своей работы в предназначенных текстовых полях.
Вариант использования «Шифровать данные».
Краткое описание: Данный вариант использования описывает процесс шифрования и предоставление пользователю зашифрованных данных.
Основной поток событий: Вариант использования начинает выполняться, когда пользователь нажмет на кнопку «Выполнить».
1. Пользователь вводит открытые ключи;
2. Пользователь вводит текст или загружает файл, которые необходимо зашифровать;
3. Пользователь выбирает вид совершаемой операции - «Шифровать»;
4. Пользователь нажимает кнопку «Выполнить»;
5. Система, используя открытые ключи, преобразовывает данные;
6. Система предоставляет данные пользователю;
7. Система выдает сообщение о завершении операции;
Альтернативные потоки:
1. Неверные открытые ключи: Если во время выполнения основного потока станет известно, что пользователь ввел неверные P, G, Kоткрытый, система выводит сообщение об ошибке. Пользователь может вернуться к началу операции или отказаться от выполнения программы, при этом выполнение варианта использования прекращается.
2. Пользователь оставил обязательные поля пустыми. Система выдаёт сообщение об ошибке.
3. Ввод текста в поле для шифрования, содержащего символы, которые отсутствуют в алфавите.
Вариант использования «Дешифровать данные».
Краткое описание: Этот вариант использования описывает процесс дешифрования и предоставление пользователю расшифрованных данных.
Основной поток событий: Данный вариант использования начинает выполняться, когда пользователь нажмет на кнопку «Выполнить».
1. Пользователь вводит секретный ключ
2. Пользователь вводит шифр или загружает его из файла;
3. Пользователь выбирает вид совершаемой операции - «Дешифровать»;
4. Пользователь нажимает кнопку «Выполнить»;
5. Система, используя секретный ключ, преобразует шифр в исходный текст;
6. Система выдает сообщение о завершении операции.
Альтернативные потоки:
1. Неверный секретный ключ: Если во время выполнения станет известно, что пользователь ввел неправильные P, Kсекретный, система выводит сообщение об ошибке. Пользователь может вернуться к началу работы программы или отказаться от выполнения операции, при этом выполнение варианта использования прекращается.
2. Пользователь не заполнил обязательные поля. Система выдаёт сообщение об ошибке.
3. Пользователь ввел в поле для шифра постороннюю информацию. Система выдает сообщение об ошибке.
Вариант использования «Отправить результат работы на почту»
Краткое описание: Этот вариант использования описывает передачу сообщения на электронный почтовый ящик.
Основной поток событий: Данный вариант использования начинает выполняться, когда пользователь нажмет на кнопку «Отправить на почту».
1. Система загружает результат работы де/шифрования в текстовое поле сообщения.
2. Пользователь вводит логин/пароль для авторизации на сервере.
3. Пользователь вводит адрес абонента.
4. Пользователь нажимает кнопку «Отправить».
5. Система выбирает сервер.
6. Система посылает письмо на сервер.
Альтернативные потоки:
1. Разрыв связи с сервером или неполадки на сервере. Система возвращает сообщение об истечении времени запроса или об отсутствии связи.
2. Неверные логин/пароль или некорректный адрес абонента. Система выводит сообщение об ошибке.
Далее рассмотрим диаграммы UML.
Диаграмма классов - Рисунок 2.3. На данном рисунке представлены классы, содержащие в себе выполняемые ими операции и атрибуты. Голубым цветом выделены граничные классы - «boundary class». Граничными классами называются такие классы, которые расположены на границе системы и всей окружающей среды. Это экранные формы, отчеты, интерфейсы с аппаратурой (такой как принтеры или сканеры) и интерфейсы с другими системами. Белым же цветом выделены классы - сущности - «entity class». Классы-сущности содержат хранимую информацию. Они имеют наибольшее значение для пользователя, и потому в их названиях часто используют термины из предметной области.
Рисунок 2.3 - Диаграмма классов.
Диаграммы последовательностей: Рисунок 2.4,Рисунок 2.5, Рисунок 2.6, Рисунок 2.7. На вышеперечисленных рисунках демонстрируются только те объекты, которые непосредственно участвуют во взаимодействии. Ключевым моментом для диаграмм последовательности является динамика взаимодействия объектов во времени. Таким образом, все объекты на диаграмме последовательности образуют некоторый порядок, определяемый очередностью или степенью активности объектов при взаимодействии друг с другом. Графически каждый объект изображается прямоугольником и располагается в верхней части своей линии жизни. Внутри прямоугольника записываются имя объекта и имя класса, разделенные двоеточием. При этом вся запись подчеркивается, что является признаком объекта. Вторым измерением диаграммы последовательности является вертикальная временная ось, направленная сверху вниз. Начальному моменту времени соответствует самая верхняя часть диаграммы. Взаимодействия объектов реализуются посредством сообщений, которые посылаются одними объектами другим. Сообщения изображаются в виде горизонтальных стрелок с именем сообщения, а их порядок определяется временем возникновения. То есть, сообщения, расположенные на диаграмме последовательности выше, инициируются раньше тех, которые расположены ниже.
Рисунок 2.4 - Генерация ключей.
На данном рисунке представлена диаграмма, которая подробно описывает вариант использования «Генерации ключей». Пользователь на форме нажимает кнопку «Генерировать ключи», граничный класс обращается к классу-сущности, что служит стартом для начала вычислений, по окончанию которых класс-сущность возвращает полученные значения граничному классу.
Рисунок 2.5 - Шифрование данных.
Данная диаграмма позволяет проследить порядок выполнения шифрования, а также обработку альтернативных потоков.
Рисунок 2.6 - Расшифровывание данных.
Рисунок 2.7 - Отправление письма на почту.
2.3.1 Создание программного продукта
Для удобства разделим программу на отдельные модули, написание которых будем производить в строгой последовательности, так как последующий модуль не может функционировать без предыдущего:
1. Создание интерфейса;
2. Реализация генерации ключей;
3. Реализация шифрования;
4. Реализация дешифрования;
5. Реализация почтового клиента.
Создание интерфейса - рисунок 2.8.
Рисунок 2.8 - Основная форма.
Данная форма содержит меню «Файл», позволяющее загружать данные из файла в textBox под номером 1 и записывать данные в файл из textbox под номером 2. Поля для предоставления пользователю сгенерированных ключей. Кнопку «Отправить на почту», которая по клику открывает форму отправления письма на электронный почтовый ящик и загружает данные из textBox под номером 2 в textbox под номером 3-рисунок 2.9.
Рисунок 2.9 - Отправление на почту.
Логин и пароль отправителя для аутентификации пользователя на сервере.
Далее, будем создавать обработчики событий для кнопок.
Обработчик события «Click» для кнопки «Сгенерировать» - рисунок 2.10.
Рисунок 2.10-Обработчик события для кнопки «Сгенерировать».
Известно, что компьютер может работать с числами, количество бит которых ограниченно. Как правило, это 32-х и 64-х разрядные целые числа, которым на платформе .NET соответствуют типы Int32 (int) и Int64 (long) соответственно. А что делать, если необходимо представить число, такое как, например, 29! = 8841761993739701954543616000000? Это число не поместится ни в 64-х разрядный, ни в 32-х разрядный тип данных. Именно для работы с такими числами была создана длинная арифметика.
Длинная арифметика -- в вычислительной технике операции (сложение, умножение, вычитание, деление, возведение в степень и т.д.) над числами, разрядность которых превышает длину машинного слова данной вычислительной машины. Эти операции реализуются не аппаратно, а программно, используя базовые аппаратные средства работы с числами меньших порядков.
Этот функционал доступен через сборку System.Numerics и тип BigInteger определенный в одноимённом с названием сборки пространстве имён. BigInteger. Данный тип является сложным целочисленным типом, поддерживающий произвольное число больших целых чисел, то есть не имеет нижней или верхней границы и может содержать любое целочисленное значение.
Для проверки числа P на простоту обратимся к методу Prime - рисунок 2.11.
Рисунок 2.11 - Метод Prime.
Данный метод принимает сгенерированное случайное число методом Next класса Random, если оно является простым, возвращает значение true. Разделим x на каждое число от 2 до x-1, чтобы сэкономить время, проверим только делители, которые лежат до округленного значения квадратного корня n.
Чтобы вычислить Коткрытый воспользуемся встроенным методом ModPow, который выполняет модульное деление числа, возведенного в степень другого числа:
BigInteger kot = (BigInteger.ModPow(g, (int)kce, p));
где, kce-Ксекретный, kot-Коткрытый.
Перейдем к следующему шагу - шифрование.
Шифрование невозможно без заданного алфавита символов, поэтому в первую очередь создадим коллекцию List с алфавитом - рисунок 2.12.
Рисунок 2.12 - Коллекция с алфавитом.
Используя десятичные коды символов из кодировки ASCII(1251), заполним коллекцию Alphabet. Из таблиц кодировок, находящихся в свободном доступе в сети интернет знаем, что в кодировке ASCII порядковым номерам в диапазоне 32-126 соответствуют английские прописные и маленькие буквы, цифры и различные знаки, а в диапазоне 1040-1104 находятся прописные и маленькие буквы русского алфавита. Используя данный метод заполнения алфавита, его можно без сложности расширить, зная в каком диапазоне находятся нужные символы.
Приступим к шифрованию - рисунок 2.13.
Рисунок 2.13- Шифрование.
Считаем введенные пользователем (Коткрытый; G; P). Для шифрования необходима временная переменная К, это число должно быть взаимнопростое с P-1, то есть их наибольший общий делитель должен быть равен 1, проверку данного условия проведем с помощью алгоритма Евклида, реализованного в методе NOD - рисунок 2.14.
Рисунок 2.14 - Алгоритм Евклида.
Если a > b, то a = a % b, если меньше, то b = b % a, таким образом, мы сначала находим остаток деления, а потом повторяем действия.
Класс Random генерирует случайное К до тех пор, пока НОД(P-1, K) не равен 1. Переменная «A» высчитывается уже известным методом ModPow и приписывается в конце зашифрованного текста. Далее, считывается текст, который пользователь ввел для шифрования. Каждый символ введенного текста сравнивается с символами в алфавите, если они совпадают, то индекс данного символа в алфавите служит Tоткрытым , в коде программы «j». После чего каждый символ подлежит шифрованию и выводу на экран:
b = (BigInteger.Pow(kot, (int)k) * j) % p;
textBox5.Text += Convert.ToString(b + " ");
где, b - зашифрованный символ.
Далее приступим к реализации алгоритма дешифрования - рисунок 2.15.
Рисунок 2.15- Дешифрование.
Считываем введенный пользователем шифр, секретный ключ. Записываем числа из считанного шифра в массив без пробелов и считываем переменную А, которую приписали к шифру после окончания шифрования. Далее, каждый элемент массива представляет зашифрованную букву, зная личный Ксекретный, можем каждый элемент данного массива преобразовать, после чего получим массив с индексами символов:
words[i] = Convert.ToString(((BigInteger.Pow(a, (int)p - (int)kce - 1))*Convert.ToInt32(words[i]))%p);
где, words[i] - каждый элемент массива. То есть были произведены вычисления по формуле 2.3:
(2.3)
Теперь по имеющимся индексам считаем символы из алфавита, получим исходный текст и выведем его на экран.
Отправка сообщения на электронный почтовый ящик.
Последний модуль который осталось реализовать это односторонний почтовый клиент- рисунок 2.16, то есть с помощью этого метода возможна только отправка электронный писем.
Рисунок 2.16 - Отправка электронных писем.
При открытии этой формы необходимо результаты де/шифрования загрузить в текстовое поле для отправки:
textBox1.Text = f1.textBox5.Text;
то есть данные из textbox под номером 2 будут загружены в textbox под номером 3.
Процедура передачи письма будет осуществляться с помощью встроенных функций «.NET Framework». Пользователь введет логин и пароль от своего почтового ящика, система определит с помощью его логина smtp-сервер, который доставит письмо абоненту, используя незащищенный порт - 587. Осуществим авторизацию пользователя:
client.Credentials=new System.Net.NetworkCredential(username.Text, password.Text);
где, username - логин, password-пароль.
Далее, передадим на smtp-сервер следующие данные:
client.Send(username.Text,to.Text,subject.Text,textBox1.Text);
где, to-адрес абонента, subject - тема письма, textBox1 - текст письма. И создадим окно, которое в случае передачи сообщения информирует пользователя об успешном выполнении программы.
Размещено на Allbest.ru
...Подобные документы
Анализ криптографических методов шифрования данных. Разработка криптосистемы, основанной на схеме Эль-Гамаля. Определение функциональных и нефункциональных требований. Выбор языка программирования и среды разработки. Тестирование программного продукта.
дипломная работа [1,6 M], добавлен 17.07.2016Исследование симметричных алгоритмов блочного шифрования. Минусы и плюсы алгоритма IDEA. Разработка программы аутентификации пользователя и сообщений на основе алгоритма IDEA. Выбор языка программирования. Тестирование и реализация программного средства.
курсовая работа [314,2 K], добавлен 27.01.2015Разработка криптографического алгоритма программы ручного шифра по таблице Виженера. Разработка программы, выполняющей шифрование и расшифрование. Особенности использования в качестве ключа самого открытого текста. Алгоритмы решения "обратных" задач.
курсовая работа [45,0 K], добавлен 13.11.2009Рассмотрение основных понятий криптографии: конфиденциальности, целостности, аутентификации и цифровой подписи. Описание криптографических средств защиты (криптосистемы, принципы работы криптосистемы, распространение ключей, алгоритмы шифрования).
дипломная работа [802,2 K], добавлен 08.06.2013Принцип программной реализации классических криптографических методов. Метод шифрования с использованием таблицы Виженера. Создание текстового редактора "Блокнот", содержащего методы шифрования. Вербальный алгоритм и программа для методов шифрования.
курсовая работа [2,0 M], добавлен 20.01.2010Разложение на простые сомножители. Понятия теории сравнений. Вычисление мультипликативного обратного. Существование конечного поля. Шифрование потока данных. Принцип работы RSA-криптосистемы. Криптографический анализ асимметричных систем шифрования.
дипломная работа [390,4 K], добавлен 14.08.2015Традиционные симметричные криптосистемы. Основные понятия и определения. Методы шифрования. Метод перестановок на основе маршрутов Гамильтона. Асимметричная криптосистема RSA. Расширенный алгоритм Евклида. Алгоритмы электронной цифровой подписи Гамаля.
курсовая работа [235,6 K], добавлен 06.01.2017Выбор шифров перестановки для проведения анализа. Анализ алгоритма двух различных шифров, построение блок-схемы алгоритма и программы, разработка общего интерфейса. Сравнение шифров перестановки по результатам шифрования и криптоанализа текстов.
курсовая работа [2,8 M], добавлен 14.01.2014Создание криптографического программного обеспечения, выполняющего шифрование по алгоритму RC6; электронную подпись на основе шифра Эль-Гамаля; задачу о нахождении гамильтонова цикла в графе. Алгоритм реализации гамильтонова цикла. Исходный код программы.
курсовая работа [365,9 K], добавлен 24.07.2015Сущность и история разработки алгоритма криптозащиты Эль-Гамаля. Основы этого типа шифрования, особенности генерации ключей. Специфика реализации системы криптозащиты средствами процессора ADSP-2181 в расширенных полях Галуа. Блок-схемы программирования.
контрольная работа [1,0 M], добавлен 13.01.2013Реализация криптографического алгоритма шифрования и дешифрования с использованием шифра Виженера. Понятие и суть полиалфавитного шифра. Метод полиалфавитного шифрования буквенного текста с использованием ключевого слова. Взлом полиалфавитных шифров.
курсовая работа [863,0 K], добавлен 21.04.2012Алгоритмы и стандарты криптографических преобразований. Криптографические преобразования на основе специального программного обеспечения. Метод криптографических преобразований на основе жесткой логики. Аналоги модуля шифрования и дешифрования данных.
курсовая работа [971,6 K], добавлен 30.01.2018Перевод исходного текста и первого подключа в двоичную последовательность. Логическое сложение с исключением. Открытый и закрытый ключи в алгоритме шифрования RSA. Шифрование и расшифрование. Электронная цифровая подпись. Применение функции хеширования.
контрольная работа [21,9 K], добавлен 28.03.2012Определения криптографии как практической дисциплины, изучающей и разрабатывающей способы шифрования сообщений. История развития шифров. Хэш-функции и понятие электронной подписи. Системы идентификации, аутентификации и сертификации открытых ключей.
реферат [77,1 K], добавлен 10.12.2011Понятие шифров сложной замены. Шифры сложной замены называют многоалфавитными. Данная подстановка последовательно и циклически меняет используемые алфавиты. Понятие схемы шифрования Вижинера. Стойкость шифрования методом гаммирования и свойство гаммы.
реферат [52,2 K], добавлен 22.06.2010Разработка приложения для шифрования данных с помощью алгоритма DES5: процесс шифрования, расшифрования, получение ключей. Спецификация программы, процедуры и функции; описание интерфейса пользователя. Реализация задачи в среде программирования DELPHI.
курсовая работа [812,6 K], добавлен 27.03.2012Электронная цифровая подпись. Асимметричные алгоритмы шифрования. Сценарий распределения открытых ключей, обмен сертификатами. Выбор программных средств. Математическая модель. Скорости Эль-Гамаля для различных длин модулей. Программная реализация.
дипломная работа [461,7 K], добавлен 22.09.2011Анализ предметной области. Сравнительный анализ систем визуализации трёхмерных объектов. Обоснование выбора среды программирования. Разработка базы данных. Архитектура программного продукта. Алгоритм шифрования Blowfish с обратной связью по шифр-тексту.
дипломная работа [5,3 M], добавлен 22.11.2015Разработка программы, реализующей процедуры шифрования и расшифрования текста по стандарту DES (Data Encryption Standard). Структура алгоритма шифрования, схема выработки ключевых элементов. Использование криптографического программного средства.
курсовая работа [1,7 M], добавлен 15.06.2013Статистический анализ текстов, созданных программой симметричного шифрования. Реализация симметричного криптоалгоритма. Основные шаги в использовании криптосистемы PGP. Генерация ключей, шифрование и расшифровка сообщений. Защита от сетевых атак.
лабораторная работа [1,7 M], добавлен 06.07.2009