Определения

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

Теория криптографических протоколов является относительно молодой научной дисциплиной. Её формирование началось в 80-е годы XX века. В основе этой теории заложены открытия в области асимметричной криптографии, сделанные У. Диффи и М. Хеллманом в 1976 году, и последующее развитие представлений о методах синтеза стойких криптографических систем. Понятие криптографического протокола является центральным понятием современной криптологии (математической криптографии).

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

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

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

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

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

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

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

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

Родственными понятиями для неотслеживаемости являются анонимность и несвязываемость.

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

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

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

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

Упругость (resilience) – это свойство, означающее, что протокол сохраняет безопасность, даже если противник узнает некоторую часть секретных данных участников.

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

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

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

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

Все действия участников протокола образуют последовательность шагов. В свою очередь последовательность шагов протокола группируется в циклы (раунды). Шагом (протокола) (step (of a protocol), protocol action) называют конкретное законченное действие, выполняемое участником {протокола) во время одного цикла (раунда) протокола, например, вычисление значения некоторой функции, проверка правильности сертификата ключа, генерация случайного числа, отправка сообщения, и т.п. В случае протоколов с двумя участниками циклом, раундом или проходом криптографического протокола (round, pass (of cryptographic protocol)) называют временной интервал, в котором активен только один из участников. Цикл (раунд) завершается формированием и отсылкой сообщения с последующим переходом активного участника в состояние ожидания и передачей активности другому участнику. В протоколах с тремя и более участниками в синхронном случае циклом называют период времени между двумя точками синхронизации. К очередной точке синхронизации каждый участник должен отослать все сообщения, которые ему предписано передать другим участникам в текущем раунде. В протоколах интерактивного доказательства циклом (раундом) часто называют комбинацию из трех шагов: заявка, запрос, ответ. В асинхронном случае понятие цикла (раунда) условно.

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

Противником (adversary) называется субъект или коалиция субъектов, который является внешним по отношению к участникам криптографического протокола, наблюдающий за передаваемыми сообщениями, и, возможно, вмешивающийся в работу участников, путем перехвата, искажения (модификации), вставки (создания новых), повтора и перенаправления сообщений, блокирования передачи и т.п. с целью нарушения безопасности. Нарушителем (adversary) называется участник криптографического протокола, нарушающий предписанные протоколом действия. Противник может образовывать коалицию с нарушителем. У терминов противник и нарушитель существуют синонимы: внешний нарушитель (outside adversary) и внутренний нарушитель (inside adversary), соответственно. Нарушителя также называют нечестным участником (dishonest party). Честным участником (honest party) называют участника крипографического протокола, владеющего всей необходимой информацией, в том числе, если требуется, секретными ключами, и выполняющий все свои действия в соответствии с протоколом. Противники и нарушители бывают активные и пассивные. Активный противник (active adversary) — это противник, который вмешивается в ход выполнения криптографического протокола. Пассивный противник (passive adversary, eavesdropper) — это противник, который может получать некоторую информацию о выполнении криптографического протокола, но не вмешивается в его работу. Активный нарушитель (active adversary) — это нарушитель, который недопустимым образом влияет на ход выполнения криптографического протокола. Пассивный нарушитель (passive adversary, eavesdropper) — это нарушитель, который ограничивается сбором и анализом информации о ходе выполнения криптографического протокола, но не вмешивается в него. Как правило, полный анализ всех результатов однократного выполнения криптографического протокола позволяет обнаружить присутствие активного противника или активного нарушителя. Полный анализ результатов неоднократного выполнения криптографического протокола не позволяет обнаружить присутствие пассивного противника или пассивного нарушителя.

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

К определению и оценке криптографической стойкости развиваются два основных подхода — теоретическая стойкость и практическая стойкость.

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

Существуют следующие виды вычислительной сложности.

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

Емкостная сложность алгоритма (space complexity) — это функция, которая выражает зависимость числа ячеек памяти, используемых в работе алгоритма, от длины записи исходных данных. Обычно рассматривается емкостная сложность алгоритма в худшем случае, то есть максимальное значение емкостной сложности по всем исходным данным одинаковой длины. Также может рассматриваться емкостная сложность алгоритма в среднем, то есть среднее значение емкостной сложности при случайном выборе исходных данных одинаковой длины.

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

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

Коммуникационная сложность является показателем эффективности реализации криптографических протоколов.

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

Теоретико-информационная (шенноновская) стойкость (information-theoretic (Shannon) security) — это один из видов теоретической стойкости, определяемый с точки зрения математической теории информации. Теоретико-информационная стойкость обычно характеризуется количеством информации (в смысле К.Шеннона) относительно неизвестного противнику и/или нарушителю элемента криптопротокола, содержащимся в перехваченном шифрованном тексте или других доступных данных и вычисленным в рамках той или иной вероятностной модели. Говорят также, что теоретико-информационная стойкость криптопротокола характеризует его способность противостоять атакам со стороны противника и/или нарушителя, располагающего неограниченными вычислительными ресурсами.

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

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

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

Криптографические протоколы условно можно разделить на примитивные и прикладные.

Примитивный криптографический протокол (primitive cryptographic protocol) – это протокол, не имеющий самостоятельного прикладного значения, но который используется как базовый компонент при построении прикладных протоколов. Например, протоколы подбрасывания монеты по телефону, протоколы привязки к биту, протоколы обмена секретами являются примитивными криптграфическими протоколами.

Прикладной криптографический протокол (application cryptographic protocol) – это протокол, предназначенный для решения практических задач.

По числу участников криптографические протоколы делятся на двусторонние и многосторонние (трехсторонние и т.д.).

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

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

