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

ЛР3

.doc
Скачиваний:
15
Добавлен:
23.06.2024
Размер:
315.9 Кб
Скачать

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

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

Московский технический университет связи и информатики

Кафедра многоканальных телекоммуникационных систем

Лабораторная работа № 3

по дисциплине

Цифровые системы передачи и методы их защиты

Реализация принципов криптозащиты на основе средств микропроцессорной техники

Бригада № 5

Выполнил: студент гр. БЗС2002

Протасова Т. Н.

Проверила: Зуйкова Т. Н.

Москва 2023

1. Постановка задачи и исходные данные

Средствами сигнального процессора ADSP-2181 реализовать операцию умножения в простых полях Галуа и базовую криптографическую операцию XOR в соответствии с индивидуальным заданием.

Xi = {1616; 1318; 342; 35; 31},

Ki = {2241; 1318; 1616; 910; 14},

p = 2267;

2. Краткая теория

Структура ГАД иллюстрируется рис. 1. В состав каждого ГАД входят четыре комплекта пар 14 - разрядных регистров I - указателей косвенной адресации и L - длины буфера, а также четыре 14 - разрядных регистра - модификатора M. Косвенный поставтомодифицирующий режим адресации к кольцевым буферам организуется в следующей последовательности.

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

Рисунок 1. Структура ГАД 1 и ГАД 2

Перед началом цикла обращений пара регистров Ik и Lk должна быть привязана к соответствующему буферу: регистр - указатель Ik должен быть установлен на ячейку начала адресации (при этом адрес начала буфера может быть указан как ^имя_буфера), а в регистр длины Lk должно быть записано значение длины кольцевого буфера (в абсолютном выражении или как %имя_буфера). В регистр - модификатор Мn должно быть записано положительное или отрицательное значение величины шага изменения адреса при обращении.

3. Разработанные блок-схемы программ

Рисунок 2 - блок-схема программы XOR

Рисунок 3 – блок-схема программы нахождения остатка

4. Тексты программ

.section/dm vars;

.var/circ Z[5];

.var/circ X[5] = 1616, 1318, 342, 35, 31;

.var/circ K[5] = 2241, 1318, 1616, 910, 14;

.var/circ Y[5];

.var p = 2267;

.var a = 5;

.var b = 3;

.section/pm program;

jump main;

div:

af = pass mr1;

ay0 = mr0;

ax0 = dm(p);

astat = 0;

ar = pass ax0;

if ne jump del;

astat = 4;

rts;

del:

ar = pass ax0;

if gt jump large;

if lt jump smol;

large:

divq ax0; divq ax0;

divq ax0; divq ax0;

divq ax0; divq ax0;

divq ax0; divq ax0;

divq ax0; divq ax0;

divq ax0; divq ax0;

divq ax0; divq ax0;

divq ax0; divq ax0;

divq ax0;

mr2 = 0;

my0 = ax0;

ar = pass ay0;

mr = mr - ar * my0 (ss);

rts;

smol:

sr1 = ax0;

sr = lshift sr1 by -1 (hi);

divq sr1; divq sr1;

divq sr1; divq sr1;

divq sr1; divq sr1;

divq sr1; divq sr1;

divq sr1; divq sr1;

divq sr1; divq sr1;

divq sr1; divq sr1;

divq sr1; divq sr1;

ar = pass ay0;

if eq jump zero;

af = tstbit 0 of ax0;

if ne ar = ar - 1;

zero:

mr2 = 0;

my0 = ax0;

mr = mr - ar * my0 (ss);

rts;

main:

ena m_mode;

I0 = X;

L0 = length(X);

I1 = K;

L1 = length(K);

I2 = Z;

L2 = length(Z);

I3 = Y;

L3 = length(Y);

M0 = 1;

CNTR = 5;

do c1 until CE;

mx0 = dm(I0, M0);

my0 = dm(I1, M0);

mr = mx0 * my0 (uu);

call div;

c1: dm(I2, M0) = mr0;

CNTR = 5;

do c2 until CE;

ax0 = dm(I0, M0);

ay0 = dm(I1, M0);

ar = ax0 xor ay0;

dm(I3, M0) = ar;

c2: ar = 0;

end: jump end;

5. Анализ полученных данных

Посчитаем вручную, что нужно получить в результате выполнения программы:

X1 = 1616 = В#011001010000 = 0x650, X2 = 1318 = В#010100100110 = 0x526, X3 = 342 = В#000101010110 = 0x156, X4 = 35 = В#00100011 = 0x23, X5 = 31 = В#00011111 = 0x1F;

K1 = 2241 = В#100011000001 = 0x8C1, K2 = 1318 = В#010100100110 = 0x526, K3 = 1616 = В#011001010000 = 0x650, K4 = 910 = В#001110001110 = 0x38E, K5 = 14 = В#1110 = 0xE;

X1⋅K1 = 1616⋅2241 = 3621456, X2⋅K2 = 1318⋅1318 = 1737124, X3⋅K3 = 342⋅1616 = 552672, X4⋅K4 = 35⋅910 = 31850, X5⋅K5 = 31⋅14 = 434;

(X1⋅K1):2267 = (1616⋅2241):2267 = 1597, (X2⋅K2):2267 = (1318⋅1318):2267 = 766, (X3⋅K3):2267 = (342⋅1616):2267 = 243, (X4⋅K4):2267 = (35⋅910):2267 = 14, (X5⋅K5):2267 = (31⋅14):2267 = 0;

(X1⋅K1) mod 2267 = (1616⋅2241) mod 2267 = 1057, (X2⋅K2) mod 2267 = (1318⋅1318) mod 2267 = 602, (X3⋅K3) mod 2267 = (342⋅1616) mod 2267 = 1791, (X4⋅K4) mod 2267 = (35⋅910) mod 2267 = 112, (X5⋅K5) mod 2267 = (31⋅14) mod 2267 = 434;

X1 XOR K1 = 3729, X2 XOR K2 = 0, X3 XOR K3 = 1798, X4 XOR K4 = 941, X5 XOR K5 = 17;

Результат работы программы совпадает с полученными расчётами, значит, программа работает корректно.

6. Выводы

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

7

Соседние файлы в предмете Цифровые системы передачи