Monero — краткая предыстория
Monero — это криптовалюта, запущенная 18 апреля 2014 года как форк Bytecoin. Bytecoin (не путать с Bitcoin, прим. пер.) был первой цифровой валютой, реализующей протокол CryptoNote (подробнее об этом ниже по тексту). Как только ByteCoin всплыл на форуме Bitcointalk, люди открыли для себя множество подозрительных свойств, вместе с тем фактом, что более 80% всей эмиссии были уже добыты. Таким образом, сообщество приняло решение его перевыпустить, начав с чистого листа, с нулевым премайном. Так появился Monero.
В первые месяцы своего существования для пользователей Monero были доступны только утилиты командной строки. Поэтому множество пользователей продолжало просить разработчиков, в то время до конца не понимающих множества основных моментов в кодовой базе Monero, создать графический пользовательской интерфейс (GUI). Они прислушались и начали работу над ним, но внезапно, 4 сентября 2014 года, на сеть Monero обрушилась изощренная атака, так что разработчикам пришлось пересмотреть приоритеты и уделить все время ядру, для того чтобы система была устойчива к атакам (подробнее об этом в документе MRL-2).
К концу 2014 года, Рикардо Спаньи (Riccardo Spagni) запустил Web-кошелек под брендом “MyMonero”, который доступен по адресу mymonero.com. Тем временем, для стороннего наблюдателя казалось, что ничего особенного в работе над проектом не происходит. Однако разработчики проделали очень серьезную работу, такую как перенос цепочки блоков на LMDB, которая позволяла демону Monero работать на компьютерах с ограниченным количеством оперативной памяти. Также была реализована многоязычная поддержка mnemonic-seed для облегчения создания резервных копий приватных ключей. Большое количество кода и документации было написано для реализации быстрой синхронизации цепочки блоков, более быстрой работы демона, начата интеграция с I2P и т.д. В конечном итоге проект графического пользовательского интерфейса был снова возобновлен в начале 2016 г.
Взаимозаменяемость (fungibility)
Цель Monero — создание сети взаимозаменяемой валюты. Что такое “взаимозаменяемость” (fungibility) и почему она так важна?
Взаимозаменяемость — это важнейшее свойство любой валюты. Это свойство делает возможным 100% обмен одной единицы валюты на другую. Здесь не должно быть различий. Каждая монета должна иметь одинаковую стоимость.
В сети Bitcoin каждая транзакция может быть отслежена. Это может создать проблемы при получении переводов от незнакомых источников, а также в дальнейшем при попытке потратить эти средства. Вы можете быть обвинены в преступлениях при которых эти средства были использованы. Это значительно занижает стоимость подобных “грязных” средств. Другая проблема с отслеживанием транзакций заключается в том, что другие могут узнать ваш баланс или определить на что вы тратите ваши средства.
Однако вы можете попробовать замести следы ваших транзакций. Эта техника называется “микширование” и может быть осуществлена различными способами. Иногда централизовано, иногда децентрализовано, но здесь всегда есть вероятность увидеть, что определенные монеты прошли через микшер. Использование этого приема так или иначе ведет к проблемам, потому что для микширования, как правило, используются “грязные” монеты. Необязательная приватность не решает проблему отсутствия взаимозаменяемости валюты.
Вы можете попробовать замести следы, но если вы пытаетесь микшировать ваши монеты используя “coinjoin” или любой другой “анонимайзер”, то эти транзакции все равно будут отмечены как “потенциально подозрительная” активность, так как сразу видно, что монеты были микшированы, даже если сами вы остаетесь анонимными.
Так что не путайте анонимность с взаимозаменяемостью. Технология микширования работает только в том случае, если она используется по умолчанию всеми пользователями. Если все и всегда микшируют транзакции, то никто не может утверждать что-то конкретное о данных в цепи блоков.
Кольцевые подписи (Ring signatures)
Кольцевые подписи используются для сокрытия реальных входов транзакций таким образом, что невозможно сказать что за история у каждого выхода этой транзакции в цепочке блоков.
Кольцевая подпись (ring signature) — это такая электронная подпись, которая позволяет одному из участников группы (называемой кольцом) выполнить подписание некоторого сообщения от имени всей группы, при этом не будет доподлинно известно, кто из участников группы выполнил подписание. Кольцевые подписи и их приложения — CryptoWiki
Кольцевые подписи применяются к каждому входу любой транзакции. Отправитель случайным образом выбирает другие выходы с той же суммой из цепочки блоков и подписывает их своим приватным ключом. Отправитель не нуждается в каком либо подтверждении от владельцев других выходов. Все это можно сделать в отсоединенном от сети режиме, чтобы безопасно создать и позже отправить в сеть транзакцию с уже подключенного компьютера.
Вероятно, вы спросите себя, как определяются двойные траты, если присутствует правдоподобное отрицание для каждого выхода транзакции? Ответ снова дает математика. Вместе с транзакцией публикуется так называемый “key image”. Он доказывает, что один из входов кольцевой подписи реален и когда отправитель пытается произвести двойную трату, “key image” будет абсолютно идентичен. Больше информации о криптографии лежащей в его основе вы можете найти здесь.
Так как во всей сети обеспечено соблюдение кольцевых подписей, все монеты всегда перемешаны. Это и делает их взаимозаменяемыми на уровне протокола в Monero. Если мы сравним это с функциями приватности реализованными в Bitcoin, ZCash или Dash, мы явно можем увидеть разницу: если прозрачные транзакции возможны в сети, регулирующие органы смогут потребовать прозрачность в определенных обстоятельствах, так что взаимозаменяемость станет невозможной.
И последнее, но не менее важное — это проверенная криптография. Она существует с 2001 года, так что мы можем предполагать, что она достаточно надежна. В отличие от ZCash, которая очень новая и все еще недостаточно проверена.
Stealth-адреса
В Monero реализованы “Stealth-адреса”, у вас один (публичный) адрес, который вы можете предать кому угодно, не позволяя наблюдателям знать что-либо об истории транзакций или балансе этого адреса. Система адресов Monero использует два приватных ключа: viewkey (ключ для просмотра) и spendkey (ключ для траты).
Приватный ключ для трат работает как аналогичный приватный ключ в Bitcoin — им вы подписываете транзакции. Ключи для просмотра же используется для поиска входящих платежей в цепочке блоков. Только если у вас есть доступ к ключу для просмотра вы можете узнать точный выход транзакции, связанный с вашим адресом Monero.
В Bitcoin (и большинстве других криптовалют) многократное использование адресов происходит постоянно и это колоссально уменьшает псевдоанонимность сети. Stealth-адреса предоставляют простой способ защитить и улучшить секретность. Данные цепочки блоков не покажут связей между несколькими транзакциями.
Несмотря на это, не все так прекрасно: если вы используете адрес в нескольких местах, можно связать транзакции вне цепочки блоков. Если вы выводите средства с биржи и используете тот же адрес в вашем интернет-магазине, в котором вы продаете растения, правоохранительные органы имеют возможность связать ваши транзакции основываясь на данных использования одного и того же адреса. По этой причине рекомендуется использовать технику “одноразовых адресов” для каждого из сервисов. Все средства поступят на один и тот же аккаунт, но связать транзакции вне цепи блоков будет невозможно.
Конфиденциальные транзакции RingCT
Кольцевые конфиденциальные транзакции — это новая система подписей предложенная ученым Шеном Нетером (Shen Noether) в документе MRL-5. Вы можете найти его первую редакцию в журнале Ledger. Эта система подписей основана на исследовании конфиденциальных транзакций Грегори Максвелла (Gregory Maxwell), но адаптирована для работы с кольцевыми подписями.
Эта технология позволяет пользователям скрыть суммы транзакций. И она является “последней частью мозаики” для полной анонимности в сети Monero. Технология также решает некоторые пограничные случаи, которые могут скомпрометировать конфиденциальность Monero. RingCT был активирован в сети Monero 9-го января 2016 г. Вначале RingCT был необязательным, но в сентябре 2017 после запланированного жесткого обновления технология RingCT в Monero станет обязательной, без какой-либо возможности ее обойти.
Kovri — I2P
Данные цепочки блоков это только один вектор атаки на секретность пользователей криптовалют. Известно, что компания Chainanalysis пытается идентифицировать пользователей через их IP-адреса. Проект Kovri ставит своей задачей реализацию I2P-маршрутизатора на языке C++, который в конечном итоге позволит пользователям Monero скрывать свои IP-адреса во время отправки транзакций. Kovri еще не интегрирован в Monero и все еще находится на ранней стадии разработки.
Заключение
Monero — это очень важная и революционная технология. Она позволяет скрыть отправителя, получателя, суммы и историю транзакций. Monero в отличии от ZCash не требует доверия к участникам шоу “trusted setup” и работает в полевых условиях уже более 3-х лет. Приватность гарантируются протоколом и Monero предоставляет гораздо больший набор средств для анонимизации, чем микшеры Bitcoin или любая другая криптовалюта с периферийными функциями приватности. Monero позволяет пользователям совершать конфиденциальные транзакции в децентрализованной сети и устоять перед возможными попытками регуляции правительством. Monero — это истинная цифровая наличность.
Оригинал статьи: Introduction to Monero – We Use Cash.
Автор: Kaluchi