
- •Методы защиты информации в компьютерных технологиях Москва 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-кодирования в коды Боуза-Чодхури-Хоквингема (бчх).
4.2. Алгоритм электронной цифровой подписи Эль Гамаля (egsa). Egsa (el Gamal Signature Algorithm).
Рассматриваемый алгоритм электронной цифровой подписи EGSA был разработан американским ученым арабского происхождения Тахиром Эль Гамалем (Taher El Gamal) в 1985 году. Надежность и устойчивость этого метода аутентификации электронных сообщений основана на методе одностороннего преобразования дискретных логарифмов в конечном поле.
Метод дискретного логарифмирования в конечном поле обладает высокой степенью сложности вычисления обратных величин без знания определенных секретных параметров. Этот метод получил наибольшее распространение в современных асимметричных криптографических системах, используемых во многих сферах жизнедеятельности и прежде всего в различного рода банковских платежных системах.
Алгоритм Эль Гамаля лишен определенных слабостей алгоритма RSA, связанными с возможностью при определенных условиях модифицировать подписанные сообщения без знания закрытого (секретного) ключа абонента-отправителя.
Процесс алгоритмизации Эль Гамаля определяется следующим образом:
1. Случайным образом выбирается большое простое число Р и большое число G (в практической криптографии эти числа составляют Р ≈ 21024 ≈ 10308; G ≈ 2512 ≈ 10154). Условием ограничения является Р > G. Процесс реализации алгоритма дискретного логарифмирования в конечном поле для упрощения и детального рассмотрения его отдельных операций целесообразно рассмотреть на меньших числах в рамках разработанной автором обучающей системы по алгоритмизации процессов аутентификации электронных сообщений на основе цифровых подписей.
Для рассматриваемого примера принимается Р = 883; G = 784.
2. Задается случайным образом секретное число, которое принимается в качестве закрытого ключа системы индивидуальной абонентской аутентификации при условии, что это число должно быть меньше (Р-1), (х < Р-1). Для примера х = 612. Следовательно, закрытым (секретным) ключом абонента-отправителя будет КЗА = 612.
3. После определения закрытого ключа абонент-отправитель вычисляет открытый ключ КОА.
КОА
=
mod
P
При заданных числовых значениях Р = 883; G = 784; КЗА = 612 значение открытого ключа абонента-отправителя определится как:
КОА = mod P = 784612 mod 883
Для вычисления значения открытого ключа КОА необходимо воспользоваться методом возведения в степень по модулю (п.1.3)
КОА = 784612 mod 883 = 324 mod 883 → 324.
Иллюстрация алгоритма возведения в степень по модулю для вычисления открытого ключа представлена на рис. 9.
Рис. 9. Алгоритм возведения в степень по модулю при вычислении открытого ключа КОА.
Таким образом, на стороне абонента-отправителя (абонента «А») подписываемых электронных сообщений сформированы открытый и закрытый ключи и параметры системы аутентификации электронных сообщений.
Открытыми параметрами системы аутентификации являются:
Р – модуль системы (Р = 883), большое простое число;
G – большое целое число (G<P, G=784);
КОА – открытый ключ абонента-отправителя подписанных электронных сообщений (КОА=324).
Закрытым (секретным) параметром системы аутентификации электронных сообщений является закрытый (секретный) ключ абонента-отправителя КЗА (КЗА=612).
Абонент-отправитель передает открытые параметры P; G; КОА всем абонентам корпоративной информационной системы для установления подлинности передаваемых им электронных сообщений.
Закрытый ключ КЗА служит для формирования ЭЦП абонента-отправителя и никогда никому не передается и хранится у абонента-отправителя под секретом. Таким образом, система аутентификации электронных сообщений сформирована.
Действия абонента-отправителя по формированию ЭЦП исходного сообщения «М».
4. Абонент-отправитель формирует исходное сообщение «М» (в качестве примера выбрано слово «Криптон») и вычисляет значение функции хеширования h(M)B. В рассматриваемом примере h(M)B = 52 48 52 48 50 42 46 46 40 56 48 48 50 54 46 42 52 56 56 52 50 50 50 50 44 52 48 48 54 50 46 42.
5. Для того, чтобы сформировать цифровую подпись сообщения «М» абонент-отправитель случайным образом задает целое число «k» с учетом следующих ограничений:
1 < k < Р-1 и НОД (k; (Р-1)) = 1,
т.е. выбранное случайное целое число «k» и значение (Р-1) должны быть взаимно простыми числами. Для примера «k» выбирается равным 547 k=547; число «k» также никому не передается и является постоянным только лишь для подписываемого сообщения «М».
6. Для формирования электронной цифровой подписи производятся следующие вычисления:
6.1. Вычисляется число a = Gk mod P, которое постоянно для всех элементов криптограммы функции хеширования h(M)B исходного сообщения «М». Например, для слова «Криптон»:
a = Gк mod P = 784547 mod 883 = 141 mod 883 → 141.
6.2. Вычисляются с помощью закрытого (секретного) ключа абонента-отправителя КЗА элементы криптограммы функции хеширования h(M)B исходного сообщения «М», h(M)B → Сi → bi
Это вычисление выполняется на основе расширенного алгоритма Евклида для решения сложных сравнений вида a * X ≡ b mod P, которое отображается при вычислении элементов криптограммы хэш-функции h(M)B в уравнение вида:
mi = (KOA * a + k * bi) mod (P-1),
где: mi – элементы значения числового выражения функции хеширования h(M)B исходного сообщения «М»;
k – случайное целое число, выбранное для формирования ЭЦП исходного сообщения;
а – постоянное число для множества элементов криптограммы Ch(M) функции хеширования h(M)B исходного сообщения «М»;
bi – множество элементов) функции хеширования h(M)B исходного сообщения «М».
В полученном уравнении определяемыми неизвестными параметрами являются значения элементов bi функции хеширования h(M)B исходного сообщения «М».
Ci
= bi
=
mod
(P-1)
Для криптограммы хэш-значения сообщения «М» элементы криптограммы определяются как:
Ci
= bi
=
mod
882
547 * bi = (mi – 86292) mod 882
Рассмотрим решение этого уравнения относительно bi с использованием .расширенного алгоритма Евклида для значения первого элемента хэш-функции сообщения «Криптон» m1 = 52:
547 * b1 ≡ (m1 – 86292) mod 882; 547* b1 ≡ (52 – 86292) mod 882;
547 * b1 ≡ - 86240 mod 882; 547 * b1≡- 686 mod 882; 547 * b1 ≡ 196 mod 882;
Откуда: b1 = 196 * 547-1 mod 882, так как Р – простое число и функция Эйлера известна, то b1 определяется как:
b1 = 196 * 547-1 mod 882 = 196 * 547φ(Р) – 1 mod 882 = 196 * 547881 mod 882 =
= 196*337 mod 882 = 66052 mod 882 = 784 mod 882 → 784.
Значения остальных элементов криптограммы хэш-функции b2 … b32 определяются аналогичным образом и соответственно равны:
bi → {b1, b2, … b32} → {784, 318, 784, 318, 110, 60, 526, 526, 268, 368, 318, 318, 110, 576, 526, 60, 784, 368, 368, 784, 110, 110, 110, 110, 734, 784, 318, 318, 576, 110, 526, 60.
Множество чисел, состоящее из компонентов «а» и «bi» представляют собой электронную цифровую подпись сообщения «М» («Криптон») в виде криптограммы:
ЭЦП → Ch(M) → {a, bi} → {141_784 141_318 141_784 141_318 141_110 141_60 141_526 141_526 141_268 141_368 141_318 141_318 141_110 141_576 141_526 141_60 141_784 141_368 141_368 141_784 141_110 141_110 141_110 141_110 141_734 141_784 141_318 141_318 141_576 141_110 141_526 141_60}.
Сообщение «М» и криптограмма хэш-функции Ch(M) передаются абоненту-получателю подписанного ЭЦП сообщения «М».
Действия абонента-получателя по аутентификации принятого электронного сообщения «М».
После приема подписанного сообщения «М» абонент-получатель должен проверить соответствует ли подпись ЭЦП → Ch(M) → {a, bi} принятому сообщению «М», т.е. убедится в достоверности принятого сообщения. Для чего абонент-получатель выполняет следующие операции:
7. Абонент-получатель производит вычисления значения чисел еще одного параметра аутентификации:
Ai
= (KOAa
*
)
mod
P
Где: КОА – открытый ключ абонента-отправителя, служащий для проверки ЭЦП и полученный от абонента отправителя. В рассматриваемо примере КОА = 324, следовательно, значение Аi для каждого элемента криптограммы хэш-функции принятого сообщения (ЭЦП) будет иметь вид:
Ai
= (324141
*
)
mod
883.
Для первого элемента криптограммы процесс дешифрования определится как:
А1 = (324141 * 141784) mod 883 = (734 * 462) mod 883 = 339108 mod 883 = 36.
Остальные значения параметра Ai определяются аналогичным образом. В совокупности множества значений Ai для принятой ЭЦП определяются как:
Ai → {36 400 36 400 763 327 727 727 676 639 400 400 763 519 727 327 36 639 639 36 763 763 763 763 520 36 400 400 519 763 727 327 }.
8. Затем абонент-получатель вычисляет числовое значение функции хеширования принятого сообщения «М»:
h(M)В → { 52 48 52 48 50 42 46 46 40 56 48 48 50 54 46 42 52 56 56 52 50 50 50 50 44 52 48 48 54 50 46 42}.
9. После вычисления отдельных значений элементов функции хеширования h(M)В абонент-получатель вычисляет значения элементов Ai’ для значений вычисленных элементов функции хеширования принятого электронного сообщения в соответствии со следующей зависимостью:
Ai’
=
mod
P
Где: G – значение открытого параметра, полученного от абонента-отправителя (см. п.1 процесса алгоритмизации Эль Гамаля). В рассматриваемом примере G = 784. Таким образом, для рассматриваемого примера:
Ai’
=
mod
P
=
mod
883
Например, для вычисления значения A1’ = 78452 mod 883 = 182805760 mod 883 = 36 mod 883 → 36.
Остальные значения Ai’ = mod P для элементов функции хеширования от 2 до 32 определяются аналогичным образом. В результате множество вычисленных элементов Ai’ = mod P определяется как:
Ai’ = mod P = mod 883 → {A1’ A2’ A3’ … A32’} → {36 400 36 400 763 327 727 727 676 639 400 400 763 519 727 327 36 639 639 36 763 763 763 763 520 36 400 400 519 763 727 327 }.
10. После выполненных вычислений элементов множеств Ai и Ai’ производится их поэлементное сравнение и если все значения элементов указанных кортежей совпадают, то принятое подписанное сообщение признается достоверным. В противном случае устанавливается факт модификации принятого сообщения, и оно отвергается.
Для рассматриваемого примера сравниваются элементы Ai и Ai’
Ai → {36 400 36 400 763 327 727 727 676 639 400 400 763 519 727 327 36 639 639 36 763 763 763 763 520 36 400 400 519 763 727 327 }.
Ai’ → {36 400 36 400 763 327 727 727 676 639 400 400 763 519 727 327 36 639 639 36 763 763 763 763 520 36 400 400 519 763 727 327 }.
Как видно из представленных числовых кортежей эти множества полностью совпадают, что позволяет сделать вывод, что принятое сообщение достоверно. Т.е. проведена аутентификации принятого сообщения с использованием ЭЦП, сформированной на основе алгоритма Эль Гамаля - алгоритма дискретного логарифмирования в конечном поле.