Что выгоднее майнить алгоритм 256. Расшифровка Sha256 и особенности майнинга. Технический принцип работы алгоритма

Каждый, кто пробовал майнить и добывать цифровую валюту рано или поздно сталкивался с таким термином как SHA256. Что же обозначают этот акроним, какими особенностями обладает, как работает? Обо всем этом и многом другом поговорим подробнее.

SHA256.

Расшифровка SHA256 – сокращение от Secure Hashing Algorithm – это актуальный на сегодня алгоритм хеширования, созданный National Security Agency – Агентством национальной безопасности США. Задача данного алгоритма заключается в том, чтобы выполнить из случайного набора данных определённые значения с длиной, которая зафиксирована. Эта длина является идентификатором. Значение, которое получится, сравнивается с дубликатами изначальных данных, получить которые нет возможности.

Главная область, где используется алгоритм SHA256 – применение в разного рода приложениях или сервисах, что связаны с защитой информационных данных, где Secure Hashing Algorithm и распространилось. Также при помощи алгоритма выполняется майнинг цифровых валют.

SHA-256 – это криптографическая хэш-функция.

Как мы все знаем, при майне криптомонет, мы разрешаем исходную задачу, пользуясь процессорами CPU или GPU. Процессы отражены в интерфейсе программы для майна, к примеру, в виде строки «Accepted 0aef41a3b». 0aef41a3b и является хэш. Это информация для раскодировки, которой соответствует хэшированный код, который будет получен. Сказать иначе – это строчка расшифрованных данных, тогда как главный виртуальный блок данных включает в себя тысячи, а то и миллионы такого рода строчек.


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

Многие думают, что для разрешения задач, что связаны с хэш при применении протокола SHA256, понадобится мощнейшее аппаратное обеспечение?


Да, это имеет место быть. Чем больше применяется вычислительной мощности, тем лучше, так как шансы на добычу криптовалюты (SHA256 miner) повышаются. Однако важно понимать, что монеты на SHA256 зарабатывает огромное количество майнеров. Есть те, у кого наиболее мощное аппаратное обеспечение. Но расстраиваться не следует, у каждого есть все шансы победить. Это словно лотерейный розыгрыш, невозможно предугадать, когда улыбнется фортуна! SHA256 майнинг – увлекательный и интересный процесс, позволяющий заработать виртуальные монеты.

Технический принцип работы алгоритма


Algorithm SHA256 сегодня реализован во всех действующих на рыночной платформе ASIC-майнерах, в то время как оборудование ASIC для других хэш-функций майнинга ещё только на стадии разработки.

Кроме Биткоин, майн путем алгоритма SHA256, используется во многих других виртуальных валют-клонах. Например, его применяют альткойны Пииркоин и Нэймкоин. Многим интересно при использовании SHA256, какие криптовалюты используются.

Наиболее актуальны следующие:

  1. Ocoin.
  2. Тekcoin.
  3. Zetacoin и др.

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

И задачи, которые разрешает ПК могут быть устроены не одинаково – одни базируются на алгоритме SHA256, а другие на Scrypt (разработаны и другие, но эти наиболее актуальные среди майнеров). К примеру, всем знакомый Биткоин зарабатывают по алгоритму Sha256, а криптовалюта DogeCoin добывается по Scrypt. Сказать иначе, разные цифровые валюты применяют различные алгоритмы. По какой причине?

А вот почему – Sha256 оказался не сложным и сегодня, появилось большое число спецустройств (они именуются ASIC), которые разрешают задачи на этом алгоритме очень оперативно, быстрее стандартных мощных процессоров, так эти ASIC приносят майнерам в разы больше криптовалюты, чем обычное компьютерное оборудование. Ниже представлено видео, на котором можно понять каким является технический принцип работы алгоритма.

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


SHA256 имеет некие преимущества перед другими алгоритмами. Это наиболее востребованный алгоритм майна среди всех существующих. Он показал себя как надежный к взламыванию (случается не часто) и результативный алгоритм как для задач майна, так и для прочих целей.

Имеются и недостатки:

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

