В теории, квантовые компьютеры достаточной разрядности позволят быстро вычислять дискретные логарифмы, а это означает, что сломаются распространённые сейчас криптосистемы электронной подписи, в том числе, ECDSA. На ECDSA основана работа современной версии криптовалюты Биткойн. ECDSA здесь используется для удостоверения транзакций, то есть, необходима для того, чтобы потратить средства, находящиеся на том или ином адресе. Для удостоверения транзакции требуется знать секретный ключ из пары, связанной с биткойн-адресом.
Биткойн-адрес является значением хеш-функции RIPEMD-160 от открытого ключа ECDSA. То есть, сама по себе возможность “обращать” ECDSA (быстро вычислять по известному открытому ключу секретный) не позволяет “ломать” произвольные адреса: для того, чтобы получить открытый ключ, нужно будет вычислить прообраз значения RIPEMD-160, а это трудная задача даже для квантового компьютера. Безопасный способ потратить средства состоит в использовании каждого биткойн-адреса для расходования биткойнов только один раз: транзакция разбивается на две части – одна отправляется на адрес получателя платежа, а вторая – на новый адрес, созданный для хранения остатка средств.
Операция расходования средств требует указания открытого ключа в явном виде: с его помощью другие участники сети проверяют валидность операции. Это означает, что для всякой новой транзакции возникает следующая угроза: атакующий, вооружённый квантовым компьютером, может перехватить транзакцию, быстро вычислить секретный ключ, и сгенерировать свою, подменную транзакцию, в которой самостоятельно распорядится средствами. Перехватить новую транзакцию нужно до того, как она будет включена в блокчейн и, вообще говоря, окажется в нём на глубине хотя бы в один блок. Проделать это реально, так как в P2P-сети Биткойн транзакции передаются в открытом виде. После того, как атакующий получил секретный ключ и сформировал свою подменную транзакцию, возможны два варианта: если есть возможность, то атакующий может заблокировать отправку оригинальной транзакции и заменить её на свою, в таком случае, контроль над средствами сразу достаётся ему; если заблокировать отправку транзакции не получается, то подменная транзакция может быть отправлена в сеть как “конкурирующая”, а это даёт большие шансы на успех атаки, так как майнеры могут принять подменную транзакцию первой, что приведёт к последующей отмене оригинальной, легитимной транзакции.
Схема проведения атаки довольно сложна (даже за вычетом того, что подходящих квантовых компьютеров пока ещё не существует) и требует работы в онлайн-режиме. Тем не менее, сама возможность лишиться всех средств при попытке выполнить любую транзакцию, вряд ли порадует пользователей: фактически, такая атака полностью уничтожает смысл биткойнов, в текущей редакции протокола. Об этом известно довольно давно, но решения пока что нет: подошла бы та или иная квантовостойкая схема электронной подписи на замену ECDSA, однако её выбор и внедрение в протокол представляют собой весьма и весьма непростую задачу.
Комментарии (2) »
Что бы там ни писали в СМИ, но анонимность не является необходимым свойством той или иной криптовалюты. Если в качестве примера взять биткоины, то там анонимности транзакций не предусмотрено. Отправитель и получатель средств не скрываются, адреса кошельков могут быть сопоставлены с пользователями Интернета через анализ информации о маршрутизации пакетов, содержащих транзакцию (IP-адреса и пр.). Транзакционный трафик легко обнаруживается, блокчейн – доступен всем в открытом виде. Но, естественно, анонимизировать транзакции в биткоинах – возможно. Но для этого нужно использовать дополнительные надстройки, не входящие в протокол криптовалюты (например, сеть TOR или ещё что-то подобное). Существование технологий анонимизации, работающих с открытым и неанонимным протоколом криптовалюты, означает, что эти технологии переносятся на любую криптовалюту, в том числе, и на централизованную, лицензированную. Это весьма интересная особенность. (Отмечу, что разрабатывались и разрабатываются действительно анонимные криптовалюты – не биткоин! – но подобные алгоритмы, пока что, не получили распространения.)
Посмотрим в этом контексте на другой механизм (ограниченной) анонимизации платежей, работающий и для биткоинов, – специальные перемешивающие прокси. Принцип довольно прост: прежде чем воспользоваться своими средствами, клиент системы перечисляет их на прокси-кошелёк, то же самое делает большое число других клиентов; средства, таким образом, объединяются, перемешиваются. Клиенты прокси имеют дополнительные аккаунты, позволяющие распоряжаться их частью перемешанных в общем кошельке средств. Платежи осуществляются из прокси-кошелька: анализ блокчейна не позволяет понять, кто именно из клиентов прокси произвёл данную транзакцию – в качестве источника записывается проксирующий кошелёк. Естественно, если известны логи прокси, то можно сопоставить входящие кошельки и аккаунты внутри прокси, деанонимизировав платежи. Поэтому данная схема не даёт сколь-нибудь сильной анонимизации, но, тем не менее, работает и скрывает персонализированные пути движения средств в публичном блокчейне.
Почему это интересно в плане регулирования? Вот почему: если некий “эмитент” запустил центральную криптовалюту, обставленную внешним регулированием, то внутри этой криптовалюты кто-то может организовать прокси-сервис, который работает по описанной выше схеме. Таким образом, система, казавшаяся прозрачной, получит непрозрачный элемент. Естественно, сервис-прокси может быть быстро выявлен и заблокирован – у нас же криптовалюта имеет центральное управление, а это означает, что транзакции с конкретного адреса можно легко “перекрыть” (вот средства вернуть – уже сложнее, но это другая история). Тут-то и начинается самое интересное: оказывается, для обеспечения работы системы, которую продвигали как “дешёвую и самодостаточную”, требуется внутренний аудит и служба безопасности, выявляющие “отклонения” – в противном случае система быстро перестаёт соответствовать ключевым заявленным требованиям, например, вдруг становится анонимной.
Комментарии (2) »
Основа практической работоспособности криптовалюты Биткоин – вычислительная мощность сети узлов-майнеров, которые вычисляют заголовки блоков. Если посмотреть на статистику по текущему распределению (предполагаемому) мощности сети на сайте blockchain.info, то нетрудно подсчитать, что около 60% этой мощности контролируют китайские пулы (AntPool, F2Pool и BTCC Pool). (Пулы – это объединения майнеров, действующих согласованно, и делящих полученную от майнинга биткоин-прибыль.)
Вообще, согласно протоколу, 60% мощности позволяют полностью контролировать сеть и, соответственно, саму валюту. Это довольно интересное положение дел. Пока, впрочем, каких-то активных контролирующих воздействий не заметно, ну, кроме странной ситуации вокруг увеличения размера блока (то есть, грубо говоря, увеличения числа транзакций, проводимых сетью в единицу времени).
Комментарии (4) »
Ещё одно небольшое наблюдение про биткоины в реальности. Блокчейн (blockchain), в котором сохраняются записи о том, с какого адреса на какой ушли биткоины, работает потому, что участники системы согласились его признавать источником информации о расчётах. Да, для достижения консенсуса используется специальный протокол. Кроме того, чтобы предотвратить неконтролируемый “развал” системы, для “вступления” в блокчейн требуется провести вычислительную работу (потратить ресурс). Но в основе всё же идея о том, что участники системы договорились признавать некий вымышленный (виртуальный) объект – блокчейн, – и проводят обмен реальных предметов (еды, скажем) на виртуальные записи из этого объекта.
Занятно, что так же работают и современные валюты: здесь люди, участники системы, договорились между собой признавать банкноты (фактически – бумажки) и обменивать реальные предметы на эти бумажки. Точнее будет сказать: что людей убедили признавать банкноты, так как данная система оказалась очень удобной и позволила расширить возможности по взаимодействию и обмену (в случае с блокчейном – убеждение тоже играет важную роль). Система работает до тех пор, пока все участники признают банкноты (“верят в бумажки”).
Некоторая проблема с биткоинами в том, что “поверить” в них для рядового пользователя несколько сложнее – бумажку можно подержать в руках, а блокчейн совсем виртуальный. Хотя, это, возможно, и не проблема вовсе. Особенно на фоне активного вытеснения наличных денег из расчётов.
Комментарии (2) »
В начале июля с биткоинами приключилась интересная и показательная история, последствия которой до сих пор дают о себе знать. Вот что произошло. В начале года предложили модификацию протокола (BIP66), которая изменяет требования к формату записи значения электронной подписи, используемой при проведении транзакций. Новые блоки, поддерживающие изменённый формат, должны иметь версию 3. Так как это существенное изменение, оно вводится согласованно, а именно: если из предыдущих 1000 блоков 950 имеют версию 3, то новые блоки, имеющие старую версию 2, считаются невалидными (не соответствующими протоколу). Или, другими словами, в блокчейне (цепочке Blockchain) должен появиться отрезок, на 95% состоящий из блоков новой версии, после этого блоки, имеющие старую версию, не принимаются, соответственно, если большинство узлов-майнеров следуют протоколу, цепочка должна мягко перейти на новую версию.
Но на практике случился занятный сбой. Некоторые майнеры, достаточно мощные пулы, приступают к вычислению нового блока без проверки параметров предыдущего блока, к которому они планируют пристроить новый. Эти майнеры генерируют блоки версии 3, но сами не проверяют, что предыдущий блок также является блоком версии 3. Собственно, они вообще ничего не проверяют, так как в погоне за скоростью начинают вычислять свой блок, как только увидят значение хеша для нового блока, только что включённого в блокчейн. При этом значение хеша они получают через тот или иной API, предоставляемый специальными серверами крупных майнинг-пулов, а не используют штатную P2P-сеть Биткоин. Естественно, значение хеша в принципе не позволяет понять, что за версия у предыдущего блока. (Такой метод майнинга, – SPV-майнинг, – кроме прочего, подразумевает, что в блок скорее всего не будет включено пользовательских транзакций, кроме транзакции, зачисляющей новые биткоины на адрес майнера.)
После того, как цепочка блоков достигла требуемого интервала в 95% блоков новой версии, небольшой майнинг-пул опубликовал новый блок, который только что вычислил. Этот майнер использовал необновлённое программное обеспечение, поэтому он добавил в блокчейн блок версии 2 (этот блок можно увидеть на сайте blockchain.info). Всё бы ничего, но торопливые майнеры, без проверки, быстро пристроили к этому блоку ещё пять, создав ветвление блокчейна: так как породивший ветку блок второй версии не должен был быть включен в блокчейн (из-за нарушения протокола), другие майнеры продолжали строить блокчейн от предыдущего блока. Это ветвление приключилось 4 июля 2015 года. Позже, невалидные блоки были вытеснены основной веткой, которая обогнала сбойный участок по сложности (протокол биткоин предписывает добавлять новые блоки в ветку с максимальной суммарной сложностью). Однако транзакции, попавшие в сбойную ветку оказались отменены, а ресурсы, потраченные на вычисление блоков – потеряны.
Длинный форк (в шесть блоков) означает, что транзакции, оказавшиеся на достаточной глубине, могли быть приняты как совершившиеся – многие ждут только два-три блока, чтобы признать транзакцию. (Впрочем, в случае форка от 4 июля, блоки, добавленные сверху дефектного – пусты, не содержат транзакций, кроме одной, создающей новые биткоины; всего же в форк попало 98 пользовательских транзакций, все – в первом, заведомо невалидном, блоке.)
Аналогичный форк приключился и 5 июля. Но в этот раз в верхнем блоке невалидной ветки оказалось 1597 пользовательских транзакций. (И кто-то мог успеть принять их за совершившиеся, так как тщательную проверку блокчейна на достаточную глубину проводят не все программы.)
Вот так человеческий фактор и неверное управление доверием, – когда новый протокол принимают, но не проверяют присланные блоки на соответствие, – едва не привели к весьма большим неприятностям для биткоинов. Можно, кстати, услышать, что 4-5 июля эта криптовалюта избежала катастрофы, но это, всё ж, преувеличение.
Комментарии (1) »
Про то, что биткоины появились с некоторой дополнительной, “неплатёжной”, целью, приходится слышать нередко. Чуть чаще говорят, что вычислительная мощность узлов, составляющих сеть этой распределённой платёжной системы, очень велика и может быть использована для криптологических задач. На правах технократического юмора (весьма занудного, конечно) процитирую свою заметку из Facebook:
Попробовал придумать, как всесильное АНБ могло бы использовать вычислительную мощность сети биткоин (которую, в таком случае, агентство само и продвигает, незаметно) в своих целях. Напомню, что майнеры биткоинов вычисляют SHA-256, подбирая аргумент под заданное значение. Результат SHA-256 от входного сообщения (заголовка блока транзакций) должен быть меньше заданного в сети числа. Подбор заголовка и составляет сложность. Казалось бы, какой от этого толк криптологии?
Сформулировал такой заговор: АНБ известна некоторая оптимизация, позволяющая находить произвольные коллизии SHA-256; но для практического использования этой оптимизации требуется знать некоторое число “особых точек” – блоков данных, для которых результат SHA-256 меньше порогового значения. Данная теория, кстати, не выглядит математически абсурдной. Множество найденных “особых точек” позволяет АНБ построить радужную таблицу, на которой и заработает их секретная оптимизация SHA-256. Так как денег в бюджете не хватило (мало ли – может, ушли на строительство), решено было запустить в эти интернеты криптовалюту, протокол которой привязан к вычислению “особых точек”, да ещё и устроен таким образом, что результаты автоматически публикуются через Сеть, с резервированием (удобно собирать). При этом нужное АНБ пороговое значение достаточно мало, но и протокол устроен так, что мощность сети наращивается постепенно, а на основе этого роста корректируется и цель сети (Target), которая всё ближе и ближе к полезному для АНБ результату.
Тут особенно занимательно, что в таком случае сеть сама постепенно выходит на нужную мощность – так устроен протокол: награда за майнинг мотивирует к увеличению мощности майнера, а такое увеличение сдвигает пороговое значение сложности.
Comments Off on Техноюмор: АНБ и вычислительная мощность биткоин-сети
Сейчас начинают появляться сообщения в СМИ, что концепция с общим журналом действий (главной книгой), аналогичным Blockchain от криптовалюты Биткоин, может быть взята на вооружение “прогрессивными банками”. Это забавно, потому что сам протокол и инфраструктура биткоинов – изначально направлены на то, чтобы банк, как третье лицо, не фигурировал в платёжной системе. Совсем не фигурировал. То есть, банку там просто нет места, хотя, теоретически, он может выступать держателем основных вычислительных мощностей в системе криптовалюты, но такая конфигурация начисто вымывает весь смысл затеи. Про то, как работают биткоины, я подробно писал раньше.
Comments Off on Blockchain, банки и Биткоины
Я уже писал про выдуманную кем-то анонимность платежей биткоинами и про то, как работает эта “криптовалютная” платёжная сеть. Замечу, что официально (если только тут применимо это понятие) биткоины никогда не назывались анонимной системой: напротив, всегда прямо говорилось про отсутствие анонимности в протоколе. При этом, особенности протокола, а также наличие самой P2P-сети, состоящей из многих узлов, без которых глобальная работа системы была бы невозможна, гарантируют, что даже если пользователь применяет некие средства анонимизации – при работе с биткоинами степень защиты его анонимности значительно снижается.
Это так просто потому, что платёжные транзакции – уникальны, отмечаются специальным образом в общем реестре и тщательно привязываются ко времени, а также к другим транзакциям (порядок транзакций – фундаментальный момент протокола). Подобная систематизация следов обязательно снижает степень анонимности, делает деанонимизацию более простой. Многие эффективные методы деанонимизации основываются на построении цепочки следов, упорядоченных по времени. Следами могут быть и посещения сайтов, и отправка сообщений электронной почты, что угодно. Построенные цепочки сопоставляются с дополнительной информацией. Из-за того что такие цепочки обладают высокой уникальностью (даже последовательность просмотра сайтов, да), они помогают привязать другие данные, другие следы, к конкретному пользователю. Это вообще один из ключевых методов деанонимизации, известный с давних пор, ещё до появления Интернета. В случае же с биткоинами, подобная цепочка, отсортированная по времени и подтверждённая многими узлами, является обязательным элементом протокола – то есть, её даже строить не нужно: бери и используй.
Comments Off on Реплика: анонимность биткоинов, ещё раз
Нашумевший недавно Outernet – представляет собой довольно наивный проект: сотни низкоорбитальных микроспутников транслируют на землю некий контент, связанный с Интернетом, да так, что этот контент могут принимать даже смартфоны, используя штатный канал WiFi. Схема работает наподобие радиостанции – в одну сторону. То есть, это никакой не “бесплатный WiFi-доступ к Интернету”, как поспешили написать многие СМИ.
Очевидно, что приём смартфоном полезных данных из сигнала WiFi, исходящего с борта кучи быстро движущихся микроспутников, за сотни километров, из космоса, через ионосферу – это, пока что, фантастика. Можно было бы предположить, что орбитальный сигнал смогут принимать модифицированные точки доступа WiFi, оснащённые дополнительными антеннами, но и такой вариант представляется труднореализуемым для массового потребителя.
Интересно, что, помимо прочих слов, на страничке с описанием проекта сказано, что планируется трансляция Blockchain из сети Биткоин. Blockchain позволяет проверять биткоин-транзакции (подробности – в отдельной заметке про биткоины). Однако центральная трансляция Blockchain противоречит основным принципам хождения биткоинов. Предполагается, что через Outernet данные достигнут тех жителей Земли, которым подключение к Интернету недоступно. То есть, спутниковая трансляция будет для них единственным источником Blockchain, соответственно, в него можно включить какие угодно транзакции, сделав ответвление от основной цепочки. Смысл теряется. Ну и, понятно, осуществить транзакцию без связи с Интернетом – всё равно не выйдет, так что особой практической пользы в такой трансляции нет.
(А вообще, спутниковые трансляции могут оказаться полезным источником особого программного обеспечения для граждан. Но это другая история.)
Комментарии (2) »
На фоне отрицательных отзывов государственных финансовых регуляторов о биткоинах, курс стремительно падает – уже ниже $700. Впрочем, подобные колебания были и раньше. Падение курса грозит ещё большими потерями прибыли тем, кто купил дорогой специализированный майнер- параметры окупаемости сильно ухудшаются, даже в том случае, если вычислительная мощность сети не будет расти быстро.
Худший вариант – падение курса и встречный рост сложности (то есть, вычислительной мощности). При таком раскладе не только скорость поступления новых биткоинов для владельца конкретного майнера уменьшается, но вместе с тем падает и стоимость этих биткоинов в традиционной валюте. Кстати, тут не так важно, покупался майнер за биткоины или, скажем, за доллары США – понятно, что потраченные биткоины можно было вместо майнера обменять по выгодному курсу на товары и услуги.
Может показаться, что рост мощности сети должен бы тормозить падение курса обмена: новые биткоины вводятся в оборот в ограниченном количестве, соответственно, потратившиеся на майнинг участники сети, которых должно быть немало, не заинтересованы в продаже биткоинов по совсем низкому курсу. Проблема в том, что на курс активно влияют такие факторы, как заявления государственных комиссий и уполномоченных органов. Биткоины привязаны к офлайну через обмен, соответственно, если такой обмен запрещён, курс обязательно резко падает, вне зависимости от мощности сети. Если в майнинге участвует большое число людей, то среди них будет достаточно тех, кто пожелает побыстрее избавиться от потенциально нелегальных “денежных суррогатов” – и, соответственно, сдаст их по минимальной цене.
Интересно, что низкий курс и запрет оборота должны вызвать спад интереса к майнингу, что приведёт к падению мощности, снижению сложности, а в конечном итоге – к тому, что мощные майнеры станут зарабатывать больше биткоинов в единицу времени. Но если биткоины стоят по десять центов, а обмен сопряжён с большими трудностями, то какой от них толк? А кроме того, снижение числа владельцев вычислительной мощности даёт новые возможности для захвата сети сильным игроком.
В общем, продолжаем следить, чем закончится история сети Биткоин.
Комментарии (1) »
В декабре прошлого года я написал о том, сколько может стоить захват сети Биткоин. Тогда вычислительная мощность сети оценивалась в 9500 терахэшей в секунду. Для захвата требовалось закупить такую же мощность. Занятно: мощность растёт настолько быстро, что сейчас сеть уже в два раза мощнее – около 20000 терахэшей в секунду. Так что за минувшие полтора месяца кто-то явно уже закупил нужные мощности. Конечно, не факт, что они имеют координированное управление. Теперь стоимость захвата управления подросла, в два раза. Интересно, как данная пирамида будет строиться дальше.
Comments Off on Рост вычислительной мощности сети Биткоин