Криптографический протокол () — это абстрактный или конкретный протокол, включающий набор криптографических алгоритмов, часто являющихся последовательностью криптографических примитивов. В основе протокола лежит набор правил, регламентирующих использование криптографических преобразований и алгоритмов в информационных процессах для обмена сообщениями между двумя и более участниками, а также описание используемых структур.
В протоколе участниками (субъектом, стороной) могут быть приложения, люди, их группы или, например, организации. Другими словами — всё, по каким-либо причинам способное иметь активную или пассивную роль в работе протокола. Так, в частности, большинство протоколов разрабатывается с учётом наличия пассивного слушателя, способного перехватывать сообщения.
Появление самых простых протоколов датируется концом 1970-х, началом 1980-х годов. Вклад в их появление внесли такие специалисты, как Рональд Ривест, Ади Шамир, Роджер Нидхем, Майкл Шрёдер и многие другие. Брюс Шнайер приводит описание известных протоколов в своей книге «Прикладная Криптография».
Функции Криптографический протокол имеет следующие функции:
Формирование ключей Обмен ключами Аутентификация сторон Доказательство целостности и происхождения данных (ЭЦП) Разделение ключей Безопасные распределённые вычисления Обеспечение конфиденциальности данных Обеспечение невозможности отказа Обеспечение целостности данных Обеспечение целостности соединения Разграничение доступа
Состав Протокол делится на проходы () или циклы (), являющиеся интервалом времени активности только одного участника. В протоколах, рассчитанных на количество участников большее двух, при необходимости их синхронизации циклом называют период времени между двумя точками синхронизации.
Проход, в свою очередь, состоит из шагов () — конкретных законченных действий, выполняемых участником.
Например:
генерация случайного значения вычисление значений функции проверка сертификатов, ключей, подписей, и др. приём и отправка сообщений
Реализация протокола или даже теоретическое её описание для конкретных участников, каждый из которых имеет одну или несколько ролей, называется сеансом (). В другом сеансе протокола участники могут поменяться ролями и выполнять уже совсем другие функции.
Таким образом, протокол описывает правила поведения каждой абстрактного участника в протоколе. А сеанс описывает уже состоявшейся в прошлом конкретную реализацию протокола.
Условные обозначения При записи криптографических протоколов для обозначения участников принято использовать либо термины «отправитель», «получатель», пр., либо экземплификанты. Соответствие между ними следующее:
Алиса, Боб (от ) — отправитель сообщения и его получатель. Карл, Клара, Чарли (от ) — равноправная Алисе и Бобу третья сторона в случае её наличия. Ева (от ) — пассивный криптоаналитик. Меллори (от ) — активный криптоаналитик. Трент (от ) — доверенная сторона. Например, — удостоверяющий центр в протоколах проверки подписей.
Для записи примитивов принято использовать следующие обозначения:
(от ) — сообщение в исходном виде, открытая информация в том виде, в котором её способен прочесть любой участник протокола. То есть, под может пониматься и исходный текст в прямом понимании или, например, массив бит, звук и так далее. (от ) — ключ. Без дополнительных уточнений обычно обозначает секретный сеансовый ключ. — общий между Алисой и Трентом секретный ключ (в случае симметричных криптосистем). — открытый ключ Алисы (в случае асимметричных криптосистем). (от ) — время жизни примитивов. К примеру, ключа или сертификата. (от ) — данные, зашифрованные на ключе . , — данные, зашифрованные на ключах Алисы и Боба соответственно. (от ) — данные и соответствующая цифровая подпись на открытом ключе . , (от ) — метки времени от соответствующих участников. Часто используется в паре с , (от ) — случайные числа, выбранные Алисой и Бобом соответственно.
Примеры использования обозначений:
или просто — сообщение , зашифрованное ключом Боба . — случайное число , сгенерированное Алисой и ей же подписанное. То есть в сообщении будет и случайное число (открытым текстом), и электронная подпись этого числа. — идентификатор и ключ Алисы, метка времени и срок жизни данной записи, всё вместе подписанное открытым ключом доверенного центра (Трента). То есть фактически сертификат ключа Алисы.
Классификация Глобально протоколы можно разделить на две группы: примитивные и прикладные.
Примитивный криптографический протокол () сам по себе не имеет практической пользы, однако может быть частью прикладного протокола. Решает одну абстрактную задачу.
Прикладной криптографический протокол () имеет практическое применение, используется для решения практических задач безопасности. Данные протоколы обычно реализуют сразу несколько криптографических функций. А порой и вовсе являются целым семейством протоколов, способных менять параметры системы по необходимости. Например, система электронных платежей.
Однако существуют и более точные классификации: Классификация по числу участников: двусторонний трёхсторонний многосторонний Классификация по числу передаваемых сообщений: интерактивный (есть взаимный обмен сообщениями) неинтерактивный (однократная передача) Классификация по целевому назначению протокола: обеспечение целостности сообщений с аутентификацией источника / без аутентификации источника цифровая подпись индивидуальная / групповая с восстановлением / без восстановления сообщения вслепую с доказуемостью подделки односторонняя / двусторонняя (взаимная) аутентификация / идентификация обмен сообщениями обычная конфиденциальная передача конфиденциальная широковещательная / циркулярная передача сообщений честный обмен секретами забывающая передача привязка к биту (строке) распределение ключей предварительное передача ключа (обмена ключами) совместная выработка ключа (открытое распределение ключей) парное / групповое разделение секрета Классификация по типу используемых криптографических систем: на основе симметричных криптосистем на основе асимметричных криптосистем смешанные Классификация по способу функционирования: интерактивный / неинтерактивный однопроходный / двух- / трёх- и т. д. проходный протокол с арбитром (протокол с посредником) двусторонний / с доверенной третьей стороной (с центром доверия)
Атаки Бывают следующих направленностей: против криптографических алгоритмов против криптографических методов, применяемых для реализации протоколов против самих протоколов (активные или пассивные)
Виды атак на криптографические протоколы Человек посередине () — вид атак, в которых злоумышленник встраивается в канал общения между участниками, внося изменения в передаваемые сообщения или перенаправляя их. Для неё уязвимы протоколы, в которых отсутствует взаимная аутентификация сторон. Повтором сообщения () — повторное использование ранее переданного сообщения или какой-либо его части в текущем сеансе протокола. Например, сначала записав сообщение, содержащее ключ в зашифрованном виде, можно потратить произвольное количество времени на его расшифровку, а далее заставить участников использовать его повторно. Подмены типа () — похожа на атаку повтором с той лишь разницей, что сообщение передаётся на другом раунде протокола, тем самым изменяется его значение в протоколе. Атака с параллельными сеансами () — атака, в ходе которой злоумышленник инициирует несколько параллельных сеансов с участниками и предаёт сообщения из одного сеанса в другой.
Устаревший протокол Устаревший протокол для криптовалюты - это протокол, который был использован в прошлом для функционирования криптовалютной сети, но в настоящее время не рекомендуется или не поддерживается разработчиками из-за различных причин.
Причины, по которым протокол может стать устаревшим, могут включать в себя:
Уязвимости безопасности: Обнаружение уязвимостей в протоколе, которые могут быть использованы злоумышленниками для атаки на сеть. Неэффективность: Протокол может стать неэффективным или медленным в обработке транзакций при увеличении нагрузки на сеть. Отсутствие поддержки или развития: Если разработчики перестают поддерживать или развивать протокол, это может привести к его устареванию.
Когда протокол становится устаревшим, разработчики могут предпринимать различные действия, такие как выпуск обновлений для устранения уязвимостей или переход на новый протокол с улучшенными функциями и безопасностью. В некоторых случаях сообщество криптовалюты может принять решение о хардфорке (жёстком разделении сети) для обновления протокола и реализации необходимых изменений.
Обновления протокола Чтобы возобновить устаревший протокол криптовалюты, часто требуется обратиться к майнингу для создания дополнительного обновлённого протокола. Майнеры играют ключевую роль в обеспечении безопасности и надёжности сети криптовалюты, поэтому их поддержка и участие в процессе обновления протокола крайне важны.
Для этого могут быть предприняты следующие шаги:
Согласование изменений: Разработчики протокола могут предложить обновленную версию протокола, включающую исправление уязвимостей или улучшение функциональности. Эти изменения должны быть обсуждены и согласованы с сообществом и майнерами. Майнинг обновлений: Майнеры могут выбрать, принять или отклонить предложенные изменения протокола путем голосования или других механизмов принятия решений, таких как форки или апгрейды. Развертывание обновлений: После согласования изменений и их принятия майнерами, разработчики могут развернуть обновленную версию протокола, которая будет принята всеми участниками сети.
Процесс обновления протокола может быть сложным и требует согласованных усилий со стороны разработчиков, майнеров и других участников сети. Однако это необходимо для обеспечения безопасности и эффективности функционирования криптовалютной сети.
Свойства безопасности Свойств, характеризующих безопасность криптографического протокола, достаточно много. Обычно свойства протоколов, характеризующие их стойкость к различным атакам, формулируют как цели () или требования к протоколам. Трактовка этих целей со временем меняется и уточняется. Наиболее полное и современное толкование этих целей даётся в документах международной организации IETF. Под свойствами (целями, требованиями) безопасности в документах IETF в настоящее время понимаются следующие 20 целей, сгруппированные в 10 групп: Аутентификация (нешироковещательная): G1 Аутентификация субъекта () Проверка подлинности участников протокола наличия, их полномочий, а также того, что они действительно принимают участие в выполнении текущего сеанса протокола. G2 Аутентификация сообщения () Проверка подлинности источника данных. Поскольку без гарантии того, что сообщение не было модифицировано, данное свойство становится бесполезным, возникает также требование целостности сообщения. G3 Защита от повтора () Гарантирование того, что сообщение не является повторно отправленным. В зависимости от контекста, это может иметь либо смысл того, что сообщение было сгенерировано в данном сеансе, либо что сообщение было сгенерировано в течение известного промежутка времени. либо что сообщение не было принято ранее. Аутентификация при рассылке по многим адресам или при подключении к службе подписки/уведомления: G4 Неявная (скрытая) аутентификация получателя () Протокол должен гарантировать, что к отправленной информации, многоадресному сообщению или групповому общению будут иметь доступ только те участники, которым разрешил отправитель. G5 Аутентификация источника () Легитимные члены группы могут проверить подлинность источника и содержимого информации или группового сообщения. Сюда относятся случаи, когда члены группы не доверяют друг другу. G6 Авторизация (доверенной третьей стороной) () Доверенная третья сторона представляет одного участника другому участнику, давая уверенность в том, что они могут доверять друг другу. Свойства совместной генерации ключа: