Введение 3
Основная часть 6
Раздел 1. Мотивация и краткая история создания протокола 6
Раздел 2. Описание протокола Zerocash 9
2.1 Неформальное описание протокола Zerocash 9
2.2 Формальное описание протокола Zerocash 16
2.2.1 Структуры данных 16
2.2.2 Алгоритмы 18
2.3 Арифметическая цепочка для операции POUR 21
Раздел 3. Описание протокола zk-SNARK 23
3.1 Примеры доказательства с нулевым разглашением 23
3.2 Описание протокола zk-SNARK 25
Раздел 4. Программная реализация zk-SNARKs 28
4.1 Описание Zokrates 28
4.2 Постановка задачи для программы 29
4.3 Установка Zokrates 30
4.4 Написание программы 31
Заключение 37
Литература 38
Приложение
С развитием технологий и в частности интернета появились и стали популярными криптовалюты по ряду веских причин. Во-первых, это отсутствие государственного контроля над операциями внутри сети. Во- вторых, это используемая в криптовалюте система блокчейн.
До некоторого времени существовало мнение о том, что криптовалюты полностью анонимны. Однако, как оказалось, это не совсем так, и при помощи метаинформации возможно вычислить практически любого пользователя. Данный факт привёл к появлению новых анонимных криптовалют. Одной из таких является Zcash. Одним из нововведений данной валюты стало использование так называемых доказательств с нулевым разглашением.
Доказательство с нулевым разглашением - это протокол, в котором проверяющий может убедиться в правильности некоторого выражения, не имея информации со стороны доказывающего. Цель легального доказывающего (имеющего доказательство) в этом протоколе — убедить проверяющего в том, что у него есть решение, не выдав при этом даже части доказательства. ель проверя его е это удостовериться в том, что доказывающая сторона «не лжёт». Протокол должен быть устроен таким образом, чтоб доказ ва ий мог убедить проверя его только если выражение действительно доказано, а в противном случае он не мог бы этого сделать из-за вычислительной сложности.
У данного протокола существует различные реализации, и в данной работе будет рассматриваться zk-SNARKs использующийся в Zcash. Но перед этим будет приведена краткая информация о протоколе Zerocash.
Доказательства с нулевым разглашением были разработаны Шафи Гольдвассер, Сильвио Микали и Чарльзом Реккофом (учёными из MIT), за что в последствие они удостоились премии Гёделя [1].
Сам акроним zk-SNARL появился в 2012 году в исследовании учёных MIT, Тель-Авивского и Бостонского университетов [2].
Существует несколько различных протоколов zk-SNARK имеющие свои преимущества и недостатки. В данной работе будет рассмотрены именно протоколы : “[PGHR13] Brian Pamo, Craig Gentry, Jon Howell, and Mariana Raykova. Pinocchio: Nearly practical verifiable computation.In
Proceedings of the 34th IEEE Symposium on Security and Privacy, Oakland ’13” и “[BCTV14] Eli Ben-Sasson, Alessandro Chiesa, Eran Tromer, and Madars Virza. Succinct non-interactive zero knowledge for a von Neumann architecture. In Proceedings of the 23rd USENIX Security Symposium, Security ’14”, поскольку именно они используются в описании протокола Zerocash [3, стр. 12].
Доказательства с нулевым разглашением, а если быть точнее zk- SNARK и подобные ему протоколы, являются актуальной темой в мире криптовалют. Так, Виталий Бутерин(основатель криптовалюты Etherium) и Эдвард Сноуден считают, что за данной технологией будущее приватного трейдинга. Однако, одновременно с этим, исследования в данной области ведутся в основном учён ми из IT, и почти вся име аяся литература выпущена на английском языке.
И так, в связи с актуальностью данной темы и слабой её освещённость в русскоязычной литературе, данная ВКР имеет практическую значимость.
ель данной работы является рассмотрение устройства одного из существующих протоколов доказательства с нулевым разглашением zk- SNARKs, а так же его программная реализация .
Однако стоит отметить то, что из-за специфики выбранной темы для полного описания всех математических конструкций потребовалось бы знания теоретической информатики, об ей алгебры, а так е ряда других дисциплин, которыми я не обладаю. Поэтому некоторые моменты рассматриваться не будут, либо их обоснование будет представлено ссылкой на соответствующую литературу.
С ростом популярности криптовалют становится ясным, что Биткойн не способен предоставить должный уровень анонимности, так как не скрывает метаинформацию и граф транзакций. В результате появляются криптовалюты нацеленные на повышения уровня безопасности. Одной из таких криптовалют является Zcash.
Целью данной ВКР было разобрать протокол Zerocash, который лёг в основу протокола криптовалюты Zcash, для определения того, каким образом он смог преодолеть недостатки Биткойна.
В ходе разбора было установлено, что в основном анонимность обеспечивается при помои протолкла доказательства с нулевым разглашением zk-SNARK.
Далее схематично был разобран сам протокол zk-SNARK. Математическая сторона протокола была рассмотрена не так подробно, так как для этого требуется освоение теоретической информации и ряда других дисциплин, не входящих в компетенцию автора.
осле была написана программа с использованием инструментария Zokrates. При помощи встроенных инструментов было проведена транзакция, использующая доказательства с нулевым разглашением.
Таким образом цель работы была достигнута. Были разобраны протоколы позволяющие проводить транзакции без деанонимизации сторон, и реализована программа подтвер да ая в числения при помои доказательства с нулевым разглашением.