
Все о крипто / КРИПТОГРАФИЯ. Первое знакомство / Приложение 2
.docПриложение 2.
Поля Галуа
Определение Поля.
Пусть на множестве U заданы две операции: типа сложения (+) и типа умножения (*).
Пусть множество U с операцией + образует коммутативную группу с нейтральным элементом 0.
Пусть множество U/0 (с выколотым нулем) с операцией * (умножения) образует группу.
Тогда множество (U,+,*) – поле.
В соответствии с определением поля можно построить поля из конечного числа элементов с операциями сложения и умножения по простому модулю p, так называемые простые поля Галуа GF(p).
Так, можно построить поля GF(2), GF(3), GF(5), и т.п. Например,
GF(2):
Таблица сложения:
-
+
0
1
0
0
1
1
1
0
Таблица умножения
-
*
0
1
0
0
0
1
0
1
GF(3):
Таблица сложения:
-
+
0
1
2
0
0
1
2
1
1
2
0
2
2
0
1
Таблица умножения
-
*
0
1
2
0
0
0
0
1
0
1
2
2
2
1
GF(5:
Таблица сложения:
-
+
0
1
2
3
4
0
0
1
2
3
4
1
1
2
3
4
0
2
2
3
4
0
1
3
3
4
0
1
2
4
4
0
1
2
3
Таблица умножения
-
*
0
1
2
3
4
0
0
0
0
0
0
1
0
1
2
3
4
2
0
2
4
1
3
3
0
3
1
4
2
4
0
4
3
2
1
Поля полиномов Галуа
Поля можно построить в совершенно другой форме, а именно, как поля многочленов по модулю некоторого неприводимого многочлена над простым полем GF(p). В этом случае порядок поля (число его элементов) равен ph, где p- простое, h – целое.
Пусть F(p) – простое поле Галуа порядка p. Рассмотрим множество
многочленов вида: f (X) = aoX+a1X2+…+akXk, где ai Î F(p), где I € 0,1,2, 3,…k. Таким образом, коэффициенты принимают значения из F(p), а операции сложения и умножения выполняются по mod p. Если ak ¹ 0, то многочлен f (X) имеет степень h. Множество всех многочленов, имеющих степень h и меньше, будем обозначать F(k)[X]. Введем операции сложения и умножения многочленов над полем F(p):
f(X) + g(X) =å (fi + gi) Xi.
f(X) *g(X) =åå (fi *gi-j)Xi.
Например, fX) = f0 + f1X. g(X) = g0+g1X+g2X2. Тогда
f(X) + g(X) = (f0 + g0) +( f1 + g1)X + g2X2.
f(X) *g(X) = (f0g0) + (f0g1 +f1g0) X + (f1g1 + f0g2)X2 +f1g2X3.
Из примеров видно, что степень результирующего полинома при сложении равна максимальной степени слагаемых, а при умножении – сумме максимальных степеней многочленов.
Примеры.
Сложить и перемножить многочлены :
f(X) = f0 + f1X + f2X2; g(X) = g0 + g1X + g3X3.
f(X) = f0 + f2X2 + f5X5; g(X) = g1 + g2X2 + g4X4.
f(X) = f1X + f3X3 + f4X4; g(X) = g0 + g1X + g2X2.
А теперь сделайте то же самое, если задано числовое поле (модуль):
f(X) = 1 + X + X2; g(X) = 1 + X + X3. p = 2.
f(X) = 2 + X2 + 2X5; g(X) = 1 + 2X2 + X4. p = 3.
f(X) = 3X + 2X3 + X4; g(X) = 4 + 3X + 2X2 p = 5
Если допускать получение многочленов всех возможных степеней, то множество многочленов образует кольцо с операциями сложения в простом пол и умножения.
Для любых двух многочленов f(X) и g(X) существуют и притом единственные многочлены a(X) и r (X) такие, что
f(X) = a(X)*g(X) + r(X), Если r(X) = 0, то g(X) делит f(X) нацело.
Примеры.
Найти остатки от деления многочленов:
X5 Å X2 Å X на X3 Å X2 Å X Å1 в поле F(2) – 1
2X4 Å X2 Å 2 на X3 Å 2X2 Å 2X Å1 в поле F(3) – 2X2
3X5 Å 2X3 Å 1 на X2 Å 4X Å 3 в поле F(5) – 4X.
Если в F(X) нет ни одного многочлена, степени большей 0,
который бы делил нацело f(X) за исключением кратных f(X), т.е. многочленов виде b*f(X), то многочлен f(X) называется неприводимым.
Найдем неприводимые многочлены некоторых степеней над полем F(2): Два многочлена первой степени X Å 1 и X считаются неприводимыми. Многочлен второй степени вида X2 Å a X Å b будет неприводимым над полем F(2) если он не будет делиться ни на один из двух многочленов первой степени, а это означает, что он не должен иметь корней в поле F(2). Если он имеет корень а, то будет делиться на X Å а. Откуда F(0) = b ¹ 0. F(1) = a Å b Å 1¹ 0. значит, что он имеет вид: X2 Å X Å 1. Многочлен третьей степени имеет общий вид: X3 Å a X2Å b X Å c. Он не должен делиться ни на один многочлен первой степени (проверять делимость на многочлены второй степени не требуется). Поэтому он не должен иметь корней в поле F(2):
F(0) = c = 1; F(1) = 1 Å a Å b Å 1 = 1. Т.е. либо a либо b должны равняться 1, но не оба вместе. Т.е. имеется два неприводимых многочлена второй степени в поле F(2): X3 Å X2 Å 1 и X3 Å X Å 1.
Неприводимые многочлены 4-й степени имеет вид:
X4 Å X3 Å X2 Å X Å 1; X4 Å X Å 1; X4 Å X3 Å 1.
Возьмем какой - нибудь неприводимый многочлен, например, X3 Å X2 Å 1. Любой многочлен большей степени в поле F(2) при делении на него будет давать остатки: {(0), (1) (X), (XÅ1), (X2), (X2Å1), (X2ÅX), (X2ÅXÅ1)}. Каждый из этих остатков образует класс вычетов по модулю неприводимого полинома. А их совокупность по сложению и умножению по модулю неприводимого полинома образует поле F(ph).
Элемент поля F(p) a такой, что f(a) = 0, называется корнем полинома f(X) в поле F(p).
Пример.
1. Найдите корни многочлена X2 Å X Å 1 в полях F(2), F(3), F(5), F(7).
2. Найдите корни многочлена X4ÅX3 Å1 в тех же полях.
Комплексное
число a
называется алгебраическим корнем
степени h,
над полем F(p),
если оно удовлетворяет уравнению P(X)
= 0, где P(X)
– многочлен степени h,
но не удовлетворяет никакому уравнению
с многочленом меньшей степени. Это
влечет за собой неприводимость многочлена
P(X).
Все ph
элементы поля F(ph)
могут быть представлены в виде: S
ci
ai,
где 0
ci
p-1;0
i
h-1.
При вычислениях степень as , где s ³ h заменяется на меньшую в соответствии с уравнением P(a) = 0.
Пусть, например, p = 3, h = 2 и a удовлетворяет уравнению X2-X-1 =0. Видно, что это уравнение не имеет корней в поле F(3). Элементы поля F(32) можно выразить как 0,1,2, a,a + 1, a + 2; 2a, 2a + 1, 2a + 2.
При вычислениях понижение степеней производится с использованием равенства a2 = a + 1. Это можно показать следующим образом. Все операции в поле выполняются по модулю неприводимого полинома X2-X-1. Например, X5 мы должны разделить на этот полином и найти остаток. В результате деления получаем 2X3 + 2X2 + X – частное и остаток 2X. Этот же результат можно получить, если производить замену в соответствии с равенством a2 = a + 1: a5 = a2*a2*a = (a +1)( a +1) a = (a2 + 2a +1)* a = (a +1 +2a +1)* a = 2a.
Элемент b ¹ 0 поля F(ph) называется образующей F*(ph) мультипликативной группы ненулевых элементов поля F(ph), если степени bi , i = 0,1,2,3,…ph –1 пробегают все ненулевые элементы поля. Образующая может рассматриваться как основание log. Такие логарифмы называются дискретными логариымами. Рассмотрим, например, все 8 степеней (кроме нулевой) корня a в приведенном примере и запишем результат виде таблицы:
i |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
a |
a |
a + 1 |
2a + 1 |
2 |
2a |
2a + 2 |
a + 2 |
1 |
Из таблицы видно, что a является образующей. Эта таблица может быть представлена как таблица дискретных логарифмов. Для этого в верхней строке запишем упорядоченные элементы поля, а в нижней – степени образующего элемента, при котором получаем данный элемент
y |
1 |
2 |
a |
a + 1 |
a + 2 |
2a |
2a + 1 |
2a + 2 |
Loga y |
8 |
4 |
1 |
2 |
7 |
5 |
3 |
6 |
Считается, что вычисление дискретных логарифмов является такой же трудоемкой задачей, что и задача факторизации (разложение на множители). Таблица Log может использоваться для выполнения умножения и деления элементов поля. Заметим, что эти операции выполняются по модулю ph –1, в данном случае по модулю 8. Например, Log ((a + 2)( 2a + 1) = Log (a + 2) + Log (2a + 1 ) = 7 + 3 = 10 º 2 mod 8 º 2. А двойке соответствует a + 1.
Log ((a + 1)/( 2a + 2) = 2 – 6 = - 4 º 4 mod 8, чему соответствует элемент 2
Проверка показывает, что кроме элемента a образующими также являются элементы 2a + 1, a + 2 и 2a. Число образующих элементов поля равно j (ph –1 ).
Упражнение. Найдите число образующих элементов для полей Галуа: F (34), F(52), F (72), F (115), F(134).
1.12. Квадратичные вычеты. Символ Лежандра. Символ Якоби.
Рассмотрим поле Галуа F(ph) при p>2 и h - целом. Исключим из элементов поля нулевой элемент, а оставшееся множество обозначим F*(ph). Если некоторый элемент a Î F*(ph) есть квадрат некоторого элемента x Î F*(ph), то a называют квадратичным вычетом, если же такого элемента x не найдется в F*(ph), то a называют квадратичным невычетом.
Пример. Рассмотрим поле F(32). Все элементы поля можно представить в виде: 0,1,2,a, a + 1, a + 2,2a,2a + 1,2a + 2, где a - корень некоторого неприводимого полинома степени 2 над полем F(3). Возьмем в качестве такого полинома P(X) = X2-X-1. Тогда P(a) = a2-a-1 = 0. При выполнении вычислений будем производить замену: a2 = a+1. F*(32) будет содержать все те же элементы кроме элемента 0, а именно: 1,2,a, a + 1, a + 2, 2a, 2a + 1, 2a + 2. Будем последовательно возводить в квадрат все элементы поля (кроме нулевого) и выявлять квадратичные вычеты:
12 = 1; 22 = 1; a2 = a+1; (a+ 1)2 = a2 + 2a+1 = a+1 + 2a+1 = 2;
(a+ 2)2 = a2 + 4a+4 = (a+ 1) + 4a+4 = 2a+2; (2a)2 = 4a2 = (a+ 1);
(2a + 1)2 = 4a2 + 4a + 1 = a+ 1 + 4a + 1 = 2a + 2; (2a + 2)2 = 4a2 + 8a + 4 = a2 + 2a + 1 = 2.
Таким образом элементы 1, 2, a = 1 и 2a + 2 являются квадратичными вычетами, а остальные элементы a, a + 2, 2a и 2a + 1- квадратичными невычетами.
Упражнения.
Найдите квадратичные вычеты и квадратичные невычеты в полях Галуа:
F(33), F(52).
Пусть теперь h = 1. Рассмотрим поле F(p) с элементами 0,1,2,...,p-1. Если исключить элемент 0, то для остальных элементов поля можно также определить, являются они квадратичными вычетами или невычетами. Ясно, что элемент a, 1 £ a £ p-1 будет квадратичным вычетом по модулю p тогда и только тогда, когда выполняется сравнение:
x2 º a mod p, где x - также является элементом поля F(p).
Рассмотрим пример. Пусть p = 7. Тогда
12 º 1 mod 7; 22 º 4 mod 7; 32 º 2 mod 7; 42 º 2 mod 7; 52 º 4 mod 7; 62 º 1 mod 7. Таким образом, квадратичными вычетами являются числа: 1,2,4. А квадратичными невычетами числа: 3,5,6.
Если a - квадратичный вычет по модулю p, полученный возведением в квадрат числа x, то это же число будет получено возведением в квадрат числа
-x º p - x mod p. Поэтому все квадратичные вычеты по модулю p можно найти возведением в квадрат чисел 1,2,3,...,(p-1)/2. Таким образом для любого p имеется ровно (p-1)/2 квадратичных вычетов и столько же квадратичных невычетов.
Упражнения.
a) Найдите квадратичные вычеты и квадратичные невычеты по простым модулям p = 11,13,17,19,23.
Символ Лежандра для целого a и простого p > 2 определяется следующим образом:
0, если p делит a.
=
í
1, если a
- квадратичный вычет по модулю p
-1, если a - квадратичный невычет по модулю p.
Понятно, что a можно заменить любым целым числом, сравнимым с a
по модулю p, при этом символ Лежандра не изменится. Вычисление символа Лежандра удобно производить по формуле:
=
a(p-1)/2
mod
p.
Действительно,
=
82
º
-1 mod
5.
Упражнения.
Вычислите следующие символы Лежандра:
,
,
,
,
,
.
Символ Якоби является обобщением символа Лежандра на случай произвольного нечетного модуля n > 2. Пусть число n представлено в канонической форме: n = p1s1p2s2...pksk. Тогда символ Якоби определяется как произведение символов Лежандра:
= s1 s2... sk
Например, пусть n = 363825=335272111. Найдем символ Якоби для числа a = 863. Сначала найдем наименьший положительный вычет числа 863 по модулям p = 3,5,7 и 11.
863 º 2 mod 3; 863 º 3 mod 5; 863 º 2 mod 7; 863 º 5 mod 11.
Тогда символ Якоби можно вычислить следующим образом:
=
3
2
2
1
=
3
2
2
1
=
(21º -1 mod 3)3 (32 º -1 mod 5)2 (23 º 1 mod 7)2 (55 º 1 mod 11)1 =
(-1)(1)(1)(1) = -1. Т.е. число 863 является квадратичным невычетом по модулю 363825.
Для произведения чисел выполняется свойство мультипликативности:
=
Тогда
=
=
.
Для некоторых значений a символ Якоби вычисляется без перевода n в каноническую форму следующим образом:
=
1;
=
(-1)(n-1)/2;
=
(-1) (n2-1)/8. Квадрат!
При вычислении символа Якоби основное сведение выполняется на основе закона взаимности:
=
(-1) (m-1)(n-1)/4
,
где m
и n
- нечетные числа большие 2.
Если не выполняется сравнение m º n º 3 mod 4, то
= .
Если же это сравнение выполняется, то
= - .
Пример.
Определить, является ли число a = 369 квадратичным вычетом или квадратичным невычетом по модулю 247 ?
369 º 1 mod 4, поэтому можно вычислить:
=
=
=
=
=
=
-1.
Т.е. 369 является квадратичным невычетом по модулю 247.
Упражнения.
Определить символы Якоби в следующих случаях:
b)
c)
.
Для криптографических систем представляет интерес случай, когда n является произведением двух простых чисел p и q, т.е. n = pq. Требуется определить, является ли некоторое число a квадратичным вычетом или квадратичным невычетом по модулю n? Т.е. существует ли такое x, что выполняется сравнение:
x2 º a mod n.
Некоторое число a будет квадратичным вычетом по модулю n = pq если и только если оно будет квадратичным вычетом как по модулю p, так и по модулю q. Если рассмотреть множество чисел: 1,2,3,..., n-1 и исключить из него все числа, кратные p и (или) q, то в точности половина из оставшихся чисел будет удовлетворять условию: = 1, а вторая половина будет удовлетворять условию: = -1. Более того, из чисел a, удовлетворяющих условию = 1 половина будет квадратичными вычетами, а именно такие числа a, для которых = = 1. Другая половина, для которых = = - 1, будет квадратичными невычетами.
Пример. Пусть p = 3, q = 5, тогда n = 15. Квадратичными вычетами по модулю 15 будут числа a = 1 и 4. Квадратичными невычетами будут числа a = 2 и 8.
Если известно, что некоторое a является квадратичным вычетом по модулю n = pq, но простые числа p и q неизвестны, то решение сравнения (нахождение x из сравнения): x2 º a mod n является важной, но очень сложной задачей в криптографии с открытым ключом.