Несмотря на то, что в наши дни SHA256 занимает рыночную основу крипто, он будет ослаблять своё влияние в пользу наиболее надежных и современных протоколов. Пулы SHA256 сдадут позиции. Так алгоритмы SHA–1 перестали давать требуемый уровень защиты из–за вероятного развития коллизий.

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

Майнинг при помощи хэш-функции SHA256 можно осуществлять 3 методами:

  1. ASIC.

В майне хеш–сумма применяется как идентификатор уже присутствующих блоков, и создания новых на основе тех, что имеются. Процесс майна отражен в интерфейсе в виде «accepted f33ae3bc9…». Где f33ae3bc9 – это хешированная сумма, часть данных, которая требуется для дешифровывания. Главный блок включает в себя огромное число такого рода хеш-сумм. То есть, добыча с алгоритмом SHA256 – это подбор правильного значения хешированной суммы без остановки, перебор чисел для того, чтобы создать очередной блок. Чем мощнее оборудование, тем больше шансов стать владельцем того самого правильного блока: скорость перебирания разного рода сумм зависит от мощностей. Потому как Биткоин построен на алгоритме SHA256, для конкурентоспособного майна на нём требуются крайне большие вычислительные мощности.

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

Какие еще криптовалюты SHA–256 можно добывать? SHA–256 это классика для цифровых валют: на нем выстроена основная виртуальная валюта – Bitcoin. Именно поэтому, и в форках биткоинаприменяется этот хеш: в Биткоин каш, Голд, Диамонд.

Кроме них, SHA–256 применяется также в:

  1. Стимит.
  2. Дигибайт.
  3. Пиркоин.
  4. Нэймкоин.
  5. Тиккоин.
  6. Окоин.
  7. Зетакоин.
  8. Эмиркоин.

Также алгоритм применяется как подпрограмма в цифровой валюте Лайткоин, а главным алгоритмом для майна там будет Scrypt.

Псевдокод хеш: функции


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

  1. ChaCha20.
  2. Salsa6420/8.

Первостепенно мы имеем Salsa20/8. Это довольно несложная функция, основной задачей функционирования которой является приём 192-байтной строчки (из цифр и букв) и последующее её преобразование в 64-байтную строчку Salsa20 (х).


Salsa20 двухкомпонентная: потоковое шифрование для шифра данных и функция сжатия (алгоритм Румба20), которая нужна для сжатия 192-байтной строчки до 64-байтной. Сказать иначе: строчка может быть больше 64-байтной, пока не станет равна 192-байтной, при этом строчка будет сжиматься до 64 байтов. ChaCha20 имеет небольшие сходства с Сальса20: это также поточное шифрование, но оно предусматривает некоторые дополнительные возможности, например, повышение стойкости к криптоанализ.

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

К слову, на понижение времени раунда оказывают влияние различные факторы. Еще одна важнейшая функция перемешивания информации в Скрипт-Джейн – это Salsa6420/8. Она усовершенствованная версия Salsa20/8, и дает возможность работать с наиболее высокобайтными блоками. Кроме этих функций, Скрипт Джейн поддерживает также ряд хешированных, среди которых присутствует и SHA256. Алгоритмом также поддерживается наиболее инновационный её вариант SHA512.

Пример хеширования


