Дискретний логарифм

Аналіз проблеми обчислення дискретного логарифма. Алгоритм великого та малого кроку, його характеристика. Алгоритм, базований на обчисленні індексів. Побудова системи рівнянь для знаходження значень логарифмів. Алгоритм Поліга–Хелмана, його аналіз.

Рубрика Математика
Вид реферат
Язык украинский
Дата добавления 19.11.2017
Размер файла 31,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Реферат

На тему: "Дискретний логарифм"

Проблема обчислення дискретного логарифма є не лише цікавою, а й вкрай корисною для систем захисту інформації. Ефективний алгоритм знаходження дискретного логарифму значною мірою знизив би безпеку систем ідентифікації користувача та схеми обміну ключей.

Означення. Нехай G - скінченна циклічна група порядка n. Нехай g - генератор G та b О--G. Дискретним логарифмом числа b за основою g називається таке число x (0 Ј--x Ј--n - 1), що gx = b та позначається x = loggb.

Проблема дискретного логарифму. Нехай p - просте число, g - генератор множини Zp*, y О Zp*. Знайти таке значення x (0 Ј x Ј p - 2), що gx є y (mod p). Число x називається дискретним логарифмом числа y за основою g та модулем p.

Узагальнена проблема дискретного логарифму. Нехай G - скінченна циклічна група порядка n, g - її генератор, b О--G. Необхідно знайти таке число x (0 Ј--x Ј--n - 1), що gx = b.

Розширенням узагальненої проблеми може стати задача розв'язку рівняння gx = b, коли знято умову циклічності групи G, а також умову того, що g - генератор G (в такому випадку рівняння може і не мати розв'язку).

Приклад. g = 3 є генератором Z7*: 31 = 3, 32 = 2, 33 = 6, 34 = 4, 35 = 5, 36 = 1.

log34 = 4 (mod 7), тому що розв'язком рівняння 3x = 4 буде x = 4.

Теорема. Нехай а - генератор скінченної циклічної групи G порядка n. Якщо існує алгоритм, який обчислює дискретний логарифм за основою а, то цей алгоритм може також обчислити дискретний логарифм за будь-якою основою b, яка є генератором G.

Доведення. Нехай k О G, x = logak, y = logbk, z = logab. Тоді ax = by = (az)y, звідки x = zy mod n. Підставимо в останню рівність замість змінних логарифмічні вирази:

logak =(logab) (logbk) mod n

або

logbk =(logak) (logab)-1 mod n.

З останньої рівності випливає справедливість теореми.

Примітивний алгоритм

Для знаходження loggb (g - генератор G порядка n, b О--G) будемо обчислювати значення g, g2, g3, g4, ... поки не отримаємо b. Часова оцінка алгоритму - O(n). Якщо n - велике число, то час обчислення логарифму є достатньо великим і тому алгоритм є неефективним.

Алгоритм великого та малого кроку

Першим детермінованим алгоритмом для обчислення дискретного логарифму був алгоритм великого та малого кроку, запропонований Шанком (Shank) [1].

Для обчислення loggb в групі Zn* необхідно зробити наступні кроки:

1. Обчислити a = й--щ--;

2. Побудувати список L1 = 1, ga, g2a, ..., g (за модулем n);

3. Побудувати список L2 = b, bg, bg2, ..., bga - 1 (за модулем n);

4. Знайти число z, яке зустрілося в L1 та L2.

Тоді z = bgk = gla для деяких k та l. Звідси b = gla - k = gx; x = la - k.

Два питання постає при дослідженні роботи наведеного алгоритму:

1. Чи завжди знайдеться число, яке буде присутнім в обох списках?

2. Як ефективно знайти значення z?

Запишемо x = sa + t для деяких s, t таких що 0 Ј s, t < a. Тоді b = gx = gsa + t. Домножимо рівність на ga - t, отримаємо: bga - t = gs(a + 1). Значення зліва обов'язково зустрінеться в L2, а справа - в L1.

Відсортуємо отримані списки L1 та L2 за час O(a * log a). За лінійний час проглядаємо списки зліва направо порівнюючи їх голови: якщо вони рівні, то значення z знайдене, якщо ні - то видалити менше число і продовжити перевірку.

Приклад. Розв'язати рівняння: 2x є 11 (mod 13).

a = й--щ = 4;

L1: 1, 24 є 3, 28 є 9, 212 є 1, 216 є 3;

L2: 11, 11 * 2 є 9, 11 * 22 є 5, 11 * 23 є 10;

Число 9 зустрілося в обох списках. 11 * 2 є 28, 11 є 27, звідки x = 7.

Відповідь: x = 7.

Інший підхід до реалізації алгоритму великого та малого кроку можна отримати якщо рівність b = gsa + t (a = й--щ--, 0 Ј s, t < a) переписати у вигляді b * (g-a)s = gt. Обчислимо g-a та складемо таблицю значень gt, 0 Ј t < a. Далі починаємо знаходити значення b * (g-a)s, s = 0, 1, … перевіряючи їх наявність у таблиці gt. Як тільки знаходяться такі s та t, алгоритм зупиняється.

Приклад. Обчислити log23 в групі Z19* .

3 = 2x = 2sa+1, 3 * (2-a)s = 2t. Складемо таблицю 2t, 0 Ј t < й--щ = 5:

t

0

1

2

3

4

2t

1

2

4

8

16

2-1 є 10 (mod 19), оскільки 2 * 10 є 1 (mod 19).

Тоді 3 * (2-5)s (mod 19) є 3 * (105)s (mod 19) є 3 * 3s (mod 19)

Обчислюємо 3 * 3s, s = 0, 1, … :

s

0

1

2

3 * 3s

3

9

8

Значення 8, яке отримали при s = 2, присутнє в таблиці 2t, 0 Ј t < 5.

Звідси 3 * (2-5)2 = 23 або 3 = (25)2 * 23 = 25*2+3 = 213.

Відповідь: 3 = 213, тобто log23 = 13.

Алгоритм Полард - ро

Нехай G - циклічна група з порядком n (n - просте). Розіб'ємо елементи групи G на три підмножини S1, S2 та S3, які мають приблизно однакову потужність. При цьому необхідне виконання умови: 1 П--S2. Визначимо послідовність елементів xi наступним чином:

x0 = 1, xi+1 = , i і--0(1)

Ця послідовність у свою чергу утворить дві послідовності ci та di , що задовольняють умові

xi =

та визначаються наступним чином:

с0 = 0, сi+1 = , i і--0(2)

та

d0 = 0, di+1 = , i і--0(3)

дискретний логарифм індекс хелман

Алгоритм буде працювати циклічно шукаючи таке знчення i, для якого xi = x2i. Для таких значень будуть мати місце рівність = або = . Логарифмуючи останню рівність за основою a, матимемо:

(di - d2i) * logab є--(c2i - ci) mod n

Якщо did2i (mod n), то це рівняння може бути ефективно розв'язано для обчислення logab.

Алгоритм

Вхід: генератор a циклічної групи G з порядком n та елемент b О--G.

Вихід: дискретний логарифм x = logab.

1. x0 ¬--1, c0 ¬--0, d0 ¬--0.

2. for i = 1, 2, ... do

2.1. За значеннями xi-1, ci-1, di-1 та x2i-2, c2i-2, d2i-2 обчислити значення xi, ci, di та x2i, c2i, d2i використовуючи формули (1), (2), (3).

2.2. if (xi = x2i) then

r ¬--(di - d2i) mod n;

if (r = 0) then return (FALSE);// розв'язку не знайдено

x ¬ r -1 (ci - c2i) mod n.

return (x).

Якщо алгоритм завершується невдачею (повертає FALSE), то можна запустити його вибравши інші початкові значення c0, d0 з інтервалу [1; n - 1] та поклавши x0 = .

Приклад. Обчислити log29 в групі Z19*.

Побудуємо наступну таблицю значень послідовностей xi, ci, di:

i

xi

ai

bi

x2i

a2i

b2i

1

9

0

1

18

1

1

2

18

1

1

4

4

2

3

17

2

1

4

8

6

4

4

4

2

4

16

14

5

17

4

3

4

32

30

6

4

8

6

4

64

62

