Язык

Как проводилась Церемония

Zooko Wilcox | Oct 26, 2016

Update: Read our full summary of what took place in the Zcash Parameter Generation Ceremony.

Токсичные отходы и другие способы подделать Zcash

Как мы уже упоминали в предыдущем посте в блог, приватные транзакции в Zcash “Росток” 1.0 полагаются на общественные параметры SNARK для конструирования и проверки доказательства с нулевым разглашением. (Когда мы обновим Zcash и изменим доказательство с нулевым разглашением — что мы намерены сделать на протяжении примерно одного года — тогда же мы создадим с нуля новые общие параметры SNARK.) Генерация общих параметров SNARK в основном эквивалентна созданию пары открытый/закрытый ключ, с сохранением открытого ключа и уничтожением закрытого ключа.

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

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

Важное примечание: уничтожение закрытых ключей не гарантирует того, что поддельные Zcash никогда не появятся! Любая из технологий валют, которые когда-либо появлялись, уязвима для подделывания. У Биткоина также была ошибка, которая позволила первому человеку, обнаружившему этот баг, подделать 184 миллиардов BTC. Может оказаться, что у Zcash есть подобная уязвимость, совершенно не связанная с токсичными отходами в виде закрытого ключа.

Биткоину удалось обнаружить данную проблему, так как все сделки публичные и подделка стала достоянием общественности. У Zcash не будет такой возможности. Фактически, любая система, у которой есть сильная приватность, не окажется в состоянии обнаружить такую подделку.

Zcash не уникален в этом отношении: ни в том, что касается риска подделки, ни в том, что подделку будет сложно обнаружить. Мы вернёмся к данному факту в конце этой статьи.

Обеспечение безопасности Церемонии

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

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

Я собственной персоной, плюс пять человек, которым я доверяю — это честные люди и хорошие специалисты по информационной безопасности — выступили операторами и наблюдателями протокола. Мы назвали этих людей “Свидетелями”, а исполнение протокола “Церемонией”.

Трёх Свидетелей представили всем участникам и наблюдателям в начале Церемонии: Эндрю Миллер (компьютерный специалист и технический советник Zcash), Питер Ван Валкенбург, и я.

Я сказал, что у Свидетелей будут псевдонимы “Moses Spears”, “Fabrice Renault”, и “John Dobbertin”, но фактически, я дал им эти имена, чтобы временно скрыть их личности от других Свидетелей. Это было сделано, чтобы защититься от любого потенциального нападавшего, который мог бы подслушать наш (в основном зашифрованный) разговор или сделать другие враждебные действия в отношении наших Свидетелей.

В конце Церемонии, 23 октября, “Moses Spears” оказался Дереком Хинчем из NCC Group. Мы тайно наняли NCC Group в качестве одного из операторов вычислительного узла. Никто, кроме Натана Уилкокса, (технический директор ZcashCo), меня, и NCC Group не знал об этом. Двумя задачами NCC Group было защитить вычислительный узел во время Церемонии (они разместили узел в охраняемом помещении в Остине) и сделать анализ до и во время Церемонии, чтобы попытаться определить, происходила ли какая-либо кибератака. Кроме того, они придали вычислительному узлу избыточность, которая фактически не использовалась во время Церемонии, и попытались взломать систему, чтобы убедиться в том, что сложно украсть кусочек закрытого ключа из вычислительного узла. NCC Group напишет технический отчёт о том, что они делали и наблюдали.

27 октября “Fabrice Renault” рассекретил себя , оказавшись разработчиком ядра Биткоина Питером Тоддом. Питер отнёсся скептично к Церемонии генерации параметров Zcash, но я сказал, что помощь в качестве Свидетеля даст ему лучшую точку зрения на то, что можно исследовать и критиковать. Самое важное, я верю, что Питер ,никогда не попытается украсть части закрытого ключа и не вступит в тайный сговор. Наконец, я предположил, что он обеспечит творческий и сильный подход к информационной безопасности. Пока я не знаю деталей о том, какие он предложил меры защиты, поскольку ещё не получил от него отчёт. Мы не платили Питеру за его помощь, хотя предлагали ему возмещение расходов, таких, как покупка компьютера в случайном магазине. Этот компьютер спустя несколько дней был полностью разрушен.

Личность “John Dobbertin” пока не раскрыта, и я не знаю, когда Джон и я будем готовы сделать это.

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

Структура Церемонии, которую мы выбрали, основывалась на трёх основных защитах, которые использовались вместе: разделение вычислений, воздушные прослойки и следы доказательств.

Разделение вычислений

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

Воздушная прослойка

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

Каждая машина покупалась новая, исключительно для этой цели, и они никогда не подсоединялись ни к какой сети в своей жизни, с момента покупки в магазине Свидетелем. Каждый свидетель физически удалил все радио каналы (wifi и bluetooth) из компьютера, прежде, чем первый раз включить его.

Машины с воздушной прослойкой мы назвали “вычислительными узлами”.

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

an air-gapped Compute Node being set up

Следы доказательства

We needed to communicate messages back and forth between the Compute Nodes in order to perform the Multi-Party Computation protocol.

