Студопедия

КАТЕГОРИИ:


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

Алгоритм обработки одного блока сообщения (шаговая функция хеширования)




A, b, c, d, e, f, g, h

Основой алгоритма является модуль, состоящий из 64 циклических обработок каждого блока M(i):

T1 = h + Σ1{256}(e) + Ch(e, f, g) + Kt{256} + Wt

T2 = Σ0{256}(a) + Maj(a, b, c)

h = g

g = f

f = e

e = d + T1

d = c

c = b

b = a

a = T1 + T2

где: Ki{256} – шестьдесят четыре 32-битных константы, каждая из которых является первыми 32-мя битами дробной части кубических корней первых 64 простых чисел.

Wt вычисляются из очередного блока сообщения по следующим правилам:

Wt = Mt(i), 0 ≤ t ≤ 15

Wt = σ1{256}(Wt-2) + Wt-7 + σ0{256}(Wt-15) + Wt-16,

16 ≤ t ≤ 63

i -ое промежуточное значение хэш-кода H(t) вычисляется следующим образом:

H0(i) = a + H0(i-1)

H1(i) = b + H1(i-1)

H2(i) = c + H2(i-1)

H3(i) = d + H3(i-1)

H4(i) = e + H4(i-1)

H5(i) = f + H5(i-1)

H6(i) = g + H6(i-1)

H7(i) = h + H7(i-1)

 

Схожим образом вычисляются значения хэш-функций SHA-384 и SHA-512.

Функция хэширования ГОСТ Р 34.11 – 94

Алгоритм ГОСТ 34.11 является отечественным стандартом для хэш-функций. Его структура довольно сильно отличается от структуры алгоритмов SHA-1, 2 или MD5, в основе которых лежит алгоритм MD4.

Длина хэш-кода, создаваемого алгоритмом ГОСТ 3411, равна 256 битам. Алгоритм разбивает сообщение на блоки, длина которых также равна 256 битам. Кроме того, параметром алгоритма является стартовый вектор хэширования Н – произвольное фиксированное значение длиной также 256 бит.

Сообщение обрабатывается блоками по 256 бит справа налево.

Каждый блок сообщения обрабатывается по следующему алгоритму:

1. Генерация четырех ключей длиной 256 бит каждый.

2. Шифрование 64-битных значений промежуточного хэш-кода H на ключах Ki(i = 1, 2, 3, 4) с использованием алгоритма ГОСТ 28147 в режиме простой замены.

3. Перемешивание результата шифрования.

Этап 1. Генерация ключей

Для генерации ключей используются следующие данные:

· промежуточное значение хэш-кода Н длиной 256 бит (на первой итерации – стартовый вектор хеширования;

· текущий обрабатываемый блок сообщения М длиной 256 бит;

· параметры – три значения С2, С3 и С4 длиной 256 бит следующего вида: С2 и С4 состоят из одних нулей, а С3 равно

18 08 116 024 116 08 (08 18)2 18 08 (08 18)4 (18 08)4

где степень обозначает количество повторений 0 или 1 (длина - 256 бит).

Используются две формулы, определяющие перестановку и сдвиг.

Перестановка Р битов определяется следующим образом: каждое 256-битное значение рассматривается как последовательность тридцати двух 8-битных значений. Перестановка Р элементов 256-битной последовательности выполняется по формуле y = φ (x), где x – порядковый номер 8-битного значения в исходной последовательности; y – порядковый номер 8-битного значения в результирующей последовательности.

φ (i +1 +4(k-1)) = 8i +k где i = 0 ÷ 3, k = 1 ÷ 8

Преобразование (сдвиг) А определяется по формуле:

A (x) = (x1 Å x2) ║ x4║ x3 ║ x2,

где xi – соответствующие 64 бита 256 – битного значения x;

║- обозначение конкатенации.

Присваиваются следующие начальные значения: i = 1, U = H, V = M

Вычисляются: W = U Å V, K1 = Р (W)

Ключи K2, K3, K4 вычисляются последовательно по следующему алгоритму:

U = A(U) Å Сi,

V = A(A(V)),

W = U Å V,

Ki = Р(W)

В результате получили ключи: K1, K2, K3 и K4.

Этап 2. Шифрующее преобразование

Выполняется шифрование 64-битных элементов текущего значения хэш-кода Н с ключами K1, K2, K3 и K4 по алгоритму ГОСТ 28147-89 в режиме простой замены. При этом хэш-код Н рассматривается как последовательность 64-битных значений:

H = h4 || h3 || h2 || h1

si = EKi [hi] i = 1, 2, 3, 4

S = s1 || s2 || s3 || s4 в результате получили последовательность S.

 

 

Этап 3. Перемешивающее преобразование

На заключительном этапе обработки очередного блока выполняется перемешивание полученной последовательности. 256-битное значение рассматривается как последовательность шестнадцати 16-битных значений. Сдвиг обозначается Ψ и определяется следующим образом:

η16 || η15 ||... || η1 – исходное значение
Ψ = η1 Å η2 Å η3 Å η4 Å η13 Å η16 || η16 ||... || η2 – результирующее значение; (циклический сдвиг вправо с оперцией XOR над байтами 1, 2, 3, 4, 13, 16 исходного слова).   η16 η15 η14 η13 η12 η5 η4 η3 η2 η1
       
   
 
 

 

 


 

 

 


η16 η15 η14 η13 η12 η4 η3 η2 η1

Рис. 9.10. Функция перемешивающего преобразования (ψ)

Результирующее значение пошаговой функции хэширования определяется следующим образом:

Χ(Mq, Hq+1) =ψ61 (Hq Å ψ (Mq Å ψ 12(Sq)))

где:

Hq– предыдущее значение хэш-кода,
Мq – текущий обрабатываемый блок,
Ψi – i-ая степень преобразования Ψ.

 




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


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


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



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




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