Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

ДЕМОНСТРАЦИЯ РАБОТЫ АЛГОРИТМА SALSA20

 

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

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

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

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

 

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

 

где с[i] = m[i] Salsa20 k, [i/64]) [i mod 64].

 

 

Для начала необходимо сгенерировать уникальное 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 с результатом процедуры расширения ключа Salsa20 k (υ).

Результат процедуры Salsa20 k (υ) различен для каждого отдельного эллемента сообщения 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

 

Теперь можно перейти к процедуре расширения ключа Salsa20 k (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), которая выполняет процедуру расширения ключа Salsa20 k (n) для каждого n из массива N и записывает результат в массив S. Массив S включает в себя 65 эллементов, которые являются последовательностями 64 байт.


 

 

 

Рисунок 3.7 – Формирование массива результатов процедуры расширения ключа Salsa20 k (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 выполнено успешно.


ПЕРЕЧЕНЬ ИСТОЧНИКОВ

 

1. Рябко Б. Я. Криптографические методы защиты информации / Б. Я. Рябко, А. Н. Фионов. — Москва: Горяч.Линия-Телеком, 2005. – 187c.

2. Гатчин Ю.А. Основы криптографических алгоритмов. Учебное пособие / Ю.А. Гатчин, А.Г. Коробейников. – СПб.: СПбГИТМО(ТУ), 2002. – 113 c.

3. Анашин В. С. eSTREAM: быстрые и стойкие поточные шифры [Электронный ресурс] / В. С. Анашин, А. Ю. Богданов, И. С. Кижватов. – Режим доступа: http://www.itsec.ru/articles2/Oborandteh/estream_bystrye_i_st

4. Bernstein D.J. Salsa20 specification / D.J. Bernstein. – Chicago: The University of Illinois, 2005. – 9 p.

5. Bernstein D.J. The Salsa20 family of stream ciphers / D.J. Bernstein. – Chicago: The University of Illinois, 2005. – 15 p.

6. Bernstein D.J. Salsa20 design / D.J. Bernstein. – Chicago: The University of Illinois, 2005. – 9 p.

 




Поделиться с друзьями:


Дата добавления: 2017-01-13; Просмотров: 975; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.