- #1
Перед тем как вы погрузитесь в изучение статьи, обратите внимание на тот факт что всё упомянутое в ней не является финансовой рекомендацией для принятие более взвешенного решения просьба провести свое собственное исследование.
Если бы любой желающий мог добавлять код в основную ветку, проект очень быстро превратился бы в хаос. Bitcoin Core следует принципам наименьших привилегий: любые полномочия, предоставляемые отдельным лицам, легко отзываются, если ими злоупотребляют.
Core открыто публикует важный список, содержащий PGP-ключи, которыми можно подписывать слияния кода (merge commits). Но мораль скорее заключается в том, что гитхабу доверять нельзя! Даже команда Bitcoin Core не знает всех людей, которые могут внести изменения в репозиторий — таких, наверное, целая дюжина среди сотрудников гитхаба.
С точки зрения безопасности, гитхабу доверять нельзя. Любой сотрудник гитхаба может воспользоваться своим служебным положением и вставить код в репозиторий без ведома дежурных. Но маловероятно, что такой злоумышленник также сможет завладеть PGP-ключом дежурного разработчика Bitcoin Core.
Bitcoin Core не сводит вопрос надёжности кода к безопасности аккаунтов на гитхабе, поэтому он использует систему непрерывной интеграции, проверяющей PGP-ключи доверенных лиц, которые должны подписывать каждое слияние кода.
Хотя все знают, кто владеет этими ключами, все-таки небезопасно предполагать, что так будет всегда — ключ могут украсть, и мы не сможем об этом узнать до тех пор, пока его владелец не уведомит об этом других дежурных. Таким образом, ключи для слияния кода также не гарантируют идеальную защиту; они просто усложняют задачу добавления произвольного кода злоумышленником.
Языками не управляет демократия, и точно так же она не управляет биткоином. Несмотря на это, постоянно можно слышать, как люди ссылаются на майнеров, нод, разработчиков или пользователей, которые могут “голосовать” за что-то — но на самом деле механизма, который бы заставил меньшинство принять изменения, за которые проголосовало большинство, не существует. Биткоин — это анархия: без правителей, но не без правил. Правила определяются и применяются отдельными участниками сети.
Хотя изменения в сам протокол биткоина обычно вносятся через так называемые Bitcoin Improvement Proposal, даже это всего лишь рекомендуемая и самая распространённая практика, и никто не обязан ей следовать. Это просто более формализованный способ рассмотрения предложенных участниками изменений: сначала они подвергаются экспертной оценке, а затем должны получить всеобщее одобрение.
Как бы трудно ни было это объяснить или понять, здесь и заключается важный аспект “антихрупкости” Биткоина: если бы существовала единственная точка контроля — она же бы и была главным уязвимым местом, на которое могли бы надавить структуры, которым биткоин угрожает. В конечном счете, каждый оператор ноды сам себе начальник в том смысле, что он лично следит за тем, чтобы никто в сети не нарушал правил, которые он считает верными. Эта модель безопасности — основа управления биткоином, которая строится по принципу “снизу вверх”.
История Bitcoin Core
Bitcoin Core — это, скорее, главное место разработки протокола Биткоин, а не орган управления и контроля. Если оно по какой-либо причине прекратит свое существование, возникнет новое. Выбор конкретной платформы (в настоящее время — репозиторий на гитхабе) — это скорее вопрос удобства, а не определения или же аутентичности проекта. На самом деле, мы уже не раз наблюдали, как разработка Биткоина переезжала с платформы на платформу и даже сменяла имя.- В начале 2009 года исходный код Биткоина представлял собой простой файл .rar, размещенный на SourceForge. Первые разработчики просто обменивались патчами с Сатоши по электронной почте.
- 30 октября 2009 года Sirius (Марти Мальми) создал репозиторий для разработки Биткоина на SourceForge
- В 2011 году проект переехал с SourceForge на GitHub
- В 2014 году проект был переименован в Bitcoin Core.
Не доверяй никому
Хотя в репозитории на гитхабе некоторые разработчики имеют статус “дежурных”, имеющих полномочия добавление кода в основную ветвь — они скорее занимаются техническим обслуживанием репозитория, а не контролируют его.Если бы любой желающий мог добавлять код в основную ветку, проект очень быстро превратился бы в хаос. Bitcoin Core следует принципам наименьших привилегий: любые полномочия, предоставляемые отдельным лицам, легко отзываются, если ими злоупотребляют.
Core открыто публикует важный список, содержащий PGP-ключи, которыми можно подписывать слияния кода (merge commits). Но мораль скорее заключается в том, что гитхабу доверять нельзя! Даже команда Bitcoin Core не знает всех людей, которые могут внести изменения в репозиторий — таких, наверное, целая дюжина среди сотрудников гитхаба.
С точки зрения безопасности, гитхабу доверять нельзя. Любой сотрудник гитхаба может воспользоваться своим служебным положением и вставить код в репозиторий без ведома дежурных. Но маловероятно, что такой злоумышленник также сможет завладеть PGP-ключом дежурного разработчика Bitcoin Core.
Bitcoin Core не сводит вопрос надёжности кода к безопасности аккаунтов на гитхабе, поэтому он использует систему непрерывной интеграции, проверяющей PGP-ключи доверенных лиц, которые должны подписывать каждое слияние кода.
Хотя все знают, кто владеет этими ключами, все-таки небезопасно предполагать, что так будет всегда — ключ могут украсть, и мы не сможем об этом узнать до тех пор, пока его владелец не уведомит об этом других дежурных. Таким образом, ключи для слияния кода также не гарантируют идеальную защиту; они просто усложняют задачу добавления произвольного кода злоумышленником.
Многоуровневая безопасность
Целостность кода Bitcoin Core не должна зависеть только от нескольких криптографических ключей, поэтому есть и множество других проверок. Для обеспечения серьёзной защиты создано множество уровней безопасности:Безопасность пул-реквестов
- Абсолютно любой желающий может свободно предложить изменения, улучшающие код проекта, открыв свой пул-реквест в репозитории bitcoin/bitcoin.
- Разработчики проверяют пул-реквесты, чтобы убедиться, что они не являются вредоносными. Любой желающий может свободно просматривать пул-реквесты и высказывать свое мнение о них — для участия в Bitcoin Core не нужно проходить проверки или сдавать экзамены. Если пул-реквест доживает до момента, когда разумных оснований не добавить его в основную ветку больше нет, дежурный выполняет слияние.
- Дежурные разработчики Bitcoin Core установили скрипт, предотвращающий случайное выполнение слияний кода в репозитории, если их ещё не подписали.
- Иногда такие слияния датируются с помощью OpenTimestamps.
- Travis Continuous Integration system (система непрерывной интеграции Travis — прим. перев.) регулярно запускает скрипт для проверки аутентичности истории разработки и с целью проверки подписей всех слияний основной ветви разработки: они должны соотноситься с одним из доверенных PGP-ключей.
- Любой желающий может запустить скрипт для проверки PGP-подписей всех слияний после декабря 2015 года. Я сам запустил его во время написания этой статьи, и на моем ноутбуке он всё проверил за 25 минут.
Безопасность релизов
- Время от времени несколько разработчиков независимо друг от друга запускают системы воспроизводимой сборки Gitian, чтобы убедиться в том, что на выходе получаются идентичные исполняемые файлы. Если кому-то удается создать сборку, не совпадающую со сборками других разработчиков, это признак того, что в ней замечен невоспроизводимый компонент — тогда релиз откладывается. В таком случае разработчики отслеживают причину расхождений, исправляют ее и затем собирают другого кандидата на релиз. Как только детерминированная сборка успешно завершается, разработчики подписывают результат, тем самым гарантируя, что получившиеся исполняемые файлы и использованные для их сборки инструменты чисты, и что они собраны из одного и того же источника. Этот метод позволяет обезопасить процесс сборки и распространения исполняемых файлов. Любой пользователь, имеющий соответствующие навыки, может запустить свою собственную систему сборки.
- Как только сборки Gitian успешно завершаются и подписываются сборщиками, один из дежурных Bitcoin Core подписывает своим PGP-ключом сообщение, содержащее sha256-хэш каждой сборки. Если вы хотите запустить предварительно собранные исполняемые файлы, после загрузки вы можете посмотреть их хэш, а затем проверить, находится ли этот хэш в подписанном дежурными сообщении.
- Код всех вышеперечисленных действий открыт и доступен каждому — любой, владеющий достаточными навыками и желанием, может лично его проверить.
- После прохождения всех вышеперечисленных проверок качества и аутентичности код попадает в Bitcoin Core и в конечном итоге уходит в релиз, но никто не насаждает его Биткоин-нодам в принудительном порядке. Каждый оператор Биткоин-ноды сам принимает осознанное решение обновить установленный у себя код.
Кто контролирует Биткоин?
Полностью понять биткоин как систему практически невозможно. Определение протокола биткоина подобно определению языка. Языки развиваются органически: слова со временем сами обретают своё значение, а не берут его из словарей. Так же как словари описывают язык, а не определяют его, так и программные реализации биткоина описывают язык биткоина с помощью кода. Никто не обязан соглашаться с определением данного слова в словаре, равно как и не обязан соглашаться с кодом в данной программной реализации биткоина, запуская его.Языками не управляет демократия, и точно так же она не управляет биткоином. Несмотря на это, постоянно можно слышать, как люди ссылаются на майнеров, нод, разработчиков или пользователей, которые могут “голосовать” за что-то — но на самом деле механизма, который бы заставил меньшинство принять изменения, за которые проголосовало большинство, не существует. Биткоин — это анархия: без правителей, но не без правил. Правила определяются и применяются отдельными участниками сети.
Хотя изменения в сам протокол биткоина обычно вносятся через так называемые Bitcoin Improvement Proposal, даже это всего лишь рекомендуемая и самая распространённая практика, и никто не обязан ей следовать. Это просто более формализованный способ рассмотрения предложенных участниками изменений: сначала они подвергаются экспертной оценке, а затем должны получить всеобщее одобрение.
Как бы трудно ни было это объяснить или понять, здесь и заключается важный аспект “антихрупкости” Биткоина: если бы существовала единственная точка контроля — она же бы и была главным уязвимым местом, на которое могли бы надавить структуры, которым биткоин угрожает. В конечном счете, каждый оператор ноды сам себе начальник в том смысле, что он лично следит за тем, чтобы никто в сети не нарушал правил, которые он считает верными. Эта модель безопасности — основа управления биткоином, которая строится по принципу “снизу вверх”.
Последнее редактирование модератором: