[Перевод] Генезис-файлы. Часть II: Hashcash или как Адам Бэк разработал сердце Биткоина

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

Взгляд на то, как технология, лежащая в основе Hashcash — Proof of Work (доказательство проделанной работы) — будет задавать направление исследованиям в области цифровых денег на протяжении более чем десятилетия.

Изначально перевод появился на сайте 21ideas:  https://21ideas.org/gf/genesis-2/

[ОБЪЯВЛЕНИЕ] о реализации hash cash как механизма оплаты рассылки почты

28 марта 1997 года около 2,000 подписчиков списка рассылки шифропанков получили электронное письмо с приведенным выше заголовком. Его отправителем был 26-летний британский аспирант Эксетерского университета, молодой криптограф и активный участник списка рассылки шифропанков Адам Бэк. В письме содержится описание и ранняя реализация того, что он называет «схемой почтовой пересылки на основе частичного совпадения хэшей» — своего рода эквивалент марки для электронных писем, основанный на интересном криптографическом трюке.

«Идея использования частичного совпадения хэшей заключается в том, что их можно сделать произвольно дорогими для вычисления и при этом они могут быть проверены мгновенно.»

Это предложение криптографа, который впоследствии стал генеральным директором Blockstream, не сразу привлекло должное внимание участников списка рассылки; только один читатель ответил на него, задав технический вопрос о выбранном алгоритме хэширования. Тем не менее, технология, лежащая в основе Hashcash — Proof of Work — будет определять направление развития исследования в области цифровых денег в течение еще более десяти лет.

«Ценообразование через обработку или борьба со спамом» #

Hashcash Бэка на самом деле не был первым решением такого рода. К началу 1990-х годов перспективы интернета, и в частности преимущества электронной почтовой системы, стали очевидны для технарей, обративших на это внимание. Тем не менее, пионеры интернета того времени осознали, что у электронной почты хватало своих проблем.

«Простота и низкая стоимость отправки электронной почты и, в частности, простота отправки одного и того же сообщения многим получателям, практически побуждают к злоупотреблению», — поясняли исследователи IBM доктор Синтия Дворк и доктор Мони Наор в своем документе под названием «Ценообразование через обработку или борьба со спамом» в 1992 году.

Действительно, по мере роста популярности электронной почты росли и объемы спама. По мнению первых пользователей интернета, было необходимо решение — и решение это было предложено в документе Дворк и Наора. Дуэт предложил систему, при которой отправители должны будут прикреплять некоторые данные к любому отправленному ими электронному письму. Эти данные были бы решением математической задачи, уникальной для данного письма. В частности, Дворк и Наор предложили три головоломки, которые можно было бы использовать для этой цели. Все они основаны на криптографии с открытым ключом и схемах подписи. Добавить решение в электронное письмо будет не слишком сложно, в идеале для этого потребуется всего пара секунд работы обычного компьютера, а его достоверность может быть легко проверена получателем. Но, в чем и заключался фокус, даже ничтожное количество вычислительной мощности на одно электронное письмо приумножается для рекламодателей, мошенников и хакеров, пытающихся отправить тысячи или даже миллионы сообщений одновременно. Спам, как гласит теория, можно сделать дорогим и, следовательно, невыгодным.

«Основная идея заключается в том, чтобы потребовать от пользователя вычислить умеренно сложную, но не неразрешимую функцию, чтобы получить доступ к ресурсу, тем самым предотвращая легкомысленное использование»

— Дворк и Наор.

Хотя Дворк и Наор не предлагали этот термин, представленный ими тип решения стал известен как система Proof of Work. Пользователи должны были буквально продемонстрировать, что их компьютер выполнил работу, чтобы доказать, что они потратили реальные ресурсы. Это было отличное решение, но, возможно, оно опередило свое время. Предложение так и не вышло далеко за пределы относительно узкого круга ученых-компьютерщиков.

Адам Бэк и шифропанки

Примерно в то же время, когда Дворк и Наор опубликовали свою «белую книгу» (whitepaper), группа либертарианцев и борцов за приватность также осознала огромный потенциал интернета. Эта идеологически мотивированная группа начала организовывать список рассылки, посвященный технологиям, повышающим приватность. Как Дворк и Наор, эти активисты, окрещенные шифропанками, использовали относительно новую в компьютерной сфере науку под названием криптография для достижения своих целей.

С годами Адам Бэк, получивший докторскую степень в 1996 году, стал одним из самых активных участников этого списка, иногда отправляя десятки писем в месяц. Как и большинство шифропанков, криптограф был увлечен такими темами, как приватность,  свобода слова и либертарианство, и участвовал в технических обсуждениях, касающихся анонимных ремейлеров,  зашифрованных файловых систем,  электронных денег,  представленных доктором Дэвидом Чаумом, и многого другого. Но некоторое время  Бэк был, пожалуй, наиболее известен тем, что печатал и продавал «боевые» футболки — футболки с напечатанным на них протоколом шифрования, призванные подчеркнуть абсурдность решение правительства США регулировать программу шифрования Фила Циммермана PGP (Pretty Good Privacy) как «вооружение» в соответствии с определением американских правил экспорта. Ношение футболки Бэка при пересечении границы для выезда из США технически делает вас «экспортером оружия».

d55f8d6ad48290be8d5fcc72cecd1a14.png

Как и многие другие, Бэк не знал о предложении Дворка и Наора Proof of Work. Тем не менее, в середине 1990-х годов он прорабатывал аналогичные идеи по борьбе со спамом, а иногда делал это «вслух» в списке рассылки шифропанков.

«Побочным положительным эффектом использования PGP является то, что шифрование PGP должно добавлять спамеру некоторые накладные расходы — вероятно, он может шифровать меньше сообщений в секунду, чем рассылать спам по каналу T3», — комментировал Бэк, например, в контексте добавления большей приватности в системы ремейлеров. Эта идея несколько походила на идею Дворка и Наора.

Список рассылки шифропанков значительно вырос примерно за полдесятилетия. То, что начиналось как дискуссионная площадка для группы людей, которые первоначально собирались в одном из своих стартапов в районе залива, стало небольшим интернет-феноменом с тысячами подписчиков. Часто за день приходило больше писем, чем кто-либо мог в какой-то мере отслеживать. Именно тогда, в 1997 году, когда список рассылки был близок к пику своей популярности, Бэк представил свое предложение Hashcash.

Hashcash 

Hashcash похож на предложение Дворка и Наора по борьбе со спамом и имеет ту же цель, хотя Бэк предложил несколько дополнительных вариантов использования, например, для борьбы со злоупотреблениями анонимными ремейлерами. Но, как следует из названия, Hashcash не был основан на криптографических головоломках, как у Дворка и Наора; он был основан на хэшировании. Хэширование — это криптографический трюк, который берет любые данные — будь то одна буква или целая книга — и превращает их в на первый взгляд случайное число заранее определенной длины.

Например, хэш SHA-256 предложения This is a sentence дает следующее шестнадцатеричное число:

8af6b19a693fc3d65faec963c077a7d2.png

Которое можно «перевести» в обычное десятичное число:

ec427ca768dd4227643d3181f0e141f4.png

Или в двоичное:

a2fd6a47174fb6f35f620210212f1ed3.png

Между тем, хэш SHA-256 предложения This, is a sentence (с запятой после первого слова) дает следующее шестнадцатеричное число:

43e1a670e6fc986ba9629a8e6330ce8e.png

Как видите, простое добавление одной единственной запятой в предложение полностью меняет хэш. И, что важно, хэш любого из предложений совершенно непредсказуем. Даже после хэширования первого предложения нет возможности вычислить по нему хэш второго. Единственный способ узнать правильный хэш — хэшировать оба предложения.

Hashcash довольно хитро использует этот математический трюк. В Hashcash метаданные электронного письма (адрес отправителя, адрес получателя, время отправки и т.д.) формализованы в виде протокола. Кроме того, отправитель электронного письма должен добавить к этим метаданным случайное число — «нонс». Все эти метаданные, включая нонс, затем хэшируются, так что полученный хэш выглядит как одно из случайных чисел, приведенных выше. Вот в чем хитрость: не каждый хэш считается «подходящим». Вместо этого двоичная версия хэша должна начинаться с заранее определенного количества нулей. Например: 20 нулей. Отправитель может сгенерировать хэш, начинающийся с 20 нулей, включив в него нонс, который случайным образом дополняет исходные данные до подходящего значения…, но отправитель не может заранее знать, каким должен быть этот нонс. Поэтому для создания достоверного хэша у отправителя есть только один способ — метод проб и ошибок — брутфорс. Он должен продолжать подставлять разные нонсы, пока не найдет правильную комбинацию; в противном случае его письмо будет отклонено почтовым клиентом получателя. Как и решение Дворка и Наора, это решение требует вычислительных ресурсов, это — система Proof of Work.

«Если у письма нет 20-битного хэша […] у вас есть программа, которая возвращает его отправителю с уведомлением, объясняющим, требования для его отправки, и где можно получить программное обеспечение. Это мгновенно выведет спамеров из бизнеса, поскольку […] они не располагают такой вычислительной мощностью».

— Адам Бэк в списке рассылки шифропанков.

Примечательно, что система Proof of Work Бэка более случайна, чем система Дворка и Наора. Решение дуэта требует решения головоломки, что означает, что более быстрый компьютер каждый раз будет решать ее быстрее, чем медленный. Но статистически Hashcash все равно позволит более медленному компьютеру время от времени находить правильное решение быстрее.

