:RU: Как в Cardano используется подпись изменяющимися ключами?

Перевод статьи https://cexplorer.io/article/how-is-key-evolving-signature-used-in-cardano

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

Понимание прямой секретности

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

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

Схема подписи обычно состоит из трех алгоритмов: алгоритма генерации ключа, алгоритма подписи и алгоритма проверки.

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

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

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

image

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

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

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

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

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

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

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

На рисунке ниже вы можете видеть время, разделенное на 5 периодов. В первом периоде подписант (отправитель) сгенерировал приватный КЛЮЧ 1 и публичный КЛЮЧ 1. Он поделился публичным КЛЮЧОМ 1 с верификатором (получателем). В периоде 2 был сгенерирован новый приватный КЛЮЧ 2, а затем приватный КЛЮЧ 1 был удален. Это повторилось в периоде 3, в котором был сгенерирован новый приватный КЛЮЧ 3 и удален приватный КЛЮЧ 2.

Обратите внимание, что верификатор во все периоды всегда использует один и тот же публичный КЛЮЧ 1 для проверки всех сообщений.

Период 3 активен, и для подписи сообщений можно использовать только приватный КЛЮЧ 3. Приватные ключи КЛЮЧ 1 и КЛЮЧ 2 были удалены, поэтому сообщения 1 и 2 невозможно подделать. Если злоумышленнику удастся получить приватный КЛЮЧ 3 (он единственный, который существует в настоящее время), он не сможет изменить прошлое, то есть сообщения 1 и 2. Он может менять сообщения только в периоде 3. Если злоумышленник не в состоянии генерировать ключи для будущих периодов, он также не в состоянии изменять будущие сообщения.

Как KES используется в Cardano

Cardano должен обеспечить неизменность блокчейна. KES используется для подписи блоков операторами стейк пулов.

Для безопасной работы пула необходимо сгенерировать несколько ключей. В этой статье мы сосредоточимся только на KES. Чтобы полностью разобраться в теме, необходимо знать весь процесс генерации ключей.

У оператора стейк пула должно быть три типа ключей: ключ оператора, пара ключей KES и пара ключей VRF.

Ключ оператора - это оффлайн пара ключей, которая идентифицирует стейк пул и включает счетчик сертификатов для новых сертификатов. Пара ключей KES - это онлайн пара ключей, которая аутентифицирует производителя блока и эволюционирует с течением времени. Пара ключей VRF - это еще одна онлайн пара ключей, которая подтверждает право на создание блока в данном слоте.

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

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

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

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

image

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

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

На изображении ниже вы можете увидеть создание нового блока. Нода-производитель блоков отправила операционный сертификат в блокчейн. Все ноды-верификаторы в сети имеют все публичные ключи, необходимые им для проверки блоков. Нода-производитель блока вставляет в блок доказательство VRF и другие данные для проверки. Затем она подписывает блок ключом KES. Ноды могут легко проверить блок, проверив доказательство VRF, данные и подпись KES. Обратите внимание, как блокчейн используется для распространения публичных ключей.

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

Ключ будет обновляться автоматически после каждого периода в 129 600 слотов (полтора дня, за это время создается примерно 6500 блоков), и он может обновляться до 62 раз, прежде чем его потребуется обновить. Другими словами, один период длится 129 600 слотов (секунд). Срок действия операционного сертификата составляет 90 дней, по истечении которых он становится недействительным. Это поощряет операторов пулов регулярно менять свои операционные ключи.

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

Преимущество использования KES в Cardano заключается в том, что он обеспечивает более надежные гарантии безопасности в случае раскрытия ключа. Если злоумышленник заполучит приватный ключ KES производителя блоков, он может подделать подписи только за текущий период, но не за какие-либо предыдущие или будущие периоды. Более того, они не могут переписывать историю или создавать форки, поскольку у них нет доступа к ключу VRF или ключу оператора. Таким образом, использование KES снижает риск потери контроля над стейк пулом или нанесения ущерба его репутации.

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

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

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

Десяткам крупнейших операторов или сотням более мелких пришлось бы нарушать правила протокола и намеренно сохранять ключи для этой цели. Это кажется очень маловероятным.

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

Вывод

Криптография KES и VRF позволяет Cardano обеспечивать неизменность блокчейна и случайный выбор лидера слота (ноды, которая получает право создавать блок в данном слоте) эффективным способом, т.е. без использования доказательства работы (PoW). PoW выполняет, по сути, ту же роль. В сети PoW нода, которая первой найдет решение сложной криптографической задачи, будет создавать блок (случайный выбор ноды). Создание блока требует затрат огромного количества энергии, что, по сути, предотвращает перезапись истории блокчейна. Переписывание истории возможно при условии, что снова будет затрачено то же количество энергии и цепочка противников станет самой длинной цепочкой.

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

// От переводчика: для получения дополнительных переведенных на русский язык статей о Cardano посетите русскоязычный раздел на форуме Cardano. Видеоролики о Cardano на русском можно найти на YouTube канале нашего замечательного амбасадора Тимура Сахабутдинова, а также на канале Чарльз Хоскинсон на русском. Хотите поговорить или задать вопрос о Cardano по-русски? Приглашаем вас в наше уютное сообщество в Telegram. Оставайтесь на связи, все только начинается!