Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основные математические принципы в реализации некоторых алгоритмов информационной безопасности. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
1019 7
в) Вычислим
126 126 (mod 23)
126 11 6 11 9 11(mod 23)
1019
4.2.
126 21 9 11 21 9 11 ( 2) 9 1 9(mod 23)x 
1
5. Обратная замена
773
.xxd
1
9 6 54(mod138)x
 .
.
.
.
Таким образом, искомый остаток равен 54.
3) Вычислить остаток от деления 2
5 432 675
на 13.
Проверим, что (2,13) = 1. Значит, применим алгоритм № 1.
1. Найдем φ(13) = 13 − 1 = 12.
2. Разделим 5432675 на 12. Результат представим в виде:
5 432 675 = 12 452 722 + 11.
5 432 675 11
3. Вычислим
22(mod13)
.
Задача свелась к отысканию остатка от деления 211 на 13.
4
2 16 3(mod13)
54
222326(mod13)
11 5 2
2 (2)2662 67(mod13).
,
.
Таким образом, искомый остаток равен 7.
Задания для самостоятельного решения
1. Найти функцию Эйлера для чисел: 1) 375; 2) 720; 3) 957; 4) 988;
5) 990; 6) 1200; 7) 1440; 8) 1500; 9) 1890; 10) 4320.
2. Найти функцию Эйлера для простых чисел:
1) 17; 2) 31; 3) 43; 4) 71; 5) 83.
3. Найти функцию Эйлера для степеней простых чисел:
1) 36; 2) 54; 3) 113; 4) 173; 5) 233.
4. Найти функцию Эйлера от каждого из следующих произведений,
не вычисляя самих произведений: 1) 5  11; 2) 5  7  13; 3) 17  23;
61
4) 12  17; 5) 14  15; 6) 11  14  15; 7) 32  81  49; 8) 24  28  45;
x
9) 720 957; 10) 990 1890.
Указание. Чтобы сомножители были попарно простыми, следует
предварительно представить их, а затем и все произведение в канони­ческом разложении.
5. Сколько чисел в интервале от 1 до 120 не взаимно простых с 30?
6. Дано, что φ(а) = 3600 и 357.
a Найти а.
yz
7. Дано, что φ(а) = 120 и а = pq, где р и q – различные простые чис-
ла. Найти а, если р – q = 2.
22
8. Дано, что φ(а) = 11 424 и
а pq
где р и q – различные про-
стые числа. Найти а.
x
()7
9. Решить уравнение
705 894.
10. Найти количество натуральных чисел, меньших числа 300 и
имеющих с ним наибольшим общим делителем число 20.
11. Найти количество натуральных чисел, меньших числа 1665 и
имеющих с ним наибольшим общим делителем число 37.
12. Найти количество натуральных чисел, меньших числа 1476 и
имеющих с ним наибольшим общим делителем число 41.
62
5. ОСНОВНЫЕ АЛГОРИТМЫ
В ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
Большинство средств защиты информации базируется на использо­вании криптографических шифров и процедур шифрования / расшиф­рования. В соответствии со стандартом шифрования ГОСТ 28147–89 под шифром понимают совокупность обратимых преобразований множества открытых данных на множество зашифрованных данных, задаваемых ключом и алгоритмом криптографического преобразова­ния [10]. Существует множество разных криптографических алгорит­мов. Назначение этих алгоритмов – защита информацию приходится от разных угроз и разными способами. Чтобы обеспечить надежную и адекватную защиту с помощью криптоалго­ритма (КА), нужно понимать, какие бывают КА и какой тип алгоритма лучше приспособлен для решения конкретной задачи.
Известно несколько классификаций криптографических алгорит­мов [50]. Одна из них подразделяет КА в зависимости чей, применяемых в конкретном алгоритме:
на бесключевые КА – не используют в вычислениях никаких
ключей;
одноключевые КА – работают с одним ключевым параметром
(секретным ключом);
двухключевые КА – на различных стадиях работы в них приме-
няются два ключевых параметра: секретный и открытый ключи.
Существуют более детальные классификации, одна из которых приведена на рисунке.
Охарактеризуем кратко основные типы КА.
Хэширование – это метод криптозащиты, представляющий собой контрольное преобразование информации: из данных неограниченного
информации. Защищать же
от числа клю-
63
размера путем выполнения криптографических преобразований вы­числяется хэш-значение фиксированной длины, однозначно соответ­ствующее исходным данным.
Криптографические
алгоритмы
Бесключевые
Хэширование
Одноключевые
Симметричное
шифрование
Блочное
Поточное
Классификация криптоалгоритмов зашиты информации
Хэширование
Двухключевые
Ассиметричное
шифрование
Электронная подпись
Симметричное шифрование использует один и тот же ключ как для зашифровывания, так и для расшифровывания информации.
Симметричное шифрование подразделяется на два вида: блочное и поточное, хотя следует отметить, что в некоторых классификациях они не разделяются и считается, что поточное шифрование – это шифрова­ние блоков единичной длины.
Блочное шифрование характеризуется тем, что
информация пред­варительно разбивается на блоки фиксированной длины (например, 64 или 128 бит). При этом в различных КА или даже в разных режимах работы одного и того же алгоритма блоки могут шифроваться как независимо друг от друга, так и «со сцеплением», т. е. когда результат шифрования текущего блока данных зависит от значения
предыдущего
блока или от результата шифрования предыдущего блока.
Поточное шифрование применяется прежде всего тогда, когда ин­формацию невозможно разбить на блоки – скажем, есть некий поток данных, каждый символ которых требуется зашифровать и отправить,
64
не дожидаясь остальных данных, достаточных для формирования бло-
хy
ка. Алгоритмы поточного шифрования шифруют данные побитно или посимвольно.
Асимметричное шифрование характеризуется применением двух типов ключей: открытого – для зашифровывания информации и сек­ретного – для ее расшифровывания. Секретный и открытый ключи свя­заны между собой достаточно сложным соотношением.
Электронная цифровая подпись (ЭЦП) используется для подтверждения целостности и авторства данных.
Криптоалгоритмы зашиты информации базируются на базовых по­нятиях теории чисел, являясь вычислительно сложным видом задач высокого уровня безопасности алгоритмических средств.
надежного
5.1. Используемые вычислительно сложные задачи и достигаемый уровень безопасности
алгоритмических средств
Вычислительно сложные задачи базируются на предположении существования односторонних функций с секретом. Данный термин был введен в 1976 году Уитфилдом Диффи и Мартином Хеллманом в работе [11]. Они показали, что односторонние функции с секретом мо­гут использоваться для обмена секретными ключами с использованием открытых каналов связи. Формально односторонняя функция опреде­ляется следующим образом [11–13].
Определение. Функция f, сопоставляющая набору значений из X
набор значений из Y, называется односторонней, если легко вычислить f для всех значений x X, но для заданного значения y Y вычисли­тельно трудно найти x такой, что () .f
Односторонняя функция с секретом – это односторонная функция f :
⇒ Y с дополнительным свойством, дающим некоторую информацию,
X с помощью которой становится возможно найти для заданного y такой x X, что f(x) = y.
Уитфилд Диффи и Мартин Хеллман предложили задачу дискрет­ного логарифмирования в качестве односторонней функции с секретом и предположили существование других вычислительно сложных задач, пригодных для использования секретом.
в качестве односторонней функции с
65
Примером односторонней функции является произведение простых
чисел. Чтобы продемонстрировать односторонний характер умноже­ния простых чисел, мы можем взять два простых числа, например 9419 и 1933, и перемножить их. Используя калькулятор, нам понадобится всего лишь несколько секунд, чтобы получить ответ 18 206 927. Одна­ко, если вместо этого нам дадут число 18 206 927 и попросят найти простые множители (два чить 18 206 927), это займет у нас гораздо больше времени. Если вы сомневаетесь в том, насколько трудно находить простые множители, то примите во внимание следующее. Преподавателю понадобилось лишь десять секунд, чтобы образовать число 1 709 023, но у вас с каль­кулятором в руках, чтобы найти простые множители, это займет рую часть дня.
В качестве главного примера данного учебного пособия односто­ронней функции рассмотрим
Обратная функция обозначается как дискретный логарифм:
числа, которые перемножили, чтобы полу-
доб-
x
ya p
mod .()
(5.1)
Для того чтобы обеспечить трудность вычисления x при использо­вании лучших современных компьютеров, в настоящее время исполь­зуются числа размером более 512 бит. На практике часто применяются и другие односторонние функции, например, так называемые хеш­функции, оперирующие с существенно более короткими числами по­рядка 60–120 бит.
Сначала мы покажем, что вычисление прямого значения
x
ya p может быть выполнено достаточно быстро. Начнем с
примера вычисления числа
Таким образом, значение данной функции вычисляется всего за че­тыре операции умножения. На этом основан общий алгоритм.
)mod(
xy
16
16 2 2
mod ( ) mod .apa p
(log od .)m
p
a
modap
. Мы можем записать:
(5.2)
2
2

66
Для описания алгоритма введем величину
х
log
х (далее все логарифмы будут двоичные, поэтому в дальнейшем
2
[log ]t
– целую часть
2
мы не будем указывать основание 2). Вычисляем числа ряда
24816
,,,, mod.()ааааа р
(5.3)
В ряду (5.3) каждое число получается путем умножения предыду­щего числа самого на себя по модулю р. Запишем показатель степени х в двоичной системе счисления:
х xx xx
х
mod
Тогда число
уа p
может быть вычислено как
ya p
i
Пример. Пусть требуется вычислить
... .()
1102
tt
t
i
2
x
i
mod .
0
(5.4)
100
3 mod 7.
Имеем t
log100 6.[] Вычислим числа ряда:
a
2
a
a
4
8
a
a16 a
32
a
64
3 2 4 2 4 2 4
Записываем показатель в двоичной системе счисления:
100 = (1100100)
.
2
Произведем вычисления по формуле (5.4):
4 2 1 1 4 1 1 = 4.
Таким образом, нам потребовалось всего восемь операций умножения.
Программная реализация возможна следующим образом:
int deciminalToBinary(int number);
int composition(const vector<int>& mass, int xBin) {
int multiply = 1;
for (int i: mass) {
if (xBin % 2) {
multiply *= i;
67
}
p
xBin /= 10;
}
return multiply;
}
int main() {
int a, x, p; //axmod p cin >> a >> x >> p; int t = int(log(float(x))/log(2.0)); vector<int> mass; int modul = a%p; for (int i = 0; i <= t; i++) {
mass.push_back(modul);
modul = (modul * modul) % p; } int xBin = deciminalToBinary(x); int result = composition(mass, xBin)%p;
}
Данную задачу возможно было решить с помощью алгоритма, опи-
санного в п. 4.2 «Теоремы Эйлера и Ферма».
1. φ(m) = φ(7) =6.
2. N = φ(m)q + r, где r, qZ и 0 ≤ r < φ(m). 100 = 7 14 + 2.
100
3. 3
mod 7 = 32 mod 7 = 2 mod 7.
В общем виде получим следующее утверждение.
Утверждение (о сложности вычислений). Количество операций
умножения при вычислении (5.1) по описанному методу не превосхо­дит 2 log х.
Важно отметить, что столь же эффективные алгоритмы вычисления
обратной функции (5.2) неизвестны. Один из методов вычисления (5.2) –
«шаг младенца, шаг великана». Этот метод требует порядка
2
опе-
раций.
Покажем, что при больших р функция (5.1) действительно одно­сторонняя, если для вычисления обратной функции используется ме­тод «шаг младенца, шаг великана». Получаем следующий результат
(табл. 5.1).
68
Таблица 5.1
p
Количество умножений для вычисления прямой
и обратной функции
Количество десятичных
знаков в записи p
12 60 90
Вычисление (5.1) Вычисление (5.2)
2
40 = 80
2 200 = 400 2 300 = 600
106
2
2 10 2 10
30
45
Мы видим, что если использовать модули, состоящие из 50–100 де­сятичных цифр, то «прямая» функция вычисляется быстро, а обрат­ная практически не вычислима. Рассмотрим, например, суперкомпь­ютер, который умножает два 90-значньгх числа за 10
–14
сек. Для
вычисления (5.1) такому компьютеру потребуется:
–14
Т = 600  10
с,
а для вычисления (5.2):
45
–14
Т = 10
10
= 1031 с,
т. е. более 1022 лет. Мы видим, что вычисление обратных функций практически невозможно при длине чисел порядка 90 десятичных цифр, и использование параллельных вычислений и компьютерных сетей существенно не меняет ситуацию. В рассмотренном примере мы
предполагали, что обратная функция вычисляется за
2
операций.
В настоящее время известны и более «быстрые» методы вычисления дискретного логарифма, однако общая картина та же: количество тре­буемых в них операций много больше 2 log р. Таким образом, можно утверждать, что функция (5.1) действительно односторонняя, но с ого­воркой. Никем не доказано, что обратная функция (5.2) не может быть вычислена столь же быстро, как и «прямая».
Используем одностороннюю функцию (5.1) для решения всех задач, описанных в данном разделе, не забывая, однако, что точно так же может быть использована и любая другая односторонняя функция [24].
Будем придерживаться следующей терминологии при рассмотре­нии криптографических протоколов разного уровня.
69
Отправитель сообщений и их получатель могут быть физически­ми лицами, организациями, какими-либо техническими системами. Иногда об А и В говорят как об абонентах некоторой сети, о пользо­вателях некоторой компьютерной системы или, еще более формаль­но, как об абстрактных «сторонах» (англоязычный термин «раггу») или «сущностях» (entity), участвующих в информационном взаимо­действии. Но чаще бывает удобно отождествлять участников обмена с некоторыми людьми и заменить формальные обозначения А и В на Алиса и Боб.
Предполагается, что сообщения передаются по так называемому «открытому» каналу связи, в принципе доступному для прослушива­ния некоторым другим лицам, отличным от получателя и отправителя. Такая ситуация возникает при радиопередаче сообщений (например, посредством мобильного телефона) и возможна при использовании даже таких «проверенных» каналов связи, как проволочный телефон, телеграф и обычная почта. Особый интерес как средство передачи данных, стремительно завоевывающее лидирующие позиции во всем мире и в то же время чрезвычайно уязвимое с точки зрения возможно­сти несанкционированного доступа третьих лиц, представляет Интер­нет. В этой среде легко реализуется не только копирование, но и под­мена передаваемых сообщений.
В криптографии обычно предполагается, что у лица, передающего сообщения и (или) их принимающего, есть некоторый противник Е, который может быть конкурентом в бизнесе, членом преступной груп­пировки, представителем иностранной разведки, и этот противник мо­жет перехватывать сообщения, передаваемые по открытому каналу, и анализировать их. Часто удобно рассматривать противника как некую особу по имени Ева, которая имеет в своем распоряжении мощную вычислительную технику и владеет методами криптоанализа.
5.2. Тесты на простоту
Доказуемо простые числа, как правило, используются в качестве модулей криптосистем, основанных на проблеме дискретного лога­рифмирования, таких как шифр Шамира, криптосистема Эль-Гамаля и связанные с ней стандарты цифровой подписи ГОСТ Р 34.11–94, ГОСТ Р 34.11–2001, DSA и EСDSA. Рассмотрим тесты на простоту Миллера, Поклингтона, ГОСТ.
70
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]