Wstęp Bitcoin Ethereum Nie proof-of-work Ataki Wykresy Podsumowanie. Sem:BK: Blockchain. Norbert J. Instytut Informatyki, Uniwersytet Wrocławski

Podobne dokumenty
Blockchain i jego zastosowania w edukacji

Inteligentne kontrakty oparte o blockchain. Mateusz Zaborski

Udany Electronic Cash BitCoin. Andrzej P.Urbański

BITC T O C IN - wi w r i tua t lna l wa w lut l a ut w w skr k ócie i Dawid Sobieraj

Referat wygłosi: inż. Michał Czyż

GLOCIN to projekt w technologii BLOCKCHAIN, umożliwiający osobom inwestującym w waluty cyfrowe (tzw. kryptowaluty), korzystanie z naszego parku

Kryptowaluty wybrane fakty i podstawy rozwiązań technicznych

Sytuacja na rynku Kryptowalut na przestrzeni lat Maciej Stefaniak

Jak działa blockchain?

BlockchainEdu.pl. Oferta szkoleniowa. Specjalistyczne kursy programowania z zakresu technologii Blockchain

Trwały nośnik w T-Mobile Usługi Bankowe. Opis rozwiązania dla zapewnienia elektronicznym dokumentom publicznym postaci trwałego nośnika

Dzielenie sieci na podsieci

BLOCKCHAIN i możliwości wykorzystania w ubezpieczeniach

Bezpieczeństwo aplikacji typu software token. Mariusz Burdach, Prevenity. Agenda

Trwały nośnik w Alior Bank

Oferta szkoleniowa Warszawa 2018

JAK ZDOBYWAĆ KRYPTOWALUTĘ MONERO (XMR)

API transakcyjne BitMarket.pl

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

GENEROWANIE ROZDAŃ: TEORIA I PRAKTYKA MICHAŁ KLICHOWICZ KRAJOWA KURSOKONFERENCJA SĘDZIÓW IT PZBS, GRUDZIEŃ 2018

Kompresja tablic obliczeń wstępnych alternatywa dla tęczowych tablic. Michał Trojnara.

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 11

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7

Układy stochastyczne

Kryptowaluty i tokeny a nowe regulacje o przeciwdziałaniu praniu pieniędzy. Jacek Czarnecki

Zamykanie transakcji oraz tworzenie konsensusu masternodów:

Technologia blockchain

no F E R T A P R E Z E N T A C J A M O Ż L I W O Ś C I B L O C K C H A I N

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Krótka prezentacja firmy En101

BSK. Copyright by Katarzyna Trybicka-Fancik 1. Bezpieczeństwo systemów komputerowych. Podpis cyfrowy. Podpisy cyfrowe i inne protokoły pośrednie

Czytanie wykresów to ważna umiejętność, jeden wykres zawiera więcej informacji, niż strona tekstu. Dlatego musisz umieć to robić.

ANALIZA BEZPIECZEŃSTWA SIECI MPLS VPN. Łukasz Polak Opiekun: prof. Zbigniew Kotulski

Lekcja : Tablice + pętle

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Co to jest niewiadoma? Co to są liczby ujemne?

Przewodnik użytkownika

Ataki kryptograficzne.

WEP: przykład statystycznego ataku na źle zaprojektowany algorytm szyfrowania

Od Wydawcy Krzywe eliptyczne w kryptografii Wykorzystanie pakietu SAGE... 9

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Distributed Hash Tables i ich zastosowania

Bezpieczeństwo usług oraz informacje o certyfikatach

Bitcoin. Co? Jak? Dlaczego? Po co? Za ile? Paweł Kraszewski

LEKSYKON POJĘĆ NA TEMAT TECHNOLOGII BLOCKCHAIN I KRYPTOWALUT

Spis treści. Od Wydawcy

Decentralizacja a blockchain. 23. Konferencja pt. Miasta w Internecie

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

E-Pieniądz, czyli co?

SIMULINK 2. Lekcja tworzenia czytelnych modeli

Aplikacje WWW - lab 5

Zastosowania arytmetyki modularnej. Zastosowania arytmetyki modularnej

