Остававшийся последнее время в тени, бывший лидер разработчиков Биткоина Гэвин Андресен решил, наконец, заявить о себе. Хотя в последние месяцы Андресен проявлял определённую активность, участвуя в дебатах о размере блока Биткоина в Twitter, в течение всего прошлого года он никак не участвовал в сообществе разработчиков.
Тем не менее, это вовсе не означает, что этот выдающийся разработчик сидел сложа руки.
I'm looking for beta testers and collaborators for my Random Sanity Project: https://t.co/NEbpr1baqk
— Gavin Andresen (@gavinandresen) 1 мая 2017 г.
Проект ориентирован на повышение безопасности интернета при помощи проверки источников случайности, используемых организациями и частными лицами.
Внимание на Биткоин
Идея проекта Random Sanity Project (Проект случайной проверки) возникла не только из интереса Андресена к изучению языка программирования GO, но также в результате рассмотрения проблем, возникающих из-за отсутствия хаотичности в финансовых системах, подобных Биткоину.
«Конечно же, я не перестаю следить за Биткоином», - говорит Андресен, добавляя, что возможно он примет участие в анализе кода для нового предложения масштабирования DCG, однако писать новый код он не собирается.
«Биткоин является таким интересным проектом, так как у него повышенные требования к безопасности: в случае пробоя защиты люди потеряют свои деньги и сразу же отреагируют на это».
По словам Андресена, это отличается от перехвата или взлома электронной почты, при котором люди не сразу замечают изменения. Такую быструю реакцию можно было наблюдать при неудачах, основанных на генерировании некорректного числа в экосистеме Биткоина.
В мае 2015 года несколько пользователей лишились своих средств в результате уязвимости клиента Биткоина на Android. Уязвимость позволила создание дублированных адресов Биткоина, которые раздавались разным пользователям. Суть проблемы заключалась в генераторе случайного числа блокчейна, который предоставлял недостаточную хаотичность в определённые версии операционной системы Android.
За два года до этого, в августе 2013 года, все приложения кошельков Биткоина на Android подверглись потенциальному риску, когда одна за одной в генераторе случайного числа Java SecureRandom были обнаружены сразу несколько уязвимостей.
Соблюдение дистанции
Проект существенно отличается от того, чем занимался Андресен раньше.
«Пока я занимаюсь проектом один, и это мне нравится, - говорит Андресен, - Он интересный и простой. Я выбрал нечто небольшое и намеренно скучное.
Биткоин был крупным, сложным проектом, в котором участвовало множество людей со всего мира; в нём было слишком много стресса и политики, и я больше не хочу к этому возвращаться».
Андресен работает над Random Sanity Project уже шесть месяцев. По его словам, проект не будет коммерческим. В идеале он будет поддерживаться организацией наподобие Linux Foundation и предлагать свои сервисы бесплатно.
Так как же работает RandomSanity? Каждая система и каждый язык программирования имеют свои способы получения случайных байтов – например, в Linux есть специальная папка под названием '/dev/urandom' , а OpenSSL имеет несколько генераторов чисел (которые использует Bitcoin Core).
Пользователи Random Sanity Project могут брать эти случайные числа – от 16 до 64 байт – и использовать их в сервисе, получив в ответ 'true', если байты будут выглядеть случайно, или 'false', если это не так.
«Определить, являются ли ваши случайные числа достаточно случайными, довольно сложно», - говорит Андресен.
Проверка цифровой устойчивости
Хотя генераторы случайных чисел создаются специально для обеспечения хаотичности (отсутствия порядка, а, следовательно, и предсказуемости), существует множество причин для того, чтобы что-то пошло не так. Загрузки и обновления ПО могут спутаться со случайностью. Или же кто-то может наткнуться на виртуальную машину, использующую генератор случайного числа, и отключить её.
Однако наиболее распространённой ошибкой Андресен считает использование облачных компьютеров и одновременный запуск множества виртуальных машин.
В этом случае можно сохранить образ ПО и запустить несколько копий для интернет-серверов, обрабатывающих трафик. Поскольку виртуальные машины запускаются в одинаковом состоянии, по словам Андресена, они могут получить одинаковые «случайные» числа.
«Обычно имеются инструменты, повышающие хаотичность, поэтому такой ситуации не происходит. Однако проект [Random Sanity] мог бы стать хорошей проверкой».
Он не говорит, что через его инструмент нужно пропускать все цепочки байтов, но одну цепочку отправить туда не помешает, так как это позволит убедиться в генерировании разумной случайности.
Чем больше людей и компаний будут использовать систему, тем значимее станет проект, поскольку случайность сможет основываться на множестве цепочек байтов.
Бездоверительное направление
Одни пользователи Twitter хвалят сервис, другие обеспокоены архитектурой системы.
Так, в случае выхода из строя генератора случайных чисел, просмотр одной предположительно случайной цепочки данных может подвергнуть компанию атаке.
Андресен говорит: «Я пытаюсь сделать так, чтобы людям не нужно было мне доверять».
В настоящее время сервис функционирует в приложении AppEngine облачной платформы Google Cloud, следующий же проект Андресена ориентирован на обеспечение проверки третьих сторон. Сейчас люди могут проверять только открытый исходный код на GitHub, который, по словам Андресена, работает на AppEngine.