Валюты на алгоритме sha 256. Все криптовалюты на алгоритме SHA256

SHA-256 представляет собой однонаправленную функцию для создания цифровых отпечатков фиксированной длины (256 бит, 32 байт) из входных данных размером до 2,31 эксабайт (2⁶⁴ бит) и является частным случаем алгоритма из семейства криптографических алгоритмов SHA-2 (Secure Hash Algorithm Version 2 ) опубликованным АНБ США в 2002 году.

Хеш-функции семейства SHA-2 построены на основе структуры Меркла - Дамгарда.

Исходное сообщение после дополнения разбивается на блоки, каждый блок - на 16 слов. Алгоритм пропускает каждый блок сообщения через цикл с 64 итерациями. На каждой итерации 2 слова преобразуются, функцию преобразования задают остальные слова. Результаты обработки каждого блока складываются, сумма является значением хеш-функции. Так как инициализация внутреннего состояния производится результатом обработки предыдущего блока, то нет возможности обрабатывать блоки параллельно. Графическое представление одной итерации обработки блока данных:

На текущий момент известны методы для конструирования коллизий до 31 итерации. Ввиду алгоритмической схожести SHA-2 с SHA-1 и наличия у последней потенциальных уязвимостей принято решение, что SHA-3 будет базироваться на совершенно ином алгоритме. 2 октября 2012 года NIST утвердил в качестве SHA-3 алгоритм Keccak.

Алгоритм расчёта отпечатка в виде псевдокода:

Пояснения:
Все переменные беззнаковые, имеют размер 32 бита и при вычислениях суммируются по модулю 232
message - исходное двоичное сообщение
m - преобразованное сообщение Инициализация переменных
(первые 32 бита дробных частей квадратных корней первых восьми простых чисел [от 2 до 19]):
h0:= 0x6A09E667
h1:= 0xBB67AE85
h2:= 0x3C6EF372
h3:= 0xA54FF53A
h4:= 0x510E527F
h5:= 0x9B05688C
h6:= 0x1F83D9AB
h7:= 0x5BE0CD19 Таблица констант
(первые 32 бита дробных частей кубических корней первых 64 простых чисел [от 2 до 311]):
k :=
0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 Предварительная обработка:
m:= message ǁ [единичный бит ]
m:= m ǁ , где k - наименьшее неотрицательное число, такое что
(L + 1 + K) mod 512 = 448, где L - число бит в сообщении (сравнима по модулю 512 c 448)
m:= m ǁ Длина (message) - длина исходного сообщения в битах в виде 64-битного числа с порядком байтов от старшего к младшему Далее сообщение обрабатывается последовательными порциями по 512 бит:
разбить сообщение на куски по 512 бит
для каждого куска разбить кусок на 16 слов длиной 32 бита (с порядком байтов от старшего к младшему внутри слова): w Сгенерировать дополнительные 48 слов:
для i от 16 до 63
s0:= (w rotr 7) xor (w rotr 18) xor (w shr 3)
s1:= (w rotr 17) xor (w rotr 19) xor (w shr 10)
w[i] := w + s0 + w + s1
Инициализация вспомогательных переменных:
a:= h0
b:= h1
c:= h2
d:= h3
e:= h4
f:= h5
g:= h6
h:= h7 Основной цикл:
для i от 0 до 63
Σ0:= (a rotr 2) xor (a rotr 13) xor (a rotr 22)
Ma:= (a and b) xor (a and c) xor (b and c)
t2:= Σ0 + Ma
Σ1:= (e rotr 6) xor (e rotr 11) xor (e rotr 25)
Ch:= (e and f) xor ((not e) and g)
t1:= h + Σ1 + Ch + k[i] + w[i] h:= g
g:= f
f:= e
e:= d + t1
d:= c
c:= b
b:= a
a:= t1 + t2 Добавить полученные значения к ранее вычисленному результату:
h0:= h0 + a
h1:= h1 + b
h2:= h2 + c
h3:= h3 + d
h4:= h4 + e
h5:= h5 + f
h6:= h6 + g
h7:= h7 + h Получить итоговое значения хеша:
digest = hash = h0 ǁ h1 ǁ h2 ǁ h3 ǁ h4 ǁ h5 ǁ h6 ǁ h7

Алгоритм используется:

  • Bitcoin  - эмиссия криптовалюты через поиск отпечатков с определёнными рамками значений
  • DNSSEC  - дайджесты DNSKEY
  • DSA  - используется для создания электронной цифровой подписи
  • IPSec  - в протоколах ESP и IKE
  • OpenLDAP  - хеши паролей
  • PGP  - используются для создания электронной цифровой подписи
  • S/MIME  - дайджесты сообщений
  • SHACAL-2  - блочный алгоритм шифрования
  • X.509  - используются для создания электронной цифровой подписи сертификата

Функция хеширования SHA 256 легла в основу самой первой криптовалюты в мире - биткоина и многих альткоинов. Знаете ли вы, что она была создана задолго до появления криптовалют и предназначалась совсем для других целей? Сегодня мы рассмотрим историю алгоритма, принцип его функционирования, текущие проблемы и какие криптовалюты используют SHA256.

История

Название алгоритма SHA 256 является аббревиатурой от Secure Hashing Algorithm. Так его назвал разработчик - Агентство национальной безопасности США. Алгоритм представляет собой функцию хеширования. Это означает, что на ее вход поступает объем данных произвольной длины, а на выходе получается набор символов фиксированной длины, называемый хешем.

Одна из ключевых особенностей функций хеширования hash - необратимость. Мы можем получить хеш, пропустив исходные данные через функцию, но, зная хеш, получить исходные данные не удастся. Благодаря этому свойству функция получила распространение в разных сервисах и приложениях, где требуется защита данных. Ежедневно мы пользуемся алгоритмом SHA 256, посещая сайты в Интернете. Его включает в себя сертификат безопасности SSL, необходимый для установления защищенного соединения с сайтом.


Алгоритм является частью семейства SHA-2, разработанных на базе SHA-1, появившегося в 1995 году. С момента своего появления sha256 подробно проверялся на стойкость с помощью криптоанализа. Криптоанализ проверяет устойчивость хеш-функций к двум основным видам атак:
  • Нахождение коллизий - обнаружение одинаковых хешей при разных параметрах на входе. Вероятность успеха данной атаки ставит под угрозу безопасность цифровой подписи с применением текущего алгоритма.
  • Нахождение прообраза - возможность расшифровывать исходное сообщение по его хешу. Данная атака ставит под угрозу безопасность хранения хешей паролей аутентификации.

Впервые анализ был проверен в 2003 году, но тогда уязвимости не были найдены. Время шло, вычислительные мощности развивались. В 2008 году были найдены коллизии для итераций SHA-512 и SHA-256. В сентябре того же года был разработан метод создания коллизий для 31 итерации SHA256 и 27 итераций SHA-512.

Очевидно, что настала пора разрабатывать новую криптостойкую функцию. В 2012 году АНБ был изобретен SHA-3. Постепенно обновленный алгоритм будет вытеснять своих менее криптостойких предшественников.

Майнинг на SHA 256

Законодательство США разрешает использовать SHA и похожие хеш-функции как часть других протоколов и алгоритмов в некоторых федеральных приложениях для защиты информации, не имеющих грифа «Секретно». Допускается применение SHA-2 частными и коммерческими организациями.

Ничего удивительного, что он был использован в криптовалютах. Майнеры собирают все транзакции в блок, а затем начинают его хешировать. Когда найдено соответствующее правилам системы значение хеша, блок считается готовым к прикреплению в конец блокчейна. Новый блок найдет тот, кто может вычислять значения хешей очень быстро. Скорость вычислений зависит от мощности оборудования. Для майнинга биткоина может быть использовано три типа оборудования:

  • CPU (центральный процессор);
  • GPU (видеокарты);
  • ASIC (специализированное устройство).

Сеть биткоина устроена таким образом, что каждый новый блок должен быть найден раз в 10 минут. Число участников сети постоянно меняется, а время должно оставаться неизменным. Чтобы обеспечить одинаковое время нахождения, система регулирует сложность вычислений в зависимости от количества майнеров. В последнее время криптовалюты обрели популярность, и количество майнеров сильно возросло. Чтобы блоки не находились слишком быстро, сложность вычислений тоже возросла.


Биткоин начинали майнить на процессорах. Затем, когда их мощности стало не хватать, перешли на видеокарты. Вскоре и видеокарты перестали справляться. Тогда изобрели асики - специальные устройства, заточенные на вычисления по алгоритму sha 256. Один асик намного мощнее и энергоэффективнее нескольких видеокарт.

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

Впрочем, это легко посчитать. Существуют калькуляторы для расчета прибыльности майнинга на sha256. Например, https://www.coinwarz.com/miningprofitability/sha-256 . Введите в форму хешрейт своего оборудования (вычислительная мощность), потребляемую энергию и ее стоимость, сервис рассчитает прибыль.

Альткоины SHA-256

Рассмотрим перечень и список криптовалют, работающих на sha 256.

Bitcoin Cash (BCH)

Отделившийся от него 1 августа 2017 года. Размер блока в классическом биткоине равен 1 мб. Сеть разрослась настолько, что все транзакции перестали помещаться в блок. Это привело к образованию очередей из транзакций и увеличению комиссии за проведение платежей. Сообществом было принято решение ввести новый протокол, согласно которому блок увеличился до 2 мб, часть информации стала храниться за пределами блокчейна и уменьшились сроки пересчета сложности с двух недель до суток.

Namecoin (NMC)

Представляет собой систему хранения и передачи комбинаций вида «имя-значение», основанную на технологии биткоин. Самым известным ее применением стала система распределения доменных имен, независимая от ICANN, а значит, делающая невозможным изъятие домена. Namecoin была запущена в 2011 году, она работает на ПО для майнинга биткоина, перенаправленное на сервер, где работает Namecoin.

DigiByte (DGB)

Криптовалюта, запущенная в 2013 году с целью улучшить характеристики биткоина и лайткоина. Отличия DigiByte:

  • Низкая волатильность достигается за счет огромного количества выпускаемых монет (до 21 млрд), что позволяет обеспечить их низкую стоимость и удобство для использования в расчетах;
  • Быстрые транзакции за счет увеличения размера блока вдвое каждые два года;
  • Низкие комиссии или их отсутствие;
  • Процесс майнинга распределен на пять алгоритмов, позволяющих добывать монеты независимо друг от друга. Можно использовать асики для SHA-256 и Scrypt, видеокарты для Groestl и Skein, процессор для Qubit.

Алгоритм SHA 256 является самым распространенным среди криптовалют. Это было вызвано популярностью и успехом биткоина, и желанием разработчиков альткоинов создать подобные монеты. Увеличение сложности вычислений побудили майнеров искать способы майнить эффективнее, результатом чего стало появление асиков.

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

  • как лучше распорядиться собственным оборудованием (CPU, видеокартой, ASIC-майнером);
  • куда направить арендованные вычислительные мощности в данный момент;
  • какие монеты - на Scrypt или на SHA 256 - приносят больший доход с учетом равенства остальных параметров (сложности сети, трендов в развитии, динамики курса и т.д.).

В статье мы рассмотрим, что такое Scrypt и SHA 256, определим их принципиальные отличия и произведем сравнение доходности.

Сравнительная характеристика алгоритмов применительно к майнингу

Принципиальное отличие Scrypt от SHA 256 (или как иногда пишут в Рунете «Скрипт от Ша») в том, что в первом случае для майнинга криптовалют необходим гораздо больший объём памяти вычислительного устройства, чем во втором случае с алгоритмом SHA 256.

По сути, Scrypt в 2009 году и появился как альтернатива SHA 256.

Эс-крипт (Скрипт) часто называют криптографической хеш-функцией, но, скорее, это функция формирования секретного ключа - KDF. Задача функции - затруднить генерацию паролей, но «в меру», чтобы процедуру можно было использовать в прикладных задачах.

Саму хеш-функцию SHA 256 Scrypt использует в качестве подпрограммы. Благодаря применению Скрипта в криптосистемах при майнинге вычислительное устройство должно одновременно:

  • производить большое число математических вычислений;
  • устанавливать быстрый доступ к памяти;
  • использовать большие объёмы оперативной памяти.

Такие требования в первые годы использования алгоритма сильно затрудняли изготовление специализированного оборудования (ASIC-майнеров) и до сих пор делают цену производства и конечную стоимость таких устройств более высокой, чем при изготовлении асиков под SHA 256, которые были выпущены в числе первых. Однако с учётом того, что современные GPU-устройства оснащены достаточно большим объёмом памяти, криптовалюты семейства Scrypt до сих целесообразно добывать на видеокартах, собранных в майнинговые фермы и подключенных к пулам. Таким образом, если речь идёт о домашнем майнинге, то дилемма Sha-256 или Scrypt решается просто - в зависимости от наличия вычислительных устройств.

Если майнер располагает асиком для добычи криптовалют на Sha-256 (а сейчас очень много дорогих и не очень моделей с разной вычислительной мощностью от разных производителей), то, соответственно, и криптовалюты будут выбираться из перечня монет семейства Sha-256. Лучшие Sha 256-монеты: Bitcoin, Steemit, NeosCoin, Peercoin, PascalCoin и ещё десятки других. SHA 256 вместе с Scrypt вообще неизменно входят в пятерку самых распространенных криптографических хеш-функций.

Если у майнера есть только видеокарты, то при выборе из этих двух алгоритмов, рентабельнее заняться майнингом монет семейства Scrypt. В перечне таких альткоинов сейчас более 300 наименований. В 2013 году криптосистемы на этом алгоритме запускались чуть ли ни каждую неделю. При этом большинство из них были форками Litecoin - криптовалюты, которая до сих возглавляет список данного семейства по значимости, востребованности и прочим оценочным параметрам (капитализация, объем продаж, стоимость коина и т.д.). Помимо Litecoin, на Scrypt работают Dogecoin, BitConnect, Syscoin, Novacoin, Bitmark и другие, ещё более экзотические криптовалюты.

При этом надо иметь в виду, что несмотря на анонсирование производителями оборудования Scrypt-асиков, разработчики криптовалют тоже не сидят сложа руки. Хеш-функции совершенствуется и усложняются. Так, например, поработав с параметрами динамического объёма памяти (увеличением объёма памяти и числа перемешиваний), разработчики Скрипта выпустили варианты алгоритма: Scrypt-N и Scrypt-jane.

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

Применение вычислительных мощностей: выбор направления добычи

Если провести ретроспективный анализ сопоставления рентабельности обеих хеш-функций на протяжении нескольких последних лет, то, не считая сверхприбыли от кратковременного скачка Bitcoin до 20 тысяч долларов, системно рентабельнее показывает себя майнинг Scrypt-криптовалют.

На рубеже 2015-16 годов покупка мощностей под Sha-256 приносила порядка 0,02-0,03$ в сутки, в то время как мощности под Scrypt приносили около 0,06-0,09$ в сутки, в зависимости от сложности сети криптовалют. Через год из-за возросшей сложности сети большинства криптовалют соотношение несколько изменилось, и разница перестала быть такой внушительной. Но отставание в прибыльности Sha-256 сохранилось.

Важно, что даже при одинаковой доходности майнинга, прибыльность может существенно отличаться, поскольку арендная плата неравномерно «съедает» часть заработка. Так, например, при вложении одинаковой суммы в 1500 долларов, в зависимости от выбранного алгоритма можно было купить разный объем мощностей, оплата которых для Sha 256 стоила $105 в месяц, а для Scrypt - $30 в месяц. Поэтому при равной месячной доходности в $284 прибыль отличалась и составляла:

  • $179 для Sha 256 (с окупаемостью в 8,5 месяца);
  • $254 для Scrypt (с окупаемостью в 6 месяцев).

К началу 2018 года прибыльность Scrypt была приблизительно на 40-46% выше, чем прибыльность SHA 256 (если считать полученную прибыль на каждый вложенный доллар). Корректным можно считать следующее соотношение:

  • Для SHA 256 прибыль с $1 = $0,0038;
  • Для Scrypt прибыль с $1 = $0,0056

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

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

Что такое майнинг?

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

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

Одним из самых популярных протоколов вычисления является SHA-256. Именно его использует первая криптовалюта в мире - Биткоин. Причем для повышения уровня безопасности алгоритм задействуется 2 раза и именуется уже двойным.

