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

Тем не менее, эти недостатки не препятствуют широкому применению алгоритмов асимметричного шифрования. Сегодня существуют криптосистемы, поддерживающие сертификацию открытых ключей, а также сочетающие алгоритмы симметричного и асимметричного шифрования, когда, например, информация кодируется симметричным ключом шифрования, а секретный ключ кодируется по асимметричной схеме.

2.6. Хэш-функции

Для очень большого количества технологий безопасности (например, аутентификации, ЭЦП) применяются односторонние функции шифрования, называемые также хэш-функциями. Основное назначение подобных функций – получение из сообщения произвольного размера его дайджеста – значения фиксированного размера. Дайджест может быть использован в качестве контрольной суммы исходного сообщения, обеспечивая таким образом (при использовании соответствующего протокола) контроль целостности информации. Основные свойства хэш-функции:

1) на вход хэш-функции подается сообщение произвольной длины;

2) на выходе хэш-функции формируется блок данных фиксированной длины;

3) значения на выходе хэш-функции распределены по равномерному закону;

НЕ нашли? Не то? Что вы ищете?

4) при изменении одного бита на входе хэш-функции существенно изменяется выход.

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

1) если мы знаем значение хэш-функции h, то задача нахождения сообщения M такого, что Н(М)=h, должна быть вычислительно трудной;

2) при заданном сообщении M задача нахождения другого сообщения M, такого, что Н(М)=H(M), должна быть вычислительно трудной

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

Еще одной особенностью хэш-функций является то, что они не допускают обратного преобразования – получить исходное сообщения по его дайджесту невозможно. Поэтому их называют еще односторонними функциями шифрования.

Хэш-функции строятся по итеративной схеме, когда исходное сообщение разбивается на блоки определенного размера, и над ними выполняются ряд преобразований с использованием как обратимых, так и необратимых операций. Как правило, в состав хэширующего преобразования включается сжимающая функция, поскольку его выход зачастую по размеру меньше блока, подаваемого на вход. На вход каждого цикла хэширования подается выход предыдущего цикла, а также очередной блок сообщения. Таким образом, на каждом цикле выход хэш-функции hi представляет собой хэш первых i блоков.

Если вспомнить, насколько рандомизируют входное сообщение блочные шифры, можно в качестве функции хэш-преобразования использовать какой-нибудь блочный шифр. То, что блочные шифры являются обратимыми преобразованиями, не противоречит свойствам хэш-функции, поскольку блочный шифр необратим по ключу шифрования, и, если в качестве ключа шифрования использовать выход предыдущего шага хэш-преобразования, а в качестве шифруемого сообщения очередной блок сообщения (или наоборот), то можно получить хэш-функцию с хорошими криптографическими характеристиками. Такой подход использован, например, в российском стандарте хэширования – ГОСТ Р 34.11-94. Эта хэш-функция формирует 256-битное выходное значение, используя в качестве преобразующей операции блочный шифр ГОСТ (рис.2.17). Функция хэширования H получает на вход хэш, полученный на предыдущем шаге (значение h0 произвольное начальное число), а также очередной блок сообщения mi. Ее внутренняя структура представлена на рис.2.18. Здесь в блоке шифрующего преобразования для модификации hi в si используется блочный шифр ГОСТ . Перемешивающее преобразование представляет собой модифицированную перестановку Фейштеля. Для последнего блока mN (N – общее количество блоков сообщения) выполняется набивка до размера 256 бит с добавлением истинной длины сообщения. Параллельно подсчитывается контрольная сумма сообщения S и суммарная длина L, которые участвуют в финальной функции сжатия.

Основным недостатком хэш-функций на основе блочных шифров является невысокая скорость их работы. Поэтому были спроектированы ряд специализированных алгоритмов, которые, обеспечивая аналогичную стойкость к атакам, выполняют гораздо меньшее количество операций над входными данными и обеспечивают большую скорость работы. Примерами подобного рода алгоритмов являются : MD2, MD4, MD5, RIPEMD –160, SHA. Рассмотрим подробнее структуру алгоритма хэширования SHA (Secure Hash Algorithm), который описан в стандарте SHS и обеспечивает безопасность электронной цифровой подписи DSA, формируя 160-битный дайджест сообщения.

Сначала сообщение разбивается на блоки длиной 512 бит. Если длина сообщения не кратна 512, к последнему блоку приписывается справа 1, после чего он дополняется нулями до 512 бит. В конец последнего блока записывается код длины сообщения. В результате сообщение приобретает вид n 512-разрядных блоков M1,M2,…,Mn.

Алгоритм SHA использует 80 логических функций f0,f1,…,f79, которые производят операции над тремя 32-разрядными словами (B,C,D):

ft(B, C,D) = (B Ù C) Ú ((Ø B) Ù D)

для 0 £t £19

ft(B,C,D) = B Å C Å D

для 20 £ t £39

ft(B,C,D) = (B Ù C) Ú (B Ù D) Ú (C Ù D)

для 40 £ t £ 59

ft(B, C,D) = B Å C Å D

для 60 £ t £ 79

В алгоритме используются также специальным образом инициализированные 4 константы Ki и 5 начальных значений Hi.

Делим массив M на группы из 16 слов W0, W1,…,W15 (W0 самое левое слово).

