Студопедия

КАТЕГОРИИ:


Архитектура-(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




Хеш-функция Salsa20

 

Если x = (x[0], x[1],…,x[63]) – последовательность 64 байт, то Salsa20(х) – тоже последовательность 64 байт:

 

Salsa20(x) = x + doubleround10(x) (2.8)

 

Итоговое преобразование Salsa20 — это суммирование по модулю 232 исходной последовательности х и результата 20 раундов чередующихся преобразований столбцов и строк.

Каждые 4 байта 64-байтной последовательности могут быть представлены словом, начинающемся с младшего байта. Имеем 16 слов:

 

(2.9)

 

где x[i] – байты x, а xj – слова.

Если:

(z0, z1,…, z15) = doubleround10(x0, x1,…, x15), (2.10)

 

тогда Salsa20(x) является последовательностью результатов:

littleendian-1(z0 + x0), littleendian-1(z1 + x1), …, littleendian-1(z15 + x15), где zi + xi – сумма двух слов по модулю 232.


Реализация хеш-функции Salsa20(x) при помощи пакета Mathcad представлена на рис. 2.5:

Рисунок 2.5 – Реализация в Mathcad хеш-функции Salsa20(x)

 

 

Расширение преобразует 32-байтный или 16-байтный ключ k и 16-байтную последовательность n в 64-байтную последовательность Salsa20k(n). Для расширения k используются константы:

1) Для 32-байтового k: σ0 = (101, 120, 112, 97), σ1 = (110, 100, 32, 51), σ2 = (50, 45, 98, 121), σ3 = (116, 101, 32, 107);

2) Для 16-байтового k: τ0 = (101, 120, 112, 97), τ1 = (110, 100, 32, 49), τ2 = (54, 45, 98, 121), τ3 = (116, 101, 32, 107);

Пусть k - 32-байтный ключ, который можно представить в виде двух 16-байтных ключей k0 и k1, n – 16-байтовая последовательность, тогда:

 

Salsa20 (n) = Salsa20(σ0, k0, σ1, n, σ2, k1, σ3). (2.11)

 

Пусть k - 16-байтный ключ, n – 16-байтовая последовательность, то:

 

Salsa20 k (n) = Salsa20(τ0, k, τ1, n, τ2, k, τ3). (2.12)

 

Расширение ключа для Salsa20 реализовано при помощи пакета Mathcad в виде последовательности нескольких операций.

Сначала выполняется объединение массивов в один массив М (рис.2.6):

(б)
(а)

Рисунок 2.6 - Объединение массивов в один массив М: а) в случае 32-байтового ключа; б) в случае 16-байтового ключа

 

Где σ0, σ1, σ2, σ3, τ0, τ1, τ2, τ3 – массивы констант; k – массив ключа (32-байтный или 16-байтный); n – 16-байтовая последовательность.

На данный момент программа представляет М массивом, внутри которого 7 различных массивов. Для того чтобы из М получить единую 64-байтовую последовательность E используется функция exp(M) (рис.2.7):

 

Рисунок 2.7 – Реализация в Mathcad функции exp(M)

 

После этого выполняется преобразование Salsa20(E) по формулам (2.11) или (2.12), где Е – последовательность 64 байт.





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


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


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



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




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