Co to są podpisy Schnorra? | Prywatność w sieci Bitcoin

751
Deweloper Blockstream Andrew Poelstra informował w połowie lutego o planach wprowadzenia MuSig – nowego standardu multisignature. Propozycja oparta jest w dużej mierze o podpisy Schnorra oraz zawiera propozycje modelu ich implementacji. Blockstream bardzo intensywnie pracuje nad opracowywaniem nowych rozwiązań skalowalności Bitcoin, o czym informowałem Was już kilkakrotnie. Dzisiaj przyszedł czas na podpisy Schnorra. Czym są i w jaki sposób wpłyną na prywatność w sieci Bitcoin? Mam nadzieję, że po lekturze niniejszego artykułu wszystko będzie już dla Ciebie jasne.

Kontekst

Od samego początku istnienia Bitcoina, potencjalne zmiany i aktualizacje protokołu stawiały wiele znaków zapytania ze strony deweloperów i społeczności. Oryginalny manifest Bitcoina autorstwa Satoshiego Nakamoto od 2009 był traktowany jako wyrocznia i podstawowy skarbiec wiedzy. Stało się regułą, że wszelkie propozycje zmian myśli Nakamoto spotykały się z pewną dozą sceptycyzmu oraz sprzeciwem.

Fakty są takie, że żadna technologia nie stoi w miejscu. Również Bitcoin, w toku eksploatacji i użytkowania wykazuje potrzeby zmian. Jednym z problemów, z którym borykało się środowisko na przestrzeni ostatnich lat była zdolność sieci do przetwarzania transakcji w sposób wydajny i opłacalny dla wszystkich stron.

W przypadku propozycji zmian w kodzie Bitcoin musi mieć miejsce konsensus. Bitcoin został ulepszony poprzez wdrożenia w stylu SegWit, który i tak rozwijał się relatywnie wolno na przestrzeni ostatnich dwóch lat. Zmiany, które zaproponowano, a które nie zostały uwzględnione przez większą część społeczności, doprowadziły chociażby do powstania Bitcoin Cash.

Pamiętajmy o tym, że zmiany w kodzie Bitcoin to proces długotrwały, poparty badaniami, fazą rozwoju i szczegółowych testów. Tylko i wyłącznie po przeprowadzeniu tych żmudnych procesów, jest możliwe przedstawienie propozycji szerszemu gronu odbiorców. Dopiero wówczas można rozpocząć rozważania nad ich ewentualnym wdrożeniem.

Podpisy cyfrowe i Bitcoin

Technologia podpisów cyfrowych nie jest nowa. Pierwsze wzmianki odnośnie rozwiązań kryptograficznych w tym zakresie datuje się już na 1976 rok. Nie ulega wątpliwości, że ta technologia otworzyła drogę rozwoju dla całego, globalnego medium komunikacji, jakim jest Internet oraz do powstania nowego nośnika wartości w postaci Bitcoina. W zasadzie podstawowe założenia technologii kluczy kryptograficznych nie zmieniły się za bardzo od chwili powstania. Aktualnie istnieją dziesiątki opracowanych schematów takich podpisów, które bazują na otwartym kodzie źródłowym (open source). Jest to zatem technologia, która cały czas się rozwija.

W czasie, kiedy twórca Bitcoina rozpoczynał swoja pracę, musiał podjąć decyzję odnośnie doboru odpowiedniego schematu podpisu cyfrowego do zastosowania w nowym systemie. Potrzebował algorytmu, który na tamte czasy był używany powszechnie, dostępny i w pełni zrozumiały dla deweloperów. Pozostawało oczywiście najważniejsze: musiał być otwartoźródłowy. Spośród wszystkich dostępnych ówcześnie opcji, Satoshi zdecydował się na wykorzystanie dobrze znanej implementacji Elliptic Curve Digital Signature Algorithm ( ECDSA).

ECDSA była wspierana przez protokół OpenSSL – zestaw narzędzi do szyfrowania, w celu poprawy jakości i prywatności komunikacji online. ECDSA charakteryzował się mniejszymi wymaganiami odnośnie struktury obliczeniowej oraz krótkimi kluczami. Pod kątem bezpieczeństwa, zapewniał jego proporcjonalny poziom przy wykorzystaniu systemów takich jak RSA. W efekcie, 256-bitowy klucz ECDSA zapewniał taki sam poziom bezpieczeństwa, co 02072-bitowy klucz RSA, zachowując jednocześnie niewielką część jego rozmiaru.

Pieter Wuille i wielu innych deweloperów, którzy pracowali na ulepszonej krzywej eliptycznej secp256k1 doprowadzili do tego, że praca ECDSA stała się jeszcze szybsza i bardziej wydajna. Niemniej jednak ECDSA posiada niedociągnięcia i braki, które stawiają ją w pozycji “do zmiany”. W związku z tym deweloperzy sięgają aktualnie po też wcale nie nowe rozwiązanie, które ma poprawić stan rzeczy. Tym rozwiązaniem są podpisy Schnorr.

L&G: Sygnatury Schnorra!

Mimo, że schemat podpisu cyfrowego Schnorra przynosi wiele korzyści w stosunku do ECDSA, z pewnością nie jest nowy. Został wymyślony przez Clausa-Petera Schnorra, niemieckiego kryptografa i naukowca, podczas gdy ten był profesorem i badaczem na Uniwersytecie we Frankfurcie w latach 80-tych. Zaproponowany przez niego schemat podpisu był połączeniem badań i prac Davida Chauma, Tahera EIgamala, Amosa Fiata i Adi Shamira. Niemniej jednak, Claus Schnorr złożył wiele patentów na swój nowo opracowany program, który przez lata uniemożliwiał jego bezpośrednie wykorzystanie.

Co ciekawe, poprzednik ECDSA – DSA, był hybrydą systemów ElGamal i Schnorr, które zostały opracowane wyłącznie w celu obejścia patentów Clausa Schnorra. W rzeczywistości, zaledwie dwa miesiące po wydaniu patentu Schnorra na teren Stanów Zjednoczonych, protoplasta DSA, Narodowy Instytut Standardów i Technologii USA (NIST), również złożył patent na jego obejście.

W 2008 roku, prawie dwie dekady po wprowadzeniu schematu podpisu Schnorra, wygasł patent Clausa Schnorra. Jak już wiemy, 2008 był także rokiem, w którym Satoshi Nakamoto przedstawił światu Bitcoina. Chociaż podpisy Schnorra mogły być używane w tym czasie, nie były one standaryzowane ani szeroko stosowane, co prawdopodobnie było motywacją Satoshiego, aby zdecydować się na ECDSA.

MuSig | Aktualny stan rzeczy i problemy

Niedawno Blockstream ogłosiło wprowadzenie do publicznego testowania nowego schematu multisignature opartego o technologię podpisów Schnorra. Testy mają na celu zebranie informacji zwrotnej odnośnie działania implementacji w celu wprowadzenie w przyszłości bezbłędnie działającego kodu.

MuSig to ulepszenie, które polega na pomocy w ramach skalowalności bloków sieci Bitcoin poprzez zmniejszenie rozmiaru transakcji i poprawę wydajności oraz prywatności użytkowników. Kod został opracowany przez czołowych kryptografów Blockcstream: Pietera Wuille i Andrew Poelstra, a także Yannicka Seurin i Gregory’ego Maxwella. Ich myśl została opublikowana w artykule z 2018 roku.

Aktualnie, niecały rok po tej premierze, Blockstream wydał roboczą wersję kodu przeznaczoną do testowania na GitHub. Mają nadzieję, że w niedalekiej przyszłości zostanie on na stałe włączony do kodu źródłowego Bitcoin Core oraz wielu innych projektów.

Jak wspomniałem we wstępie, aktualnym problemem Blockstream jest ECDSA. Aktualnie ten algorytm jest używany w sieci Bitcoin do weryfikacji własności i transferu BTC. Uznano jednak, ze aktualnie panująca technologia ma zbyt wiele ograniczeń, aby pozwolić sobie na dalsze funkcjonowanie. Potrzebne są zatem zmiany. Wśród ograniczeń ECDSA, na pierwszym miejscu wymienia się trudność w tworzeniu multisygnatur ze względu na złożoność procesu ich tworzenia.

Decyzje w rękach użytkowników

Wiele innych schematów multisygnaturowych zakłada, że użytkownicy podpisujący transakcje mają nieskrępowana kontrolę nad tym, jak i kiedy generowane są ich klucze. Rzeczywistość pokazuje, że w sieci Bitcoin wielu użytkowników nie posiada dostępu do swoich kluczy. Nie kontrolują również sposobu, w jaki są one generowane. Nie mają również kontroli nad sposobem, w jaki strona trzecia korzysta z ich kluczy. Projekt zmian zaproponowany przez Blockstream ma na celu rozwiązanie tego problemu na dwa sposoby:

