Атаки на эллиптические кривые
Скачать 191.67 Kb.
|
СПИСОК ЛИТЕРАТУРЫБаричев С.Г., Серов Р.Е. Основы современной криптографии: Учебное пособие. - М.: Горячая линия - Телеком, 2002. Болотов А.А., Гашков С.Б., Фролов А.Б. Элементарное введение в эллиптическую криптографию. Протоколы криптографии на эллиптических кривых. -М.: КомКнига, 2006. Рябко Б.Я., Фионов А.Н. Криптографические методы защиты информации. - М.: Горячая линия - Телеком, 2005. Смарт Н.Г. Криптография. -М.: Техносфера, 2005. Кнепп Э. Эллиптические кривые. -М.: Факториал Пресс, 2004. Жданов О.Н., Чалкин В.А. Эллиптические кривые. Основы теории и криптографические приложения. -М.: Кн. дом «ЛИБРОКОМ», 2012. Соловьев Ю.П. и др. Эллиптические кривые и современные алгоритмы теории чисел. -Москва-Ижевск: Ин-т компьютерных исследований, 2003. Коблиц Н. Курс теории чисел и криптографии — Москва: Научное изд-во ТВП, 2001. — 254 c. Панасенко С.П. Алгоритмы шифрования. Специальный справочник. – СПб.: БХВ-Петербург, 2009 – 576 с. Жельников В. Криптография от папируса до компьютера. – М.: ABF, 1996. – 336с. Кассами Т., Токура Н., Ивадари Е., Инагаки Я. Теория кодирования/ Пер. с япон. под ред. Б. С. Цыбакова и С. И. Гельфанда. – М.: Мир, 1978. – 576с. Оков И.Н. Криптографические системы защиты информации. – СПб.: ВУС, 2001. – 236с. Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф. Защита информации в компьютерных системах и сетях/ Под ред. В.Ф. Шаньгина. – М.: Радио и связь, 2001. – 376с. Ю.А.Гатчин, А. Г. Коробейников. Основы криптографических алгоритмов Учебное пособие. СПб: ГИТМО (ТУ), 2002. 29 с. Ленг С. Эллиптические функции - М.: Наука, 1984. — 312 с. Н. П. Варновский. Математическая криптография. Несколько этюдов. - М., 2003, с. 98–121. О. Н. Василенко. Теоретико-числовые алгоритмы в криптографии. МЦНМО, М., 2003 (1-е изд.) Б. Шнайер. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. Издательство ТРИУМФ, М., 2002. Х. К. А. ван Тилборг. Основы криптологии. Профессиональное руководство и интерактивный учебник. – М., Мир, 2006. Жиль Брассар. Современная криптология. Руководство. Пер. с англ. М.: "Полимед", 1999. - 176 с Koblitz N. A course in number theory and cryptography. Graduate texts in math. 114 New-York: Springer-Verlag, 1994. ElCamal. A public-key cryptosystem and a signature scheme based on discrete logarithms. IEEE Transaction on Informatoin Theory, 1985 Myasnikov A., Shpilrain V., Ushakov A. Group-based cryptography.Advanced courses in mathematics CRM Barselona. Basel-Boston-Berlin: Birkhauser, 2008. 183 с. ПРИЛОЖЕНИЕ Алгоритм шифрования и дешифрования Эль-Гамаля, Алгоритм шифрования и дешифрования Диффи-Хеллмана. Входные параметры – текст из файла Выходные параметры – расшифрованный текст Алгоритм Атаки на выбранные алгоритмы Imports System.Globalization Imports System.Numerics Module Module1
Dim chislitel As Integer Dim znamenatel As Integer Dim k As Integer Dim r As Integer Dim m As String Function obratni(ByVal t As Integer) Dim i As Integer = 0 Do While True If i * t Mod p = 1 Then Exit Do Else i += 1 End If Loop Return i End Function Sub udvoenie(ByVal x1 As Integer, ByVal y1 As Integer) Dim i As Integer = 0 chislitel = 3 * x1 * x1 + a znamenatel = 2 * y1 ''Нахождение обратного числа знаменателя i = obratni(znamenatel) ''Вычисление углового коэффициента k = (chislitel) * (i) k = k Mod p x3 = (k * k - 2 * x1) ''Проверка на попадание в поле координаты x If x3 < 0 Then Do While x3 < 0 x3 += p Else Loop x3 = x3 Mod p End If y3 = (k * (x1 - x3) - y1) ''Проверка на попадание в поле координаты y If y3 < 0 Then Do While y3 < 0 y3 += p Else Loop y3 = y3 Mod p End If End Sub Sub slojenie(ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer) chislitel = y2 - y1 If chislitel < 0 Then Do While chislitel < 0 chislitel += p Loop End If znamenatel = x2 - x1 If znamenatel < 0 Then znamenatel += p End If Dim i As Integer = 0 ''Нахождение обратного числа знаменателя i = obratni(znamenatel) ''Вычисление углового коэффициента k = (chislitel) * (i) k = k Mod p x3 = (k * k - x1 - x2) ''Проверка на попадание в поле координаты x If x3 < 0 Then Do While x3 < 0 x3 += p Else Loop x3 = x3 Mod p End If y3 = (k * (x1 - x3) - y1) ''Проверка на попадание в поле координаты y If y3 < 0 Then Do While y3 < 0 y3 += p Else Loop y3 = y3 Mod p End If End Sub Sub Main() Dim fileReader As String Dim dlina_file As Integer Dim o As Integer fileReader = My.Computer.FileSystem.ReadAllText("C:\users\alekud\шифр.txt") dlina_file = Len(fileReader) Then Dim mass(dlina_file + 1) As String Dim y As Integer = 0 For o = 1 To dlina_file If (Asc(fileReader.Chars(o - 1))) = 10 Or (Asc(fileReader.Chars(o - 1))) = 13 y += 1 Else If Asc(fileReader.Chars(o - 1)) = 0 Then Exit For Else m += Str(Asc(fileReader.Chars(o - 1))) End If End If Next Dim soobsh As String soobsh = Int(m) dlina_file = Len(soobsh) Dim tim As New System.Timers.Timer Dim start As String Dim finish As String ''Описание эллиптической кривой a = Integer.Parse("-3") b = Integer.Parse("60") p = 59 Dim dlina_p As Integer dlina_p = Len(p) ''Точка на эллиптической кривой x1 = 36 y1 = 23 Dim Gx, Gy As Integer Gx = Integer.Parse("36") Gy = Integer.Parse("23") Dim inv As Integer Dim disk As Integer disk = (4 * a * a * a + 27 * b * b) Do While disk < 0 disk += p Loop disk = disk Mod p disk = obratni(disk) inv = -1728 * 4 * a * a * a * disk Do While inv < 0 inv += p Loop inv = inv Mod p ''шифр эль гамеля на эллиптических кривых ''выбор секретного ключа Dim rx As Integer Dim ry As Integer Dim Cb As Integer = 0 Dim u As Integer = 0 Dim l As String Console.WriteLine("Шифр эль гамеля на эллиптических кривых ") Console.WriteLine() Do While True Console.WriteLine("Введите секретный ключ Cb, 0 Console.WriteLine() If Cb < inv And 0 < Cb Then Console.WriteLine("Выбран секретный ключ Cb={0}", Cb) Exit Do Else Console.WriteLine("Вы ввели недопустимые значени") Console.WriteLine() End If Loop start = Timer tim.Start() ''Вычисляем открытый ключ udvoenie(x1, y1) For i = 0 To Cb - 3 slojenie(x1, y1, x3, y3) Next finish = Timer start = finish - start tim.Stop() Console.WriteLine("Время вычисления открытого ключа {0}", start) Console.WriteLine("Открытый ключ Db = [Cb]G = ({0}, {1}) выбран", x3, y3) Console.WriteLine() ''Вводим сообщения которое будем кодировать Dim Dbx, Dby As Integer Dbx = x3 Dby = y3 Dim n As Integer ''выбор случайного числа Do While True Console.WriteLine("Выберите случайное число u u = Console.ReadLine() |