На 6 кроці отримали x6 = x12 . Підставивши їх значення, отримаємо:
28 * 96 = 264 * 962 або 28 - 64 = 962 - 6 , 2-56 = 956
Логарифмуємо рівність: -56 * log29 = 56 (mod 18), оскільки |Z19*| = 18.
Враховуючи що -56 (mod 18) є--16, 56 (mod 18) є--2, перепишемо рівність у вигляді 16 * log29 = 2 (mod 18) або 8 * log29 = 1 (mod 9). log29 = 8-1 (mod 9) = 8.
Відповідь: log29 = 8.

Індексний алгоритм

Алгоритм, базований на обчисленні індексів, є найпотужним при обчисленні дискретного логарифму. Необхідно побудувати відносно невелику підмножину S елементів групи G, яка називається множниковою основою. Ця підмножина повинна обиратися таким чином, щоб як можна більша частина елементів G могла бути представлена у вигляді добутку її елементів. При обчисленні значення logab (a - генератор G, b О--G) спочатку обчислюються значення логарифмів елементів з S (які заносяться в тимчасову базу даних), а потім на їх основі обчислюється логарифм числа b.

Алгоритм

Вхід: генератор a циклічної групи G порядка n та елемент b О--G.

Вихід: дискретний логарифм x = logab.

1. Побудувати множину S - множникову основу. Нехай S = {p1, p2, …, pt}. В якості значень pi можна обрати, наприклад, i - те просте число.

2. Побудувати систему лінійних рівнянь, розв'язком якої будуть значення logapi. Для цього виконаємо наступні кроки:

2.1. Обрати деяке ціле k, 0 Ј--k Ј--n - 1 та обчислити ak .

2.2. Спробувати представити значення ak у вигляді добутку чисел з S:

ak = , ci і--0

Якщо така рівність знайдена, то записати рівняння:

k = (mod n)

2.3. Повторювати кроки 2.1. та 2.2. поки не отримаємо t + c лінійних рівнянь. Невелике ціле число c (1 Ј c Ј 10) обирається таким чином, щоб складена система рівнянь мала єдиний розв'язок з великою ймовірністю (якщо скласти лише t рівнянь з t невідомими, то з великою ймовірністю два з цих рівнянь будуть залежними і тоді система буде мати більше одного розв'язку).

3. Розв'язати утворену систему рівнянь, отримати значення logapi, 1Ј i Ј t.

4. Обчислення logab.

4.1. Обрати деяке ціле k, 0 Ј--k Ј--n - 1 та обчислити b * ak .

4.2. Спробувати представити значення b * ak у вигляді добутку чисел з S:

b * ak = , di і--0

Якщо такого представлення знайти не вдається, виконати знову 4.1. Інакше прологарифмірувавши останню рівність, отримаємо:

x = logab = ( - k) mod n

Приклад. Обчислити log212 в групі Z19*.

1. Нехай S = {2, 3, 5} - множникова основа.

2. Будуємо систему рівнянь для знаходження значень log2pi, де pi О--S. Оскільки множина S містить 3 елементи, то достатньо отримати 3 лінійно незалежні рівняння.

k = 5: 25 (mod 19) є 13 - не представимо у вигляді добутку чисел з S.

k = 7: 27 (mod 19) є 14 - не представимо у вигляді добутку чисел з S.

k = 2: 22 (mod 19) є 4 = 22. Перше рівняння: 2 = 2log22.

k = 10: 210 (mod 19) є 17 - не представимо у вигляді добутку чисел з S.

k = 15: 215 (mod 19) є 12 = 22 * 3. Друге рівняння: 15 = 2log22 + log23.

k = 11: 211 (mod 19) є 15 = 3 * 5. Третє рівняння: 11 = log23 + log25.

3. Система рівнянь за модулем 18 (порядок Z19* дорівнює 18) має вигляд:

Її розв'язком буде:

log22 = 1, log23 = 13, log25 = 16

4. Обчислення log212.

k = 3: 12 * 23 (mod 19) є 1 - не представимо у вигляді добутку чисел з S.

k = 7: 12 * 27 (mod 19) є 16 = 24.

log212 + 7 є 4log22 (mod 18), log212 є (4log22 - 7) (mod 18) = 15.

Відповідь: log212 = 15.

Алгоритм Поліга - Хелмана

Алгоритм Поліга - Хелмана ефективно розв'язує задачу дискретного логарифма в групі G порядка n, якщо число n має лише малі прості дільники.

Нехай g, h О G, |G| = ps, p - просте. Тоді значення x = loggh можна подати у вигляді:

x = x0 + x1p + x2p2 + … + xs-1ps-1

Піднесемо рівняння h = gx до степеня ps-1:

= = =

* * * … * = ,

оскільки = 1 (g - генератор групи, ps - її порядок).

Таким чином з рівності = знаходимо x0.

Далі маючи значення x0, x1, …, xi-1 можна обчислити xi з рівняння

=

Приклад. Обчислити log37 в Z17*.

Необхідно розв'язати рівняння 3x = 7 в групі, порядок якої дорівнює 16 = 24.

Представимо x у двійковій системі числення: x = x0 + 2x1 + 4x2 + 8x3.

1. Обчислення x0.

Піднесемо рівняння 3x = 7 до степеня 23 = 8:

= 78, = -1,

* * * = -1.

Оскільки 316 (mod 17) є 1, то останнє рівняння прийме вигляд = -1. Враховуючи що 38 (mod 17) є -1, маємо: = -1, x0 = 1.

2. Обчислення x1.

Домножимо рівність = 7 на = 3-1 (mod 17) = 6, отримаємо:

= 7 * 6 або = 8.

Піднесемо рівняння до степеня 4: = 84, = -1, x1 = 1.

3. Обчислення x2.

1. D. Shanks. Class number, a theory of factorization and genera. In Proc. Symposium Pure Mathematics, vol.20, pp.415-440. American Mathematical Society, 1970.

Размещено на Allbest.ru

...