JAK ZDOBYWAĆ KRYPTOWALUTĘ MONERO (XMR)

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Informatyka I: Instrukcja 4.2

Złożoność informacyjna Kołmogorowa. Paweł Parys

Kwalifikowane certyfikaty, podpisy i pieczęcie elektroniczne. po 1 lipca 2018 roku. po 1 lipca 2018 roku. Wersja 1.0

Integracja sklepu internetowego z serwisem aukcyjnym Swistak.pl

1940, 17 = K 4 = K 2 (1, 05)(1 + x 200 )3. Stąd, po wstawieniu K 2 dostaję:

0 + 0 = 0, = 1, = 1, = 0.

Algorytmy stochastyczne, wykład 02 Algorytmy genetyczne

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym)

Gra Labirynt - Zajęcia 4

Ale po co mi pieniądze?

STATYSTYKA MATEMATYCZNA

Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych)

Informacje i materiały dotyczące wykładu będą publikowane na stronie internetowej wykładowcy, m.in. prezentacje z wykładów

Błędy przy tworzeniu systemów inwestycyjnych

Metody Rozmyte i Algorytmy Ewolucyjne

Jacek Bajorek Instytut Zarządzana Bezpieczeństwem Informacji

Wskaźniki w C. Anna Gogolińska

Bezpieczeństwo systemów komputerowych

Ataki na serwery Domain Name System (DNS Cache Poisoning)

Pomyłka Lincolna Lekcje z wykopem

Możliwości wykorzystania technologii BlockChain w biznesie

Przekształcanie wykresów.

Colloquium 1, Grupa A

Podręcznik użytkownika 360 Księgowość Deklaracja VAT i plik JPK Wystawiaj deklaracje VAT, generuj pliki JPK w programie 360 Księgowość.

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Zdolności arytmetyczne

Authenticated Encryption

1. Porównanie FuturoCoina do DasCoina

Ekonomiczny Uniwersytet Dziecięcy

Teoretyczne podstawy informatyki