У каждого из Свидетелей, кроме вычислительного узла, была отдельная машина подключённая к Интернет, которую мы назвали “сетевым узлом”. Сетевой узел получал входящие сообщения и записывал их на диск, после чего Свидетель перемещал диск через воздушную прослойку, подключая к вычислительному узлу.

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

Главное преимущество использования оптических дисков с возможностью только записи информации состоит в том, что они обеспечивают не смываемые следы доказательства точно сохраняя именно те сообщения, которыми участники обменивались во время Церемонии. Например, предположим, что в будущем кто-либо обнаружит, что была доступная для эксплуатации ошибка в программном обеспечении одного из устройств DVD, используемых вычислительным узлом. Вы поэтому можете спросить: хорошо, были ли сообщения, переданные вычислительному узлу, подвержены этой уязвимости? Мы можем проверить оптические диски, чтобы определить, были ли переданы данные вычислительному узлу, который, возможно, имеет такую уязвимость.

Важно, что эти оптические диски нельзя переписать — это DVD-R, а не DVD-RW — потому что даже если атакующий получит контроль над вычислительным узлом, то не может стереть доказательства.

ceremony design

Дополнительные защиты

В дополнение к триаде описанных выше основных защит, мы также использовали многочисленные дополнительные методы, позволяющие сделать задачи защиты проще, а задачи атакующего тяжелее. Мы сохранили детали Церемонии — когда она должна произойти, кто будет принимать в ней участие, какой исходный код мы будем запускать, и так далее — в тайне до тех пор, пока Церемония не будет завершена — то есть до настоящего времени! Мы использовали Linux с дополнительными возможностями безопасности для запуска на Вычислительных узлах. Мы написали весь код, который необходим для вычислений и сетевых соединений на Rust — языке программирования, который позволяет легко избежать большинства распространённых ошибок с безопасностью. Также была создана защищённая цепочка хэширования всех сообщений, которые были переданы, и мы переслали эту цепочку в Твиттер и в Интернет архив, связав с помощью меток времени с блокчейном Биткойна. Вдобавок к этому, каждый из Свидетелей выбрал свои собственные способы обеспечения дополнительной безопасности, которые мы более подробно опишем в последующих документах.

Будущая работа

Наша задача ещё не выполнена. Теперь предстоят два важных шага:

Архивирование доказательств и независимый контроль

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

Я думаю, что этот материал покажется чрезвычайно интересным нашим экспертам, которые являются настоящими параноиками в области безопасности. Надеюсь услышать их оценку наших мер предосторожности и то, что они могут сказать по поводу проведения Церемонии. Насколько я знаю, Церемония Генерации Параметров Zcash является самой замечательной и сложной шифровальной церемонией в истории!

Мы уже начали этот процесс, опубликовав исходный код сетевых процессов и вычислений. Пожалуйста, прочтите его и сообщите нам сразу же, если найдёте в коде недостатки.

Предложенная особенность для обнаружения подделки Zcash

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

Кроме того, у людей, не имевших возможности засвидетельствовать Церемонию лично, всё ещё могут оставаться сомнения по поводу того, что процедура была выполнена честно и безопасно. Нет никакого способа, которым мы могли бы на самом деле доказать, что мы сделали то, о чём говорим, что сделали. Есть вероятность того, что все шестеро сговорились, чтобы выполнить этот процесс — включая создание видеозаписей и других доказательств — как последовательный трюк фокусника, и мы могли бы на самом деле тайно скопировать элементы частного ключа и объединить их, чтобы получить токсичные отходы. Я выбрал этих пятерых Свидетелей из числа людей, которым доверяю лично и они никогда не сделают такую вещь. Однако, если вы знаете этих людей так, как знаю их я, то можете потребовать дополнительных гарантий.

Поэтому я намереваюсь отстаивать возможные обновления Zcash в будущем — после запуска Zcash 1.0 “Росток” — добавив особенность определения подделок. Это обеспечит способ для каждого (я имею в виду обычного пользователя) определить общую денежную массу монет Zcash, находящихся в обороте. Это позволит нам узнать, произошла ли подделка — с использованием токсичных отходов в виде закрытого ключа или любого иного способа.

Я напишу об этом больше в следующих постах в блоге.

Подведение итогов

Мы выполнили настоящий подвиг в области криптографии и обеспечения информационной безопасности при генерации общедоступных параметров SNARK для Zcash 1.0 “Росток”. Общая структура этой Церемонии основывалась на разделении вычислений, воздушных прослойках, и не удаляемых следах в качестве доказательств. Участвовало шесть различных людей, каждый из которых выполнял свою часть Церемонии. Разделение вычислений гарантирует, что даже если все пять остальных участников будут скомпрометированы, или вступят в тайный сговор с целью восстановления токсичных отходов, достаточно всего одного честного Свидетеля, который удалил свою часть закрытого ключа, чтобы токсичные отходы никогда не удалось восстановить. Несмотря на замечательную силу этой Церемонии, я отстаиваю мнение о том, что протоколу Zcash необходимо значительное обновление в следующем году, которое будет включать в себя добавление уровня обнаружения вдобавок к существующему уровню предотвращения.