В Bitcoin критерием пригодности хеша считается необходимое количество «0» в его начале. Обнаружить подобное значение также невероятно трудно, как, например, отыскать номер автомобиля или сотового, кончающегося на пару 0. Разумеется, сделать такое для хеш-функции в много раз сложнее. В настоящее время, правильное значение должно включать приблизительно 17 начальных нулей, чему соответствует лишь одно из 1,4 умноженное на 10 в 20 степени. Проводя сравнение, отыскать подобный хеш значительно сложнее, нежели отыскать определенную песчинку среди всей нескончаемой массы песка на планете.

Первоначальная версия алгоритма SHA-256 была создана Агентством национальной безопасности США весной 2002 года. Спустя несколько месяцев Национальный метрологический университет опубликовал новоявленный протокол шифрования в принятом на федеральном уровне стандарте безопасной обработки данных FIPS PUB 180-2. Зимой 2004 года он пополнился второй версией алгоритма.

В течение следующих 3 лет АНБ выпустила патент на SHA второго поколения под лицензией Royalty-free. Именно это дало старт применению технологии в гражданских сферах.

Обратите внимание! Довольно интересный факт: каждый пользователь Всемирной паутины, сам того не зная, во время своих путешествий по интернету пользуется данным протоколом. Посещение любого веб-ресурса, защищенного сертификатом безопасности SSL, автоматически запускает выполнение алгоритма SHA-256.

Данный протокол работает с информацией, раздробленный на части по 512 бит (или другими словами 64 байта). Он производит ее криптографическое «смешивание», а затем выдаёт 256-битный хеш-код. В состав алгоритма входит сравнительно простой раунд, который повторяется 64 раза.

Кроме того, SHA-256 имеет довольно неплохие технические параметры:

  • Показатель размера блока (байт) – 64.
  • Предельно допустимая длина сообщения (байт) – 33.
  • Характеристика размера дайджеста сообщения (байт) – 32.
  • Стандартный размер слова (байт) – 4.
  • Параметр длины внутреннего положения (байт) – 32.
  • Число итераций в одном цикле – всего 64.
  • Достигаемая протоколом скорость (MiB/s) – примерно 140.

Работа алгоритма SHA-256 базируется на методе построения Меркла-Дамгарда, в соответствии с которым начальный показатель сразу после внесенного изменения разделяется на блоки, а те, в свою очередь, на 16 слов.

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

Также стоит упомянуть 6 битовых операций, на основе которых функционирует протокол:

  • «and» - побитовая операция «И»;
  • «shr» - перемещает значение на требуемое количество бит вправо;
  • «rots» - команда аналогичная по действию предыдущий, с той лишь разницей, что осуществляется циклический сдвиг;
  • «||» или конкатенация - операция соединения частей линейной структуры, чаще всего строк;
  • «xor» - команда, убирающая «ИЛИ»;
  • «+» - обыкновенная операция сложения.

Как можно заметить, довольно типичный для любого алгоритма шифрования набор операций.

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

Первые исследования SHA-256 на присутствие уязвимостей начали осуществляться специалистами с 2003 года. На тот момент ошибок в протоколе обнаружено не было.

Однако, уже в середине 2008 года группа экспертов из Индии смогла отыскать коллизии для 22 итераций архитектур семейства SHA. Через несколько месяцев был предложен способ разработки коллизий для усеченного варианта протокола, а затем и для 31 итерации хеширования непосредственного самого SHA-256.

Во время анализа функции свертки осуществляется тестирование ее сопротивляемости к 2 разновидностям атак:

  1. Наличие прообраза - дешифрование начального сообщения по его хеш-коду. Сопротивляемость подобному типу воздействия гарантирует надежную защиту результатам преобразования.
  2. Нахождение коллизий - схожие выходные данные при различных входных характеристиках. От устойчивости к такой разновидности атак находится в прямой зависимости защищенность электронной подписи с использованием актуального протокола.

Создатели второго поколения алгоритма SHA решили, что новый механизм шифрования будет функционировать на основе совершенно других принципов. Так, осенью 2012 года на свет появился протокол третьей серии - Keccak.

