Читать «Цифровой журнал «Компьютерра» № 187» онлайн - страница 42

Коллектив авторов

Выводы неутешительны: в ближайшие 20 лет электростанции продолжат сжигать уголь, а воспроизводимые ресурсы будут использоваться лишь в качестве дополнения к этому основному источнику электроэнергии. Разрушительные аварии на атомных электростанциях не способствуют популярности такого способа производства энергии, и, скорее всего, такие станции и дальше будут выводиться из эксплуатации. Что же остаётся? Однозначного ответа всё ещё нет, зато пока ещё есть уголь.

Случайности третьего сорта: как плохая рандомизация опустошила кошельки пользователей Android

Евгений Золотов

Неделю назад Bitcoin-сообщество было растревожено серией наглых краж. Стало известно, что из нескольких кошельков, заведённых и используемых их владельцами на Android-устройствах, увели суммарно около полусотни BTC. В общем-то мелочь, ибо в переводе на доллары это примерно пять тысяч — ерунда на фоне многомиллионных ограблений, которыми нынче забавляются чёрные хакеры. Шум, однако, поднялся такой, что вмешаться в происходящее сочла необходимым даже Google. Причин тому несколько. Во-первых, мелкое воровство вскрыло фундаментальную недоработку в Android, поставившую под удар всех пользователей Bitcoin на этой платформе. Во-вторых, когда пыль улеглась, стало ясно, что пострадать могут и пользователи множества других Android-приложений, включая криптографические. Наконец, в-третьих, проблема не решена по сей день и в ближайшие годы будет висеть дамокловым мечом над андроидовской экосистемой.

Впрочем, давайте по порядку. Формальным началом этой истории стало появившееся 11 августа на сайте Bitcoin.org : биткойновые кошельки, сгенерированные с помощью Android-приложений, небезопасны. Чтобы понять причину, не нужно быть специалистом по виртуальным деньгам: достаточно вспомнить основы так называемого асимметричного шифрования, называемого также шифрованием с открытым ключом. Основано оно на использовании двух длинных чисел, одно из которых («открытый ключ») доступно всем (с его помощью можно, например, зашифровать сообщение, отправляемое владельцу ключа), другое («секретный ключ») хранится в тайне, поскольку нужно для расшифровки, постановки цифровой подписи и прочих операций, право выполнять которые имеет только владелец ключа.

Bitcoin-кошелёк — не что иное, как такие вот два длинных числа. Несколько упрощая, можно сказать, что первое — открытое — служит в качестве номера кошелька, а второе — секретное — в качестве ключа, который позволяет содержимым кошелька распоряжаться. Таким образом, чтобы злоумышленник смог вывести деньги из чужого кошелька, ему нужно знать второе число. Отгадать его подбором лучше даже не пытаться (256 бит). Но можно попробовать его вычислить, если владелец, скажем, переслав деньги пару раз, опирался на некачественный генератор случайных чисел. Дело в том, что для подписи каждой биткойн-транзакции используется секретный ключ в смеси с произвольным случайным числом. Если вместо случайного было дважды использовано одно и то же число, вычислить секретный ключ становится легче лёгкого.