КАТЕГОРИИ: Архитектура-(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-битных значений. Сдвиг обозначается Ψ и определяется следующим образом:
Дата добавления: 2014-01-07; Просмотров: 768; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |