Монети SHA256. Який алгоритм шифрування Біткоїна? Слабкі та сильні сторони алгоритму хешування Біткоіна

Функція хешування 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 є найпоширенішим серед криптовалютів. Це було викликано популярністю та успіхом біткоїну, і бажанням розробників альткоїнів створити подібні монети. Збільшення складності обчислень спонукали майнерів шукати способи майнути ефективніше, результатом чого стала поява асиків.


Шифрування Біткоіна побудовано з урахуванням SHA-256 - спеціальному алгоритмі, що є частиною програмного коду. Його завдання в тому, щоб перетворити вхідні дані на конкретний набір символів (у буквеному та цифровому відображенні) та захистити інформацію. Такі дії звуться хешування. У чому тонкощі вказаного алгоритму? Навіщо він необхідний, і як працює? Які переваги та недоліки? Ці та низку інших моментів розглянемо докладно.

Який алгоритм шифрування у Біткоіна, і де він застосовується?

Під час обговорення криптовалюти, особливостей її роботи та майнінгу учасники криптомережі неминуче наштовхуються на таке поширене визначення, як алгоритм шифрування Біткоіна. З дня розробки BTC до сьогодні (13 серпня 2018 року) використовується SHA-256, необхідна для вирішення таких завдань у Bitcoin-мережі:

  1. Формування адрес BTC (застосовуються для проходження транзакцій).
  2. Майнінг (доказ роботи).
  3. Досягнення необхідного ступеня безпеки та анонімності.
  4. Для цифрового підпису та його розпізнавання.
Алгоритм SHA-256 актуальний не тільки для Біткоїна, але і для інших коїнів, а саме Біткоїн Кеш, Мазакоїн, Піркоїн, Неймкоїн та інших криптовалют. Крім того, SHA-2 (основа SHA-256) використовується для створення багатьох протоколів, призначених для захисту даних в Мережі, а саме SSL, TSL та інших.

Алгоритм хешування Bitcoin необхідний контролю інформації за допомогою її аналізу та своєчасного виявлення неточностей. Після обробки даних та переведення в хеш зворотне отримання відомостей неможливе. Якщо взяти вже зашифрований BTC-файл, зробити повторні обчислення і переконатися, що параметри хешів ідентичні, можна бути впевненим у відсутності змін у початкових відомостях. Якщо дані розходяться, це свідчить про злом системи.

Алгоритм шифрування Біткоїн - принцип роботи простими словами


В основі SHA-2 лежить структура, створена Мерклом та Дамгардом. Особливість хеш-функції, що застосовується у криптографії, полягає у нестандартному підході при її формуванні. Вхідні дані діляться на ідентичні за величиною блоки, після чого створені елементи перетворюються на 16-річне число. Саме з ними згодом виробляються обчислення. До отриманого значення застосовується хеш-функція, а результатом обробки є хеш-сума, що з'являється на виході. Вона являє собою набір символів, представлених у буквеному та цифровому відображенні. По суті це і є хеш.

Черговий блок будується за описаним вище принципом. Новий процес запускається після створення минулого елемента. Якщо в початкові дані внесено зміни, хеш змінюється. У разі коли ідентичні параметри хеш-функції раптом опинилися в різних блоках, має місце конфліктна ситуація в роботі алгоритму. При появі такої невідповідності весь ланцюжок blockchain піддається сумніву.

Так, для створення цифрового підпису використовується хеш-функція. Якщо виникає розглянута ситуація, висока ймовірність підробки підпису. Для обчислення таких збоїв (колізій) використовується спеціальна методика, що передбачає перебір даних, що збільшує стійкість хеш-функції.

Коректність шифрування Bitcoin контролюється чотирма вимогами:

  1. При внесенні правок у вхідні дані хеш-сума залишається незмінною.
  2. Під час хешування виходить індивідуальна хеш-сума (набір символів має бути унікальним).
  3. Створення ключа із застосуванням хешування максимально ускладнене.
  4. Хеші мають незворотний характер. Це означає, що дозволено роботу з вхідними даними без можливості здійснення зворотної дії.

Як це застосовується в Біткоїні?

Завдання вузлів криптовалютної мережі у тому, щоб у численних транзакціях знайти ту, яка влаштовує його за всіма параметрами. Оцінюючи варіантів початкова увага приділяється розміру комісійних (до речі, з цієї причини операції з більшою комісією проходять швидше). Далі перевіряється операція, вивчаються дані на вході та виході, уточнюється оригінальність цифрового підпису.

Як тільки розглянута робота виконана, створюється черговий елемент Біткоін-ланцюга (блок) з певним розміром (для криптовалюти, що розглядається, - 1 мегабайт). Отримані вузли складаються з версії, часу формування, двох хешів (минулого блоку і угод, що входять), а також додаткових параметрів, що забезпечують унікальність (bits і nonce). У комплексі створений блок багато разів хешується, у результаті формується великий хеш, який для «старого» елемента ланцюга грає роль виходу, а нового – входу.

Припустимо, що у наборі хеша є конкретне число «0» (наприклад, nonce дорівнює 17). Підібрати таке значення, застосовуючи лише перебір значень, украй важко. Саме цей аспект забезпечує надійність відомостей у блоккайн-мережі та її захист від злому. Щоб створити хеш, потрібні величезні потужності, без яких знайти необхідний набір символів неможливо. Як тільки ця робота завершена, а параметр знайдений, він прямує до елементів криптомережі з новоствореним блоком і знайденим хешем з 17 «0». Далі всі учасники Біткоїн-мережі перевіряють хеш, поєднуючи набір із символів із відомостями із блоку. За відсутності колізії в ланцюжку блокчейн з'являється новий елемент.

Коли з'явився алгоритм шифрування Bitcoin – коротка історія


Термін "SHA" являє собою абревіатуру трьох слів: "Secure Hashing Algorithm". У Біткоїні використовується SHA-256, а "основою" згаданої хеш-функції є SHA-2, до складу якого входять багато криптоалгоритми (у тому числі 256).

Творцями SHA-2 є АНБ Сполучених Штатів – спеціальне агентство, яке займається питаннями національної безпеки країни. Після розробки та перевірки алгоритму у 2002 році він був представлений суспільству. До складу нового SHA-2 увійшла і перша хеш-функція SHA-1 (створена на 7 років раніше – у 1995-му). Після появи SHA-2 було випущено безліч варіантів алгоритму, один із яких застосований Сатоші Накамото під час створення Біткоіна у 2009 році.

Метою розробників був випуск алгоритму, що забезпечує формування випадкового набору символів конкретного значення, що має певну довжину. У них це вийшло. Надалі отриманий параметр застосовуються для ідентифікації (перевірки) інформації. Початкове завдання SHA-2 полягає у захисті даних на різних сервісах, а сьогодні (2018-го) SHA-256 відомий насамперед як алгоритм, який застосовується при видобутку коїнів.

У 2012 році система була вдосконалена та з'явилася оновлена ​​версія хеш-функції – SHA-3. Вважається, що з часом нова розробка витіснить колишні алгоритми, що покращить і так високий рівень безпеки.

Характеристики алгоритму шифрування Біткоіна


Суть SHA-256 проста. Початкове повідомлення після внесення доповнення ділиться на блоки, а кожен із них на 16 слів. Отримані елементи проходять через спеціальні цикли, що мають на увазі 64 або 80 етапів. На кожному з них відбувається перетворення двох слів, а опцію перетворення формують слова, що залишилися. Підсумкові параметри підсумовуються, що утворює хеш.

У процесі роботи алгоритму застосовується 6 команд:

  • "xor" - видаляє "АБО".
  • "shr" - зміщує показник на необхідну кількість біт вправо з конкретною періодичністю.
  • "rots" - зміщує показник на потрібну кількість біт вправо (без застосування конкретного циклу).
  • "II" - з'єднання елементів, що мають лінійний характер.
  • "and" - "І".
  • "+" - стеження.
Характеристики протоколу:
  1. Верхня межа тривалості повідомлення – 33 Б.
  2. Максимальний параметр швидкості – 139 MiB/s.
  3. Розмір слова – 4 Б.
  4. Кількість повторів у циклі – 64.
  5. Розмір блокового елемента - 64 Б.
  6. Розмір загального хеш-коду - 32 Б.

Алгоритм шифрування Bitcoin у майнінгу


При здійсненні розрахунків у межах майнінгу коректність хеш-коду, що отримується, визначається за кількістю нулів на початку рядка. Наприклад, якщо цей параметр дорівнює 17, можливість пошуку такого числа вкрай низька і становить десь 1:1,4*10 в 20-му ступені. Не дивно, що для майнінгу Bitcoin потрібне застосування потужного обладнання та великі витрати електроенергії. При цьому оптимізація пошуку потрібного хеш неможлива, адже після прийому блоку інформації на виході з'являється випадкове число.

Складність видобутку віртуальної монети полягає в тому, щоб знайти необхідний хеш і сформувати черговий блок. Для реалізації такої мети застосовується стандартний перебір значень, для чого потрібне високопродуктивне обладнання. Як згадувалося, ведеться пошук не простого хеша, а значення, попереду якого знаходиться велика кількість "0-ї".

Видобуток криптовалюти на SHA-256 є комплексом заходів, спрямованих на вирішення певної криптозадачі. У випадку з Біткоїном для майнінгу використовується таке обладнання:

  1. З моменту появи BTC у 2009-му, а також до середини 2010 року було актуальним застосування центрального процесора (CPU).
  2. До середини 2011 майнери задіяли комп'ютери з відеокартами (GPU).
  3. До початку 2013 року були популярними FGPA, а також ферми на графічних процесорах.
  4. 2014-го з'явилися асики. За продуктивністю вони перевершили існуюче обладнання. Незважаючи на це, до початку 2017 року майнери використовували ферми на GPU і працювали в пулах, але до кінця 2017-го і до сьогодні актуальні лише майнери. Застосування іншого устаткування невигідно.
Згадані апарати застосовуються для того, щоб підібрати хеш-функцію, що цікавить, і сформувати новий. Чим вище хешрейт (міч обчислення) апарату, тим швидше відбувається перебір даних і тим менше часу потрібно на пошук рішення.

Зі зростанням конкуренції та випуском більш продуктивних майнерів підвищується і параметр якої змінюється з періодичністю раз на 2 тижні.

Слабкі та сильні сторони алгоритму хешування Біткоіна


Вище ми розглянули, який алгоритм хешування у Біткоіна, і в чому його особливості. Це SHA-256, який вважається найбільш поширеним алгоритмом з високим рівнем надійності та порівняно простим принципом роботи. Він має високу стійкість до злому та дозволяє видобувати коїни на будь-якому устаткуванні (залежно від параметрів складності).

Незважаючи на низку позитивних якостей, алгоритм хешування Bitcoin має ряд слабких місць:

  1. Контроль із боку учасників видобутку BTC. Тут працює ідентичний принцип, як і в акціонерних товариствах (АТ), коли учасники компанії мають певну кількість акцій. Чим більші потужності зосереджені в руках майнерів криптомережі, тим сильніший їхній вплив на загальну систему. Крім того, через зростання складності видобутку в 2018 році помітна тенденція переходу майнінгу з рук приватних майнерів під контроль великих організацій, які займаються створенням обладнання для видобутку віртуальних монет. Для отримання Біткоїнів приватний майнер повинен витрачати великі суми на купівлю асиків, підключатися до одного з пулів та платити за електроенергію. Якщо заощаджувати на устаткуванні, видобуток втрачає рентабельність.
  2. Наслідком розглянутої ситуації є той факт, що «левова» частка Біткоінов концентрується в руках власників великих майнінгових компаній. Якщо взяти до уваги, що не всі отримані Bitcoin потрапляють у продаж, такі організації перетворюються на інвесторів та зберігачів монет. В результаті кількість коїнів в обороті знижується. Крім того, накопичення криптовалюти дозволяє впливати на децентралізацію, а також курсову вартість BTC у процесі торгів.
  3. Алгоритм SHA-256 через наявні недоліки поступово відходить у минуле, а на його місце приходять досконаліші проекти. Наприклад, популярність набирають Scrypt, Ethash, Blake-256, Equihash та інші. Нові алгоритми мають кращий захист та рівень безпеки, що змусило творців багатьох криптовалют відмовлятися від застарілого SHA-256 на користь досконаліших технологій.
  4. Незважаючи на виправлення головних помилок, виявлених розробниками, деякі вразливості прибрати не вдалося (у 2008 році було знайдено колізії для 22 ітерацій). Ось чому технологія SHA продовжилася, а на зміну другої версії прийшов SHA-3.
У 2009 році був змушений використовувати SHA-256, адже на період створення криптовалюти уряд штатів прийняв цей протокол. У той час він активно використовувався для захисту даних у деяких державних програмах, також задіявся в комерційному секторі. Вийшло, що протокол створювали для вирішення одних завдань, але насправді він затребуваний зовсім в іншому руслі.

Для наочності зведемо до таблиці позитивні та негативні риси алгоритму шифрування Біткоіна.

ПеревагиНедоліки
Широке поширення (зокрема у криптовалютному секторі). Протокол SHA активно застосовується у повсякденній сфері захисту інформації.Втрата децентралізації. Потужності концентруються у руках майнінгових компаній.
Надійний захист від злому.Ітерація у SHA має просту структуру, що згодом призвело до зростання складності видобутку. На серпень 2018-го для майнінгу Біткоїнів можна використовувати лише асики з високою продуктивністю.
Зручність у питаннях видобутку коїнів, універсальність у питанні вибору техніки для майнінгу.З'являються нові алгоритми, які мають досконалішу структуру.
У другому варіанті (SHA-2) творцям вдалося усунути ряд недоробок, які негативно впливають на надійність системи.Незважаючи на активну роботу над помилками, видалити багато недоліків так і не вдалося. Не дивно, що розробники створили нову версію SHA-3.
Протокол прийнято на законодавчому рівні США.

На сьогоднішній день майже не застосовується для розробки нових криптовалют. Найбільш яскравим прикладом монети, де ще використовується SHA-256, є Bitcoin Cash – форк Bitcoin, що з'явився у серпні 2017-го. Але в ситуації з цією монетою застосування SHA більше потреби, ніж вибір творців. Що стосується самого Bitcoin, використання протоколу цієї серії обумовлено відсутнім альтернативами у Сатоші Накамото.

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

Відео про криптографічні функції та алгоритми:

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 - криптографічний набір інструкцій для майнінгу криптовалют. Іншими словами, він надійно захищає всі транзакції в мережі та ускладнює видобуток електронних монет. Ця абревіатура розшифровується як Secure Hashing Algorithm, що означає вкрай затребуваний та ефективний спосіб хешування.

Суть SHA 256 - у перетворенні інформації на значення, цифри. Цей ланцюжок має фіксовану довжину. Це означає, що будь-які відомості, що передаються вами в мережі, будуть зашифровані спеціальними значеннями - ідентифікаторами (ID).

При здійсненні транзакцій алгоритм SHA 256 порівнює ID з вихідними даними, які неможливо отримати, після чого надає доступ до операції. Зараз цей протокол використовується у видобутку криптовалют, таких як BTC та BCH.

Історія появи

Як вийшло, що Bitcoin почав використовувати SHA 256? Все почалося з того, що алгоритм став членом сімейства SHA-2, які мають розмір ланцюжка хешу 224-512 біт.

Вони, у свою чергу, були створені на основі прадіда – SHA-1, у якого хеш був завдовжки 160 біт. Технологія з'явилася 1995 року, і було призначено використання у цивільних цілях - тобто шифрування звичайної, не державно-важливої ​​інформації.

Сімейство SHA-2, до якого належить SHA 256, було розроблене Агентством національної безпеки 16 років тому – навесні 2002. Виходячи з цього, можна сказати, що алгоритм морально застарів. Однак він, як і раніше, є одним із найнадійніших алгоритмів для шифрування транзакцій у мережі.

Технічні характеристики SHA 256

Алгоритм призначений для даних, поділених на рівні частини по 64 байти. SHA 256 забезпечує їх збір та об'єднання в єдиний 256-бітовий ланцюжок. Основною для методу є операція шифрування, яка виконується у циклі 64 рази.

Короткі характеристики алгоритмічних інструкцій SHA 256:

  • блоки 64-бітного розміру - найшвидше працює з 32-бітними;
  • пікова довжина зашифрованого ланцюжка інформації - 33 байти;
  • обсяг дайджесту повідомлення - 32 байти;
  • стандартизований розмір одного слова – 4 байти;
  • циклічність шифрування в одному раунді операції – 64 байти;
  • швидкість, де працює алгоритм - 140 Мбіт/с.

Цей член сімейства SHA-2 базується на основі, яку описав Меркл-Дамгард. Це означає, що перед розподілом інформації на слова відбувається поділ даних на блоки. Процес посилює шифрування з допомогою перемішування даних.

Набір інформації проводиться на діапазоні від 64 до 80 повторень. Кожен наступний цикл перетворює створені блоки на слова. Кінцевий результат, зокрема хеш, створюється шляхом підсумовування всіх початкових значень.

Криптовалюти з алгоритмом SHA 256

Як і говорилося раніше, таким набором інструкцій має не тільки Bitcoin, а й:

  • peercoin, особливість якого полягає в тому, що код створюється на основі битка, але PoS застосовується для захисту всієї мережі, а PoW відповідає за розподіл монет;
  • namecoin – цифрова валюта, яка виступає засобом захисту, конфіденційності, децентралізації; unobtanium - відрізняється вкрай низькою інфляцією, щоб видобути всі монети потрібно щонайменше 300 років;
  • deutsche eMark – німецька мікромережа, яка використовується для обміну активами та грошима. Сам процес відбувається без посередників; betaCoin - працює за таким же принципом, як і всесвітньо відомий BitCoin;
  • jouleCoin - також базується на дідусеві біткоїні, проте забезпечує більш швидке підтвердження транзакцій;
  • steemit – навіть не окрема крипта, а ціла платформа на блокчейні. Її головне завдання – нагородження за цікаві публікації.

Litecoin також використовує алгоритм SHA 256, проте не у всій системі, а в підпрограмі. Для видобутку лайткоїну застосовується захисний протокол Scrypt, що позначається на збільшенні складності майнінгу та знижує окупність асиків.

Майнінг криптовалюти на основі алгоритму SHA 256

Для видобутку електронних монет, що ґрунтуються на сімействі SHA-2, необов'язково використовувати спеціалізовані засоби – ASIC. У майнінгу чудово себе показують і ферми на основі CPU та GPU. Останній за швидкістю явно перевершує перший.

І все ж таки асик - найкраще рішення для майнінгу криптовалют. Його переваги до певної міри нівелює значна ціна - близько 100 тисяч рублів, моделі потужніші і зовсім перевалюють за 500 000. Зі зростанням складності падає окупність. Тому обладнання не завжди виправдовує себе, хоча забезпечує набагато вищу швидкість майнінгу, ніж ферми на відеокартах і тим більше ЦП.

Видобуток на GPU вважається більш-менш прибутковим. Загалом, вся ферма коштуватиме приблизно $1000-2000 плюс додаткове обладнання - зокрема, системи охолодження для відеокарт. Також варто враховувати оренду приміщення, оплату електроенергії та зарплату обслуговуючому персоналу.

Серед відеокарт непогано показує себе GTX 1080 Ti від Nvidia. Вона видає швидкість 1400 вдалих операцій на секунду. AMD трохи відстає зі своїми картами лінійки Vega – 1200 MH/s. Є й дешевші варіанти на кшталт Radeon 7970, проте його швидкість не перевищує 800 MH/s.

Алгоритм SHA 256 хоч і старий, але, як і раніше, використовується в Bitcoin - криптовалюті №1 у світі. Протокол застосовується і в низці інших перспективних альткоїнів. На зміну SHA256 поступово приходить Scrypt, проте біткоїн не планує на нього переходити. Щодо майнінгу все просто - якщо є гроші, беріть асики з високою швидкістю хешування. Бажаєте більш економне рішення? Тоді будуйте ферму із відеокарт AMD або Nvidia.

  • Переклад

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