Системы с открытым ключом: алгоритм шифрования RSA - Программирование, компьютеры и кибернетика курсовая работа

Системы с открытым ключом: алгоритм шифрования RSA - Программирование, компьютеры и кибернетика курсовая работа




































Главная

Программирование, компьютеры и кибернетика
Системы с открытым ключом: алгоритм шифрования RSA

Понятие и история изобретения криптосистемы с открытым ключом. Свойства односторонней функции и сложность раскрытия шифра. Описание алгоритма RSA: шифрование и дешифрование. Возможные атаки, способы взлома, обоснование и практическая реализация RSA.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Нижегородский государственный университет им. Н. И. Лобачевского
Факультет вычислительной математики и кибернетики
Кафедра информатизации и автоматизации научных исследований
Системы с открытым ключом: алгоритм шифрования RSA
Понятие криптосистемы с открытым ключом
Основной целью построения криптографических систем всегда была защита информации при ее передаче и хранении. Эта проблема остается актуальной и до сегодняшнего дня, однако же развитие вычислительных систем придало ей новое качество: вопрос уже не просто в том, чтобы, скажем, Александр мог послать письмо Борису, не опасаясь, что оно будет прочитано Сергеем. Сетевые компьютерные системы могут включать в себя сотни и даже тысячи пользователей; в такой ситуации классическая симметричная схема оказывается неэффективной. Новым требованием к криптосистемам также является обеспечение аутентификации сообщения - доказательство того, что Борис получил именно то сообщение, которое ему отправил Александр, и что оно не было подделано или изменено злоумышленником в процессе передачи. Кроме того, приходится мириться с тем, что к зашифрованной информации потенциально может иметь доступ довольно большое количество людей - например, маршрут любого сообщения, проходящего через Internet, в принципе невозможно предсказать, оно может пройти через несколько десятков узлов прежде чем попадет к своему адресату. Так что, если прежде наиболее надежным подходом к защите информации был все-таки амбарный замок, то теперь задача все более усложняется противоречивыми требованиями одновременно надежности и секретности передачи и легкости доступа к информации.
Традиционная криптографическая схема выглядит следующим образом. Александр и Борис оба знают некий ключ, с помощью которого они могут обмениваться зашифрованными сообщениями так, что любое третье лицо, даже если ему удастся перехватить шифровку, не сможет ничего в ней понять. Такая схема называется симметричной, так как и адресат, и отправитель используют один и тот же ключ для шифрования и дешифрования. Давайте попробуем применить ее к какой-нибудь простой распределенной задаче. Пусть у нас есть некое сетевое устройство - например, ядерная ракетная установка, - принимающая команды по сети. Конечно, не от всех, а только от имеющих соответствующие права доступа. Пусть у нашего устройства есть некий ключ, которым должны быть зашифрованы все команды, подаваемые на него. Этот ключ, так как систему мы предполагаем симметричной, необходимо сообщить всем пользователям. Теперь предположим, что Александр зашифровал сообщение “Стреляй в Бориса” и отправил его нашему устройству. Другой пользователь, Сергей, подкупленный Борисом, перехватил это сообщение и, зная ключ, с легкостью расшифровал его, сообщив о содержании Борису. Казалось бы, проблема легко решается введением разных паролей для разных пользователей. Ну а если доступ к данному устройству должен быть более или менее свободным?
Теперь давайте представим себе сеть из, например, ста пользователей и сервера баз данных. Между пользователями и сервером происходит некий обмен информацией, причем всем пользователям совершенно необязательно и, более того, нежелательно знать информацию, хранимую и запрашиваемую на сервере другими пользователями. Разумеется, необходимо защитить сам сервер - так, чтобы каждый пользователь имел доступ только к своей информации. Но ведь все это происходит в одной сети, и все данные передаются по одним и тем же проводам, а если это, скажем, что-нибудь типа Token Ring, то информация от сервера до владельца последовательно проходит через все станции, находящиеся между ними в кольце. Следовательно, ее необходимо шифровать. Можно опять ввести для каждого пользователя свой пароль, которым и шифровать весь информационный обмен с сервером. Но как отличить одного пользователя от другого? Один вариант - перед началом работы спрашивать у пользователя этот самый пароль и сверять с хранящимся на сервере. Но тогда он с легкостью может быть перехвачен в том же самом канале связи. Другой вариант - пароль не спрашивать, а верить тому, что пользователь говорит о себе. Так как пароль секретный, то даже сказав серверу “Я - Александр!”, злоумышленник не сможет расшифровать получаемые данные. Но зато он сможет получить столько материала для взлома шифра, сколько ему захочется - при этом часто можно предсказать ответ сервера на какой-то специфический вопрос и получить сразу шифр и соответствующий оригинальный текст. Согласитесь, это очень продвигает нас в взломе сервера.
Данная проблема носит название проблемы распределения ключей. Ее наличие делает симметричную схему неприспособленной для задач обмена данными с большим количеством пользователей, так как в ней для шифрования и дешифрования используется один и тот же ключ.
Понятие криптосистемы с открытым ключом
Концепция криптосистем с открытым ключом была предложена в 1976 г Уайтфилдом Диффи и Мартином Хеллманом в качестве решения проблемы распределения ключей. В соответствии с ней, каждая сторона получает пару ключей - открытый и закрытый. Открытый ключ распространяется свободно, в то время как закрытый держится в тайне. Исходный текст шифруется открытым ключом адресата и передается ему. Обратный процесс в принципе не может быть выполнен с помощью открытого ключа, для расшифровки получатель использует закрытый ключ, который известен только ему. Таким образом, кто угодно может посылать шифрованные сообщения, для этого ему не надо знать ничего тайного, но при этом только владелец закрытого ключа сможет их прочитать.
Системы с открытым ключом базируются на использовании так называемых односторонних функций - функций, вычислить значения которых во много раз проще, чем значения их обратной функции. Особенно важен подкласс односторонних функций-ловушек - так называются односторонние функции, вычисление которых в обратную сторону возможно при наличии некоторой дополнительной информации, и очень трудно иначе. Открытый ключ является параметром при вычислении односторонней функции; закрытый же представляет информацию, необходимую для вычисления обратной. Хорошая односторонняя функция должна обладать следующими очевидными свойствами:
Обратную функцию очень сложно вычислить, не зная закрытого ключа;
Закрытый ключ невозможно найти из открытого;
Сложность вычисления должна катастрофически возрастать с возрастанием длины ключа.
Существует большое количество функций, которые считаются односторонними, однако отсутствие полиномиального решающего алгоритма ни для одной не доказана. Поэтому при использовании любой системы с открытым ключом всегда остается риск того что в будущем обнаружится быстрый алгоритм нахождения обратной функции без закрытого ключа. На самом деле, корнем любой такой функции является какая-нибудь математическая проблема, традиционно считающаяся трудной. Если удается доказать, что раскрытие шифра эквивалентно разрешение этой проблемы, то проблема надежности шифра зависит от справедливости гипотезы P--№ NP. Наиболее часто используются:
Разложение больших чисел на простые множители - RSA;
Вычисление дискретного логарифма (логарифма в конечном поле) - система Эль-Гамаля;
Вычисление квадратных корней в конечном поле - система Рабина;
Вычисление дискретного логарифма над эллиптическими кривыми;
Таким образом, с развитием криптографии все более размывается граница между ней и другими областями математики. Новейшие достижения в решении сложных математических проблем сразу же находят применения в криптографии и наоборот, наличие такого лакомого куска подвигает многих математиков на исследования в смежных областях.
Выберем достаточно большие простые числа p и q;
Выберем e0, v<0. Тогда ue=1+(-v); Следовательно ue = 1 mod
Наконец, последняя теорема доказывает корректность самого алгоритма.
При соответствующем условиям алгоритма выборе e и d,
Если m взаимно просто с n, то по теореме Эйлера что и требовалось. В противном случае либо m=tp, либо m=tq, так как у n нет других делителей; без ограничения общности будем предполагать m=tp. При этом t необходимо меньше q, так как m\n";
cout << " - for generating random keys\n";
cout << " rsa -e \n";
cout << " rsa -d \n";
cout << "Public and private key files have .PBK and PVK respectively, so these are \n";
cout << "added to the that you specify.\n";
if (strcmp(strlwr(_argv[1]),"-k")) ErrCommand("Command not recognized.\n");
if (f==NULL) ErrCommand("Invalid path.");
fwrite (&modulus, sizeof(modulus), 1, f);
fwrite (&pub_exp, sizeof(pub_exp), 1, f);
fwrite (&prime1, sizeof(prime1), 1, f);
fwrite (&prime2, sizeof(prime2), 1, f);
fwrite (&priv_exp, sizeof(priv_exp), 1, f);
cout << "Private and public keys successfully created.\n";
if (!strcmp(strlwr(_argv[1]),"-e")) { /* encrypting */
if (f==NULL) ErrCommand ("Can't open public key!");
if ((fi = fopen(_argv[2], "rb"))==NULL)
ErrCommand ("Can't open plaintext file!");
if ((fo = fopen(_argv[3], "wb"))==NULL)
ErrCommand ("Can't create ciphertext file!");
printf ("Successfully encrypted %s\n", _argv[2]);
else if (!strcmp(strlwr(_argv[1]),"-d")) { /* decrypting */
if (f==NULL) ErrCommand ("Can't open private key!");
if ((fi = fopen(_argv[2], "rb"))==NULL)
ErrCommand ("Can't open ciphertext file!");
if ((fo = fopen(_argv[3], "wb"))==NULL)
ErrCommand ("Can't create plaintext file!");
i=fread (&l, 1, sizeof (long), fi);
else /* unexpected end of file encountered */
printf ("Successfully decrypted %s\n", _argv[2]);
} else ErrCommand("Command not recognized.\n");
printf ("Time running: %lu seconds.\n", st);
/************************ ENCR.CPP ************************/
/************ This file contains the encryption **************/
/*************** and decryption procedures *******************/
/************************************************************/
unsigned long encrypt (unsigned long data)
unsigned long crt (unsigned long c, unsigned int m);
unsigned long decrypt (unsigned long cipher)
unsigned long crt (unsigned long c, unsigned int m)
/*************************************** MATH.CPP *************************************/
/**************************************/
/************* Prototypes *************/
/**************************************/
unsigned long inverse(unsigned int x, unsigned long iModulus);
void get_primes(unsigned int *p1, unsigned int *p2);
void get_exponents(unsigned int *pbe, unsigned long *pve);
/**************************************/
/********** Function bodies ***********/
/**************************************/
void inv (unsigned int x, unsigned long n, unsigned long *a, unsigned long *b)
unsigned long inverse (unsigned int x, unsigned long n)
if (iter%2==0) return n-b; else return b;
unsigned long rnd(unsigned long upto)
void get_primes(unsigned int *p1, unsigned int *p2)
for(j=3;(k=(j*(2*i+1)-1)/2)=(rt=r*t)) th=th-rt; else {r=0; r.set1(s1-s2-1); th=th-r*t;}
res = *l & (1ul<<(unsigned long)where);
int comp::operator ==(unsigned long l)
1. Баричев С., Криптография без секретов
2. Е.Бубнова, Системы с открытым ключом: алгоритм дешифрования RSA
3. RSA Laboratories, Frequently Asked Questions About Today's Cryptography, 1995
4. Д.Сяо, Д. Керр, С.Мэдник, Защита ЭВМ
5. Л.Дж.Хоффман, Современные методы защиты информации
6. James Nechvatal, Public key cryptography, 1991
7. Chris K.Caldwell, Finding Primes and proving primality
Формирование ключей для шифрования сообщения. Описание алгоритма RSA: шифрование и дешифрование. Понятие и история изобретения криптосистемы с открытым ключом. Свойства односторонней функции и сложность раскрытия шифра. Сущность цифровой подписи. лабораторная работа [326,0 K], добавлен 04.11.2013
Актуальность и предыстория проблемы построения систем связи с открытым ключом. Алгоритм кодирования, перевода из десятичного числа в двоичное, быстрого возведения числа в степень, поиска взаимно простых чисел. Дешифрование сообщения по криптоалгоритму. курсовая работа [140,3 K], добавлен 20.06.2017
Изучение основных методов и алгоритмов криптографии с открытым ключом и их практического использования. Анализ и практическое применение алгоритмов криптографии с открытым ключом: шифрование данных, конфиденциальность, генерация и управление ключами. дипломная работа [1,2 M], добавлен 20.06.2011
Симметричные и асиметричные методы шифрования. Шифрование с помощью датчика псевдослучайных чисел. Алгоритм шифрования DES. Российский стандарт цифровой подписи. Описание шифрования исходного сообщения асимметричным методом с открытым ключом RSA. курсовая работа [101,1 K], добавлен 09.03.2009
Краткие сведения о истории криптографии. Симметричные криптосистемы (системы с секретным ключом) и системы с открытым ключом. Аутентификация и идентификация, электронная цифровая подпись. Управление ключами, их архивирование, хранение и восстановление. доклад [458,9 K], добавлен 08.11.2013
Основные программы стеганографии. Программно-аппаратные средства криптографической защиты информации с закрытым ключом. Требования к используемым криптографическим средствам за рубежом и в России. Отечественные системы шифрования с открытым ключом. отчет по практике [64,6 K], добавлен 18.09.2013
Появление шифров, история эволюции криптографии. Способ приложения знаний особенностей естественного текста для нужд шифрования. Критерии определения естественности. Способ построения алгоритмов симметричного шифрования. Криптосистема с открытым ключом. реферат [452,2 K], добавлен 31.05.2013
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Системы с открытым ключом: алгоритм шифрования RSA курсовая работа. Программирование, компьютеры и кибернетика.
Дипломная работа: Правовое регулирование недропользования. Скачать бесплатно и без регистрации
Реферат: Квантовомеханическая система и её наглядная модель. Скачать бесплатно и без регистрации
Реферат: Креативные приемы выработки идей. Скачать бесплатно и без регистрации
Реферат Виды Типов Государств
Сочинение На Тему Осень Применяя Олицетворение Эпитет
Методы Контроля И Самоконтроля В Воспитании Реферат
Реферат: Ущелье Ала-Арча в Кыргызстане
Курсовая работа по теме Ревизия и аудит расчетов по кредитам
Реферат: Введення до курсу Системи сучасних технологій
Реферат по теме Базовые ценности современной молодежи
Реферат: Силовые конденсаторы. Скачать бесплатно и без регистрации
Эссе Деловые Услуги Сырьевые Биржи
Математика 4 Контрольные Работы Перспектива
Доклад по теме The Queen of the UK
Язык Великое Наследие Для Всех Поколений Сочинение
Краснуха У Детей Реферат
Наш Двор Нарочито Невелик Сочинение 15.3 Сострадание
Курсовая работа по теме Автоматизация теплотехнических расчетов для котлов ЦЭС
Дипломная работа: Мифические аспекты идентификации
Курсовая Работа На Тему Анализ Психолого-Педагогических И Методических Аспектов Формированию Творческой Личности Младшего Школьника
Репортаж як оригінальний спосіб подачі інформації в умовах жанрової кризи - Журналистика, издательское дело и СМИ курсовая работа
Представления о времени и пространстве - Биология и естествознание реферат
Информационная система диспетчерской службы такси - Программирование, компьютеры и кибернетика курсовая работа


Report Page