Главная страница
Навигация по странице:

  • 3.2. Итеративная хеш-функция

  • 3.3. Secure Hash Algorithm (SHA)

  • 3.4. Хеш-функции на основе симметричных блочных криптоалгоритмов

  • Контрольные вопросы

  • Иванов М.А. КМЗИ сети. Криптографические методы защиты информации


    Скачать 3.04 Mb.
    НазваниеКриптографические методы защиты информации
    АнкорИванов М.А. КМЗИ сети.pdf
    Дата18.02.2018
    Размер3.04 Mb.
    Формат файлаpdf
    Имя файлаИванов М.А. КМЗИ сети.pdf
    ТипУчебное пособие
    #15674
    страница6 из 20
    1   2   3   4   5   6   7   8   9   ...   20

    ГЛАВА 3. ХЕШ-ФУНКЦИИ
    3.1. Требование к качественной хеш-функции
    Хеширование – вид криптографического преобразования, не менее важный, чем шифрование. При этом существует мнение, что задача проектирования качественной хеш-функции более сложная, чем задача проектирования качественного симметричного шифра.
    Хеш-функцией называется преобразование h, превращающее информационную последовательность (строку) M произвольной длины в информационную последовательность (строку) фиксиро- ванной длины
    M
    h
    На рис. 3.1 показана упрощенная схема хеш- функции.
    n
    n
    N
    n
    Функция обратной связи FB
    Память
    Q
    Исходная информация
    M
    h(M)
    m
    M
    3
    ...
    M
    t
    M
    2
    M
    1
    M
    h(x)
    хеш-образ
    h(M)
    F
    а
    б
    Генератор
    ПСЧ
    h
    0
    Рис. 3.1. Хеш-функция: а – наложение ПСП на входную информационную последовательность; б – упрощенный принцип действия хеш-функции
    Процесс получения хеш-функции можно рассматривать как на- ложение псевдослучайной последовательности (ПСП) на входную

    119 преобразуемую последовательность. По этой причине часто спе- цификация синхронного поточного шифра описывает и родствен- ную хеш-функцию.
    К криптографической функции x
    h
    предъявляются следующие основные требования: результат действия хеш-функции должен зависеть от всех дво- ичных символов исходного сообщения, а также от их взаимно- го расположения;
    x
    h
    должна быть чувствительна к любым изменениям вход- ной информационной последовательности, при любых изме- нениях на входе результат действия хеш-функции должен быть непредсказуем – в среднем должна измениться половина бит хеш-образа.
    Рассмотрим четыре проблемы дней рождения, которые могут быть применены для анализа безопасности хеш-функций.
    Имеем равномерно распределенную случайную переменную, принимающую N возможных значений (между 0 и N – 1).
    1) Определить минимальное число реализаций k, при котором с вероятностью
    2
    /
    1
    P
    хотя бы одна выборка оказалась равной пре- допределенной величине.
    2) Определить минимальное число реализаций k, при котором с вероятностью
    2
    /
    1
    P
    хотя бы одна выборка оказалась равной вы- бранной величине.
    3) Определить минимальное число реализаций k, при котором с вероятностью
    2
    /
    1
    P
    хотя бы две выборки оказались равными.
    Формируем два набора случайных значений по k выборок в ка- ждом.
    4) Определить минимальное число реализаций k, при котором с вероятностью
    2
    /
    1
    P
    хотя бы одна выборка из первого набора оказалась равной одной выборке из второго набора.
    Решения проблем дней рождения приведены в табл. 3.1.
    Для качественной криптографической хеш-функции три сле- дующие задачи вычислительно неразрешимы:
    1)
    нахождение прообраза
    – задача нахождения последова- тельности M по заданному хеш-образу M
    h
    (рис. 3.2,а);

    120 2)
    нахождение коллизии
    – задача нахождения последователь- ностей M и
    ,
    M'
    причем
    ,
    M
    M'
    таких, что
    M
    h
    M'
    h
    ;
    3)
    нахождение второго прообраза
    – задача нахождения для заданной последовательности M другой последовательно- сти
    ,
    M'
    ,
    M
    M'
    такой, что
    M
    h
    M'
    h
    (рис. 3.2,б).
    Таблица 3.1
    Решения проблем дней рождения
    Проб- лема
    Вероят- ность
    Значение k
    Значение k при
    2
    /
    1
    P
    Значение
    k при
    2
    /
    1
    P
    и
    365
    N
    1
    N
    k
    e
    P
    /
    N
    P
    k
    1
    /
    1
    ln
    N
    k
    69
    ,
    0 253 2
    N
    k
    e
    P
    /
    1 1
    1
    /
    1
    N
    P
    n
    k
    1 69
    ,
    0
    N
    k
    254 3
    N
    k
    k
    e
    P
    /2 1
    2
    /
    1 2
    /
    1 1
    /
    1
    ln
    2
    N
    P
    k
    2
    /
    1 18
    ,
    1
    N
    k
    23 4
    N
    k
    e
    P
    /2 2
    2
    /
    1 2
    /
    1 1
    /
    1
    ln
    N
    P
    k
    2
    /
    1 83
    ,
    0
    N
    k
    16
    Примечание. Последняя ячейка в строке 3 представляет собой классический пара-
    докс дней рождения.
    Если n – разрядность хеш-образа, сложность первой и третьей атаки (рис. 3.2) на идеальную хеш-функцию пропорциональна
    n
    2 .
    Сложность задачи нахождении коллизии пропорциональна
    2
    /
    2
    n
    . В табл. 3.2 приведены оценки сложности атак на идеальную хеш- функцию, где k – размер списков сообщений, создаваемых ата- кующим. Рассмотрим отличия поиска коллизии в случаях 1 и 2. В первом случае речь идет о поиске двух произвольных сообщений, имеющих одинаковое значение хеш-образа. Есть точка зрения, что эта атака бесполезна для атакующего. Однако существуют атаки на конкретные протоколы с использованием известных коллизий
    MD5. Во втором случае предполагается, что одно сообщение ре- альное, а другое – фальсифицированное, при этом оба сообщения должны быть осмысленными. Решение состоит в создании двух списков осмысленных сообщений путем внесения избыточности или модификации содержимого (например, добавление пробелов,

    121 перестановка слов сообщения, добавление дополнительных избы- точных слов и т.п.) без изменения смысла сообщений.
    M
    h(x)
    y = h(M)
    К субъекту В
    Субъект А
    Противник W
    Задача нахождения прообраза
    Дано: h(x), y
    Найти: любое М’ такое,
    что у = h(M’)
    M’
    Нахождение прообраза
    M
    h(x)
    y = h(M)
    К субъекту В
    Субъект А
    Противник W
    Задача нахождения второго прообраза
    Дано: h(x), y, M
    Найти: М’ ≠ M такое,
    что h(M’) = h(M)
    Нахождение второго прообраза
    M
    h(M)
    M’
    а
    б
    Рис. 3.2. Атаки на хеш-функцию:
    анахождение прообраза; б – нахождение второго прообраза
    Наиболее известные алгоритмы хеширования – MD5, SHA,
    Tiger, Whirlpool.
    MD5 – представитель семейства хеш-функций MD (Message
    Digest Algorithm), предложенного Р. Ривестом; разработан в 1991 г.; преобразует информационную последовательность произвольной длины в хеш-образ разрядностью 128 бит.
    Tiger разработан Р. Андерсоном и Э. Бихэмом; предназна- чен для реализации на 64-разрядных компьютерах; преобразует информационную последовательность произвольной длины в хеш-образ разрядностью 192 бит.

    122
    Таблица 3.2
    Оценка сложности атак на хеш-функцию
    Атака
    Значение k при
    2
    /
    1
    P
    Сложность
    Нахождение прообраза
    n
    k
    2 69
    ,
    0
    n
    2
    Нахождение второго прообраза
    1 2
    69
    n
    k
    n
    2
    Нахождение коллизии 1 2
    /
    2 18
    ,
    1
    n
    k
    2
    /
    2
    n
    Нахождение коллизии 2 2
    /
    2 83
    ,
    0
    n
    k
    2
    /
    2
    n
    3.2. Итеративная хеш-функция
    На рис. 3.3 показана схема итеративной хеш-функции, которая является стойкой в смысле нахождения коллизий, если аналогич- ным свойством обладает используемая функция сжатия. Обозначе- ния:
    t
    M
    M
    M
    ...,
    ,
    ,
    2 1
    – блоки дополненного сообщения; t – число блоков дополненного сообщение;
    0
    h – фиксированное значение, называемое стартовым вектором или вектором инициализации IV;
    t
    h
    h
    h
    ...,
    ,
    ,
    2 1
    – промежуточные результаты вычисления итераций, число которых равно числу блоков t . Оригинальное сообщение дополняется до длины, кратной
    n
    , где
    n
    разрядность блока дан- ных, обрабатываемого функцией сжатия. На i -м итерационном ша- ге функция сжатия f принимает результат предыдущего шага
    1
    -
    i
    h и i -й блок данных
    i
    M , а затем формирует результат
    i
    i
    i
    M
    h
    f
    h
    ,
    1
    -
    . На шаге t полученное значение
    t
    h объявляется хеш-образом исходного сообщения, т.е.
    M
    h
    h
    t
    . Типичная структура дополнения показана на рис. 3.4.
    3.3. Secure Hash Algorithm (SHA)
    Алгоритм SHAявляется частью стандарта SHS (Secure Hash
    Standard), разработанного в 1993 г. Национальным институтом стандартов и технологий США (FIPS 180) и Агенством националь- ной безопасности США. SHA использует принципы, предложенные ранее Р. Ривестом при разработке своих алгоритмов семейства MD.
    В 1995 г. стандарт был пересмотрен (FIPS 180-1) в пользу версии

    123
    SHA-1. Позднее стандарт пересмотрен вновь, и были определены четыре новые версии: SHA-224, SHA-256, SHA-384, SHA-512. Все версии имеют одинаковую структуру, поэтому часто их называют общим именем SHA-2. В табл. 3.3 приведены характеристики этих версий.
    Функция сжатия
    h
    0
    Оригинальное сообщение М
    М
    1
    М
    2
    М
    t
    Функция сжатия
    Функция сжатия
    h
    t
    h
    1
    h
    2
    h
    t - 1
    m
    n
    n
    n
    m
    m
    m
    m
    IV - вектор инициализации
    Хеш-образ
    Дополнение
    Рис. 3.3. Схема итеративной хеш-функции
    Дополнение
    Padding 1000...000
    Длина M
    Рис. 3.4. Структура дополнения при итеративном хешировании
    Таблица 3.3
    Характеристики SHA
    Характеристика
    SHA-1
    SHA-224
    SHA-256
    SHA-384
    SHA-512
    Максимальная длина сообщения
    1 2
    64 1
    2 64 1
    2 64 1
    2 128 1
    2 128
    Длина блока
    512 512 512 1024 1024
    Длина хеш-образа
    160 224 256 384 512
    Число раундов
    80 64 64 80 80
    Длина слова
    32 32 32 64 64
    Рассмотрим версию SHA-1, в которой осуществляется пре- образование информационной последовательности произволь- ной длины в хеш-образ разрядностью 160 бит. На первом этапе информационная последовательность дополняется до длины, кратной 512 бит. Сначала информационная последовательность дополняется до длины на 64 двоичных разряда меньшей числа, кратного 512: к концу последовательности (сообщения) припи- сывается 1, а затем необходимое количество нулей. После этого

    124 приписывается 64-разрядный код длины сообщения. Если дли- на исходного сообщения больше
    ,
    2 64
    используются только 64 младших разряда этого кода. Пусть после дополнения получена информационная последовательность
    512
    ,
    ,
    1
    ,
    2 1
    i
    t
    i
    M
    t
    i
    M
    M
    M
    M
    M
    На вход i-го основного цикла
    i
    SHA преобразования поступает
    i-й блок информационной последовательности и результат раб о- ты предыдущего цикла
    ,
    1
    -
    i
    SHA
    т.е.
    ,
    1
    -
    i
    i
    i
    SHA
    M
    h
    SHA
    Перед началом каждого цикла соответствующий блок расши- ряется до 80 слов по 32 разряда в каждом. Расширение происхо- дит следующим образом. Пусть
    16 2
    1
    ...w
    w
    w
    исходный блок,
    80 2
    1




    w
    w
    w
    расширенный блок, при этом
    j
    j
    w
    w

    для
    ,
    16
    ,
    1
    j
    16
    -
    14
    -
    8
    -
    3
    -

    j
    j
    j
    j
    j
    w
    w
    w
    w
    Rol
    w
    для
    ,
    80
    ,
    17
    j
    где Rol операция циклического сдвига на один разряд влево.
    Перед началом первого цикла инициализируются пять
    32-разрядных переменных:
    A = 67452301h, B = EFCDAB89h, C = 98BADCFEh,
    D = 10325476h, E = C3D2E1F0h, при этом стартовый вектор хеширования (синхропосылка) есть результат конкатенации этих переменных, т.е.
    ,
    ,
    ,
    ,
    0
    E
    D
    C
    B
    A
    SHA
    Конкатенация новых значений этих переменных, полученных в конце i-го цикла, объявляется результатом работы цикла
    i
    SHA
    В начале каждого цикла создаются копии входных перемен- ных
    AA = A, BB = B, CC = C, DD = D, EE = E.

    125
    Затем выполняются 80 шагов алгоритма, на каждом из которых происходит выполнение следующих операций:
    ,
    ;
    ;
    ;
    ;
    ,
    ,
    30 5
    Tem p
    A
    B
    Rol
    C
    C
    D
    D
    E
    c
    M
    E
    D
    C
    B
    f
    A
    Rol
    Tem p
    j
    ij
    j
    где
    n
    Rol операция циклического сдвига на n разрядов влево;
    j
    f шаговая функция;
    ij
    M
    j-е слово i-го блока
    ;
    i
    M
    j
    c
    ша- говая константа;
    ,
    1
    ,
    80
    ,
    1
    t
    i
    j
    В первом раунде (при
    20
    ,
    1
    j
    ) используются функция
    Z
    X
    XY
    Z
    Y
    X
    f
    j
    ,
    ,
    и константа
    ;
    5A827999h
    j
    c
    во втором раунде (при
    40
    ,
    21
    j
    ) функция
    Z
    Y
    X
    Z
    Y
    X
    f
    j
    ,
    ,
    и константа
    ;
    h
    1
    ED9EBA
    6
    j
    c
    в третьем раунде (при
    60
    ,
    41
    j
    ) функция
    ZY
    XY
    XZ
    Z
    Y
    X
    f
    j
    ,
    ,
    и константа
    ;
    8F1BBCDCh
    j
    c
    в четвертом раунде (при
    80
    ,
    61
    j
    ) функция
    Z
    Y
    X
    Z
    Y
    X
    f
    j
    ,
    ,
    и константа
    CA62C1D6h
    j
    c
    Цикл завершается сложением по модулю
    32 2
    полученных значений A, B, C, D и E соответственно с AA, BB, CC, DD и EE:

    126
    ,
    ,
    ,
    ,
    ,
    EE
    E
    E
    DD
    D
    D
    CC
    C
    C
    BB
    B
    B
    AA
    A
    A
    конкатенация полученных значений A, B, C, D и E является ре- зультатом работы основного цикла.
    Алгоритмы семейства SHA-2 значительно отличаются от бо- лее ранних версий SHA. Опишем алгоритм SHA-256.
    Перед хешированием сообщению дополняется до длины, крат- ной 512 бит, аналогично SHA-1. После этого полученная последо- вательность разделяется на блоки по 512 бит (16 32-разрядных слов), каждый из которых поступает на вход функции сжатия SHA-
    256. В этом смысле мы имеем обычную итеративную хеш- функцию.
    Функция сжатия обладает похожей итеративной структурой.
    Функция «расширения» блока на основе 16 слов исходного со- общения формирует расширенное сообщение 64 слова, по- ступающие на вход 64 раундов функции сжатия, как показано на рис. 3.5, где РФ – раундовая функция.
    Функция расширения блока MS описывается следующим об- разом. Первые 16 слов расширенного сообщения соответствуют исходным 16 словам блока, дальнейшие слова формируются по рекуррентной формуле:
    }
    256
    {
    0
    (x)= ROTR
    7
    (x) ROTR
    18
    (x) SHR
    3
    (x);
    }
    256
    {
    1
    (x)= ROTR
    17
    (x) ROTR
    19
    (x) SHR
    10
    (x);
    w
    t
    =
    }
    256
    {
    1
    (w
    t - 2
    ) + w
    t - 7
    +
    }
    256
    {
    0
    (w
    t - 15
    ) + w
    t - 16
    ,
    где w
    i
    i-е слово расширенного сообщения. Здесь и далее
    ROTR
    a
    (x) обозначает слово x, циклически сдвинутое вправо на a разрядов.

    127
    w
    1
    w
    64
    w
    2
    w
    i
    S
    S
    m
    i
    MS
    ...
    ...
    РФ
    РФ
    РФ
    РФ
    256 256 256 256 256 256 256 32 32 32 32
    Рис. 3.5. Функция сжатия SHA-256:
    m
    i
    блок сообщения; w
    j
    – слова расширенного блока сообщения;
    S – состояние определяемое регистрами a, b, c, d, e, f, g, h
    Структура раунда изображена на рис. 3.6.
    a
    d
    c
    b
    h
    g
    f
    e

    0

    1
    Maj(a, b, c)
    Ch(e, f, g)
    K
    t
    w
    t
    Рис. 3.6. Структура раунда SHA-2
    На рисунке приняты следующие обозначения:
    Ch (X, Y, Z) =
    ;
    Z
    X
    XY
    Maj (X, Y, Z) = XY
    XZ
    YZ;
    }
    256
    {
    0
    (x)= ROTR
    2
    (x) ROTR
    13
    (x) ROTR
    22
    (x);
    }
    256
    {
    1
    (x)= ROTR
    6
    (x) ROTR
    11
    (x) ROTR
    25
    (x).
    Используется фиксированную последовательность из 64 32-разрядных констант (по количеству раундов). На каждом раунде применяется одна константа из этого массива, обозна- ченная на рис. 3.6 как K
    t
    SHA-224 представляет собой SHA-256 с «обрезанным» до
    224 бит хеш-образом и изменённым начальным состоянием.

    128
    SHA-384 получается аналогичным образом из SHA-512. Инте- ресно, что по стандарту разрешается сокращать хеш-образ до любой длины, если это по каким-либо причинам необходимо.
    3.4. Хеш-функции на основе симметричных
    блочных криптоалгоритмов
    При использовании для построения
    x
    h
    симметричных блоч- ных криптоалгоритмов стойкость хеш-функции гарантируется стойкостью применяемого блочного шифра. Пусть
    )
    ,
    1
    (
    2 1
    t
    i
    M
    M
    M
    M
    M
    t
    i
    – последовательность, состоящая из блоков, размер которых равен размеру ключа блочного шифра. Блоки
    i
    M суть результат расши- рения блоков исходного сообщения меньшей длины (см, например, схему получения кода MDC в гл. 4). Наиболее надежные схемы получаются при использовании для вычисления текущего хеш- значения
    i
    h функции зашифрования
    ,
    k
    E где ключ k – предыдущее хеш-значение
    ,
    1
    -
    i
    h
    хотя известны схемы, в которых в качестве k используется либо очередной блок сообщения
    i
    M , либо
    1
    -
    i
    i
    M
    h
    Наиболее известны следующие схемы формирования хеш-образа
    t
    h
    M
    h
    =
    :
    ;
    1
    -
    i
    i
    h
    i
    M
    M
    E
    h
    i
    ;
    1
    -
    1
    -
    1
    -
    i
    i
    i
    i
    h
    i
    h
    M
    h
    M
    E
    h
    i
    ;
    1
    -
    1
    -
    i
    i
    i
    h
    i
    h
    M
    M
    E
    h
    i
    1
    -
    1
    -
    i
    i
    i
    h
    i
    M
    h
    M
    E
    h
    i
    На рис. 3.7 показаны три варианта построения хеш-функции на основе функции зашифрования
    M
    E
    k
    Структура, показанная на рис. 3.7,в, использована при проек- тировании хеш-функции Whirlpool, представленной в рамках ев- ропейского конкурса New European Schemes for Signatures, Integri- ty and Encryption (NESSIE). В качестве симметричного блочного шифра для реализации функции сжатия авторами (V. Rijmen,
    P. Barreto) использован модифицированный алгоритм AES.

    129
    E
    AB
    h
    0
    М
    Дополнение
    М
    1
    М
    2
    М
    t
    h
    t
    E
    AB
    E
    AB
    E
    AB
    М
    Дополнение
    М
    1
    М
    2
    М
    t
    ...
    h
    t
    E
    AB
    E
    AB
    h
    0
    ...
    E
    AB
    h
    0
    М
    Дополнение
    М
    1
    М
    2
    М
    t
    h
    t
    E
    AB
    E
    AB
    ...
    m
    m
    m
    m
    m
    m
    m
    m
    n
    n
    n
    а
    б
    в
    Рис. 3.7. Варианты построения хеш-функций на основе преобразования
    M
    E
    k
    Контрольные вопросы
    1.
    Что такое парадокс дней рождения?
    2.
    Какие три задачи являются вычислительно неразрешимыми для качественной криптографической хеш-функции?
    3.
    Перечислите необходимые свойства качественной хеш- функции (не менее пяти).
    4.
    Нарисуйте схему итеративной хеш-функции.

    130
    1   2   3   4   5   6   7   8   9   ...   20


    написать администратору сайта