Подобные документы

  • Використання методу Полларда для вирішення проблеми дискретного логарифмування, його складність і час обчислення рішення ECDLP. Аномальні криві й криві над розширеннями малого поля. MOV-атака та суперсингулярні криві над полем F. Метод спуску Вейля.

    реферат [269,5 K], добавлен 21.02.2011

  • Етапи розв'язування інженерних задач на ЕОМ. Цілі, засоби й методи моделювання. Створення математичної моделі. Побудова обчислювальної моделі. Реалізація методу обчислень. Розв’язання нелінійних рівнянь методом дихотомії. Алгоритм метода дихотомії.

    контрольная работа [86,1 K], добавлен 06.08.2010

  • Огляд проблеми дискретного логарифмування в групі точок еліптичної кривої. Сутність та сфера використання методу Поліга-Хелмана. Особливості використання методу ділення точок на два. Можливі підходи і приклади розв’язання задач дискретного логарифмування.

    реферат [112,8 K], добавлен 09.02.2011

  • Теорія обернених матриць та їх знаходження за формулою. Оберненні матриці на основі яких складається написання програми обчислення оберненої матриці до заданої. Побудова матриць та їх характеристика. Приклади проведення розрахунків при обчисленні матриць.

    курсовая работа [96,8 K], добавлен 06.12.2008

  • Аналіз найвідоміших методів розв’язування звичайних диференціальних рівнянь і їх систем, користуючись рекомендованою літературою. Розробка відповідної схеми алгоритму. Розв’язання системи звичайних диференціальних рівнянь в за допомогою MathCAD.

    лабораторная работа [412,4 K], добавлен 21.10.2014

  • Огляд складання програми на мові програмування С++ для обчислення чотирьох лінійної системи рівнянь матричним методом. Обчислення алгебраїчних доповнень до елементів матриці. Аналіз ітераційних методів, заснованих на використанні повторюваного процесу.

    практическая работа [422,7 K], добавлен 28.05.2012

  • Власні числа і побудова фундаментальної системи рішень. Однорідна лінійна система диференціальних рівнянь. Побудова фундаментальної матриці рішень методом Ейлера. Знаходження наближеного рішення у вигляді матричного ряду. Рішення неоднорідної системи.

    курсовая работа [378,9 K], добавлен 26.12.2010

  • Розв'язання системи рівнянь методом Гауса і за формулами Крамера. Знаходження власних значень і векторів матриці, косинуса кута між векторами. Визначення з якої кількості товару більш вигідним становиться продаж у магазині. Диференціювання функцій.

    контрольная работа [104,7 K], добавлен 06.03.2013

  • Схема класифікації та методи розв'язування рівнянь. Метод половинного ділення. Алгоритм. Метод хорд, Ньютона, їх проблеми. Граф-схема алгоритму Ньютона. Метод простої ітерації. Питання збіжності методу простої ітерації. Теорема про стискаючі відображення.

    презентация [310,1 K], добавлен 06.02.2014

  • Общая терминология и история изобретения логарифма. Характеристики натурального и обычного логарифма, определение дробного числа и мантиссы. Таблицы и свойства натуральных логарифмов. Логарифмическая и экспоненциальная кривая, понятие функции логарифма.

    реферат [211,2 K], добавлен 05.12.2011

  • Логарифм как многозначная функция. Обозначение главного значения логарифма. Свойства логарифма на случай комплексного аргумента. Понятие обратных тригонометрических функций (арккосинуса, арктангенса, арккотангенса), практические примеры их вычисления.

    презентация [171,6 K], добавлен 17.09.2013

  • Характеристика та поняття потрійного інтеграла, умови його існування та основні властивості. Особливості схеми побудови та обчислення потрійного інтегралу, його застосування для розв’язання рівнянь. Правило заміни змінних в потрійному інтегралі.

    контрольная работа [400,3 K], добавлен 23.03.2011

  • Эйлеровы цепи и циклы, теоремы. Алгоритм построения эйлерова цикла. Обоснование алгоритма. Нахождение кратчайших путей в графе. Алгоритм Форда отыскания кратчайшего пути. Задача отыскания кратчайших расстояний между всеми парами вершин. Алгоритм Флойда.

    реферат [108,4 K], добавлен 01.12.2008

  • Криптографічні перетворення, що виконуються в групі точок ЕК. Проблема дискретного логарифму. Декілька методів, що використовуються для аналізу стійкості і проведення криптоаналізу. Опис та розв’язання логарифму методом Флойда, методом Полларда.

    контрольная работа [98,1 K], добавлен 08.02.2011

  • История слова "алгоритм", понятие, свойства, виды. Алгоритм Евклида, решето Эратосфена; математические алгоритмы при действии с числами и решении уравнений. Требования к алгоритмам: формализация входных данных, память, дискретность, детерминированность.

    реферат [1,1 M], добавлен 14.05.2015

  • Застосування методу Гауса (або методу послідовного виключення невідомих) для розв'язання систем лінійних рівнянь. Економний спосіб запису за допомогою компактної схеми Гауса. Алгоритм знаходження рангу матриці, метод Гауса з вибором головного елемента.

    курсовая работа [879,9 K], добавлен 02.10.2010

  • Використання методу Монтгомері як ефективний шлях багаторазового зведення за модулем. Складність операцій з многочленами та обчислення їх значень. Алгоритм Руфіні-Горнера. Визначення рекурсивного процесу для множення. Доведення алгоритму Тоома-Кука.

    контрольная работа [103,8 K], добавлен 07.02.2011

  • Теория графов как математический аппарат для решения задач. Характеристика теории графов. Критерий существования обхода всех ребер графа без повторений, полученный Л. Эйлером при решении задачи о Кенигсбергских мостах. Алгоритм на графах Дейкстры.

    контрольная работа [466,3 K], добавлен 11.03.2011

  • Исторические аналоги современных определений логарифма как средства вычислений. Интегральные методы XVII века, нахождение площади под гиперболой. Современное интегральное определение логарифма. Определение элементарных функций с помощью интеграла.

    курсовая работа [255,2 K], добавлен 04.09.2014

  • Граф как совокупность объектов со связями между ними. Характеристики ориентированного и смешанного графов. Алгоритм поиска кратчайшего пути между вершинами, алгоритм дейкстры. Алгебраическое построение матрицы смежности, фундаментальных резервов и циклов.

    методичка [29,4 M], добавлен 07.06.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.