Wyłączone opkody, czyli Quine oraz inne ataki
- Wygadany
- Posty: 593
- Rejestracja: 8 lutego 2020
- Reputacja: 1114
- Lokalizacja: 7-bit secp256k1
Reputacja postu: 
5
Napiwki za post:
0 BTC
Wyłączone opkody, czyli Quine oraz inne ataki
Postautor: garlonicon » środa, 11 maja 2022, 18:58
Społeczności, takie jak na przykład BSV, szczycą się tym, że zostały przywrócone opkody, które na innych monetach są wyłączone. Jednym z takich opkodów jest OP_CAT. Analogicznym opkodem jest również OP_SUBSTR (zastąpione niekiedy przez OP_SPLIT). Oba opkody wyglądają niepozornie: no bo niby dlaczego łączenie napisów albo ich rozdzielenie mogłoby być groźne? Myślę, że ten wpis pozwoli lepiej zrozumieć, dlaczego Satoshi wyłączył niektóre opkody oraz jakie ataki stają się możliwe w momencie ich przywrócenia, jeśli zrobi się to w tej formie, w jakiej istniały wcześniej.
Wyjaśnienie stanowiące podstawę techniczną niniejszego wpisu jest wzięte z listy mailingowej: https://lists.linuxfoundation.org/piper ... 20462.html
Typowemu programiście zdarza się trafić na różne sprytne sztuczki, które wyglądają niewinnie, ale są w istocie dość groźne. Na przykład plik ZIP, który można rozpakowywać w nieskończoność: https://kottke.org/14/06/the-infinitely-large-zip-file. Podobną sztuczkę stanowi Quine, czyli program, który wypisuje swój własny kod źródłowy po uruchomieniu. W pierwszej chwili nie jest to takie oczywiste, czy takie rzeczy w ogóle da się zrobić. Jednakże, po przejściu przez takie sztuczki okazuje się, że nie tylko jest to realne, ale również może stanowić potencjalną lukę bezpieczeństwa.
Dlaczego nieskończony ZIP jest groźny? Otóż: wyobraźmy sobie, że na komputerze użytkownika znajduje się antywirus. Taki program skanuje podejrzane paczki, sprawdza ich zawartość, a następnie albo usuwa, jeśli plik jest groźny (i informuje o tym użytkownika), albo zostawia, jeśli jest nieszkodliwy. W przypadku wspomnianego pliku, problem polega na ciągłej próbie rozpakowania takiego ZIPa do samego końca. To się nigdy nie uda, antywirus może się zawiesić i zapchać dysk niepotrzebnymi kopiami tego pliku, który z punktu widzenia atakującego waży jedynie niecały kilobajt.
Co to ma wspólnego z kryptowalutami? Otóż takie opkody, jak OP_CAT albo OP_SUBSTR, pozwalają na napisanie takiej transakcji, która będzie mogła być powtarzana w nieskończoność. Jest to tak zwany Quine. W ten sposób można zrobić najprzeróżniejsze brzydkie rzeczy. Przykładowo: można użyć punktu bazowego (czyli klucza prywatnego równego jeden, tudzież innego dowolnego powszechnie znanego klucza) i napisać taką transakcję, która będzie umożliwiała wysłanie monet tylko na taki adres. Następnie można utworzyć taki adres i wysłać na niego monety.
Co się stanie dalej? Monety z takiego adresu będą mogły zostać wysłane tylko na nasz znany klucz publiczny. W normalnym przypadku ktoś by mógł błyskawicznie zgarnąć takie monety i atak na tym by się zakończył. Jednakże: cechą Quine jest rekursywność. Oznacza to tyle, że monety zostaną wysłane zawsze na taki sam adres, z jakiego są wydawane. Wtedy Quine jest kompletny. Efekt końcowy jest taki, że taka transakcja jest niczym odkurzacz: zasysa istniejące monety, blokując je w nieskończonej pętli transakcyjnej.
Dlaczego taki atak jest groźny? Powody mogą być różne, ale podam następujący: istnieją boty, które zgarniają monety z łatwych do zdobycia adresów. Jest taka możliwość, że Quine będzie operował na naszym adresie atakującego i że boty nauczą się ten adres wydawać. Jeśli kilkukrotnie jakieś monety zostaną przesunięte w identyczny sposób, to może się okazać, że da się napisać taki Quine, na który jakiś bot będzie reagować. Adres atakującego może być nawet nieznany, byleby sygnatury pozwalały na przesunięcie monet i umożliwiały wydanie tego wszystkiego za pomocą prostego klucza.
Jakie są dalsze konsekwencje? Otóż w przypadku BSV nie istnieje limit wielkości bloku. Oznacza to tyle, że taki Quine mógłby zostać użyty w celu zapchania bloków niepotrzebnymi danymi tak, aby ich całkowite pobranie mogło się okazać niepraktyczne. Całkiem możliwe, że dałoby się rozszerzyć Quine tak, aby zrobić cały blok na tym oparty. W takim przypadku atakujący wydobyłby normalny blok, który z jego punktu widzenia nie byłby jakoś szczególnie duży, natomiast pozostałe węzły nieustannie usiłowałyby pobrać wszystkie transakcje w nim zawarte i mogłoby im się to nigdy nie udać, powodując zawieszenie pobierania łańcucha na bloku wybranym przez atakującego.
Wyjaśnienie stanowiące podstawę techniczną niniejszego wpisu jest wzięte z listy mailingowej: https://lists.linuxfoundation.org/piper ... 20462.html
Typowemu programiście zdarza się trafić na różne sprytne sztuczki, które wyglądają niewinnie, ale są w istocie dość groźne. Na przykład plik ZIP, który można rozpakowywać w nieskończoność: https://kottke.org/14/06/the-infinitely-large-zip-file. Podobną sztuczkę stanowi Quine, czyli program, który wypisuje swój własny kod źródłowy po uruchomieniu. W pierwszej chwili nie jest to takie oczywiste, czy takie rzeczy w ogóle da się zrobić. Jednakże, po przejściu przez takie sztuczki okazuje się, że nie tylko jest to realne, ale również może stanowić potencjalną lukę bezpieczeństwa.
Dlaczego nieskończony ZIP jest groźny? Otóż: wyobraźmy sobie, że na komputerze użytkownika znajduje się antywirus. Taki program skanuje podejrzane paczki, sprawdza ich zawartość, a następnie albo usuwa, jeśli plik jest groźny (i informuje o tym użytkownika), albo zostawia, jeśli jest nieszkodliwy. W przypadku wspomnianego pliku, problem polega na ciągłej próbie rozpakowania takiego ZIPa do samego końca. To się nigdy nie uda, antywirus może się zawiesić i zapchać dysk niepotrzebnymi kopiami tego pliku, który z punktu widzenia atakującego waży jedynie niecały kilobajt.
Co to ma wspólnego z kryptowalutami? Otóż takie opkody, jak OP_CAT albo OP_SUBSTR, pozwalają na napisanie takiej transakcji, która będzie mogła być powtarzana w nieskończoność. Jest to tak zwany Quine. W ten sposób można zrobić najprzeróżniejsze brzydkie rzeczy. Przykładowo: można użyć punktu bazowego (czyli klucza prywatnego równego jeden, tudzież innego dowolnego powszechnie znanego klucza) i napisać taką transakcję, która będzie umożliwiała wysłanie monet tylko na taki adres. Następnie można utworzyć taki adres i wysłać na niego monety.
Co się stanie dalej? Monety z takiego adresu będą mogły zostać wysłane tylko na nasz znany klucz publiczny. W normalnym przypadku ktoś by mógł błyskawicznie zgarnąć takie monety i atak na tym by się zakończył. Jednakże: cechą Quine jest rekursywność. Oznacza to tyle, że monety zostaną wysłane zawsze na taki sam adres, z jakiego są wydawane. Wtedy Quine jest kompletny. Efekt końcowy jest taki, że taka transakcja jest niczym odkurzacz: zasysa istniejące monety, blokując je w nieskończonej pętli transakcyjnej.
Dlaczego taki atak jest groźny? Powody mogą być różne, ale podam następujący: istnieją boty, które zgarniają monety z łatwych do zdobycia adresów. Jest taka możliwość, że Quine będzie operował na naszym adresie atakującego i że boty nauczą się ten adres wydawać. Jeśli kilkukrotnie jakieś monety zostaną przesunięte w identyczny sposób, to może się okazać, że da się napisać taki Quine, na który jakiś bot będzie reagować. Adres atakującego może być nawet nieznany, byleby sygnatury pozwalały na przesunięcie monet i umożliwiały wydanie tego wszystkiego za pomocą prostego klucza.
Jakie są dalsze konsekwencje? Otóż w przypadku BSV nie istnieje limit wielkości bloku. Oznacza to tyle, że taki Quine mógłby zostać użyty w celu zapchania bloków niepotrzebnymi danymi tak, aby ich całkowite pobranie mogło się okazać niepraktyczne. Całkiem możliwe, że dałoby się rozszerzyć Quine tak, aby zrobić cały blok na tym oparty. W takim przypadku atakujący wydobyłby normalny blok, który z jego punktu widzenia nie byłby jakoś szczególnie duży, natomiast pozostałe węzły nieustannie usiłowałyby pobrać wszystkie transakcje w nim zawarte i mogłoby im się to nigdy nie udać, powodując zawieszenie pobierania łańcucha na bloku wybranym przez atakującego.
garlonicon
Posty: 1
• Strona 1 z 1
Przejdź do
- Bitcoin
- Bezpieczeństwo
- Giełdy i serwisy - zagrożenia
- Anonimowość i bezpieczeństwo w sieci
- Piramidy i scamy
- Bitcoin
- Rozwój projektu
- Twój wkład w rozwój projektu
- Przedszkole
- Pomoc techniczna
- Generowanie monet
- Pomoc
- Ogólnie o miningu
- Mining pools
- Kopacze (miners)
- Sprzęt (hardware) do miningu
- Bitcoin w mediach
- Projekty związane z Bitcoin
- Imprezy, spotkania, konferencje
- Kwestie prawne
- Ciekawostki
- Organizacje charytatywne, zbiórki, dotacje
- Programowanie i wdrożenia
- Ankiety
- Portfele bitcoin
- Dla zaawansowanych - nowi tylko czytają
- Ekonomia
- Rozważania ekonomiczne
- Ankiety ekonomiczne
- Analiza techniczna
- Tutaj zapłacisz bitcoinami
- Polska
- Świat
- Tablica ogłoszeń
- Towary
- Sprzedam
- Kupię
- Zamienię
- Udziały
- Usługi
- Wymiana walut
- Komentarze
- Nagrody
- Wymiana Face-to-Face
- Dolnośląskie
- Kujawsko-pomorskie
- Lubelskie
- Lubuskie
- Łódzkie
- Małopolskie
- Mazowieckie
- Opolskie
- Podkarpackie
- Podlaskie
- Pomorskie
- Śląskie
- Świętokrzyskie
- Warmińsko-mazurskie
- Wielkopolskie
- Zachodniopomorskie
- Cała Polska
- Szukam/dam pracę
- Boty i strategie
- Giełdy, kantory, bitomaty
- Kantory
- Bitomaty
- Inwestycje
- Metale szlachetne
- ICO
- Forki i Alternatywne kryptowaluty
- LiteCoin
- Ekonomia
- Mining
- Ustawienia i konfiguracje
- Linki
- Dogecoin
- Ekonomia
- Mining
- NameCoin
- Ekonomia
- Mining
- Pozostałe
- Scrypt
- SHA256
- Dash
- Ethereum
- ETC
- Lisk
- Bitcoin Cash
- Kopanie kryptowalut
- Kopanie GPU
- Kopanie CPU
- Kopanie ASIC/FPGA
- Kopalnie kryptowalut
- IOTA
- NEO
- Chia
- SCAMY
- Inne
- Linki
- Faucety, kraniki, gry
- Księga skarg i zażaleń
- AMA
- Strona i forum
- Administrator mówi
- Opinie, propozycje, uwagi
- Propozycje banów
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 52 gości
- Strefa czasowa UTC+02:00
- Na górę
- Zmień szerokość ekranu
- Usuń ciasteczka witryny
O Polskim Forum Bitcoin
Polskie Forum Bitcoin skupia miłośników Bitcoina w Polsce. Tu możesz zadać pytania odnośnie Bitoina lub podyskutować na ciekawe tematy.
Polecamy
Treści na tym forum mają charakter wyłącznie informacyjno-edukacyjny, a posty są wyrazem osobistych poglądów ich autorów. Treśći na forum ani w całości ani w części nie stanowią "rekomendacji" w rozumieniu przepisów Rozporządzenia Ministra Finansów z dnia 19 października 2005 r. w sprawie informacji stanowiących rekomendacje dotyczące instrumentów finansowych, lub ich emitentów (Dz.U. z 2005 r. Nr 206, poz. 1715).
Powered by phpBB ® | phpBB3 theme by KomiDesign