Практическое применение и сертификация технологии

Законодательством Соединенных Штатов Америки разрешается использование SHA-256 и прочих аналогичных методов хеширования в определенных государственных программах для защиты сведений. Кроме того, допускается применение алгоритма коммерческими компаниями.

Важно! Поэтому нет ничего удивительного в том, что данный протокол был использован в первой цифровой валюте. Выпуск новых монет Биткоина совершается путем нахождения строк по их указанной архитектуре SHA-256.

Как это сказывается на специализированных устройствах для добычи криптовалюты? Каждый шаг в этом алгоритме имеет довольно простой вид - примитивная битовая операция и 32-битное сложение (любой, кто знаком с основами схемотехники, сможет без труда представить, как подобное выглядит в железе). А потому для эффективной работы асик-майнеров нужно лишь располагать десятком блоков выполнения этапов алгоритма.

В противовес Bitcoin, Лайткоин, Догикоин и прочие схожие «коины» используют протокол шифрования Scrypt, который оснащен функцией повышения сложности. Данный алгоритм в ходе деятельности сохраняет 1024 различных значения хеш-функций, а уже на выходе соединяет их и получает преобразованный результат. Благодаря этому для реализации протокола нужны несравнимо большие вычислительные мощности.

Вывод

Подводя итог, можно сказать, что протокол SHA-256 оказался чересчур легким и сегодня имеется целое множество специализированных девайсов (так называемые майнеры), которые успешно обходят его. С их появлением отпала необходимость майнить на процессоре или собирать фермы из видеокарт, поскольку ASIC-устройства позволяют своим владельцам заработать намного больше. Однако, у этого есть и обратная сторона. Использование майнеров слишком сильно централизует криптовалюту, а значит, необходимо внедрение новых протоколов хеширования. Таким алгоритмом стал Scrypt - куда более продвинутый защитный механизм, который требует значительной производительности и поэтому теоретически лишает специальные приборы особого преимущества.

С позиции рядового пользователя нет никакой разницы между протоколами SHA-256 и Scrypt. Можно майнить цифровую валюту своим компьютером или фермой на любом из данных протоколов.

Алгоритм SHA-256 на сегодняшний день занимает более 40% всего рынка, однако, вне всякого сомнения, имеются и другие. И в скором времени они потеснят прославленного предшественника. Так, из сравнительно свежих необходимо упомянуть об особенно «майнероустойчивом» протоколе Dagger, который собираются использовать в децентрализованной площадке Эфириум. Возможно, именно он примет эстафету лидера в области хеширования и займет место SHA-256.

Ушедший 2017 год стал годом взрывной популярности криптовалют и такого же стремительного роста курса «главной» криптомонеты Bitcoin. Эти обстоятельства подогрели интерес не только к спекуляциям и майнингу, но и к самой сути явления. Все больше людей желают докопаться до сути – как же это все работает?

Мы открываем серию материалов, в которых постараемся в максимально доступной форме объяснить, что стоит за этими загадочными акронимами вроде Scrypt, SHA-256, Х11 и прочими. Начнем с важнейшего (но не самого лучшего) для мира криптовалют алгоритма — SHA-256. Именно он является основой разработки Bitcoin. Но перед этим определимся с ключевой терминологией – определим значения терминов «майнинг» и «хэш».

Что такое майнинг?

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

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

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

Что такое хэш?

Выше был упомянут далеко не каждому понятный термин «хеш». Это одно из фундаментальных понятий в шифровании вообще и в алгоритме SHA-256 в частности. Разъясним, что это значит, и пройдемся по важнейших сопутствующих моментах.

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

Приведем пример. Мы можем «скормить» хеш-функции, скажем, текст романа в стихах А. С. Пушкина «Евгений Онегин», и получим на выходе шестнадцатеричный код приблизительно такого вида:. Обратно «развернуть» этот код и превратить его в «Евгения Онегина», конечно же, нельзя. Но стоит только в поэме поменять один-единственный знак, даже просто добавить один пробел, как результирующий хеш преобразится до неузнаваемости. Объем тоже никак не влияет на длину хеш-кода. Так, можно подать на вход функции один символ «а», и на выходе получится точно такой же набор псевдослучайных символов ровно такой же длины.

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

