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

3 Демонстрация работы алгоритма salsa20

3.1 Функция шифрования Salsa20

Шифром l-байтной последовательности m для l ϵ {0,1,…270} является Salsa20k (υ) m, где υ – уникальное 8-байтовое число «nonce», k – 32 или 16-байтовый ключ, m – исходное сообщение.

Salsa20k (υ) – это последовательность 270 байт, представляет собой:

Salsa20k (υ,1), Salsa20k (υ,2), …,Salsa20k (υ,264-1), где i – уникальная 8-байтовая последовательность (i0, i1,…, i7), такая что i = i0 + 28i1 + … + 256i7

Формула Salsa20k (υ) m неявно укорачивает Salsa20k (υ) до той же длинны, что и m:

Salsa20k (υ) (m[0], m[1], …, m[l - 1]) = (c[0], c[1], …, c[l - 1]), (3.1)

где с[i] = m[i] Salsa20k (υ, [i/64]) [i mod 64].

3.2 Демонстрация работы алгоритма Salsa20 в среде Mathcad

Для начала необходимо сгенерировать уникальное 8-байтовое число υ и сгенерируем 16-байтный ключ k (рис.3.1).

Рисунок 3.1 - Функции генерации уникального 8-байтового числа υ и

16-байтного ключа k

Результаты работы функций представлены на рисунке 3.2:

Р исунок 3.2 – Полученные число υ и ключ k

Теперь сгенерируем сообщение m длинной l байт (рис. 3.3):

Рисунок 3.3 – Генерация l-байтного сообщения

Из формулы (3.1) видно, что для каждого эллемента сообщения m выполняется сложение по модулю 2 с результатом процедуры расширения ключа Salsa20k (υ).

Результат процедуры Salsa20k (υ) различен для каждого отдельного эллемента сообщения m, потому что помимо самого ключа k процедуре необходимо передать последовательность 16 байт – n, где n = (υ, i). Уже было отмечено в п.3.1, что i и υ это последовательности 8 байт и i в отличии от υ зависит от порядкового номера байта сообщения m. Функция, которая реализует эту зависимость и записывает результат в массив I на рисунке 3.4:

Рисунок 3.4 – Функция зависимости i от порядкового номера байта сообщения m

Каждый элемент массива I содержит 8-байтовую уникальную последовательность i, число элементов массива – 65, что соответствует длине l сообщения m (рис. 3.3).

Далее необходимо объединить 8-байтовые последовательности υ и i в 16-байтовую n.Функция на рисунке 3.5 именно так и формирует 65 последовательностей из 16 байт n и записывает их в массив N. Как и в предыдущем случае количество элементов в массиве N соответствует длине l сообщения m.

Рисунок 3.5 – Формирование массива 16-байтных последовательностей n

Теперь можно перейти к процедуре расширения ключа Salsa20k (n), но для начала нужно занести в Mathcad константы τ0, τ1, τ2, τ3 для 16-байтного ключа k (рис. 3.6), где tau0, tau1, tau2, tau3 соответственно τ0, τ1, τ2, τ3:

Рисунок 3.6 – Ввод констант τ0, τ1, τ2, τ3 для 16-байтного ключа k

На рисунке 3.7 представлена функция S(n), которая выполняет процедуру расширения ключа Salsa20k (n) для каждого n из массива N и записывает результат в массив S. Массив S включает в себя 65 эллементов, которые являются последовательностями 64 байт.

Рисунок 3.7 – Формирование массива результатов процедуры расширения ключа Salsa20k (n)

Теперь для того чтобы получить шифртекст, достаточно сложить по модулю 2 результаты из массива S c байтами сообщения m. Для этого нужно чтобы эллемент сообщения m был равен 64 байтам. Так как сообщение имеет длинну 65 байт, необходимо разбить его на две части по 64 байта (рис.3.8):

Рисунок 3.8 – Разбитие сообщения m на блоки по 64 байта

Как видно из рисунка 3.8, в массиве M записано 2 блока по 64 байта.

Ф ункция, crypt(m, s) выполняющая сложение по модулю 2 массивов S и M представлена на рисунке 3.9:

Рисунок 3.9 - Функция сложения по модулю 2 двух массивов S и M

Результатом этой функции является последовательность 64 байт CR, которая и есть шифртекст сообщения m. Повторное сложение по модулю 2 массива шифртекста CR и S даёт массив RC, который соответствует исходному m. Результаты шифрования и расшифрования представлены на рисунке 3.10:

Рисунок 3.10 – Результаты шифрования и расшифрования сообщения m при помощи алгоритма шифрования Salsa20

ВЫВОДЫ

В ходе курсовой работы было проведено изучение и моделирование потокового алгоритма шифрования Salsa20. Для этого сначала было проведено изучение алгоритма: основные принципы работы симметричных потоковых шифров, к которым относится Salsa20, его основные преимущества и недостатки, сфера применения. Изучены понятия , которые применяются для описание алгоритма, а также выполнена реализация базовых операций в среде Mathcad.

На втором этапе работы было проведено изучение работы основных функций алгоритма шифрования Salsa20 и их моделирование в среде Mathcad с помощью базовых операций, определённых ранее.

На последнем этапе было проведено изучение и моделирование механизма шифрования сообщений Salsa20 с помощью функций, смоделированных предыдущем этапе. Для этого вначале был выбран ключ, число “nonce” и сообщение длинны l. С помощью ключа и числа “nonce” были получены значения n, которые в дальнейшем были использованы для получение гамма-шифры с помощью процедуры расширения ключа.

В заключении было осуществлено шифрование сообщения с помощью алгоритма шифрования Salsa20 и получение шифр-текста, а затем осуществлено его расшифрование и проверка правильности работы алгоритма.

Поскольку расшифрованное сообщение совпадает с исходным сообщением, то моделирование работы алгоритма шифрования Salsa20 выполнено успешно.

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