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

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

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
736 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ УНИВЕРСИТЕТ «МИФИ»

А.В. Епишкина, К.Г. Когос

Теория алгоритмов в задачах информационной безопасности

Конспект лекций

Учебное пособие

Москва 2022

УДК 510.5 ББК 22.1 Е 67

Епишкина А.В., Когос К.Г. Теория алгоритмов в задачах информационной безопасности: Конспект лекций. Учебное пособие. М.: НИЯУ МИФИ, 2022. – 96 с.

Настоящий курс лекций предназначен для студентов, изучающих информационные технологии и информационную безопасность в том или ином объеме в различных учебных заведениях, а также для преподавателей смежных направлений.

Лекции содержат основные положения теории алгоритмов, связанные с требованиями, предъявляемыми к алгоритмам, и различными типами алгоритмических моделей, которые подробно рассматриваются на примерах; показывается совпадение классов функций, вычислимых на машине произвольного доступа, и частично рекурсивных функций, что является важным фактором при выборе алгоритмической модели для вычислений; обсуждаются алгоритмически неразрешимые проблемы; описываются характеристики сложности вычислений; приводятся алгоритмы, нашедшие широкое применение в криптографии, такие как тесты на простоту для целых чисел, алгоритмы факторизации целых чисел и алгоритмы дискретного логарифмирования.

Доступный, но строгий с научной точки зрения язык изложения, а также большое количество наглядных материалов и примеров позволят слушателям освоить основы теории алгоритмов и теории сложности вычислений, научиться применять их при решении ряда задач, необходимых для построения криптографических примитивов.

Подготовлено в рамках Проекта по созданию и развитию Международного научно-методического центра НИЯУ МИФИ.

Рецензент: канд. физ.-мат. наук, доц. МГТУ им. Баумана А.А. Варфоломеев

Рекомендовано к изданию кафедрой компьютерных систем и технологий (№ 12) НИЯУ МИФИ

ISBN 978-5-7262-2897-6 © Национальный исследовательский

ядерный университет «МИФИ», 2022 © А.В. Епишкина, К.Г. Когос, 2022

2

СОДЕРЖАНИЕ

 

ВВЕДЕНИЕ ............................................................................................

6

Лекция 1. Алгоритмы и их свойства....................................................

7

1.1. Основные понятия .....................................................................

7

1.2. Основные требования к алгоритмам........................................

9

1.3. Основные типы алгоритмических моделей...........................

10

Лекция 2. Машина Тьюринга.............................................................

12

2.1. Машина Тьюринга и функции,

 

вычислимые по Тьюрингу......................................................

12

2.2. Суперпозиция машин Тьюринга ............................................

21

2.3. Соединение машин Тьюринга ................................................

22

2.4. Ветвление машин Тьюринга...................................................

23

2.5. Реализация цикла на машине Тьюринга................................

24

Лекция 3. Машина произвольного доступа ......................................

27

3.1. Команды и программа машины произвольного доступа.....

27

3.2. Вычисление на машине произвольного доступа ..................

28

Лекция 4. Частично рекурсивные функции и их вычислимость.....

35

4.1. Базисные функции и операции над ними..............................

35

4.2. Виды частично рекурсивных функций..................................

37

4.3. Примеры частично рекурсивных функций............................

38

4.4. Способы доказательства вычислимости функций................

39

4.5. О совпадении классов вычислимых функций.......................

39

Лекция 5. Нормальные алгоритмы.....................................................

47

5.1. Схема нормального алгоритма...............................................

47

5.2. Вычислимые по Маркову функции........................................

48

5.3. Примеры нормальных алгоритмов.........................................

49

5.4. Принцип нормализации...........................................................

51

Лекция 6. Алгоритмически неразрешимые проблемы.....................

52

6.1. Массовые проблемы и индивидуальные задачи...................

52

6.2. Алгоритмическая разрешимость задач..................................

53

3

6.3. Проблема самоприменимости машин Тьюринга..................

54

6.4. Примеры неразрешимых проблем..........................................

55

Лекция 7. Характеристики сложности вычислений.........................

57

7.1. Временная и емкостная сложность........................................

57

7.2. Классы сложности P и NP и их взаимосвязь.........................

60

7.3. Полиномиальная сводимость задач........................................

67

7.4. NP-полные и NP-трудные задачи...........................................

68

Лекция 8. Алгоритмы проверки простоты чисел .............................

70

8.1. Простые числа и элементарные методы

 

проверки простоты чисел........................................................

70

8.2. Тесты на простоту для чисел специального вида.................

72

8.3. Вероятностные тесты на простоту.........................................

73

8.4. (N ± 1)-методы проверки простоты чисел

 

и построения больших простых чисел...................................

75

8.5. Алгоритм Конягина−Померанса ............................................

78

Лекция 9. Алгоритмы факторизации целых чисел...........................

79

9.1. Метод пробных делений .........................................................

80

9.2. Алгоритм Ферма ......................................................................

80

9.3. ρ–метод Полларда....................................................................

83

9.4. Метод Шермана–Лемана.........................................................

84

