Юта Стайнер: как узнать, что Эфириум безопасен?



Я пишу эту статью, сидя в лондонском офисе и размышляя, как дать хороший обзор о работе, которую мы проводим над безопасностью протоколов Эфириума, его клиентов и сообщества p2p. Как вы, возможно, помните, я присоединилась к команде разработчиков Эфириума в конце прошлого года для организации аудита безопасности. По прошествии весны и начала лета мы провели несколько аудитов, и сейчас самое время поделиться некоторыми результатами инспекции мировой компьютерной комнаты. 😉
Довольно ясно, что так же как обслуживание клиентов является процессом тщательной разработки и развития продукта, это волнующие и между тем в значительной степени трудные исследовательские усилия. Последний из двух является причиной, почему даже самый хорошо спланированный график нужно менять, как только мы узнаем больше о проблемной области.
Аудит безопасности начался в конце прошлого года с разработки основной стратегии с целью обеспечения максимальной безопасности Эфириума. Как вы знаете, наш процесс разработки больше зависит от безопасности, чем от графика. 

Учитывая это, мы составили многоступенчатый подход к аудиту, состоящий из

  • Анализа новых протоколов и алгоритмов, разработанных завоевавшими прочную репутацию исследователями блочных цепей и компаниями, специализирующимися на безопасности программного обеспечения. 
  • Сквозной аудит протоколов и внедрения под руководством мировых экспертов в области безопасности (Go, за ним следует С++ и базовый аудит для учебного клиента Python), а так же 
  • Программы bug bounty

Анализ новых протоколов и алгоритмов закрывает такие темы как безопасность:

  • «Газовой» экономики 
  • Недавно разрабатываемой задачи ASIC-защищенных доказательств проделанной работы, а так же 
  • Экономической мотивации элементов майнинга. 

Широкомасштабный аудит компонента при участии большого количества пользователей стартовал около Рождества вместе с нашей программой bug bounty. Мы зарезервировали 11-значную сумму сатоши для поощрения людей, которые нашли баги в нашей коде. Мы получили очень качественные заявки для блога программы bug bounty, и «охотники» получили вознаграждение. Программа bug bounty до сих пор работает, и мы нуждаемся в последующих заявках, чтобы использовать до конца заявленный бюджет…
Первый главный аудит безопасности (касающийся газовой экономики и PoW) начального уровня стартовал в январе и продолжался до конца зимы. Нам очень приятно, что мы договорились с большинством наших внутренних аудиторов, что эти аудиторские отчеты будут доступны публике как только аудит и работа над ошибками будет завершена. Так что вместе с этим постом в блоге, мы можем с радостью представить вашему вниманию аудиторский отчет начального уровня и сопровождающий его пост в блоге. Вдобавок этот отчет содержит полезные рекомендации для разработчиков ÐApp, которые помогут обеспечить безопасную программную структуру и внедрение контрактов. Мы надеемся опубликовать следующие отчеты, как только они станут доступны.
Мы также привлекли другую компанию, занимающуюся безопасностью программного обеспечения, в начале года, чтобы обеспечить аудиторский охват внедрения Go. Данная повышенная безопасность, которая начинается с многочисленных клиентов, и как Gav упомянул в его предыдущем посте, мы также решили дать Python и С++ аудит для упрощенного аудита безопасности, который стартует в начале июля. С++ код получит полный аудит сразу после этого. Основная цель этого подхода — предоставить аудит нескольких доступных клиентов максимально быстро в процессе релиза.
Мы начали с самого охватывающего аудита для Go клиента, также известного как «сквозной аудит» в феврале с однонедельным семинаром, который продолжился неделями регулярных проверок и еженедельными аудиторскими отчетами. Аудит был вставлен в комплексный процесс баг трекинга и фиксинга, управлялся и досконально выкладывался на Github Густавом с Кристофом и Димитрием, который писал код для соответствующих необходимых тестов.
Как и подразумевается в названии, сквозной аудит был нацелен на покрытие всего (от сетевой конфигурации до Эфириум VM, с синхронизации слоя до PoW), чтобы как минимум один аудитор провел перекрестную проверку многочисленных внутренних слоев Эфириума. Один из консультантов недавно суммировал ситуацию вкратце: «Если быть честным, то необходимость тестирования Эфириума более сложно, чем что-либо, с чем я сталкивался раньше». Как сообщил Gav в своем последнем посте в блоге, из-за важных изменений в сетевой конфигурации и стратегии синхронизации мы в итоге решили ввести в действие последующий аудит работы Go, который мы почти закончили на этой неделе. Сейчас проходит сквозной С++ и базовый аудит Python.
Аудит с последующим исправлением багов и регрессионным тестированием так же как связанный с этим рефакторинг и переработка (системных конфигураций и синхронизирующего слоя) составляют основную часть работы, которая заставляет программистов напряженно трудиться сейчас. Таким образом, исправление находок, переработка и регрессионное тестирование стали причиной задержки сдачи. Вдобавок, Олимпийская стадия тестирования научила нас многому в способности к восстановлению в разных сценариях, таких как медленная связь, плохие пиры, странно ведущие себя пиры и устаревшие пиры. Самым большим испытанием на сегодняшний день было сражение и восстановление после создания дочернего потока. Мы научились многому после попыток восстановления относительно требуемых процессов, когда дело доходит до такого типа сценариев и инцидентов.
Не сюрприз, что различные аудиты представляют значительные затраты – и мы думаем, что эти деньги не могли быть лучше инвестированы.
Чем ближе к релизу, тем более детально мы думаем о безопасности и надежности, в частности, учитывая полезный опыт анализа критических проблем, найденных в Олимпийском тест релизе. Мы очень признательны за энтузиазм и качественную работу, которую аудиторы уже проделали. Их работа помогла нам отточить детализацию в Yellow Paper, устранить неточности и исправить несколько трудноуловимых проблем. Они помогли идентифицировать множество ошибок внедрения.


Автор: Юта Стайнер, 7 июля, 2015.


Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s