Monety na SHA256. Jaki jest algorytm szyfrowania Bitcoin? Słabe i mocne strony algorytmu haszującego Bitcoin

Funkcja mieszająca SHA 256 stała się podstawą pierwszej kryptowaluty na świecie – Bitcoina i wielu altcoinów. Czy wiesz, że powstał na długo przed pojawieniem się kryptowalut i miał zupełnie inne cele? Dziś przyjrzymy się historii algorytmu, zasadzie jego działania, aktualnym problemom oraz tym, które kryptowaluty korzystają z SHA256.

Fabuła

Nazwa algorytmu SHA 256 jest akronimem od Secure Hashing Algorithm. Tak to nazwał deweloper – amerykańska Agencja Bezpieczeństwa Narodowego. Algorytm jest funkcją mieszającą. Oznacza to, że na wejściu znajduje się zbiór danych o dowolnej długości, a na wyjściu zbiór znaków o ustalonej długości, zwany skrótem.

Jedną z kluczowych cech funkcji skrótu jest nieodwracalność. Możemy uzyskać hash, przekazując oryginalne dane przez funkcję, ale znając hash, nie będziemy mogli uzyskać oryginalnych danych. Dzięki tej właściwości funkcja ta stała się powszechna w różnych usługach i aplikacjach, w których wymagana jest ochrona danych. Na co dzień odwiedzając strony w Internecie korzystamy z algorytmu SHA 256. Zawiera certyfikat bezpieczeństwa SSL, który jest wymagany do nawiązania bezpiecznego połączenia z witryną.


Algorytm należy do rodziny SHA-2, opracowanej na bazie algorytmu SHA-1, który pojawił się w 1995 roku. Od samego początku sha256 był szeroko testowany pod kątem wytrzymałości za pomocą kryptoanalizy. Kryptoanaliza testuje odporność funkcji skrótu na dwa główne typy ataków:
  • Znajdowanie kolizji - wykrywanie identycznych skrótów z różnymi parametrami wejściowymi. Wskaźnik powodzenia tego ataku zagraża bezpieczeństwu podpisu cyfrowego przy użyciu obecnego algorytmu.
  • Znalezienie obrazu wstępnego to możliwość odszyfrowania oryginalnej wiadomości przy użyciu jej skrótu. Atak ten zagraża bezpieczeństwu przechowywania skrótów haseł uwierzytelniających.

Analiza została po raz pierwszy przetestowana w 2003 roku, ale wtedy nie znaleziono żadnych luk. W miarę upływu czasu moc obliczeniowa rosła. W 2008 roku znaleziono kolizje dla iteracji SHA-512 i SHA-256. We wrześniu tego samego roku opracowano metodę tworzenia kolizji dla 31 iteracji SHA256 i 27 iteracji SHA-512.

Oczywiście nadszedł czas na opracowanie nowej funkcji kryptoodpornej. W 2012 roku NSA wynalazła SHA-3. Stopniowo zaktualizowany algorytm będzie wypierał swoje mniej odporne na krypto-odporne poprzedniki.

Wydobywanie na SHA 256

Prawo Stanów Zjednoczonych zezwala na używanie SHA i podobnych funkcji skrótu jako części innych protokołów i algorytmów w niektórych federalnych aplikacjach zapewniających bezpieczeństwo informacji nieobjętych klauzulą ​​tajności. SHA-2 może być używany przez organizacje prywatne i komercyjne.

Nic dziwnego, że zastosowano go w kryptowalutach. Górnicy zbierają wszystkie transakcje w bloku, a następnie rozpoczynają jego mieszanie. Kiedy zostanie znaleziona wartość skrótu zgodna z regułami systemowymi, blok uważa się za gotowy do dołączenia na końcu łańcucha bloków. Nowy blok znajdzie ktoś, kto potrafi bardzo szybko obliczyć wartości skrótu. Szybkość obliczeń zależy od mocy sprzętu. Do wydobywania Bitcoinów można używać trzech rodzajów sprzętu:

  • Procesor (jednostka centralna);
  • GPU (karty graficzne);
  • ASIC (urządzenie specyficzne dla aplikacji).

Sieć Bitcoin jest zaprojektowana w taki sposób, że każdy nowy blok musi zostać znaleziony raz na 10 minut. Liczba uczestników sieci stale się zmienia, ale czas musi pozostać stały. Aby zapewnić równy czas przebywania, system dostosowuje trudność obliczeniową w zależności od liczby górników. Kryptowaluty zyskały ostatnio popularność, a liczba górników dramatycznie wzrosła. Aby zapobiec zbyt szybkiemu znajdowaniu bloków, wzrosła również złożoność obliczeń.


Na procesorach zaczęto wydobywać Bitcoin. Następnie, gdy ich moc stała się niewystarczająca, przeszli na karty graficzne. Wkrótce karty graficzne nie mogły już sobie z tym poradzić. Następnie wynaleziono układy ASIC - specjalne urządzenia przeznaczone do obliczeń przy użyciu algorytmu sha 256. Jeden układ ASIC jest znacznie mocniejszy i bardziej energooszczędny niż kilka kart graficznych.

Przedsiębiorczy górnicy tworzą ogromne farmy z układów ASIC. Oprócz wysokich kosztów samego sprzętu, takie gospodarstwo otrzymuje co miesiąc rachunki za prąd rzędu kilkudziesięciu tysięcy dolarów. Teraz wydobycie bitcoinów ma sens tylko w takich farmach przemysłowych, komputer domowy, czy nawet farma z kilkoma kartami graficznymi nie będzie w stanie z nimi konkurować, a nawet odzyskać prądu.

Jednak łatwo to obliczyć. Istnieją kalkulatory do obliczania opłacalności wydobycia na sha256. Na przykład https://www.coinwarz.com/miningprofitability/sha-256. Wpisz w formularzu hashrate swojego sprzętu (moc obliczeniową), zużycie energii oraz jej koszt, a serwis wyliczy Twój zysk.

Altcoiny SHA-256

Spójrzmy na listę i listę kryptowalut, które działają na sha 256.

Gotówka Bitcoin (BCH)

Oddzielony od niego 1 sierpnia 2017 r. Rozmiar bloku w klasycznym Bitcoinie wynosi 1 MB. Sieć rozrosła się tak bardzo, że wszystkie transakcje nie mieszczą się już w bloku. Doprowadziło to do powstania kolejek transakcji i wzrostu opłat za dokonanie płatności. Społeczność zdecydowała się na wprowadzenie nowego protokołu, zgodnie z którym zwiększono blok do 2 MB, część informacji zaczęto przechowywać poza blockchainem, a ramy czasowe na przeliczenie złożoności skrócono z dwóch tygodni do jednego dnia.

Namecoin (NMC)

Jest to system przechowywania i przesyłania kombinacji nazwa-wartość oparty na technologii Bitcoin. Jego najbardziej znanym zastosowaniem jest system dystrybucji nazw domen, który jest niezależny od ICANN i dlatego uniemożliwia przejęcie domeny. Namecoin został uruchomiony w 2011 roku i działa na oprogramowaniu do wydobywania Bitcoinów przesłanym na serwer, na którym działa Namecoin.

Cyfrowy bajt (DGB)

Kryptowaluta wprowadzona na rynek w 2013 roku w celu poprawy wydajności Bitcoina i Litecoina. Różnice DigiByte:

  • Niską zmienność osiąga się dzięki ogromnej liczbie wyemitowanych monet (do 21 miliardów), co zapewnia ich niski koszt i łatwość wykorzystania w obliczeniach;
  • Szybsze transakcje dzięki podwojeniu wielkości bloku co dwa lata;
  • Niskie prowizje lub brak prowizji;
  • Proces wydobycia podzielony jest na pięć algorytmów, które pozwalają wydobywać monety niezależnie od siebie. Możesz używać układów ASIC dla SHA-256 i Scrypt, kart graficznych dla Groestl i Skein oraz procesora dla Qubit.

Algorytm SHA 256 jest najpowszechniejszy wśród kryptowalut. Było to spowodowane popularnością i sukcesem Bitcoina oraz chęcią twórców altcoinów do tworzenia podobnych monet. Wzrost złożoności obliczeniowej skłonił górników do poszukiwania sposobów na wydajniejsze wydobycie, co zaowocowało pojawieniem się układów ASIC.


Szyfrowanie Bitcoin opiera się na SHA-256, specjalnym algorytmie będącym częścią kodu programu. Jego zadaniem jest konwersja danych wejściowych na określony zestaw znaków (w reprezentacji alfabetycznej i numerycznej) oraz ochrona informacji. Takie działania nazywane są haszowaniem. Jakie są subtelności tego algorytmu? Dlaczego jest to potrzebne i jak to działa? Jakie są zalety i wady? Rozważymy te i wiele innych punktów szczegółowo.

Jaki algorytm szyfrowania ma Bitcoin i gdzie jest używany?

Omawiając kryptowalutę, cechy jej działania i wydobycia, uczestnicy sieci kryptowalut nieuchronnie natrafiają na tak powszechną definicję, jak algorytm szyfrowania Bitcoin. Od dnia powstania BTC do dnia dzisiejszego (13 sierpnia 2018) używany jest SHA-256, który jest niezbędny do rozwiązania następujących problemów w sieci Bitcoin:

  1. Tworzenie adresów BTC (używanych do transakcji).
  2. Górnictwo (dowód pracy).
  3. Osiągnięcie wymaganego stopnia bezpieczeństwa i anonimowości.
  4. Do podpisu cyfrowego i jego rozpoznawania.
Algorytm SHA-256 ma znaczenie nie tylko dla Bitcoina, ale także dla innych monet, a mianowicie Bitcoin Cash, Mazacoin, Peercoin, Namecoin i innych kryptowalut. Ponadto SHA-2 (baza SHA-256) służy do tworzenia wielu protokołów przeznaczonych do ochrony danych w Internecie, a mianowicie SSL, TSL i innych.

Algorytm mieszający Bitcoin jest niezbędny do kontrolowania informacji poprzez ich analizę i terminową identyfikację nieścisłości. Gdy dane zostaną przetworzone i zamienione na hash, odzyskanie informacji jest niemożliwe. Jeśli bierzesz już zaszyfrowany plik BTC, wykonaj obliczenia ponownie i upewnij się, że parametry skrótu są identyczne, możesz być pewien, że nie ma żadnych zmian w oryginalnych informacjach. Jeśli dane się różnią, oznacza to włamanie do systemu.

Algorytm szyfrowania Bitcoina – jak to działa w prostych słowach


SHA-2 opiera się na frameworku stworzonym przez Merkle i Damgaarda. Osobliwością funkcji skrótu stosowanej w kryptografii jest niestandardowe podejście do jej tworzenia. Przychodzące dane dzielone są na bloki o jednakowej wielkości, po czym utworzone elementy są konwertowane na liczby szesnastkowe. To na nich dokonywane są następnie obliczenia. Do wynikowej wartości stosowana jest funkcja skrótu, a wynikiem przetwarzania jest suma skrótu wyświetlana na wyjściu. Jest to zestaw znaków prezentowany w formie alfabetycznej i numerycznej. Zasadniczo jest to skrót.

Kolejny blok budowany jest według zasady opisanej powyżej. W tym przypadku nowy proces zostaje uruchomiony po utworzeniu poprzedniego elementu. Jeśli w oryginalnych danych zostaną wprowadzone zmiany, skrót ulegnie zmianie. W przypadku nagłego pojawienia się identycznych parametrów funkcji mieszającej w różnych blokach, dochodzi do sytuacji konfliktowej w działaniu algorytmu. Kiedy pojawia się taka rozbieżność, cały łańcuch blockchain staje pod znakiem zapytania.

Dlatego do utworzenia podpisu cyfrowego używana jest funkcja skrótu. W przypadku wystąpienia opisanej powyżej sytuacji istnieje duże prawdopodobieństwo sfałszowania podpisu. Aby obliczyć takie awarie (kolizje), stosuje się specjalną technikę polegającą na wyliczaniu danych, co zwiększa siłę funkcji skrótu.

Poprawność szyfrowania Bitcoin kontrolują cztery wymagania:

  1. Po wprowadzeniu zmian w danych przychodzących wartość skrótu pozostaje taka sama.
  2. Podczas mieszania uzyskiwana jest indywidualna suma skrótu (zestaw znaków musi być unikalny).
  3. Tworzenie klucza za pomocą hashowania jest niezwykle skomplikowane.
  4. Hashe są nieodwracalne. Oznacza to, że dozwolona jest praca z danymi wejściowymi bez możliwości wykonania działań odwrotnych.

Jak to się ma do Bitcoina?

Zadaniem węzłów sieci kryptowalut jest znalezienie w licznych transakcjach takiego, który będzie im odpowiadał pod każdym względem. Przy ocenie opcji początkowo zwraca się uwagę na wysokość prowizji (nawiasem mówiąc, z tego powodu transakcje z większą prowizją są realizowane szybciej). Następnie sprawdzana jest operacja, badane są dane wejściowe i wyjściowe oraz wyjaśniana jest oryginalność podpisu cyfrowego.

Po zakończeniu rozważanej pracy tworzony jest kolejny element łańcucha Bitcoin (blok) o określonym rozmiarze (dla danej kryptowaluty - 1 megabajt). Powstałe węzły składają się z wersji, czasu utworzenia, dwóch skrótów (przeszły blok i transakcje przychodzące), a także dodatkowych parametrów zapewniających unikalność (bity i nonce). W kompleksie utworzony blok jest wielokrotnie haszowany, w wyniku czego powstaje hash głowy, który pełni funkcję wyjścia dla „starego” elementu łańcucha i jako wejście dla nowego.

Załóżmy, że zestaw skrótów zawiera określoną liczbę „0” (na przykład wartość jednorazowa wynosi 17). Wybranie takiej wartości na podstawie samego wyliczenia wartości jest niezwykle trudne. To właśnie ten aspekt zapewnia wiarygodność informacji w sieci blockchain i jej ochronę przed włamaniem. Aby utworzyć skrót, wymagana jest ogromna moc, bez której nie da się znaleźć wymaganego zestawu znaków. Po zakończeniu tej pracy i znalezieniu parametru jest on wysyłany do elementów sieci kryptograficznej z nowo utworzonym blokiem i znalezionym hashem z 17 „0”. Następnie wszyscy uczestnicy sieci Bitcoin sprawdzają hash, łącząc zestaw znaków z informacjami z bloku. Jeżeli nie ma kolizji, w łańcuchu blockchain pojawia się nowy element.

Kiedy pojawił się algorytm szyfrujący Bitcoin – krótka historia


Termin „SHA” jest skrótem od trzech słów: „Bezpieczny algorytm mieszania”. Bitcoin wykorzystuje SHA-256, a „bazą” wspomnianej funkcji skrótu jest SHA-2, który zawiera wiele algorytmów kryptograficznych (w tym 256).

Twórcami SHA-2 jest amerykańska NSA, specjalna agencja zajmująca się kwestiami bezpieczeństwa narodowego kraju. Po opracowaniu i przetestowaniu algorytm został udostępniony publicznie w 2002 roku. W nowym SHA-2 pojawiła się także pierwsza funkcja skrótu SHA-1 (utworzona 7 lat wcześniej – w 1995 r.). Od czasu wprowadzenia SHA-2 wypuszczono wiele wariantów algorytmu, z których jeden został wykorzystany przez Satoshi Nakamoto podczas tworzenia Bitcoina w 2009 roku.

Celem twórców było wypuszczenie algorytmu, który zapewniłby utworzenie określonej wartości o określonej długości z losowego zestawu znaków. Zrobili to. W przyszłości uzyskany parametr będzie służył do identyfikacji (sprawdzenia) informacji. Pierwotnym celem SHA-2 jest ochrona danych w różnych usługach, a dziś (w 2018 r.) SHA-256 jest znany przede wszystkim jako algorytm stosowany w wydobywaniu monet.

W 2012 roku system został udoskonalony i pojawiła się zaktualizowana wersja funkcji skrótu - SHA-3. Uważa się, że z biegiem czasu nowe opracowanie wyprze dotychczasowe algorytmy, co poprawi i tak już wysoki stopień bezpieczeństwa.

Charakterystyka algorytmu szyfrowania Bitcoin


Istota SHA-256 jest prosta. Wiadomość początkowa po dokonaniu dodania podzielona jest na bloki, a każdy z nich liczy 16 słów. Powstałe elementy przechodzą specjalne cykle składające się z 64 lub 80 etapów. W każdym z nich konwertowane są dwa słowa, a opcję transformacji tworzą pozostałe słowa. Wynikowe parametry są sumowane w celu utworzenia skrótu.

Podczas działania algorytmu wykorzystywanych jest 6 poleceń:

  • „xor” – usuwa „OR”.
  • „shr” - przesuwa wskaźnik o wymaganą liczbę bitów w prawo z określoną częstotliwością.
  • „rots” - przesuwa wskaźnik o wymaganą liczbę bitów w prawo (bez użycia określonego cyklu).
  • „II” - połączenie elementów o charakterze liniowym.
  • "i i".
  • „+” - śledzenie.
Charakterystyka protokołu:
  1. Górny limit czasu trwania komunikatu wynosi 33 B.
  2. Maksymalny parametr prędkości wynosi 139 MiB/s.
  3. Rozmiar słowa - 4 B.
  4. Liczba powtórzeń w cyklu wynosi 64.
  5. Rozmiar elementu blokowego wynosi 64 B.
  6. Całkowity kod skrótu to 32 B.

Algorytm szyfrowania bitcoinów w górnictwie


Podczas wykonywania obliczeń w ramach górnictwa o poprawności powstałego kodu skrótu decyduje liczba zer na początku linii. Na przykład, jeśli ten parametr wynosi 17, prawdopodobieństwo znalezienia takiej liczby jest bardzo niskie i wynosi około 1:1,4*10 do potęgi 20. Nic dziwnego, że wydobywanie bitcoinów wymaga użycia potężnego sprzętu i wysokich kosztów energii. Jednocześnie optymalizacja wyszukiwania wymaganego skrótu jest niemożliwa, ponieważ po otrzymaniu bloku informacji na wyjściu pojawia się losowa liczba.

Trudność wydobycia wirtualnej monety polega na znalezieniu niezbędnego skrótu i ​​utworzeniu następnego bloku. Aby osiągnąć ten cel stosuje się standardowe wyliczanie wartości, co wymaga sprzętu o dużej wydajności. Jak wspomniano, wyszukiwanie nie dotyczy prostego skrótu, ale wartości z dużą liczbą „0” przed nią.

Wydobywanie kryptowalut przy użyciu SHA-256 to zestaw środków mających na celu rozwiązanie konkretnego problemu kryptowalut. W przypadku Bitcoina do wydobycia wykorzystywany jest następujący sprzęt:

  1. Od pojawienia się BTC w 2009 r., a także do połowy 2010 r., istotne było wykorzystanie jednostki centralnej (CPU).
  2. Do połowy 2011 roku górnicy korzystali z komputerów wyposażonych w karty graficzne (GPU).
  3. Do początku 2013 r. popularne były FGPA, podobnie jak farmy GPU.
  4. W 2014 roku pojawiły się układy ASIC. Pod względem wydajności przyćmili istniejący sprzęt. Mimo to do początku 2017 r. górnicy korzystali z farm GPU i pracowali w basenach, ale do końca 2017 r. i do dziś liczą się tylko -minerzy. Używanie innego sprzętu jest nieopłacalne.
Wspomniane urządzenia służą do wybrania interesującej nas funkcji skrótu i ​​wygenerowania nowej. Im wyższy hashrate (moc obliczeniowa) urządzenia, tym szybciej dane są sortowane i mniej czasu zajmuje znalezienie rozwiązania.

Wraz ze wzrostem konkurencji i wypuszczeniem na rynek bardziej produktywnych kopaczy następuje wzrost, którego parametr zmienia się co 2 tygodnie.

Słabe i mocne strony algorytmu haszującego Bitcoin


Powyżej sprawdziliśmy, czym jest algorytm mieszający Bitcoin i jakie są jego funkcje. Jest to SHA-256, który jest uważany za najpopularniejszy algorytm o wysokim poziomie niezawodności i stosunkowo prostej zasadzie działania. Jest bardzo odporny na hakowanie i pozwala na wydobywanie monet na dowolnym sprzęcie (w zależności od parametrów trudności).

Pomimo wielu pozytywnych cech algorytm mieszający Bitcoin ma wiele słabych punktów:

  1. Kontrola przez uczestników wydobycia BTC. Działa tu ta sama zasada, co w spółkach akcyjnych (JSC), gdy uczestnicy spółki posiadają określoną liczbę udziałów. Im większa władza jest skoncentrowana w rękach górników sieci kryptowalut, tym silniejszy jest ich wpływ na cały system. Dodatkowo, w związku z rosnącą złożonością wydobycia w 2018 roku, zauważalna jest tendencja do wychodzenia wydobycia z rąk prywatnych górników pod kontrolę dużych organizacji zajmujących się tworzeniem sprzętu do wydobywania wirtualnych monet. Aby otrzymać Bitcoiny, prywatny górnik musi wydać duże sumy na zakup układów ASIC, podłączyć się do jednego z basenów i zapłacić za prąd. Jeśli skąpisz na sprzęcie, produkcja straci rentowność.
  2. Konsekwencją omówionej powyżej sytuacji jest fakt, że „lwia” część Bitcoinów koncentruje się w rękach właścicieli dużych spółek wydobywczych. Jeśli weźmiemy pod uwagę, że nie cały otrzymany Bitcoin trafia do sprzedaży, takie organizacje zamieniają się w inwestorów i depozytariuszy monet. W rezultacie zmniejsza się liczba monet w obiegu. Ponadto akumulacja kryptowaluty pozwala wpływać na decentralizację, a także na kurs wymiany BTC podczas procesu handlowego.
  3. Ze względu na istniejące niedociągnięcia algorytm SHA-256 stopniowo odchodzi w przeszłość, a jego miejsce zajmują bardziej zaawansowane projekty. Na przykład Scrypt, Ethash, Blake-256, Equihash i inne zyskują na popularności. Nowe algorytmy charakteryzują się lepszą ochroną i poziomem bezpieczeństwa, co zmusiło twórców wielu kryptowalut do porzucenia przestarzałego SHA-256 na rzecz bardziej zaawansowanych technologii.
  4. Pomimo skorygowania głównych błędów zidentyfikowanych przez twórców, niektórych luk nie udało się usunąć (w 2008 roku kolizje wykryto w 22 iteracjach). Dlatego rozwój SHA był kontynuowany, a drugą wersję zastąpiono SHA-3.
W 2009 roku byłem zmuszony używać SHA-256, ponieważ w momencie tworzenia kryptowaluty rządy stanowe przyjęły ten protokół. W tamtym czasie był aktywnie wykorzystywany do ochrony danych w niektórych programach rządowych, a także był wykorzystywany w sektorze komercyjnym. Okazało się, że protokół został stworzony, aby rozwiązać pewne problemy, ale w rzeczywistości jest popyt w zupełnie inny sposób.

Dla przejrzystości zestawmy w tabeli pozytywne i negatywne cechy algorytmu szyfrowania Bitcoin.

ZaletyWady
Powszechne (m.in. w sektorze kryptowalut). Protokół SHA jest aktywnie wykorzystywany w życiu codziennym do ochrony informacji.Utrata decentralizacji. Władza jest skoncentrowana w rękach spółek wydobywczych.
Niezawodna ochrona przed włamaniem.Iteracja SHA ma prostą strukturę, co z czasem doprowadziło do wzrostu złożoności wydobycia. Od sierpnia 2018 r. do wydobywania Bitcoinów można używać wyłącznie układów ASIC o wysokiej wydajności.
Wygoda w zakresie wydobycia monet, wszechstronność w doborze sprzętu wydobywczego.Pojawiają się nowe algorytmy, które mają bardziej zaawansowaną strukturę.
W drugiej wersji (SHA-2) twórcom udało się wyeliminować szereg niedociągnięć, które negatywnie wpływały na niezawodność systemu.Pomimo aktywnych prac nad błędami, wiele niedociągnięć nie zostało usuniętych. Nic dziwnego, że programiści stworzyli nową wersję SHA-3.
Protokół został przyjęty na szczeblu legislacyjnym w Stanach Zjednoczonych.

Dziś prawie nie jest wykorzystywany przy opracowywaniu nowych kryptowalut. Najbardziej uderzającym przykładem monety, która nadal korzysta z SHA-256, jest Bitcoin Cash, fork Bitcoina, który pojawił się w sierpniu 2017 r. Jednak w sytuacji tej monety użycie SHA jest bardziej koniecznością niż wyborem twórców. Jeśli chodzi o sam Bitcoin, zastosowanie protokołu z tej serii wynika z braku alternatyw ze strony Satoshi Nakamoto.

Dziś, w 2018 roku, dużo mówi się o udoskonaleniu tego algorytmu i wprowadzeniu zmian w sieci kryptowalut, jednak na razie takie zamierzenia nie znalazły fizycznej realizacji i pozostają jedynie w formie propozycji.

Film o funkcjach i algorytmach kryptograficznych:

Miniony rok 2017 był rokiem gwałtownej popularności kryptowalut i równie szybkiego wzrostu kursu „głównej” kryptowaluty Bitcoin. Okoliczności te wzbudziły zainteresowanie nie tylko spekulacją i wydobyciem, ale także samą istotą zjawiska. Coraz więcej osób chce dowiedzieć się, jak to wszystko działa?

Otwieramy serię materiałów, w których postaramy się w jak najbardziej przystępnej formie wyjaśnić, co kryje się za tymi tajemniczymi akronimami, takimi jak Scrypt, SHA-256, X11 i inne. Zacznijmy od najważniejszego (ale nie najlepszego) algorytmu dla świata kryptowalut – SHA-256. To właśnie jest podstawą rozwoju Bitcoina. Ale wcześniej zdefiniujmy kluczową terminologię – zdefiniujmy znaczenie terminów „mining” i „hash”.

Co to jest górnictwo?

Wbrew powszechnemu przekonaniu, wydobycie to nie tylko i nie tyle wydobywanie samych banknotów kryptograficznych, ale raczej środki mające na celu ochronę tej właśnie kryptowaluty przed nieuczciwymi działaniami. Nie chodzi tylko o podrabianie – jeszcze ważniejsze jest zabezpieczenie np. przed wielokrotnym użyciem tych samych monet przez tę samą osobę. Zarobki nowych kryptowalut są ściśle powiązane z ich emisją i powstają z nagrody za znalezienie nowego bloku spełniającego warunki algorytmu wydobywczego.

Oznacza to, że aby „pojawiła się” kolejna kryptowaluta, musisz przeprowadzić cały kompleks skomplikowanych obliczeń i znaleźć ten bardzo pożądany „właściwy” blok. Tak robią pasjonaci ze swoim sprzętem. Schemat wspiera się sam - aby zwiększyć bezpieczeństwo kryptowaluty i wyemitować nowe jednostki, konieczne jest wydobycie, a żeby miało to sens, górnicy otrzymują nagrodę.

Krótko mówiąc, grupy oprogramowania wydobywczego wykonywały wcześniej operacje obliczeniowe w pojedynczym bloku, który następnie jest przekształcany niewiarygodną liczbę razy w celu odkrycia specjalnego rodzaju kodu skrótu. Znalezienie kodu skrótu spełniającego wymagania algorytmu staje się tym trudniejsze, im więcej uczestników jest zaangażowanych w proces. „Właściwy” skrót jest niezwykle rzadki, a znalezienie go przypomina wygraną na loterii.

Co to jest skrót?

Powyżej zostało wspomniane określenie „hash”, które nie dla wszystkich jest jasne. Jest to jedna z podstawowych koncepcji szyfrowania w ogóle, a w szczególności algorytmu SHA-256. Wyjaśnijmy, co to oznacza i omówmy najważniejsze powiązane punkty.

Zatem haszowanie to proces przekształcania przychodzącego zestawu danych o dowolnym rozmiarze w wychodzący ciąg cyfrowy. Transformacja ta odbywa się według wcześniej opracowanego algorytmu, a ciąg wychodzący jest całkowicie unikalny i służy jako swego rodzaju „odcisk palca” przychodzącej tablicy. To właśnie ten ciąg nazywany jest sumą skrótu, kodem skrótu lub po prostu skrótem. Algorytm transformacji jest funkcją skrótu.

Podajmy przykład. Możemy „zasilić” funkcje skrótu, powiedzmy, tekst powieści wierszem A. S. Puszkina „Eugeniusz Oniegin”, a wynikiem będzie kod szesnastkowy w przybliżeniu taki jak ten:. Oczywiście nie da się „rozwinąć” tego kodu i zamienić go w „Eugeniusza Oniegina”. Ale gdy tylko zmienisz pojedynczy znak w wierszu, nawet jeśli dodasz jedną spację, wynikowy skrót zostanie przekształcony nie do poznania. Głośność również nie wpływa na długość kodu skrótu. Możesz więc wprowadzić do funkcji jeden symbol „a”, a wynikiem będzie dokładnie ten sam zestaw symboli pseudolosowych o dokładnie tej samej długości.

Przyjrzyjmy się teraz bliżej, dlaczego jest to potrzebne i jakie trudności pojawiają się po drodze. Każdy zainteresowany tematem wie, że wydobywanie kryptowalut z wykorzystaniem protokołu SHA-256 może odbywać się przy wykorzystaniu mocy centralnego procesora, karty graficznej, czy też specjalistycznego urządzenia ASIC. Właściwie w kontekście Bitcoina pierwsza metoda w ogóle nie ma już zastosowania, a wydobycie za pomocą kart graficznych przeżywa swoje ostatnie dni. Złożoność obliczeń wzrosła zbyt znacząco i półśrodki nie są już odpowiednie.

W interfejsie oprogramowania wydobywczego procesy konwersji bloków na wartości skrótu są wyświetlane jako lakoniczna linia, np. „Zaakceptowano 0aef59a3b”. Blok może składać się z tysięcy, a nawet setek tysięcy podobnych linii, ale tylko jedna może służyć jako „podpis” bloku, którego poszukiwanie jest istotą górnictwa.

Wyszukiwanie prawidłowego skrótu odbywa się poprzez proste przeszukiwanie wyników rozwiązania ogromnej liczby problemów. W algorytmie SHA-256 o „poprawności” skrótu decyduje liczba zer na początku sumy skrótu. Prawdopodobieństwo znalezienia takiego kodu skrótu w drodze obliczeń określonych przez algorytm jest znikome - jedna szansa na miliony rozwiązań. Dokładne prawdopodobieństwo zależy od aktualnego poziomu trudności w zdecentralizowanym systemie danej kryptowaluty.

Niezwykły fakt. Każdy z nas wielokrotnie miał do czynienia z algorytmem SHA-256, nawet o tym nie wiedząc, nawet bez względu na wydobywanie kryptowalut. Mowa o certyfikacie bezpieczeństwa SSL, który chroni wiele stron internetowych. Odwiedzając taką witrynę, automatycznie wchodzisz w interakcję z SHA-256, na którym zbudowany jest protokół SSL.

Cechy protokołu SHA-256

Najpierw trochę historii. Początkowo algorytm szyfrowania SHA-256, a raczej jego prototyp, został wynaleziony w murach „złowrogiej” NSA (Amerykańskiej Agencji Bezpieczeństwa Narodowego) w odległym już 2002 roku. W ciągu kilku miesięcy został on zmodyfikowany i oficjalnie zaprezentowany przez Narodowy Uniwersytet Metrologiczny na poziomie federalnym. Dwa lata później ukazała się jej druga, ulepszona wersja.

Przez kolejne trzy lata Agencja pracowała nad udoskonaleniem algorytmu i ostatecznie wydała patent na jego drugą edycję. Dokonano tego na licencji royalty-free, która umożliwiła wykorzystanie najnowszych technologii do celów „pokojowych”.

Ostatecznie SHA-256 stał się podstawą do stworzenia pierwszej na świecie kryptowaluty – Bitcoina. W tym przypadku protokół jest używany dwukrotnie, aby zwiększyć bezpieczeństwo.

Podczas wykonywania obliczeń w ramach wydobycia w systemie Bitcoin znakiem przydatności powstałego kodu skrótu jest liczba zer na początku linii. Na koniec 17 i początek 18 liczba wymaganych zer wiodących wynosi 17 (+/-). Prawdopodobieństwo wykrycia takiego kodu wynosi w przybliżeniu 1 do 1,4*10 20 . Jest to potwornie mała liczba, niepojęta i porównywalna z prawdopodobieństwem znalezienia ziarenka piasku o określonym kształcie na wszystkich piaszczystych plażach naszej planety. Właśnie dlatego wydobycie Bitcoina wymaga tak dużej mocy obliczeniowej i dużej ilości energii elektrycznej.

Nie ma możliwości optymalizacji wyszukiwania „poprawnego” skrótu. W protokole SHA-256 funkcja skrótu pobierając blok danych daje całkowicie nieprzewidywalną wartość wyjściową. Dlatego konieczna jest iteracja (powtórzenie) po iteracji, aż do znalezienia odpowiedniego kodu, podkreślamy jeszcze raz - całkowicie losowe.

Teraz jesteśmy zmuszeni trochę „załadować” czytelnika skomplikowanymi informacjami technicznymi, w przeciwnym razie nasza historia o SHA-256 będzie niekompletna. Jeśli nic nie jest jasne, po prostu przejdź do następnej części artykułu.

Protokół polega na dzieleniu informacji na fragmenty po 512 bitów każdy (czyli 64 bajty, czyli tyle samo, ponieważ 1 bajt = 8 bitów). Następnie następuje kryptograficzne „mieszanie” zgodnie ze schematem właściwym dla algorytmu, a wynikiem jest kod skrótu o rozmiarze 256 bitów. Operacja mieszania jest wykonywana w 64 iteracjach, co jest stosunkowo małą liczbą, szczególnie w porównaniu z nowymi algorytmami kryptograficznymi, które się pojawiły.

Główne parametry techniczne SHA-256 są następujące:

  • Rozmiar bloku: 64 bajty;
  • Maksymalna długość wiadomości: 33 bajty;
  • Rozmiar wynikowego kodu skrótu: 32 bajty;
  • Liczba powtórzeń w jednej rundzie: 64;
  • Maksymalna prędkość: około 140 MiB/s (mebibajt na sekundę).

Algorytm w swojej pracy wykorzystuje znaną technikę Merkle-Damgarda, która polega na dzieleniu początkowego wskaźnika na bloki bezpośrednio po dokonaniu zmian. Bloki z kolei podzielone są na 16 słów każdy.

Zestaw danych jest uruchamiany w rundzie 64 iteracji. Każdy z nich rozpoczyna proces mieszania słów tworzących blok. Funkcja przetwarza pary słów, po czym wyniki są sumowane i uzyskiwany jest poprawny kod skrótu. Każdy kolejny blok jest obliczany na podstawie wartości poprzedniego. Jest to proces płynny – nie da się obliczać bloków oddzielnie od siebie.

Ewolucja SHA-256

Aby zrozumieć wartość kryptograficzną tego algorytmu, spójrzmy wstecz na historię. Zaczęli poważnie testować jego siłę niemal natychmiast po jego stworzeniu - w 2003 roku. Sprawą zajęli się profesjonaliści, ale nie znaleźli żadnych luk ani błędów.

Minęło całe pięć lat, kiedy w 2008 roku indyjskim ekspertom udało się jeszcze zidentyfikować kolizje aż w 22 iteracjach. Po kilku miesiącach ciężkiej pracy zaproponowano skuteczne rozwiązanie problemu.

W trakcie analizy działania części funkcjonalnej algorytmu sprawdzono jego odporność na dwa rodzaje możliwych metod naruszenia bezpieczeństwa:

  • poprzez obraz wstępny: oznacza to odszyfrowanie oryginalnej wiadomości wyłącznie na podstawie ciągu haszującego;
  • poprzez wykrywanie kolizji: oznacza to zbieżność danych wychodzących, pod warunkiem, że wiadomości przychodzące są różne. Oznacza to, że przychodzące bloki są różne, ale wychodzący skrót jest taki sam - nie powinno się to zdarzyć.

