Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПУЛКО_учебное пособие.doc
Скачиваний:
22
Добавлен:
18.09.2019
Размер:
987.14 Кб
Скачать

Еще одной известной атакой является атака на основе общего rsa-модуля

Если раздать всем абонентам криптосети одинаковый модуль n, но каждому — свои значения показателей степени (e1, d1), (e2, d2), то при шифро­вании одного и того же сообщения разными показателями степени (при фиксированном модуле) при условии, что показатели e1 и e2 — взаимно-простые числа, открытый текст может быть раскрыт даже при неизвестных ключах дешифрования. Пусть заданы: m — открытый текст, e1 и e2 — два ключа шифрования, n — общий модуль. Шифротекстами сообщения являются:

c1 = me1 mod n,

c2 = me2 mod n,

Криптоаналитик знает n, e1, e2, c1 и c2. Так как e1 и e2 — взаимно-простые числа, то, воспользовавшись расширенным алгоритмом Евклида, можно найти такие числа r и s, что

re1 + se2 = 1.

Полагая r отрицательным (или r, или s должно быть отрицательным), можно снова воспользоваться расширенным алгоритмом Евклида для вычисления c1-1. Тогда

(c1-1)-rc2 s = (me1 mod n)r (me2 mod n)s = me1r+e2s mod n =m mod n.

Таким образом, использование общего для группы пользователей параметра n может отрицательно сказаться на уровне безопасности криптосети.

Еще одно требование к криптопротоколам вытекает из возможности атаки «шифрование коротких сообщений». Известно, что криптосистема RSA обладает низкой криптостойкостью при зашифрованном на малом e коротком сообщении. Действительно, при c = me < n открытый текст m может быть восстановлен по шифротексту c при помощи процедуры извлечения корня. Однако меры противодействия также очевидны, — либо открытый ключ e должен быть достаточно большим, либо открытый текст не должен быть коротким. Выбор малого e обусловлен соображениями вычислительной эффективности шифрования и проверки подписи. Таким образом, разумный подход заключается в ис­кусственном наращивании коротких открытых текстов («набивки»).

Для практической криптостойкости алгоритма RSA необходимо соблюдать еще ряд ограничений: секретный ключ d не должен быть слишком маленьким, числа p и q должны очень близко совпадать по порядку длины, числа (p+1) и (q+1) должны содержать в своем разложении большие простые делители. Эти ограничения учитывают ряд возможных атак на RSA, которые не рассмотрены в данном пособии.

Рассмотрим еще один алгоритм асимметричного кодирования – схему Рабина.

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

По сравнению с RSA схема Рабина имеет меньший открытый ключ n и обеспечивает меньшее время шифрации. Недостатком схемы является то, что в результате дешифрования получается 4 различных значения, лишь одно из которых совпадает с исходным сообщением. Для разрешения этой ситуации в кодируемое сообщение необходимо добавлять некоторую метку, которая позволит однозначно отличить его на принимающей стороне.

Список алгоритмов асимметричного шифрования на этом, безусловно, не исчерпывается, более полный их перечень приведен в [12]. В заключение обзора хотелось бы отметить еще два алгоритма, которые строятся на иных трудновычислимых задачах. Криптосистема МакЭлиса основана на методах теории помехоустойчивого кодирования. Эта криптосистема использует декодирование кода с исправлением ошибок и использует тот факт, что линейный код в общем случае не имеет полиномиального алгоритма декодирования. Криптосистема на основе эллиптических кривых, использует свойства эллиптической кривой (ЭК), которая представляет собой множество точек на плоскости, удовлетворяющих уравнению:

y2 = x3 + ax + b mod p,

Криптостойкость ЭК основана на трудности решения задачи дискретного логарифмирования в группе точек эллиптической кривой над конечным полем. Более подробно криптосистемы на эллиптических кривых будут рассмотрены в главе 4.

2.5.3. Сравнительный анализ симметричных и асимметричных алгоритмов шифрования

Основным недостатком симметричного шифрования является необходимость передачи ключей "из рук в руки" (по секретному каналу связи), что далеко не всегда достижимо на практике. Недостаток этот весьма серьезен, поскольку делает невозможным использование симметричного шифрования в системах с неограниченным числом участников. Однако, алгоритмы асимметричного шифрования имеют гораздо большее количество недостатков. Первый из них - низкая скорость выполнения операций зашифрования и расшифрования, обусловленная наличием ресурсоемких операций. Время шифрования/дешифрования асимметричных алгоритмов в среднем на три порядка больше аналогичного по криптостойкости симметричного.

Другой недостаток – теоретический. Как уже говорилось, математически криптостойкость алгоритмов асимметричного шифрования не доказана - пока не удалось доказать, что ее решение за приемлемое время невозможно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вспомнить, насколько рандомизируют входное сообщение блочные шифры, можно в качестве функции хэш-преобразования использовать какой-нибудь блочный шифр. То, что блочные шифры являются обратимыми преобразованиями, не противоречит свойствам хэш-функции, поскольку блочный шифр необратим по ключу шифрования, и, если в качестве ключа шифрования использовать выход предыдущего шага хэш-преобразования, а в качестве шифруемого сообщения очередной блок сообщения (или наоборот), то можно получить хэш-функцию с хорошими криптографическими характеристиками. Такой подход использован, например, в российском стандарте хэширования – ГОСТ Р 34.11-94. Эта хэш-функция формирует 256-битное выходное значение, используя в качестве преобразующей операции блочный шифр ГОСТ 28147-89 (рис.2.17). Функция хэширования H получает на вход хэш, полученный на предыдущем шаге (значение h0 произвольное начальное число), а также очередной блок сообщения mi. Ее внутренняя структура представлена на рис.2.18. Здесь в блоке шифрующего преобразования для модификации hi в si используется блочный шифр ГОСТ 28147-89. Перемешивающее преобразование представляет собой модифицированную перестановку Фейштеля. Для последнего блока mN (N – общее количество блоков сообщения) выполняется набивка до размера 256 бит с добавлением истинной длины сообщения. Параллельно подсчитывается контрольная сумма сообщения и суммарная длина 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) = (BC)  (( B)  D)

для 0 t 19

ft(B,C,D) = BCD

для 20  t 39

ft(B,C,D) = (B C)  (BD)  (CD)

для 40  t  59

ft(B,C,D) = BCD

для 60  t  79

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

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

Для t = 16 - 79 Wt = S1(Wt-3Wt-8Wt-14Wt-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. Вывод

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]