
- •Методы защиты информации в компьютерных технологиях Москва 2011
- •1. Основные направления криптологии.
- •2. Методы криптографических преобразований с открытым ключом.
- •2.1. Алгоритм нахождения числа по модулю.
- •2.2. Вычисление обратных величин в модулярной алгебре.
- •2.3. Алгоритм операции возведения числа в степень по модулю.
- •2.4. Определение односторонней функции.
- •3. Алгоритмы формирования и функционирования криптографических систем с открытым ключом.
- •3.1. Алгоритм криптографической системы rsa (Райвест-Шамир-Адлеман).
- •3.2. Алгоритм криптографической системы на основе вычисления дискретных логарифмов в конечном поле – алгоритм Эль Гамаля.
- •3.3. Алгоритм функционирования криптографической системы на основе дискретного логарифмирования в метрике эллиптических кривых.
- •3.3.1. Основные операции криптографических преобразований в метрике эллиптических кривых.
- •3.4. Преобразование Диффи-Хеллмана в системах криптографии с открытым ключом.
- •XcxпШифратор
- •3.5. Формирование криптограмм открытых сообщений и их дешифрование с использованием методов дискретного логарифмирования в метрике эллиптических кривых.
- •4.1. Вычисление множества точек удвоения заданной эллиптической кривой.
- •4.1.3. Вычисление координат точки [8]g, как результат удвоения точки [4]g:
- •4.1.4. Вычисление координат точки [16]g , как результат удвоения точки [8]g:
- •4.1.5. Вычисление координат точки [32]g , как результат удвоения точки [16]g:
- •4.1.6. Вычисление координат точки [64]g , как результат удвоения точки [32]g:
- •4.1.7. Вычисление координат точки [128]g , как результат удвоения точки [64]g:
- •4.2. Вычисление композиций точек удвоения [4]g; [8]g; [32]g; [64]g; [128]g заданной эллиптической кривой.
- •5. Алгоритм формирования открытого ключа абонента в.
- •5.1. Вычисление множеств точек удвоения заданной эллиптической кривой.
- •5.1.3. Вычисление точки [8]g, как результат удвоения точки [4]g:
- •5.1.4. Вычисление точки [16]g , как результат удвоения точки [8]g:
- •5.1.5. Вычисление точки [32]g , как результат удвоения точки [16]g:
- •5.1.6. Вычисление точки [64]g , как результат удвоения точки [32]g:
- •5.1.7. Вычисление точки [128]g , как результат удвоения точки [64]g:
- •5.2. Вычисление композиций различных точек удвоения заданной эллиптической кривой ( [2]g; [4]g; [16]g; [32]g; [128]g ).
- •6. Вычисление парного сеансового ключа шифрования-дешифрования для абонентов а и в на основе преобразований Диффи-Хеллмана.
- •6.1. Действие абонента в.
- •6.1.1. Вычисление точки [2]коа , как результат удвоения точки коа:
- •6.2. Вычисление композиций различных точек удвоения заданной эллиптической кривой: [2]коа; [4] коа; [16] коа; [32] коа; [128]коа).
- •7. Дешифрование абонентом а криптограммы, полученной от абонента в с использованием парного секретного симметричного ключа, сформированного по методу Диффи-Хеллмана в метрике эллиптических кривых.
- •7.1. Вычисление удвоений множества точек заданной эллиптической кривой на стороне абонента «а» по значению точки ков, характеризующей открытый ключ абонента «в».
- •7.1.1. Вычисление значения удвоения точки ков – [2]ков:
- •7.2. Вычисление композиций различных точек удвоения заданной эллиптической кривой: [4]ков; [8]ков; [32]ков; [64]коа; [128]ков).
- •7. 3. Дешифрование абонентом «а» криптограммы с, полученной от абонента «в».
- •4. Алгоритмы электронной цифровой подписи.
- •4.1. Алгоритм электронной цифровой подписи rsa (Райвест-Шамир-Адлеман).
- •4.2. Алгоритм электронной цифровой подписи Эль Гамаля (egsa). Egsa (el Gamal Signature Algorithm).
- •4. 3. Алгоритм электронной цифровой подписи dsa (Digital Signature Algorithm).
- •4.4. Алгоритм электронной цифровой подписи гост р34.10-94. (Отечественный стандарт электронной цифровой подписи).
- •4.5. Алгоритм электронной цифровой подписи гост р34.10-2001. (Отечественный стандарт электронной цифровой подписи).
- •3.1. Вычисление множества точек удвоения заданной эллиптической кривой.
- •3.1.3. Вычисление координат точки [8]g, как результат удвоения точки [4]g:
- •3.1.4. Вычисление координат точки [16]g , как результат удвоения точки [8]g:
- •3.1.5. Вычисление координат точки [32]g , как результат удвоения точки [16]g:
- •3.1.6. Вычисление точки [64]g , как результат удвоения точки [32]g:
- •3.1.7. Вычисление точки [128]g , как результат удвоения точки [64]g:
- •3.2. Вычисление композиций точек удвоения [4]g; [8]g; [32]g; [64]g; [128]g заданной эллиптической кривой.
- •4. Действие абонента-отправителя (абонента «а») по формированию электронной цифровой подписи электронного сообщения «м».
- •4.3.2. Вычисление композиций точек удвоения [256]g; [64]g; [16]g; [8]g; [2]g; g заданной эллиптической кривой.
- •4.3.2.3. Вычисление композиции точек [336]g и [8]g;
- •4.3.2.4. Вычисление композиции точек [344]g и [2]g;
- •4.3.2.5. Вычисление композиции точек [346]g и g;
- •4.5. Вычисление параметра электронной цифровой подписи Si .
- •5. Действия абонента «в» по приему и аутентификации подписанного электронного сообщения «м».
- •5.5.2. Вычисление композиции точек [32]g и [8]g;
- •5.5.3. Вычисление композиции точек [40]g и [4]g;
- •5.5.5. Вычисление композиций точек удвоения
- •5.5.5.1. Вычисление композиции точек [128]коа и [64]коа;
- •5.5.5.2. Вычисление композиции точек [192]коа и [32]коа;
- •5.5.5.3. Вычисление композиции точек [224]коа и [2]коа;
- •5.5.5.4. Вычисление композиции точек [u1]g и [u2]коа;
- •5.5.5.5. Сравниваются вычисленные значения параметра «r», принятого в составе эцп от абонента-отправителя и значения абсциссы точки «q» → «xq», вычисленное абонентом получателем.
- •6. Элементы симметричных криптографических преобразований.
- •6.2. Табличное шифрование методом перестановки по ключевому слову или фразе, задающими перестановку.
- •6.3. Табличное шифрование методом двойной перестановки.
- •6.5. Шифры сложной замены.
- •7. Корректирующие коды.
- •6. 1. Блочные коды.
- •6.1.1. Систематические коды.
- •6.1.2. Корректирующие коды с обнаружением искажений, применяемые в системах передачи и обработки информации.
- •7. Windows-кодирование.
- •7.1. Преобразование Windows-кодирования - коды Грея.
- •7.2. Преобразование Windows-кодирования в систематические коды.
- •7.3. Преобразование Windows-кодирования в коды Хэмминга.
- •7.5. Преобразование Windows-кодирования в коды Боуза-Чодхури-Хоквингема (бчх).
3.3.1. Основные операции криптографических преобразований в метрике эллиптических кривых.
На первом шаге алгоритмических процессов производится выбор генераторной точки G в заданном пространстве, а затем необходимо выполнить операции удвоения, учетверения и т.д. координат генераторной точки, т.е. получить множество точек: G; [2]G; [4]G; [8]G … [2n]G.
На следующем шаге определяются композиции различных точек эллиптической кривой, например:
[3]G = G + [2]G; [5]G = G + [4]G;
[3]G = (x1; y1) + (x2; y2) [5]G = (x1; y1) + (x4; y4)
и так далее.
Эти операции над множествами точек заданной эллиптической кривой необходимы для вычисления любой точки, принадлежащей этой кривой, т.к. любой представитель этого множества может быть отображен как результат операций удвоения, учетверения и т.д. значений генераторной точки G и результатов композиций получаемых значений.
В криптографических преобразованиях эти функциональные операции необходимы для вычисления открытых ключей шифрования, выбора значений закрытых (секретных) ключей дешифрования при условии случайности такой выборки, непосредственного выполнения операций шифрования-дешифрования и аутентификации открытых сообщений с использованием множества точек, принадлежащих задаваемым эллиптическим кривым.
При определении множества точек, принадлежащих заданной эллиптической кривой для выполнения операций вычисления ключей шифрования-дешифрования, формирования криптограмм и их расшифровки, а также выполнения операций аутентификации электронных сообщений необходимо рассмотреть процессы вычисления операций удвоения генераторной точки G и далее получаемых точек, а также операций вычисления композиций различных точек эллиптической кривой. Изначально рассмотрим процесс вычисления операций удвоения точек эллиптической кривой.
Пусть принята генераторная точка G на заданной эллиптической кривой Z : Y2 = (X3 + aX + b) mod P, для примера рассмотрим эллиптическую кривую Z : Y2 = (X3 + 8X + 5) mod 293. Случайным образом задается значение генераторной точки, принадлежащей этой кривой, например, принимается значение хG = 18. Значение генераторной точки, задаваемое случайным образом, имеет одно весьма важное ограничение – необходимо и достаточно, чтобы при заданном значении абсциссы генераторной точки (хG) существовало целое значение ординаты (yG) этой точки, т.е. условие существования целочисленного значения квадратного корня, извлекаемого из заданного уравнения эллиптической кривой:
Y
G
=
=
=
.
Найдены сразу две точки эллиптической кривой G = (18; 11) и G = (18; -11) = (18; 282). Примем значение генераторной точки G = (18; 11).
Для определения множества точек, принадлежащих заданной эллиптической кривой вычисляется значение удвоения генераторной точки G, например: точка G2 → [2]G. Эта запись интерпретируется следующим образом – определение значения точки G2 влечет за собой операцию удвоения генераторной точки G. Для определения координат точки G2 необходимо воспользоваться следующими соотношениями:
xn = k2 – xn-2 – xn-1 числовое значение абсциссы новой вычисляемой точки;
yn = k (xn-1 – xn) – yn-1 числовое значение ординаты новой вычисляемой точки;
к – числовое значение углового коэффициента касательной, проведенной в точке удвоения ( на первом шаге вычислений касательная проведенная в генераторной точке).
Для вычисления углового коэффициента касательной необходимо продифференцировать обе части заданного уравнения эллиптической кривой ZР (а, в) : Y2 = (X3 + aX + b) mod P
(Y2)'
= (X3
+ aX + b)' ; 2YY' = 3X2
+ a, откуда
Y' = k =
.
В
частном случае k
=
, т.е.
угловой коэффициент касательной
определяется через параметр эллиптической
кривой «а» и координаты рассматриваемой
точки – точки удвоения. Так, например
для уравнения:
Z : Y2 = (X3 + 8X + 5) mod 293 угловой коэффициент касательной в генераторной точке (точке удвоения) определяется как:
k
=
mod
293 =
mod
293 =
mod
293 =
= 980 * 22-1 mod 293.
Для вычисления значения 22-1 mod 293 воспользуемся следующим соотношением при условии, что Р = 293 простое число, то в соответствии с малой теоремой Ферма «а-1 mod P = a φ(P) – 1 mod P», где «22-1 mod 293» – функция Эйлера, которая при Р – простое число определяется как:
φ(Р) = Р-1.
Следовательно, «22-1 mod 293 = 22291 mod 293». Для выполнения операции возведения числа в степень по модулю необходимо применить методику раздела 1.3. В результате вычислений получаем «kG = 22291 mod 293 = 40 mod 293 → 40, 980 * 40 mod 293 = 39200 mod 293 = 231 mod 293 → 231».
Для определения координат точки удвоения генераторной точки необходимо выполнить следующие вычисления при условии, что при удвоении генераторной точки эллиптической кривой числовые значения абсцисс точки удвоения (xn-1; xn-2) равны между собой. Следовательно,
x[2]G = K2 – 2xG; y[2]G = K * (xG - x[2]G) - yG
Координаты точки удвоения, рассматриваемой в качестве примера, определятся как:
- при выбранной генераторной точки G = (xG; yG) = (18, 11) и значении углового коэффициента касательной kG = 231;
- числовое значение абсциссы точки удвоения
x[2]G = (kG2 - 2 xG) mod 293 = (2312 – 2 * 18) mod 293 = 292 mod 293
→ 292.
Y[2]G = K * (xG - x[2]G) - yG = 231 * (18 – 292) – 11 mod 293 =
= 276 mod 293 → 276.
Таким образом, результат удвоения генераторной точки G = (18; 11) определится как [2]G = (x[2]G; Y[2]G) = (292; 276).
Следующей операцией при вычислении множества точек, принадлежащих заданной эллиптической кривой, является операция вычисления композиций на множествах. Для примера рассмотрим вычисление точки [3]G как результат композиции точек G и [2]G; [3]G = G + [2]G.
Для определения координат точки [3]G как результат композиции точек эллиптической кривой G и [2]G изначально вычисляется значение углового коэффициента прямой, проходящей через точки G и [2]G:
k
= (y[2]G
- yG)
(x[2]G
- xG)
mod P = (276 – 11)
(292 – 18) mod 293 =
=265
274 mod 293 = 265 * 274-1
mod
293 = 265 * 274φ(p)
– 1
mod
293 =
= 265 * 274291 mod 293 = 265 * 185 mod 293 = 49025 mod 293 = 94 mod 293 → 94.
Затем определяются координаты точки [3]G = (x[3]G; y[3]G):
x[3]G = k2 – xG – x[2]G
y[3]G = k * (xG – x[3]G) - yG
Для рассматриваемой эллиптической кривой
Z : Y2 = (X3 + 8X + 5) mod 293 эти координаты определятся как:
x[3]G = k2 – xG – x[2]G = (942 – 18 – 292) mod 293 = 8526 mod 293 =
= 29 mod 293 → 29.
y[3]G = k * (xG – x[3]G) - yG = 94 (18 – 29) – 11 mod 293 =
= - 1045 mod 293 = - 852 mod 293 = - 559 mod 293 = -166 mod 293 =
= 127 mod 293 → 127.
Таким образом, результат вычисления композиции двух точек G и [2]G определяется как [3]G = (x[3]G; y[3]G) = (29; 127).
После выполнения операции вычисления множества точек дополнительно проверяется условие их принадлежности выбранной эллиптической кривой. Так например, в рассматриваемой задаче при определении координат генераторной точки (раздел 3.3.1) процесс подтверждения ее принадлежности к заданной эллиптической кривой выполняется следующим образом:
1. Заданное уравнение эллиптической кривой определяется как:
ZP(a; b) = Z293(8; 5) = X3 + 8X + 5 mod 293.
2. При значениях координат генераторной точки G = (18; 11), yG =11;
xG =18; a =8; b = 5; P = 293 получаем:
yG2 = (xG 3 + axG + b) mod P;
112 = (183 + 8* 18 + 5) mod 293 ;
121 mod 293 = (5832 + 144 + 5) mod 293;
121 mod 293 = 5981 mod 293;
121 mod 293 = 121 mod 293.
Следовательно, генераторная точка G принадлежит заданной эллиптической кривой, т.к. левые и правые части уравнения эллиптической кривой при заданных параметрах и вычисленных значениях координат (yG; xG) равны между собой.
Далее были определены координаты удвоения генераторной точки [2]G = (x[2]G; y[2]G) = (292; 276) и координаты композиции точек G и [2]G:
[3]G = G + [2]G = (x[3]G; y[3]G) = (29; 127).
Проверяются условия принадлежности точек [2]G и [3]G заданной эллиптической кривой.
Для точки [2]G = (292; 276):
2762 mod 293 = (2923 + 8 * 292 + 5) mod 293;
76176 mod 293 = (24897088 + 2336 +5) mod 293;
289 mod 293 = 24899429 mod 293;
289 mod 293 = 289 mod 293 – достоверно.
Для точки [3]G = (29; 127):
1272 mod 293 = (293 + 8 * 29 + 5) mod 293;
16129 mod 293 = (24389 + 232 + 5) mod 293;
14 mod 293 = 24626 mod 293;
14 mod 293 = 14 mod 293 – достоверно.
Результаты проверки достоверны, следовательно полученные точки G; [2]G; [3]G принадлежат заданной эллиптической кривой.
В практической криптографии с использованием методов преобразований на эллиптических кривых для каждой полученной точки [n]G производится проверка на достоверность факта ее принадлежности заданной эллиптической кривой. Это условие необходимо для построения операций шифрования-дешифрования и аутентификации открытых сообщений, т.к. в противном случае функционирование системы исключается.