Электронная цифровая подпись для чайников: с чем ее есть и как не подавиться. Часть 3 / Хабр

10.1. Схема классической электронной подписи

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

  • с помощью электронной подписи получатель документа может доказать, что он принадлежит отправителю, при этом автор подписи не сможет оспорить факт отправки подписанного документа;
  • электронную подпись невозможно подделать, только абонент, чья подпись стоит на документе, мог подписать данный документ;
  • электронная подпись является неотъемлемой частью документа, перенести ее на другой документ нельзя;
  • ни противник, ни получатель не могут изменить документ, оставив данный факт незамеченным;
  • любой пользователь, имеющий образец подписи, может удостовериться в подлинности документа.

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

Схема электронной подписи включает в себя:

Подпись sign = {M}SK_A

В общем случае неинтерактивный протокол электронной подписи имеет следующий вид.

Схема электронной подписи документа M.

  1. Отправитель А вычисляет

    (SK_A, PK_A) = G (n)

    и посылает PK_A получателю В, сохраняя SK_A в секрете.

  2. Для получения подписи документа M отправитель А вычисляет

    sign = S (M, SK_A)

    и посылает M и sign получателю В.

  3. Получатель В вычисляет

    V (M, sign, PK_A)

    и в зависимости от результата принимает или отвергает подпись sign сообщения M.

В классической схеме электронной подписи, приведенной на
рис.
3.34, предполагается, что подписывающий (абонент А) знает содержание документа M, который он подписывает; проверяющий (абонент В), зная открытый ключ проверки подписи, может проверить правильность подписи в любое время без какого-либо разрешения или участия претендента А.

При создании электронной подписи по классической схеме претендент А выполняет следующую последовательность действий:

  1. применяет к исходному сообщению M хеш-функцию h и формирует хеш-образ сообщения h (M) (при необходимости дополняя входную информационную последовательность до требуемой длины);
  2. при необходимости дополняет хеш-образ до требуемой длины, формируя h* (M) = ext h (M);
  3. вычисляет электронную подпись sign с использованием несимметричного криптоалгоритма D и секретного ключа создания подписи SK_A:

    sign = {h* (M)} SK_A.

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

Последовательность действий абонента В, получившего подписанное сообщение:

  1. верификатор В применяет к тексту полученного сообщения хеш-функцию; дополняет в случае необходимости хеш-образ сообщения до требуемой длины (на
    рис.
    3.34
    рассматривается случай, когда расширение ext h (M) не требуется);
  2. применяет к полученной подписи sign несимметричный криптоалгоритм E с использованием открытого ключа проверки подписи PK_A и сравнивает полученное значение PK_A{sign} с найденным на предыдущем шаге h* (M), при положительном результате сравнения подпись признается, в противном случае отвергается.

10.3. Secure Hash Algorithm (SHA)

Алгоритм SHA является частью стандарта SHS (Secure Hash Standard), принятого в 1993 г. Национальным институтом стандартов и технологий США (NIST) и Агентством национальной безопасности США. SHA использует принципы, предложенные ранее Р. Ривестом при разработке своих алгоритмов MD4 и MD5.

Рассмотрим версию SHA-1, в которой осуществляется преобразование информационной последовательности произвольной длины в хеш-образ разрядностью 160 бит.

На первом этапе информационная последовательность дополняется до длины, кратной 512 битам. Сначала информационная последовательность дополняется до длины на 64 двоичных разряда меньшей числа, кратного 512: к концу последовательности (сообщения) приписывается 1, а затем необходимое количество нулей. После этого приписывается 64-разрядный код длины сообщения. Если длина исходного сообщения больше 2^{64}

Пусть после дополнения получена информационная последовательность

На вход i-го основного цикла SHA_iSHA_{i – 1}

Перед началом каждого цикла соответствующий блок расширяется до 80 слов по 32 разряда в каждом. Расширение происходит следующим образом. Допустим,

Электронная цифровая подпись для чайников: с чем ее есть и как не подавиться. Часть 3 / ХабрЭлектронная цифровая подпись для чайников: с чем ее есть и как не подавиться. Часть 3 / ХабрЭлектронная цифровая подпись для чайников: с чем ее есть и как не подавиться. Часть 3 / ХабрЭлектронная цифровая подпись для чайников: с чем ее есть и как не подавиться. Часть 3 / Хабр

Перед началом первого цикла инициализируются пять 32-разрядных переменных

A = 67452301h; B = EFCDAB89h; C = 98BADCFEh;

D = 10325476h; E = C3D2E1F0h,

при этом стартовый вектор хеширования (синхропосылка) есть результат конкатенации этих переменных, т.е.:

Конкатенация новых значений этих переменных, полученных в конце i-го цикла, объявляется результатом работы цикла SHA_i
рис.
3.35
.

В начале каждого цикла создаются копии входных переменных:

Затем выполняется 80 шагов алгоритма, на каждом из которых происходит выполнение следующих операций:

В первом раунде (при j = 1, …, 20) используются функция

и константа

во втором раунде (при j = 21, …, 40) используются функция

f_i (X, Y, Z) = XЭлектронная цифровая подпись для чайников: с чем ее есть и как не подавиться. Часть 3 / Хабр

и константа

в третьем раунде (при j = 41, …, 60) используются функция

и константа

в четвертом раунде (при j = 61, …, 80) используются функция

f_i (X, Y, Z) = XЭлектронная цифровая подпись для чайников: с чем ее есть и как не подавиться. Часть 3 / Хабр

и константа

Цикл завершается сложением по модулю 2^{32}

конкатенация полученных значений A, B, C, D и E является результатом работы основного цикла.

В настоящее время существуют версии алгоритма SHA-256, SHA-384, SHA-512.

Читайте также:  Насколько безопасна электронная регистрация сделок с недвижимостью

14. Причины ненадежности криптосистем

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

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

Именно такой вывод можно сделать, анализируя примеры реальных успешных атак на криптосистемы. Известны лишь единичные случаи взлома с использованием исключительно математических методов. В то же время различных примеров взломов реальных систем так много, что их анализом вынуждены заниматься целые компании, наиболее известная из которых Counterpane Systems Б. Шнайера.

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

Самое ненадежное звено системы — человек. Типичные ошибки пользователей, нарушающих безопасность всей системы защиты:

Получают распространение атаки типа отказ в обслуживании (denial of service), провоцирующие пользователя отключать «заедающую» систему защиты при решении неотложных задач.

Можно выделить следующие причины ненадежности криптосистем, связанные с особенностями их реализации:

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

Многие качественные криптографические средства подпадают под действие экспортных ограничений, искусственно снижающих качество этих средств. Например, в США запрещен экспорт криптоалгоритмов с длиной ключа более 56 бит.

Все программные средства, произведенные в США и легально экспортируемые за рубеж, обеспечивают ослабленную криптографическую защиту. Аналогичная ситуация имеет место и в Европе. Так, например, существуют две версии алгоритма поточного шифрования А5 (стандарт GSM) — надежная А5/1 и существенно менее стойкая А5/2 для поставок в развивающиеся страны.

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

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

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

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

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

«Дыры» могут являться следствием применения технологии разработки программ «сверху вниз», когда программист сразу приступает к написанию управляющей программы, заменяя предполагаемые в будущем подпрограммы «заглушками», имитирующими реальные подпрограммы или просто обозначающими место их будущего подсоединения.

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

Третий источник «дыр» — неправильная обработка (или ее отсутствие) каких-либо нестандартных ситуаций, которые могут иметь место при работе программы: неопределенный ввод, ошибки пользователей, сбои и т.п. В этом случае противник может искусственно вызвать в системе появление такой нестандартной ситуации, чтобы выполнить нужные ему действия.

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

Читайте также:  Электронная подпись, купить ЭЦП для ЭТП, заказать электронную цифровую подпись онлайн в Москве

Существуют программы, изначально предназначенные для разрушительных действий: это компьютерные вирусы, компьютерные черви, троянские программы и пр. С полным на то основанием они получили обобщенное название разрушающих программных воздействий (РПВ).

РПВ могут выполнять одно или несколько из перечисленных действий, опасных для системы защиты:

Еще более разнообразны пути внедрения РПВ. Можно выделить следующие средства, предназначенные для борьбы с РПВ, без которых любая программная реализация криптоалгоритма практически беззащитна:

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

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

Приблизительный анализ уязвимости различных операций с точки зрения временных характеристик дает следующие результаты.

  1. Поиск по таблицам — неуязвим для временных атак.
  2. Фиксированные сдвиги — неуязвимы для временных атак.
  3. Булевы операции — неуязвимы для временных атак.
  4. Сложение/вычитание — трудно защитить от временных атак.
  5. Умножение/деление — наиболее уязвимые для временных атак операции.

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

С недавних пор получили распространение атаки на аппаратуру криптосистем, основанные на анализе электромагнитного излучения и других побочных источников информации.

Получают распространение по сути «биологические» методы взлома, рассматривающие криптосистемы как сложные объекты, определенным образом реагирующие на внешние раздражители. Атаки подобного рода основаны на анализе поведения системы после случайных или преднамеренных сбоев в работе.

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

К моменту выхода этого курса в большинстве существующих систем обеспечения безопасности произойдет замена криптоалгоритмов с секретным и открытым ключом на лучшие на сегодняшний день — соответственно AES и ECCS, которые были описаны в данной главе.

Поэтому в последующих главах везде, где будет идти речь об алгоритмах блочного шифрования DES, Triple DES (3DES) и других, следует учитывать скорее всего уже свершившийся переход к AES; везде, где речь идет об алгоритме открытого шифрования RSA, следует учитывать скорее всего уже свершившийся переход к ECCS.

4.3. Классификация методов шифрования информации

Основные объекты изучения классической криптографии показаны на
рис.
3.4, где А и В — законные пользователи, W — противник или криптоаналитик. Учитывая что схема на
рис.
3.

Процедуры зашифрования E (encryption) и расшифрования D (decryption) можно представить в следующем виде:

Функции за- и расшифрования взаимно обратные, иначе говоря, для любого текста X справедливо:

На
рис.
3.5 приведена классификация методов шифрования информации. Различают два типа алгоритмов шифрования симметричные (с секретным ключом) и асимметричные (с открытым ключом). В первом случае обычно ключ расшифрования совпадает с ключом зашифрования, т.е.

либо знание ключа зашифрования позволяет легко вычислить ключ расшифрования. В асимметричных алгоритмах такая возможность отсутствует: для зашифрования и расшифрования используются разные ключи, причем знание одного из них не дает практической возможности определить другой. Поэтому, если получатель А информации сохраняет в секрете ключ расшифрования K_{dA} = SK_AK_{eA} = PK_ASK — secret key, PK — public key).

В процессе шифрования информация делится на порции величиной от одного до сотен бит. Как правило, поточные шифры оперируют с битами открытого и закрытого текстов, реже — с байтами, а блочные — с блоками фиксированной длины. Главное требование к блочному шифру — высокая криптостойкость.

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

Читайте также:  Регистрация без ЭЦП / OTC-market / HELP.OTC.RU

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

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

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

Идея, лежащая в основе итерационных блочных шифров, состоит в построении криптостойкой системы путем многократного применения относительно простых криптографических преобразований, в качестве которых К. Шеннон предложил использовать преобразования замены (подстановки) (substitution) и перестановки (permutation); схемы, реализующие эти преобразования, называются SP-сетями. Действие таких шифров аналогично «алгоритму», к которому прибегают, когда месят тесто:

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

Рассеивание и перемешивание предполагают:

Наличие у шифра этих свойств:

Самые известные блочные шифры — DES (Data Encryption Standard), старый американский стандарт шифрования, созданный в 1974 г., де-факто многолетний неофициальный мировой стандарт шифрования; российский стандарт криптозащиты ГОСТ 28147-89 и новый американский стандарт шифрования AES (Advanced Encryption Standard), принятый в 2001 г. в результате многолетнего открытого международного конкурса.

Структура раундового преобразования DES и ГОСТ носит название петли Фейстеля, схема которой приведена на
рис.
3.7, а структура функций за- и расшифрования — сеть Фейстеля. Структура AES носит название «Квадрат».

DES работает с блоками данных разрядностью 64 бита с использованием 56-разрядного ключа, из которого по специальному фиксированному алгоритму, использующему перестановки и сдвиги, вырабатываются раундовые ключи. Применяемые преобразования — поразрядное сложение по модулю 2, подстановки и перестановки, число раундов равно 16, перед началом первого раунда выполняется начальная фиксированная перестановка IP, после 16-го раунда выполняется обратная перестановка IP^{–1}

Интересно отметить, что в первоначальной схеме, предложенной IBM, все шестнадцать 48-разрядных раундовых ключей выбирались независимо, т.е. размер ключа был равен 768 битам. Однако по требованию Агентства национальной безопасности США (АНБ), во-первых, размер ключа был уменьшен до 64 бит, из которых только 56 являются секретными, во-вторых, в алгоритме определены перестановки лишь специального вида, не зависящие от ключа, что наводило критиков этого алгоритма на мысль, будто АНБ могла использовать известные ей слабости алгоритма для его взлома.

Существует несколько предложений, направленных на усовершенствование DES. Наиболее известное из них, Triple DES, заключается в трехкратном применении алгоритма.

ГОСТ 28147-89. Ключевая информация ГОСТа представляет собой два массива данных: собственно ключ K и таблицу замен H. Ключ — это массив из восьми 32-разрядных элементов K = K_0 K_1 … K_7

В качестве исходных данных раундовая функция шифрования ГОСТа получает 64-разрядный блок данных D = (L, R) и 32-разрядный раундовый ключ, в качестве которого используется один из элементов ключа Кi. В ходе выполнения преобразования левая L и правая R половины блока данных рассматриваются как отдельные 32-разрядные элементы данных, в качестве которых они подвергаются следующим преобразованиям:

  1. сложение по модулю 2^{32} полублока R и элементом ключа;
  2. разбиение результата S на восемь четырехбитовых блоков, поблочная замена по таблице замен, формирование из получившихся блоков нового значения S;
  3. циклический сдвиг результата S на 11 разрядов влево;
  4. поразрядное сложение по модулю 2 (XOR) результата S и полублока L;
  5. элемент R становится новым значением элемента L, значение результата предыдущей операции становится новым значением элемента R.

Полученные значения элементов L и R выдаются в качестве результата шага раундового преобразования.

ГОСТ 28147-89 определяет три режима шифрования данных (простая замена, гаммирование и гаммирование с обратной связью) и режим выработки имитоприставки (кода аутентификации сообщений).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector