:RU: Как одноразовые подписи укрепят безопасность Cardano

Перевод статьи https://cexplorer.io/article/how-one-shot-signatures-will-strengthen-cardano-s-security

Cardano защищает неизменность леджера, среди прочего, используя схему подписи с изменением ключа (KES). Схема KES обеспечивает так называемую прямую секретность. Если ключи подписи оператора стейк пула (SPO) скомпрометированы, их нельзя использовать для перезаписи истории леджера. Это связано с тем, что протокол Cardano включает механизм, при котором ключи, используемые для подписи блоков, меняются местами, а старые ключи удаляются. Одно из предположений безопасности заключается в том, что SPO удаляют старые ключи. Система одноразовых подписей (OSS) усилит безопасность Cardano, “заставив” ключи подписи самоуничтожаться после подписания каждого нового блока. Подписать блок повторно будет невозможно, так как для этого не будет ключа.

Прямая секретность и KES

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

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

Аналогичный принцип используется в Cardano для подписи блоков.

Если секретный ключ SPO скомпрометирован в какой-то момент времени, подписи, сгенерированные до этого момента, остаются действительными и не поддаются восстановлению.

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

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

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

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

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

Одноразовые подписи

В предыдущей статье мы объяснили основные принципы одноразовых подписей. Эта квантовая криптография обладает большим потенциалом для использования. Мы рассмотрим, как ее можно использовать для усиления безопасности Cardano.

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

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

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

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

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

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

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

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

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

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

Когда участник подписывает сообщение, он также указывает тег t. Ключ подписи позволяет подписывать любое сообщение, но требование заключается в том, что сообщения могут быть подписаны только в порядке возрастания t. То есть, как только сообщение подписано по тегу t0, становится невозможным подписать сообщение по предыдущему тегу (t1 < t0). Итак, каждое сообщение подписывается относительно тега t.

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

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

Подпись состоит из всей цепочки подписей от исходного публичного ключа до последнего публичного ключа.

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

Идея заключается в том, что единственный способ создать новую подпись - это добавить ее в цепочку подписей.

Следовательно, как только злоумышленник создаст подпись в теге t0, он зафиксирует все подписи, которые он создаст в теге t1 < t0. Если он попытается подписать другое сообщение в t1, это приведет к форку цепочки, нарушая свойство одноразовой секретности.

Как OSS предотвратила бы атаки на Cardano?

На данный момент неизвестно никаких подробностей о том, как могла бы быть реализована система OSS. Тем не менее, можно предположить, как такая система могла бы работать.

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

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

Давайте попробуем объяснить это на упрощенном примере.

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

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

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

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

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

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

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

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

Каждая волшебная палочка (ключ) уникальна и может создать стикер (подпись) только для определенного блока. Таким образом, злоумышленник не может просто использовать другую палочку для создания стикера для блока, у которого он уже есть.

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

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

Вывод

Как только система OSS будет реализована в Cardano, гарантии безопасности будут значительно выше. Совершить атаки дальнего действия будет практически немыслимо. Злоумышленник не сможет получить ключи, которые были самоуничтожены сразу после подписания блоков.

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