Po tym, jak pierwsza wersja SHA-256 nie przeszła testów w drugim kryterium, twórcy postanowili stworzyć nowy mechanizm szyfrowania oparty na radykalnie odmiennych zasadach. Tak też się stało – w 2012 roku wprowadzono protokół nowej generacji, całkowicie pozbawiony opisanych powyżej niedociągnięć.

Wady algorytmu

To, że twórcom udało się poprawić własne błędy, nie oznacza, że ​​udało im się doprowadzić SHA-256 do perfekcji. Protokół pozbył się oczywistych luk, ale jego „rodzime” niedociągnięcia pozostały.

Wykorzystanie SHA-256 jako podstawy Bitcoina stało się możliwe, między innymi dzięki temu, że samo ustawodawstwo USA było wierne temu protokołowi. Dopuszczono go do ochrony danych w niektórych programach rządowych, a także dopuszczono do stosowania w sferze komercyjnej.

Stąd bierze się ironia losu – protokół powstał w jednym celu, jednak najszersze zastosowanie znalazł w zupełnie innych. I dla tych pierwszych celów było to więcej niż skuteczne i właściwe. Jednak w przypadku kryptowalut okazało się to zbyt proste. To nie żart, skoro na przykład w Chinach nie ma nawet farm, ale całe „fabryki” wypełnione górnikami ASIC.

Każda iteracja algorytmu wygląda dość prymitywnie – podstawowa operacja binarna plus 32-bitowy dodatek. Dlatego tak szybko pojawiły się układy ASIC oparte na SHA-256, mnożąc przez zero wszystkie nadzieje „domowych” górników posiadających tylko procesor i kilka kart graficznych.

Czasy i warunki bardzo się zmieniają, a protokół SHA-256 śmiało podąża śladem innych, bardziej zaawansowanych rozwiązań. Ten sam Skrypt w procesie obliczeń najpierw rejestruje 1024 różne ciągi haszujące, a dopiero potem dokonuje dodania i uzyskuje wynik końcowy. Jest to nieproporcjonalnie bardziej złożony schemat zapewniający najwyższy poziom ochrony i bezpieczeństwa kryptowalut.

Streszczenie

Algorytm szyfrowania SHA-256 uznawano za dość skuteczny i niezawodny do czasu rozpoczęcia boomu na kryptowaluty. Dziś widać, że na tle nowych rozwiązań wygląda to już dość słabo. Do tego stopnia, że ​​umożliwiło to stworzenie specjalnych urządzeń „naostrzonych” ściśle po to, aby go ominąć. To ci sami górnicy ASIC, którzy praktycznie zniszczyli wydobycie na procesorach centralnych i już kończą wydobycie na kartach graficznych.

Wydawać by się mogło, że nie ma w tym nic złego – w końcu zdrowa konkurencja. Ale tak naprawdę zastosowanie układów ASIC dość znacząco centralizuje kryptowalutę, neutralizując w ten sposób samą jej ideę. Fakt ten nie mógł nie popchnąć utalentowanych entuzjastów do stworzenia nowych, bardziej zaawansowanych algorytmów mieszających. I nie trzeba było długo czekać.

Protokół SHA-256 zajmuje obecnie lwią część rynku kryptowalut, ale nowe alternatywy już śmiało go wypierają. Na przykład druga najpopularniejsza i „droga” krypta, Ethereum, wykorzystuje protokół Ethash, który wcześniej nosił nazwę Dagger. Protokół jest na tyle dobry, że Ethereum do dziś utrzymuje maksymalną decentralizację, a górnicy ASIC do jego wydobycia nadal nie istnieją w naturze. Być może Ethash zastąpi wyraźnie przestarzały SHA-256.

Jednym z pierwszych alternatywnych algorytmów był Scrypt, na którym oparty jest jeden z najpopularniejszych altcoinów, Litecoin. To znacznie bardziej zaawansowane rozwiązanie, które nie daje już tak niezaprzeczalnych zalet ASIC-u. Jednak super-zyski z wydobycia zmusiły chińskich specjalistów do włożenia dużego wysiłku w opracowanie rozwiązań technologicznych dla Scrypt i faktycznie pojawiły się układy ASIC oparte na tym protokole.

Jeśli spojrzymy na wydobywanie z perspektywy zwykłego człowieka, który nie ma doświadczenia w niuansach technicznych, to nie odczuje on żadnej różnicy pomiędzy algorytmami Scrypt i SHA-256. Układy ASIC w obu protokołach wyglądają prawie tak samo, zużywają w przybliżeniu taką samą ilość energii elektrycznej i mają dokładnie taki sam poziom hałasu wentylatora. Inną rzeczą są kursy kryptowalut, które wydobywają te same układy ASIC, ale to zupełnie inna historia.

Poniższy materiał w ramach tego tematu poświęcimy wspomnianemu alternatywnemu protokołowi szyfrowania Scrypt.

SHA 256 to kryptograficzny zestaw instrukcji do wydobywania kryptowalut. Innymi słowy, niezawodnie chroni wszystkie transakcje w sieci i komplikuje ekstrakcję monet elektronicznych. Skrót ten oznacza Secure Hashing Algorithm, co oznacza bardzo popularną i skuteczną metodę hashowania.

Istotą SHA 256 jest konwersja informacji na wartości, liczby. Ten łańcuch ma stałą długość. Oznacza to, że wszelkie informacje przesyłane w sieci będą szyfrowane specjalnymi wartościami – identyfikatorami (ID).

Podczas dokonywania transakcji algorytm SHA 256 porównuje identyfikator z danymi oryginalnymi, których nie można odzyskać, a następnie umożliwia dostęp do transakcji. Protokół ten jest obecnie używany w wydobywaniu kryptowalut, takich jak BTC i BCH.

Historia wyglądu

Jak to się stało, że Bitcoin zaczął używać SHA 256? Wszystko zaczęło się od tego, że algorytm stał się członkiem rodziny SHA-2, której łańcuch mieszający ma rozmiar 224–512 bitów.

Te z kolei powstały na bazie ich pradziadka – SHA-1, którego skrót miał długość 160 bitów. Technologia pojawiła się w 1995 roku i była przeznaczona do użytku cywilnego - czyli szyfrowania zwykłych, nieistotnych dla państwa informacji.

Rodzina SHA-2, do której należy SHA 256, została opracowana przez Agencję Bezpieczeństwa Narodowego 16 lat temu – wiosną 2002 roku. Na tej podstawie można stwierdzić, że algorytm jest moralnie przestarzały. Jednak nadal jest to jeden z najsilniejszych algorytmów szyfrowania transakcji w sieci.

Parametry techniczne SHA 256

Algorytm przeznaczony jest dla danych podzielonych na równe części po 64 bajty. SHA 256 zapewnia ich zebranie i połączenie w jeden 256-bitowy łańcuch. Główną metodą tej metody jest operacja szyfrowania, która jest wykonywana w pętli 64 razy.

Krótka charakterystyka instrukcji algorytmicznych SHA 256:

  • Bloki 64-bitowe - działają najszybciej z blokami 32-bitowymi;
  • maksymalna długość zaszyfrowanego łańcucha informacji wynosi 33 bajty;
  • rozmiar podsumowania wiadomości - 32 bajty;
  • znormalizowany rozmiar jednego słowa wynosi 4 bajty;
  • cykl szyfrowania w jednej rundzie operacji wynosi 64 bajty;
  • prędkość, z jaką działa algorytm, wynosi 140 Mbit/s.

