крипта_14
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет Кибербезопасности
Кафедра Защищенных систем связи
Дисциплина Криптографические протоколы
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №14
Изучение криптосистемы Мак-Элис
(тема отчета)
Направление/специальность подготовки
(код и наименование направления/специальности)
Выполнил студент 3 курса:
(Ф.И.О., № группы) (подпись)
Преподаватель:
д.т.н., проф. Яковлев В.А.
(Ф.И.О., № группы) (подпись)
Цель лабораторной работы
Изучить преобразования, выполняемые при шифровании и дешифровании сообщений в криптосистеме Мак-Элис, а также простейшие попытки ее взлома.
Если не получается открыть матрицу в “McEliese”:
Надо сгенерированный файл с матрицей закинуть на диск С и туда же закинуть ехе файл программы. В остальном надо поебаться с установкой доп библиотек
Выполнение лабораторной работы
Параметры криптосистемы Мак-Элис:
Длина кода Гоппы n = 32,
длина информационного сообщения k = 22 бита,
число искусственно вводимых ошибок tA = 2.
Сгенерируем для выбранных параметров порождающую матрицу с применением кода Гоппы:
Параметры кода Гоппы:
Длина n = 25 = 32 бита,
размерность k ≥ 25–2∙5 = 22 бита,
минимальное расстояние d ≥ 2∙2+1 = 5.
Процесс генерации ключей и шифрования:
Загрузим в программу “McEliece” раннее сгенерированную порождающую матрицу G и убедимся в правильности параметров системы:
Сгенерируем несингулярную матрицу S:
Сгенерируем перестановочную матрицу P:
Рассчитаем произведение матриц G и P:
Получили матрицу G*P:
Рассчитаем произведение матриц S, G и P:
Получили матрицу S*G*P:
Таким образом, закрытым ключом является набор {несингулярная матрица S, порождающая матрица G, перестановочная матрица P}.
Открытым ключом является {Произведение матриц S*G*P, параметр tA = 2}.
Зададим двоичное сообщение и сгенерируем случайный вектор ошибок Z, найдем криптограмму:
ГNГNX, где Г- номер группы в двоичном виде (5 бит), N - номер по журналу (5 бит). Х- случайные биты
Г = 32
N = 05
Тогда для текущего варианта сообщение
М = 10000001011000000101 + 00 = 1000000101100000010100
М = 10000001011000000101 + 01 = 1000000101100000010101
М = 10000001011000000101 + 10 = 1000000101100000010110
Шифрование 1-го сообщения:
Сообщение m1: 10000001011000000010100
Вектор Z1: 01110100010110010111011000111001
Криптограмма c1: 011101000101100101110110000001001
Шифрование 2-го сообщения
Сообщение m2: 10000001011000000010101
Вектор Z2: 000000000000000000001000010000000
Криптограмма c2: 11001100110111010001000010011101
Шифрование 3-го сообщения:
Сообщение m3: 1000000101100000010110
Вектор Z3: 00000000010000100000000000000000
Криптограмма c3: 011101011011001010111111101010
Процесс дешифрования:
Вычислим обратную P матрицу P-1 и вектор c1’=c1*P-1:
Используя алгоритм декодирования для кода Гоппы с порождающей матрицей G, исправим не более tA = 2 ошибок в c’, в результате чего получим некоторый двоичной вектор m’ длины k. (В программе исправление ошибок реализовано за счет вычитания двоичного вектора ошибок Z):
Далее, для восстановления сообщения найдем обратную S матрицу S-1 и умножим двоичных вектор m’ на эту матрицу. m = m’*S-1
Восстановленное сообщение m1: 1000000101100000010100
Те же действия повторим для расшифрования сообщения m2 и m3:
Восстановленное сообщение m2: 1000000101100000010101
Восстановленное сообщение m3: 1000000101100000010110
Атака на криптосистему:
Номера столбцов:
31, 23, 21, 13, 17, 8, 22, 9, 16, 4, 7, 19, 2, 10, 5, 12, 20, 14, 6, 18, 11, 29
Нулевой вектор Z (ограниченный столбцами): 00000000000000000000000
Восстановленное сообщение m1: 1000000101100000010100
Номера столбцов:
Вот список номеров с изображения, записанный через запятую:
11, 26, 2, 9, 19, 10, 5, 4, 21, 15, 7, 23, 22, 29, 12, 32, 1, 25, 16, 20, 13, 14
Нулевой вектор Z (ограниченный столбцами): 00000000000000000000000
Восстановленное сообщение m2: 1000000101100000010101
Номера столбцов:
Вот список номеров с изображения, записанный через запятую:
4, 26, 7, 8, 6, 25, 18, 23, 32, 14, 2, 20, 21, 22, 24, 9, 17, 12, 3, 30, 31, 19
Нулевой вектор Z (ограниченный столбцами): 00000000000000000000000
Восстановленное сообщение m3: 1000000101100000010110
Алгоритм атаки:
Система случайно выбирает k столбцов матрицы S*G*P (открытого ключа), проверяя при этом необходимые условия для взлома. Если матрица, составленная из выбранных k столбцов, окажется несингулярной и вектор Z, ограниченный этими столбцами, окажется нулевым, то сообщение будет восстановлено. Во всех трех случаях атака выполнилась успешно.
В программе для простоты полагается, что злоумышленнику известны биты, в которых появляется ошибка. В реальности же, взломщику не известен вектор ошибок Z, так как он абсолютно случайный, поэтому процесс подбора столбцов происходит до тех пор, пока не появится сообщение с известным характером избыточности.
Расчеты вероятности успеха атаки на КС Мак-Элис при выборе различных значений k и t.
Вероятность того, что вектор Z окажется нулевым равна:
Итоговая таблица:
Размерность (k) |
t=1 |
t=2 |
t=3 |
t=4 |
t=5 |
t=6 |
k=22 |
0.312500 |
0.090726 |
0.024194 |
0.005840 |
0.001251 |
0.000232 |
k=17 |
0.468750 |
0.211694 |
0.091734 |
0.037959 |
0.014912 |
0.005523 |
k=12 |
0.625000 |
0.383065 |
0.229839 |
0.134733 |
0.076990 |
0.042772 |
k=4 |
0.875000 |
0.762097 |
0.660484 |
0.569383 |
0.487819 |
0.414995 |
k=2 |
0.937500 |
0.877016 |
0.818548 |
0.762097 |
0.707661 |
0.655242 |
График зависимостей
Из таблицы и графика видно, что при увеличении вводимых ошибок или увеличения длины информационного сообщения, вероятность успеха атаки снижается
Вывод
В ходе выполнения лабораторной работы были изучены преобразования, выполняемые при шифровании и дешифровании сообщений в криптосистеме Мак-Элис, а также простейшие попытки ее взлома.
Санкт-Петербург
2026