По способу функционирования – протоколы с арбитром (протоколы с посредником), двусторонние протоколы/протоколы с доверенной третьей стороной (с центром доверия), протоколы, работающие в реальном времени (online)/протоколы, работающие в отложенном режиме (offline) и т.п.

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

Еще одним примером классификации является классификация криптографических протоколов по областям применения:

  • протоколы для систем электронного обмена данными, включающая протоколы электронного документооборота;
  • протоколы для систем электронных платежей;
  • протоколы для систем электронной коммерции;
  • протоколы для поддержки правовых отношений, включающая протоколы голосования (электронные выборы);
  • игровые протоколы

и т. д.

Множество разнообразных криптографических протоколов обеспечивают реализацию различных функций безопасности, поэтому свойств, характеризующих безопасность криптографического протокола, также достаточно много. Обычно свойства криптографических протоколов, характеризующие их стойкость к различным видам атак, формулируют как цели (goals) или требования к протоколам. Трактовка этих требований меняется и уточняется со временем. Наиболее полное и современное толкование этих свойств дается в документах международной организации Internet Engineering Task Force (IETF). В настоящее время в документах IETF фигурируют двадцать свойств (целей, требований) безопасности, распределенных по десяти группам:

  1. аутентификация (нешироковещательная):

    G1 — аутентификация субъекта;
    G2 — аутентификация сообщения;
    G3 — защита от повтора;

  2. аутентификация при рассылке по многим адресам или при подключении к службе подписки/уведомления:

    G4 — неявная (скрытая) аутентификация получателя;
    G5 — аутентификация источника;

  3. G6 — авторизация (доверенной третьей стороной);
  4. свойства совместной генерации ключа:

    G7 — аутентификация ключа;
    G8 — подтверждение правильности ключа;
    G9 — защищенность от чтения назад;
    G10 — формирование новых ключей;
    G11 — защищенная возможность договориться о параметрах безопасности;

  5. G12 — конфиденциальность;
  6. анонимность:

    G13 — защита идентификаторов от прослушивания (несвязываемость);
    G14 — защита идентификаторов от других участников;

  7. G15 — ограниченная защищенность от атак типа «отказ в обслуживании»:
  8. G16 — инвариантность отправителя;
  9. невозможность отказа от ранее совершенных действий:

    G17 — подотчетность;
    G18 — доказательство источника;
    G19 — доказательство получателя;

  10. G20 — безопасное временное свойство.

Также в документах IETF обсуждаются и другие свойства, например:

  • криптографическое разделение ключей (cryptographic separation of keys);
  • возможность договориться о выборе алгоритмов шифрования (cipher suite negotiation);
  • устойчивость к атаке со словарем (dictionary attack resistance);
  • криптографическое связывание (cryptographic binding);
  • поддержка быстрого восстановления соединения (support for fast reconnect);
  • подтверждение успешного завершения и индикация ошибок (acknowledged success and failure indications);
  • независимость сеансов (session independence);
  • защищенность от атаки «противник в середине» (man-in-the-middle attack resistance);
  • взаимная живучесть (peer liveness).

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

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

Наиболее широко известными являются следующие атаки.

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

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

Атака с повторной передачей (replay attack) – атака, при которой противник и/или нарушитель повторно использует ранее переданное в текущем или предыдущем сеансе сообщение или какую-нибудь его часть в текущем сеансе протокола.

Атака на основе новизны (freshness attack) – атака с повторной передачей на протокол передачи ключей, при которой повторно противник и/или нарушитель повторно использует уже использованный ранее сеансовый ключ.

Атака отражением (reflection attack) – атака с повторной передачей, состоящая в обратной передаче отправителю ранее переданных им сообщений.

Атака с задержкой передачи сообщения (forced delay) – атака с повторной передачей, состоящая в перехвате противником сообщения и использовании его в более поздний момент времени.

Комбинированная атака (interleaving attack) – атака, состоящая в подмене или другом методе обмана, использующем комбинацию данных из ранее выполненных протоколов, в том числе протоколов, ранее навязанных противником.

Атака с параллельными сеансами (parallel-session attack) – атака, в котором противник специально открывает одновременно несколько параллельных сеансов в целях использования сообщений из одного сеанса в другом.

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

Использование противником своих средств в качестве части телекоммуникационной структуры – атака, при которой в протоколе идентификации между участниками А и В противник С входит в телекоммуникационный канал и становится его частью при реализации протокола между участниками A и B. При этом противник может подменить информацию, передаваемую между участниками A и B.

Атака с известным сеансовым ключом (known-key attack) – атака, состоящая в попытке получения информации о долговременном ключе или любой другой ключевой информации, позволяющей восстанавливать сеансовые ключи для других сеансов протокола.

Атака с неизвестным общим ключом (unknown-key share attack) – атака, при которой нарушитель C открывает два сеанса с участниками A и B, выступая в первом случае от имени B, хотя последний может и ничего об этом не знать. В результате будет сформирован общий ключ между участниками A и B, при чем участник А будет уверен, что сформировал общий ключ с участником B, а участник B будет уверен, что сформировал общий ключ с участником C. Сам ключ может быть неизвестен участнику C.

Атака с известным разовым ключом (short-term secret) – атака на протокол с повторной передачей, основанная на знании одноразового секрета.

Атака «противник в середине» (man-in-the-middle attack) - атака, при которой противник C выполняет протокол как участником A, так и с участником B. Противник C выполняет сеанс с участником A от имени B, а с участником B – от имени A. В процессе выполнения противник пересылает сообщения от A к B и обратно, возможно, подменяя их.

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