Generowanie liczb o zadanym rozkładzie. ln(1 F (y) λ

Projektowanie systemu krok po kroku

Temat 8. Zrobić to szybciej Sieci sortujące

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

Platforma dapp Wszystko-w-Jednym Następnej Generacji

Projektowanie bezpieczeństwa sieci i serwerów

World Wide Web? rkijanka

KONTRAKTY NA WYDOBYCIE KRYPTOWALUT, CZYLI JAK OSIĄGAĆ DOCHODY PASYWNE

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

dostępu do okręslonej usługi odbywa się na podstawie tego adresu dostaniemu inie uprawniony dostep

Ćwiczenie 7 Sieć bezprzewodowa z wykorzystaniem rutera.

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Transkrypt:

18 kwietnia 2018

Spis treści 1 Wstęp 2 Bitcoin 3 Ethereum 4 Nie proof-of-work 5 Ataki 6 Wykresy 7 Podsumowanie

Intuicja Co to jest blockchain? łańcuch bloków

Intuicja Co to jest blockchain? łańcuch bloków To prawda, ale blockchain jest nieco bardziej skomplikowany.

Tak naprawdę Czym jest blockchain? Ogólnodostępny przez p2p (zazwyczaj) Zabezpieczony kryptograficznie (nie można go łatwo sfałszować/zmienić) Łańcuch bloków Używany początkowo w Bitcoinie do potwierdzania transakcji. Będę opisywał blockchain głównie na przykładzie Bitcoina.

Spis treści 1 Wstęp 2 Bitcoin 3 Ethereum 4 Nie proof-of-work 5 Ataki 6 Wykresy 7 Podsumowanie

Główny problem: Double spending Największym problemem podczas tworzenia Bitcoina było wielokrotne wydawanie wirtualnych pieniędzy. W świecie rzeczywistym łatwiej stwierdzić gdzie dana rzecz się znajduje. W świecie wirtualnym możemy kopiować rzeczy, pieniądze. Chyba, że bank nam zabroni. Co jeśli banku centralnej jednostki zarządzającej nie ma? Bitcoin jest w pełni rozproszonym systemem płatności (nie ma centralnej jednostki) Dzięki blockchainowi udało się rozwiązać ten problem.

Która transakcja jest tą prawidłową?

Która transakcja jest tą prawidłową? Ta w blockchainie!

Zasada potwierdzania w Bitcoinie Jest jeden poprawny główny łańcuch bloków od najstarszego do najnowszego (z dokładnością do kilku najnowszych bloków) Transakcja będąca w tym poprawnym ciągu bloków jest uznana za potwierdzoną Wszystko w nowym bloku musi być spójne z poprzednimi blokami nie ma możliwości double-spendingu Kowalski tylko raz może wydać i tylko swoje pieniądze

Schemat Mogę pokazać dokładniej co znajduje się w bloku.

Genesis block Genesis block to pierwszy blok blockchaina. Nie można go zmienić. To jest umowa, że pierwszy jest ten konkretny blok.

Składowe bloku Prev_Hash hash poprzedniego bloku. Timestamp czas wykopania. Musi być większy niż średnia ostatnich 11 timestampów. Nie musi być dokładny. Tx_Root drzewko Merkle z transakcjami (w Bitcoinie). Ogólnie jakieś dane, które chcemy wykopywać. Nonce dowolny ciąg znaków ustalonej długości. Bardzo pomocny przy kopaniu.

Kopanie bloku, czyli Proof-of-work Czym jest kopanie? Znalezieniem nowego, spójnego z poprzednimi bloku, którego hash (SHA256) będzie odpowiednio mały. Czemu jest to trudne? Hash oblicza się łatwo w jedną stronę. Mając dany tekst, prosto znaleźć jego hash. Mając hash, do którego ma się hashować blok, trudno znaleźć cokolwiek innego, co hashuje się do niego. Jak się kopie? 1. Ustalamy podstawowe parametry bloku (Prev_Hash, Tx_root jak i całe drzewo transakcji,...) 2. Zmieniając Timestamp i Nonce, hashujemy kolejne niemal identyczne bloki. Hashe będą zupełnie inne. 3. Jak któryś hash jest odpowiednio mały => WYGRANA!!! Wykopaliśmy poprawny blok

Kopanie bloku, czyli Proof-of-work (2) Jak mały ma być hash? Tak, aby cała sieć kopała średnio 1 blok na 10 min. Co 2 tygodnie bloków (2016 bloków) obliczana jest nowa trudność. Dlaczego niby chcemy kopać bloki? Bo dostajemy Bitcoiny za: wykopanie bloku (generowanie Bitcoinów) potwierdzenie transakcji które umieściliśmy w bloku czyli po prostu zarabiamy.

Trudność kopania Target zmienna określająca do co najwyżej jak małej wartości ma hashować się cały blok. Difficulty trudność wykopania bloku. Im większa tym trudniej. difficulty = difficulty_1_target current_target difficulty_1_target = 0x00000000FFFF0000000000000000000000000000000000000000000000000000

Fork (przypadkowy) A co jeśli 2 kopaczy wykopie nowy, poprawny blok?

Fork (przypadkowy, 2) A co jeśli 2 kopaczy wykopie nowy, poprawny blok? Nie jest to zbyt duży problem. Kopacze mogą wybrać blok do kopania.

Który ciąg bloków jest jedynym poprawnym? Co jeśli jest więcej poprawnych bloków? Wtedy tym jedynym jest ten najdłuższy poprawny. Inne są nieistotne. Warto poczekać, aż kilka bloków przykryje blok z naszą transakcją.

Intencyjny fork (intentional fork) Czasem sieć potrzebuje pewnych zmian w protokole. Wprowadza się więc forki. Takie forki dzielimy na: soft fork programy sprawdzające stare reguły interpretują bloki z nowymi regułami jako poprawne (zawężenie reguł) hard fork programy sprawdzające stare reguły interpretują bloki z nowymi regułami jako niepoprawne (osłabienie reguł) cała sieć musi współpracować (przejść na nowe reguły) by się nie rozdzielić

Bitcoin soft fork z sierpnia 2010 15 sierpnia 2010 została wykopana transakcja przekręcająca licznik wydawanych BTC. błąd w procesie weryfikacji transakcja wygenerowała 184,467,440,737.09551616 BTC na 2 adresy transakcja została wykryta po około 1,5h łatka została wytworzona w 4h sieć się rozdwoiła jedna część akceptowała blok z wadliwą transakcją druga nie po pewnym czasie sieć nieakceptująca wadliwego bloku wyprzedziła tę akceptującą naturalnie sieć akceptująca przerzuciła się na nieakceptującą

Spis treści 1 Wstęp 2 Bitcoin 3 Ethereum 4 Nie proof-of-work 5 Ataki 6 Wykresy 7 Podsumowanie

Ethereum Druga najbardziej znana kryptowaluta Korzysta z blockchain Zamiast co 10 min, nowy blok co 14-15 sekund! Zamiast SHA256 używa Ethash Częściowo używa proof-of-stake (będzie później)

Ethereum hard fork z lipca 2016 20 lipca 2016 użytkownik wykorzystał lukę w kodzie aplikacji DAO (A decentralized autonomous organization) ta luka była poza samym Ethereum uzyskał tym samym dostęp do 3,6 mln ETH, czyli "ponad 1/3 wykopanych już przez górników (nie licząc wygenerowanych na początku projektu) żetonów" obawiano się niestabilności kursu ETH w przypadku sprzedaży tych ETH zdecydowano się na hard fork, ETH złamało zasadę nieodwracalności część osób dalej wspiera starą sieć, zwaną odtąd Ethereum Classic (ETC) Ethereum tym samym straciło część zaufania

Spis treści 1 Wstęp 2 Bitcoin 3 Ethereum 4 Nie proof-of-work 5 Ataki 6 Wykresy 7 Podsumowanie

Proof-of-work Wykonywanie kosztownych operacji jest kosztowne Marnowane są pieniądze i prąd, by mieć szanse na wzbogacenie się Niewinne kopalnie są perfidnie eksploatowane by ludzie mogli policzyć sobie jakieś hashe Kopalnie kryptowalut ogrzewają Ziemię Nasuwa się pytanie: Czy nie można byłoby zrobić tego lepiej dla środowiska i naszych portfeli?

Proof-of-space (PoSpace), proof-of-capacity (PoC) zamiast obliczeń używamy pamięć małe zużycie energii używane w SpaceMint i Burstcoin trudno jest osobie udowadniającej przejście testu jeśli nie zarezerwuje odpowiedniej ilości pamięci przykładowa implementacja: hard-to-pebble graphs

Proof-of-stake Osoba chcąca stworzyć następny blok deponuje pewną ilość pieniędzy (stake) Wybieranie jest losowe i na podstawie depozytu, czasu zamrożenia pieniędzy, czy innego parametru Selekcja osoby tworzącej następny blok tylko za pomocą bogactwa nie ma sensu zdecentralizowałoby to sieć. Np. w Peercoin-ie im dłużej coiny były nieruchome, tym większą mają siłę tworzenia nowego bloku Zamiast kopaczy mamy walidatorów Zamiast kopania mamy bicie pieniędzy (mint) lub kucie (forge)

Proof-of-authority (PoA) W PoA mamy walidatorów. Mając dobrą reputację można zostać walidatorem. Walidatorzy mają prawo tworzyć bloki. Walidator nie może stworzyć więcej niż 1 kolejny blok. PoA może być wykorzystywany w sieciach prywatnych. Nic nie trzeba kopać.

Spis treści 1 Wstęp 2 Bitcoin 3 Ethereum 4 Nie proof-of-work 5 Ataki 6 Wykresy 7 Podsumowanie

Atak 51% Przedstawiony przez Satoshi Nakamoto w "bitcoin.pdf" Nieuczciwy atakujący ma większość mocy obliczeniowej sieci Może ignorować całkowicie bloki innych i kopać tylko swoje Może zablokować potwierdzanie transakcji Może oszukiwać ludzi, którzy nie sprawdzają całych bloków Ciekawe zdarzenie miało miejsce w 2014 roku: Pool zwany GHash.IO zdobył ponad 51% mocy sieci Zrodziła się pewna panika Ludzie zaczęli zmieniać GHash.IO na inne poole GHash.IO szybko stracił "dominację" nad siecią

Atak 51% (2) Wykres mocy pooli. Do ataku 51% wystarczy zjednoczenie kilku pooli:

Sybil attack Nazwa od kobiety, która miała problem wielu osobowości Atakujący udaje dużo klientów sieci p2p Na przykład przejmując niezabezpieczone komputery Prawdopodobieństwo, że połączymy się z klientami atakującego jest duże Możliwe sposoby wykorzystania: Atakujący nie przyjmuje nowych bloków jesteśmy odcięci od sieci Atakujący przyjmuje tylko bloki wykopane przez siebie jesteśmy w oddzielnej (wolniejszej) sieci

Atak DoS (Denial of Service) Atakujący wysyła dużo danych do węzła sieci. Węzeł nie ma czasu sprawdzać normalnych transakcji/bloków. Mechanizmy obrony: Węzły nie przekazują osieroconych i niepoprawnych transakcji/bloków Węzły banują źle zachowujące się IP adresy na 24h Wielkość bloku nie może przekroczyć pewnej wielkości, np. 1MB Inne limity na wielkości, np. skryptów

Ataki kryptograficzne Złamanie funkcji hashującej (np. SHA256) mało prawdopodobne. Sieć może przenieść się na inną funkcję hashującą. Generowanie wielu adresów strata czasu. W Bitcoinie klucz ma 256bitów, hashuje się do 160bitowego adresu. Wychodzi około 2.15x10 38 adresów na osobę. Ale kiedyś Androidowy generator liczb losowych był słaby i generowanie adresów na Androidzie rzeczywiście miało sens.

Spis treści 1 Wstęp 2 Bitcoin 3 Ethereum 4 Nie proof-of-work 5 Ataki 6 Wykresy 7 Podsumowanie

Wykresy? Być może warto pokazać kilka wykresów dotyczących blockchaina w Bitcoinie. O ile jest jeszcze trochę czasu

Spis treści 1 Wstęp 2 Bitcoin 3 Ethereum 4 Nie proof-of-work 5 Ataki 6 Wykresy 7 Podsumowanie

Podsumowanie Blockchain został stworzony do uzgadniania wspólnej spójnej historii/rejestru dla całej sieci Jest on raczej ideą tworzenia bezpiecznych łańcuchów bloków niż konkretną implementacją Blockchain może wykorzystywać różne mechanizmy uzgadniania kolejnego bloku Transakcje umieszczone w bloku są niemal niemożliwe do odwrócenia

Źródła (1) Dobre źródła informacji: bitcoin.org Bitcoin paper: https://bitcoin.org/bitcoin.pdf Dużo szczegółów technicznych: https://bitcoin.org/en/developer-guide Bitcoin wiki: https://en.bitcoin.it/ https://en.bitcoin.it/wiki/difficulty Wykresy: https://charts.bitcoin.com/ Giełda/ceny kryptowalut: https://bitbay.net/pl/kurs-walut Bitcoin blockchain: https://blockchain.info/ Wikipedia, Blockchain: https://en.wikipedia.org/wiki/blockchain

Źródła (2) Forki: Przekręcenie licznika w Bitcoinie: https://en.bitcoin.it/wiki/value_overflow_incident Ethereum: http://bitcoin.pl/wiadomosci/ciekawostki/1261-ethereum-pohard-forku-kolejna-lekcja-dla-swiata-kryptowalut https://www.quora.com/why-did-ethereum-and-ethereum-classic-split Bezpieczeństwo: Ogólne słabości: https://en.bitcoin.it/wiki/weaknesses Ataki na sieć: http://resources.infosecinstitute.com/blockchain-networkspossible-attacks-ways-protection/ 51% Pool: www.economist.com/blogs/schumpeter/2014/06/bitcoin Androidowy bug: https://www.digitaltrends.com/mobile/how-to-fix-bitcoin-android-bug/

Koniec Pytania? Dziękuję za uwagę