Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы2.doc
Скачиваний:
136
Добавлен:
20.08.2019
Размер:
6.7 Mб
Скачать
  1. Асимметричные системы шифрования. Основные этапы реализации электронной цифровой подписи.

Криптографическая система с открытым ключом (или Асимметричное шифрование, Асимметричный шифр) — система шифрования и/или электронной цифровой подписи (ЭЦП), при которой открытый ключ передаётся по открытому (то есть незащищённому, доступному для наблюдения) каналу, и используется для проверки ЭЦП и для шифрования сообщения. Для генерации ЭЦП и для расшифрования сообщения используется секретный ключ.[1] Криптографические системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах, в частности, в протоколах TLS и его предшественнике SSL (лежащих в основе HTTPS), в SSH. Также используется в PGP, S/MIME.

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

Односторонняя функция (англ. one-way function) эффективно вычисляется за полиномиальное время на детерминированной машине Тьюринга, но не существует полиномиальной вероятностной машины Тьюринга, которая обращает нашу функцию с более чем экспоненциально малой вероятностью.

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

Понять идеи и методы криптографии с открытым ключом помогает следующий пример — хранение паролей в компьютере. Каждый пользователь в сети имеет свой пароль. При входе, он указывает имя и вводит секретный пароль. Но если хранить пароль на диске компьютера, то кто-нибудь его может считать (особенно легко это сделать администратору этого компьютера) и получить доступ к секретной информации. Для решения задачи используется односторонняя функция. При создании секретного пароля в компьютере сохраняется не сам пароль, а результат вычисления функции от этого пароля и имени пользователя. Например, пользователь Алиса придумала пароль «Гладиолус». При сохранении этих данных вычисляется результат функции f(ГЛАДИОЛУС), пусть результатом будет строка РОМАШКА, которая и будет сохранена в системе. В результате файл паролей примет следующий вид:Имя f(имя_пароль)

АЛИСА РОМАШКА

БОБ НАРЦИСС

Вход в систему теперь выглядит так:Имя: АЛИСА

Пароль: ГЛАДИОЛУС

Когда Алиса вводит «секретный» пароль, компьютер проверяет, даёт или нет функция, применяемая к ГЛАДИОЛУС, правильный результат РОМАШКА, хранящийся на диске компьютера. Стоит изменить хотя бы одну букву в имени или в пароле, и результат функции будет совершенно другим. «Секретный» пароль не хранится в компьютере ни в каком виде. Файл паролей может быть теперь просмотрен другими пользователями без потери секретности, так как функция практически необратимая.

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

К Королёв 5643452

О Орехов 3572651

Р Рузаева 4673956

O Осипов 3517289

Б Батурин 7755628

К Кирсанова 1235267

А Арсеньева 8492746

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

Примеры таких криптотекстов:Криптотекст 1 Криптотекст 2 Криптотекст 3

1235267 5643452 1235267

3572651 3517289 3517289

4673956 4673956 4673956

3517289 3572651 3572651

7755628 7755628 7755628

5643452 1235267 5643452

8492746 8492746 8492746

Чтобы расшифровать текст, надо иметь справочник, составленный согласно возрастанию номеров. Этот справочник является лазейкой (секрет, который помогает получить начальный текст), известной только легальным пользователям. Не имея на руках копии справочника, криптоаналитик затратит очень много времени на расшифровку.[2]

Схема шифрования с открытым ключом

Пусть K — пространство ключей, а e и d — ключи шифрования и расшифрования соответственно. Ee — функция шифрования для произвольного ключа eK, такая что:

Ee(m) = c

Здесь cC, где C — пространство шифротекстов, а mM, где M — пространство сообщений.

Dd — функция расшифрования, с помощью которой можно найти исходное сообщение m, зная шифротекст c :

Dd(c) = m

{Ee: eK} — набор шифрования, а {Dd: dK} — соответствующий набор для расшифрования. Каждая пара (E,D) имеет свойство: зная Ee, невозможно решить уравнение Ee(m) = c, то есть для данного произвольного шифротекста cC, невозможно найти сообщение mM. Это значит, что по данному e невозможно определить соответствующий ключ расшифрования d. Ee является односторонней функцией, а d — лазейкой.[3]

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

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

Чтобы послать сообщение m Бобу, Алиса применяет функцию шифрования, определённую открытым ключом e: Ee(m) = c, c — полученный шифротекст.

Боб расшифровывает шифротекст c, применяя обратное преобразование Dd, однозначно определённое значением d.