9.5. Алгоритм Ленстры...................................................................

85

9.6. Алгоритм Полларда–Штрассена ............................................

87

Лекция 10. Алгоритмы дискретного логарифмирования................

89

10.1. Задача дискретного логарифмирования ..............................

89

10.2. Алгоритм согласования.........................................................

90

10.3. Алгоритм Полига–Хеллмана ................................................

91

10.4. ρ-метод Полларда для дискретного логарифмирования....

92

Список литературы..............................................................................

94

4

ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ

В настоящем пособии применяются следующие обозначения и сокращения:

МПД

НОК

НТ

УМ

ЭВМ

RSA

i = k1,k2

[а] (a, n) a | b pk || a

a b(modc)

An

0

a

a

/ n

(R)*

GF(q)

va (b)

машина произвольного доступа

наименьшее общее кратное

недетерминированная машина Тьюринга

угадывающий модуль

электронная вычислительная машина

криптосистема Ривеста–Шамира–Адлемана

(Rivest–Shamir–Adleman)

число i пробегает целочисленные значения от k1 до k2

целая часть числа а

наибольший общий делитель чисел a и n

число a делит число b

число pk делит число a, но число pk+1 не делит число a

разность чисел a b делится на число c

n-я декартова степень множества А

множество натуральных чисел

множество натуральных чисел с нулем

множество целых чисел

множество действительных чисел, больших или равных a

множество целых чисел, больших или равных a

кольцо вычетов по модулю n

группа обратимых по умножению элементов кольца R

поле из q элементов, где q – степень простого числа

наибольшее число k из множества 0 такое, что ak | b

5

ВВЕДЕНИЕ

Учебное пособие посвящено основам теории алгоритмов и теории сложности вычислений, их применению для решения задачах информационной безопасности, преимущественно связанных с криптографическими методами защиты информации.

Изложены базовые понятия, связанные с алгоритмами, требованиями, предъявляемыми к алгоритмам, описаны различные типы алгоритмических моделей, рассмотрены машины Тьюринга, машины произвольного доступа, частично рекурсивные функции и нормальные алгоритмы. Обсуждаются алгоритмически неразрешимые проблемы, изучаются характеристики сложности вычислений: временная и емкостная сложность, приводятся свойства задач класса P и NP, NP-полных и NP-трудных задач. Далее исследуются вопросы алгоритмической теории чисел – интенсивно развивающегося направления в теории чисел, имеющего важные приложения в криптографии, так как многие асимметричные криптографические алгоритмы строятся на теоретико-числовых задачах. Анализируются алгоритмы проверки простоты целых чисел, факторизации целых чисел и дискретного логарифмирования, приводятся обоснование их корректности и оценки сложности.

Лекции с первой по седьмую посвящены избранным главам теории алгоритмов и теории сложности вычислений; с восьмой лекции рассматриваются приложения теории алгоритмов для решения криптографических задач.

6

Лекция 1. Алгоритмы и их свойства

На лекции даются основные понятия теории алгоритмов, приводятся примеры алгоритмов, обсуждаются требования, предъявляемые к алгоритмам, рассматриваются различные типы алгоритмических моделей.

Ключевые слова: алгоритм; данные; алфавит; память; результативность; элементарные шаги; детерминированность; реализация; машина Тьюринга; машина произвольного доступа; рекурсивные функции.

Введение. Понятие «алгоритм» давно является привычным не только для математиков. Оно является концептуальной основой разнообразных процессов обработки информации. Возможность автоматизации таких процессов обеспечивается наличием соответствующих алгоритмов. С алгоритмами первое знакомство происходит в начальной школе при изучении арифметических действий с натуральными числами. В упрощенном понимании «алгоритм» – это то, что можно запрограммировать на компьютере. Рассмотрим далее более формализованное понятие алгоритма, требования к алгоритмам и основные типы алгоритмических моделей.

1.1. Основные понятия

Термин «алгоритм» обязан своим происхождением великому ученому средневекового Востока Маххамад ибн Муса ал-Хорезми. В латинских переводах с арабского арифметического трактата алХорезми его имя транскрибировалось как algorismi. Откуда и пошло слово «алгоритм» – сначала для обозначения алгоритмов цифровых вычислений десятичной позиционной арифметики, а затем для обозначения произвольных процессов, в которых искомые величины решаемых задач находятся последовательно из исходных данных по определенным правилам и инструкциям.

Алгоритмами являются, например, известные из начальной школы правила сложения, вычитания, умножения и деления стол-

7

биком. Вообще, под «алгоритмом» понимается всякое точное предписание, которое задает вычислительный процесс, называемый в этом случае алгоритмическим, начинающийся с произвольных исходных данных (из некоторой совокупности возможных для данного алгоритма исходных данных) и направленный на получение полностью соответствующего этим исходным данным результата.

Вплоть до 30-х гг. нашего столетия понятие алгоритма оставалось интуитивным понятием, имевшим скорее методологическое, а не математическое значение. Так, к началу XX в. много ярких примеров алгоритмов дала алгебра и теория чисел. Приведем некоторые примеры алгоритмов:

1.Алгоритм Евклида нахождения наибольшего общего делителя двух натуральных чисел или двух целочисленных многочленов.

2.Алгоритм Гаусса решения системы линейных уравнений.

3.Алгоритм Штурма определения числа действительных корней многочлена с действительными коэффициентами на некотором отрезке действительных чисел.

4.Алгоритм разложения многочлена одного переменного над конечным полем на неприводимые множители.

5.Алгоритмы сортировки, например, методом «пузырька», сортировка вставками, сортировка посредством выбора, внешняя сортировка слиянием.

6.Алгоритмы перевода чисел из римской записи в арабскую и обратно.

7.Алгоритмы нахождения наибольшего общего делителя и наименьшего общего кратного целых чисел.

Указанные алгоритмические проблемы решены путем указания конкретных разрешающих процедур. Для получения результатов такого типа достаточно интуитивного понятия алгоритма. Однако в начале XX в. были сформулированы алгоритмические проблемы, положительное решение которых представлялось маловероятным. Решение таких проблем потребовало привлечения новых логических средств. Ведь одно дело доказать существование разрешающего алгоритма – это можно сделать, используя интуитивное понятие алгоритма. Другое дело – доказать несуществование алгоритма – для этого нужно знать точно, что такое алгоритм.

Задача точного определения понятия алгоритма была решена в 30-х гг. XX в. в работах Гильберта, Черча, Клини, Поста, Тьюринга

8

в двух формах: на основе понятия рекурсивной функции и на основе описания алгоритмического процесса.

1.2.Основные требования к алгоритмам

Дадим краткую характеристику основным требованиям, которым должны удовлетворять алгоритмы.

1.Данные. Каждый алгоритм имеет дело с данными – входными, промежуточными, выходными. Для того чтобы уточнить понятие данных, фиксируется конечный алфавит исходных символов (цифры, буквы и т.п.) и указываются правила построения алгоритмических объектов. Типичным используемым средством является индуктивное построение. Например, определение идентификатора

вязыке программирования может выглядеть следующим образом: идентификатор – это либо буква, либо идентификатор, к которому приписана справа либо буква, либо цифра. Слова конечной длины в конечных алфавитах – наиболее обычный тип алгоритмических данных, а число символов в слове – естественная мера объема данных. Другой случай алгоритмических объектов – формулы. Примером могут служить формулы над подмножеством булевых функций или функций k-значной логики. В этом случае не каждое слово в алфавите будет формулой.

2.Память. Алгоритм для размещения данных требует памяти. Память обычно считается однородной и дискретной, т.е. она состоит из одинаковых ячеек, причем каждая ячейка может содержать один символ данных, что позволяет согласовать единицы измерения объема данных и памяти.

3.Элементарные шаги. Алгоритм состоит из отдельных элементарных шагов.

4.Детерминированность последовательности шагов. После-

довательность шагов алгоритма детерминирована, т.е. после каждого шага указывается, какой шаг следует выполнять дальше, либо указывается, когда следует работу алгоритма считать законченной.

5.Результативность. Алгоритм должен обладать результативностью, т.е. останавливаться после конечного числа шагов (зависящего от исходных данных) с выдачей результата. Данное свой-

ство иногда называют сходимостью алгоритма.

9

6.Механизм реализации. Алгоритм предполагает наличие механизма реализации, который по описанию алгоритма порождает процесс вычисления на основе исходных данных.

7.Конечность описания алгоритма и механизма его реали-

зации. Множество различных шагов, из которых составлен алгоритм, конечно. Типичный пример множества элементарных шагов – система команд электронно-вычислительных машин. Также предполагается, что описание алгоритма и механизм его реализации конечны.

Можно заметить аналогию с вычислительными машинами. Первое требование соответствует цифровой природе компьютера, второе – памяти компьютера, третье – компьютерной программе, четвертое – ее логической природе, требования пять, шесть и семь – вычислительному устройству и его возможностям.

Таким образом, уточнение понятия алгоритма связано с уточнением алфавита данных и формы их представления, памяти и размещения в ней данных, элементарных шагов алгоритма и механизма реализации алгоритма. Однако эти понятия сами нуждаются в уточнении. Ясно, что их словесные определения потребуют введения новых понятий, для которых, в свою очередь, снова потребуются уточнения, и т.д. Поэтому в теории алгоритмов принят другой подход, основанный на конкретной алгоритмической модели, в которой все сформулированные требования выполняются очевидным образом. При этом используемые алгоритмические модели универсальны, т.е. моделируют любые другие разумные алгоритмические модели, что позволяет снять возможное возражение против такого подхода: не приводит ли жесткая фиксация алгоритмической модели к потере общности формализации алгоритма? В связи с вышесказанным данные алгоритмические модели отождествляются с формальным понятием алгоритма. Рассмотрим основные типы алгоритмических моделей, различающиеся исходными трактовками, что такое алгоритм.

1.3.Основные типы алгоритмических моделей

Рассмотрим основные типы алгоритмических моделей.

1. Алгоритм рассматривается как некоторое детерминированное устройство, способное выполнять в каждый момент лишь строго

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]