Hashcash: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Спасение 2 источников и отметка 0 мёртвыми. #IABot (v1.5.1)
Принцип работы: стилевые правки
 
(не показано 30 промежуточных версий 13 участников)
Строка 1: Строка 1:
'''Hashcash''' — система [[Доказательство выполнения работы|доказательства правильности работы]], используемая с целью уменьшения количества [[Спам|спама]] и [[DoS-атака|DoS-атак]]. Позднее стала использоваться в [[Биткойн|bitcoin]] и других [[Криптовалюта|криптовалютах]]<ref>{{Cite web|url=https://ru.investing.com/crypto/|title=Криптовалюты в реальном времени|author=|website=Investing.com|date=|publisher=}}</ref>, как часть алгоритма [[Анализ данных|анализа данных]]. Система Hashcash была предложена в мае 1997 года Адамом Бэком.<ref name="Announce">{{cite web|url = http://www.hashcash.org/papers/announce.txt|title = A partial hash collision based postage scheme|publisher = Hashcash.org|format = Txt|accessdate = 13 October 2014}}</ref>
'''Hashcash''' — система [[Доказательство выполнения работы|доказательства правильности работы]], используемая с целью уменьшения количества [[спам]]а и [[DoS-атака|DoS-атак]]. Позднее стала использоваться в [[Биткойн|bitcoin]] и других [[криптовалюта]]х<ref>{{Cite web|url=https://ru.investing.com/crypto/|title=Криптовалюты в реальном времени|author=|website=[[Investing.com]]|date=|publisher=|access-date=2017-08-09|archive-date=2017-08-09|archive-url=https://web.archive.org/web/20170809140228/https://ru.investing.com/crypto/|deadlink=no}}</ref> как часть алгоритма [[Анализ данных|анализа данных]]. Система Hashcash была предложена в мае 1997 года [[Адам Бэк|Адамом Бэком]]<ref name="Announce">{{cite web|url = http://www.hashcash.org/papers/announce.txt|title = A partial hash collision based postage scheme|publisher = Hashcash.org|format = Txt|accessdate = 2014-10-13|archive-date = 2015-09-24|archive-url = https://web.archive.org/web/20150924025049/http://www.hashcash.org/papers/announce.txt|deadlink = no}}</ref>.


== Принцип работы ==
== Принцип работы ==
Протокол Hashcash требует, чтобы отправитель электронного письма в специальном заголовке ''X-Hashcash'' разместил уникальный для каждого письма набор символов, который является результатом относительно длительного расчёта, данными для которого служит как текст письма, так и адреса отправителя/получателя. Это не позволяет копировать заголовок ''X-Hashcash'' даже для писем с одинаковым содержимым, но с разными адресами получателей, а также служит доказательством того, что на создание и отправку именно данного сообщения было затрачено некоторое время. При этом получателю для проверки полученного в заголовке значения требуется затратить значительно меньше ресурсов по сравнению с затратами отправителя, а сообщения без оговоренного заголовка предлагалось отклонять и не пересылать получателю. При обычном использовании электронной почтой не так уж значительно увеличится время отправки нескольких писем. Но необходимость выполнять большие вычисления выступает значительным препятствием при отправке большого числа сообщений, характерных при [[спам]]е или [[DoS-атака|DoS-атаке]]. Если попытаться сформировать заголовок не используя заданную в алгоритме длительную процедуру, а ориентируясь лишь на быстрый принцип проверки результата, то единственным известным способом подобрать заголовок является [[полный перебор]] среди всех возможный значений, что приводит к высокой нагрузке на устройство злоумышленника и всё равно может занять значительное время.
Hashcash — это алгоритм доказательства правильности работы, требующий выборочного объёма данных для вычислений, но при этом доказательство может быть эффективно подтверждено. У пользователей электронной почты к заголовку добавляется текстовая кодировка отметки hashcash, подтверждающая, что перед отправкой было затрачено некоторое время для вычисления отметки. Другими словами, отправитель тратит некоторое время на вычисление отметки и отправку, что несвойственно спамерам. Получатель может ценой небольших вычислительных мощностей подтвердить валидность отметки. Единственным известным способом подобрать заголовок с необходимыми параметрами является [[полный перебор]]. И, хотя тестирование одной строки достаточно просто, при достаточно малом количестве удовлетворительных ответов для поиска ответа потребуется достаточно большое количество попыток.

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


== Технические детали ==
== Технические детали ==
Заголовок отметки выглядит следующим образом:<ref>{{cite web|url = http://hashcash.org/docs/hashcash.txt|title = hashcash - hashcash anti-spam / denial of service counter-measure tool|publisher = Hashcash.org|format = Txt|accessdate = 13 October 2014}}</ref>
Заголовок отметки выглядит следующим образом:<ref>{{cite web|url = http://hashcash.org/docs/hashcash.txt|title = hashcash - hashcash anti-spam / denial of service counter-measure tool|publisher = Hashcash.org|format = Txt|accessdate = 2014-10-13|archive-date = 2016-03-03|archive-url = https://web.archive.org/web/20160303195604/http://hashcash.org/docs/hashcash.txt|deadlink = no}}</ref>


X-Hashcash: 1:20:1303030600:adam@cypherspace.org::McMybZIhxKXu57jd:FOvXX
X-Hashcash: 1:20:1303030600:adam@cypherspace.org::McMybZIhxKXu57jd:FOvXX


Заголовок содержит:
Заголовок содержит:
<pre>
ver: Версию hashcash, 1 (которая заменила версию 0).
ver: Версию hashcash, 1 (которая заменила версию 0).
bits: Число "предварительных" (нулевых) битов в хешированном коде.
bits: Число "предварительных" (нулевых) битов в хешированном коде.
date: Время, в которое сообщение было отправлено, в формате ГГММДД[ччмм[сс]].
date: Время, в которое сообщение было отправлено, в формате ГГММДД[ччмм[сс]].
resource: Данные об отправителе, например, IP адрес или адрес E-mail .
resource: Данные об отправителе, например, IP-адрес или адрес E-mail.
ext: Расширение (опционально; игнорируется в версии 1).
ext: Расширение (опционально; игнорируется в версии 1).
rand: Строка случайных чисел, закодированная в формате [[Base64|base-64]].
rand: Строка случайных чисел, закодированная в формате [[Base64|base-64]].
counter: Двоичный счетчик, закодированный в формате base-64.
counter: Двоичный счётчик, закодированный в формате base-64.
</pre>


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


=== На стороне отправителя ===
=== На стороне отправителя ===
Отправитель подготавливает заголовок и добавляет к нему случайное число. Затем он вычисляет 160-битный [[SHA-1]] [[Криптографическая хеш-функция|хеш]] заголовка. Если первые 20 бит заголовка — нули, то этот заголовок приемлемый. В противном случае отправитель увеличивает значение счётчика и пробует ещё раз. Из 2<sup>160</sup> возможных значений хеша 2<sup>140</sup> удовлетворяют этому критерию. Таким образом, вероятность того, что случайно выбранный хеш будет начинаться с 20 нулей — 1 к 2<sup>20</sup>. Количество попыток, которые отправитель вынужден произвести, прежде чем получит валидное значение хеша, моделируется [[Геометрическое распределение|геометрическим распределением]]. Следовательно, отправитель в среднем должен попробовать 2<sup>20</sup> (чуть более [[Миллион|миллиона]]) [[Случайное число|случайных чисел]], чтобы найти правильный заголовок. Учитывая разумные оценки времени, необходимого для вычисления хеша, это займет около 1 секунды. В то же время, нет эффективного метода поиска валидного заголовка, кроме перебора.
Отправитель подготавливает заголовок и добавляет к нему случайное число. Затем он вычисляет 160-битный [[SHA-1]]-[[Криптографическая хеш-функция|хеш]] заголовка. Если первые 20 бит хэша — нули, то этот заголовок приемлемый. В противном случае отправитель увеличивает значение счётчика и пробует ещё раз. Из 2<sup>160</sup> возможных значений хеша 2<sup>140</sup> удовлетворяют этому критерию. Таким образом, вероятность того, что случайно выбранный хеш будет начинаться с 20 нулей — 1 к 2<sup>20</sup>. Количество попыток, которые отправитель вынужден произвести, прежде чем получит валидное значение хеша, моделируется [[Геометрическое распределение|геометрическим распределением]]. Следовательно, отправитель в среднем должен попробовать 2<sup>20</sup> (чуть более [[миллион]]а) [[Случайное число|случайных чисел]], чтобы найти правильный заголовок. Учитывая разумные оценки времени, необходимого для вычисления хеша, это займёт около 1 секунды. В то же время, нет эффективного метода поиска валидного заголовка, кроме перебора.


Обычный пользователь ПК не будет испытывать значительных проблем из-за времени, необходимого на генерацию строки hashcash. В то же время спамеры будут испытывать существенные проблемы, так как отправляют очень большое число писем.
Обычный пользователь ПК не будет испытывать значительных проблем из-за времени, необходимого на генерацию строки hashcash. В то же время спамеры будут испытывать существенные проблемы, так как отправляют очень большое число писем.


=== На стороне получателя ===
=== На стороне получателя ===
Технически, система реализована следующими шагами:
Технически система реализована следующими шагами:
Компьютер получателя высчитывает 160-битный SHA-1 хеш целой строки (например, <code>"1:20:060408:adam@cypherspace.org::1QTjaYd7niiQA/sc:ePa"</code>). Это занимает около двух микросекунд на 1-ГГц процессоре, что намного меньше, чем время, необходимое на загрузку оставшейся части e-mail сообщения. Если первые 20 бит ненулевые, хеш является недействительным (в последних версиях может потребоваться большее число нулевых битов, так как вычислительные мощности растут).
компьютер получателя высчитывает 160-битный SHA-1-хеш целой строки (например, <code>"1:20:060408:adam@cypherspace.org::1QTjaYd7niiQA/sc:ePa"</code>). Это занимает около двух микросекунд на 1-ГГц процессоре, что намного меньше, чем время, необходимое на загрузку оставшейся части e-mail сообщения. Если первые 20 бит ненулевые, хеш является недействительным (в последних версиях может потребоваться большее число нулевых битов, так как вычислительные мощности растут).
Компьютер получателя проверяет дату в заголовке (например, <code>"060408"</code>, что означает 8 апреля 2006 г.). Если разница с текущей датой более двух дней, хеш является недействительным (двухдневное окно компенсирует разницу во времени и время перемещения по сети между различными системами).
Компьютер получателя проверяет дату в заголовке (например, <code>"060408"</code>, что означает 8 апреля 2006 г.). Если разница с текущей датой более двух дней, хеш является недействительным (двухдневное окно компенсирует разницу во времени и время перемещения по сети между различными системами).
Компьютер получателя проверяет, совпадает ли e-mail в строке хеша с каким-либо e-mail адресом, зарегистрированным получателем или с любым адресом из списка тех, на которые получатель подписан. Если совпадения отсутствуют, хеш является недействительным.
Компьютер получателя проверяет, совпадает ли e-mail в строке хеша с каким-либо e-mail адресом, зарегистрированным получателем или с любым адресом из списка тех, на которые получатель подписан. Если совпадения отсутствуют, хеш является недействительным.
Строка 35: Строка 38:


=== Необходимые затраты ===
=== Необходимые затраты ===
Время, необходимое на вычисление подобных коллизий хеша [[Экспонента|экспоненциально]] растёт с увеличением числа нулевых битов. То есть нулевые биты могут добавляться до тех пор, пока создание новых валидных хеш-строк не станет слишком дорогим для спамеров (удваивая время, необходимое на вычисление хеша каждым дополнительным нулём).
Время, необходимое на вычисление подобных коллизий хеша, [[Экспонента|экспоненциально]] растёт с увеличением числа нулевых битов. То есть нулевые биты могут добавляться до тех пор, пока создание новых валидных хеш-строк не станет слишком дорогим для спамеров (удваивая время, необходимое на вычисление хеша каждым дополнительным нулём).
Подтверждение того, что заголовок валидный, требует одинакового времени. При этом неважно, сколько нулей необходимо для валидного заголовка, так как требуется только одна операция хеширования.
Подтверждение того, что заголовок валидный, требует одинакового времени. При этом неважно, сколько нулей необходимо для валидного заголовка, так как требуется только одна операция хеширования.


== Преимущества и недостатки ==
== Преимущества и недостатки ==
Система hashcash имеет преимущество перед [[Микроплатёж|микроплатежными]] предложениями, применяемыми к электронной почте, так как не предполагает привлечение реальных денег. Ни отправитель, ни получатель не должны платить. Таким образом избегаются все административные вопросы, связанные с микроплатежами.
Система hashcash имеет преимущество перед [[Микроплатёж|микроплатежными]] предложениями, применяемыми к электронной почте, так как не предполагает привлечения реальных денег. Ни отправитель, ни получатель не должны платить. Таким образом избегаются все административные вопросы, связанные с микроплатежами.


С другой стороны, hashcash требует значительных вычислительных ресурсов, расходующихся на отправку каждого сообщения. Довольно сложно удачно подобрать среднее время, которое клиенты готовы тратить на вычисление заголовка. Это может означать, что [[Встраиваемая система|встраиваемые системы]] низкого уровня либо жертвуют доступностью, либо не обеспечивают достаточной защиты от враждебных хостов, чтобы эффективно фильтровать спам.
С другой стороны, hashcash требует значительных вычислительных ресурсов, расходующихся на отправку каждого сообщения. Довольно сложно удачно подобрать среднее время, которое клиенты готовы тратить на вычисление заголовка. Это может означать, что [[Встраиваемая система|встраиваемые системы]] низкого уровня либо жертвуют доступностью, либо не обеспечивают достаточной защиты от враждебных хостов, чтобы эффективно фильтровать спам.


Hashcash достаточно просто реализовать для пользовательских почтовых агентов и спам-фильтров. Не требуется наличие центрального сервера. Система может быть последовательно применена — дополнительный заголовок hashcash игнорируется, когда он получен почтовым клиентом, не понимающим его.
Hashcash достаточно просто реализовать для пользовательских почтовых агентов и спам-фильтров. Не требуется наличия центрального сервера. Система может быть последовательно применена — дополнительный заголовок hashcash игнорируется, когда он получен почтовым клиентом, не понимающим его.


Один из анализов<ref>{{cite web|url = http://www.hashcash.org/papers/proof-work.pdf|title = Hashcash proof-of-work paper|publisher = Hashcash.org|format = PDF|accessdate = 13 October 2014}}</ref> пришёл к выводу, что вероятнее всего либо почта будет застревать из-за нехватки вычислительной мощности отправителя, либо спам все равно будет проходить. Примеры каждого включают, соответственно, централизованную топологию электронной почты (например, [[Рассылка электронной почты|список рассылки]]), в котором некоторым серверам нужно отправить огромное количество законной электронной почты; и [[Ботнет|бот-сети]] или кластерные фермы, с которой спамеры могут чрезвычайно увеличить свою мощность обработки. Большинство из этих проблем могут быть решены. Например, бот-сети могут обнаруживаться быстрее, потому что пользователи замечают высокую нагрузку на процессор и принять ответные меры, а серверы, использующие список рассылки могут быть зарегистрированы в белых списках абонентских клиентов и, таким образом, освобождается от проблем Hashcash. Но, в целом, они представляют собой серьёзные препятствия для развертывания Hashcash, которые ещё предстоит решить.
Один из анализов<ref>{{cite web|url = http://www.hashcash.org/papers/proof-work.pdf|title = Hashcash proof-of-work paper|publisher = Hashcash.org|format = PDF|accessdate = 2014-10-13|archive-date = 2016-01-15|archive-url = https://web.archive.org/web/20160115223312/http://www.hashcash.org/papers/proof-work.pdf|deadlink = no}}</ref> пришёл к выводу, что, вероятнее всего, либо почта будет застревать из-за нехватки вычислительной мощности отправителя, либо спам все равно будет проходить. Примеры каждого включают, соответственно, централизованную топологию электронной почты (например, [[Рассылка электронной почты|список рассылки]]), в которой некоторым серверам нужно отправить огромное количество законной электронной почты; и [[Ботнет|бот-сети]] или кластерные фермы, с которой спамеры могут чрезвычайно увеличить свою мощность обработки. Большинство из этих проблем может быть решено. Например, бот-сети могут обнаруживаться быстрее, потому что пользователи замечают высокую нагрузку на процессор и могут принять ответные меры, а серверы, использующие список рассылки, могут быть зарегистрированы в белых списках абонентских клиентов и, таким образом, освобождаются от проблем Hashcash. Но, в целом, они представляют собой серьёзные препятствия для развёртывания Hashcash, которые ещё предстоит решить.


Еще одна прогнозируемая проблема состоит в том, что компьютеры продолжают наращивать мощность в соответствии с [[Закон Мура|законом Мура]]. Таким образом, сложность вычислений, необходимых должна быть увеличена. Тем не менее, развивающиеся страны продолжат использовать старое оборудование, что означает, что они будут испытывать трудности при работе в системе электронной почты. Это также относится к лицам с низким уровнем доходов в развитых странах, которые не могут позволить себе новейшее оборудование.
Ещё одна прогнозируемая проблема состоит в том, что компьютеры продолжают наращивать мощность в соответствии с [[Закон Мура|законом Мура]]. Таким образом, сложность необходимых вычислений должна быть увеличена. Тем не менее, развивающиеся страны продолжат использовать старое оборудование, что означает, что они будут испытывать трудности при работе в системе электронной почты. Это также относится к лицам с низким уровнем доходов в развитых странах, которые не могут позволить себе новейшее оборудование.


== Применение ==
== Применение ==


=== Bitcoin mining ===
=== Биткойн ===
Hashcash концептуально схож с системами проверки правильности, используемыми в «[[Биткойн]]». Если в почтовых применениях предполагается, что получатель вручную контролирует объём работ систем проверки правильности работы для выигрыша в вычислительной мощности по закону Мура, то биткойн представляет p2p сеть, которая внутренне автоматически регулирует объём работ. Также, в отличие от почты, где используются 20 бит (порядка 1 млн попыток для успешного поиска), биткойн использует 67,5 бит (необходимо порядка 200 млн триллионов попыток), чтобы анализировать блок, включающий порядка 25 биткойнов, которые производятся каждые 10 минут. Биткойн скорректировали алгоритм, добавив поддержку работы с долями бит (первоначальная спецификация HashCash ограничивалась корректировкой целых степеней числа 2). Тем самым удалось достичь более высокой точности.
Hashcash концептуально схож с системами проверки правильности, используемыми в «[[Биткойн]]». Если в почтовых применениях предполагается, что получатель вручную контролирует объём работ систем проверки правильности работы для выигрыша в вычислительной мощности по закону Мура, то биткойн представляет p2p-сеть, которая внутренне автоматически регулирует объём работ. Также, в отличие от почты, где используются 20 бит (порядка 1 млн попыток для успешного поиска), биткойн использует 67,5 бит (необходимо порядка 200 млн триллионов попыток) и меняющийся критерий сложности, чтобы сгенерировать один из блоков, которые создаются каждые 10 минут. В биткойне скорректировали алгоритм, добавив поддержку работы с долями бит (первоначальная спецификация HashCash ограничивалась корректировкой целых степеней числа 2), тем самым удалось достичь более высокой точности.


=== Фильтры спама ===
=== Фильтры спама ===
Hashcash используется, как потенциальное решение проблемы ложного срабатывания автоматических спам-фильтров, так как обычный пользователь не испытывает проблем с дополнительным временем, необходимым для отметки.<ref>{{cite web|url = http://www.hashcash.org/faq/|title = Hashcash FAQ|publisher = Hashcash.org|date = 2003-06-26|accessdate = 2014-02-11}}</ref>
Hashcash используется как потенциальное решение проблемы ложного срабатывания автоматических спам-фильтров, так как обычный пользователь не испытывает проблем с дополнительным временем, необходимым для отметки<ref>{{cite web|url = http://www.hashcash.org/faq/|title = Hashcash FAQ|publisher = Hashcash.org|date = 2003-06-26|accessdate = 2014-02-11|archive-date = 2013-10-12|archive-url = https://web.archive.org/web/20131012195054/http://hashcash.org/faq/|deadlink = no}}</ref>.


[[SpamAssassin]] проверяет наличие отметок hashcash начиная с версии 2.70, присваивая отрицательные баллы (то есть считает менее похожим на спам) неиспользованным ранее отметкам hashcash. В версии 3.3x (последняя версия на момент написания), система даёт бонусные баллы для любых 20-битных и более отметок (максимум, −5 баллов для 26-битных и более отметок). Однако, за уже использованную отметку записывается небольшой штраф.<ref>{{cite web|url = http://spamassassin.apache.org/tests_3_3_x.html|title = SpamAssassin: Tests Performed: v3.3.x|publisher = Spamassassin.apache.org|date = 2006-12-21|accessdate = 2014-02-11}}</ref>
[[SpamAssassin]] проверяет наличие отметок hashcash начиная с версии 2.70, присваивая отрицательные баллы (то есть считает менее похожим на спам) неиспользованным ранее отметкам hashcash. В версии 3.3x (последняя версия на момент написания) система даёт бонусные баллы для любых 20-битных и более отметок (максимум −5 баллов для 26-битных и более отметок). Однако, за уже использованную отметку записывается небольшой штраф<ref>{{cite web|url = http://spamassassin.apache.org/tests_3_3_x.html|title = SpamAssassin: Tests Performed: v3.3.x|publisher = Spamassassin.apache.org|date = 2006-12-21|accessdate = 2014-02-11|deadlink = yes|archiveurl = https://web.archive.org/web/20140216185705/http://spamassassin.apache.org/tests_3_3_x.html|archivedate = 2014-02-16}}</ref>.


=== E-mail клиенты ===
=== Email-клиенты ===
The Penny Post<ref>{{cite web|url = http://pennypost.sourceforge.net/|title = Penny Post software project on SourceForge|publisher = Pennypost.sourceforge.net|accessdate = 13 October 2014}}</ref> на [[SourceForge]] реализует Hashcash для email клиента [[Mozilla Thunderbird]].<ref>{{cite web|url = http://pennypost.sourceforge.net/PostageStamps|title = Penny Post: What do you mean by Postage Stamp?|publisher = Pennypost.sourceforge.net|date = 2008-06-16|accessdate = 2014-02-11}}</ref> Проект назвал в честь доступного почтового сервиса, стоившего отправителю лишь одного пенни. подобных почтовых сервисах можно прочитать на странице [[:en:Penny_Post|Penny Post]]).
The Penny Post<ref>{{cite web|url = http://pennypost.sourceforge.net/|title = Penny Post software project on SourceForge|publisher = Pennypost.sourceforge.net|accessdate = 2014-10-13|archive-date = 2008-08-21|archive-url = https://web.archive.org/web/20080821110020/http://pennypost.sourceforge.net/|deadlink = no}}</ref> на [[SourceForge]] реализует Hashcash для email-клиента [[Mozilla Thunderbird]]<ref>{{cite web|url = http://pennypost.sourceforge.net/PostageStamps|title = Penny Post: What do you mean by Postage Stamp?|publisher = Pennypost.sourceforge.net|date = 2008-06-16|accessdate = 2014-02-11|archive-date = 2014-02-19|archive-url = https://web.archive.org/web/20140219122051/http://pennypost.sourceforge.net/PostageStamps|deadlink = no}}</ref>. Проект назван в честь {{Нп3|Penny Post|почтовой системы}}, где отправка писем стоит всего один пенни.


=== Email Postmark ===
=== Email Postmark ===
Microsoft также спроектировали и реализовали ныне устаревшую<ref>{{cite web|url = http://office.microsoft.com/en-au/outlook-help/discontinued-features-and-modified-functionality-in-outlook-2010-HA010354944.aspx|title = Discontinued features and modified functionality in Outlook 2010|publisher = Office.microsoft.com|accessdate = 13 October 2014}}</ref> открытую спецификацию, аналогичную hashcash, но несовместимую с ней — Email Postmark,<ref>{{cite web|url = http://download.microsoft.com/download/5/d/d/5dd33fdf-91f5-496d-9884-0a0b0ee698bb/%5BMS-OXPSVAL%5D.pdf|title = Email Postmark Validation Algorithm|format = PDF|publisher = Download.microdoft.com|accessdate = 13 October 2014}}</ref> ставшую частью Coordinated Spam Reduction Initiative (CSRI).<ref>{{cite web|url = http://download.microsoft.com/download/7/6/b/76b1a9e6-e240-4678-bcc7-fa2d4c1142ea/csri.pdf|title = The Coordinated Spam Reduction Initiative: A Technology and Policy Proposal|format = PDF|date = |accessdate = 2014-02-11}}</ref> Вариант hashcash, предложенный Microsoft реализован в компонентах почтовых сервисов Microsoft, таких как Exchange, Outlook и Hotmail.
Microsoft также спроектировал и реализовал ныне устаревшую<ref>{{cite web|url = http://office.microsoft.com/en-au/outlook-help/discontinued-features-and-modified-functionality-in-outlook-2010-HA010354944.aspx|title = Discontinued features and modified functionality in Outlook 2010|publisher = Office.microsoft.com|accessdate = 2014-10-13|archive-date = 2014-10-18|archive-url = https://web.archive.org/web/20141018131529/http://office.microsoft.com/en-au/outlook-help/discontinued-features-and-modified-functionality-in-outlook-2010-HA010354944.aspx|deadlink = no}}</ref> открытую спецификацию, аналогичную hashcash, но несовместимую с ней — Email Postmark<ref>{{cite web|url = http://download.microsoft.com/download/5/d/d/5dd33fdf-91f5-496d-9884-0a0b0ee698bb/%5BMS-OXPSVAL%5D.pdf|title = Email Postmark Validation Algorithm|format = PDF|publisher = Download.microdoft.com|accessdate = 2014-10-13|archive-date = 2015-11-26|archive-url = https://web.archive.org/web/20151126080145/http://download.microsoft.com/download/5/d/d/5dd33fdf-91f5-496d-9884-0a0b0ee698bb/%5BMS-OXPSVAL%5D.pdf|deadlink = no}}</ref>, ставшую частью Coordinated Spam Reduction Initiative (CSRI)<ref>{{cite web|url = http://download.microsoft.com/download/7/6/b/76b1a9e6-e240-4678-bcc7-fa2d4c1142ea/csri.pdf|title = The Coordinated Spam Reduction Initiative: A Technology and Policy Proposal|format = PDF|date = |accessdate = 2014-02-11|archiveurl = https://web.archive.org/web/20131021195822/http://download.microsoft.com/download/7/6/b/76b1a9e6-e240-4678-bcc7-fa2d4c1142ea/csri.pdf|archivedate = 2013-10-21}}</ref>. Вариант hashcash, предложенный Microsoft, реализован в компонентах почтовых сервисов Microsoft, таких как Exchange, Outlook и Hotmail.
Разница в формате между отметками hashcash и Microsoft в том, что отметка Microsoft хеширует также основную часть письма, а также использует модифицированный [[SHA-1]] в качестве хеш-функции.
Разница в формате между отметками hashcash и Microsoft в том, что отметка Microsoft хеширует также основную часть письма, а также использует модифицированный [[SHA-1]] в качестве хеш-функции.


=== Блоги ===
=== Блоги ===
Весьма похожим образом, [[Блог|блоги]] становятся жертвами спама в комментариях. Некоторые владельцы блогов использовали hashcash скрипты, написанные на [[JavaScript]], чтобы замедлить комментарии спамеров.<ref>[http://elliottback.com/wp/archives/2005/10/23/wordpress-hashcash-30-beta/ WP-Hashcash, a plugin for Wordpress blog software] {{webarchive|url=https://web.archive.org/web/20051027033442/http://elliottback.com/wp/archives/2005/10/23/wordpress-hashcash-30-beta/ |date=2005-10-27 }} that implements a Hashcash-like facility, written in JavaScript, by Elliott Back</ref> Некоторые скрипты (такие, как wp-hashcash) претендуют на реализацию Hashcash но зависят от запутывания средствами JavaScript, заставляя клиента генерировать соответствующий ключ; в то время как это требует некоторой вычислительной мощности, они не используют алгоритм Hashcash или Hashcash отметки.
Весьма похожим образом [[блог]]и становятся жертвами спама в комментариях. Некоторые владельцы блогов использовали hashcash-скрипты, написанные на [[JavaScript]], чтобы замедлить комментарии спамеров<ref>[http://elliottback.com/wp/archives/2005/10/23/wordpress-hashcash-30-beta/ WP-Hashcash, a plugin for Wordpress blog software] {{webarchive|url=https://web.archive.org/web/20051027033442/http://elliottback.com/wp/archives/2005/10/23/wordpress-hashcash-30-beta/ |date=2005-10-27 }} that implements a Hashcash-like facility, written in JavaScript, by Elliott Back</ref>. Некоторые скрипты (такие, как wp-hashcash) претендуют на реализацию Hashcash, но зависят от запутывания средствами JavaScript, заставляя клиента генерировать соответствующий ключ; в то время как это требует некоторой вычислительной мощности, они не используют алгоритм Hashcash или Hashcash-отметки.


== Интеллектуальная собственность ==
== Интеллектуальная собственность ==
Hashcash не запатентован, а эталонная реализация<ref>{{cite web|url = http://www.hashcash.org|title = C reference implementation|publisher = hashcash.org|accessdate = 13 October 2014}}</ref> и большинство других реализаций являются свободно распространяемым ПО. Hashcash включён или доступен для многих [[Дистрибутив Linux|дистрибутивов Linux]]. [[RSA]] сделал IPR заявления в [[Инженерный совет Интернета|IETF]] о client-puzzles алгоритмах<ref>{{cite web|url = http://www.ietf.org/ietf/IPR/rsa-ipr-draft-jennings-sip-hashcash-00.txt|title = RSA Security Inc. has submitted a patent application (US Serial No. 09/496,824)|format = Txt|publisher = Ietf.org|accessdate = 13 October 2014}}</ref> в контексте [[RFC]],<ref>{{cite web|url = http://tools.ietf.org/id/draft-jennings-sip-hashcash-00.txt|title = SIP Computational Puzzles|publisher = Tools.ietf.org|accessdate = 13 October 2014}}</ref> описывающем различные client-puzzles (не hashcash). RFC включил hashcash в статью и упомянул алгоритм, но механизм, описанный в ней, решает скорее интерактивную задачу, которая больше похожа на Client-Puzzles. Hashcash не интерактивен и, следовательно, не имеет известных решений. В любом случае, IPR утверждение RSA не может быть применено к hashcash, так как hashcash предшествует<ref name="Announce" /> (Март 1997) публикации Client-puzzle<ref>{{cite web|url = http://hashcash.org/papers/client-puzzles.pdf|title = Client Puzzles|accessdate = 13 October 2014}}</ref> (февраль 1999) и патентной заявке US7197639<ref>{{cite web|url = http://www.google.com/patents/US7197639|title = Client-puzzle patent filing|publisher = Google.com|accessdate = 13 October 2014}}</ref> (февраль 2000).
Hashcash не запатентован, а эталонная реализация<ref>{{cite web|url = http://www.hashcash.org|title = C reference implementation|publisher = hashcash.org|accessdate = 2014-10-13|archive-date = 2015-12-09|archive-url = https://web.archive.org/web/20151209082806/http://www.hashcash.org/|deadlink = no}}</ref> и большинство других реализаций являются свободно распространяемым ПО. Hashcash включён или доступен для многих [[Дистрибутив Linux|дистрибутивов Linux]]. [[RSA]] сделал IPR заявления в [[Инженерный совет Интернета|IETF]] о client-puzzles алгоритмах<ref>{{cite web|url = http://www.ietf.org/ietf/IPR/rsa-ipr-draft-jennings-sip-hashcash-00.txt|title = RSA Security Inc. has submitted a patent application (US Serial No. 09/496,824)|format = Txt|publisher = Ietf.org|accessdate = 2014-10-13|archive-date = 2008-09-26|archive-url = https://web.archive.org/web/20080926233908/http://www.ietf.org/ietf/IPR/rsa-ipr-draft-jennings-sip-hashcash-00.txt|deadlink = no}}</ref> в контексте [[RFC]]<ref>{{cite web|url = http://tools.ietf.org/id/draft-jennings-sip-hashcash-00.txt|title = SIP Computational Puzzles|publisher = Tools.ietf.org|accessdate = 2014-10-13|archive-date = 2016-03-03|archive-url = https://web.archive.org/web/20160303220524/http://tools.ietf.org/id/draft-jennings-sip-hashcash-00.txt|deadlink = no}}</ref>, описывающем различные client-puzzles (не hashcash). RFC включил hashcash в статью и упомянул алгоритм, но механизм, описанный в ней, решает скорее интерактивную задачу, которая больше похожа на Client-Puzzles. Hashcash не интерактивен и, следовательно, не имеет известных решений. В любом случае, IPR утверждение RSA не может быть применено к hashcash, так как hashcash предшествует<ref name="Announce" /> (март 1997) публикации Client-puzzle<ref>{{cite web|url = http://hashcash.org/papers/client-puzzles.pdf|title = Client Puzzles|accessdate = 2014-10-13|archive-date = 2016-03-04|archive-url = https://web.archive.org/web/20160304120855/http://hashcash.org/papers/client-puzzles.pdf|deadlink = no}}</ref> (февраль 1999) и патентной заявке US7197639<ref>{{cite web|url = http://www.google.com/patents/US7197639|title = Client-puzzle patent filing|publisher = Google.com|accessdate = 2014-10-13|archive-date = 2015-12-08|archive-url = https://web.archive.org/web/20151208235134/http://www.google.com/patents/US7197639|deadlink = no}}</ref> (февраль 2000).


== См. также ==
== См. также ==
* [[:en:Penny_Black_(research_project)|Penny Black (research project)]]
* [[:en:Penny Black (research project)|Penny Black (research project)]]


== Примечания ==
== Примечания ==

Текущая версия от 20:42, 13 августа 2024

Hashcash — система доказательства правильности работы, используемая с целью уменьшения количества спама и DoS-атак. Позднее стала использоваться в bitcoin и других криптовалютах[1] как часть алгоритма анализа данных. Система Hashcash была предложена в мае 1997 года Адамом Бэком[2].

Принцип работы

[править | править код]

Протокол Hashcash требует, чтобы отправитель электронного письма в специальном заголовке X-Hashcash разместил уникальный для каждого письма набор символов, который является результатом относительно длительного расчёта, данными для которого служит как текст письма, так и адреса отправителя/получателя. Это не позволяет копировать заголовок X-Hashcash даже для писем с одинаковым содержимым, но с разными адресами получателей, а также служит доказательством того, что на создание и отправку именно данного сообщения было затрачено некоторое время. При этом получателю для проверки полученного в заголовке значения требуется затратить значительно меньше ресурсов по сравнению с затратами отправителя, а сообщения без оговоренного заголовка предлагалось отклонять и не пересылать получателю. При обычном использовании электронной почтой не так уж значительно увеличится время отправки нескольких писем. Но необходимость выполнять большие вычисления выступает значительным препятствием при отправке большого числа сообщений, характерных при спаме или DoS-атаке. Если попытаться сформировать заголовок не используя заданную в алгоритме длительную процедуру, а ориентируясь лишь на быстрый принцип проверки результата, то единственным известным способом подобрать заголовок является полный перебор среди всех возможный значений, что приводит к высокой нагрузке на устройство злоумышленника и всё равно может занять значительное время.

Гипотеза эффективности Hashcash основывается на том, что траты на вычисления у злоумышленника станут большими и это сильно снизит или устранит потенциальную выгоду от проведения рассылки.

Технические детали

[править | править код]

Заголовок отметки выглядит следующим образом:[3]

X-Hashcash: 1:20:1303030600:adam@cypherspace.org::McMybZIhxKXu57jd:FOvXX

Заголовок содержит:

 ver: Версию hashcash, 1 (которая заменила версию 0).
 bits: Число  "предварительных" (нулевых) битов в хешированном коде.
 date: Время, в которое сообщение было отправлено, в формате ГГММДД[ччмм[сс]].
 resource: Данные об отправителе, например,  IP-адрес или адрес E-mail.
 ext: Расширение (опционально; игнорируется в версии 1).
 rand: Строка случайных чисел, закодированная в формате [[Base64|base-64]].
 counter: Двоичный счётчик, закодированный в формате base-64.

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

На стороне отправителя

[править | править код]

Отправитель подготавливает заголовок и добавляет к нему случайное число. Затем он вычисляет 160-битный SHA-1-хеш заголовка. Если первые 20 бит хэша — нули, то этот заголовок приемлемый. В противном случае отправитель увеличивает значение счётчика и пробует ещё раз. Из 2160 возможных значений хеша 2140 удовлетворяют этому критерию. Таким образом, вероятность того, что случайно выбранный хеш будет начинаться с 20 нулей — 1 к 220. Количество попыток, которые отправитель вынужден произвести, прежде чем получит валидное значение хеша, моделируется геометрическим распределением. Следовательно, отправитель в среднем должен попробовать 220 (чуть более миллиона) случайных чисел, чтобы найти правильный заголовок. Учитывая разумные оценки времени, необходимого для вычисления хеша, это займёт около 1 секунды. В то же время, нет эффективного метода поиска валидного заголовка, кроме перебора.

Обычный пользователь ПК не будет испытывать значительных проблем из-за времени, необходимого на генерацию строки hashcash. В то же время спамеры будут испытывать существенные проблемы, так как отправляют очень большое число писем.

На стороне получателя

[править | править код]

Технически система реализована следующими шагами: компьютер получателя высчитывает 160-битный SHA-1-хеш целой строки (например, "1:20:060408:adam@cypherspace.org::1QTjaYd7niiQA/sc:ePa"). Это занимает около двух микросекунд на 1-ГГц процессоре, что намного меньше, чем время, необходимое на загрузку оставшейся части e-mail сообщения. Если первые 20 бит ненулевые, хеш является недействительным (в последних версиях может потребоваться большее число нулевых битов, так как вычислительные мощности растут). Компьютер получателя проверяет дату в заголовке (например, "060408", что означает 8 апреля 2006 г.). Если разница с текущей датой более двух дней, хеш является недействительным (двухдневное окно компенсирует разницу во времени и время перемещения по сети между различными системами). Компьютер получателя проверяет, совпадает ли e-mail в строке хеша с каким-либо e-mail адресом, зарегистрированным получателем или с любым адресом из списка тех, на которые получатель подписан. Если совпадения отсутствуют, хеш является недействительным. Компьютер получателя добавляет хеш-строку в базу данных. Если такая строка уже присутствует в базе (тем самым, выясняется, что произошла попытка заново использовать хеш-строку), хеш является недействительным. Если хеш-строка прошла все тесты, она считается валидной. Все эти тесты не занимают большого количества времени и места на диске, по сравнению с получением основной части e-mail письма.

Необходимые затраты

[править | править код]

Время, необходимое на вычисление подобных коллизий хеша, экспоненциально растёт с увеличением числа нулевых битов. То есть нулевые биты могут добавляться до тех пор, пока создание новых валидных хеш-строк не станет слишком дорогим для спамеров (удваивая время, необходимое на вычисление хеша каждым дополнительным нулём). Подтверждение того, что заголовок валидный, требует одинакового времени. При этом неважно, сколько нулей необходимо для валидного заголовка, так как требуется только одна операция хеширования.

Преимущества и недостатки

[править | править код]

Система hashcash имеет преимущество перед микроплатежными предложениями, применяемыми к электронной почте, так как не предполагает привлечения реальных денег. Ни отправитель, ни получатель не должны платить. Таким образом избегаются все административные вопросы, связанные с микроплатежами.

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

Hashcash достаточно просто реализовать для пользовательских почтовых агентов и спам-фильтров. Не требуется наличия центрального сервера. Система может быть последовательно применена — дополнительный заголовок hashcash игнорируется, когда он получен почтовым клиентом, не понимающим его.

Один из анализов[4] пришёл к выводу, что, вероятнее всего, либо почта будет застревать из-за нехватки вычислительной мощности отправителя, либо спам все равно будет проходить. Примеры каждого включают, соответственно, централизованную топологию электронной почты (например, список рассылки), в которой некоторым серверам нужно отправить огромное количество законной электронной почты; и бот-сети или кластерные фермы, с которой спамеры могут чрезвычайно увеличить свою мощность обработки. Большинство из этих проблем может быть решено. Например, бот-сети могут обнаруживаться быстрее, потому что пользователи замечают высокую нагрузку на процессор и могут принять ответные меры, а серверы, использующие список рассылки, могут быть зарегистрированы в белых списках абонентских клиентов и, таким образом, освобождаются от проблем Hashcash. Но, в целом, они представляют собой серьёзные препятствия для развёртывания Hashcash, которые ещё предстоит решить.

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

Применение

[править | править код]

Hashcash концептуально схож с системами проверки правильности, используемыми в «Биткойн». Если в почтовых применениях предполагается, что получатель вручную контролирует объём работ систем проверки правильности работы для выигрыша в вычислительной мощности по закону Мура, то биткойн представляет p2p-сеть, которая внутренне автоматически регулирует объём работ. Также, в отличие от почты, где используются 20 бит (порядка 1 млн попыток для успешного поиска), биткойн использует 67,5 бит (необходимо порядка 200 млн триллионов попыток) и меняющийся критерий сложности, чтобы сгенерировать один из блоков, которые создаются каждые 10 минут. В биткойне скорректировали алгоритм, добавив поддержку работы с долями бит (первоначальная спецификация HashCash ограничивалась корректировкой целых степеней числа 2), тем самым удалось достичь более высокой точности.

Фильтры спама

[править | править код]

Hashcash используется как потенциальное решение проблемы ложного срабатывания автоматических спам-фильтров, так как обычный пользователь не испытывает проблем с дополнительным временем, необходимым для отметки[5].

SpamAssassin проверяет наличие отметок hashcash начиная с версии 2.70, присваивая отрицательные баллы (то есть считает менее похожим на спам) неиспользованным ранее отметкам hashcash. В версии 3.3x (последняя версия на момент написания) система даёт бонусные баллы для любых 20-битных и более отметок (максимум −5 баллов для 26-битных и более отметок). Однако, за уже использованную отметку записывается небольшой штраф[6].

Email-клиенты

[править | править код]

The Penny Post[7] на SourceForge реализует Hashcash для email-клиента Mozilla Thunderbird[8]. Проект назван в честь почтовой системы[англ.], где отправка писем стоит всего один пенни.

Microsoft также спроектировал и реализовал ныне устаревшую[9] открытую спецификацию, аналогичную hashcash, но несовместимую с ней — Email Postmark[10], ставшую частью Coordinated Spam Reduction Initiative (CSRI)[11]. Вариант hashcash, предложенный Microsoft, реализован в компонентах почтовых сервисов Microsoft, таких как Exchange, Outlook и Hotmail. Разница в формате между отметками hashcash и Microsoft в том, что отметка Microsoft хеширует также основную часть письма, а также использует модифицированный SHA-1 в качестве хеш-функции.

Весьма похожим образом блоги становятся жертвами спама в комментариях. Некоторые владельцы блогов использовали hashcash-скрипты, написанные на JavaScript, чтобы замедлить комментарии спамеров[12]. Некоторые скрипты (такие, как wp-hashcash) претендуют на реализацию Hashcash, но зависят от запутывания средствами JavaScript, заставляя клиента генерировать соответствующий ключ; в то время как это требует некоторой вычислительной мощности, они не используют алгоритм Hashcash или Hashcash-отметки.

Интеллектуальная собственность

[править | править код]

Hashcash не запатентован, а эталонная реализация[13] и большинство других реализаций являются свободно распространяемым ПО. Hashcash включён или доступен для многих дистрибутивов Linux. RSA сделал IPR заявления в IETF о client-puzzles алгоритмах[14] в контексте RFC[15], описывающем различные client-puzzles (не hashcash). RFC включил hashcash в статью и упомянул алгоритм, но механизм, описанный в ней, решает скорее интерактивную задачу, которая больше похожа на Client-Puzzles. Hashcash не интерактивен и, следовательно, не имеет известных решений. В любом случае, IPR утверждение RSA не может быть применено к hashcash, так как hashcash предшествует[2] (март 1997) публикации Client-puzzle[16] (февраль 1999) и патентной заявке US7197639[17] (февраль 2000).

Примечания

[править | править код]
  1. Криптовалюты в реальном времени. Investing.com. Дата обращения: 9 августа 2017. Архивировано 9 августа 2017 года.
  2. 1 2 A partial hash collision based postage scheme (Txt). Hashcash.org. Дата обращения: 13 октября 2014. Архивировано 24 сентября 2015 года.
  3. hashcash - hashcash anti-spam / denial of service counter-measure tool (Txt). Hashcash.org. Дата обращения: 13 октября 2014. Архивировано 3 марта 2016 года.
  4. Hashcash proof-of-work paper (PDF). Hashcash.org. Дата обращения: 13 октября 2014. Архивировано 15 января 2016 года.
  5. Hashcash FAQ. Hashcash.org (26 июня 2003). Дата обращения: 11 февраля 2014. Архивировано 12 октября 2013 года.
  6. SpamAssassin: Tests Performed: v3.3.x. Spamassassin.apache.org (21 декабря 2006). Дата обращения: 11 февраля 2014. Архивировано из оригинала 16 февраля 2014 года.
  7. Penny Post software project on SourceForge. Pennypost.sourceforge.net. Дата обращения: 13 октября 2014. Архивировано 21 августа 2008 года.
  8. Penny Post: What do you mean by Postage Stamp? Pennypost.sourceforge.net (16 июня 2008). Дата обращения: 11 февраля 2014. Архивировано 19 февраля 2014 года.
  9. Discontinued features and modified functionality in Outlook 2010. Office.microsoft.com. Дата обращения: 13 октября 2014. Архивировано 18 октября 2014 года.
  10. Email Postmark Validation Algorithm (PDF). Download.microdoft.com. Дата обращения: 13 октября 2014. Архивировано 26 ноября 2015 года.
  11. The Coordinated Spam Reduction Initiative: A Technology and Policy Proposal (PDF). Дата обращения: 11 февраля 2014. Архивировано 21 октября 2013 года.
  12. WP-Hashcash, a plugin for Wordpress blog software Архивировано 27 октября 2005 года. that implements a Hashcash-like facility, written in JavaScript, by Elliott Back
  13. C reference implementation. hashcash.org. Дата обращения: 13 октября 2014. Архивировано 9 декабря 2015 года.
  14. RSA Security Inc. has submitted a patent application (US Serial No. 09/496,824) (Txt). Ietf.org. Дата обращения: 13 октября 2014. Архивировано 26 сентября 2008 года.
  15. SIP Computational Puzzles. Tools.ietf.org. Дата обращения: 13 октября 2014. Архивировано 3 марта 2016 года.
  16. Client Puzzles. Дата обращения: 13 октября 2014. Архивировано 4 марта 2016 года.
  17. Client-puzzle patent filing. Google.com. Дата обращения: 13 октября 2014. Архивировано 8 декабря 2015 года.

Литература

[править | править код]
  • Adam Back, «Hashcash — A Denial of Service Counter-Measure», technical report, August 2002 (PDF).
  • Ben Laurie and Richard Clayton, «'Proof-of-Work' Proves Not to Work», WEIS 04. (PDF).
  • Dwork, C. and Naor, M. (1992) «Pricing via Processing or Combating Junk Mail», Crypto '92, pp. 139—147. (PDF)