Definicja
Kryptografia jest definiowana nieco inaczej w różnych miejscach, ale generalnie odnosi się do praktyki i nauki technik kodowania danych, dzięki czemu można je ukryć przed oczami osób niepowołanych. Słowo "kryptografia" pochodzi od greckiego słowa „kryptos”, co oznacza ukryte lub tajne. Pierwsze dowody kryptografii znaleziono w grobowcu w Egipcie, który powstał około 1900 p.n.e.
Odnaleziona wiadomość składała się z niezwykłych symboli hieroglificznych. Kolejny dowód kryptografii został znaleziony w wiadomościach, które Juliusz Cezar wysłał do swoich generałów armii na froncie wojennym około 100 p.n.e. Posługiwał się szyfrem, zwanym dziś również szyfrem Cezara lub szyfrem systemowym, w którym znaki alfabetu są przesunięte o daną liczbę pozycji, w tym przypadku o 3. Szyfry systemowe są bardzo mało tajne i można je łatwo złamać.
(Na zdjęciu zaszyfrowano słowo „cryptography”).
Kryptografię można odnaleźć także, w pierwszym szyfrze, który wprowadził ideę klucza szyfrującego i został zaprojektowany przez Vigenere’a w XVI wieku. Jednak pomimo wprowadzenia elementu klucza szyfrującego, szyfr ten był również bardzo łatwy do złamania.
Nie szukając dalej innych przykładów w historii, przejdźmy do czasów współczesnych, w których algorytmów nie można już stosować bez komputerów elektronicznych. Nietrudno jest odgadnąć, że głównym celem kryptografii jest kodowanie wiadomości za pomocą algorytmów, które mogą być w pełni opublikowane, co nie zmienia faktu, że odgadnięcie kluczy jest nadal niezwykle trudne.
Ta technika, która uniemożliwia odczytanie wiadomości bez wstępnego przetwarzania nazywa się szyfrowaniem. Szyfrowanie ze względu na swoją prawdziwą naturę jest odwracalne, co oznacza, że wiadomości można zaszyfrować do postaci tekstu zaszyfrowanego, aby uczynić je nieczytelnymi, a następnie odszyfrować, aby przywrócić je do pierwotnej treści. Jeśli algorytm używa tego samego klucza do szyfrowania i odszyfrowywania, nazywa się go symetrycznym, w przeciwieństwie do algorytmów, które wymagają klucza publicznego do szyfrowania i prywatnego do odszyfrowania. Te nazywane są asymetrycznymi.
Oprócz szyfrowania i deszyfrowania, algorytmy asymetryczne są również wykorzystywane do podpisywania wiadomości, gdzie klucz prywatny jest używany do generowania podpisu cyfrowego, a odpowiedni klucz publiczny służy do weryfikacji podpisu. Podpis to wartość skrótu wiadomości zaszyfrowanej kluczem prywatnym, a ponieważ klucz prywatny musi być dobrze chroniony przez podpisującego, gwarantuje to niezaprzeczalność podpisu, a tym samym wiadomości.
W tym miejscu wprowadziliśmy kolejną ważną koncepcję, bardzo często używaną w kryptografii, a mianowicie funkcję skrótu i jej zaszyfrowaną wersję, zwaną podpisem cyfrowym. Podczas gdy szyfrowanie ukrywa treść wiadomości, podpis cyfrowy służy do udowodnienia pochodzenia wiadomości, który najczęściej przedstawiany jest w postaci zwykłego tekstu z dołączonym podpisem w celu udowodnienia autorstwa.
Teraz, gdy wiemy, że potrzebujemy funkcji mieszającej, pytanie brzmi, co to jest? Mówiąc prościej, funkcja skrótu (mieszająca) konwertuje wiadomość czy dane o dowolnym rozmiarze na wartość o stałym rozmiarze, zwykle w postaci tablicy bajtów. W przeciwieństwie do szyfrowania, wartości skrótów nie są odwracalne, czyli innymi słowy, nie można ich przekonwertować z powrotem na wiadomość z powodu niewykonalności obliczeniowej.
Ta cecha skrótów (haszy) jest znana jako preimage resistance. Jak łatwo się domyślić, jeśli bardzo długą wiadomość można przekonwertować na bardzo krótką tablicę bajtów, może istnieć wiele wiadomości, które mogą generować ten sam skrót. W kryptografii to zdarzenie nazywa się kolizją skrótów lub po prostu kolizją.
Jednak im dłuższa wartość skrótu i im wyższa jakość algorytmu, tym mniejsze prawdopodobieństwo kolizji, ponieważ dłuższe skróty mają znacznie więcej unikalnych wartości. Najnowsze znane algorytmy, takie jak szeroko stosowany standard SHA-2 (Secure Hash Algorithm), bardzo dobrze wykorzystują te unikalne wartości, a tym samym unikają kolizji.
Bardzo ważne jest również, aby wspomnieć tutaj, że małe zmiany w oryginalnych danych powodują duże zmiany wartości skrótu, więc kierunek zmiany danych nie przewiduje kierunku zmiany wartości skrótu. Ta nieprzewidywalność jest wykorzystywana w kopaniu kryptowalut, które wymagają docelowego hasza.
Skoro słyszeliśmy o szyfrowaniu, deszyfrowaniu i hashowaniu (mieszaniu), jak ma się do tego termin blockchain? Niefortunne jest to, że zbyt wiele osób uważa magię blockchaina za panaceum na prawie wszystko, na czym skupia się cyberbezpieczeństwo. To ten sam problem, co w przypadku biometrii; kiedy potrzebna jest zmiana, nie jest to możliwe. Istnieje szeroko rozpowszechnione błędne przekonanie, że łańcuch bloków (blockchain) może zwiększyć zaufanie do danych, ponieważ danych nie można zmienić bez zerwania łańcucha bloków.
Co by było, gdyby dane, które zostały wprowadzone do łańcucha bloków, były fałszywe? Przede wszystkim zaufanie musi być w źródle danych, a potem zaufanie, że dane nie zostały zmienione. Blockchain może chronić tylko łańcuch nagrań i faktów, zarówno wiarygodnych, jak i fałszywych.
Przyjrzyjmy się, na czym polega blockchain i jak może chronić dane przed zmianami. Podstawą łańcucha bloków jest powiązanie jednego fragmentu danych z hashem poprzedniego fragmentu danych zwanych blokami. Koncepcja pochodzi z drzewa haszującego opatentowanego przez Ralpha Merkle w 1979 r., który jest współtwórcą kryptografii z kluczem publicznym i wynalazcą haszowania kryptograficznego. Chociaż w wielu publikacjach blockchain jest przedstawiany jako rodzaj rozproszonej księgi, która składa się z rosnącej listy rekordów, zwanych blokami, w uproszczeniu, tak naprawdę sprowadza się do łańcucha bloków połączonych hashami.
Wiemy już, że hash to skrót danych w postaci krótkiej tablicy bajtów, a dobre algorytmy haszujące tworzą unikalne skróty dla różnych wiadomości lub zestawów danych. Jeśli dane zostaną zmodyfikowane w dowolnym bloku, ich hash nie będzie już odpowiadał hashowi, który jest przechowywany w następnym bloku. Pomimo tego, że blockchain jest przez wielu kojarzony z kryptowalutą, w rzeczywistości jest to samodzielna koncepcja, która ma wiele zastosowań, nie mających powiązań z żadną walutą czy nawet rozproszoną księgą.
Blockchain
Blockchain to rozwiązanie z wyboru do zamrażania transakcji, które nie powinny być zmieniane w żadnym momencie w przyszłości. Należy jednak pamiętać, że blockchain nie zapewnia żadnej prywatności, czyli innymi słowy, wszystkie dane w każdym bloku są dostępne publicznie. Aby dodać prywatność do danych, należy zastosować inne techniki, takie jak na przykład szyfrowanie. Kolejną zaletą blockchaina jest to, że nie musi być przechowywany w jednym miejscu i mocno chroniony przed manipulacją, ponieważ ze swej natury jest odporny na manipulacje.
Nawet jeśli różne fragmenty blockchaina są przechowywane w różnych lokalizacjach, zastosowanie skrótów kryptograficznych pozwala na pełną weryfikację każdego elementu blockchaina. Inną ważną koncepcją efektywnego wykorzystania skrótów jest korzeń Merkle, który pozwala na walidację big data podzielonych na mniejsze części. Ponieważ skrót jest skrótem porcji danych, jego skrót ma również taką samą zdolność do sprawdzania poprawności tych danych.
Załóżmy, że mamy cztery dane A, B, C i D i dla każdego z nich generujemy skróty. Następnie łączymy pary tych skrótów i ponownie je mieszamy. Na górze otrzymujemy hash dwóch hashów najwyższego poziomu, który nazywa się Merkle root.
qw4zz
Zaletą tego katalogu głównego jest to, że reprezentuje on wszystkie fragmenty danych i jako taki może je wszystkie jednocześnie sprawdzać. Ktoś może zapytać, po co zawracać sobie głowę, jeśli możemy hashować wszystkie dane razem i mieć tylko jeden hash. Cóż, czasami dane są tak duże, że mogą nawet nie zmieścić się na jednym komputerze lub dane mogą nie być tworzone w jednym miejscu. To drzewo haszujące pozwala na walidację danych, na przykład w pobranych plikach.
Jeśli odtworzony root Merkle nie pasuje do oryginału, musi istnieć fragment danych, który jest uszkodzony lub złośliwie zmieniony i musi zostać pobrany ponownie. Drzewo pozwala zlokalizować, który element danych jest zły, ponieważ można go łatwo przeszukać do problematycznego fragmentu danych.
Zanim przejdziemy do kryptowalut, jest jeszcze jedna koncepcja, którą trzeba wyjaśnić, a mianowicie nonce. Ogólnie rzecz biorąc, nonce jest wartością jednorazową, co oznacza, że jest używana tylko raz, a następnie odrzucana i zwykle reprezentowana przez tablicę losowych bajtów wylosowanych kryptograficznie. Kryptografia wymaga, aby generator liczb losowych nie produkował tego samego numeru przez bardzo, bardzo długi czas, więc atakujący nie może odgadnąć jego następnej wartości w przewidywalnej przyszłości.
Jedna z dobrze znanych kryptowalut jest Bitcoin, choć nie był on pierwszą, ale jako pierwszy zwrócił uwagę opinii publicznej. Składa się z rozproszonej księgi, która tworzy blockchain, w którym bloki są tworzone podczas procesu zwanego wydobywa-niem lub tworzeniem dowodu pracy. Wydobywanie nowego bloku polega na generowaniu skrótów nad nagłówkiem najnowszego bloku.
Sieć Bitcoin wymaga, aby wygenerowany hash był równy lub mniejszy niż docelowy hash. Aby manipulować uzyskanym haszem, górnicy modyfikują nonce, dopóki kryte-rium nie zostanie spełnione. Po znalezieniu nowego skrótu, konkretny górnik publikuje blok w sieci, aby można go było dodać do zainteresowanych części księgi. Ten nowy blok zawiera również nagrodę dla odnoszącego sukcesy górnika. Inni, którym się nie udaje, odrzucają swoją pracę i przechodzą do wydobycia nowego bloku.
Jak trudny jest ten proces, musimy przyjrzeć się cechom hasha. Wiemy, że inżynieria wsteczna hasza w celu uzyskania zaszyfrowanych danych jest prawie niemożliwa. Górnicy muszą odgadnąć wartość jednorazówki, a następnie wygenerować nowy hash, aby sprawdzić, czy warunek jest spełniony, a wygenerowanie właściwego może zająć astronomiczną liczbę prób. Należy również pamiętać, że niewielka zmiana danych może skutkować dużą zmianą wartości skrótu. Przyrostowy wzrost wartości jednorazowej nie powoduje przyrostowego wzrostu wartości skrótu.
Wszystkich zainteresowanych poznaniem szczegółów na temat konkretnych pojęć zachęcamy do eksploracji zasobów szeroko dostępnych w internecie, ale bądźcie czujni na wiarygodność informacji. Nie chce też komentować, czy kryptowaluty mają uzasadnione istnienie jako legalny sposób „dodrukowania własnych pieniędzy”, zwłaszcza w świetle marnotrawstwa energii i potencjalnego tworzenia większego zanieczyszczenia, skoro ich tworzenie spala około 0,4% do 0,9% rocznego globalnego zużycia energii elektrycznej, a to więcej, niż może sobie pozwolić wiele mniejszych gospodarek.
Historycznie waluty miały reprezentować wartość wyprodukowanych dóbr, które były wynikiem pracy; ale ta idea zniknęła we wszystkich paradoksach dzisiejszego świata. Rozwiązania częściowe nigdy nie będą adekwatne i satysfakcjonujące, zwłaszcza, jeśli istnieją lepsze.