Криптографический протокол
Криптографический протокол (англ. Cryptographic protocol) — это абстрактный или конкретный протокол, включающий набор криптографических алгоритмов, часто являющихся последовательностью криптографических примитивов. В основе протокола лежит набор правил, регламентирующих использование криптографических преобразований и алгоритмов в информационных процессах для обмена сообщениями между двумя и более участниками, а также описание используемых структур .
В протоколе участниками (субъектом, стороной) могут быть приложения, люди, их группы или, например, организации. Другими словами — всё, по каким-либо причинам способное иметь активную или пассивную роль в работе протокола. Так, в частности, большинство протоколов разрабатывается с учётом наличия пассивного слушателя, способного перехватывать сообщения .
Появление самых простых протоколов датируется концом 1970-х, началом 1980-х годов[1]. Вклад в их появление внесли такие специалисты, как Рональд Ривест, Ади Шамир[2], Роджер Нидхем, Майкл Шрёдер[3] и многие другие. Брюс Шнайер приводит описание известных протоколов в своей книге «Прикладная Криптография»[4].
Функции
правитьКриптографический протокол имеет следующие функции[5]:
- Формирование ключей
- Обмен ключами
- Аутентификация сторон
- Доказательство целостности и происхождения данных (ЭЦП)
- Разделение ключей
- Безопасные распределённые вычисления
- Обеспечение конфиденциальности данных
- Обеспечение невозможности отказа
- Обеспечение целостности данных
- Обеспечение целостности соединения
- Разграничение доступа
Состав
правитьПротокол делится на проходы (англ. pass) или циклы (англ. round), являющиеся интервалом времени активности только одного участника. В протоколах, рассчитанных на количество участников большее двух, при необходимости их синхронизации циклом называют период времени между двумя точками синхронизации[6].
Проход, в свою очередь, состоит из шагов (англ. step, action) — конкретных законченных действий, выполняемых участником[6].
Например:
- генерация случайного значения
- вычисление значений функции
- проверка сертификатов, ключей, подписей, и др.
- приём и отправка сообщений
Реализация протокола или даже теоретическое её описание для конкретных участников, каждый из которых имеет одну или несколько ролей, называется сеансом (англ. session). В другом сеансе протокола участники могут поменяться ролями и выполнять уже совсем другие функции[6].
Таким образом, протокол описывает правила поведения каждой абстрактного участника в протоколе. А сеанс описывает уже состоявшейся в прошлом конкретную реализацию протокола[6].
Условные обозначения
правитьПри записи криптографических протоколов для обозначения участников принято использовать либо термины «отправитель», «получатель», пр., либо экземплификанты. Соответствие между ними следующее[6]:
- Алиса, Боб (от англ. A, B) — отправитель сообщения и его получатель.
- Карл, Клара, Чарли (от англ. C) — равноправная Алисе и Бобу третья сторона в случае её наличия.
- Ева (от англ. eavesdropper) — пассивный криптоаналитик.
- Меллори (от англ. malicious) — активный криптоаналитик.
- Трент (от англ. trust) — доверенная сторона. Например, — удостоверяющий центр в протоколах проверки подписей.
Для записи примитивов принято использовать следующие обозначения[6]:
- (от англ. message) — сообщение в исходном виде, открытая информация в том виде, в котором её способен прочесть любой участник протокола. То есть, под может пониматься и исходный текст в прямом понимании или, например, массив бит, звук и так далее.
- (от англ. key) — ключ. Без дополнительных уточнений обычно обозначает секретный сеансовый ключ.
- — общий между Алисой и Трентом секретный ключ (в случае симметричных криптосистем).
- — открытый ключ Алисы (в случае асимметричных криптосистем).
- (от англ. lifetime) — время жизни примитивов. К примеру, ключа или сертификата.
- (от англ. encrypt) — данные, зашифрованные на ключе .
- , — данные, зашифрованные на ключах Алисы и Боба соответственно.
- (от англ. sign) — данные и соответствующая цифровая подпись на открытом ключе .
- , (от англ. timestamp) — метки времени от соответствующих участников. Часто используется в паре с
- , (от англ. random) — случайные числа, выбранные Алисой и Бобом соответственно.
Примеры использования обозначений[6]:
- или просто — сообщение , зашифрованное ключом Боба .
- — случайное число , сгенерированное Алисой и ей же подписанное. То есть в сообщении будет и случайное число (открытым текстом), и электронная подпись этого числа.
- — идентификатор и ключ Алисы, метка времени и срок жизни данной записи, всё вместе подписанное открытым ключом доверенного центра (Трента). То есть фактически сертификат ключа Алисы.
Классификация
правитьГлобально протоколы можно разделить на две группы: примитивные и прикладные[7].
Примитивный криптографический протокол (англ. primitive cryptographic protocol) сам по себе не имеет практической пользы, однако может быть частью прикладного протокола. Решает одну абстрактную задачу[7].
Прикладной криптографический протокол (англ. application cryptographic protocol) имеет практическое применение, используется для решения практических задач безопасности. Данные протоколы обычно реализуют сразу несколько криптографических функций. А порой и вовсе являются целым семейством протоколов, способных менять параметры системы по необходимости. Например, система электронных платежей[7].
Однако существуют и более точные классификации[5]:
- Классификация по числу участников:
- двусторонний
- трёхсторонний
- многосторонний
- Классификация по числу передаваемых сообщений:
- интерактивный (есть взаимный обмен сообщениями)
- неинтерактивный (однократная передача)
- Классификация по целевому назначению протокола:
- обеспечение целостности сообщений с аутентификацией источника / без аутентификации источника
- индивидуальная / групповая
- с восстановлением / без восстановления сообщения
- вслепую
- с доказуемостью подделки
- односторонняя / двусторонняя (взаимная) аутентификация / идентификация
- обычная конфиденциальная передача
- конфиденциальная широковещательная / циркулярная передача сообщений
- честный обмен секретами
- забывающая передача
- привязка к биту (строке)
- предварительное
- передача ключа (обмена ключами)
- совместная выработка ключа (открытое распределение ключей)
- парное / групповое
- разделение секрета
- Классификация по типу используемых криптографических систем:
- на основе симметричных криптосистем
- на основе асимметричных криптосистем
- смешанные
- Классификация по способу функционирования:
- интерактивный / неинтерактивный
- однопроходный / двух- / трёх- и т. д. проходный
- протокол с арбитром (протокол с посредником)
- двусторонний / с доверенной третьей стороной (с центром доверия)
Атаки
правитьБывают следующих направленностей[8]:
- против криптографических алгоритмов
- против криптографических методов, применяемых для реализации протоколов
- против самих протоколов (активные или пассивные)
Виды атак на криптографические протоколы
править- Человек посередине (англ. man in the middle) — вид атак, в которых злоумышленник встраивается в канал общения между участниками, внося изменения в передаваемые сообщения или перенаправляя их. Для неё уязвимы протоколы, в которых отсутствует взаимная аутентификация сторон[6].
- Повтором сообщения (англ. replay attack) — повторное использование ранее переданного сообщения или какой-либо его части в текущем сеансе протокола. Например, сначала записав сообщение, содержащее ключ в зашифрованном виде, можно потратить произвольное количество времени на его расшифровку, а далее заставить участников использовать его повторно[5].
- Подмены типа (англ. type flaw attack) — похожа на атаку повтором с той лишь разницей, что сообщение передаётся на другом раунде протокола, тем самым изменяется его значение в протоколе[6].
- Атака с параллельными сеансами (англ. parallel-session attack) — атака, в ходе которой злоумышленник инициирует несколько параллельных сеансов с участниками и предаёт сообщения из одного сеанса в другой[6].
Устаревший протокол
правитьУстаревший протокол для криптовалюты - это протокол, который был использован в прошлом для функционирования криптовалютной сети, но в настоящее время не рекомендуется или не поддерживается разработчиками из-за различных причин.
Причины, по которым протокол может стать устаревшим, могут включать в себя:
- Уязвимости безопасности: Обнаружение уязвимостей в протоколе, которые могут быть использованы злоумышленниками для атаки на сеть.
- Неэффективность: Протокол может стать неэффективным или медленным в обработке транзакций при увеличении нагрузки на сеть.
- Отсутствие поддержки или развития: Если разработчики перестают поддерживать или развивать протокол, это может привести к его устареванию.
Когда протокол становится устаревшим, разработчики могут предпринимать различные действия, такие как выпуск обновлений для устранения уязвимостей или переход на новый протокол с улучшенными функциями и безопасностью. В некоторых случаях сообщество криптовалюты может принять решение о хардфорке (жёстком разделении сети) для обновления протокола и реализации необходимых изменений.
Обновления протокола
правитьЧтобы возобновить устаревший протокол криптовалюты, часто требуется обратиться к майнингу для создания дополнительного обновлённого протокола. Манеры играют ключевую роль в обеспечении безопасности и надёжности сети криптовалюты, поэтому их поддержка и участие в процессе обновления протокола крайне важны.
Для этого могут быть предприняты следующие шаги:
- Согласование изменений: Разработчики протокола могут предложить обновленную версию протокола, включающую исправление уязвимостей или улучшение функциональности. Эти изменения должны быть обсуждены и согласованы с сообществом и майнерами.
- Майнинг обновлений: Майнеры могут выбрать, принять или отклонить предложенные изменения протокола путем голосования или других механизмов принятия решений, таких как форки или апгрейды.
- Развертывание обновлений: После согласования изменений и их принятия майнерами, разработчики могут развернуть обновленную версию протокола, которая будет принята всеми участниками сети.
Процесс обновления протокола может быть сложным и требует согласованных усилий со стороны разработчиков, майнеров и других участников сети. Однако это необходимо для обеспечения безопасности и эффективности функционирования криптовалютной сети.
Свойства безопасности
правитьСвойств, характеризующих безопасность криптографического протокола, достаточно много. Обычно свойства протоколов, характеризующие их стойкость к различным атакам, формулируют как цели (англ. goals) или требования к протоколам. Трактовка этих целей со временем меняется и уточняется. Наиболее полное и современное толкование этих целей даётся в документах международной организации IETF. Под свойствами (целями, требованиями) безопасности в документах IETF в настоящее время понимаются следующие 20 целей, сгруппированные в 10 групп[9]:
- Аутентификация (нешироковещательная):
- G1 Аутентификация субъекта
- (англ. Peer Entity Authentication) Проверка подлинности участников протокола наличия, их полномочий, а также того, что они действительно принимают участие в выполнении текущего сеанса протокола.
- G2 Аутентификация сообщения
- (англ. Message authentication) Проверка подлинности источника данных. Поскольку без гарантии того, что сообщение не было модифицировано, данное свойство становится бесполезным, возникает также требование целостности сообщения.
- G3 Защита от повтора
- (англ. Replay Protection) Гарантирование того, что сообщение не является повторно отправленным. В зависимости от контекста, это может иметь либо смысл того, что сообщение было сгенерировано в данном сеансе, либо что сообщение было сгенерировано в течение известного промежутка времени. либо что сообщение не было принято ранее.
- G1 Аутентификация субъекта
- Аутентификация при рассылке по многим адресам или при подключении к службе подписки/уведомления:
- G4 Неявная (скрытая) аутентификация получателя
- (англ. Implicit Destination Authentication) Протокол должен гарантировать, что к отправленной информации, многоадресному сообщению или групповому общению будут иметь доступ только те участники, которым разрешил отправитель.
- G5 Аутентификация источника
- (англ. Source Authentication) Легитимные члены группы могут проверить подлинность источника и содержимого информации или группового сообщения. Сюда относятся случаи, когда члены группы не доверяют друг другу.
- G4 Неявная (скрытая) аутентификация получателя
- G6 Авторизация (доверенной третьей стороной)
- (англ. Authorization (by a Trusted Third Party)) Доверенная третья сторона представляет одного участника другому участнику, давая уверенность в том, что они могут доверять друг другу.
- Свойства совместной генерации ключа:
- G7 Аутентификация ключа
- (англ. Key Authentication) Один из участников получает подтверждение того, что никакой другой участник, кроме заранее определённого второго участника (и, возможно, других доверенных участников), не может получить доступа ни к одному секретному ключу.
- G8 Подтверждение правильности ключа
- (англ. Key Confirmation, Key Proof of Possession) Один из участников получает подтверждение того, что второй участник (возможно, неопределённый) действительно обладает конкретным секретным ключом (либо имеет доступ ко всем ключевым материалам, необходимым для его вычисления).
- G9 Защищённость от чтения назад
- (англ. Perfect Forward Secrecy) Компрометация долговременных ключей не приводит к компрометации старых сеансовых ключей.
- G10 Формирование новых ключей
- (англ. Fresh Key Derivation) Использование динамического управления ключами для получения свежих сеансовых ключей.
- G11 Защищённая возможность договориться о параметрах безопасности
- (англ. Secure capabilities negotiation) Обнаружение криптографических возможностей и предпочтений участников, а также согласовывание параметров безопасности (как, например, стойкость ключей и шифры).
- G7 Аутентификация ключа
- G12 Конфиденциальность
- (англ. Confidentiality, Secrecy) Гарантия, что сообщение или его часть не станут доступными или раскрытыми для неавторизованных участников и злоумышленника.
- Анонимность:
- G13 Защита личности от неучастников (несвязываемость)
- (англ. Identity Protection against Eavesdroppers) Злоумышленник, не являющийся правомерным участником протокола, не должен иметь возможности связать сообщение, которым обменивается одна сторона, с реальной личностью этой стороны.
- G14 Защита личности от участников
- (англ. Identity Protection against Peer) Правомерный участник протокола не должен иметь возможности связать сообщение, переданное одной стороной, с реальной личностью этой стороны.
- G13 Защита личности от неучастников (несвязываемость)
- G15 (Ограниченная) защищённость от атак типа «отказ в обслуживании»
- (англ. (Limited) Denial-of-Service Resistance) Устойчивость к DoS. Трудно проверить, так как протокол может быть подвержен DoS-атакам по разным причинам, наиболее распространённой из которых является потребление слишком большого количества ресурсов (памяти, вычислительной мощности), прежде чем участник аутентифицирует себя. Но существует множество других причин: среди прочего, протоколы могут быть уязвимы для атаки DoS на распределение памяти, вычислительную мощность.
- G16 Инвариантность отправителя
- (англ. Sender Invariance) Сторона получает уверенность в том, что источник сообщения остался тем же, что и тот, кто начал сообщение.
- Невозможность отказа от ранее совершённых действий:
- G17 Подотчётность
- (англ. Accountability) Гарантия, что действия участника могут быть однозначно отслежены.
- G18 Доказательство источника
- (англ. Proof of Origin) Неоспоримое доказательство отправки сообщения.
- G19 Доказательство получателя
- (англ. Proof of Delivery) Неоспоримое доказательство получения сообщения.
- G17 Подотчётность
- G20 Безопасное временное свойство
- (англ. Safety Temporal Property) Возможность использовать оператор когда-то в прошлом для описания отношений между раундами протокола. Например, если пользователь хочет слушать музыку на сервисе, когда-то в прошлом он должен был оплатить подписку.
Примечания
править- ↑ Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. Handbook of Applied Cryptography. — CRC Press, 1996. — С. 1—2. — 816 с. — ISBN 0-8493-8523-7. Архивировано 1 декабря 2021 года.
- ↑ Ronald L. Rivest, Adi Shamir. How to Expose an Eavesdropper (англ.) // Communications of the ACM. — 1984. — April (no. 27). — P. 393—394.
- ↑ Roger M. Needham, Michael D. Schroeder. Using encryption for authentication in large networks of computers (en (англ.)) // Communications of the ACM. — 1978. — Декабрь. — С. 993—999.
- ↑ Bruce Schneier. Applied Cryptography. — John Wiley & Sons, 1996. — 784 с. — ISBN 978-1-119-09672-6. Архивировано 18 ноября 2021 года.
- ↑ 1 2 3 Черёмушкин А. В. Криптографические протоколы: основные свойства и уязвимости // Прикладная дискретная математика : Приложение. — 2009. — Ноябрь (№ 2).
- ↑ 1 2 3 4 5 6 7 8 9 10 Владимиров С.М. и др. Учебное пособие по защите информации кафедры радиотехники и систем управления МФТИ (6 сентября 2013). Дата обращения: 5 октября 2021. Архивировано 5 октября 2021 года.
- ↑ 1 2 3 Ященко В. В., Варновский Н. П., Нестеренко Ю. В. , Кабатянский Г. А., Девянин П. Н., Проскурин В. Г., Черемушкин А. В., Гырдымов П. А., Зубов А. Ю., Зязин А. В., Овчинников В. Н., Анохин М. И. Введение в криптографию / Под общ. ред. В. В. Ященко. — 2012. — С. 45. — 348 с. — ISBN 978-5-4439-0026-1. Архивировано 17 ноября 2021 года.
- ↑ Шаханова М. В., Варлатая С. К. Криптографические методы и средства обеспечения информационной безопасности. Учебно-методический комплекс. / Рецензенты: Корнюшин П. Н., Глушков С. В.. — Дальневосточный государственный технический университет: ООО "Проспект", 2015. Архивировано 17 ноября 2021 года.
- ↑ Properties (Goals) (англ.). Internet Engineering Task Force. Дата обращения: 4 ноября 2021. Архивировано из оригинала 23 марта 2019 года.