1. MuSig tworzy krótkie, spójne rozmiarowo sygnatury, które dla weryfikatorów wyglądają dokładnie tak samo jak dotychczasowe i to bez względu na liczbę zaangażowanych w podpisywanie osób. Takie rozwiązanie ma na celu zwiększenie efektywności podpisów poprzez zmniejszenie wagi (rozmiaru) danych wszystkich sygnatariuszy przy jednoczesnym zachowaniu wysokiego poziomu bezpieczeństwa.

2. Rozwiązanie MuSig dąży do zapewnienia sprawdzalnego poziomu bezpieczeństwa przy użyciu zwykłych kluczy publicznych. Dzięki temu podpisujący transakcje zyskują elastyczność w sposobie produkcji oraz dostarczania multisygnatur do transakcji. To wszystko bez konieczności dostarczania dodatkowych informacji odnośnie sposobu, jakim zostały wygenerowane klucze.

Testowanie MuSig

MuSig to obszar do szczegółowych testów. Samo przedstawienie harmonogramu testów i potencjalnej implementacji MuSig nie jest proste. Biorąc pod uwagę złożoność zapewnienia bezpieczeństwa i skuteczności transakcji multisygnatur, działające i wiarygodne rozwiązanie zajmie dużo czasu.

Poelstra wyjaśnia, że opracowanie i wdrożenie MuSig będzie wymagało współpracy z szerszą społecznością Bitcoin:

„Pierwszym krokiem jest zebranie konkretnej, konkretnej propozycji i przesłanie jej na listę bitcoin-dev w celu przeglądu przez społeczność. Proces przeglądu zajmie prawdopodobnie wiele miesięcy, w którym to czasie wniosek może ulec wielu zmianom. Równolegle z tym i kontynuując prace, kod musi być napisany, przetestowany i przejrzany. Oprogramowanie musi być następnie szeroko wdrożone, zanim zmiany zostaną aktywowane. Trudno powiedzieć, jak długo potrwa ten cały proces ”.

W przypadku, gdy kod zostanie zatwierdzony i wdrożony przez społeczność Bitcoin, nie będzie konieczne poddawanie się jakimkolwiek hard forkom w celu wdrożenia zmian. Poelstra komentuje to w następujący sposób:

„Wprowadzenie Segwit w 2017 roku wprowadziło również mechanizm wersjonowania zmian w skrypcie Bitcoin (taki jak wprowadzenie nowych schematów podpisów), który umożliwia takie aktualizacje w formie soft forka. Przed Segwitem możliwe byłoby również wprowadzenie sygnatur Schnorra w softforku, jednak z większym wysiłkiem inżynieryjnym, aby zapewnić płynne przejście, gdy użytkownicy aktualizują się w różnym czasie. ”

Społeczność deweloperów Bitcoin jest zachęcana do testowania kodu Blockstream na GitHub, aby ułatwić opracowanie w pełni użytecznego kodu w ciągu najbliższych kilku miesięcy i lat.

Multisygnatury Schnorra

Zasadą działania kryptograficznych podpisów cyfrowych jest dostarczenie dowodu na to, że dana transakcja została podpisana przez określonego właściciela konkretnego klucza prywatnego. Fakty są natomiast takie, że większość użytkowników Bitcoin wysyła transakcje z jednym podpisem, który jest zidentyfikowany przez adres wysyłania właściciela klucza.

W przypadku, gdy istnieje wielu właścicieli portfela, multisygnatury zapewniają taki sam rodzaj dowodu kryptograficznego. W takiej sytuacji różni właściciele powinni wygenerować własne, unikalne podpisy. Tylko w ten sposób transakcja multisignature będzie mogła być zautoryzowana.

Sygnatury Schnorra to specyficzny rodzaj multisygnatur, dzięki którym zyskujemy kilka ważnych korzyści. Poelstra wyjaśnia:

„Multisignatury Schnorra to szczególny rodzaj multisygnatury, który jest mały (64 bajty niezależnie od rozmiaru zestawu sygnatariuszy) i który można bardzo sprawnie zweryfikować.”

Powodem, dla którego ta implementacja może mieć ogromny wpływ na działanie protokołu Bitcoin, jest forma multisygnatur, która jest obecnie używana.

Po raz kolejny Poelstra wyjaśnia, że ​​obecne multisygnatury ECDSA są uproszczone, ponieważ wymagają od wszystkich sygnatariuszy tworzenia indywidualnych podpisów. Te są następnie włączane do odpowiedniej transakcji:

„Oznacza to, że do przetworzenia transakcji potrzebne są dwaj podpisujący, dwa razy więcej miejsca na blokach i dwa razy więcej czasu na weryfikację. Gdyby Bitcoin wspierał sygnatury Schnorra zamiast ECDSA, umożliwiłoby to kilka nowych technologii – co najważniejsze, multisignatury Schnorra. ”

