
- •Методы защиты информации в компьютерных технологиях Москва 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-кодирования в коды Боуза-Чодхури-Хоквингема (бчх).
2.3. Алгоритм операции возведения числа в степень по модулю.
Этот алгоритм является одной из важнейших операций в криптографических преобразованиях с открытым ключом. Для простоты рассуждений рассмотрим этот алгоритм на численном примере.
Например, требуется вычислить y = ax mod P при числовом отображении y = 6181 mod 77.
Во всех вычислениях степенной функции по модулю на первом шаге вводится параметр t = log 2 X – целая часть log 2 X. Символы … означают, выбор целой части включенного выражения.
Если y = ax mod P, где: а = 6; х = 181; Р = 77, то y = 6181 mod 77.
1. На первом шаге алгоритма определяется значение целой части логарифма по модулю 2 показателя степени х ( в примере х = 181) t = log 2 181;
2t ≤ х = 2t ≤ 181, откуда t = 7, следовательно, 27 ≤ 181; 128 ≤ 181.
2. На втором шаге алгоритма вычисляются числа ряда Si = an, где n = 2t . В рассматриваемом числовом примере t = 7, следовательно, последний член ряда определится как S7 = a128. Таким образом, искомый числовой ряд может быть представлен следующим образом:
Si → а а2 а4 а8 а16 а32 а64 а128, т.к. а = 6; Р = 77, то степенные значения ряда вычисляются по модулю Р = 77
а а2 а4 а8 а16 а32 а64 а128
6 36 64 15 71 36 64 15 при а =6 по mod Р (Р = 77)
После вычисления значений степенного ряда необходимо показатель степени выражения y = ax mod P отобразить в двоичной форме
Х = 181 → (1 0 1 1 0 1 0 1)2 ; 1 0 1 1 0 1 0 1 → 27+25+24+22+20 = 128+32+16+4+1 = 181.
4. Составляется следующая таблица
а128 |
а64 |
а32 |
а16 |
а8 |
а4 |
а2 |
а0 |
Искомый ряд |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
Двоичное представление показателя степени «Х» |
15 |
64 |
36 |
71 |
15 |
64 |
36 |
6 |
Численные значения ряда Si |
В соответствии со значением отображения показателя степени «х» в двоичной форме вычисляется произведение:
П = (а128 * а32 * а16 * а4 * а0) mod P = (15 * 36 * 71 * 64 * 6) mod 77 =
= (14722560) mod 77 = 6 mod 77 ≡ 6.
Следовательно, 6181mod 77 = 6 mod 77 ≡ 6.
На рис.2 представлен фрагмент вычисления степенной функции по модули в рамках разработанной автором автоматизированной обучающей системы.
Рис.2. Пример решения задачи возведения числа по модулю.
2.4. Определение односторонней функции.
Важным элементом в системах криптографической защиты и аутентификации электронных сообщений является применение односторонних функций как при вычислении парных ключей шифрования-дешифрования (открытого ключа КО и закрытого (секретного) ключа КЗ) , так и при формировании электронной цифровой подписи.
В криптографических алгоритмах основными однонаправленными функциями являются:
- функция целочисленного умножения или как ее определяют функция факторизации (разложения на простые множители) больших чисел;
- модульная экспонента с фиксированным основанием и модулем или как ее обратное отображение - функция задачи дискретного логарифмирования.
Однако, в любом представлении однонаправленная функция определяется как:
- для любых произвольных множеств X и Y определено, что f : X → Y, т.е. существует функция однозначного преобразования элементов множества X во множество Y, устанавливается однозначное соответствие между элементами множества X и Y. Запись f : X → Y читается как «каждому элементу множества X ставится в однозначное соответствие элемент множества Y» или «функциональное преобразование (f) множества X (:) влечет за собой (→) множество Y.
Функция f : X → Y является однонаправленной, если для всех элементов xi множества X (xi є X) функция yi = f(xi) является легко вычисляемой для любого элемента yi, принадлежащего множеству Y, т.е. yiєY. Решение же обратной задачи при xi є X и yi є Y для однонаправленных функций должно быть вычислительно неразрешимой задачей, т.е. если yi = f (xi), то xi ≠ f (yi). В практической криптографии однонаправленным функциональным преобразованием для криптографической системы защиты и аутентификации электронных сообщений, построенным по алгоритму RSA (Райвест-Шамир-Адлеман) является вычисление произведения двух больших простых чисел (порядка 100 десятичных знаков). Прямое решение задачи, т.е. нахождение значения их произведения для современных вычислительных комплексов является достаточно простой задачей, т. е.
N = P * Q . Однако решение обратной задачи нахождения чисел P и Q заданного большого числа N является неразрешимой задачей (если разрядность чисел P и Q одинакова и каждое число содержит не менее 100 десятичных знаков).
Для криптографических систем с алгоритмом функционирования Эль Гамаля – модульная экспонента с фиксированным основанием и модулем – Y = aX mod P, где: Р – большое простое число; а – целое число, причем а < Р; х – случайное целое число, причем х < Р.
Нахождение значения yi = aX mod P является достаточно простой задачей. Нахождение же обратного значения xi = loga yi mod P, при значениях «а» и «Р» порядка 150 десятичных знаков является относительно неразрешимой задачей. Эту задачу называют задача дискретного логарифмирования, решение которой за приемлемое время невозможно, в соответствии с чем модульная экспонента относится к классу однонаправленных функций, что и определило ее широкое применение в криптографических системах защиты и аутентификации электронных сообщений в компьютерных технологиях.