Основные принципы построения криптосистем с открытым ключом

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

Можно выделить легкую подзадачу P' из P. Она должна решаться за полиномиальное время, лучше, если за линейное.

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

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

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

Криптография с несколькими открытыми ключами

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

Пусть есть 3 ключа KA, KB, KC, распределенные так, как показано в таблице.Лицо Ключ

Алиса KA

Боб KB

Кэрол KC

Дэйв KA, KB

Эллен KB, KC

Франк KA, KC

Тогда Алиса может зашифровать сообщение ключом KA, а Эллен расшифровать ключами KB, KC, Кэрол — зашифровать ключом KC, а Дэйв расшифровать ключами KA, KB. Если Дэйв зашифрует сообщение ключом KA, то сообщение сможет прочитать Эллен, если ключом KB, то его сможет прочитать Франк, если же обоими ключами KA и KB, то сообщение прочитает Кэрол. По аналогии действуют и другие участники. Таким образом, если используется одно подмножество ключей для шифрования, то для расшифрования требуются оставшиеся ключи множества. Такую схему можно использовать для n ключей.Шифруется ключом Расшифровывается ключом

KB и KC KA

KA и KC KB

KA и KB KC

KC KA, KB

KA KB, KC

KB KA, KC

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

Рассмотрим для начала множество, состоящее из трех агентов: Алисы, Боба и Кэрол. Алисе выдаются ключи KA и KB, Бобу — KB и KC, Кэрол — KA и KC. Теперь, если отправляемое сообщение зашифровано ключом KC, то его сможет прочитать только Алиса, последовательно применяя ключи KA и KB. Если нужно отправить сообщение Бобу, сообщение шифруется ключом KA, Кэрол — ключом KB. Если нужно отправить сообщение и Алисе и Кэрол, то для шифрования используются ключи KB и KC.

Преимущество этой схемы заключается в том, что для её реализации нужно только одно сообщение и n ключей (в схеме с n агентами). Если передаются индивидуальные сообщения, то есть используются отдельные ключи для каждого агента (всего n ключей) и каждого сообщения, то для передачи сообщений всем различным подмножествам требуется 2n − 2 ключей.

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

Алгоритмы криптосистемы с открытым ключом можно использовать[7]

  • Как самостоятельные средства для защиты передаваемой и хранимой информации

  • Как средства распределения ключей. Обычно с помощью алгоритмов криптосистем с открытым ключом распределяют ключи, малые по объёму. А саму передачу больших информационных потоков осуществляют с помощью других алгоритмов.

  • Как средства аутентификации пользователей.

Преимущества

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

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

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

  • В больших сетях число ключей в асимметричной криптосистеме значительно меньше, чем в симметричной.

Недостатки

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

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

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

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

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

Цифровая подпись предназначена для аутентификации лица, подписавшего электронный документ[1]. Кроме этого, использование цифровой подписи позволяет осуществить:

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

  • Защиту от изменений (подделки) документа: гарантия выявления подделки при контроле целостности делает подделывание нецелесообразным в большинстве случаев.

  • Невозможность отказа от авторства. Так как создать корректную подпись можно, лишь зная закрытый ключ, а он должен быть известен только владельцу, то владелец не может отказаться от своей подписи под документом.

  • Доказательное подтверждение авторства документа: Так как создать корректную подпись можно, лишь зная закрытый ключ, а он должен быть известен только владельцу, то владелец пары ключей может доказать своё авторство подписи под документом. В зависимости от деталей определения документа могут быть подписаны такие поля, как «автор», «внесённые изменения», «метка времени» и т. д. <-- вот тут не понятно: как это подтверждает авторство самого документа? -->

Все эти свойства ЭЦП позволяют использовать её для следующих целей[2]:

  • Декларирование товаров и услуг (таможенные декларации)

  • Регистрация сделок по объектам недвижимости

  • Использование в банковских системах

  • Электронная торговля и госзаказы

  • Контроль исполнения государственного бюджета

  • В системах обращения к органам власти

  • Для обязательной отчетности перед государственными учреждениями

  • Организация юридически значимого электронного документооборота

  • В расчетных и трейдинговых системах

Существует несколько схем построения цифровой подписи:

  • На основе алгоритмов симметричного шифрования. Данная схема предусматривает наличие в системе третьего лица — арбитра, пользующегося доверием обеих сторон. Авторизацией документа является сам факт зашифрования его секретным ключом и передача его арбитру.[7]

  • На основе алгоритмов асимметричного шифрования. На данный момент такие схемы ЭЦП наиболее распространены и находят широкое применение.

  • Кроме этого, существуют другие разновидности цифровых подписей (групповая подпись, неоспоримая подпись, доверенная подпись), которые являются модификациями описанных выше схем.[7] Их появление обусловлено разнообразием задач, решаемых с помощью ЭЦП.