W przypadku sieci górników, która weryfikuje transakcje Bitcoin, multisignatury oparte na Schnorrze są identyczne jak zwykłe podpisy. Oznacza to, że są tego samego rozmiaru i zajmują tyle samo czasu na weryfikację, ale są też bardziej prywatne.

Według Poelstry nie ujawniają one oryginalnego zestawu osób podpisujących, ani nawet nie podają liczby osób podpisujących transakcję multisignature. Powinno to zwiększyć anonimowość i prywatność transakcji wielopodpisowych.

Schnorr na Bitcoinie

Nieformalne rozmowy o potencjalnym wdrożeniu Schnorra na Bitcoinie sięgają wątku BitcoinTalk z 2014 r. Propozycja została sformalizowana dopiero po latach badań i eksperymentów, kiedy Pieter Wuille napisał BIP Schnorra. Niniejszy projekt BIP opisuje specyfikacje i szczegóły techniczne potencjalnego wdrożenia Schnorra, które przyniosą następujące korzyści w stosunku do ECDSA:

  • Dowód bezpieczeństwa: bezpieczeństwo sygnatur Schnorra jest łatwe do udowodnienia. Wszystko pod warunkiem, że używana jest wystarczająco losowa funkcja skrótu (losowy model wyroczni), a problem logarytmu dyskretnego krzywej eliptycznej (ECDLP) użyty w sygnaturze jest wystarczająco twardy. Taki dowód nie istnieje dla ECDSA.
  • Niekompatybilność: podpisy ECDSA są z natury plastyczne, co może umożliwić stronie trzeciej bez dostępu do klucza prywatnego zmianę istniejących ważnych podpisów i podwójnych wydatków. Kwestia ta została formalnie omówiona w BIP62. Dla porównania sygnatury Schnorra są dowodowo nieciągliwe.
  • Liniowość: podpisy Schnorra mają niezwykłą właściwość, że wiele stron może współpracować, aby uzyskać podpis ważny dla sumy ich kluczy publicznych. Jest to budulec dla różnych konstrukcji wyższego poziomu, które poprawiają wydajność i prywatność. Wśród nich można wymienić multisygnatury i inne inteligentne umowy.

Dowody bezpieczeństwa dostarczone przez Schnorr, a także gwarancje braku ciągłości oferują wyraźne korzyści w stosunku do ECDSA. Zastosowanie soft forków można uzasadnić tylko na podstawie tych dwóch korzyści. Jednak to liniowość sygnatur Schnorra jest szczególnie ekscytująca. Zasadniczo umożliwia ona wielu podpisującym w transakcji z wieloma podpisami (multisig) łączenie ich kluczy publicznych w zagregowany klucz reprezentujący grupę; właściwość, która została nazwana agregacją klucza.

Problemy z P2SH

Chociaż możliwość łączenia kluczy może brzmieć banalnie, nie powinniśmy lekceważyć korzyści, które niesie agregacja kluczy. Nie zapominajmy, że multisygnatury nie są natywnie wspierane przez ECDSA. Musiały być zaimplementowane w Bitcoin za pomocą znormalizowanej inteligentnej umowy Pay-to-Script Hash (P2SH). Umożliwiło to użytkownikom dodawanie warunków wydatków zwanych „obciążeniami” w celu określenia, w jaki sposób można wydać środki, np. „Odblokuj równowagę tylko wtedy, gdy Marek i Kasia podpiszą tę wiadomość” (na zasadzie prostej instrukcji warunkowej).

Pierwszy problem z P2SH polega na tym, że wymaga on znajomości kluczy publicznych wszystkich uczestniczących w multisygnaturze. Nie jest to jednak skuteczny system. Agregacja tych kluczy pozwoliłaby na bardziej efektywną walidację. W takim modelu tylko jeden klucz musi zostać zweryfikowany przez sieć, a nie n kluczy. Oznacza to również mniejsze obciążenie blockchain, niższe koszty transakcji i zwiększoną przepustowość.

Drugim problemem z P2SH jest to, że oferuje bardzo niewiele gwarancji prywatności. Jak określono w BIP 13, transakcje P2SH wymagają różnych adresów, które zaczynają się od liczby 3. Pozwala to obserwatorom blockchain nie tylko zidentyfikować wszystkie transakcje P2SH w sieci, ale także wskazać tożsamości w ramach multisygnatur:

podpisy Schnorra 2

źródło: tutaj

Na powyższym diagramie widać wyraźnie, że w takim przypadku sieć jest świadoma, że istnieje transakcja multisygnaturalna. Co więcej, wiadomo dokładnie, z ilu składa się podpisujących, jak również kim oni są.

Z drugiej strony agregacja kluczy pozwala osobom podpisującym transakcje na pozostanie anonimowymi. Nie narusza też bezpieczeństwa operacyjnego poprzez ujawnianie kluczy wymaganych do odblokowania salda. Co najważniejsze, kluczowa agregacja sprawia, że multisiygnatury w tej postaci mogą stać się nie do odróżnienia od zwykłych transakcji:

podpisy Schnorra 3

źródło: tutaj

Pierwsza iteracja Schnorra w Bitcoinie spowoduje wycofanie rodziny kodów OP_CHECKSIG i OP_CHECKMULTISIG używanych obecnie z ECDSA. Wszystko na rzecz nowej klasy o nazwie OP_CHECKDLS. DLS oznacza „Discrete Log Signature” i pozwala na sprawniejszą weryfikację sygnatur przy użyciu mniejszej ilości kodu (lżejsze szyfrowanie).

Rozwijamy się, Panowie!

Przypomnę, że na początku 2018 r. Gregory Maxwell, Andrew Poelstra, Yannick Seurin i Pieter Wuille opublikowali whitepaper na temat nowego systemu opartego na wielu podpisach opartego na Schnorr, zwany MuSig. Od czasu publikacji MuSig ciężko pracują nad przekształceniem proponowanego schematu multisig w użyteczny kod.

Pierwsza iteracja MuSig w Bitcoin będzie natywnie wspierać agregację kluczy, co spowoduje:

  • poprawienie prywatności multisygnatur,
  • zwiększenie skuteczności walidacji transakcji,
  • ogólną poprawę bezpieczeństwa poprzez wyeliminowanie nieodłącznych problemów ECDSA,
  • umożliwienie wprowadzenia inteligentnych rozwiązań kontraktowych, takich jak Taproot.

Jedną z najciekawszych rzeczy dotyczących MuSig w kontekście agregacji kluczy jest możliwość tworzenia prywatnych inteligentnych umów poza blokiem. W istocie, MuSig umożliwia uczestnikom multisig dołączanie obciążeń do zagregowanych kluczy poza łańcuchem, co nie wymaga znajomości reguł konsensusu Bitcoin.

W grudniu 2018 r. Anthony Towns był pierwszym deweloperem Core, który przedstawił częściowo sformalizowaną propozycję aktywacji Schnorra, która została opublikowana na liście dyskusyjnej bitcoin-dev.

Podsumowanie

Nie ulega wątpliwości, że jednym z podstawowych warunków masowej adopcji Bitcoina jest zapewnienie jak największego poziomu bezpieczeństwa sieci. Wraz z rosnąca popularnością Lightning Network i idącym z nią protokołem obsługi płatności Bitcoin wkracza w nowy etap szans i zagrożeń.

Wiąże się z tym pytanie o dalszy los sieci w momencie, kiedy zostanie wydobyty ostatni bitcoin. W związku z tym można przyjąć, ze dwoma najbardziej aktualnymi problemami Bitcoina są właśnie potrzeba prywatności i długoterminowa stabilność sieci bez nagród blokowych. Co ciekawe, implementacja sygnatur Schnorra w Bitcoin Core może pomóc rozwiązać obydwa te problemy jednocześnie.

Wśród zagrożeń nadchodzącej implementacji można nadmienić powtarzający się problem związany z szyfrowaniem homomorficznym. Uniemożliwia on pełną “słyszalność” bazy Bitcoin. W wyniku tego faktu trudno jest zweryfikować, czy limit podaży Bitcoin rzeczywiście wynosi 21 milionów monet. Te oraz inne problemy natury inflacyjnej stają się coraz trudniejsze do wykazania. Do wprowadzenia nowego standardu prywatności w sieci niezbędny jest kompromis. Może jednak być trudno go uzyskać i może on znowu podzielić społeczność.

Ostatecznie przyjęcie silniejszych mechanizmów ochrony prywatności w warstwie bazowej Bitcoin jeszcze bardziej wzmocni jej użytkowników. Jednocześnie może to przyczynić się do stworzenia dynamicznego rynku opłat po wydobyciu ostatniego bitcoina. Mocno wierzę w to, że zaproponowane rozwiązania okażą się kolejnym krokiem milowym w rozwoju sieci Bitcoin.

Komentarze