145. Противодействие методам социальной инженерии



страница6/27
Дата29.11.2016
Размер1.54 Mb.
Просмотров3901
Скачиваний0
1   2   3   4   5   6   7   8   9   ...   27

2.2. SHA-512


SHA (Secure Hash Algorithm) - алгоритм безопасного хэширования с 512-битовым дайджестом сообщения. Эта версия похожа на другие алгоритмы этого семейства, которые основаны на схеме Меркеля-Дамгарда. Мы выбрали для рассмотрения особую версию. Она самая поздняя, обладает более полной структурой, чем другие, и наиболее длинным дайджестом сообщения. Если понять эту версию, нетрудно будет усвоить структуру других версий.

Введение


SHA-512 создает дайджест из сообщения, содержащего много блоков. Каждый блок имеет длину 1024 бита, как это показано на рис. 2.6.




Рис. 2.6.  Создание дайджеста сообщения SHA-512

Дайджест вначале устанавливается на определенное заранее значение 512 битов. Алгоритм смешивает это начальное значение с первым блоком сообщения, чтобы создать первый промежуточный дайджест сообщения 512 битов. Этот дайджест затем смешивается со вторым блоком, чтобы создать второй промежуточный дайджест. Наконец, (N - l) -ый дайджест смешивается с N -ым блоком - они создают N -ый дайджест. Когда последний блок обработан, результирующий дайджест - это дайджест полного сообщения.


Подготовка сообщения


SHA-512 требует, чтобы длина первоначального сообщения была меньше, чем 2128 битов. Если длина сообщения равна или больше, чем 2128, оно не будет обработано SHA-512. Это обычно не проблема, потому что 2128 битов превосходят возможную сегодня полную емкость хранения любой системы.

SHA-512 создает дайджест сообщения на 512 битов из сообщения меньшего, чем 2128.

Пример 2.1

Этот пример показывает, что ограничение длины сообщения SHA-512 - не серьезная проблема. Предположим, что мы должны передать сообщение длиною 2128 бита в секунду. Какое время потребуется для системы коммуникаций со скоростью передачи данных 264 бита в секунду, чтобы передать это сообщение?



Решение

Системы коммуникаций, которая может передать 264 бита в секунду, пока еще не существует. Даже если бы она была, потребовалось бы много лет, чтобы передать это сообщение. Отсюда ясно, что мы не должны волноваться по поводу ограничения длины сообщения для SHA-512.



Пример 2.2

Этот пример также касается длины сообщения в SHA-512. Сколько страниц занимает сообщение 2128 бит?

Предположим, что символ имеет длину 32 или 26 бит. Каждая страница - меньше, чем 2048, или приблизительно 212, символов. Тогда 2128 битов требуют по крайней мере 2128/218, или 2110 страниц. И снова ясно, что мы не должны волноваться об ограничении на длину сообщения.

Поле длины и заполнение

Прежде чем дайджест сообщения может быть создан, SHA-512 требует сложения поля длины - это целое число без знака на 128 битов, которое определяет длину сообщения в битах, - с сообщением. Это длина первоначального сообщения перед заполнением. Поле целого числа без знака 128 битов можно определить как число между 0 и 2128 - 1, которое является максимальной длиной сообщения, принятого в SHA-512. Поле длины определяет длину первоначального сообщения перед его сложением или заполнением (рис. 2.7).




Рис. 2.7.  Заполнение и поле длины в SHA-512

Перед сложением поля длины мы должны дополнить первоначальное сообщение, чтобы сделать длину кратной 1024. Для поля длины резервируется 128 битов, как показано на рис. 2.7. Длина области заполнения может быть рассчитана следующим образом. Пусть |M| - длина первоначального сообщения и |P| - длина поля заполнения.

( M + P + 128) = 0 mod 1024 -> P = (- M - 128) mod 1024

Формат заполнения - это одна 1, сопровождаемая необходимым числом нулей (0).


Слова

SHA-512 оперирует словами; он - ориентируемый на слово. Слово определено длиной 64 бита. Это означает, что после того как заполнение и поле длины добавляются к сообщению, каждый блок сообщения состоит из шестнадцати слов по 64 бита. Дайджест сообщения также образуется из слов по 64 бита, но дайджест сообщения - только восемь слов, и слова обозначают A, B, C, D, E, F, G и H, как показано на рис. 2.8.




Рис. 2.8.  Блок сообщения и дайджест в виде отдельных слов

