- •Оглавление
- •Глава 5. Основы математической теории информации 58
- •Глава 6. Элементы теории чисел 74
- •6.2.1. Основные определения 83
- •Глава 7. Алгебраические структуры 87
- •Введение
- •Глава 1.Введение
- •1.1.Основные понятия криптографии
- •1.1.1.История развития криптографии
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •1.1.2.Сложность алгоритмов
- •1.1.3.Стойкость криптографических систем
- •Глава 2.Элементы теории множеств
- •2.1.Основные понятия теории множеств
- •2.1.1.Обозначения и способы задания множеств
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •2.1.2.Операции над множествами
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •2.1.3.Прямое произведение множеств
- •П римеры решения задач
- •Задачи для самостоятельного решения
- •2.2.Отношения между множествами
- •2.2.1.Определение бинарных отношений
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •2.2.2.Представление бинарных отношений в виде графа, матрицы
- •Примеры решения задач
- •Построенная таблица есть таблица бинарного отношения. Задачи для самостоятельного решения
- •2.2.3.Свойства бинарных отношений, отношение эквивалентности
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Вопросы для повторения
- •Глава 3.Булева алгебра
- •3.1.Булевы функции
- •3.1.1.Понятие булевой функции
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.1.2.Суперпозиция функций
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.1.3.Двойственные функции
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.1.4.Логические схемы
- •Примеры решения задач
- •3.2.Нормальные формы
- •3.2.1.Разложение функций по переменным
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.2.2.Минимизация нормальных форм, карты Карно
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Полиномы Жегалкина, алгоритм их построения для произвольных функций
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.3.Полные системы функций
- •3.3.1.Полнота множества функций
- •Примеры решения задач
- •Глава 4.Элементы теории графов
- •4.1.Основные понятия теории графов
- •4.1.1.Способы задания графов, основные определения
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.2.Числовые характеристики графов
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.3.Операции с графами
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.4.Изоморфизм графов
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.6.Расстояния в графе, центры графа
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.7.Эйлеровы циклы
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.8.Алгоритм построения Эйлерова цикла
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.9.Гамильтоновы циклы
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.10.Алгоритм построения гамильтонова цикла в графе
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.2.2.Алгоритм Краскала для построения минимального остовного дерева
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.2.3.Обходы дерева
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Задачи для повторения
- •Вопросы для повторения
- •Глава 5.Основы математической теории информации
- •5.1.Меры информации
- •5.1.1.Мера Хартли
- •Примеры решения задач
- •5.1.2.Мера Шеннона
- •Примеры решения задач
- •5.1.3.Единицы измерения количества информации
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.2.2.Код Хаффмана
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3. Помехоустойчивое кодирование
- •5.3.1. Код с проверкой на четность
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3.2.Коды с повторением
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3.3.Групповой код Хемминга
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3.4.Помехозащищенность кода
- •Примеры решения задач
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.2.Теорема о делении с остатком. Алгоритм Евклида
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.3.Отношение сравнимости
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.4.Алгебра вычетов
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.5.Решение сравнений вида ахb(mod m)
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.6.Применение алгебры вычетов к простейшим шифрам
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.7.Построение и использование хеш-функций
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Задачи для повторения
- •6.2.Алгебра многочленов
- •6.2.1.Основные определения
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.2.2.Нод многочленов
- •Примеры решения задач
- •Задачи для самостоятельного решения.
- •6.2.3.Разложение многочлена на множители
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Вопросы для повторения
- •Глава 7.Алгебраические структуры
- •7.1.Основные понятия и свойства алгебраических структур
- •7.1.1.Алгебра
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.2.Группа
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.3.Кольцо
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.4.Поле
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.5.Конечные поля
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.Многочлены над конечными полями
- •7.2.1.Каноническое разложение многочлена
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.2.Порядок многочлена над конечным полем
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.3.Сравнение многочленов по данному модулю
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.4.Поиск неприводимых многочленов поля gf(g(X)) над полем gf(р)
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.3.Генераторы псевдослучайных последовательностей
- •7.3.1.Понятие псевдослучайной последовательности чисел
- •7.3.2.Практические методы получения псевдослучайных чисел
- •Задачи для самостоятельного решения
- •7.3.3.Понятие линейной последовательности
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.3.4. Периодичность линейных рекуррентных последовательностей
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.3.5.Связь линейных рекуррентных последовательностей над конечными полями с многочленами
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Вопросы для повторения
- •214018, Г. Смоленск, проспект Гагарина, 56, т.: (0812) 55 – 41 – 04.
Примеры решения задач
Зашифровать с помощью системы с открытым ключом сообщение: 312.
Решение. Генерация ключей: p=3, q=11; n=рq = 3*11 = 33;
(p-l)(q-1) = 2*10=20, е=7;
Определим d: 7d1(mod 20). Отсюда d=17(33)-1=719(mod 20).
719(mod 20) (73)67=3436736734327=81633 (mod 20).
Пусть S1=3, S2=1, S3=2 (S1, S2, S3 <n=33). Тогда код определяется следующим образом:
С1=З7 mod 33=2187 mod 33=9;
С2= 17 mod 33=1 mod 33=1;
С3=27 mod 33=128 mod 33=29.
При расшифровке имеем:
P1=93 mod 33=729 mod 33=3;
P2=13 mod 33=1 mod 33=1;
P3=293 mod 33=24389 mod 33=2.
Задачи для самостоятельного решения
Зашифруйте следующие сообщения с заданными значениями p, q:
526, p=7, q=19;
tree, p=11, q=13;
крошка, p=11, q=17;
скрипт, p=133, q=29.
6.1.7.Построение и использование хеш-функций
Под термином хеш-функция понимается функция, отображающая электронные сообщения произвольной длины в значения фиксированной длины. Т.о. у всякой хеш-функции h имеется большое количество коллизий, т.е. пар значений х и у таких, что h(x)=h(y). Основное требование, предъявляемое криптографическими приложениями к хеш-функциям, состоит в отсутствии эффективных алгоритмов поиска коллизий. Кроме того, хеш-функция должна быть односторонней, т.е. функцией, по значению которой вычислительно трудно найти её аргумент, в то же время, функцией, для аргумента которой вычислительно трудно найти другой аргумент, который давал бы то же самое значение функции. Схемы электронной цифровой подписи – основная сфера применения хеш-функций.
Один из практических методов построения хеш-функций - на основе какой-либо известной вычислительно трудной математической задачи. Например, легко вычислить квадрат числа по модулю n: х2 (mod n), но вычислительно трудно извлечь квадратный корень по этому модулю. Т.о., хеш-функцию можно записать так: Hi=[(Hi-1Mi)2] (mod n), где i=1…n; H0=0; M=M1, M2, … , Mn. Длина блока Mi представляется в октетах, каждый октет разбит пополам и к каждой половине спереди приписывается полуоктет, состоящий из двоичных единиц: n – произведение двух больших (512-битных) простых чисел p и q.
Примеры решения задач
Получить хеш-код для сообщения «ДВА» при помощи хеш-функции с параметрами p=7, q=3, вектор инициализации I=6 (выбираем случайно).
Решение. 1). Получаем значение модуля: n=pq=73=21;
2). Представить сообщение «ДВА» в числовом эквиваленте (по номеру буквы в алфавите):
ДВА
5 3 1
3). Представить коды битовой строкой:
5 3 1
00000101 00000011 00000001
I=610=000001102.
4). Разбить байт пополам (разбиение октета на полуоктеты), добавить в начало полубайта единицы и получить хешируемые блоки Mi:
М1 М2 М3 М4 М5 М6
11110000 11110101 11110000 11110011 11110000 11110001.
5). Выполнить итеративные шаги:
первая итерация:
М1=11110000,
Н0= 00000110,
Н0М1= 111101102=24610,
[(Н0М1)]2(mod 21)=2462(mod 21)=152(mod 21)=(-6)2(mod 21)=15,
H1=1510=0000111112.
Вторая итерация:
М2=11110101,
Н1= 00001111,
Н1М2= 111110102=25010,
[(Н1М2)]2 (mod 21)=2502 (mod 21)= 192(mod 21)=(-2)2(mod 21)=4,
H2=410=000001002.
И т.д. Всего нужно выполнить шесть итераций, полученное число Н6 и будет хеш-код.
