Эпизод 02 - Введение в цифровые подписи

04/01/2019

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

Стенограмма эпизода:

Джастин: Добро пожаловать во второй эпизод Breaking Monero. Breaking Monero — это серия эпизодов, в рамках которой мы пытаемся подробно и понятным языком разъяснить ограничения, связанные с анонимностью и безопасностью Monero. Сегодня мы поговорим о кольцевых подписях и об их истории. Важно понять, что такое кольцевые подписи перед тем, как перейти ко всему остальному, к тому, о чём будет говориться в этих эпизодах, поскольку всё остальное строится на базе кольцевых подписей. Но перед тем как начать, у нас здесь присутствует Саранг, не хотел бы ты кратко представиться? Тебя уже видели в прошлом эпизоде, но тем не менее не мог бы ты также изложить некоторые основные положения, идею правдоподобного отрицания, а также идею эвристического подхода?

Саранг: Да, конечно. Как ты уже сказал, я выступаю под именем Саранга Ноезера и являюсь одним из исследователей, кандидатов наук, работающих на проект Monero. Я занимаюсь исследованиями и разработкой Исследовательской лаборатории Monero. Мой коллега, Шурэ Ноезер, не смог сегодня присутствовать здесь, но он участвовал в прошлом эпизоде, вступительном эпизоде серии, где мы говорили о том, чем мы занимаемся и почему мы этим занимаемся. Итак, кольцевые подписи представляют собой довольно популярную тему, и как мы будем говорить дальше, я бы сказал, что они являются больным местом и камнем преткновения, в результате столкновения с которым у людей, пользующихся Monero, возникают вопросы. Кроме того, кольцевые подписи — это та вещь, к которой нам приходится возвращаться снова и снова, так как мы хотим усилить Monero. В этом эпизоде мы лишь кратко рассмотрим структуру, принцип их работы. Мы не будем вдаваться в математические подробности, для этого определённо существуют вполне пригодные источники на случай, если это вам интересно. Но мы немного поговорим о структуре и выйдем на вопрос, почему именно структура кольцевых подписей может стать причиной возникновения некоторых проблем. Для начала нужно обозначить, что небеса не рухнули и кольцевые подписи никто не взломал. Мы будем говорить о том, что они работают, как и должны работать, но они могут стать причиной того, что я бы назвал «неудобствами», над разрешением которых мы итеративно работаем, стараясь улучшить ситуацию. Ты использовал словосочетание «правдоподобное отрицание». Я тоже иногда использую его, когда речь заходит о невозможности определения отправителя Monero, и мне бы хотелось, чтобы это словосочетание использовалось как можно чаще. Как мы уже говорили ранее, люди любят разбрасываться словами вроде «анонимность» или «взаимозаменяемость», не осознавая их формального смысла. Есть некоторые интуитивные вещи, когда мы рассматриваем значения слов «анонимность» и «взаимозаменяемость» с точки зрения цифровых активов, но это случай, когда мы напрочь закрепляем эти понятия. Я предпочитаю разбивать гарантии приватности и анонимности Monero на три части. Невозможность определения отправителя или, если вам угодно, его анонимность, невозможность определения получателя или его анонимность и анонимность суммы и/или метаданных. В целом анонимность получателя и анонимность суммы или метаданных суммы, это очень и очень хорошие вещи. Что происходит, когда вы отправляете средства кому-то, используя Monero, и они не связываются напрямую с адресом вашего кошелька — у меня один или несколько кошельков Monero, и у каждого из них есть свой адрес. Я могу получить средства, направленные на них, и я могу использовать средства, полученные на них, чтобы потом отправить их другим людям. Итак, у Джастина есть адрес его кошелька, он даёт его мне, а затем я отправляю средства посредством моего клиента Monero. Но происходит следующее, сам адрес кошелька, если я отправляю средства Джастину, на самом деле никогда не попадает в блокчейн. Это было бы слишком громоздко. Вместо этого, мною генерируется одноразовый выход, который иногда называется адресом уведомления (note address), и именно этот одноразовый адрес появляется в блокчейне. Поэтому адреса кошельков никогда не появляются там, и это важно запомнить. Эти адреса отличаются, и это небольшое различие иногда легко упустить, но сама идея состоит в том, что когда вы отправляете средства кому-то, получателю, адрес кошелька остаётся скрытым. Я просто «заворачиваю» адрес получателя в одноразовый адрес таким образом, что его невозможно восстановить. Таким образом, если кто-то посмотрит на выход, который был сгенерирован мной, который был направлен Джастину, то этот кто-то никогда не сможет сказать, что он был направлен именно Джастину. Знание Джастином приватного ключа, соответствующего адресу его кошелька, позволяет ему впоследствии потратить полученные средства, но напрямую он не сможет определить ничего в отношении такого адреса. Подобным образом, возможно, это нами уже упоминалось в прошлом эпизоде, такие вещи, как сумма транзакции Monero, раньше были известны по ряду причин, но теперь они связываются с тем, что называют криптографическим обязательством, и это привело к появлению того, что мы называем «доказательством диапазона» и протокола Bulletproofs. И всё это очень широко обсуждалось ранее. Но и это тоже очень и очень хорошо. Сумма вашей транзакции анонимна, получатель вашей транзакции анонимен, но мы часто любим говорить о невозможности определения отправителя, и вот именно тут мы вспоминаем о кольцевых подписях. На самом деле, если я отправляю средства Джастину, я беру средства, которые были ранее мною получены с так называемым одноразовым выходом, который был отправлен мне, и я не хочу отправлять обязательно именно этот выход ему. В другой альтернативной версии Monero, возможно, вы бы могли сделать так: я бы взял одноразовый выходящий адрес и в некотором смысле переписал бы его на Джастина. На деле, я генерирую новый одноразовый выходящий адрес, и я подписываю его, используя тот, что был получен мною. Если всё будет сделано надлежащим образом, это должно будет убедить всех в том, что деньги действительно существовали и до этого, что они были у меня, и что не происходит ничего необычного. Но в идеале, в случае с Monero, нам бы хотелось, чтобы всё было ещё более скрыто по принципу «правдоподобного отрицания». И вот что я делаю: я беру одноразовый выходящий адрес, который был направлен мне и который я хотел бы отправить Джастину, но также я беру и несколько случайных, а слово случайный может означать какой угодно, но я беру другие одноразовые адреса, которые не контролирую. В отличие от таких вещей, как CoinJoin, или других миксеров, для этого мне не приходится взаимодействовать с кем-либо, никто не знает, что я делаю, и это важно. Я просто беру другие случайные одноразовые адреса и использую их, включая в структуру, называемую кольцом. То есть я создаю кольцевую подпись, где мне известен приватный ключ, соответствующий одному из публичных ключей этих выходов. На деле, это означает, что я использую приватный адрес кошелька, которым владею, поскольку средства изначально были адресованы на мой кошелёк, я использую этот приватный ключ, чтобы сгенерировать приватный ключ для одного из этих выходов. Опять же, это определяет разницу между адресами кошельков и адресами выходов, что иногда приводит к путанице. Кольцевая подпись просто говорит о том, что я контролирую один из них, а также о некоторых вещах, касающихся сумы, и что мой баланс верен. И выходит так, что независимо от того, является ли Джастин верификатором кольцевой подписи или же это кто-то, синхронизирующий блокчейн в целях обеспечения гарантии, что всё прошло корректно, всё, что им нужно знать, так это то, что подпись действительна и что я реально владею средствами, и что я действительно отправляю их Джастину. Для этого обычно и проводится верификация кольцевой подписи, и во время такой верификации выясняются всего две вещи. Во-первых, что один из выходов является одноразовым выходящим адресом, который принадлежал мне, и, что важно, при этом не раскрывается, какой именно. В таких случаях говорят, что один из выходов является «действительным отправителем». И действительный отправитель в этом случае не означает адрес кошелька, он означает одноразовый выходящий адрес, который был сгенерирован на лету, когда средства были изначально отправлены мне. А также это демонстрирует, что средства не тратятся повторно. Самым продуманным свойством кольцевой подписи является то, что называется «связываемостью». Это означает, что если бы я попытался завладеть другим кольцом и повторно потратить средства, то тот определённый одноразовый адрес, тот публичный ключ выхода может появиться в ряде других колец, в идеале он и появится в группе других колец, когда люди случайно выберут его, чтобы использовать для себя. Но мне также необходимо убедиться в том, что он не был потрачен дважды. Свойство связываемости, которое предполагает использование так называемых образов ключей, позволяет убедиться в том, что не только я владел одним из тех выходов, а также, что тот выход, которым владел я, не был потрачен в составе другого кольца. То есть куча информации упакована в одну структуру, называемую кольцевой подписью. Как ещё будет обсуждаться нами, здесь существуют некоторые ограничения, но математически всё происходит именно так, как задумывалось. Фактически реализуется принцип «правдоподобного отрицания». Если кто-то заявит: «Ну, один из этих публичных ключей принадлежал тебе», ты сможешь ответить: «Понятия не имею, который из них, этот ключ выхода мог появиться во множестве других колец, а я не имел ничего общего с теми транзакциями». Поэтому создаётся возможность отрицания фактической траты, то есть не говориться, какой публичный ключ я передаю тебе. Ты также намекал на идею, которую мы называем эвристикой. Эвристика — очень тонкая вещь, но она важна. Хорошим примером эвристического подхода может служить, скажем, ситуация, когда я попрошу тебя загадать число от 1 до 10. Потом, предположим, я прошу тебя записать это число на листе и запечатать этот лист в конверт так, чтобы я его не видел. Ну, а так как я достаточно умный человек, знающий кое-что о статистике, то мне известно, что в целом люди обычно не выбирают числа 1 или 10. И это действительно так, люди предпочитают не использовать предельных значений. Таким образом, я запоминаю, что, вероятно, ты не записал 1 и не записал 10. Кроме того, мне известно, что в случае, когда кто-то просит выбрать число от 1 до 10, чаще всего выбирают 3 или 7. И я говорю себе: «Ага, бьюсь об заклад, что ты выбрал 7». Статистически, если бы мы продолжали эту игру снова и снова и ты бы действовал, как рациональный человек, а такое происходит чаще, чем наоборот, то, вероятнее всего, ты выбрал бы 7. Но тут есть одна загвоздка: если ты не покажешь мне действительный ответ, я не буду знать, правильно я угадал или нет. Поэтому, в случае с эвристикой кольцевой подписи, ты записываешь своё секретное число, кладёшь запись в конверт, я говорю тебе, что, наверное, это 7, а ты, вместо того, чтобы сказать мне, так это или нет, просто-напросто съедаешь конверт и уходишь. Вот это и есть эвристика. Могу ли я сделать что-то с информацией, которая сводится к тому, что ты, вероятно, выбрал 7? Не знаю, возможно. Может, это имеет какое-то значение в реальной жизни, но это никак нельзя проверить, это недоказуемо. Я просто использую информацию, касающуюся того, как, по моему мнению, вы будете действовать, чтобы я получил ещё информацию, которую смог бы использовать. Поэтому мы много говорим о различных эвристических подходах к анализу кольцевых подписей, но эти вещи — не то же самое, что и доказательство какого-либо рода. Существуют различные метаданные и типовые варианты использования, которые прорабатываются нами снова и снова, когда мы имеем дело с эвристикой. Но тут важно запомнить одну вещь: когда мы говорим «эвристика», мы не имеем в виду какое-либо доказательство. Можете ли вы сделать что-то, используя эвристический подход? Конечно! Но это будет недоказуемо. При надлежащем использовании, о котором мы и говорим, кольцевые подписи действительно обеспечивают возможность правдоподобного отрицания, даже несмотря на то, что злоумышленник может попытаться применить эвристический подход, в частности, предположить, кто является действительным отправителем в определённой кольцевой подписи. Важно помнить, что математически кольцевые подписи делают точно то, для чего они предназначены изначально. Они обеспечивают возможность правдоподобного отрицания при отсутствии внешней информации. Но, как мы будем говорить далее, различные виды внешней информации могут позволить злоумышленнику на раннем этапе истории Monero найти вполне доказуемую информацию, а на более поздних этапах эвристическая информация уже едва ли будет доказуема.

Джастин: Мне очень понравился твой пример эвристического подхода, поскольку он помогает взглянуть на всё в перспективе. Есть некоторые вещи, которые, возможно, ломают твой принцип правдоподобного отрицания. Это такие вещи, как нулевые ложные выходы, о которых мы поговорим в будущих эпизодах, когда ты можешь посмотреть на данные блокчейна Monero и сказать: «Основываясь на этой информации, я точно могу сказать, что что-то произошло». В случае с эвристикой, ты используешь другую информацию, но обычно тебе требуется другая информация со стороны, чтобы подтвердить действительность этой информации. К слову, это моя догадка, но я по-прежнему не могу проверить твой конверт, я по-прежнему не могу выяснить истину. Может, истина в словах твоего друга, который говорит, что всегда записывает число 7, и это приближает нас к разгадке, добавляя очередное свидетельство, позволяя развить эвристический анализ. Мне кажется, важно, чтобы люди понимали разницу между тем, что мы говорим об анонимности Monero в связи с правдоподобным отрицанием, как минимум, мы гарантируем, что в блокчейне Monero обеспечивается правдоподобное отрицание, в пределах экосистемы вы будете защищены. Но когда вы вбрасываете внешнюю, реальную информацию, всё сильно осложняется. Мне кажется, людям сложно понять это, и именно поэтому данная проблема обсуждается нами в этой серии эпизодов.

Саранг: Просто об этом не приходится задумываться в реальной жизни, и, когда мы имеем дело с системами подобной этой, мы сталкиваемся с чем-то построенным искусственно, но это важно с точки зрения таких систем. Значительная часть всего этого связана с вашим профилем риска или вашей так называемой моделью угрозы. На сегодняшний день размер кольца Monero, например, составляет 11. Таким образом, если я отправляю вам средства, я беру свой реальный одноразовый адрес и 10 поддельных прямо из блокчейна и формирую кольцо, размер которого равен 11. Математически какая-либо внешняя информация отсутствует, и если бы вы захотели угадать, какой из этих одноразовых выходов является тем, который реально тратится при проведении транзакции, статистически у вас бы был 1 шанс из 11. Что это означает с точки зрения реального, фактического, правдоподобного отрицания? Если вы предстали перед каким-то судом, и вам вменяется участие в каком-то теневом бизнесе, что выяснилось в результате того, что суд при помощи какой-то внешней информации узнал, что один из выходов в кольце принадлежит вам, то математически у вас один шанс из 11. Достаточно ли это хорошо в данном случае? По ситуации. Всё зависит от юридической системы и ряда других факторов, выходящих за пределы математики Monero. Возможно, это важно, а может, и нет. Перед тем как начать эпизод, в качестве примера нами обсуждался Волан-де-Морт. Волан-де-Морт — это суперзлодей из мира Гарри Поттера, как мне сказали. Я не фанат Гарри Поттера, но мне сказали, что так оно и есть. И вот, допустим, этот Волан-де-Морт видит, что один из ваших одноразовых выходов появляется в кольце, и понимает, что у него 1 шанс из 11 угадать, какой именно. Или же в один прекрасный день размер кольца станет больше, и у Волан-де-Морта будет 1 шанс из 100. Возможно, при такой модели угрозы Волан-де-Морту будет наплевать на законность, и он просто нашлёт на вас какие-то чары, и вы умрёте в муках. Как бы то ни было, при такой модели угрозы сам факт того, что вы используете Monero, выделяет вас. Так что всё зависит от вашей модели угрозы, и это не то, о чём принято рассказывать другим. Так что, когда вы спрашиваете, какой уровень правдоподобного отрицания будет достаточным, то всё полностью зависит от вашей ситуации. Как мы будем говорить позже, мы в сообществе Monero верим, что использование кольцевых подписей, если всё делается правильно, на данный момент является наилучшим способом безопасного использования цифровых активов. Независимо от того, применимо или нет это к вам, всё реально зависит от вашей модели угрозы. Мы уверены, что для большинства моделей угрозы этого вполне достаточно. Но всегда важно помнить о том, что в мире есть Волан-де-Морты. Если сам факт использования Monero как-то выделяет вас, то для вас уже это и будет проблемой.

Джастин: Точно. Спасибо, Саранг, за вступление. Сейчас я попробую кратко подвести черту под тем, что такое кольцевые подписи: итак, они позволяют пользователям проводить транзакции или отправлять выходы или банкноты, как их иногда называют, ну, по аналогии с отдельными долларовыми банкнотами. Всё исходит из одного предполагаемого места, и без кольцевых подписей, как в случае с Bitcoin, очень просто выяснить, из какого источника были отправлены средства. Но в случае с Monero мы привносим неопределённость, так как говорим, что источником средств могли быть сразу несколько мест.

Саранг: У Bitcoin, на самом деле, есть подобный тип подписи. Просто другая математическая основа, но вы делаете то же самое, когда подписываете сообщение кому-то другому. В случае с Monero вы подписываетесь от лица группы, отправляющей сообщение кому-то.

Джастин: Можно сказать, что кольцевые подписи используются в качестве технологии сокрытия источника Monero, это объяснение будет достаточным, или же это слишком просто?

Саранг: Я думаю, да, ведь когда люди говорят об источнике средств, они часто имеют в виду адрес кошелька. Запомните, что это не так. Чтобы стало совершенно ясно, адрес вашего кошелька, который вы можете увидеть через используемое вами приложение Monero, никогда не попадает в блокчейн, от слова совсем. Математически невозможно посмотреть на транзакцию в блокчейне и определить, с какого адреса она проводится и кому адресована. Этого сделать просто никак нельзя. Вместо этого вы генерируете одноразовый адрес, и именно он появляется в кольцевой подписи и подписывается.

Джастин: Это почти как если бы мы сказали, что он скрывает источник средств как бы…

Саранг: Это уже другой уровень обфускации, о котором мы говорим недостаточно часто. И мы поговорим о нём позднее. Если вы имеете дело с другими объектами, такими как биржи, то они обладают дополнительной информацией, ведь они могут получить дополнительную информацию, но восстановить эту связь невозможно.

Джастин: А теперь я думаю, пришло время поговорить об истории кольцевых подписей Monero. Так мы сможем увидеть, как дела обстояли раньше, как всё изменялось в прошлом и как всё недавно улучшилось с решением двух основных проблем Monero. Итак, в своей нынешней форме кольцевые подписи появились в 2004, и изначально они задумывались как средство для голосования. То есть если у вас есть несколько голосующих, и вы не хотите, чтобы один и тот же человек проголосовал дважды. Сначала они назывались «связываемые кольцевые подписи», но не потому, что вы могли отследить, кто голосует, а потому, что был некий компонент образа ключа, подобный тому, что есть у нас в Monero, который доказывал, что кто-то не занимается выбором источника возможных голосов и не использует их множество раз.

Саранг: Да, когда мы говорим о связываемости и этой криптографической структуре, мы реально говорим о возможности связывания двух подписей с одним и тем же источником, даже если этот источник неизвестен. Идея идентификации действительного подписанта как свойство была названа «отслеживаемостью», а самих структур кольцевых подписей существует большое множество. Вы можете построить отслеживаемую подпись, а можете построить такую, которая не будет связываемой. Это общий тип криптографической структуры со множеством примеров. Мы используем тот, который подходит к нашим задачам. Но, как ты уже сказал, существует множество различных вариантов применения, которые рассматривались, и я уверен, что мы нашли бы ещё кучу, если бы сели и подумали чуть дольше.

Джастин: Тут интересен протокол CryptoNote, который был опубликован в 2014, несмотря на то, что утверждается, якобы он появился еще в 2012. Была взята идея и, вместо голосования, было предложено использовать всё это для проведения транзакций, чтобы мы знали, что они проводятся с разных скрытых адресов этих выходов, а не из одного определённого места. И этот вариант применения был совершенно новаторским, поскольку позволял реализовать некий процесс смешивания, но не требовал взаимодействия.

Саранг: И это очень и очень важная часть отрицания. Если я отправляю выход тебе, например, то очень вероятно, что при нормальных объёмах транзакций он появится в кольцах множества других людей. Так что в идеале отрицание произрастает из того факта, что ты можешь взглянуть на группу различных транзакций, каждая из которых будет ссылаться на выход, о котором мне было известно, и теоретически я могу все их отрицать, поскольку даже несмотря на то, что один из выходов может действительно тратиться, он также в равной степени может и не тратиться. Это свойство очень важно в нашем случае.

Джастин: Да, и это также полезно с точки зрения удобства использования, так как всё можно делать оффлайн, и нет никакой необходимости говорить с кем-то или привлекать кого-то к подписанию транзакции, договариваться. Я думаю, что это одна из основных причин, по которой люди изначально проявили интерес к кольцевым подписям и протоколу CryptoNote — это неинтерактивное смешивание.

Саранг: Верно. Это неинтерактивный процесс, вам не приходится взаимодействовать с тем, чьи выходы вы используете в своём кольце.

Джастин: Саранг, не мог бы ты немного рассказать о ранних годах истории Monero, с самого начала и вплоть до 2017 года, когда в Monero был реализован протокол RingCT? Расскажи о том, как люди пришли к кольцевым подписям, были ли они поняты? Когда люди говорят о подписях в неверном смысле? И не мог бы ты рассказать о своих первых исследованиях, которые проводились, чтобы задокументировать эти ограничения на ранних этапах?

Саранг: Конечно. Если вы заглянете в CryptoNote Whitepaper, вы увидите схему связываемой кольцевой подписи, которая не является схемой связываемой кольцевой подписи, которую мы используем на сегодняшний день. Схема, которую мы используем, более эффективна и имеет некоторые хорошие свойства. Она основана на схеме, которая была предложена Джозефом Лиу. Академическая работа, особенно с точки зрения математики, опирающаяся на другую работу, поэтому вопрос, кто изобрёл это… Форма, которую мы используем, является немного модифицированной версией работы Джозефа Лиу. Оригинал был более тесно связан с другой схемой, которая была менее эффективной и менее полезной для нас. Мы можем спорить об её истории сколько угодно, но это не изобретение Monero. Авторы CryptoNote не изобретали этого. Существует новаторский вариант некоторых математических и криптографических схем, который был реализован до этого. В основном мы используем подобную схему, изменённую нами, в частности, потому что нам было необходимо реализовать схему RingCT, но основная структура кольцевой подписи в значительной степени осталась той же. Изменения помогли нам в работе с зашифрованными суммами, которые не имеют большого значения с точки зрения нашей сегодняшней темы. Изначально, когда всё это только начинало использоваться, кольцевые подписи были опциональными. Теоретически кольцо могло состоять из одного возможного подписанта, то есть из одной возможной банкноты, которую я выдёргивал из блокчейна и которую я отправлял. В этом случае возможность правдоподобного отрицания отсутствовала как таковая. Если вы знаете, что один из членов кольца должен подписаться, а в кольце всего один участник, то не нужно много ума, чтобы понять, кто является подписантом. Опять же, подписи были опцией, мы называли это опциональной прозрачностью, ведь опциональная прозрачность — это хорошо, правда? В некоторой мере мы в Monero верили в то, что ты всегда можешь дать информацию о транзакции кому-либо, что всегда возможно. Но в некотором смысле опциональная прозрачность не такая уж и хорошая вещь. Таким образом, существует минимальный размер кольца, за исключением 1, конечно, и иногда мы называем такие транзакции транзакциями с нулевым миксином. Другим термином, который мы используем для обозначения ложных выходов и который я сейчас называю, является «миксин», поскольку он и является ложным выходом, с которыми я «миксую» свой реальный. Мне не очень нравится этот термин, но не в этом дело. При нулевом миксине размер кольца составляет 1. При одном миксине размер равен 2 и так далее. При таком раскладе неопределённость отправителя незначительна. Запомните, что при этом адрес кошелька или получателя так и не раскрывается, поскольку у вас нет информации из блокчейна, но и неопределённость того, какая часть суммы или выход были потрачены, так же отсутствовала. Мы быстро поняли, что это не так уж и хорошо, обсудили это и позднее пришли к теме связанных с проблемой атак. Хочешь поговорить о проблеме нулевых миксинов, и как она связана с кольцами большего размера?

Джастин: У нас будет целый эпизод, посвящённый нулевым миксинам, поэтому оставь тему для обсуждения на более высоком уровне.

Саранг: Конечно. Таким образом, отсутствие миксинов или размер кольца при проведении транзакции, равный 1, исключает неопределённость отправителя. Есть ещё один уровень обфускации, обеспечиваемый одноразовыми адресами, но позволяет ли это определить, что это именно ваш адрес кошелька? Определённо нет. Позже мы поговорим о том, как мы в Исследовательской лаборатории Monero, равно как и другие члены сообщества Monero, осознали другие возможные последствия. Следует помнить о том, что кольцевая подпись не существует сама по себе в блокчейне, она использует выходы, которые вполне вероятно могут встретиться в других подписях. В некотором смысле мои действия могут повлиять на действия других пользователей, являющихся участниками кольца, и это постоянная тема, которая будет подниматься, о чём бы ни говорили впоследствии. Есть и другие причины, в силу которых транзакции с нулевыми миксинами можно назвать плохими. Но в любом случае мы поняли это и после этого решили определить минимальные требования, под минимальными требованиями я имею в виду минимальные значения, используемые на базе принудительного консенсуса, а не то, что кошелёк по умолчанию будет мне указывать, что я должен создать кольцевую подпись с двумя, тремя или пятью, с любым другим количеством участников. Но если я попытаюсь провести транзакцию, в которой не будет заданного минимального количества участников, такая транзакция будет отклонена сетью. Поэтому я и говорю о принудительном консенсусе — такая транзакция ни при каких обстоятельствах не будет принята, и это уже не опция. Этот порядок был принят, и с течением времени мы вновь и вновь увеличивали размер кольца, чтобы избежать определённых видов анализа, о которых мы ещё поговорим. Устранение так называемых нулевых миксинов или исключение размера кольца, равного 1, стало первым этапом. Есть причины, о которых мы поговорим позднее, и касающиеся того, почему увеличивается размер со временем. Мне кажется, у тебя был график, не так ли?

Джастин: Я могу быстро показать его. Здесь вы можете увидеть историю увеличения размера кольца Monero. Можно увидеть, что начиная с 2014 года и по март 2016 вы могли проводить транзакции с нулевыми миксинами, которые, очевидно, указывали на вас, так как при отправлении такой транзакции не использовалось каких-либо других выходов. Использовался один единственный выход. Таким образом, уровень анонимности таких транзакций был снижен, но они по-прежнему были защищены скрытыми адресами. Тем не менее в конечном счёте было понятно, откуда они приходят, но, что более важно, эти транзакции также влияли на другие транзакции, и мы обсудим идею цепной реакции позже. В марте 2016 проект Monero перешёл на размер кольца, равный 3, и так было примерно в течение полутора лет вплоть до сентября 2017, когда размер кольца увеличился до 5. В 2018 году нам стало известно об атаке, которую мы обсудим в дальнейшем, поэтому мы увеличили размер до 7, а затем, в конце 2018 года, мы решили превентивно поднять его до 11, чтобы распределить некоторые преимущества Bulletproofs, а также повысить уровень анонимности и эффективность. Этот график довольно хорошо отражает, что происходило вплоть до этого момента. Мы начали с 1, затем увеличили размер до 3, 5 и 7, и важно отметить, что когда мы обновили его до 11, это значение стало обязательным размером кольца. Раньше можно было проводить транзакцию, используя кольца различного размера, но теперь размер кольца должен быть точным.

Саранг: Как ты уже упомянул, вплоть до последнего обновления до обязательного фиксированного размера кольца, равного 11, мы устанавливали только минимальное значение размера. При отсутствии какой-либо другой информации, в случае с большинством видов анализа, чем больше размер кольца, тем лучше. Теоретически вы получаете более высокий уровень правдоподобного отрицания, и, как будет сказано позднее, это может воспрепятствовать некоторым видам анализа. Вплоть до недавнего момента вы могли сделать кольцо настолько большим, насколько вам хотелось, и нам встречались совершенно безумные числа. То есть я хочу сказать, какой максимальный размер мы видели? Он был более тысячи или что-то вроде того.

Джастин: Он был больше тысячи.

Саранг: Это было просто абсурдно, и вы запросто могли сделать это сами. Это было бы дороже с точки зрения выплачиваемой комиссии, так как с увеличением размера кольца растёт и размер транзакции. Может возникнуть вопрос, почему мы сразу не сделали кольца гигантскими? Ну, вот и ответ: к сожалению, вам пришлось бы за это платить. Сама криптографическая подпись включает в себя некоторые криптографические конструкции, которые будут оставаться в блокчейне вместе с вашей транзакцией. Это занимает место, что будет стоить вам комиссий, а также увеличит время верификации, так как другим придётся загружать блокчейн для проверки. Тут всегда возникает вопрос с точки зрения эффективности. Мы хотели бы, чтобы размер был ровно настолько большим, насколько это необходимо, но не больше. И, как сказал Джастин, мы решили сделать размер, равный 11, обязательным также и для того, чтобы снизить степень отличия. Если по какой-то причине вы решите всегда использовать размер кольца равный 69, то если кто-то увидит в блокчейне транзакцию с размером 69, то этот кто-то может сказать: «О! Это, должно быть, тот самый парень, который использует размер кольца, равный 69». А это совсем нехорошо с точки зрения отличимости. В идеале транзакции должны выглядеть максимально идентично. Так что это было сделано и для того, чтобы снизить уровень отличимости и с мыслью, что возможно существование таких видов анализа, для которых большой размер кольца необязательно имеет значение. Так что вот история увеличения, и всё это неделимые числа, о чём я не задумывался, пока кто-то не спросил меня, есть ли в этом какой-то глубокий математический смысл. Почему размер кольца увеличивается до значения неделимых чисел. Я ответил, что нет. Ну, тогда это явно математическая шутка? Я снова ответил, что нет, может, некоторые люди и замечали это, но я-то нет. Я почувствовал себя дураком. Я очень долго изучал математику, но сквозь деревья я не видел неделимых чисел. Так что, как бы то ни было, на данном этапе мы имеем вот такую ситуацию с размером колец. Некоторые изменения совпали с реализацией RingCT, а протокол RingCT вводился, когда мы вносили серьёзные изменения, связанные с сокрытием сумм транзакций. Мы также можем обсудить тот факт, что это также пошло на пользу, поскольку до этого сам процесс создания кольцевых подписей был несколько ненадёжным. Если я отправлял 123 Monero, то мне приходилось разбивать их, как бы я это сделал с долларовыми банкнотами. Мне бы понадобилась банкнота достоинством 100 XMR для выхода, пара банкнот по 10 XMR и несколько банкнот достоинством 1 XMR. Вы можете взять банкноты какого угодно достоинства. Но вот что мы делали на самом деле: для этой банкноты в 100 XMR брались другие банкноты такого же достоинства, мы объединяли их и создавали кольцо, и так далее. На тот момент это было полезно, но это был довольно неудобный подход, так как вам приходилось собирать кольцо на основе достоинства выходов. Также это негативно сказывалось на транзакциях с очень малыми суммами, так как едва удавалось найти суммы подобного достоинства в большом пуле других банкнот. В некотором смысле это стало вносить путаницу, и это было нехорошо с точки зрения анализа, так как создавалась зависимость от других ребят, которые отправляли выходы того же достоинства. Реализация RingCT стала фантастическим прорывом по ряду причин, но одна из них состояла в том, что в транзакциях Monero более не указывались суммы. Вы просто не можете теперь увидеть их. Это не означает, что вам приходится маскировать числа, математика всё делает за вас и всё проверяет, и поэтому нам немного пришлось изменить и кольцевые подписи, чтобы всё работало, как надо. Теперь не надо волноваться о том, где найти то количество выходов достоинством 100 XMR, которое необходимо для создания кольца. Вы просто берёте выходы, созданные после реализации RingCT, и строите из них кольцо. Это просто фантастика. Это лучше с точки зрения эффективности, это гораздо лучше с точки зрения отличимости, и таким образом создаётся пул выходов, из которого вы можете взять необходимое количество из всего разнообразия среды RingCT.

Джастин: Не мог бы ты рассказать чуть больше о процессе открытия до того, как были опубликованы документы Исследовательской лаборатории Monero? Было ли хорошо известно, что у Monero есть ограничения, или же кто-то попросил докторов наук или кандидатов наук посмотреть на всё и ответить, могут ли они взломать схему? Как выглядел процесс в самом начале?

Саранг: Было хорошо известно, что есть некоторые ограничения. В частности то, как структура вводится в блокчейн. То есть сама по себе структура является красивым математическим идеалом — связываемая кольцевая подпись работает, как положено. Она идеально обеспечивает возможность правдоподобного отрицания для отправителя в случае с сообщением любого вида, и мы используем её для проведения транзакций. Так что в своей маленькой среде она работает идеально и обладает великолепными доказуемыми свойствами безопасности, и, вне всяких сомнений, она нравится нам. Но когда мы начинаем вводить структуру в блокчейн, а под блокчейном я имею ввиду, что у нас есть упорядоченный ряд транзакций, мы знаем, что определённые выходы выбираются различными способами, в зависимости от того, насколько произвольно вы выбираете выходы для создания своей кольцевой подписи — некоторые люди взаимодействуют с биржами, которые могут знать, что делали такие люди, и когда мы деноминировали суммы, то было доступно довольно много информации относительно сумм, которые вы отправляли, это если вы каждый раз отправляли одну и ту же сумму. В любой момент можно было по крупицам собрать любое количество информации о любой структуре, о любых метаданных, а это нехорошо. Злоумышленник мог бы воспользоваться этим для проведения своего рода доказуемого или эвристического анализа, который, как нами уже было отмечено, представляет собой недоказуемые догадки на основе предполагаемого поведения. Некоторые из этих вещей были известны, но совсем не обязательно они были формализованы. Они были задокументированы некоторым образом… ну, знаешь, сейчас очень модно публиковать статьи по какой-то небольшой части анализа Monero. Мы в MRL получаем статьи, часто не самого лучшего качества, в которых говорится о небольшой части анализа Monero, и часто это касается кольцевых подписей. Но на раннем этапе этого было не так много. В некоторых статьях Исследовательской лаборатории Monero, примерно в одной из четырёх, говорится об этих ранних вариантах анализа. В одной из них упоминаются такие вещи, как транзакции с нулевыми миксинами, как это работало с более ранними деноминированными суммами до введения RingCT. В некоторых других статьях говорится об атаках, вызывающих так называемую цепную реакцию, о которых мы ещё поговорим, я думаю, в следующем эпизоде. Всё это непрерывный процесс, и отчасти я люблю Monero за то, что мы можем вот так итерационно вносить изменения при каждом запланированном обновлении сети, принимая во внимание некоторые из этих выявленных вещей, вновь и вновь работать над ними. Такому активу, как Bitcoin, нет надобности беспокоиться о подобных вещах, Bitcoin прозрачен, насколько это только возможно. У них нет проблем с анонимностью, в том смысле, что им нечего постоянно совершенствовать. Но в случае с монетами подобными Monero анализ не становится хуже. Анализ, проводимый людьми, становится только лучше, и это вовсе не плохо. Когда ребята публикуют свои работы, независимо от уровня их качества, мне нравиться читать их, поскольку мы сможем использовать эту информацию, чтобы сделать Monero лучше. Но это также означает и то, что мы можем пройти наш итеративный процесс быстрее. Как видно на этом графике, размер кольца увеличивается, поскольку нас волнуют различные формы анализа, которых нам хотелось бы избежать, и это одна из причин всех итераций.

Джастин: Круто, учитывая, что мы увеличили размер кольца Monero в прошлом и справились с большинством основных форм атаки, которые беспокоили нас. Ты по-прежнему думаешь, что кольцевые подписи остаются одним из самых сильных ограничений Monero?

Саранг: С точки зрения ограничений я бы сказал, что да. Но в основном в смысле обеспокоенности. Если ты хочешь произвести какой-либо анализ Monero, опять же, есть масса работ по этой теме. Некоторые из них просто великолепны, а некоторые, на мой взгляд, довольно низкого качества. Многие из них касаются анализа, основанного на том факте, что кольцевые подписи обеспечивают ограниченную анонимность. Если мне известно, что 1 из 11 выходов был потрачен, и я сгенерировал несколько выходов, которые сами были использованы в качестве такового в ряде колец, то это уже создаёт структуру, а наличие структуры подталкивает к анализу. На удивление трудно избежать всех возможных вариантов эвристического анализа. Так что любой может заметить и воскликнуть: «Батюшки! Да тут пахнет эвристикой». И поэтому я говорю «да», всякий раз, когда вы сталкиваетесь со структурой, вы сможете выбрать какую-нибудь метрику, чтобы использовать её для того, чтобы угадать какой из выходов является действительным выходом траты. В целом, если вы используете Monero, это никак на практике не повлияет на вашу анонимность, но всё же мы пытаемся избежать этого, поскольку атаки не становятся хуже — со временем они только совершенствуются. Так что я бы сказал, что здесь мы имеем дело с самым большим источником для беспокойства. В течение долгого времени я утверждал, что когда-нибудь мы откажемся от кольцевых подписей, и это было бы здорово, если всё сделать правильно. Я до сих пор уверен, что так оно и будет. Многое из того, чем мы занимаемся, заканчивается анализом этого, и хорошо, что мы используем наше время таким образом, но если мы сможем перейти к чему-то, что повысит уровень неопределённости отправителя, то это время будет тратиться уже на что-то другое.

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

Саранг: Как я уже говорил ранее, в случае с некоторыми видами анализа, не со всеми, большой размер кольца играет положительную роль. Я использую большие размеры колец в качестве замены средству обеспечения анонимности. И опять же, отправитель не означает адрес кошелька. Это данные одноразовые адреса, обеспечивающий дополнительный уровень обфускации. Но если мы сделаем возможным выбор произвольного большого размера кольца, это поможет сделать некоторые типы атаки крайне неэффективными с точки зрения затрат. Например, если мы увеличим размер кольца с 11 до 1000, ваш выход будет одним из тысячи, которые вы выдернули из блокчейна. И это будет очень, очень большая транзакция, и даже само создание кольцевой подписи станет очень затратным. Когда вы проводите транзакцию, часть времени уходит на создание структуры этой криптографической кольцевой подписи, а это означает, что кто-то другой, кто загружает блокчейн, платит за это местом и временем, чтобы верифицировать вашу транзакцию. Нужно совсем немного времени, порядка десятков или сотен миллисекунд на транзакцию, чтобы верифицировать правильность её кольцевой подписи, и это важно делать. Но в совокупности время возрастает значительно, когда вы имеете дело с несколькими миллионами транзакций. Кто угодно скажет: «Бог мой, почему валидация блокчейна происходит так медленно». И это часть процесса. Эти небольшие периоды времени накапливаются. Некоторые вещи можно было бы улучшить, если бы могли. Но, к сожалению, мы пока не знаем способа, как сделать очень большую кольцевую подпись, и чтобы она была к тому же эффективной. Предлагались некоторые схемы, которые позволили бы создавать подобные связываемые кольцевые подписи таким образом, чтобы они были очень большими, их размер был бы более 1000, и они не занимали бы при этом много места. Но к несчастью, математически за это придётся платить временем верификации. Как ты уже намекал, есть другие схемы, вообще не использующие кольцевых подписей, но обеспечивающие неопределённость и анонимность отправителя. Например, проекты ZeroCoin и ZeroCash используют настолько большую схему обеспечения анонимности, насколько только можно представить. Их схема обеспечения анонимности включает буквально каждую отдельно взятую банкноту или выход, который когда-либо попадал в блокчейн. Теперь как это взаимодействует с другими формами анонимности, такими как анонимность суммы и получателя. Это зависит от определённой схемы. Например, в оригинальном документе ZeroCoin было изложено одно из этих предложений по реализации большой схемы анонимности, но вы не контролировали суммы. Вы могли только отправлять единичные суммы, и это было решение в стиле лотереи Bitcoin. Круто, мне кажется, но они платили за такой другой способ отсутствием определённых сумм. Тут также большую роль играет доверие. Возьмём проект ZeroCash, к примеру. ZCash является модифицированной версией, решившей проблему ZeroCoin, разрешив использовать произвольные суммы. Если вы пользовались системой ZCash, то вам должно быть известно, что вы можете отправлять любую сумму, как и в случае с Monero, и вы используете очень большую схему анонимности, если находитесь в пределах так называемого защищённого пула. Транзакции проводятся совершенно анонимно. Но в этом случае они платят за это, изначально необходимостью генерирования доказательств, которые хоть и очень небольшие, что с точки зрения блокчейна хорошо, но требуют много времени для формирования. И это в определённом смысле можно назвать платой. Также они заплатили за такую возможность тем, чем, возможно, прославились, а может, и стали печально известны, в зависимости от того, как на это посмотреть, я говорю о вычислении с привлечением множества сторон, «церемонии» ZCash. Эта версия реализации ZCash с её большой системой доказательства, позволяющая реализовать всю эту затейливую математику, использует вычисления, при проведении которых приходится принимать на веру то, что ребята, которые будут делать это, не были взломаны, или же, что по крайней мере один из них не был взломан. Так что всегда присутствуют такие ограничения. В идеале нам бы хотелось иметь что-то, обеспечивающее очень высокий уровень анонимности отправителя, а также что-то, позволяющее проводить произвольные суммы, а ещё мы хотим, чтобы у нас было что-то такое, что не будет требовать веры в то, что группа людей проведёт церемонию надлежащим образом, потому как я могу доверять им, а могу и не доверять. Также я хотел бы быть уверенным в эффективности всего этого. Изначально я не мог пользоваться телефоном для проведения защищённых транзакций ZCash, так как это занимало много времени, даже при малом размере их доказательств. В случае с Monero мы можем делать всё это довольно быстро, но если я захочу увеличить размер кольца, мне придётся заплатить за это с точки зрения места и небольшого увеличения времени. Так что ответ тут будет таким: сделать длинную историю ещё длиннее, так как на данный момент у нас нет ничего, что дало бы нам всё, что нам нужно. На сегодняшний день эта тема горячо обсуждается академическим исследовательским сообществом — как нам избавиться от вещей, которые нас не устраивают? Лично моё мнение сводится к тому, что если ты не можешь смириться с необходимостью доверия централизованной стороне, такой как компания ZCash, то уже сейчас Monero является прекрасным вариантом, обеспечивающим разумный уровень неопределённости отправителя. Но, опять же, когда-нибудь мы получим всё, что хотим, и я буду только рад перейти к такому решению, если оно будет работать на нас.

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