Для t =Wt = S1(Wt-3 Å Wt-8 Å Wt-14 Å Wt-16)

Sk означает операцию циклического сдвига влево на k разрядов.

Пусть теперь A = H0, B = H1, C = H2, D = H3, E = H4.
for t = 0 to 79 do
TEMP = S5(A) + ft(B, C,D) + E + Wt + Ki.
E = D; D = C; C = S30(B); B = A; A = TEMP;
Пусть H0 = H0 + A; H1 = H1 + B; H2 = H2 + C; H3 = H3 + D; H4 = H4 + E.

Графически один цикл SHA представлен на рис.2.19.

В результате обработки массива М будет получено 5 слов H0, H1, H2, H3, H4 с общей длиной 160 бит, которые и образуют дайджест сообщения.

Из приведенных данных ясно, что сложность американского стандарта хэширования ниже, чем у российского. Российский стандарт предполагает выполнение четырех шифрований за один цикл выработки хэша, или в общей сложности 128 раундов. Каждый раунд шифрования требует примерно полтора десятка элементарных машинных операций, что существенно увеличивает затраты машинного времени на выполнение линейных перемешивающих операций. Один раунд выработки хэша SHA гораздо проще: он весь может быть реализован примерно за 15-20 команд, общее количество раундов всего 80, и за один цикл выработки хэша обрабатывается вдвое больше исходных данных — 512 против 256 в ГОСТ P34.ll -94. Таким образом, можно предположить, что быстродействие программных реализаций SHA будет примерно в 3-6 раз быстрее, чем у отечественного стандарта.

Основная задача хэш-функций – генерация дайджестов, уникальных для конкретного документа. Если для двух различных входных блоков хэш-функция дает одинаковый дайджест, такая ситуация называется хэш-коллизией. Из теоремы, носящей название «парадокс дней рождения», следует, что для n-битного хэш-значения необходимо в среднем 2n/2 различных входных сообщений, чтобы возникла коллизия. Это делает практически невозможным изменение документа при его подписи с помощью, например, алгоритма SHА путем простого подбора, поскольку при таком подходе потребуется сгенерировать около 280 различных сообщений, чтобы получить аналогичное подменяемому по получаемому дайджесту. Эта цифра недостижима для современного уровня технологий.

2.7. Вывод

Криптография – наука о преобразовании информации в недоступный стороннему наблюдателю вид. Криптографические методы делятся на симметричные, требующие знания обменивающимися информацией сторонами некоторого общего секрета (ключа), и асимметричные, использующие пару ключей для обмена информацией, один из которых является публичным – доступным всем желающим. Обособленным видом криптопреобразований является хэширование, которое позволяет формировать для каждого сообщения уникальный идентифицирующий его дайджест. Методы криптографии используются для обеспечения конфиденциальности, целостности данных, аутентификации, доказательства принадлежности. Об их практическом применении речь пойдет в последующих главах.

3. Аутентификация

Аутентификация – метод доказательства пользователем того, что он действительно является тем, за кого себя выдает. Процедуру аутентификации необходимо отличать от идентификации, которая подразумевает только предъявление пользователем своего имени - идентификатора. В аутентификации участвуют две стороны – одна сторона (клиент) доказывает свою аутентичность, другая (сервер аутентификации) – принимает доказательства и выносит решение. В качестве доказательства аутентичности могут выступать:

- нечто, что аутентифицируемый знает (пароль, ключ и т. п.);

- нечто, чем аутентифицируемый владеет (электронная магнитная карта);

- нечто, что является его частью (биометрические параметры).

3.1. Парольная аутентификация

Простота реализации и логическая ясность принципов функционирования делают системы парольной аутентификации самыми популярными. И хотя существует множество угроз данной схеме авторизации (подбор пароля, анализ трафика, повторное воспроизведение запроса на аутентификацию), она используется в большинстве информационных систем, а задачи защиты от перечисленных угроз решаются обычно комплексом мер, одно из центральных мест в которых занимает криптографическая защита.

В настоящее время используются два основных метода аутентификации пользователей:

- с однонаправленной передачей информации от клиента к серверу аутентификации;

- технология «запрос-ответ»

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

Перехватив запрос при передаче его по сети, злоумышленник не сможет воспользоваться им для получения пароля пользователя для последующей аутентификации от имени пользователя с идентификатором id, поскольку пароль передается в захэшированном виде q’, а обратить операцию хэширования невозможно.

Приведенная на рис.3.1 схема неспособна противостоять атаке несанкционированного воспроизведения, когда злоумышленник, перехватив сетевой трафик сеанса аутентификационной связи легального пользователя, позднее в точности воспроизводит его, и таким образом получает доступ к ресурсам. Для противостояния атаке подобного рода в запрос вносятся временные метки, либо некоторые одноразовые числа, которые по договоренности сторон могут быть использованы только однажды. Схема аутентификации с одноразовыми числами представлена на рис.3.2. Дополнительный параметр t в этой схеме является либо случайным числом, генерируемым для каждого запроса на аутентификацию, либо одноразовым числом из набора, заранее оговоренного обеими сторонами. При использовании этой схемы злоумышленник не сможет повторно воспроизвести ранее сохраненный им запрос на аутентификацию легального пользователя, поскольку в нем использовано значение t, которое считается уже использованным, и сервер отвергнет повторный запрос.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15