Warto dodać, że ten członek rodziny SHA-2 opiera się na frameworku opisanym przez Merkle-Damgaarda. Oznacza to, że przed podziałem informacji na słowa dane są dzielone na bloki. Proces wzmacnia szyfrowanie poprzez tasowanie danych.

Samo zbieranie informacji odbywa się w zakresie od 64 do 80 powtórzeń. Każda kolejna pętla konwertuje utworzone bloki na słowa. Wynik końcowy, czyli skrót, powstaje poprzez zsumowanie wszystkich wartości początkowych.

Kryptowaluty z algorytmem SHA 256

Jak wspomniano wcześniej, nie tylko Bitcoin posiada taki zestaw instrukcji, ale także:

  • peercoin, którego cechą charakterystyczną jest to, że kod jest tworzony na podstawie bili wskazującej, ale PoS służy do ochrony całej sieci, a PoW jest odpowiedzialny za dystrybucję monet;
  • namecoin to cyfrowa waluta, która działa jako środek ochrony, poufności i decentralizacji; unobtanium - ma wyjątkowo niską inflację, wydobycie wszystkich monet zajmie co najmniej 300 lat;
  • deutsche eMark to niemiecka mikrosieć używana do wymiany aktywów i pieniędzy. Sam proces odbywa się bez pośredników; betaCoin – działa na tej samej zasadzie co znany na całym świecie BitCoin;
  • jouleCoin – również oparty na dziadku Bitcoinie, ale zapewnia szybsze potwierdzanie transakcji;
  • steemit to nawet nie osobna krypta, ale cała platforma na blockchainie. Jego głównym zadaniem jest nagradzanie ciekawych publikacji.

Litecoin również wykorzystuje algorytm SHA 256, ale nie w całym systemie, a w podprogramie. W przypadku wydobycia Litecoina stosowany jest protokół bezpieczeństwa Scrypt, co zwiększa złożoność wydobycia i zmniejsza zwrot kosztów układów ASIC.

Wydobywanie kryptowalut w oparciu o algorytm SHA 256

Do wydobywania monet elektronicznych opartych na rodzinie SHA-2 nie jest konieczne stosowanie specjalistycznych narzędzi – ASIC. Zarówno farmy oparte na procesorach, jak i procesorach graficznych dobrze radzą sobie w górnictwie. Ten drugi ma wyraźnie większą prędkość od pierwszego.

A jednak ASIC jest najlepszym rozwiązaniem do wydobywania kryptowalut. Jego zalety są w pewnym stopniu równoważone przez znaczną cenę - około 100 tysięcy rubli, mocniejsze modele przekraczają nawet 500 000. Wraz ze wzrostem złożoności zwrot maleje. Dlatego sprzęt nie zawsze się usprawiedliwia, chociaż zapewnia znacznie większą prędkość wydobycia niż farmy na kartach graficznych, a zwłaszcza na procesorze.

Wydobywanie GPU jest uważane za mniej lub bardziej opłacalne. Ogólnie rzecz biorąc, cała farma będzie kosztować około 1000-2000 dolarów plus dodatkowy sprzęt - w szczególności systemy chłodzenia kart graficznych. Warto wziąć pod uwagę także wynajem lokalu, opłaty za prąd i wynagrodzenia pracowników obsługi.

Wśród kart graficznych dobrze radzi sobie GTX 1080 Ti firmy Nvidia. Zapewnia prędkość 1400 udanych operacji na sekundę. AMD pozostaje nieco w tyle ze swoimi kartami z linii Vega - 1200 MH/s. Istnieją również tańsze opcje, takie jak Radeon 7970, ale jego prędkość nie przekracza 800 MH/s.

Algorytm SHA 256, choć stary, jest nadal używany w Bitcoinie, kryptowalutze nr 1 na świecie. Protokół jest również stosowany w wielu innych obiecujących altcoinach. SHA256 jest stopniowo zastępowany przez Scrypt, ale Bitcoin nie ma planów przejścia na niego. Jeśli chodzi o wydobycie, wszystko jest proste - jeśli masz pieniądze, weź układy ASIC o wysokim współczynniku mieszania. Chcesz bardziej ekonomicznego rozwiązania? Następnie zbuduj farmę z kart graficznych AMD lub Nvidia.

  • Tłumaczenie

W pewnym momencie chciałem dowiedzieć się, jak szybko można wydobywać Bitcoiny ręcznie. Okazało się, że do wydobywania wykorzystuje się haszowanie SHA-256, które jest dość proste i można je obliczyć nawet bez komputera. Oczywiście proces ten jest bardzo powolny i całkowicie niepraktyczny. Jednak po wykonaniu wszystkich kroków na papierze możesz dobrze zrozumieć szczegóły działania algorytmu.

Jedna runda kryptowalut

Górnictwo

Kluczową częścią całego systemu bezpieczeństwa Bitcoin jest wydobycie. Podstawową ideą jest to, że górnicy grupują transakcje Bitcoin w jeden blok, który następnie mieszają niezliczoną liczbę, aby znaleźć bardzo rzadką wartość skrótu, która podlega specjalnym warunkom. Po znalezieniu takiej wartości blok zostaje uznany za wydobyty i wchodzi do łańcucha bloków. Samo mieszanie nie służy żadnemu użytecznemu celowi poza zwiększeniem trudności w znalezieniu właściwego bloku. Jest to zatem jedna z gwarancji, że nikt sam, przy jakimkolwiek istniejącym zestawie zasobów, nie będzie w stanie przejąć kontroli nad całym systemem. Więcej o górnictwie możesz przeczytać w moim ostatnim artykule.

Kryptograficzna funkcja mieszająca otrzymuje blok danych jako dane wejściowe i generuje niewielki, ale nieprzewidywalny wynik. Został zaprojektowany w taki sposób, że nie ma szybkiego sposobu na uzyskanie żądanego wyniku i trzeba szukać dalej, aż znajdziesz odpowiednią wartość. Bitcoin wykorzystuje SHA-256 jako taką funkcję. Ponadto, aby zwiększyć odporność, na blok nakłada się dwukrotnie SHA-256 i nazywa się to podwójnym SHA-256.

W Bitcoinie kryterium ważności skrótu jest posiadanie wystarczającej liczby zer wiodących. Znalezienie takiego skrótu jest równie trudne, jak np. znalezienie numeru samochodu lub telefonu zakończonego kilkoma zerami. Ale oczywiście w przypadku skrótu jest to wykładniczo trudniejsze. Obecnie prawidłowy skrót musi zawierać około 17 zer wiodących, co jest spełnione tylko przez 1 w 1,4x10 20 . Jeśli narysujemy analogię, to znalezienie takiej wartości jest trudniejsze niż znalezienie konkretnej cząstki wśród całego piasku na Ziemi.

Niebieski blokuje nieliniowe przetasowanie bitów, co utrudnia analizę kryptograficzną. Co więcej, dla jeszcze większej niezawodności stosowane są różne funkcje miksowania (jeśli znajdziesz lukę w matematyce, aby szybko wygenerować prawidłowe skróty, przejmiesz kontrolę nad całym procesem wydobywania Bitcoinów).

