это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
Ознакомительный фрагмент работы:
Реферат на тему:
Дискретний логарифм
Проблема обчислення дискретного логарифма є не лише цікавою, а й вкрай корисною для систем захисту інформації. Ефективний алгоритм знаходження дискретного логарифму значною мірою знизив би безпеку систем ідентифікації користувача та схеми обміну ключей.
Означення. Нехай 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 (modp). Число 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 = zymodn. Підставимо в останню рівність замість змінних логарифмічні вирази:
logak =(logab) (logbk) modn
або
logbk =(logak) (logab)-1modn.
З останньої рівності випливає справедливість теореми.
Для знаходження 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 * loga). За лінійний час проглядаємо списки зліва направо порівнюючи їх голови: якщо вони рівні, то значення 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
Якщо di¹d2i (modn), то це рівняння може бути ефективно розв’язано для обчислення logab.
Алгоритм
Вхід: генератор a циклічної групи G з порядком nта елемент bÎ G.
Вихід: дискретний логарифм x = logab.
1. x0¬ 1, c0¬ 0, d0¬ 0.
2. fori = 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) modn;
if (r = 0) thenreturn (FALSE); // розв’язку не знайдено
x¬r-1 (ci - c2i) mod n.
return (x).
Якщо алгоритм завершується невдачею (повертає FALSE), то можна запустити його вибравши інші початкові значення c0, d0 з інтервалу [1; n - 1] та поклавши x0 = .
Приклад. Обчислити log29в групі Z19*.
| 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.
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
Выполнить 2 контрольные работы по Информационные технологии и сети в нефтегазовой отрасли. М-07765
Контрольная, Информационные технологии
Срок сдачи к 12 дек.
Архитектура и организация конфигурации памяти вычислительной системы
Лабораторная, Архитектура средств вычислительной техники
Срок сдачи к 12 дек.
Организации профилактики травматизма в спортивных секциях в общеобразовательной школе
Курсовая, профилактики травматизма, медицина
Срок сдачи к 5 дек.
краткая характеристика сбербанка анализ тарифов РКО
Отчет по практике, дистанционное банковское обслуживание
Срок сдачи к 5 дек.
Исследование методов получения случайных чисел с заданным законом распределения
Лабораторная, Моделирование, математика
Срок сдачи к 10 дек.
Проектирование заготовок, получаемых литьем в песчано-глинистые формы
Лабораторная, основы технологии машиностроения
Срок сдачи к 14 дек.
Вам необходимо выбрать модель медиастратегии
Другое, Медиапланирование, реклама, маркетинг
Срок сдачи к 7 дек.
Ответить на задания
Решение задач, Цифровизация процессов управления, информатика, программирование
Срок сдачи к 20 дек.
Написать реферат по Информационные технологии и сети в нефтегазовой отрасли. М-07764
Реферат, Информационные технологии
Срок сдачи к 11 дек.
Написать реферат по Информационные технологии и сети в нефтегазовой отрасли. М-07764
Реферат, Геология
Срок сдачи к 11 дек.
Разработка веб-информационной системы для автоматизации складских операций компании Hoff
Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления
Срок сдачи к 1 мар.
Нужно решить задание по информатике и математическому анализу (скрин...
Решение задач, Информатика
Срок сдачи к 5 дек.
Заполните форму и узнайте цену на индивидуальную работу!