Основные идеи электронной подписи 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основные идеи электронной подписи



 

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

Пусть М – исходное сообщение, x 1 – закрытый ключ первого пользователя, x 2 – закрытый ключ второго пользователя, y 1 = a x1 mod p – открытый ключ первого пользователя, y 2 = a x2 mod p – открытый ключ второго пользователя. Как было показано выше, каждый из пользователей может легко вычислить общий для них ключ, а именно k = a x1x2 mod p.

Для выработки подписи первый пользователь:

- вычисляет h(M) и

- шифрует h(M) на ключе k, то есть вычисляет fk(h(M)).

Второму пользователю отправляется пара (М, fk(h(M))).

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

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

Конечно, реально используемые схемы ЭП значительно сложнее. Например, в ГОСТ Р 34.10-94 предлагается метод, который со значительными упрощениями описан ниже. Повторим – метод описан со значительными упрощениями, и в таком виде его реализовывать не стоит, хотя для понимания приводимое ниже описание вполне достаточно.

Далее полагаем, что:

р- простое число, 2509 < р < 2512 либо 21020 < р < 21024;

q- простое число, 2254 < q < 2256 и q является делителем для (p-1);

а- целое число, 1 < а < р-1, при этом аq (mod p) = 1.

Для организации достоверной и аутентифицированной передачи сообщения М пользователь выбирает х – секретный ключ пользователя для формирования подписи, такой, что 0 < х < q, и вычисляет у – открытый ключ пользователя для проверки подписи, а именно: у = аx (mod p).

Для того, чтобы подписать сообщение, пользователь должен:

1. Вычислить h(M) – значение хеш-функции h от сообщения М.

2. Выбрать случайное целое число k, 0 < k < q.

3. Вычислить r = ak (mod p)(mod q).

4. Вычислить s = (xr + kh(M))(mod q).

5. Подписью является пара c = (r, s).

Теперь пользователь отправляет своему абоненту пару (М, с) – то есть сообщение и его электронную цифровую подпись.

Абонент заранее знает p, q и a, и получив сообщение с ЭП, дополняет свои знания r и s. В общем случае, получив сообщение, нельзя быть уверенным в том, что оно именно то, которое было отправлено, и поэтому полученное сообщение будем обозначать М1 в отличие от отправленного М.

Если абонент намерен проверить ЭП под сообщением М1, он должен выполнить следующие действия:

1. Вычислить h(M1) - значение хеш-функции h от полученного сообщения М1.

2. Вычислить значение v = h(M1)q-2 (mod q)

3. Вычислить значения: z1 = sv (mod q) и z2 = (q-r') v (mod q)

4. Вычислить значение u = (az1 yz2 (mod p)) (mod q)

5. Проверить условие: r = u. Если условие выполняется, можно быть уверенным, что М1 = М, то есть что сообщение доставлено неизменным и его подписал владелец открытого ключа y.

Анализируя ту или иную схему ЭП, обычно ставят вопрос так: «Можно ли быстро подобрать два различных (осмысленных) сообщения, которые будут иметь одинаковые ЭП». Ответ здесь обычно отрицательный – трудно это сделать. Если используется хорошая хэш-функция, для которой не найден эффективный механизм поиска коллизий, такая атака практически всегда обречена на провал. Михаил Грунтович [61] поставил вопрос по-другому: «Можно ли, имея два сообщения, подобрать секретные ключи так, чтобы подписи совпадали?». И оказалось, что сделать это чрезвычайно просто! А вот последствия могут быть очень непростыми.

Вот пример действий злоумышленника:

1. Подготовить две платежки:

o на 10000000 руб. (m1);

o на 3 руб. (m2).

2. Выбрать секретный ключ X1 и рассчитать ключ X2.

3. Зарегистрировать открытые ключи, соответствующие секретным.

4. Отправить в банк требование m1 с подписью на X1 (m1c1).

5. Дождаться выполнения банком поручения.

6. Предъявить банку претензию, состоящую в том, что он якобы посылал требование о переводе 3-х рублей (m2c2), а не 10000000 (m1c1), а то, что кто-то подобрал текст сообщения, не изменяющий ЭП – дело не его. Пусть платит банк, удостоверяющий центр, страховая компания – кто угодно, только верните мои деньги! И главное, что придется вернуть!

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

Рассмотрим еще раз схему атаки на ЭП, обнаруженную М. Грунтовичем. Предварительно злоумышленник регистрирует два активных открытых ключа проверки подписи y1 и y2, соответствующие личным (секретным) ключам подписи x1 и x2. С помощью первого ключа x1 он подписывает документ m1, а с помощью x2 — m2. Причем ключи x1 и x2 выбраны таким образом, что подписи c1 и c2 на документах m1 и m2 совпадают. После этого подписанный документ вместе с подписью (m1, c1) отсылается адресату, который с успехом проверяет подпись c1 ключом проверки y1 и верит ему. А автор отказывается от m1 ипри попытке предъявить ему претензию показывает в качестве «истинного» подписанного им документа (m2, c2).

Конкретные условия реализации указанной атаки рассмотрим на примере подписи по схеме Эль-Гамаля. Вера в стойкость схемы Эль Гамаля основана на (гипотетической) сложности задачи дискретного логарифмирования, но здесь атаке подвергается вовсе не задача дискретной математики.

Введем следующие обозначения:

H — криптографическая хэш-функция;

  Zn — множество чисел {0,1, …, n – 1}, n — натуральное число;

a (mod p) — остаток от деления целого числа a на натуральное число p.

Для схемы формирования подписи Эль-Гамаля:

· фиксируется простое число p достаточной разрядности и g -примитивный элемент mod p;

· личным ключом подписи является любое число x из Zp;

Вычисление подписи сообщения m:

· вычисляется хэш-код h = H(m);

· выбирается случайное число k, взаимно простое с

  p – 1: 1 < k < p – 1;

· вычисляется r = gk(mod p);

· вычисляется s = k–1(h – xr)(mod p – 1);

· подписью является пара c = (r, s).

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

  h1 = H(m1), h2 = H(m2)

и совпадающие подписи с одинаковым случайным числом k:

s = k–1(h1 – x1r)(mod p – 1) и

s = k–1(h2 – x2r)(mod p – 1).


А это значит, что

h1 – x1r (mod p – 1) = h2 – x2r(mod p – 1).

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

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

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

 Существует и радикальный способ борьбы с атаками такого рода – для этого всего лишь необходимо иметь устройство, в котором:

1. Генерируется секретный ключ.

2. Вычисляется открытый ключ.

3. Открытый ключ экспортируется, в том числе для сертификации в удостоверяющем центре.

4. Секретный ключ применяется для выработки ЭП только внутри устройства, его экспорт невозможен!

Надо сказать, что описанная атака еще раз свидетельствует о том, что

- необходимо избегать анонимности пользователей в интернете;

- кроме асимметричной криптографии в электронном документообороте необходимо применять и симметричные методы;

- вопросы применения ЭП в документообороте необходимо нормативно закрепить в Федеральном Законе.

 

БОРЬБА С ВИРУСАМИ

 

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

Состояние понимания любого сложного явления можно (по-возрастающей) характеризовать как синкретическое, аналитическое или синтетическое.

Синкретизм – (греч. synkretismos – соединение) – слитность, нерасчлененность, характерная для первоначального состояния в развитии чего-нибудь.

 

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

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

Да что языки – даже в пределах одного языка строение фраз может носить явно выраженные признаки синкретизма («Автобус!» (вместо – «вон стоит наш автобус, побежали!»)), аналитизма («У меня у подруги у сестры у ребенка …») или синтетизма («У ребенка сестры моей подруги …»)!

Рассмотрим типичное для науки выражение: «Из А следует В». Процесс доказательства этого утверждения будет деятельностью аналитической.

Возьмем теперь два утверждения: «Из А следует В» и «Из В следует С». Как и ранее, доказательство каждого утверждения – деятельность аналитическая, а вот генерация на основе этих утверждений нового: «Из А следует С» – это уже синтез!

Для логики (математической) синтезированный вывод очевиден. Как и то, что если в такой паре утверждений одно неверно, то неверно и итоговое утверждение «Из А следует С».

А так ли это? Значит ли, что при утверждениях: «Из А следует В» и «Из В не следует С» неверно утверждение «Из А следует С»? Ведь при исходных утверждениях вполне могут быть верны: «Из А следует D» и «Из D следует С», при которых «Из А следует С» – верно!

Так верно или неверно синтезированное нами утверждение? Есть ли парадокс? Простого ответа нет – простых ответов не бывает даже в логике. Парадокса тоже нет – в зависимости от условий (окружающей среды, состава и структуры системы и т. д.) результат синтеза может быть различным.

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

В познании природных явлений уровни синкретического, аналитического и синтетического осмысления абсолютно естественны. Это объясняется чрезвычайной сложностью объекта познания, его внутренней противоречивостью и конечностью времени изучения. Да и мозг человека так устроен – правое полушарие оперирует образами, левое – логическими правилами вывода, а вместе они (у некоторых людей) способны к синтезу. Это очень практично – падает дерево – отойди в сторону, потом рассчитаешь, упало бы оно тебе на голову или рядом. Собираешься в магазин – сосчитай деньги, не то можно оказаться в сложной ситуации.

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

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

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

 

Жизненный цикл разрушающих программных воздействий (РПВ)

1. Заказ на РПВ

2. Разработка РПВ

3. Транспортировка РПВ на компьютеры пользователей

4. Исполнение РПВ

5. Борьба с РПВ

6. Восстановление состояния

 

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

Нет сомнения, что компьютерный вирус – это программа. Программу пишут люди. Значит, все вирусы так или иначе созданы человеком.

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

Что можно противопоставить мотивации? Вряд ли что-нибудь, кроме мотивации более сильной. Что же является более сильной мотивацией, чем желание получить много денег? Видимо, что-то, касающееся более простых и потому более важных вещей – желания остаться на свободе, например. Здесь уже чувствуется роль государства как аппарата принуждения. Конечно, важна роль гражданского общества, действительно, общественное мнение имеет первостепенное значение, но наказывать надо, если кто-то кое-где у нас порой…

Государство должно из словосочетания «компьютерное преступление» выбросить слово «компьютерное». А преступник должен сидеть в тюрьме.

 

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

 

О том, как доставляются вирусы, написаны тома [11, 62]. Как только вирусы не маскируют – от простейшего грима под «полезная утилита» до «любовных писем» и фотографий звезд (с анонсом «обнаженная»). Все это только для одного – доставить вирус на ваш компьютер. По сути, в том или ином виде всегда используется все тот же метод социальной инженерии – для доставки Вам вируса злоумышленнику необходимо Вас же мотивировать. Как с этим бороться – твердят на каждом шагу: применяйте антивирусные программы, и не просто применяйте, а применяйте, своевременно обновив. В этом случае можно выявить вирусы, которые уже известны антивирусной компании.

Вот в этом месте задержимся ненадолго. Итак:

- выявить таким образом можно не все вирусы, а только известные, и

- только посредством антивирусного пакета с актуальными базами сигнатур.    

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

Не менее интересен и второй отмеченный факт. Из него точно следует, что время от времени Вы вынуждены получать из сети некоторые данные, о которых принято думать, что это обновления антивирусных баз. Вот здесь стоит задуматься – почему, получая из сети от некоторого субъекта некоторые данные, мы верим, что это именно то, что мы ожидаем и именно от того абонента, от которого мы их ждем? Доверие – фундаментальная характеристика безопасности, но слепое, ничем не обоснованное доверие – это скорее всего, либо неинформированность, либо просто глупость.

Рассмотрим проблемы обновления антивирусных баз (как, кстати, и обновления ОС) подробнее.

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

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

Но есть и более опасные возможности доставки РПВ от злоумышленника к вам. Эти способы известны специалистам, и связаны с возможностью «навязать» антивирусной компании доставку Вам в составе обновлений некоторой последовательности, которая при определенных условиях может быть преобразована в разрушающее программное воздействие. Чтобы блокировать угрозы такого рода, необходимо применение гораздо более сложных контрольных процедур, требующих аппаратной поддержки. Измениться при этом должна и процедура сертификации обновлений антивирусных баз.

Можно сказать и больше – в общем случае нельзя предотвратить доставку кода вируса на компьютер. Проиллюстрируем это на примере, предложенном проф. А. Ю. Щербаковым.

Пусть К – код РПВ;

Пусть S1 – случайное число такой же длины, как К.

Если  – операция сложения по модулю 2, легко вычислить

S2 = S1  K.

Очевидно, что S2 представляет собой случайное число, как результат операции над случайным числом.

Таким образом, если на Ваш компьютер последовательно попадут числа S1 и S2, они не будут признаны опасными никакими антивирусными средствами – ни антифагами, ни эвристическими анализаторами, ни поведенческими блокираторами. Действительно, это же просто случайные числа! Никакой анализ не обнаружит в них ничего похожего на опасные части кода, ни, тем более, опасного поведения – случайные числа уж точно не программы, и никак себя не ведут. Таким образом, числа S1 и S2 могут легко попасть на Ваш компьютер.

Рассмотрим теперь сложившуюся ситуацию. На компьютере есть S1 и S2, и может быть выполнена операция . Тогда

S1  S2 = S1  S1  K.

Так как S1  S1 = 0 (как сумма по модулю 2 двух одинаковых чисел), то

S1  S2 = K,

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

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

Это звучит страшновато, но нужно ли пугаться? Сотни тысяч вирусов хранятся в антивирусных компаниях, и это не мешает им (компаниям) благоденствовать. Находящиеся в статическом состоянии вирусы никому не нанесут вреда, пока не будут исполнены. Таким образом, если контролировать запуск программ, то можно обезопасить себя от вирусов, находящихся в компьютере.

Вряд ли мысль о том, что вирусы вредят не тогда, когда они попадают на компьютер, а тогда, когда исполняются, покажется кому-либо новой. Скорее, она покажется совершенно тривиальной, настолько, что даже говорить об этом кажется как-то неудобно. Но вот одно вызывает удивление – почему же тогда все усилия в борьбе с вирусами заканчиваются на борьбе с доставкой вирусов?

Почему же никто не предложил технических средств, которые служили бы для того, чтобы вирусы не исполнялись? Да и можно ли вообще это сделать? Как пережить отрезок времени от создания вируса до обновления баз, содержащих его сигнатуру?

Оказывается, выход есть, и средства такие есть. Это средства защиты от несанкционированного доступа (НСД), правда, не любые, а те, которые обладают развитыми системами управления доступом и контроля запуска задач. Такие системы защиты от НСД позволяют создать среду, в которой могут исполняться только разрешенные для исполнения задачи. Если в такой среде не предоставить права исполняться неизвестным задачам, то вирус и не исполнится. В качестве примера такого средства защиты можно привести СЗИ НСД «Аккорд».

Как создать такую среду исполнения, в которой вирус исполняться не будет – мы рассмотрим ниже. А пока продвинемся дальше по триаде «синкретизм – аналитика – синтез».

Итак – вирус не обязательно опасен даже в доставленном виде. Далее – вирус не обнаруживается (в общем случае) в статическом состоянии. Далее – запретив исполнение вируса, мы никогда не обнаружим его присутствия, так как для ряда вирусов обнаружить можно только проявления, а их-то как-раз и не будет. Стало быть, для обнаружения вируса его нужно исполнять. А исполнять нельзя – это погубит компьютерную систему. Парадокс! Что же делать?

Ответ в данном случае «подсмотрен» у природы – в медицине давно научились наблюдать за вирусом «в пробирке», готовя для него «вакцину». Мы можем поступить также – попробовать разрешить вирусу исполниться, но в изолированной вычислительной среде. Действительно, в процессе выполнения вирус проявит себя, но не сможет нанести урон ПЭВМ и данным в ней. О том, как это сделать в этой книге написано уже много.

 



Поделиться:


Последнее изменение этой страницы: 2021-11-27; просмотров: 95; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.156.140 (0.055 с.)