SHA-512 - алгоритм, ориентированный на слово. Каждый блок - 16 слов; в дайджесте - только 8 слов.
Расширение слова

Перед обработкой каждый блок сообщения должен быть расширен. Блок образован из 1024 битов, или шестнадцати слов по 64 бита. Как мы увидим позже, в фазе обработки нам нужно 80 слов. Так что блок с 16-ю словами должен быть расширен до 80 слов от W0 до W79рис. 2.9 показывает процесс расширения слова. Блок на 1024 бита порождает первые слова; остальная часть слов получается от уже сделанных слов согласно операциям, которые показаны на рисунке.




увеличить изображение

Рис. 2.9.  Расширение слова в SHA -52
Инициализация дайджеста сообщения

Алгоритм использует восемь констант для инициализации дайджеста сообщения. Мы обозначаем их от A0 до H0, что соответствует обозначению слов, используемых для дайджеста. табл. 2.2 показывает значение этих констант.

Таблица 2.2. Значение констант при инициализации дайджеста сообщения SHA-512




Буфер

Значение (шестнадцатеричное)

Буфер

Значение (шестнадцатеричное)

A0

6A09E667F3BCC908

E0

510E527FADE682D1

B0

3B67AE8584CAA73B

F0

9B05688C2B3E6C1F

C0

3C6EF372EF94F828

G0

1F83D9ABFB41BD6B

D0

A54FE53A5F1D36F1

H0

5BEOCD19137E2179

Читатель может задаться вопросом, откуда взяты эти значения. Они рассчитаны из первых восьми простых чисел (2, 3, 5, 7, 11, 13, 17 и 19). Каждое значение - дробная часть квадратного корня соответствующего простого числа после преобразования к двоичной форме и сохранения только первых 64 битов. Например, восьмое простое число - 19 имеет квадратный корень (191/.2) = 4,35889894354. Преобразовывая число к двоичной форме только с 64 битами в дробной части, мы имеем

(100.0101 1011 1110... 1001)2 -> (4,5BEOCD19137E2179)16



SHA-512 сохраняет дробную часть (5BEOCD19137E2179)16 как целое число без знака.
Функция сжатия

SHA-512 создает 512 битов дайджест-сообщения (восемь слов на 64 бита) из сообщения, которое состоит из множества блоков, где каждый блок содержит 1024 бита. Обработка каждого блока данных вSHA-512 включает 80 раундов. рис. 2.10 показывает общую схему сжатия функции. В каждом раунде содержание восьми предыдущих буферов - это одно слово из расширенного блока ( Wi ), и одна константа на 64 бита ( Ki ), смешанные вместе. Они обработаны затем, чтобы создать новое множество из восьми буферов. В начале обработки значения восьми буферов сохранены как восемь временных переменных. В конце обработки (после того как сделан шаг 79) эти значения добавляются к значениям, созданным на шаге 79. Мы вызываем эту последнюю операцию финальным сложением, как это показано на рисунке.




увеличить изображение

Рис. 2.10.  Функция сжатия в SHA-512
Структура каждого раунда




увеличить изображение

Рис. 2.11.  Структура каждого раунда SHA-512

В каждом раунде создаются восемь новых, по сравнению с предыдущим раундом, значений буферов по 64 бита. На рис. 2.11 мы видим, что шесть буферов - точные копии предыдущего раунда, как это показано ниже:

A -> B B -> C C -> D E -> F F -> G G -> H

Два новых буфера, A и E, получают соответствующие значения от некоторых сложных функций, которые включают в себя некоторые значения предыдущих буферов, соответствующее слово для этого раунда (Wi) и константу для этого раунда (Ki). Рис. 2.11 показывает структуру каждого раунда.

Здесь есть два смесителя, три функции и несколько операторов. Каждый смеситель обрабатывает две функции. Описание функций и операторов приведено ниже.


  1. То, что мы называем мажоритарной функцией, является поразрядной функцией. Она использует три соответствующих бита в трех буферах ( A, B и C ) и вычисляет

Результат - это значение, которое имеет большинство из трех бит. Если два или три бита равны единице (1) , то результат имеет значение бит 1; иначе он равен 0.

Функция, которую мы называем условной функцией ( Conditional ) - также поразрядная функция. Она использует три бита, которые содержатся в трех буферах ( E, F и G ), и вычисляет

Результат подчиняется логике "Если E, то F ; иначе G ".



  1. Функция "циклическое перемещение" (Rotate) обрабатывает три значения одного и того же буфера ( A или E ) и применяет операцию ИСКЛЮЧАЮЩЕЕ ИЛИ с результатом мажоритарной функции.



  1. Функция "циклическое перемещение вправо" (RotRi (x) ) - та же самая, которую мы использовали в процессе расширения слова.

  2. Оператор сложения, применяемый в процессе, - сложение по модулю 264. Он означает результат сложения двух или больше буферов, содержащих всегда слово на 64 бита.

  3. Есть 80 констант, K0 к K79, каждая по 64 бита, как показано в табл. 2.3 в шестнадцатеричной форме (четыре в каждой строке таблицы). Аналогично начальным значениям для восьми буферов, эти значения вычислены из первых 80 простых чисел ( 2, 3..., 409 ).

Таблица 2.3. Восемьдесят констант, используемых для восьмидесяти раундов в SHA-512




428A2F98D728AE22

7137449123EF65CD

B5COFBCFEC4D3B2F

E9B5DBA58189DBBC

3956C25BF348B538

59F111F1B605D019

923F82A4AF194F9B

AB1C5ED5DA6D8118

D807AA98A3030242

12835B0145706FBE

243185BE4EE4B28C

550 C7DC3D5FFB4E2

72BE5D74F27B896F

80DEB1FE3B1696B1

9BDC06A725C71235

C19 BF1 74CF 692694

E49B69C19EF14AD2

EFBE4786384F25E3

OFC19DC68B8CD5B5

240 CA1CC77AC9C65

2DE92C6F592B0275

4A7484AA6EA6E483

5CBOA9DCBD41FBD4

76F 9 8 8DA831 153B5

983E5152EE66DFAB

A831C66D2DB43210

B00327C898FB213F

BF5 97FC7 BEEF0EE4

C6EOOBF33DA88FC2

D5A79147930AA725

06CA6351E003826F

142 92 967 0AOE6E70

27B70A8546D22FFC

2E1B21385C26C926

4D2C6DFC5AC42AED

533 80 D1 39D95B3DF

650A73548BAF63DE

766AOABB3C77B2A8

81C2C92E47EDAEE6

92722 C8 514 823 53B

A2BFE8A14CF10364

A81A664BBC423001

C24B8B70DOF89791

C76C5 1A 30 6 54BE30

D192E819D6EF5218

D69906245565A910

F40E35855771202A

106AA 07 032BBD1B8

19A4C116B8D2DOC8

1E376C085141AB53

2748774CDF8EEB99

34BOBCB 5E 19B4 8A8

391COCB3C5C95A63

4ED8AA4AE3418ACB

5B9CCA4F7763E373

682 E 6FF 3D6B2B8A3

748F82EE5DEFB2FC

78A5636F43172F60

84C87814A1FOAB72

8CC7 020 81A 6439EC

90BEFFFA23631E28

A4506CEBDE82BDE9

BEF9A3F7B2C67915

C671 78F 2E372532B

CA273ECEEA26619C

D186B8C721COC207

EADA7DD6CDEOEB1E

F57D 4F7 FEE6E178

06F067AA72176FBA

OA637DC5A2C898A6

113F9804BEF90DAE

1B71 0B3 5131C471B

28DB77F523047D84

32CAAB7B40C72493

3C9EBEOA15C9BEBC

431D 67C 49C100D4C

4CC5D4BECB3E42B6

4597F299CFC657E2

5FCB6FAB3AD6FAEC

6C44 198 C4A475 817

Каждое значение - дробная часть кубического корня из соответствующего простого числа после преобразования этого числа к двоичной форме, сохраняются только первые 64 бита. Например, 80-е простое число - ( 409 ). Кубический корень(409) 1/3 = 7,42291412044. Преобразовывая это число к двоичному виду только с 64 битами в дробной части, мы получаем

(111,0110 1100 0100 0100...0111) 2 -> (7,6C44198C4A475817).



SHA-512 сохраняет дробную часть, (6C44198C4A475817)16, как целое число без знака.
Анализ

С дайджестом сообщения 512 битов от SHA-512 ожидалось, что он будет более стойким ко всем типам атак, включая атаки коллизии. Он должен был быть лучшим проектом этой версии: более эффективным и более безопасным, чем предыдущие. Однако необходимы были серьезные исследования и испытания, для того чтобы это подтвердить.


Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9   ...   27


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал