Файл: Разработка программного обеспечения алгоритма Диффи Хелмана на основе эллиптических кривых.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 22.11.2023
Просмотров: 1101
Скачиваний: 4
СОДЕРЖАНИЕ
Часть 1: эллиптические кривые над вещественными числами и групповой закон
Групповой закон для эллиптических кривых
Часть 2: эллиптические кривые над конечными полями и задача дискретного логарифмирования
Порядок группы эллиптической кривой
Скалярное умножение и циклические подгруппы
Криптография на эллиптических кривых
Часть 4: алгоритмы для взлома защиты ECC и сравнение с RSA
Взлом задачи дискретного логарифмирования
ключпользователяb и закрытый ключпользователя b.Рисунок3.8–вызовфункциидля передачи ключейЗдесьмывызываемфункциюDiffi_Hellman()ипередаемтудазначенияключей.Таккакпользователямизвестнылишь3ключа(свойоткрытый,открытыйсобеседникаисвойзакрытый) мыпередаем3 значения.Далеевычисляемчастичныеключидляпользователяaипользователяb.Рисунок3.9–вычислениечастичныхключейДляпользователяaвызываемфункциювычислениячастичногоключа,тожесамоеделаем и дляпользователя b.Ивыводимихна экран.Следующим шагом вычисляем полные ключи, для вычисления которыхнамтребуются частичные.Рисунок3.10 –вычислениеполныхключейДля пользователя a вызываем функцию вычисления полного ключа, тожесамое делаем и для пользователя b. При вызове этих функций мы передаем внихзначениечастичных ключейпользователей.Ивыводимих наэкран.Последнимшагомбудетзашифровываниесообщения,егорасшифровкаи выводобоихсообщенийна экран.Рисунок3.11–шифрованиеидешифрованиесообщенияЗдесьпользовательbвызываетфункциюзашифровкисообщенияипередаеттудасообщение,введенноепользователем.Пользовательaвызывает функцию дешифровки сообщения и передает в нее зашифрованное
сообщениепользователяb.Послевсехвычислениймывыводимзашифрованноеирасшифрованное сообщение.
- 1 2 3 4 5 6 7 8 9 ... 14
Результаты
Вкачествевходныхданныхвозьмемзначенияключейизпримерачисловойреализации.Внейоткрытыйключпользователяa197,егозакрытый ключ 199. У пользователя b открытый ключ 151, закрытый 157. Вкачестве сообщения возьмем «Hello, how u doing». Ниже на рисунке 3.12продемонстрированрезультатработыпрограммыстакимивходнымиданными.Рисунок3.12–результатработыпрограммыКаквиднонарисункерезультатыполучилисьтакиеже,какивчисловой реализации. Открытый ключ пользователя a равен 147, а у b 66.Закрытыйжеключ у ниходинаков и равен75 ив самомнизу показанозашифрованноесообщениеи расшифрованное.Для исследования проверим как будет работать алгоритм если задатьдостаточно большое число в качестве ключей или такое число, при которомостатокотделениябудет равен нулю.Для начала проверим работу алгоритма при задании такого ключа прикоторомостатокотделениябудет равеннулю.Рисунок3.13 –получениенулевых ключейКак видно на рисунке 3.13 если остаток от деления равен нулю, точастичные и полные ключи будут равны нулю, при этом сообщение не будетзашифровано.Т.е.пользователямнельзязадаватьзначения,прикоторыхостатокотделениябудет равен нулю.Далеепроверимработуалгоритмаприбольшихзначенияхключей.Рисунок 3.14 – работа алгоритма при больших значениях ключейДаженесмотря на большие размеры ключей алгоритм работает
исправно без ошибок. Однако существует проблема вычислений таких больших значений при высчитывании ключей человеком, а не компьютером. Связано это с возведением в степень числа при котором получается слишком большое значение, из-за которого любой калькулятор будет давать ответ ∞ (бесконечность).
Тем, кто знаком с криптографией с открытым ключом, наверно известны аббревиатуры ECC, ECDH и ECDSA. Первая — это сокращение от Elliptic Curve Cryptography (криптография на эллиптических кривых), остальные — это названия основанных на ней алгоритмов.
Сегодня криптосистемы на эллиптических кривых используются в TLS, PGP и SSH, важнейших технологиях, на которых базируются современный веб и мир ИТ. Я уже не говорю о Bitcoin и других криптовалютах.
До того, как ECC стала популярной, почти все алгоритмы с открытым ключом основывались на RSA, DSA и DH, альтернативных криптосистемах на основе модулярной арифметики. RSA и компания по-прежнему популярны, и часто используются вместе с ECC. Однако несмотря на то, что магия, лежащая в фундаменте RSA и подобных ей алгоритмов легко объяснима и понятна многим, а грубые реализации пишутся довольно просто, основы ECC всё ещё являются для большинства людей загадкой.
В этой серии статей я познакомлю вас с основами мира криптографии на эллиптических кривых. Моя цель — не создание полного и подробного руководства по ECC (в Интернете полно информации по этой теме), а простой обзор ECC и объяснение того, почему её считают безопасной. Я не буду тратить время на долгие математические доказательства или скучные подробности реализации. Также я представлю полезные примеры с визуальными интерактивными инструментами и скриптами