В интерфейсе программного обеспечения для майнинга процессы преобразования блоков в хеш-суммы отображаются в виде лаконичной строки вида «Accepted 0aef59a3b». Блок может состоять из тысяч или даже сотен тысяч подобных строк, но только одна может служить той самой «подписью» блока, в поиске которой и заключается суть майнинга.

Поиск правильного хеша осуществляется простым перебором результатов решения огромного числа задач. В алгоритме SHA-256 «правильность» хеша определяется количеством нулей в начале хеш-суммы. Вероятность узнать такой хеш-код путем определенных алгоритмом вычислений ничтожно мала – один шанс на миллионы решений. Точная вероятность определяется текущим уровнем сложности в децентрализованной системе конкретной криптовалюты.

Примечательный факт. С алгоритмом SHA-256 каждый из нас неоднократно имел дело, сам того не подозревая, даже безотносительно майнинга криптовалют. Речь о сертификате безопасности SSL, которым защищены очень многие веб-сайты. При посещении такого сайта вы автоматически взаимодействуете с SHA-256, на котором построена работа SSL.

Особенности протокола SHA-256

Для начала немного истории. Изначально алгоритм шифрования SHA-256, вернее, его прототип, был придуман в стенах «зловещего» АНБ (Агентства национальной безопасности США) в теперь уже далеком 2002 году. Уже через пару месяцев он был видоизменен и официально представлен Национальным метрологическим университетом на федеральном уровне. Через два года вышла его вторая, усовершенствованная версия.

Последующие три года Агентство работало над улучшением алгоритма и в конце концов издало патент на его вторую редакцию. Это было сделано под лицензией Royalty-free, что и дало возможность применять новейшую технологию в «мирных» целях.

В конечном счете SHA-256 лег в основу создания первой в мире криптовалюты – Bitcoin. При этом протокол задействуется дважды для повышения защиты.

При проведении вычислений в рамках майнинга в системе Bitcoin признаком пригодности получаемого хеш-кода является число нулей в начале строки. По состоянию на конец 17-го, начало 18-го годов количество требуемых начальных нулей равно 17 (+/-). Вероятность обнаружения такого кода составляет приблизительно 1 к 1.4*10 20 . Это чудовищно малое число, не поддающееся осмыслению и сравнимое с вероятностью отыскать песчинку определенной формы на всех песчаных пляжах нашей планеты. Вот почему майнинг Биткойна требует таких огромных вычислительных мощностей и столько электроэнергии.

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

Теперь мы вынуждены немного «подгрузить» читателя сложной технической информацией, иначе наш рассказ о SHA-256 будет неполным. Если совсем ничего не понятно – просто переходите к следующему разделу статьи.

Работа протокола подразумевает разбиение информации на фрагменты по 512 бит каждый (или 64 байта, что то же самое, так как 1 байт = 8 бит). Затем происходит криптографическое «перемешивание» по заложенной в алгоритме схеме, и на выходе издается хеш-код размером в 256 бит. Операция хеширования производится в 64 итерации, что относительно немного, особенно на фоне новых появившихся криптографических алгоритмов.

Основные технические параметры SHA-256 следующие:

  • Размер блока: 64 байт;
  • Максимальная длина сообщения: 33 байт;
  • Размер результирующего хеш-кода: 32 байт;
  • Количество повторений в одном раунде: 64;
  • Максимальная скорость: около 140 MiB/s (мебибайт в секунду).

В своей работе алгоритм использует известную методику Меркла-Дамгарда, которая подразумевает разделение начального показателя на блоки сразу после внесения изменений. Блоки, в свою очередь, делятся на 16 слов каждый.

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

Эволюция SHA-256

Чтобы осознать криптографическую ценность данного алгоритма, снова обратимся к истории. Всерьез испытывать его на прочность начали практически сразу после создания – в 2003 году. Делом занимались профессионалы, но никаких уязвимостей или ошибок найдено не было.

Прошло целых пять лет, когда в 2008 году индийские эксперты все-таки смогли выявить коллизии для целых 22 итераций. Через несколько месяцев упорной работы было предложено успешное решение проблемы.

