Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursovaya_kripto4.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
423 Кб
Скачать
☆

1.2 Основные понятия и базовые операции

Алгоритм шифрования Salsa20 выполняет операции над словами. Словом называется элемент множества {0,1,…,232−1}. В пакете Mathcad слово представлено в виде одномерного массива «0» и «1».

Для удобства ввода, реализованы функции dec2bin и bin2dec (рис.1.1).

dec2bin преобразует десятичное число D в массив, являющийся представлением двоичного числа, то-есть 32-битное слово. bin2dec выполняет обратное преобразование из массива в десятичное число:

Рисунок 1.1 – Функции dec2bin и bin2dec

Таким образом, десятичное число «1000» преобразуется в 32-битное слово, представленного в виде массива на рисунке 1.2:

Рисунок 1.2 – Преобразование десятичного числа в 32-битное слово

Для работы со словами в пакете Mathcad реализованы базовые операции summod2, mod и shift, которые представлены на рисунке 1.3.

summod2 осуществляет поразрядное сложение двух 32-битных двоичных слов B1и B2 по модулю 2, то есть операцию «исключающее или».

Функция mod выполняет сложение двух слов B1и B2 по модулю .

Функция shift осуществляет с-битовый циклический левый сдвиг слова, то есть каждый бит слова смещается относительно своей старой позиции на с разрядов влево (от младшего разряда к старшему).

Рисунок 1.3 – Функции summod2, shift и sum.

2 Основные функции алгоритма salsa20

2.1 Функция quarterround(y)

Основным блоком системы является преобразование quarterround(y) над четырьмя словами. Суть в том, что для каждого слова складывается два предыдущих, затем сумма сдвигается (циклично) на определенное количество бит и побитово суммируется результат с выбранным словом. Последующие операции производятся с новыми значениями слов.

Пусть y – последовательность 4 слов: y = (y1, y2, y3, y4). Тогда функция quarterround(y) = (z1, z2, z3, z4), где:

. (2.1)

где – операция побитового сложения (XOR), + – операция сложения по модулю , <<< – операция циклического сдвига на с разрядов влево.

Реализация функции quarterround(y) при помощи пакета Mathcad представлена на рис. 2.1:

Рисунок 2.1 – Реализация в Mathcad функции quarterround(y)

Можно рассматривать эту функцию как преобразования слов y1, y2, y3 и y4. Каждое из таких преобразований обратимо, как и функция в целом.

2.2 Функция rowround(y)

Для этого преобразования требуется 16 слов. Их можно представить в виде матрицы 4х4 (2.2). Каждый ряд этой матрицы преобразуется функцией quarterround(y). Слова из строки берутся по порядку, начиная с i-го для i-й строки, где i={0,1,2,3}.

. (2.2)

Пусть y = (y0, y1,.., y15) – последовательность 16 слов, тогда rowround(y) = (z0, z1,.., z15) также последовательность 16 слов, где:

(2.3)

Реализация функции rowround(y) при помощи пакета Mathcad представлена на рис. 2.2:

Р исунок 2.2 - Реализация в Mathcad функции rowround(y)

2.3 Функции columnround(y) и doubleround(y)

Преобразование columnround(y) выполняется над столбцами матрицы (2.2) по аналогии с rowround(y). Если y = (y0, y1,.., y15), то columnround(y) = (z0, z1,.., z15) также последовательность 16 слов, где:

(2.4)

Реализация функции columnround(y) при помощи пакета Mathcad представлена на рис. 2.3:

Рисунок 2.3 - Реализация в Mathcad функции columnround (y)

Функция doubleround(y) является последовательным применением функций columnround, а затем rowround:

doubleround(y) = rowround(columnround(y)) (2.5)

Реализация функции doubleround(y) при помощи пакета Mathcad идентична (2.5)

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