Что же такое хеширование? Идея хеш основана на распределении ключей в стандартном массиве H. Распределение происходит путем вычисления для каждого ключа элемента некой хешированно функции h. Она на основе ключа помогает получить целое число n, которое послужит индексом для массива H. Понятное дело, следует придумать такую хешированную функцию, которая бы давала разный код для разнообразных объектов. К примеру, если в качестве ключа хешированной таблицы следует применить строки, то можно подобрать хешированную функцию, которая основана на таком алгоритме (пример на С): int hash(char* str) {int h = 0; for (int i=0; i

Где m – размер хешированной таблицы, C – константна, большая любого ord(c), а ord() – функция, которая возвращает код символа (число). Для отдельного типа данных можно создать свою хешированную функцию. Но разработаны основные требования к функции: она должна расставлять ключи по ячейкам хешированной таблицы как наиболее равномерно, и должна легко находиться. Ниже предложена таблица. Можно понять, что индексами ключей в хешированной таблице является результат функции h, которая применена к ключу.


Также изображение показывает одну из главных проблем. При довольно низком значении m (размера хешированной таблицы) по отношению к n (числу ключей) или при плохой функции, может произойти так, что 2 ключа будут хешированные в общую ячейку массива H. Это коллизия.

Хорошие функции стремятся свести к нулю шанс формирования коллизий, но, принимая во внимание то, что пространство всех ключей, которые возможны, может быть больше размера хешированной таблицы H, всё-таки избежать их не получится. Но специалистами разработано ряд технологий для разрешения коллизий. Настройка pool SHA256 для добычи монет отображена на видео. Можно понять, как майнить криптовалюту.

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

Как работает алгоритм SHA-256?

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

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

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

Какое отношение алгоритм SHA-256 имеет к майнингу?

Осуществляя майнинг монет на графических картах или процессорах, в консоли мы видим сообщения следующего формата: «Accepted 0aef41a3b». 0aef41a3b и является тем хешем, который ищут все майнеры, то есть сокращенной копией какого-то большого массива данных. Эти несколько символом по существу представляют собой блок, состоящий из сотен, тысяч и миллионов подобных строк.

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

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

Какие монеты используют алгоритм SHA-256 ?

На сегодняшний день, помимо биткоина, на SHA-256 работают и другие криптовалюты, например:

  • ZetaCoin.
  • NameCoin.
  • PeerCoin.
  • EmerCoin.

Несмотря на некоторые свои недостатки в контексте криптовалютного сегмента, монеты, основанные на алгоритме SHA-256, продолжают удерживать свои позиции. Чего стоит только биткоин, который сегодня продается по цене около 7,5 тыс. долларов за монету, а также занимает первое место в рейтинге по капитализации.

Ушедший 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.

  • Перевод

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

Один криптографический раунд

Майнинг

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

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

В биткойне критерием валидности хэша является достаточное число нулей в его начале. Найти такой хэш так же сложно, как, к примеру, найти номер машины или телефона, заканчивающийся на несколько нулей. Но, конечно, для хэша это экспоненциально сложнее. На текущий момент, правильный хэш должен содержать примерно 17 стартовых нулей, чему удовлетворяет только 1 из 1.4x10 20 . Если провести аналогию, то найти такое значение сложнее, чем обнаружить конкретную частичку среди всего песка на Земле .

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

Функция большинства (Ma блок) побитово работает со словами A, B и C. Для каждой битовой позиции она возвращает 0, если большинство входных битов в этой позиции - нули, иначе вернёт 1.

Блок Σ0 циклически сдвигает A на 2 бита, затем исходное слово A циклически сдвигается на 13 бит, и, аналогично, на 22 бита. Получившиеся три сдвинутые версии A побитово складываются по модулю 2 (обычный xor, (A ror 2) xor (A ror 13) xor (A ror 22) ).

Ch реализует функцию выбора. На каждой битовой позиции проверяется бит из E, если он равен единице, то на выход идёт бит из F с этой позиции, иначе бит из G. Таким образом, биты из F и G перемешиваются, исходя из значения E.

Σ1 по структуре аналогичен Σ0, но работает со словом E, а соответствующие сдвиговые константы - 6, 11 и 25.

Красные блоки выполняют 32-битное сложение, формируя новые значения для выходных слов A и E. Значение W t генерируется на основе входных данных (это происходит в том участке алгоритма, который получает и обрабатывает хэшируемые данные. Он вне нашего рассмотрения). K t - своя константа для каждого раунда.

На схеме сверху заметно, что только A и E меняются за один криптографический раунд. Остальные слова не меняются, но сдвигаются на выходе - старое A превращается в выходное B, старое B - в новое C, и так далее. Хотя отдельный раунд алгоритма не сильно изменяет данные, но после 64 раундов, входная информация будет полностью зашифрованной.

Майним вручную

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


Немного поясню что происходит: я записал слова от A до H в шестнадцатеричной форме, и под каждым сделал перевод в двоичный вид. Результат выполнения блока Ma находится под словом C, а значения A после сдвигов и сам выход Σ0 располагаются над строкой с A. Функция выбора появляется под G, и, наконец, соответствующие сдвинутые версии E и значение после блока Σ1 идут над строкой с E. В нижнем правом углу произвёл сложение, результат которого участвует в вычислении и нового A, и нового E (первые три красных блока суммирования). Справа сверху я рассчитал новое значение A, а посерёдке располагается уже расчет нового значения E. Все эти шаги обсуждались выше и легко могут быть отслежены на схеме.

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


Последний раунд SHA-256, в результате которого виден успешно смайненный биткойн-блок

Что всё это значит для проектирования «железных» майнеров?

Каждый шаг в SHA-256 очень просто выглядит в цифровой логике - простые битовые операции и 32-битные суммирования (если вы когда-либо изучали схемотехнику, то, скорее всего, уже представили себе как это может выглядеть в железе). Поэтому ASIC-микросхемы реализуют SHA-256 очень эффективно, размещая параллельно сотни блоков исполнения SHA-256 раундов. Фотография ниже показывает микросхему для майнинга, которая может вычислять 2-3 миллиарда хэшей в секунду. На Zeptobars можно поглядеть больше фото.


Снимок кремниевого кристалла ASIC-микросхемы Bitfury, которая может майнить биткойны со скоростью в 2-3 гигахэшей в секунду. Картинка с Zeptobars . (CC BY 3.0)

В противоположность биткойну, Litecoin, Dogecoin и другие похожие альтернативные -coin системы используют алгоритм хэширования scrypt , в котором изначально заложена сложность реализации в железе. Этот алгоритм во время выполнения хранит в памяти 1024 разных значений хэша, а уже на выходе комбинирует их для получения конечного результата. Поэтому требуется куда больше памяти и схематики для вычисления scrypt-хэшей по сравнению с SHA-256-хэшами. Влияние изменения алгоритма хэширования наглядно видно при сравнении соответствующего аппаратного обеспечения для майнинга - версии под scrypt (Litecoin и прочие) в тысячи раз медленнее, чем версии под SHA-256 (биткойн).

Заключение

SHA-256 неожиданно оказался настолько простым, что может быть вычислен даже вручную (алгоритм на эллиптических кривых, который используется для подписи биткойн-транзакции, был бы куда более мучительным, так как содержит кучу перемножений 32-байтных чисел). Расчет одного раунда SHA-256 занял у меня 16 минут, 45 секунд. С такой производительностью хэширование всего биткойн-блока (128 раундов ) займёт 1,49 суток, то есть получаем скорость хэширования в 0,67 хэшей в день (на самом деле, конечно же, с практикой процесс бы ускорился). Для сравнения, текущее поколение биткойн-майнеров производит несколько терахэшей в секунду, что примерно в квинтиллион раз быстрее меня. Думаю, очевидно, что ручной майнинг биткойнов не очень практичен.

Читатель с reddit"a спросил о моих затратах энергии. Так как я не прилагаю каких-то серьезных физических усилий, то можно предположить что скорость метаболизма будет 1500 килокалорий в день, тогда получаем, что ручное хэширование требует почти 10 мегаджоулей за хэш. Типичное потребление энергии для железного майнера - 1000 магехэшей за джоуль. Таким образом, я менее энергоэффективен чем специализированная железка в 10^16 раз (10 квадриллионов). Другой вопрос в стоимости энергии. Дешевым источником питания являются пончики по 23 цента за 200 килокалорий. Электроэнергия у меня стоит 15 центов за киловатт-час, что дешевле пончиков в 6.7 раз. В итоге, стоимость энергии в пересчете на хэш для меня, как человека-майнера, в 67 квадриллионов раз выше. Да-а-а, понятно, что я не ухвачу удачу за хвост ручным майнингом биткойнов, и это еще не учитывая стоимость бумаги и ручек!

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