В ходе анализа работы функциональной части алгоритма тестировалась его устойчивость к двум видам возможных способов обрушения защиты:

  • через прообраз: имеется в виду обратное дешифрование изначального сообщения на основе только хеш-строки;
  • через обнаружение коллизий: здесь подразумеваются совпадение исходящих данных при условии различия входящих сообщений. То есть, входящие блоки разные, а исходящий хеш одинаков – такого быть не должно.

После того как первая версия SHA-256 провалила испытания по второму признаку, разработчики решили создавать новый механизм шифрования, основанный на кардинально иных принципах. Что и было сделано – в 2012 году был представлен протокол нового поколения, полностью лишенных вышеописанных недостатков.

Недостатки алгоритма

То, что разработчикам удалось исправить собственные ошибки, отнюдь не значит, что SHA-256 им получилось довести до совершенства. Протокол избавился от явных уязвимостей, но его «родные» недостатки остались.

Применение SHA-256 в качестве основы Биткойна стало возможным не в последнюю очередь благодаря тому, что само законодательство США лояльно относилось к этому протоколу. Его разрешалось применять для защиты данных в некоторых госпрограммах, а также допускалось использование в коммерческой сфере.

Отсюда и проистекает ирония судьбы – протокол создавался для одних целей, а наиболее широкое применение нашел в совершенно других. И для тех, первых целей он был более чем эффективным и целесообразным. А вот, для криптовалют оказался слишком простым. Шутка ли, когда в том же Китае уже существуют даже не фермы, а целые «заводы», забитые асик-майнерами.

Каждая итерация в рамках алгоритма выглядит довольно примитивно – элементарная двоичная операция плюс 32-разрядное сложение. Именно поэтому асики на SHA-256 появились столь молниеносно, умножив на ноль все надежды «домашних» майнеров, располагающих только процессором и парочкой видеокарт.

Времена и условия сильно меняются, и протоколу SHA-256 уверенно наступают на пятки другие, более совершенные решения. Тот же Scrypt в процессе вычислений фиксирует сначала 1024 разных хеш-строк, и только после этого проводит сложение и получает окончательный результат. Это несоизмеримо более сложная схема с высочайшими показателями защиты и безопасности криптовалюты.

Резюме

Алгоритм шифрования SHA-256 считался вполне эффективны и надежным до тех пор, пока не начался бум на криптовалюты. На сегодняшний день становится ясно, что на фоне новых решений он уже выглядит довольно слабо. Настолько, что это дало возможность создать специальные устройства, «заточенные» строго на его обход. Это и есть те самые ASIC-майнеры, которые фактически уничтожили майнинг на центральных процессорах и уже добивают майнинг на видеокартах.

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

Протокол SHA-256 на нынешний момент занимает львиную долю рынка криптовалют, но новые альтернативы его уже сейчас уверенно теснят. Например, вторая по популярности и «дороговизне» крипта – Ethereum использует протокол Ethash, который раньше назывался Dagger. Протокол настолько хорош, что Ethereum по сей день держит максимальную децентрализацию, и ASIC-майнеров для его добычи до сих пор не существует в природе. Возможно, именно Ethash придет на смену явно морально устаревшему SHA-256.

Одним из первых альтернативных алгоритмов стал Scrypt, на котором основана одна из самых популярных альткоинов – Litecoin. Это гораздо более продвинутое решение, которое уже не дает асикам таких бесспорных преимуществ. Тем не менее, сверхприбыли от майнинга заставили специалистов Поднебесной вложить массу усилий в разработку технологических решений под Scrypt, и асики на этом протоколе все-таки появились.

Если рассматривать майнинг с позиции обывателя, не искушенного в технических нюансах, то никакой разницы между алгоритмами Scrypt и SHA-256 он не почувствует. Асики на обоих протоколах выглядят почти одинаково, потребляют приблизительно столько же электроэнергии и совершенно одинаково завывают вентиляторами. Другое дело – курсы криптовалют, которые эти самые асики добывают, но это уже совсем другая история.

Следующий материал в рамках данной темы мы посвятим упомянутому альтернативному протоколу шифрования Scrypt.

Поделитесь с друзьями или сохраните для себя:

Загрузка...