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

Обработка данных и моделирование в математических пакетах. Учебно-методическое пособие по дисциплине «Информатика»

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
шифрограмма
mod
ii
C T N
( )mod
i i i
C T G N
( )mod
i i i
T C G N N
шифрование
чтение
чтение
шифрование
К недостаткам симметричных систем относится проблема начальной передачи ключа (синхронизация ключей), а значит – для передачи нужна защищѐнная связь.
В асимметричных системах для шифрования используется открытый (публичный) ключ, а для чтения – закрытый (личный) ключ. Расшифровка данных с помощью открытого ключа невозможна. Данная схема решает проблему симметричных схем, связанную с начальной передачей ключа другой стороне.
шифрограмма
Защита в системе не является абсолютно надѐжной. Есть вероятность того, что закрытый ключ будет реконструирован.
К простейшим методам шифрования относятся перестановка, замена, гаммирования и ана­литическое преобразование данных.
В шифрах перестановок все символы открытого текста переносятся в шифрограмму в неизменном виде, но меняют своѐ местоположение. Используются блочная перестановка, простая и двойная табличная перестановки, маршрутная перестановка, вертикальная пере­становка, поворотные решѐтки, множественные перестановки. В современных стандартах шифрования применяются блочные одинарные перестановки.
Для шифрования текста методом замены каждая его буква заменяется другой, отстоя­щей после неѐ в алфавите на определѐнное число позиций. Это число является ключом шифра. Символы алфавита записываются циклически (по кругу). Для дешифрирования сообщения каждая его буква заменяется стоящей перед ней в алфавите на число позиций, которое исполь­зовалось в качестве ключа при шифровании. Для организации циклического повторения сим­волов используют операцию деления по модулю N:
где Ti – символы исходной фразы, Сi – символы зашифрованной фразы, N – основание моду­ля, определяется количеством символов, в используемом алфавите. Так, например, в алфави­те кириллицы, если применять только буквы заглавные N=33.
В системах MATLAB и Mathcad используется кодировка Unicode. Символы кириллицы в ней располагаются на позициях 1040-1103 (см. таблицу на стр. 22). Последний символ рас­полагается на позиции 1103. Но при этом надо учесть, что фраза кроме букв содержит про­белы и знаки препинания, расположенные в первой части базовой таблицы (до 127 кода). Поэтому основание модуля алфавита в расчетах надо принять за N = 1104.
В аддитивных шифрах символы исходной фразы заменяются кодами, которые склады­ваются по модулю с числами гаммы. Ключом шифра является гамма, символы которой по­следовательно циклически повторяются и имеют длину равную длине строки S. При этом шифрование и дешифрование по модулю N выполняются по соответствующим формулам:
где Gi – символы гаммы,
Ci – символы зашифрованного сообщения, Ti – символы исходного сообщения, N – Основание модуля. В работе N=1104.
, (9)
, (10)
21
Шифрование аналитическим преобразованием заключается в том, что символы ис­ходного текста преобразуется по некоторому аналитическому правилу (в работе не исполь­зуется).
6.6. Методика выполнения шифрования данных в MATLAB
1. В командной строке MATLAB задать строковую переменную S с заданной фразой,
взятой из таблицы 4 и преобразовать строковую переменную в массив кодов. Например: >> S='Я помню чудное мгновение';
>> C=double(S) % Преобразование фразы в код C = Columns 1 through 12 1071 32 1087 1086 1084 1085 1102 32 1095 1091 1076 1085 Columns 13 through 24 1086 1077 32 1084 1075 1085 1086 1074 1077 1085 1080 1077
2. В соответствии с заданным методом шифрования, выполнить шифрование получен-
ного вектора кодов строки S. В качестве примера произведем шифрование по методу замены – сдвига символов на 3 позиции вправо, с последующим представлением полученных кодов в виде шифрограммы:
% Формирование шифрограммы кодов строки S >> CK=mod(C+3,1104) % Замена кодов строки в другой код CK = Columns 1 through 12 1074 35 1090 1089 1087 1088 1105 35 1098 1094 1079 1088 Columns 13 through 24 1089 1080 35 1087 1078 1088 1089 1077 1080 1088 1083 1080
% Получение шифрограммы символов >> CH=char(CK)
CH = в#тспр#ъцзрси#пжрсеирли % Шифрограмма заданной фразы
3. Выполнить действия с вектором CH по расшифрованию шифрограммы с целью вос-
становления исходной фразы; >> CD=double(CH) % Преобразование шифрограммы в код
CD = Columns 1 through 12 1074 35 1090 1089 1087 1088 1 35 1098 1094 1079 1088 Columns 13 through 24 1089 1080 35 1087 1078 1088 1089 1077 1080 1088 1083 1080 >> D=mod(CD-3,1104) % Восстановление кодов строки S D = Columns 1 through 12 1071 32 1087 1086 1084 1085 1102 32 1095 1091 1076 1085 Columns 13 through 24 1086 1077 32 1084 1075 1085 1086 1074 1077 1085 1080 1077 % Восстановление текстовой фразы >> T=char(D) T =
Я помню чудное мгновение
Как видно результат восстановления вектора T полностью совпал с исходной строкой S.
Каждый раз для проверки работоспособности программы ее ввод в командные строки занимает значительное время. Поэтому лучше создать для программы модули – M-файлы.
22
4. Создать два M файла-функции. Первая функция должна преобразовывать массив ко-
дов заданной фразы в шифрограмму, а вторая – расшифровывать шифрограмму.
5. Сохранить их в своей папке под соответствующими именами (например, SC и DSC).
Пример приведен на рис. 6.5.
Рис. 6.5. M файлы-функции, реализующие шифрование и дешифрование строки S ме-
тодом замены
6. В командной строке задать строковую переменную S с заданной фразой, вызвать по-
очередно по имени М-файлы и проконтролировать полученный результат в командном окне. >> S='Я помню чудное мгновение';
% Вызов модуля шифрования относительно вектора исходной строки S
>> CK=SC(S); >> CH=char(CK) CH = в#тспрѐ#ъцзрси#пжрсеирли % Шифрограмма % Вызов модуля дешифрования относительно вектора шифрограммы CH >> D=DSC(CH); >> T= char(D) T =
Я помню чудное мгновение % Восстановленная фраза
Как видно результат восстановления текста Т полностью совпал с исходной фразой S, что говорит о правильной работоспособности модулей.
* Если в алгоритме шифрования строки имеется гамма, то она задается в командной строке в виде вектора, путем многократного циклического повторения гаммы и имеет длину, равную длине вектора S. В модуле дописывается дополнительная строка по ее преобразова­нию в код, и М-функция зависит уже от двух аргументов: строки и гаммы. Например,
>> S='Я помню чудное мгновение'; % Строка фразы
>> G='123456123456123456123456'; % Строка гаммы >> CK=SCG(S, G); >> CH=char(CK) CH = R""!#/R*'#S #! % Шифрограмма >> D=DSCG(CH,G); >> T=char(D) T = Я помню чудное мгновение % Восстановленная фраза
23
Название и назначение
блоков
Размещение в браузере
Параметры
блоков
Источники:
From Workspace, From Workspace1
Simulink / Sources
Дата: C: Sample time: 0 Дата: CD: Sample time: 0
Приемники:
To Workspace, To Workspace1
Simulink / Sinks
Variable name: CK Variable name: D
Блоки
MATLAB Fcn, MATLAB Fcn1
Simulink / User-Defined Func- tions
MATLAB function: SC MATLAB function: DSС
Регистраторы Display(1-4)
Simulink / Sinks
По умолчанию
Блок диаграммы:
Floating Bar Plot
Simulink Extras/ Additional Sinks
Y-Limits установить
[1040 1104] // min и max зна­чения кодов Cyr
Рис. 6.6. M файлы-функции, реализующие шифрование и дешифрование строки S мето-
дом гаммирования G
6.7. Методика моделирования в Simulink + MATLAB
1. С помощью пакета Simulink необходимо создать модель, реализующую процессы
шифрования и дешифрования по заданному методу.
В качестве примера на рисунках 6.10 и 6.12 приведены модели, реализующие крипто­графическую защиту методом замены и методом гаммирования соответственно.
Поскольку блоки модели работают с цифровыми данными, то сначала надо строко­вую фразу преобразовать в соответствующий ей код, а затем вызвать вектор данных кода из рабочей области в модель для дальнейшего шифрования. Эти функции выполняет блок
From Workspace.
Далее в модели необходимо выполнить обработку цифровых данных по заданному ал­горитму в блоке MATLAB Function и передать коды шифрограммы в рабочую область с по­мощью блока To Workspace для считывания шифрограммы в командной строке. Аналогично работает приемная часть модели.
В таблице 6.2 указаны названия блоков, папки в которых находятся блоки для модели­рования цифрового устройства и параметры блоков моделирования.
Таблица 6.2. Значения параметров блоков цифрового устройства
2. Установите для каждого блока соответствующие свойства. Окна параметров блоков
приведены на рис. 6.7 – 6.9.
Блок From Workspace (рис. 6.7) служит для получения данных из рабочей области в ви­де матрицы или вектора. Каждая строка матрицы имеет временную метку в первом столбце,
24
а вектор – временную метку на месте первого элемента. Поэтому при отображении данных в
Имя вектора кодов заданной строки S
CD
модели первый столбец матрицы или первый элемент вектора (места с временными метками) игнорируются. В качестве параметров в поле Data задается Имя матрицы (вектора) данных, которые считываются из командной строки, (в примере это С – на передаче и CD – на прие­ме) и эталонное время Sample time: 0.
Окно содержит список для задания конечного значения путем:
• Interpolate data – экстраполяции данных;
• Setting to zero – установки на нуль;
• Hold final data value – задержки последнего значения данных, для его представления
регистрирующими блоками;
• Cyclic Repetition – циклического повторения.
Рис. 6.7. Окно установки параметров блока From Workspace
При включении флажка Interpolate data производится интерполяция данных на проме­жутке времени до tfinal, а для значений времени, больших tfinal, выполняется экстраполяция по последним отсчетам данных (при снятии флажка сигнал на указанных интервалах обнуля­ется). Обратите внимание в дальнейшем при моделировании, что в матрице источника From Workspace отсчеты времени занимают первый столбец, а не строку.
Для записи отсчетов времени в рабочее пространство и их сохранения служит блок To Workspace. На рис. 6.8 показано окно параметров блока To Workspace. Здесь, помимо уже описанных параметров, задается формат записи: структура Structure, структура со временем
Structure with time и массив Array.
25
Имя вектора кодов шифрограммы
DSC
Имя модуля
Рис. 6.8. Окно установки параметров блока From Workspace1
Блок To Workspace записывает указанную матрицу (но без строки отсчетов времени) в
рабочее пространство. В нашем случае в рабочее пространство записывается векторе CK – на передаче и D – на приеме, получаемые после шифрования и расшифрования фразы. Имя век­торов CK и D появляется в окне браузера рабочего пространства после запуска модели на ис­полнение.
Поскольку алгоритм шифрования бывает довольно сложным, то реализовать его с по­мощью стандартных блоков моделирования Simulink не всегда представляется возможным. В таких случаях на помощь приходят блоки задания функции пользователя раздела User- Defined Functions. В качестве примера в модели используется блок MATLAB Fcn, который служит для задания функций одной переменной или ряда переменных по правилам, приня­тым для языка программирования базовой системы MATLAB. Это означает, что в теле функ­ции могут встречаться как встроенные функции системы MATLAB, так и любые процедуры и функции, реализованные в виде M-файлов. На рис. 6.6 представлено окно установки пара­метров этого блока.
Рис. 6.9. Окно установки параметров блока From Workspace
Окно содержит описание правил задания функции и раздел параметров Parameters. В поле MATLAB function задается выражение для функции (в нашем случае имя вызываемого модуля) и размер выходного вектора Output dimensions. Если она должна совпадать с длиной
26
вектора входного сигнала, то вводится значение -1. При этом на передаче на вход поступает вектор со значениями кодов фразы, а на выходе формируется вектор с кодами шифрограм­мы. На приеме на вход поступает вектор со значениями кодов шифрограммы, а на выходе формируется вектор с кодами восстановленной фразы той же длины.
Если функция состоит из одного аргумента, то достаточно в поле MATLAB function за­дать имя M-функции без входных параметров. В примере М-файл шифрования сохранен под именем SC. Во втором блоке MATLAB Fcn1 задается имя M-функции дешифрования DSC.
В случае же использования метода гаммирования имя M-функции задается с двумя входными параметрами (S,G), например SCG(S,G) или DSCG(CH,G).
В раскрывающемся списке Output signal type: можно выбрать тип выходного сигнала в виде вещественного числа (real), комплексного (complex) или задать автоматический выбор
(auto).
3. Настроить параметры симулирования. Для этого в пункте меню Simulation активизи-
ровать команду Configuration Parameters. В одноименном диалоговом окне выбрать:
опцию Solver, и в поле 'Type' установить значение Variable-step, а в поле Solver: dis-
crete (no continuous states);
опцию Diagnostics, и в поле 'Automatic solver parameter selection' установить значение
'none'
4. Сохранить модель в своей папке, после чего в командной строке MATLAB задать
строковую переменную c заданной фразой и преобразовать ее в вектор кодов. Блок From Workspace игнорирует первый отсчет вектора, и считывание производит со второго символа.
Чтобы не исказить строку в процессе шифрования надо при ее задании в начало добавить пробел, например,
>> S=' Я помню чудное мгновение';
>> C=double(S); >> CK= SC(С); >> char(CK) ans = #в#тспр#ъцзрси#пжрсеирли >> CD=CK; >> D=DSC(CD); >> T=char(D) T = Я помню чудное мгновение
27
Рис. 6.10. Модель шифрования и расшифрования строки методом замены
С целью удобства визуализации данных исходной фразы, шифрограммы и восстанов­ленной фразы удобно использовать блок Floating Bar Plot, при настройке которого можно увидеть коды символов в различных точках модели. Например, на рис. 6.11, приведена гис­тограмма кодов символов шифрограммы.
28
Рис. 6.11. Гистограмма кодов символов шифрограммы
Для отображения диаграммы с помощью блока Floating Bar Plot:
открыть окно свойства Floating Bar Plot и на вкладке Parameters в строке Y-Limits ус-
тановить пределы изменения исследуемых данных (например, символы кириллицы [1040
1104]);
открыть вкладку оптимизации, находящуюся в пункте меню: Simulation\Configuration
Parameters\Optimization и
снять флаг Signal storage reuse (повторное хранение сигнала, для версий MATLAB до
2010 включительно).
выделить коннектор, с выхода которых нужно получить отображение диаграммы (на-
пример, MATLAB Functions – CK для шифрограммы), и
запустить модель на исполнение (результат на рис. 6.11).
Модель шифрования и расшифрования строки методом гаммирования (рис. 6.12) со­держит дополнительные блоки:
29
Рис. 6.12. Модель шифрования и расшифрования строки методом гаммирования
From Workspace1 (с параметром Дата: G1), необходимый для считывания кодов гамы с командной строки,
Mux (подбиблиотеки Signal Routing), предназначенный для объединения векторов кодов строки и гаммы,
Для вывода результата в блок Floating Bar Plot надо устанавливать в Y-Limits пределы изменения исследуемых данных.
5. После сохранения модели она запускается на исполнение. Сравнить результаты моде-
лирования, отображаемые на дисплеях (Display 1-4) с вычисленными значениями (рис. 6.12).
Для этого:
найти в окне Workspace, где отображаются все переменные, (на рис. 6.13 в правом верх-
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]