26
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №9
РАЗЛОЖЕНИЕ НА МНОЖИТЕЛИ
Разложить число на множители - значит найти его простые сомножители [4].
10 = 2*5
60 = 2*2*3*5
252601=41*61*101
2113- 1 =3391*23279*65993*1868569*1066818132868207
Разложение на множители является одной из древнейших проблем теории чисел. Этот процесс несложен, но требует времени. Это пока остается так, но ряд сдвигов в этом искусстве все же произошел.
Решето Эратосфена – это алгоритм нахождения простых чисел до заданного числа n. В процессе выполнения данного алгоритма постепенно отсеиваются составные числа, кратные простым, начиная с 2. Блок-схема данного алгоритма представлена на рис.3.
Контрольные вопросы:
Что означает разложить число на множители?
В чём смысл решета Эратосфена?
27
28
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №10
СИМВОЛЫ ЛЕЖАНДРА И ЯКОБИ
Символ Лежандра, L(a,/p), определен, если a - это любое целое число, а p - простое число, большее, чем 2. Он равен 0, 1 или -1 [6].
L(a,p) = 0, если a делится на p.
L(a,p) = 1, если a - квадратичный вычет по модулю p.
L(a,p) = -1, если a не является квадратичным вычетом по модулю p.
L(a,p) можно рассчитать следующим образом:
L(a,p = a(p-1)/2 mod p
Или можно воспользоваться следующим алгоритмом:
1.Если a = 1, то L(a,p) = 1
2.Если a четно, то L( a,p) = L(a/2,p) * "2-1)/8
3.Если a нечетно (и Ф 1), то L(a,p)= L(p mod a, p)*(-1)(a-1)(p-1)/4
Этот метод также является эффективным способом определить, является ли a квадратичным вычетом по модулю p (для простого числа p).
С
29
Следующий алгоритм рекурсивно рассчитывает символ Якоби: Правило 1: J(l,n) = 1 Правило 2: J(a*b,n) = J(а,п)* J(b,n) Правило 3: J(2,n) =, если (n2-1) /8 нечетно, и -1 в противном случае Правило 4: J(а,п)= J((a mod n),n) Правило 5: J(a, b1*b2) = J(a, b1)* J(a, b2) Правило 6: Если наибольший общий делитель а и b = 1, а также а и b нечетны: Правило 6а: J(a,b)= J(b, а), если (a - 1)(b - l)/4 четно Правило 6b: J(a,b)= -J(b, а), если (а - 1)(b - 1)/4 нечетно
Если заранее известно, что n - простое число, вместо использования предыдущего алгоритма просто вычислите а((n-1)/2) mod n, в этом случае J(а,п) эквивалентен символу Лежандра.
Символ Якоби нельзя использовать для определения того, является ли а квадратичным вычетом по модулю п (если, конечно, п не является простым числом). Обратите внимание, что если J( а,п) = 1 и п - составное число, то утверждение, что а является квадратичным вычетом по модулю п, не обязательно будет истиной. Например: J(7,143) = J(7, l l)* J(7,13) = (-1)(-1) = 1 Однако не существует таких целых чисел х, что х2 = 7 (mod 143).
Если р и q - два простых числа, конгруэнтных 3 по модулю 4, то п = pq иногда называют целым числом Блюма. Если п - это целое число Блюма, у каждого квадратичного вычета ровно четыре квадратных корня, один из которых также является квадратом - это главный квадратный корень. Например, главный квадратный корень 139 mod 437 - это 24. Остальные три корня - это 185, 252 и 413.
Контрольные вопросы:
Как определяется символ Лежандра?
Что представляет из себя символ Якоби?
Что называют целым числом Блюма?
30
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №11
ГЕНЕРАТОРЫ
Если р - простое число, и g меньше, чем р, то g называется генератором по модулю р, если для каждого числа b от 1 до р-1 существует некоторое число а, что ga = b (mod p) [6].
Иными словами, g является примитивом по отношению к р. Например, если р = 11, то 2 - это генератор по модулю 11:
2*6 = 12=1 (mod 11) 2*1 = 2 = 2 (mod 11) 2*7 = 14 = 3 (mod 11) 2*2 = 4 = 4 (mod l l) 2*8 =16 = 5 (mod l l) 2*3 = 6 = 6 (mod 11) 2*9 = 18 = 7 (mod 11) 2*4 = 8 = 8 (mod l l) 2*10 = 20 = 9 (mod l l) 2*5 = 32 = 10 (mod 11)
Каждое число от 1 до 10 может быть представлено как 2a (mod p). Для р = 11 генераторами являются 2, 6, 7 и 8. Другие числа не являются генераторами. Например, генератором не является число 3, потому что не существует решения для 3a = 2 (mod 11)
В общем случае проверить, является ли данное число генератором, нелегко. Однако задача упрощается, е сли известно разложение на множители для р - 1. Пусть q1, q2, ... , qn - это различные простые множители р - 1. Чтобы проверить, является ли число g генератором по модулю р, вычислите g(p-1)/q mod p для всех значений q = q1 q2,..., qn.
Если это число равно 1 для некоторого q, то g не является генератором. Если для всех значений q рассчитанное значение не равно 1, то g - это генератор.
Например, пусть р = 11. Простые множители р - 1 = 10 - это 2 и 5. Для проверки того, является ли число 2 генератором, вычислим: 2(11-1)/5 (mod 11) = 4
2(11-1)/2 (mod 11) = 10
Н
31
При необходимости обнаружить генератор по модулю р просто случайно выбирайте число от 1 до р - 1 и проверяйте, не является ли оно генератором. Генераторов достаточно, поэтому один из них вы, скорее всего, найдете быстро.
Контрольные вопросы:
Что называют генератором по модулю р?
Как упростить задачу проверки: является ли данное число генератором?
Как обнаружить генератор по модулю p?
32
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №12
ДИОФАНТОВЫ УРАВНЕНИЯ
Диофантовыми называются уравнения вида
P(x1, x2, ..., xn) = 0,
где P(x1, ..., xn) – многочлен с целыми коэффициентами.
Рассмотрим алгоритм нахождения решения линейного диофантового уравнения с двумя неизвестными вида a·x + b·y = c (далее для простоты будем опускать знаки умножения и писать прото ax + by = c) [5].
Теорема 1. Уравнение ax + by = c имеет решение в целых числах тогда и только тогда, когда c делится на НОД(a, b).
Теорема 2. Если пара (x0, y0) является решением уравнения ax + by = c, то все множество его решений (x, y) описывается формулой:
x = x0 + kb,
y = y0 – ka,
где k Є Z. Очевидно, что если ax0 + by0 = c, то a(x0 + kb) + b(y0 – ka) = c для любого целого k.
Для нахождения частичного решения (x0, y0) уравнения ax + by = c следует сначала найти решение (x’, y’) уравнения ax + by = d (d – наибольший общий делитель a и b) при помощи расширенного алгоритма Евклида, после чего умножить его на c / d. То есть
x0 = x’ · c / d,
y0 = y’ · c / d
Пример. Найти множество решений уравнения 5x + 3y = 7.
1. Уравнение имеет решение, так как 7 делится на НОД(5, 3) = 1.
2. Находим решение уравнения 5x’ + 3y’ = 1 при помощи расширенного алгоритма Евклида: (x’, y’) = (-1, 2).
3. Находим решение (x0, y0) исходного диофантового уравнения:
x0 = -1 · 7 / 1 = -7,
y0 = 2 · 7 / 1 = 14
Согласно теореме 2 множество решений исходного диофантового уравнения имеет вид:
(x, y) = (-7 + 3k, 14 – 5k)
33
Контрольные вопросы:
Какие уравнения называют диофантовыми?
В каком случае уравнение ax + by = c имеет решение в целых числах?
Каков алгоритм нахождения решения линейного диофантового уравнения с двумя неизвестными вида a·x + b·y = c?
34
http://www.5byte.ru/
http://library.tuit.uz/skanir_knigi/book/zashita_info/zash_info_10.htm
http://sti.oskol.ru/about/default.html
http://younglinux.info
http://www.e-olimp.com
http://www.a3print.ru/printer/214/62/index.html
Р.Р.Хамидуллин, И.А.Бригаднов, А.В.Морозов “Методы и средства защиты компьютерной информации. Учебное пособие”, Санкт-Петербург, 2005 г.
http://nanobukva.ru/09/febu/05_-_ibks_-_kniga_po_kriptografii_46.html
Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф. Защита информации в компьютерных системах и сетях / под ред. В.Ф. Шаньгина. – 2-е изд., перераб. и доп. – М.: Радио и связь, 2001.
Мельников В.В. Защита информации в компьютерных системах. – М.: Финансы и статистика; Электроинформ, 1997.
Завгородний В.И. Комплексная защита информации в компьютерных системах: Учебное пособие. – М.: Логос, 2001..
Еременко Ю.И., Штангей С.М. Современные информационные технологии Старый Оскол: ООО "ТНТ", 2001.
Зегжда Д.П., Ивашко А.М. Основы безопасности информационных систем. М.: Горячая линия - Телеком, 2000.
\
35
Практическое занятие 1. Алгоритм Евклида для нахождения общего делителя ………………………………………………………..1
Практическое занятие 2. Расширенный алгоритм Евклида..….4
Практическое занятие 3. Вычисление обратных величин….....6
Практическое занятие 4. Квадратичные вычеты……………...11
Практическое занятие 5. Китайская теорема об остатках……13
Практическое занятие 6. Модулярная арифметика…………..15
Практическое занятие 7. Вычисления в конечных полях……18
Практическое занятие 8. Тестирование простоты числа
методом перебора делителей………………………………………….25
Практическое занятие 9. Разложение на множители…………27
Практическое занятие 10. Символы Лежандра и Якоби……..29
Практическое занятие 11. Генераторы………………………...31
Практическое занятие 12. Диофантовы уравнения…………..33
Библиографический список .......................................................35
36
к практическим занятиям
по дисциплине “Криптографические методы
и средства ИБ” для студентов специальностей