Саранг: Я пытаюсь найти у себя в записях, есть ли что-то ещё. Суть, думаю, заключается в том, что кольцевые подписи делают ровно то, для чего были разработаны, но блокчейны становятся причиной структурирования. Вот отсюда все неудобства. Процесс итеративен, и именно поэтому мы нашли способы, благодаря которым вы можете использовать внешнюю информацию и структуру, определяемую блокчейном и взаимодействием людей с ним. Вот что создаёт проблему. Вы можете легкомысленно рассуждать о том, что для кольцевых подписей характерны все эти проблемы. Ну, не совсем. Сама по себе их структура представляет собой идеальную математическую конструкцию, о которой можно прочитать в научной литературе, и кольцевые подписи работают ровно так, как и должны работать. Сама по себе кольцевая подпись исправна. Но она создаёт структуру, а структура позволяет проводить различные виды анализа, которые в разной степени вызывают беспокойство и проблемы, которые мы пытаемся итеративно решать. Это перестраховка, ремень с подтяжками и ещё один ремень, который уже намертво держит на вас штаны, как-то так. Мы итеративно возвращаемся к вещам, которые, по нашему мнению, могут вызвать проблемы у наших пользователей, и стараемся по максимуму повысить уровень анонимности. Как уже было сказано нами в первом эпизоде, анонимность — это не переключатель, который можно включить или выключить. Всё очень зависит от вашей модели угрозы, рисков, которые вы можете принять на себя, а также определённых видов анализа, которые, как нам кажется, будут иметь отношение к нашим пользователям. Всё сводится к компромиссу. Любой, заявляющий, что он может добиться всего без компромисса, либо не знает о чём говорит, либо может сделать что-то, что в итоге окажется полным дерьмом. Я думаю, мы делаем всё, что в наших силах, учитывая ограничения, с которыми, как нам известно, готовы смириться наши пользователи.

Джастин: Я думаю, это будет последний комментарий. Есть ли какой-то главный риск, который наши пользователи… ну или какое-то действие, которое наши пользователи могут совершить, чтобы избежать большинства рисков? Что это может быть?

Саранг: Я бы сказал, что в целом большинство проблем у пользователей возникает, как только они начинают взаимодействовать с кем-то, у кого есть больше информации о них, чем нужно. Классическим примером могут служить биржи. Было бы отлично, если бы я мог платить за квартиру, используя Monero, да и вообще делать всё, что мне нужно с Monero, минуя регулируемые биржи, не конвертируя Monero в фиатную валюту и так далее. Но также надо понимать, что мы живём немного в другом мире. Если я собираюсь платить за квартиру, то я, вероятно, буду делать это в своей местной валюте, и, видимо, в зависимости от того, где я живу, мне придётся обратиться к услугам регулируемой биржи, которой будет известна, например, информация моего адреса Monero, а также она может потребовать мои личные данные о том, где я живу, и так далее. В результате взаимодействия с подобными организациями могут возникнуть проблемы, если вы будете это делать непрерывно, легкомысленно или каким-либо способом, который вызовет опасения. В конечном счёте всё закончится плохо. Так что если вы очень, очень обеспокоены, если ваша модель угрозы не позволяет вам делать этого, то, возможно, предоставление своего адреса, личных идентификационных номеров и прочей информации регулируемой организации может быть не для вас. Но я бы хотел отметить, что в случае с большинством вариантов разумного использования, если говорить о том, что делается нами изо дня в день, я думаю, Monero работает превосходно, а последние доработки сделали всё ещё лучше. Так что кольцевые подписи едва ли прямо тревожат меня, скорее, беспокоят.

Джастин: Хорошо. На слове «беспокойство» остановимся и поблагодарим Саранга за его взгляд на проблему, которым он поделился с нами сегодня.

Саранг: Ой, всё станет куда как более беспокойней, когда мы дойдём до подробностей определённых вещей, вызывающих это беспокойство. Я бы сказал, что мы намеренно сегодня всё описали так расплывчато. А вот когда мы более подробно начнём рассматривать различные виды анализа, как прошлые, так и современные…

Джастин: Но это реально помогло подготовить почву для всех, кто переучивает историю Monero или заново знакомится с ней. Равно как и дало понимание кольцевых подписей на более высоком уровне, а также того, как исследователи подходят к ним, поскольку они были источником беспокойства в течение многих лет и стали объектом множества исследований и трудов со стороны разработчиков.

Саранг: А если кто-то из зрителей хочет узнать больше или глубже изучить математические принципы, узнать больше о том, как работают кольцевые подписи, Zero to Monero является прекрасным техническим руководством, которое поможет понять всё это. Найти руководство можно на веб-сайте Monero, оно послужит вам хорошим источником, который поможет понять математику кольцевых подписей, если вы хотите этого. На самом деле это не нужно, чтобы понять остальные эпизоды, но если вас интересует более подробная информация, то вы найдёте её именно там.

Джастин: Отлично. Спасибо всем, кто смотрел и слушал нас, я надеюсь, что этот эпизод Breaking Monero поможет вам лучше понять кольцевые подписи, а также их невероятную важность для понимания всего того, о чём будет говориться в последующих сериях. Ещё раз спасибо, Саранг, за то, что присоединился ко мне сегодня. Спасибо зрителям за то, что смотрели сегодняшний эпизод, я надеюсь, что вы также будете смотреть и последующие эпизоды, особенно те, в которых мы более скрупулёзно будем рассматривать определённые виды атак, которые вызывают озабоченность. Всё. Спасибо всем, берегите себя.

Перевод: Mr. Pickles
Редактирование: Agent LvM
Коррекция: Kukima