В России юридически значимый сертификат электронной подписи выдаёт удостоверяющий центр. Правовые условия использования электронной цифровой подписи в электронных документах регламентирует ФЕДЕРАЛЬНЫЙ ЗАКОН ОТ 10.01.2002 N 1-ФЗ «ОБ ЭЛЕКТРОННОЙ ЦИФРОВОЙ ПОДПИСИ»

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

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

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

Стандарт DSS (Digital Signature Standard) - это асимметричный шифр, использование которого рекомендовано правительством США. Здесь используются ключи длиной от 512 до 1024 бит. Стандарт DSS применяется только для формирования цифровой подписи, но не для закрытия данных. Он основан на алгоритме DSA (Digital Signature Algorithm), разработанном Национальным институтом стандартов и технологий (National Institute of Standards and Technology, NIST).

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

алгоритм генерации ключевых пар пользователя;

функцию вычисления подписи;

функцию проверки подписи.

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

В настоящее время детерминированые схемы практически не используются. Даже в изначально детерминированные алгоритмы сейчас внесены модификации, превращающие их в вероятностные (так, в алгоритм подписи RSA вторая версия стандарта PKCS#1 добавила предварительное преобразование данных (OAEP), включающее в себя, среди прочего, зашумление).

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

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

Алгоритмы ЭЦП делятся на два больших класса: обычные цифровые подписи и цифровые подписи с восстановлением документа. Обычные цифровые подписи необходимо пристыковывать к подписываемому документу. К этому классу относятся, например, алгоритмы, основанные на эллиптических кривых (ECDSA, ГОСТ Р 34.10-2001, ДСТУ 4145-2002). Цифровые подписи с восстановлением документа содержат в себе подписываемый документ: в процессе проверки подписи автоматически вычисляется и тело документа. К этому классу относится один из самых поплярных алгоритмов — RSA.

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

Модели атак и их возможные результаты

В своей работе Гольдвассер, Микали и Ривест описывают следующие модели атак, которые актуальны и в настоящее время[5]:

Атака с использованием открытого ключа. Криптоаналитик обладает только открытым ключом.

Атака на основе известных сообщений. Противник обладает допустимыми подписями набора электронных документов, известных ему, но не выбираемых им.

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

Также в работе описана классификация возможных результатов атак:

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

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

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

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

Ясно, что самой «опасной» атакой является адаптивная атака на основе выбранных сообщений, и при анализе алгоритмов ЭЦП на криптостойкость нужно рассматривать именно ее (если нет каких-либо особых условий).

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

[править]

Подделка документа (коллизия первого рода)

Злоумышленник может попытаться подобрать документ к данной подписи, чтобы подпись к нему подходила. Однако в подавляющем большинстве случаев такой документ может быть только один. Причина в следующем:

Документ представляет из себя осмысленный текст.

Текст документа оформлен по установленной форме.

Документы редко оформляют в виде Plain Text — файла, чаще всего в формате DOC или HTML.

Если у фальшивого набора байт и произойдет коллизия с хешем исходного документа, то должны выполниться 3 следующих условия:

Случайный набор байт должен подойти под сложно структурированный формат файла.

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

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

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

Вероятность подобного происшествия также ничтожно мала. Можно считать, что на практике такого случиться не может даже с ненадёжными хеш-функциями, так как документы обычно большого объёма — килобайты.

[править]

Получение двух документов с одинаковой подписью (коллизия второго рода)

Куда более вероятна атака второго рода. В этом случае злоумышленник фабрикует два документа с одинаковой подписью, и в нужный момент подменяет один другим. При использовании надёжной хэш-функции такая атака должна быть также вычислительно сложной. Однако эти угрозы могут реализоваться из-за слабостей конкретных алгоритмов хэширования, подписи, или ошибок в их реализациях. В частности, таким образом можно провести атаку на SSL-сертификаты и алгоритм хеширования MD5.[11]

[править]

Социальные атаки

Социальные атаки направлены не на взлом алгоритмов цифровой подписи, а на манипуляции с открытым и закрытым ключами[12].

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

Злоумышленник может обманом заставить владельца подписать какой-либо документ, например, используя протокол слепой подписи.

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

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

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