Funkcja większości (blok Ma) działa bitowo na słowach A, B i C. Dla każdej pozycji bitu zwraca 0, jeśli większość bitów wejściowych w tej pozycji to zera, w przeciwnym razie zwraca 1.

Blok Σ0 obraca A o 2 bity, następnie oryginalne słowo A jest obracane o 13 bitów i podobnie o 22 bity. Powstałe trzy przesunięte wersje A są dodawane bitowo modulo 2 ( normalny xor, (A ror 2) xor (A ror 13) xor (A ror 22)).

Ch implementuje funkcję selekcji. Na każdej pozycji bitu sprawdzany jest bit z E, jeśli jest równy jeden, to wyprowadzany jest bit z F z tej pozycji, w przeciwnym razie bit z G. Zatem bity z F i G są mieszane na podstawie wartości z E.

Σ1 ma podobną strukturę do Σ0, ale działa ze słowem E, a odpowiadające mu stałe przesunięcia to 6, 11 i 25.

Czerwone bloki wykonują 32-bitowe dodawanie, generując nowe wartości dla słów wyjściowych A i E. Na podstawie danych wejściowych generowana jest wartość W t (dzieje się to w części algorytmu, która odbiera i przetwarza zaszyfrowane dane To wykracza poza nasz zakres). K t jest własną stałą dla każdej rundy.

Na powyższym schemacie można zauważyć, że w jednej rundzie kryptograficznej zmieniają się tylko A i E. Pozostałe słowa nie ulegają zmianie, lecz są przesunięte na wyjściu - stare A zamienia się w wyjście B, stare B w nowe C i tak dalej. Chociaż pojedyncza runda algorytmu nie zmienia znacząco danych, po 64 rundach informacje wejściowe zostaną całkowicie zaszyfrowane.

Kopiemy ręcznie

W filmie pokazuję, jak za pomocą długopisu i kartki można wykonać wszystkie opisane kroki. Wykonałem pierwszą rundę mieszania, aby wydobyć blok. Zajęło mi to 16 minut i 45 sekund.


Pozwólcie, że wyjaśnię trochę, co się dzieje: zapisałem słowa od A do H w formie szesnastkowej, a pod każdym zrobiłem tłumaczenie na formę binarną. Wynik bloku Ma znajduje się pod słowem C, a wartości A po przesunięciach i samo wyjście Σ0 pojawiają się nad linią z A. Funkcja wyboru pojawia się pod G, a na koniec odpowiednie przesunięte wersje E i wartość za blokiem Σ1 wykracza poza linię z E. W prawym dolnym rogu wykonano dodawanie, którego wynik uwzględnia zarówno nowe A, jak i nowe E (pierwsze trzy czerwone bloki sumowania). W prawym górnym rogu obliczyłem nową wartość A, a pośrodku obliczenie nowej wartości E. Wszystkie te kroki zostały omówione powyżej i można je łatwo prześledzić na diagramie.

Oprócz rundy pokazanej na filmie przeprowadziłem jeszcze jedną - ostatnią 64. rundę haszującą dla konkretnego bloku Bitcoin. Na zdjęciu wartość skrótu jest podświetlona na żółto. Liczba zer potwierdza, że ​​jest to prawidłowy skrót Bitcoin. Zwróć uwagę, że zera znajdują się na końcu skrótu, a nie na jego początku, jak pisałem wcześniej. Powodem jest to, że Bitcoin po prostu odwraca bajty otrzymane przez SHA-256.


Ostatnia runda SHA-256, w wyniku której widoczny jest pomyślnie wydobyty blok Bitcoin

Co to wszystko oznacza dla projektowania koparek sprzętowych?

Każdy krok w SHA-256 wygląda bardzo prosto w logice cyfrowej - proste operacje bitowe i 32-bitowe sumy (jeśli kiedykolwiek studiowałeś projektowanie obwodów, prawdopodobnie już wyobrażałeś sobie, jak to może wyglądać na sprzęcie). Dlatego układy ASIC bardzo efektywnie implementują SHA-256, umieszczając równolegle setki okrągłych jednostek wykonawczych SHA-256. Poniższe zdjęcie przedstawia chip wydobywczy, który może obliczyć 2-3 miliardy skrótów na sekundę. Więcej zdjęć można zobaczyć na stronie Zeptobary.


Krzemowy zastrzyk chipa Bitfury ASIC, który może wydobywać Bitcoin z szybkością 2-3 gigahaszów na sekundę. Zdjęcie z Zeptobara. (CC BY 3.0)

W przeciwieństwie do Bitcoina, Litecoin, Dogecoin i inne podobne alternatywne systemy monet wykorzystują algorytm mieszający scrypt, który z natury jest trudny do wdrożenia sprzętowego. Algorytm ten podczas wykonywania przechowuje w pamięci 1024 różne wartości skrótu i ​​łączy je na wyjściu, aby uzyskać wynik końcowy. Dlatego do obliczenia skrótów skryptu potrzeba znacznie więcej pamięci i obwodów w porównaniu do skrótów SHA-256. Wpływ zmiany algorytmu haszującego jest wyraźnie widoczny przy porównaniu odpowiedniego sprzętu wydobywczego - wersje dla skryptów (Litecoin i inne) są tysiące razy wolniejsze niż wersje dla SHA-256 (Bitcoin).

Wniosek

SHA-256 stał się nagle tak prosty, że można go było nawet obliczyć ręcznie (algorytm krzywej eliptycznej używany do podpisywania transakcji Bitcoin byłby znacznie bardziej bolesny, ponieważ wymaga mnożenia liczb 32-bajtowych). Obliczenie jednej rundy SHA-256 zajęło mi 16 minut i 45 sekund. Przy tej wydajności hashowanie całego bloku Bitcoin (128 rund) zajmie 1,49 dnia, czyli otrzymamy współczynnik mieszania wynoszący 0,67 hashów dziennie (w rzeczywistości proces oczywiście przyspieszyłby wraz z praktyką). Dla porównania, obecna generacja górników Bitcoina produkuje kilka terahashów na sekundę, czyli około kwintylion razy szybciej niż ja. Myślę, że jasne jest, że ręczne wydobywanie Bitcoinów nie jest zbyt praktyczne.

Czytelnik z Reddita zapytał o mój wydatek energetyczny. Ponieważ nie wykonuję żadnego dużego wysiłku fizycznego, możemy założyć, że tempo metabolizmu wyniesie 1500 kilokalorii dziennie, wówczas okazuje się, że ręczne mieszanie wymaga prawie 10 megadżuli na hash. Typowe zużycie energii dla górnika żelaza to 1000 magehash na dżul. Tym samym jestem mniej energooszczędny niż wyspecjalizowany kawałek żelaza 10^16 razy (10 biliardów). Kolejną kwestią jest koszt energii. Tanim źródłem energii są pączki o temperaturze 23 centów za 200 kilokalorii. U mnie prąd kosztuje 15 centów za kilowatogodzinę, czyli 6,7 razy taniej niż pączki. W rezultacie koszt energii w przeliczeniu na haszysz dla mnie, jako ludzkiego górnika, jest 67 biliardów razy wyższy. Tak, jasne, że tego nie dostanę. Powodzenia w ręcznym wydobywaniu Bitcoinów, i to nawet nie biorąc pod uwagę kosztu papieru i długopisów!