Конец эпохи закрытого кода: скрытность никогда не была безопасностью

Bitcoin Magazine
Конец эпохи закрытого кода: скрытность никогда не была безопасностью
Несколько дней назад люди, делавшие всё правильно, потеряли свой Bitcoin. Они купили авторитетный аппаратный подписчик, сгенерировали сид офлайн через устройство и доверились ему выполнить единственную задачу, для которой подписчик существует: сгенерировать число, которое никто другой не угадает. Coldcard не справился.
Препроцессорный guard-условие проверял не то: генерация сида тихо маршрутизировалась на слабый программный PRNG (генератор псевдослучайных чисел) MicroPython’s Yasmarang вместо аппаратного источника энтропии. На некоторых моделях эффективная энтропия сжималась примерно до 40 бит. Баг появился в прошивке в марте 2021 года и пять с лишним лет пролежал в открыто читаемом коде. Злоумышленники выметали 500 адресов прежде, чем кто-то понял, почему; в течение дней подсчёт Galaxy Research достиг 4 585 адресов и почти $90 миллионов. Атака на дату написания статьи продолжается.
Рабочая гипотеза Coinkite, поддержанная большинством в X: кто-то использовал ИИ для прочёсывания общедоступной прошивки в поисках бага. Даже если нынешний злоумышленник нашёл его иначе — следующий воспользуется именно так. Пока за несколько недель до кражи проводился ИИ-аудит, он ничего не нашёл (возможно, из-за ограничений модели или из-за специфики поиска). С начала атаки исследователи показали: несколько моделей класса frontier обнаруживают тот же дефект за минуты по единственному промпту. Код пролежал открытым пять лет — ни один человек его не поймал.
Coinkite переключилась с лицензии свободного ПО на source-available (MIT с Commons Clause) после того, как Foundation Devices использовала код в конкурирующем продукте. Читать исходник можно было, строить бизнес — нет. Это ничего не изменило. Баг жил в коде, который машина могла читать вне зависимости от того, что разрешала лицензия; он появился именно в переписи, которая убрала последний GPL-код. Смена лицензии не повысила защиту — она лишь изменила экономику поиска бага.
В эпоху высококвалифицированного ИИ всё, что распространяется, читаемо — или вскоре станет таковым. Разберите бинарник символов, прогоните через декомпилятор — и получите псевдо-C, который встречает любого, открывшего Ghidra. Нечитаемо для большинства людей. Именно этот высокий барьер и был всей «ценностью безопасности» закрытого кода.
Скомпилированная программа не может не говорить правду: зашифрованный код не может выполняться. В момент исполнения процессор должен получить реальные инструкции — а значит, программа в точности описывает машине, как делать то, что она делает. Вся информация есть в машинном коде. Обфускация не убирает её и не может убрать.
Если чтение бинарника кажется слишком сложным для машин в ближайшем будущем — оцените это рядом с тем, что машины уже делают с куда более сложными задачами. Чтение бинарника — это анализ: все факты перед вами, задача — извлечение. Математические открытия требуют иного порядка сложности — объекта, которого никто никогда не видел. 20 июля в 02:19 UTC математик Левент Алпёге, работающий с Claude Fable 5 от Anthropic, опубликовал контрпример к гипотезе Кёллера о Якобиане — задаче, открытой с 1939 года и входящей в список вызовов XXI века Стивена Смейла. Поколения пробовали. Опровержение — три многочлена от трёх переменных. Lean верифицировал его в течение нескольких часов, и оно достаточно коротко, чтобы любой мог проверить его в системе компьютерной алгебры примерно за минуту.
Якобиан пал за один вечер, пока, судя по всему, автор смотрел финальный матч Чемпионата мира по футболу. В мае модель OpenAI опровергла гипотезу Эрдёша о единичных расстояниях (открыта с 1946 года); в конце июля за четыре подсказки пала гипотеза по теории графов, державшаяся 30 лет; между ними — опровержение якобиана и ряд других результатов, простоявших десятилетиями.
Поставьте этот темп рядом со скромной задачей чтения машинного кода, уже лежащего в интернете. Сегодня модели лучше работают с исходниками и выводом декомпилятора, чем с сырыми байтами, — поэтому полностью закрытый бинарник сохраняет тонкое преимущество. Это преимущество — ценовой бампер, и он стирается с той же скоростью, что вы наблюдаете повсюду. Ставить безопасность на то, сколько он продержится, значит ставить против часов, которые только ускоряются.
Та же самая возможность, которая находит ваш баг энтропии, читает ваш проприетарный метод. Это тихая жертва, затрагивающая компании, которые никогда не думали о своей подверженности рискам открытого кода. Коммерческая тайна в поставляемом ПО всегда была лишь скрытостью в деловом костюме. Закон так говорит с тех пор, как существует право на коммерческую тайну: обратная разработка законно приобретённого продукта — честная игра, поэтому секрет живёт лишь пока эта обратная разработка остаётся дорогостоящей. Когда стоимость извлечения падает до подписки и промпта, секрет, воплощённый в коде, который вы передаёте клиентам, перестаёт быть секретом.
Ничто из этого не делает открытый код автоматически безопасным. Heartbleed скрывался в наиболее широко используемой TLS-библиотеке два года — потому что видимость без финансируемого внимания ничего не находит. Бэкдор xz показал, что открытая модель вклада сама по себе является поверхностью атаки. Открытость покупает вам: рецензентов, которым разрешено смотреть; сборки, которые можно независимо воспроизвести и верифицировать; выход, когда вендор умирает или меняется; и признание того, что всё это произойдёт, нравится вам это или нет.
Теперь мы должны исходить из того, что каждую строку поставляемого кода прочитает кто-то злонамеренный, потому что так и будет. Защитник имеет одно структурное преимущество, которого у атакующего никогда не будет: время. Вы можете нацелить те же frontier-модели на свой код до релиза — в пространстве между коммитом и выпуском, пока атакующий ждёт бинарника, которого ещё не существует. Делайте свои сборки воспроизводимыми. Проектируйте систему на отказ в закрытое состояние, а доверенное ядро держите достаточно маленьким, чтобы один баг не забрал всё.
Для специфического бизнеса хранения Bitcoin ставки нещадны в той мере, в какой это не относится к другим областям, — ведь простое знание приватных ключей даёт владение. Баг энтропии оставил постоянные шрамы. Исправление генератора ничего не сделает с уже сгенерированными сидами; слабое ключевое пространство остаётся подлежащим выметанию навсегда, а раскрытие информации даёт атакующему рецепт. Мы видели это раньше. Уязвимость Milk Sad в инструменте libbitcoin explorer, bx, генерировала приватные ключи из 32-битного значения, а злоумышленники опустошали кошельки ещё до публичного раскрытия. Bitcoin никогда не доверял скрытности. Выбора между открытым и закрытым никогда не было. Был выбор между дисциплинированным и незащищённым.
Это гостевой пост Колина Кроссмана, контент-продюсера Fedi. Мнения выражены исключительно его личные и не обязательно отражают позицию BTC Inc или Bitcoin Magazine.
Эта статья впервые появилась в Bitcoin Magazine и написана Колином Кроссманом.
Источник: BitcoinMagazine
Новости в мире криптовалют
Случайная цитата о деньгах
"Финансовые рынки не могут правильно учитывать будущее - они вообще не учитывают будущего, они помогают сформировать его."















* для поиска по базе прокси просто вводите название страны, например: Россия, США, Таиланд