title txtIntroduction to the bookBitcoinista ja kryptovaluutoista on paljon jännitystä Kuulemme startup-investments-tapaamisista ja jopa pizzan ostamisesta Bitcoinilla Optimistit väittävät, että Bitcoin vaurioittaa perustaa ja tulee kärsimään järjettömästä politiikasta ympäri maailmaa Pessimistit väittävät Bitopayments, Economics , ja jopa näiden erilaisten näkemysten taustalla on merkittävää hämmennystä siitä, mitä Bitcoin on ja kuinka se kirjoitti tämän kirjan auttaakseen leikkaamaan hypen ja pääsemään ytimeen, mikä tekee Bitcoinista ainutlaatuisen. Jotta todella ymmärtäisimme, mikä Bitcoinissa on erityistä, meidän on ymmärrettävä, kuinka se toimii teknisellä tasolla. Bitcoin on todellakin uusi tekniikka, ja voimme päästä niin pitkälle vain selittämällä sen aiempien teknologioiden kautta. Oletamme, että sinulla on perusymmärrys tietojenkäsittelytieteestä tietokoneiden toiminnasta
rakenteet ja algoritmit sekä ohjelmointikokemus Jos olet tietojenkäsittelytieteen perustutkinto- tai jatko-opiskelija, ohjelmistokehittäjä, yrittäjä tai harrastaja, tämä oppikirja on sinua varten.Tässä yhdentoista luvun sarjassa käsittelemme tärkeitä kysymyksiä Bitcoinista KuinkaBitcoin toimii? Mikä tekee siitä erilaisen? Kuinka turvallisia bitcoinisi ovat? Kuinka anonyymejä käyttäjät ovat? Mitä sovelluksia voimme rakentaa käyttämällä Bitcoinia alustana? Voidaanko kryptovaluuttoja säännellä? Jos suunnittelemme uutta kryptovaluuttaa tänään, mitä muuttaisimme? Mitä tulevaisuus pitää?Jokaisessa luvussa on sarja kotitehtäviä, jotka auttavat sinua ymmärtämään nämä kysymykset tasolla. Suosittelemme, että käsittelet ne. Lisäksi on viisi ohjelmointitehtävää, joissa toteutat Bitcoinin eri komponentteja yksinkertaistetuissa malleissa. Koska olet kuuloopiskelija, suurin osa tämän kirjan materiaalista on myös saatavilla, koska sinun tulee myös täydentää oppimistietojasi, voit löytää online-Bitcoin-wikin, foorumeita ja tutkimuspapereita sekä olemalla vuorovaikutuksessa muiden Bitcoin-yhteisöjesi kanssa.
on tämä: jos H:lla on n-bittinen lähtö, niin se voi ottaa minkä tahansa 2" arvoista. Pulmapelin ratkaiseminen edellyttää syötteen löytämistä, jotta tulos on joukossa y, joka on tyypillisesti paljon pienempi thaoftouts Y:n koko selvitä kuinka vaikea pulma on Jos y on setbit streas jos Y:ssä on vain 1 elementti, palapeli on maksimikova Se tosiasia että palapelin id:llä on korkea min-entropia varmistaa, ettei ole pikakuvakkeita Päinvastoin, jos joku voisi huijata, sano ohittamalla ratkaisu arvoitukseen Jos hakupalapeli on pulmaystävällinen, tämä tarkoittaa, että tälle pulmalle ei ole olemassa ratkaisustrategiaa, voimme tehdä sen tällä tavalla niin kauan kuin pystymme luomaan pulma-lD:itä stse:ssä tämä idea myöhemmin, kun puhumme bSHA:sta. -256 Olemme keskustelleet kolmesta hash-funktioiden ominaisuudesta ja yksi appNow antaa mahdollisuuden keskustella tietystä hash-funktiosta, jota aiomme käyttää paljon tässä kirjassa. Siellä on paljon hash-funktiota.
mutta tämä on oneuses primarlyts nimeltä sHA-256Muista, että vaadimme mielivaltaisen pituisia hason-työsyötteitä. Onneksi niin kauan kuin voimme rakentaa hajautusfunktion, joka toimii kiinteän pituisilla syötteillä, on olemassa yleinen menetelmä, jolla itrkit muunnetaan mielivaltaisen pituisiksi syötteet Sitä kutsutaan Merkle-Damgard-muunnokseksiSHA-256 on yksi monista commed-tiivistefunktioista, jotka käyttävät tätä yleistä terminologiaa, taustalla olevaa kiinteän pituista törmäyksenkestävää hash-funktiota kutsutaan pakkausfunktioksi. On todistettu, että jos taustalla oleva pakkausfunktio is collisionttrd tnple Sano tiakes inputs of lenand tuottaa lyhyemmän ulostulon n tiivistefunktion tulo, joka voi olla minkä kokoinen tahansa jaettuna lohkoihin, toimii seuraavasti: preere:n tulos ei ole aikaisempi lohkotulostus, käytämme sen sijaan alustusvektoria (v) Tätä numeroa käytetään uudelleen jokaisessa hash-funktion kutsussa ja käytännössä cala-standardidokumentti, joka ottaa 768-bittisen tulon ja tuottaa 256-bittisiä lähtöjä,
512 bittiä viestiviesti(lohko 1)(lohko 2)(lohko n256 bittiä 256 bittiä Kuva 13: SHA-256 Hash Function (yksinkertaistettu/ SHA-256 käyttää Merkle-Damgard-muunnosta turnfix-pituiseksi) kryptografiset hasjonit erityisominaisuuksilla, käytä niitä ja tietty hash-funktio, jota käytämme Bitcoinissa. Seuraavassa käsitellään tapoja käyttää hash-funktioita monimutkaisempien tietorakenteiden rakentamiseen, joita käytetään johon joitakin tietoja on tallennettu yhdessä kryptografisen haFormation kanssa
Tavallinen osoitin antaa sinulle tavan hakea tiedot, kun taas tiivisteosoittimella voit myös varmistaa, että tiedot eivät ole muuttuneet. aat data on kiinteä piste vuonna til
Shbuildds of data rakenteellisesti voimme ottaa tutun datarakenteen, joka käyttää osoittimia, kuten linkor binäärihakupuuta, ja toteuttaa sen witlosoittimia, pBlock-chaiKuva 15 sijasta listaamme käyttämällä hash-komentoa. on sarja lohkoja, eaclblockilla on dataosoittimen luettelon edelliseen lohkoon lohkoketjussa edellisen lohkon lohko oli, mutta se sisältää myös tiivistelmän kyseisestä arvosta, jonka avulla voimme varmistaa, että arvo tallentaa viimeisimmän datalohkonH(1 )edellinen: H()edellinen:H()I edeltävä: H(dataatiedotKuva 15 Lohkoketju
lohkoketju on linkitetty luettelo, joka on rakennettu hash-osoittimilla osoittimien sijasta. Lohkoketjun käyttötapaus on peukaloitu loki, eli haluamme rakentaa lokitiedot tiedoista ja loki, olemme menossa havaitakseen sen ymmärtääkseen miksi lohko haaveilee tätä peukalointia osoittavaa ominaisuutta, kysytään mitä tapahtuu, jos vastustaja haluaa peukaloida tietoja, jotka ovat keskellä. Tarkemmin sanottuna adversarysdshblock-ketju ei pysty havaitsemaan peukalointia Tämän tavoitteen saavuttamiseksi vastustaja muuttaa jonkin lohkon tietoja k Koska data on jakanut tiivisteen lohkossa k+1ash ei liity muutettuun sisältöön, koska hash-funktio on törmäyskestävä, joten laajennamme epäjohdonmukaisuusockin k ja lisäämme tämän muutoksen muuttamalla luetteloa Erityisesti, niin kauan kuin säilytämme hash-osoittimen luettelon kärjessä paikassa, jossa vastustaja havaitaan
Tämän lopputulos on, että jos vastustaja haluaa peukaloida tietoja missä tahansa tässä tarinassa pitääkseen tarinan johdonmukaisena, hänen on peukaloitava vikoja aina alkuun asti, ja lopulta hän on liian tiesulku, joka ei pysty selviytymään. listan pää Siten käy ilmi, että olemme vain uudelleen muistaneet koko listan peukaloituvan tiivisteen. Joten voimme rakentaa lohkoketjun, jota kutsumme genesis blockatiksi, lohkoketjun rakenne on samanlainen kuin Merkle-Damgard konstruktit -osio Itse asiassa ne ovat melko samankaltaisia ja sama suojausargumentti pätee molempiinpre H(preAH()atadataKuva 16 Peukaloinnin ilmeinen loki
Jos vastustaja muuttaa tietoja missä tahansa lohkoketjussa, seurauksena on, että lohko on incJos tallennamme vihollisen pään, hän muuttaa kaikkia osoittimia niin, että ne ovat yhdenmukaisia muokatun datan kanssa, pää osoittaa ja valitsee tampeMerkle-puut Toinen hyödyllinen tietorakenne hash-osoittimien käyttäminen on binääripuu Anaaripuu tiivisteosoittimilla tunnetaan merkle-puuna, sen keksijän Ralph Merklen mukaan. Oletetaan, että meillä on useita dataa sisältäviä lohkoja nämä tietolohkot kahden pareiksi ja sitten jokaiselle parille rakennetaan tietorakenne, joka on kaksi hasria, yksi toof thks Nämä tietorakenteet ryhmittelevät nämä kahden ryhmiin ja forair luovat uuden tietorakenteen, joka sisältää kunkin hashin. Jatkamme tätä kunnes saavutamme yhden lohkon, puun juuren
H(1)H(1)H(1)H(1)H(1)H(H()H(、)H()H(1)H()H(1))H(、 )(data(data)(data)(dataKuva 1 7 Merkle-puu Merkle-puussa tietolohkot ryhmitelläänjoista kukin lohko on tallennettu pääsolmuun emosolmut puolestaan ryhmitellään pareittain ja niiden tiiviste on tallennettu yhden tason puuta ylöspäin
Tämä jatkuu koko matkan ylös puuhun, kunnes saavutamme juurisolmun Kuten ennenkin, muistamme vain tiivisteosoittimen puun päässä. Meillä on nyt mahdollisuus kääntää tiivisteosoittimien kautta mihin tahansa pisteeseen tiedoissa, joita ei ole peukaloitu wicause, käytä lohkojakomerkkejä, joissa on jokin tietolohko hashterin alaosassa, joka vastaa yhtälöä, ja vaikka hän jatkaa tämän lohkon peukalointia, muutos etenee lopulta puun yläosaan, jossa hän ei voi peukaloida tallennetun hash-osoittimen Joten jälleen kerran, kaikki yritykset peukaloida mitä tahansa dataa havaitaan vain muistamalla jäsenyydentodiste Toinen mukava merklepuiden ominaisuus on, että toisin kuin rakentamamme lohkoketju, todistaa, että tietty muistaa vainoot ja sitten ryntää polulle tietolohkosta puuhun, koska tällä polulla olevat lohkot riittävät, jotta voimme tarkistaa tiivisteet aina niihin asti, puussa on n solmua vain noin log n)kohdetta on näytettävä ja koska jokainen vaihe vaatii vain alilohkon hajautusarvon laskemisen, kestää noin log(n aikaa ennen kuin voimme varmistaa sen ja raittiina lohkoselektiivisen lyhyen ajan
puun solmutH(1)H()H()H(1)Kuva 1 8 Todiste jäsenyydestä, että tietolohko näyttää lohkot polussa kyseisestä tietolohkosta juureen. Lajiteltu merklepuu on vain merklepuu jossa otamme alareunassa olevat lohkot ja lajittelemme nämä jokin järjestysfunktio, joka voi olla aakkosellinen, leksikografinen järjestys, numeerinen järjestys, tai ei-jäsenyyden katto lajitellulla Merkle-puulla, tulee mahdolliseksi varmistaa ei-jäsenyysogaritminen aika ja tila, joka on , voimme todistaa, että tietty lohko ei ole Merkle-puussa kysymys olisi ja näyttää polun kohteeseen, joka on juuri sen jälkeen, kun se olisi
Jos nämä kaksi ovat kahden näytetyn kohteen välillä, mutta niiden välilläOlemme keskustelleet hash-osoittimien käytöstä linkitetyissä listoissa ja binääripuissa, mutta yleisemmin voimme käyttää hash-osoittimia missä tahansa osoitinpohjaisessa tietorakenteessa, kunhan tietorakenne ei 't haveIf thdata rakenne sittenbe abakehashes täsmää Jos ajattelet asyklistä tietorakennetta, voimme aloittaa risteyksiä, joilla ei ole tiivistekohtaa, laskea tiivisteen alun, mutta rakenteessa, jossa on jaksoja, ei ole loppua, josta voimme aloittaa ja laskea takaisin frobuild a directedof hash-osoittimia an
pystyt varmistamaan jäsenyyden kyseiseen kuvaajaan erittäin tehokkaasti ja se on helppo laskea. Hashpointereiden käyttäminen tällä tavalla on yleinen temppu, jolla näet hajautetun tietorakenteen ajan ja kontekstin sekä koko algoritmin myöhemmin tässä luvussa ja13 Digitaalinen allekirjoitus -osiossa tarkastelemme DigitalisOnko secog withhash -toimintolohkot digitaalisten allekirjoitusten ominaisuuksille, jotka vastaavat hyvin käsinkirjoitetun allekirjoituksen analogiaa, varmistavat ensin, että allekirjoitus on kelvollinen liittää tiettyyn asiakirjaan, jotta allekirjoitusta ei voida käyttää osoittamaan, että ominaisuus on analoginen varmistaaksemme, että joku ei voi ottaa allekirjoitustasi ja leikata sitä pois toisen pohjalta, voimmeko rakentaa tämän digitaaliseen muotoon salauksen avulla Ensimmäinen Edellinen intuitiivinen keskustelu hieman konkreettisempi
Tämä auttaa meitä ymmärtämään paremmin digitaalisen allekirjoituksen kaavoja ja niiden suojausominaisuuksia. Digitaalinen allekirjoitusmalli digitaalinen sith(sk, pk): generateKeys(keysize) GenereKeys-menetelmä ottaa avaimen koon ja genersThekey sk on kesig:=sign(sk, viesti)Allekirjoitusmenetelmä ottaa viestin, viestin ja Erify yourrybody Anyosecret key, sk, asut ja tulostaa allekirjoituksen viestille kohdassa skify(pk, message, sig) Vahvistusmenetelmä ottaa viestin, allekirjoituksen ja ae isvalidbe truekey pk ja fovalid allekirjoitukset on tarkistettava)) Allekirjoitukset ovat eksistentiaalisesti väärennemättömiä. Huomaamme, että generointiavaimet ja merkki voidaan satunnaistaa algoritmeja GenereKeys oli todellakin parempi, koska sen pitäisi tuottaa erilaisia avaimia eri ihmisille. Tarkista kaksi ominaisuutta, joita vaadimme digitaalisen allekirjoituksen järjestelmältä. enemmän d
etaie ensimmäinen ominaisuus on yksinkertaista - että kelvollisten allekirjoitusten on vahvistettava Jos allekirjoitan viestin sk:lla, mysecret key ja joku yrittää myöhemmin vahvistaa allekirjoituksen samalla viestillä käyttämällä pubianiLuku 1: Johdatus kryptografiaan kryptovaluutat toimitusten jartiesfiat cus:n hallitsemiseksi hallita rahan tarjontaa, joka on mahdollista väärentää. Lopulta lainvalvontasäännöt estävät ihmisiä. Jos Alice vakuuttaa Bobille, että hän maksoi hänelle digitaalisen maksun, hänen ei pitäisi pystyä keskustelemaan, kryptovaluutat käyttävät paljon kryptografiaa Salaus muodostaa matemaattisen protokollan
Ennen kuin voimme ymmärtää kryptovaluuttoja oikein, kissat ovat tunnetusti hienovaraisia ja monimutkaisia ymmärtää. Onneksi Bitcoin luottaa vain salaustiivisteiden ja digitaalisten allekirjoitusten todelliseen tutkimiseen, kaksi erittäin hyvin osoittautunutta primitiiviä, jotka tuovat käyttöön monimutkaisempia cchofeja, joita käytetään ehdotetussa laajennetussa muutoksessa. Kun olemme oppineet tarvittavat kryptografiaa, keskustelemme joistakin kryptovaluuttojen rakentamisesta. Täydennämme tätä lukua esimerkeillä11 Cryptographic Hash Functionse ensimmäinen kryptografinen primitiivi, joka meidän on ymmärrettävä, on kryptografinen hajautusfunktio Ahash-funktionaalinen matemaattinen funktio seuraavilla funktioillaSe on tehokkaasti laskettavissa intuitiivisesti tämä tarkoittaa että lahjamerkkijonoksi, sinä
n-bittisen merkkijonon hajautusarvon tput:n ajoajan tulisi olla o(n) kryptografisessa hash-fube kryptografisesti suojatussa, jos siinä on seuraavat kolme lisäystä. Tarkastellaan tarkemmin kutakin Näistä ominaisuuksista saadakseen käsityksen siitä, miksi se on hyödyllinen toiminto, joka käyttäytyy näin kryptografiaa opiskelevan lukijan tulisi olla tietoinen siitä, että tämän kirjan tiivistefunktio on hieman erilainen kuin tavallinen kryptografiaoppikirja Thenctions, mutta sellainen, joka on hyödyllinen erityisesti kryptovaluutoille Ominaisuus 1: Törmäys -resistance Ensimmäinen ominaisuus, jonka tarvitsemme, se on törmäyksenkestävä
tapahtuu, kun kaksi erilaista tuottavat saman lähdön AHsistant jos kukaan ei Muodollisesti Törmäysvastus: Ollaan törmäyksenkestävä, jos on mahdollista löytää kaksi arvoa, x ja yatx≠y,yetH(x)=H(yKuva 11 Hashkolari x ja y ovat eri arvoja , mutta syötetään hash-funktioon H, he huomaavat, että sanoimme, että kukaan ei löydä törmäystä, mutta törmäyksiä ei ole olemassa. Itse asiassa tiedämme, että törmäyksiä on olemassa, ja tämä johtuu tietyn kiinteän pituisista ketjuista, koska syöttötila on suurempi kuin lähtötila (todellakin tlame lähtömerkkijono Itse asiassa pigeonhole-periaatteen mukaan on välttämättä erittäin suuri numero
mahdolliset lähdöt Silti törmäys on löydettävä. Harkitse 256-bittisen tiivistysfunktion viimeistelymenetelmää: valitse 2 erilaista arvoa, laske hashchd tarkistaa, ovatko kaksi lähtöä kuin mahdolliset lähdöt, joidenkin niiden parien täytyy törmätä, kun käytät hash Functioe -menetelmää yllä oleva löytää taatusti törmäyksen, mutta jos valitsemme satunnaiset syötteet ja laskemme ne suurella todennäköisyydellä kauan ennen 2+1 tuloa.
8 % todennäköisyys, että ainakin kaksi aiheista törmää enemmän detacollision-detection-algoritmia toimii jokaisessa hash-funktiossa, mutta tietysti sen ongelma on ti6tpnction 2250+1 kertaa pahimmassa tapauksessa ja noin 22 tiputer laskee 10 000 hdde:tä tlodds-arvojen perusteella, jotka toteavat, että maapallon meteorologi on näin nähnyt yleisen mittarin. löytää törmäyshajautusfunktio Auld käyttäädeh theision deteithole käyttökelpoinen, silti saattaa olla jokin muu algoritmi, joka voi löytää tehokkaasti törmäyksen afic hash -funktiolle Harkitse
H(x)=x-muutosfunktio vastaa hajautusfunktiota, koska se syöttää kiinteän kokoisen ulostulon (256 bittiä) ja on tehokkaasti laskettavissa. Mutta tällä funktiolla on myös tehokas tapa löytää törmäys Huomaa, että tämä funktio palauttaa vain viimeisen 256 bittiä syötteestä Yksi olisi arvotyleinen törmäysten havaitsemismenetelmä ei ole käyttökelpoinen käytännössä on olemassa ainakin joitain hash-funktioita foron menetelmä on olemassasellainen measistant Mutta mitään haktioita ei ole todistettu besantille. Käytännössä tukeutuvat kryptografiset hajautusfunktiot ovat vain paljon pd törmäykset ja eivät ole eläinlääkäri onnistuneet Joissakin tapauksissa, kuten vanha md5-hajautus, joka havaittiin toiminnallisesti yehe-funktion jälkeen vanhentuneeksi ja asteittain käytöstä poistettuna. Joten päätämme uskoa, että nämä ovat törmäyksenkestäviä sulatuksia Nyt kun tiedämme mitä coMikä colltance on hyödyllistä for HeJos tiedämme, että kahdella syötteellä x ja törmäyskestävällä hash-funktiolla h on erilaiset tiivisteet, on turvallista olettaa, että x ja y ovat erilaisia - jos joku tietäisi x:n ja y:n, jotka ovat erilaisia, mutta joilla olisi sama tiiviste, joka rikkoisi olettamustamme, että h on törmäyksenkestävä argumentti antaa meille mahdollisuuden käyttää hash-tulosteita viestin tiivistelmänä. Harkitse Secure Boxia, todennettua online-tiedostojen tallennusjärjestelmää, jonka avulla käyttäjät voivat ladata tiedostoja ja varmistaa niiden eheyden, että tiedosto on sama. jonka hän lataa
Yksi tapa tehdä tämä olisi tallentaa lataamansa tiedoston, kun tämä toimii eheydellä, hän voi vain käyttää paikallista kopiota suoraan Törmäysvapaat tiivisteet pt ja tehokas ratkaisu Alice iust tarvitsee toomputee ladatun tiedoston tiivisteen ja vertaa sitä yhteen hän tallensi Jos tiivisteet ovat samanlaisia kuin hän ladannut, mutta jos ne ovat erilaisia, Alice voi päätellä, että tiedostoa on peukaloitu hashin muistamiseen, mikä mahdollistaa tiedoston tahattoman vioittumisen havaitsemisen lähetyksen aikana tai Secure Boxin palvelimilla, mutta myös tiedoston tahallisen muuttamisen. palvelimen antama tiedosto Tällaiset takuut muiden tahojen mahdollisesti haitallisen käytöksen edessä. Hajautus toimii kiinteän pituisena tiivistelmänä tai yksiselitteisenä tiivistelmänä viestistä, mikä antaa meille erittäin tehokkaan tavan muistaa aiemmin näkemämme asiat ja tunnistaa ne uudelleen, kun taas tiedosto saattaa ovat olleet gigatavuja pitkiä, tiiviste on kiinteäpituinen, 256 bittiä hle:lle Tämä on huomattavasti vähentäjä ja läpi kirjan näemme sovelluksia, joissa on hyödyllistä käyttää tiivistettä viestin digenä
Ominaisuus 2: Piilottaminen Toinen ominaisuus, jonka haluamme hash-funktioistamme, on hidinghiding-ominaisuus, joka väittää, että jos saamme tiivistefunktion y H(x) ulostulon, syöttömuotoa ei ole mahdollista selvittää. Tarkastellaan seuraavaa yksinkertaista esimerkkiä: aiomme tehdä kokeen, jossa käännämme kolikonheiton koirien tuloksen, jossa päät ilmoittivat merkkijonon hajautusarvon pelit liketring"hännät", ja he näkivät kummalle heille annettiin Andustille pari askelta, he kalvoivat, mikä merkkijono oli, koska mahdollisia arvoja oli vain kaksi, ja vastustajan oli helppo kokeilla molempia järjestyksessä. piilokyvyn saavuttamiseksi täytyy olla niin, että x:llä ei ole arvoa, joka on erityisen todennäköinen, joka on jossain mielessä hyvin hajautunut Jos x valitaan tällaisesta joukosta, tämä menetelmäSuuri kysymys on: voimmeko saavuttaa piilotusominaisuuden, kun haluamamme arvot eivät tule hajautetusta joukosta, kuten orrhaput thatad out by-spread out Voimme nyt olla hieman tarkempiawe meag(kaksoisvertiadenotes ketjutus)Hash fund piilottaminen jos: kun salainen arvo r valitaan todennäköisyysjakaumasta, jolla on korkea min-entropia, jolloin kun h(r/x) on mahdotonta löytää xformaatioteoriaa, min-entropia on mitta siitä, kuinka ennustettavissa oleva outcd higlmin-entropia vangitsee intuitiivisen ajatuksen siitä, että jakauma jakauma, jonka todennäköisyys esiintyy Joten konkreettisessa esimerkissä, jos r valitaan tasaisesti kaikkien merkkijonojen joukosta, jotka ovat 256 bittijonoa, valittiin todennäköisyydellä 1/2256, wlSovellus: Sitoumukset
Katsotaanpa nyt piilotusominaisuuden sovellusta. Erityisesti, mitä tehdä sitoutumisesta sitoutuminen on digitaalisuutta, jos teet sen, olet sitoutunut siihen, mikä on kirjekuoren sisällä, mutta et ole avannut, vaikka oletkin. olet sitoutunut arvoon, jonka arvo pysyy salaisuutena kaikilta muilta. Myöhemmin voit avata kirjekuoren ja paljastaa arvon, johon olet sitoutunut aikaisemmin
sts of(com): =commit(msg, avain) Toimitusfunktio ottaa viestin ja salaisen avaimen, kun inputd palauttaa commitmeValid verify(com, avain, msg) Vahvistustoiminto ottaa sitoumusavaimen ja viestin syötteenä It palauttaa arvon tosi, jos ceWBinding: Mille tahansa avaimen arvolle on mahdotonta löytää kahta viestiä, msg ja msg'sellainen thamsg msgand verify(commit(msg, key), key, msg)==trueeme, yksi sitoutuu arvoon ja julkaisee commitmertagen on analoginen suljetun kirjekuoren laittamiseksi pöydälle myöhemmin, jos he haluavat uudelleen julkaista avaimen avaimen ja arvon, msg voi varmistaa, että msg todellakin oli arvo, joka on sitoutunut aiemmin tässä vaiheessa on analoginen kirjekuoren avaamisen kanssa. että thvelope Ensinnäkin, kun otetaan huomioon com, sitoutuminen, joku katsoo kirjekuorta cae viesti on Toinen ominaisuus on, että se on sitova Se, että kun sitoudut kirjekuoren sisältöön, et voi muuttaa mieltäsi myöhemmin
Eli on mahdotonta löytää kahta eri viestiä, jotta voit yhdistää viestin ja sitten myöhemmin väittää, että olet sitoutunut toiseen. Mistä tiedämme, että nämä kaksi ominaisuutta ovat voimassa? Ennen kuin voimme vastata tähän, meidän on keskusteltava kaaviosta. Voimme tehdä sen käyttämällä salauskuvaussitoumusta schemcommit(msg): =(H(avain /msg), keyo jossa avain on satunnainen 256-bittinen vi· verify(com, key msg) ):= tosi jos H(avain∥com; false muuten luo satunnainen 256-bihich toimii ked-koodina, niin palautamme viestin hajautusarvon ja ne vastaavat sitoumusta, jonka he näkivät sitoutumisen ja vahvistamisen ilmentymisestä sekä h(key l msg) for com, sitten nämä ominaisuudetHkey∥msg, infeasib|eBinding: Mille tahansa avaimen arvolle on mahdotonta löytää kahta viestiä, msg ja msg siten, että msg≠ msg'ja H(key∥msg)=H (näppäin∥viesti
Sitoumusten piilotusominaisuus on juuri se piilotusominaisuus, jota vaadimme haslfunktioihimme. Jos avain valittiin satunnaiseksi 256-bittiseksi arvoksi, piilotusominaisuus sanoo, että jos voimme toteuttaa viestin hashputista Ja käy ilmi, että sidonta ominaisuus on implisoitunut thehash functithe hash functioon-resistentin törmäyskestävyyden ominaisuudella, silloin on mahdotonta määrittää arvot msg ja msg' siten, että h(key msg) =h(key msg), koska tällaiset arvot olisivat, jos h on hash toiminto, joka on ristiriitainen ja piilottaa tämän sitoumuksen schee tunne, että sillä on tarvittavat suojausominaisuudet Ominaisuus 3: Palapeliystävällisyys Kolmas turvaominaisuus, jota tarvitsemme hash-funktioista, on hämäräystävällinen
on btedfirst ewhat-ominaisuus on hyödyllinenpalapeliystävällisyys hash-funktion H sanotaan olevan pulmaystävällinen, jos jokaiselle mahdolliselle n-bittiselle lähdölle jos k valitaan jakaumasta, jolla on korkea min-entropia, niin se on ajallisesti mahdoton toteuttaa huomattavasti vähemmän kuin 2tuitiivisesti ,tämä tarkoittaa sitä, että kohdistaa hash-funktion, jotta se tulee ulos johonkin tiettyyn lähtöarvoon y että jos syötteen osa valitaan sopivasti satunnaistetulla tavallat'difffinder-arvo, joka osuu täsmälleen siihen kohteeseenSovellus: Hakupulma nyt,ominaisuus Tässä sovellus, aiomme rakentaa hakupalapelin matemaattisen ongelman, joka löytää oikopolkuja. Ei ole mitään muuta keinoa löytää oikeaa ratkaisua kuin etsiä tuosta suuresta tilastaHakupulma Aonsists of the puzzle-/D), valitaan ettäH(id‖ x)∈ on mahdollista, että löydät colthe-muodon vaellus∥H(avain∥