По аналогии, если один человек бегает быстрее другого, то в спринте между ними каждый раз будет побеждать тот, кто быстрее. Но если один человек покупает больше лотерейных билетов, чем другой, второй из них, по статистике, все равно будет иногда выигрывать — просто не так часто.

Цифровая редкость 

Как и предложение Дворка и Наора, идея Hashcash, которую Бэк подробно изложил в 2002 году в белой книге — так и не получила широкого распространения. Она была реализована на платформе SpamAssassin компании Apache с открытым исходным кодом, а компания Microsoft попробовала идею Proof of Work в несовместимом формате «почтовых марок». И Бэк, и другие ученые в течение многих лет придумывали различные альтернативные варианты применения этого решения, но большинство из них так и не получили широкого распространения. Для большинства потенциальных приложений отсутствие сетевого эффекта, вероятно, было слишком велико, чтобы его преодолеть.

Тем не менее, Дворк и Наор, а также Бэк (независимо друг от друга) предложили нечто новое. Если одной из самых мощных характеристик цифровых продуктов является простота копирования, то Proof of Work был, по сути, первой концепцией виртуальной редкости, которая не зависела от центрального органа: она привязывала цифровые данные к реальному, ограниченному ресурсу вычислительной мощности. А редкость, конечно же, является одной из важнейших предпосылок денег. Действительно, Бэк, в частности, отчетливо отнес Hashcash к категории денег во всех своих сообщениях в списке рассылки шифропанков и белой книге, уподобив предложение единственной цифровой наличности, известной миру на тот момент: eCash компании DigiCash Дэвида Чаума.

«Hashcash может стать временной мерой, пока Digicash не получит более широкого распространения. Hashcash бесплатен, все, что вам нужно сделать — это запустить несколько циклов на вашем компьютере. Это соответствует культуре свободного обсуждения в сети, где финансово неимущие могут на равных поспорить с миллионерами, отставными правительственными чиновниками и т.д.[…] Hashcash может предоставить нам запасной способ борьбы со спамом, если Digicash провалится (будет объявлен вне закона или обяжет предоставлять личные данные пользователей).»

Однако, несмотря на название, Hashcash (как и предложение Дворка и Наора) не может самостоятельно функционировать как полноценная наличность. Возможно, важнейшей особенностью является то, что любое «полученное» доказательство работы бесполезно для получателя. В отличие от денег, его нельзя потратить или применить где-либо еще. Кроме того, поскольку скорость компьютеров росла с каждым годом, они могли производить все больше и больше доказательств с течением времени по более низкой стоимости: Hashcash подвергся бы (гипер)инфляции. Истинная польза Proof of Work заключалась в новой основе для исследований в сфере цифровых денег. Несколько появившихся позже наиболее заметных предложений цифровых денег были основаны на Hashcash, как правило, за счет добавления возможности повторного использования Proof of Work. (Наиболее ярким примером является Reusable Proof of Work — RPOW Хэла Финни).

Биткоин 

В конечном итоге, конечно, доказательство работы стало краеугольным камнем для Биткоина, а Hashcash — одной из немногих ссылок в его белой книге.

Скачать белую книгу Биткоина

Однако в Биткоине Hashcash (вернее, его версия) используется совсем не так, как многие могли бы предположить ранее. В отличие от Hashcash и других основанных на нем предложений, редкость, которую он обеспечивает, сама по себе не используется в качестве денег. Вместо этого Hashcash гарантирует гонку. Тот майнер, который первым создаст валидное доказательство работы — хэш блока Биткоина — получает право решать, какие транзакции будут записаны в блокчейн. По крайней мере, теоретически, каждый может участвовать на равных: подобно лотерее, даже мелкие майнеры статистически оказываются первыми в создании валидного Proof of Work. Кроме того, после добычи нового блока, подтверждающего ряд транзакций, эти транзакции вряд ли можно будет отменить. Злоумышленнику придется предоставить доказательство проведения по крайней мере такого же объема работы, который потребовался, чтобы изначально найти блок… и добавлять ее к каждому дополнительному найденному блоку, что в обычных условиях становится экспоненциально труднее с течением времени. Реальные ресурсы, которые необходимо затратить для обмана, обычно перевешивают потенциальную прибыль, которую можно получить в результате обмана, что дает получателям Биткоин-транзакций уверенность в том, что эти транзакции являются необратимыми. Таким образом, в Биткоине Hashcash убил двух зайцев одним выстрелом. Он решил проблему двойной траты децентрализованным способом, одновременно предоставив возможность выпуска новых монет в обращение, не нуждаясь в централизованном эмитенте.

Hashcash не стал первой системой электронных денег — эта корона принадлежит eCash, а Proof of Work не может полноценно функционировать в качестве денег. Но без него децентрализованная система электронных денег была бы невозможна.

© Habrahabr.ru