Источник: Оспанов Р.М. Каталог криптографических протоколов. “Информационная безопасность в свете Стратегии Казахстан-2050”: сборник трудов II международной научно-практической конференции(15-17 октября 2014 г., Астана).- Астана, 2014. - 285 с. - С. 119-133.
Систематическое изложение имеющихся на настоящий момент сведений о криптографических протоколах, основных понятиях, свойств, атаках, применениях, а также исторических сведений является серьезной и не простой задачей, решение которой имеет большое научно-методическое значение. Существует ряд зарубежных печатных изданий (российских и дальнего зарубежья), в которых можно найти необходимую информацию об основных принципах построения криптографических протоколов, подробные описания свойств протоколов, большое число примеров, демонстрирующих типовые уязвимости и их влияние на свойства протоколов. Например, такие как [1], [2], [3], [4]. Работа [5] посвящена обзору протоколов аутентификации (имеется также более ранний выпуск этого обзора [6]). Большое количество интернет-ресурсов криптографической тематики содержат разнообразную информацию, касающуюся криптографических протоколов. Например, такие как [7], [8]. Источник [9] содержит обзор научных статей, посвященных исследованиям протоколов игры в покер по телефону (мысленный покер). В интернете также можно найти примеры практического применения криптографических протоколов. Например, такие проекты как [10], [11], [12]. Проект [10] является веб-приложением с нулевым разглашением, примером использования на практике протоколов интерактивных доказательств с нулевым разглашением. Проект [11] является платформой для создания облачных приложений с нулевым разглашением. Проект [12] предлагает технологию, основанную на протоколах мысленного покера, для обеспечения конфиденциальности игры в онлайн-казино, т.е. никто, даже оператор казино, не знает ваших карт.
Очень полезной является работа над созданием систематических каталогов, открытых репозиториев, библиотек криптографических протоколов, которые бы содержали описания алгоритмов, определения, сведения о свойствах протоколов, информацию об уязвимостях и атаках, исторические сведения, указание авторов и ссылок на первоисточники. В качестве примеров можно назвать следующие проекты: коллекция криптографических протоколов AVISPA (The AVISPA Library) [13], библиотека криптографических протоколов SPORE (Security Protocols Open Repository) [14].
1. Проект SPORE
В качестве примера каталога криптографических протоколов рассмотрим французский проект “Открытый репозиторий протоколов безопасности” SPORE (Security Protocols Open Repository), который начал свою работу в 2002 году, однако в настоящее время уже не работает. Осталась доступной интернет-страница проекта [14].
Целью этого проекта явилось создание онлайн-библиотеки протоколов безопасности. Над проектом работала группа исследователей (Hubert Comon-Lundh, Stephanie Delaune, Florent Jacquemard) из лаборатории спецификации и верификации (Laboratoire Specification et Verification (LSV)) высшей нормальной школы Качан (L'ecole normale superieure de Cachan (ENS de Cachan)) (Франция). Разработчики указали, что проект является продолжением основополагающей работы [5] Джона Кларка (John Clark) и Джереми Иакова (Jeremy Jacob), посвященной обзору протоколов аутентификации. обновляющим их базу протоколов безопасности. Первая версия библиотеки открылась 15 ноября 2002 года и содержала 41 протокол и вариантов, большинство из которых было взято из [5].
Рассмотрим интернет-страницу проекта SPORE.
Читателю предлагается 8 разделов.
Первый раздел Home является начальной страницей, в которой рассказывается о цели проекта, о его содержании, о возможности дополнений и обновлений, а также благодарности за поддержку проекта.
Авторы пишут, что интернет-страница проекта содержит (структурированную) библиотеку описаний криптографических протоколов, а также комментарии и ссылки на другие страницы или доступные работы. Каждый протокол библиотеки доступен для скачивания в различных форматах, от печатных форматов до текстовых спецификаций правил протокола, подходящих для разработчиков автоматических средств проверки протоколов. Протоколы описаны в стиле обзорной работы [5] (т.е. в полуформальном синтаксисе), вместе с целями, которых они должны достигнуть. Кроме того, вклчены короткие комментарии о формальных доказательствах или известных атаках с соответствующими ссылками, и ссылки на доступные комментарии, аналитические заметки, статьи. Также авторы указывают, что они открыты для сотрудничества, для добавлений новых протоколов, ссылок или комментарий. Всю необходимую информацию о порядке дополнений можно найти в специальном руководстве. Все добавления модерируются. Идея в том, чтобы сохранить какую-то последовательность, не обзор дополнений. Авторы выражают признательность за поддержку в создании и сопровождении интернет-страницы национальному сетевому проекту EVA, а также Ральфу Трейнену (Ralf Treinen) за использование его правил и скриптов при разработке репозитория.
Второй раздел News содержит новости проекта о новых добавленных протоколах. Последняя запись датируется 6 марта 2003 года.
Следующий раздел Repository содержит список 49 протоколов с краткими описаниями (аннотациями).
Следующий раздел Download содержит сведения о способах и формах скачивания протоколов из репозитория. Каждый протокол репозитория описывается в отдельной html-странице и может быть скачан в следующих формах:
- текстовый файл, содержащий только спецификацию протокола,
- postscript-версию содержания страницы, сжатую с помощью gzip,
- pdf-версию содержания страницы,
- latex-файл, который может быть использован для генерации других версий,
- bibtex-файл с ссылками относительно протокола.
Также можно скачать документ с описаниями всех протоколов репозитория, архив всех текстовых спецификаций протоколов и полный список всех библиографических источников. Для желающих добавить новые протоколы доступны файлы с образцами.
Следующий раздел Protocols format описывает формат страниц протоколов.
Описание протокола дается по следующей схеме.
1. Название протокола.
2. Имя (имена) авторов протокола.
3. Дата первой публикации протокола.
4. При наличии указывается имя лица, представившего протокол в репозиторий.
5. Дата подачи заявки в репозиторий.
6. Далее следует краткое описание (аннотация) предназначения протокола и используемых криптографических средств.
7. Спецификация протокола.
Сообщения протокола могут быть заданы в одной из двух форм:
1) следуя общему синтаксису, установленному в репозитории,
2) используя произвольный синтаксис, в частности, когда некоторые особенности протокола не вписываются в предлагаемый в репозитории синтаксис.
Общий синтаксис.
В библиотеке предлагается общий синтаксис спецификации протокола сообщений, близкий к одной статей [5], которая была применена во многих последних теоретических работах о криптографических протоколах. Например, большинство протоколов аутентификации в работе Кларка и Иакова [5] следуют этому синтаксису (за исключением понятия оператора шифрования). Однако, как уже упоминалось выше, не все спецификации протоколов репозиторий должны обязательно следовать этому синтаксису. Конечно, такой очень общий синтаксис не может избежать неточностей и неясностей в отношении действий, предпринимаемых участниками протокола. Некоторые действия могут быть добавлены между двумя сообщениями протокола, чтобы описать некоторые действия получателя первого сообщения. Синтаксис этих действий является произвольным.
Общий синтаксис для сообщений протокола, определяется по следующей форме, где (exp)* означает 0 или более раз exp, (exp)+ означает 1 или более раз exp, (exp)? означает 0 или 1 раз exp:
messages := (message (action)? )+
message := label'.' id '->' id':' tuple
label := id
id := непустая последовательность из букв, цифр или '$\--$', '$\_$'
tuple := atom (',' atom)*
atom := cipher
| clearterm
clearterm := id
| apply
| '(' (tuple)? ')'
cipher := { tuple }clearterm
apply := id'('tuple')'
action := произвольный текст
Идентификаторы (id) – это переменные протокола примитивных типов или функций, таких как односторонних (хэш) функций, или функций, которые связывают ключи с именами участников, например. Примитив предлагается для шифрования с обычной нотацией, используя квадратные скобки. Тем не менее, специальный идентификатор может также использоваться для шифрования, когда необходимы подробности. Идентификаторы могут быть объявлены перед сообщениями протокола. Форма объявления типа примитивных или функциональных идентификаторы произвольная. В частности, в случае шифрования с открытым ключом, определенное обозначение может использоваться, чтобы связать открытый и закрытый ключи. Кортежи могут быть написаны с или без скобок. Предполагается по умолчанию, что кортеж a0, a1, ..., an, написанные без использования круглых скобках, группируются слева.
Семантика.
Поскольку многие семантики существуют для криптографических протоколов, данных в приведенном выше синтаксисе, авторы проекта решили не вводить семантику в репозитории. Семантические аспекты протокола могут быть рассмотрены в следующем разделе.
8. Пояснения.
Этот раздел содержит некоторые дополнительные сведения о переменных протокола, начальных условиях, обработке полученных сообщений и конструировании новых сообщений участниками протокола, управлении потоком данных при выполнении протокола... и вообще все то, что можно объяснить, не заданное явно в спецификации протокола.
Некоторые эквациональные аксиомы для функциональных идентификаторов могут быть даны здесь.
9. Требования.
Некоторые свойства, которыми протокол должен обладать, описаны здесь на естественном языке.
10. Ссылки.
В этом разделе приводятся статьи, в которых протокол был опубликован, а также учебники или обзоры, в которых описан протокол.
Этот раздел не приводит статьи, изучающие протокол, это назначение двух следующих разделов.
11. Заявленные доказательства.
В этом разделе приводятся работы, представляющие формальное доказательство корректности протокола, или, по крайней мере, одного из требований, приведенных выше.
Замечание.Авторы проекта не проверяют правильность утверждений, представленых на страницах протоколов. Скорее, целью данного раздела (и следующего раздела “Заявленные атаки”) является точное цитирование некоторых опубликованных работ о протоколах, представленных в репозитории. Этот репозиторий является открытой и коллективной работой, рассчитанной на постоянное обновление. Поэтому авторы проекта предоставили возможность читателям предлагать возможные усовершенствования или исправления, в частности:
Если приведенное доказательство (или атака) неверно отображается, читатель может сообщить об этом, нажав на ссылку “отправить комментарий” в заголовке страницы. Этот комментарий будет добавлен на страницы после соответствующей секции.
Если по мнению читателя изложение некоторых работ не является точной, об этом также можно сообщить авторам проекта для внесения необходимых исправлений.
Наконец, можно сообщить о работах по криптографическому протоколу репозитория, которые не были упомянуты на странице протокола (опять же, используя ссылку “отправить комментарий”). Он будет добавлен на страницу.
12. Заявленные атаки.
В этом разделе приводятся работы, которые утверждают, что продемонстрировали уязвимость протокола, с учетом требований, приведенных выше.
Иногда, один (или несколько) сценариев атаки могут быть найдены здесь.
Сценарий - это последовательность сообщений, возможно, с 2 или более чересстрочными сессиями протокола, написанных в том же синтаксисе, что спецификация протокола.
Следуя синтаксису, использованному в обзоре Кларка и Иакова, мы используем два специальных конструктора имен отправителя и получателя, чтобы описать конкретные действия вредоносных агентов (нарушитель I):
перехват сообщения нарушителем I:
label. sender -> I(receiver) : message contents
отправка сообщения нарушителем I, с имитацией другого участника-отправителя:
label. I(sender) -> receiver : message contents
13. Комментарий.
В этом разделе приводятся замечания, посланные читателем, его имя и дата указаны в названии. Комментарии модерируются.
14. Примечания.
Этот дополнительный раздел содержит дополнительные замечания.
15. См. также.
Перекрестные ссылки на другие протоколы репозитория.
16. Цитирование.
Последний раздел страницы протокола содержит список библиографических ссылок, цитируемых на странице.
Следующий раздел проекта How to submit содержит указания о том, как добавить новый протокол в репозиторий.
Для контактов с авторами проекта предназначен раздел Contact us.
Последний раздел Search the pages не действует.
В следующем параграфе для сравнения рассмотрим другой пример.
2. Проект www.cryptoprotocols.kz
Рассмотрим теперь авторский проект www.cryptoprotocols.kz, посвященный криптографическим протоколам (автор – Оспанов Р.М.). Основной целью его является создание как можно более полного и постоянно пополняемого каталога криптографических протоколов. Данный каталог криптографических протоколов состоит из информационных карт, содержащих информацию, распределенную по следующим разделам.
Заголовок.Этот раздел содержит название протокола, наиболее встречающееся в литературе, его обозначение в каталоге, составленное из первых букв названия на английском языке, а также его вид по классификации, основанной на функциональном назначении протокола.
Постановка задачи.В этом разделе дается формулировка задачи, для решения которой создан протокол.
Описание протокола.Этот раздел содержит подробное словесное описание шагов протокола.
Формальное определение.Этот раздел содержит формальное определение протокола.
Авторы.В этом разделе содержатся сведения об авторах, разработчиках протокола.
Свойства.В этом разделе рассматриваются основные свойства, которыми обладает протокол.
Атаки.В этом разделе рассматриваются существующие основные уязвимости протокола, известные атаки на протокол.
Оценка сложности.Этот раздел посвящен вопросу оценки сложности протокола.
История. В этом разделе даются исторические сведения о протоколе.
Применение.Этот раздел содержит сведения об основных существующих и возможных способах применения протокола.
Исходники.Этот раздел содержит тексты (листинги) программ, реализующих протокол, на различных языках.
Ссылки.В этом разделе указываются использованные источники информации о протоколе.
В разделе, для которого соответствующих сведений еще не найдено, содержится текст "Информация отсутствует". Информационная карта протокола оформляется в соответствии с рисунком 1.
Рис. 1 Информационная карта
В рамках проекта необходимо решить следующие задачи:
1) Найти и изложить исторические сведения о криптографических протоколах.
2) Осветить современное состояние данного направления криптографии.
3) Рассмотреть существующие проблемы.
4) Изложить основные определения, свойства, уязвимости, атаки, примеры протоколов, а также их различные классификации.
5) Рассмотреть необходимые сведения из теории чисел, алгебры, теории сложности и т.д.
Данный проект открыт для сотрудничества со всеми заинтересованными лицами.
Веб-сайт состоит из 5 основных разделов: “Главная”, “Определения”, “Каталог”, “Библиография”, “Поддержать проект”.
На главной странице содержится общая информация о проекте, о его целях и задачах.
Раздел “Определения” предназначен для размещения сведений об основных определениях, свойствах и видах протоколов, об уязвимостях и атаках на протоколы, а также необходимых сведений из теории чисел, алгебры, теории сложности и т.д. На настоящее время в этом разделе содержатся следующие определения:
Протоколы подбрасывания монеты по телефону;
Протоколы привязки к биту;
Протоколы обмена секретами;
Протоколы игры в покер по телефону;
Протоколы соглашения.
Скоро будут опубликованы:
Протоколы аутентификации;
Протоколы идентификации;
Протоколы голосования;
Протоколы подписания контракта;
Протоколы распределения ключей;
Протоколы разделения секрета;
Протоколы цифровой подписи;
Протоколы электронных платежей;
Протоколы сертифицированной электронной почты;
Протоколы интерактивного доказательства;
Протоколы доказательства с нулевым разглашением;
Протоколы конфиденциального вычисления;
На данный момент в каталоге содержатся описания более 25 криптографических протоколов. А именно, открыты информационные карты следующих протоколов:
Задача о пещере Али-Бабы;
Бросок монеты в колодец;
Протокол подбрасывания монеты с помощью однонаправленной функции;
Экспоненциальный протокол подбрасывания монеты;
Протокол подбрасывания монеты на основе корней сравнения, являющихся квадратичными вычетами;
Протокол подбрасывания монеты на основе символа Якоби;
Протокол подбрасывания монеты с помощью криптографии с открытыми ключами;
Протокол подбрасывания монеты на основе квадратичного вычета по модулю числа Блюма для согласования строки, состоящей из m случайных битов;
Протокол привязки к биту на основе односторонней перестановки;
Протокол привязки к биту на основе псевдослучайного генератора;
Протокол привязки к биту на основе симметричной криптографии;
Доказательство изоморфизма графов;
Доказательство неизоморфизма графов;
Доказательство знания дискретного логарифма;
Доказательство знания представления числа y в базисе;
Доказательство знания представления множества чисел в соответствующих базисах;
Доказательство знания мультипликативной связи "депонированных" величин;
Доказательство принадлежности подгруппе;
Доказательство принадлежности числа множеству квадратичных вычетов;
Доказательство принадлежности числа множеству квадратичных невычетов;
Доказательство знания разложения на два простых множителя;
Доказательство идентификации Шнорра;
Доказательство знания гамильтонова цикла;
Доказательство знания 3-раскрашиваемости графа;
Задача о кубике Рубика;
Задача о вычислении определителя;
Протокол игры в мысленный покер Шамира, Ривеста и Адлемана;
Протокол игры в мысленный покер Голдвассер и Микали.
В разделе “Библиография” содержится список научных статей, монографий, учебников, учебных пособий и т.п., ссылки на которые даны в информационных картах криптографических протоколов и в разделе “Определения”. На данный момент в этом списке указаны 23 источника.
Данный проект является некоммерческим проектом и существует только благодаря энтузиазму автора, поэтому на сайте была открыта страница “Поддержать проект”.
Также на сайте размещаются полезные ссылки на интернет-источники соответствующей тематики. Например, даны ссылки на коллекцию криптографических протоколов AVISPA (The AVISPA Library) [13], библиотеку криптографических протоколов SPORE (Security Protocols Open Repository) [14].
Литература
Запечников С.В. Криптографические протоколы и их применение в финансовой и коммерческой деятельности: Учебное пособие для вузов. - М.: Горячая линия - Телеком, 2007. - 320 с.
Венбо Мао. Современная криптография. Теория и практика = Modern Cryptography: Theory and Practice. — М.: Вильямс, 2005. — 768 с.
Черемушкин А.В. Криптографические протоколы. Основные свойства и уязвимости. - М., 2007. - 254 с.
Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. - М.: Триумф, 2003. - 816 с.
Clark J., Jacob J. A Survey of Authentication Protocol Literature: Version 1.0. - Technical report, University of York, Department of Computer Science. - 1997.
Clark J., Jacob J. A Survey of Authentication Protocol Literature. -1996. - unpublished article.
https://crypton.io (на данный момент уже не существует)