Math Behind Bitcoin | EE.democraziakmzero.org

Math Behind Bitcoin

Math Behind Bitcoin

Eric Rykwalder on tarkvara insener ja üks Chain.com asutajad. Siin ta annab ülevaate matemaatilise aluse kohta Bitcoin protokolli.

Üks põhjus Bitcoin saab segane algajatele on see, et tehnoloogia taga määratletakse uuesti mõiste omandisse.

Omada midagi traditsioonilises mõttes, olgu see maja või rahasumma, mis tähendab kas isiklikud vahi asja või andmise vahi usaldusväärsele üksus nagu pank.

Mis Bitcoin puhul on erinev. Bitcoins ise ei salvestata kohalikke või tsentraalseid ja nii keegi üksus on oma hooldaja. Nad eksisteerivad arvestust hajutatud pearaamatu nimetatakse plokk ahela, mille koopiad jagavad vabatahtlike võrgustik ühendatud arvutid. To "omamiseks" Bitcoin tähendab lihtsalt võttes võime kanda kontrolli seda keegi teine, luues arvestust üleviimise plokk ahela. Mis annab see võime? Juurdepääsu ECDSAprivate ja avaliku võtme paari. Mida see tähendab ja kuidas see turvaline Bitcoin?

Olgem on pilk kapoti alla.

ECDSAis lühike ellipsi Seda algoritmi. See on protsess, mis kasutab elliptilise curveand piiratud väljale "märk" andmetega sellisel viisil, et kolmandad isikud saavad kontrollida autentsuse allkirja samas allkirjastaja säilitab ainult võime luua allkirja. Mis Bitcoin andmed, mis on alla kirjutatud on tehing, mis omandi üle.

ECDSA on eraldi menetlused allkirjastamise ja kontroll. Iga kord on algoritm koosneb paar aritmeetilisi tehteid. Allkirja algoritm kasutab privaatvõti ja kontrollimise protsess kasutab avaliku võtme. Näitame näide sellest hiljem.

Aga kõigepealt kiirkursus elliptiline kõverad ja piiratud valdkondades.

Elliptiline kõver

Ellipsi esindab algebraliselt kui võrrandile:

Y2 = x3 + ax + b

Sest = 0 ° C ja b = 7 (versioon kasutab Bitcoin), see näeb välja selline:

Elliptiline kõver on kasulikud omadused. Näiteks mitte-vertikaaljoon lõikub kaks mitte-puutepunktide kõvera alati ristuvad kolmanda punkti kõveral. Veel vara on see, et mitte-vertikaaljoon puutuja kõver ühel hetkel lõikab täpselt ühe teise punkti kõveral.

Me ei saa kasutada neid omadusi määratleda kaks operatsiooni: punkt Lisaks ja punkt kahekordistamist.

Point Lisaks P + Q = R on määratletud kui peegeldus läbi x-telg kolmanda lõikumispunkt R'on joon, mis sisaldab Pand Q. On lihtsam mõista seda lehe diagramm:

Samamoodi punkt kahekordistamine, P + P = Ris määratletud leida line punktiga puutuva kahekordistada, P, ja võttes peegeldus läbi x-telje lõikuvad punktis R'on kõver saada R. Siin on näide mida see näeks:

Koos annavad need operatsioonid kasutatakse skalaarkorrutise, R on P, lisamise teel punktini Pto ise atimes. Näiteks:

R = 7P
R = P + (P + (P + (P + (P + (P + P)))))

Protsessi skalaarkorrutise tavaliselt lihtsustatud kasutades kombinatsiooni punkti lisaks ja punkt kahekordistumise operatsioone. Näiteks:

R = 7P
R = P + 2 (P + 2P)

Siin 7Phas on jaotatud kaheks punkt kahekordistada samme ja kaks punkti lisaks samme.

Piiratud valdkondades

Lõpliku väljaga, seoses ECDSA, võib vaadelda kui etteantud vahemikku positiivseid numbreid, mis iga arvutuse peab langema. Iga number väljaspool seda vahemikku "murtakse" nii, et jääb vahemikku.

Lihtsaim viis mõelda seda arvutamisel jäägid, mida esindab moodul (mod) operaator. Näiteks 9/7 annab 1 koos järelejäänud 2:

9 mod 7 = 2

Siin meie piiratud valdkonnas on moodul 7 ja kõik mod tegevuse üle selles valdkonnas saades tulemusena langevad vahemikku 0-6.

Haara see koos

ECDSA kasutab elliptiline kõverad kontekstis lõpliku väljaga, mis oluliselt muudab oma välimust, kuid mitte nende aluseks olevate võrrandite või eriomadused. Sama võrrand graafikule märgitud, lõpliku väljaga moodul 67, näeb välja selline:

Nüüd kogum punkti, kus kõik xand yvalues ​​on täisarvud vahemikus 0 kuni 66. Pange tähele, et "kõver" säilinud horisontaalse sümmeetria.

Point Lisaks ja kahekordistada nüüd veidi erinev visuaalselt. Lines tõmmati selle graafik ümbritsev horisontaalselt kui vertikaalselt, nagu mängus asteroidide, säilitades samal nõlval. Nii lisades punkte (2, 22) ja (6, 25) näeb välja selline:

Kolmas lõikumispunkt on (47, 39) ja selle peegeldus punktil (47, 28).

Tagasi ECDSA ja Bitcoin

Protokoll nagu Bitcoini valib parametrisarja elliptiline kõver ja selle lõpliku väljaga esindatus, mis on kinnitatud kõigi kasutajate protokolli. Parameetrid hõlmavad equationused, prime moduloof valdkonnas, ja aluse pointthat langeb kõver. Orderof aluse punkt, mis ei ole valitud iseseisvalt, kuid on funktsioon teiste parameetritega võib kujutleda graafikuna mitmeid kordi punktini võib lisada ennast kuni selle kalle on lõpmatu või püstjoonega. Alus punkt on valitud nii, et selleks on suur algarv.

Bitcoin kasutab väga suur hulk oma baasi punkt, prime moodul ja järjekorras. Tegelikult on kõik praktilised rakendused ECDSA kasutada tohutu väärtusi. Turvalisuse algoritm tugineb nende väärtuste on suur ja seetõttu ebapraktiline jõuvõtete või pöördkodeerida.

Juhul Bitcoin:

Ellipsi võrrand: y2 = x3 + 7

Prime moodul = 2256- 232- 29- 28- 27- 26- 24- 1 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F

Base ° = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8

Tellimus = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141

Kes valis need numbrid ja miks? Palju uuringuid ning õiglase summa intriig, ümbritseb valiku korral parameetreid. Lõppude lõpuks, suur, näiliselt juhuslik arv võib peita tagauks meetod rekonstrueerimise privaatvõti. Lühidalt, see konkreetne realiseerimine läheb nimi secp256k1 ja on osa pere ellipsi lahendusi üle piiratud valdkondades kavandatud kasutamiseks krüptograafia.

Private võtmed ja avalikke võtmeid

Nende formaalsused eest ära, me oleme nüüd võimelised mõistma isiklikke ja avalikke võtmeid ja kuidas nad on omavahel seotud. Siin see on lühikokkuvõte: In ECDSA, privaatvõti on ettearvamatult valitud number vahemikus 1 ja järjekorras. Avalik võti on saadud privaatvõti poolt skalaarkorrutise aluse punkt mitmeid kordi võrdne väärtus privaatvõti. Väljendatud võrrandiga:

Avaliku võtme = privaatvõti * põhipunkti

See näitab, et võimalikult suur hulk isiklikke võtmeid (ja seega Bitcoin aadressid) on võrdne järjekorras.

Pideva valdkonnas võiksime krunt puutuja liin ja täpselt avaliku võtme graafikul, kuid seal on mõned equationsthat sama tulemuse saavutamiseks kontekstis piiratud valdkondades. Point lisamine p + qto leida ris määratletud komponendipõhiselt järgmiselt:

C = (qy - py) / (qx - px)
ry = c (px - rx) - py

Ja punkt kahekordistamist PTO leid r on järgmine:

C = (3px2 + a) / 2py
ry = c (px - rx) - py

Praktikas arvutamise avaliku võtme on jaotatud mitme punkti kahekordistamine ja punkt Lisaks operatsioone alates põhipunkti.

Laseme ümbriku tagaküljele näiteks kasutades vähe, et saada intuitsiooni, kuidas võtmed on ehitatud ja mida kasutatakse allkirjastamise ja kontrollides. Parameetrid me kasutame on:

Võrrand: y2 = x3 + 7 (mis tähendab, a = 0 ja b = 7)
Privaatvõti: 2

Esiteks, ärgem leida avaliku võtme. Kuna oleme valinud võimalikult lihtne privaatvõti väärtusega = 2, siis on vaja ainult ühte punkti kahekordistada operatsiooni baasi punkt. Arvutus näeb välja selline:

C = (3 * 22+ 0) / ( 2 * 22) mod 67
c = 12/44 mod 67

Siin peame pausi natuke sleight-of-hand: kuidas me täita jagunemise kontekstis lõpliku väljaga, kus tulemus peab alati olema täisarv? Me peame korrutada pöördvõrdeline, mis ei ole ruumi meil määratleda siin (me nimetame teid hereand hereif huvitatud). Juhul käepärast, siis uskuge meid hetkeks, et:

44-1 = 32

Liikumine paremale mööda:

C = 12 * 32 mod 67
c = 49

Rx = (492- 2 * 2) mod 67
rx = 52

Ry = (49 * (2-52) - 22) mod 67
ry = 7

Meie avaliku võtme seega vastab punkti (52, 7). Kõik, mis tööd salajase võtmega 2!

See operatsioon - läheb taas avalikuks võti - on arvutuslikult lihtne võrreldes püüab töötada tagurpidi tuletada privaatne võti avaliku võtme, mis on teoreetiliselt võimalik on arvutuslikult võimatu tänu suurtele kasutatud parameetrite tegelike elliptiline krüptograafia.

Seetõttu läheb era võti avaliku võtme on kavandatud ühesuunaline reis.

Nagu privaatvõti, avaliku võtme tavaliselt esindab kuueteistkümnendsüsteemis string. Aga oodake, kuidas me saame punkti lennukis kirjeldatud kaks numbrit, et ühe numbri? Tihendamata avaliku võtme kahe 256-bitine arv esindab xand y koordinaadid on lihtsalt kinni ühes pikk string. Me võime ka ära sümmeetria ellipsi toota tihendatud avaliku võtme, hoides lihtsalt x väärtus ja märkides, millest pool kõver punkti on. Siit osalise teabe saame kätte nii koordinaadid.

Sisselogimine andmeid privaatvõti

Nüüd, et meil on isikliku ja avaliku võtme paari, olgem logi mõned andmed!

Andmed võivad olla mis tahes pikkusega. Tavaline Esimeseks sammuks on hash andmete genereerimiseks mitmeid sisaldavad sama bittide arvuga (256), nagu suurusjärgus kõver. Siin jaoks lihtsuse mõttes me vahele segamist samm ja logige algandmed z. Me nimetame GSelle põhipunkti, nthe järjekorras ja ð privaatvõti. Retsept allkirjastamise on järgmine:

  1. Vali mingi täisarvu k vahemikus 1 kuni n - 1.
  2. Arvutatakse punkti (x, y) = k * G, kasutades skalaarkorrutise.
  3. Leia r = x mod n. Kui r = 0, 1. Sammus.
  4. Leida s = (z + r * d) / k mod n. Kui s = 0, 1. Sammus.
  5. Allkiri on paar (r, s)

Tuletame meelde, et 4. Sammus siis, kui numbrid kaasa fraktsioon (mis reaalses elus nad peaaegu alati hakkab), lugeja peaks korrutatakse pöördvõrdeline nimetaja. 1. Etapis on oluline, et sõlm korrata erinevates allkirjaga ning et see ei ole äraarvatavad kolmanda isiku poolt. See tähendab, et kshould kas juhuslikult või loodud determineeritud tähendab, et hoitakse saladuses kolmandate isikute suhtes. Vastasel juhul oleks võimalik toota privaatvõti etapist 4, kuna s, z, r, kand nare kõik teada. Te saate lugeda umbes viimase kasutada seda tüüpi siin.

Valime meie andmed olla number 17, ja järgige retsept. Meie muutujad:

Z = 17 (andmed)
d = 2 (privaatvõti)

  1. Pick juhuslikult number:

K = rand (1, n - 1)
k = 3 (see on tõesti juhuslik? OK sul meile, kuid see teeb meie näiteks lihtsam!)

  1. Arvuta punkt. Seda tehakse samal viisil nagu määrata avaliku võtme, kuid lühiduse olgem jätta aritmeetiline punktist Lisaks ja punkt kahekordistamist.

(x, y) = 3G
y = 63

  1. Leia r:

R = x mod n
r = 62

  1. Leia s:

S = (z + r * d) / k mod n
s = 47

Pange tähele, et ülaltoodud suutsime jagada 3 alates tulemus oli täisarv. Päriselus juhtudel me kasutame pöördvõrdeline k (nagu enne, oleme peidetud mõned verine üksikasjad arvutustehnika mujal):

S = (z + r * d) / k mod n
s = 47

  1. Meie allkiri on paar (r, s) = (62, 47).

Nagu isiklikke ja avalikke võtmeid, see allkiri on tavaliselt esindatud kuueteistkümnendsüsteemis string.

Allkirja kontrollinud avaliku võtmega

Nüüd on mõned andmed ja allkiri, et andmed. Kolmas isik, kellel on meie avaliku võtme võib saada meie andmed ja allkiri, ja veenduge, et oleme saatjad. Vaatame, kuidas see toimib.

Mis Qbeing avaliku võtme ja teised muutujad on määratletud nagu enne, sammud kontrollida allkirja on järgmised:

  1. Veendu, et r ja s on vahemikus 1 kuni n - 1.
  2. Arvutage w = s-1 mod n
  3. Arvutatakse u = z * w mod n
  4. Arvutatakse v = r * w mod n
  5. Arvutatakse punkti (x, y) = ug + VQ
  6. Veendu, et r = x mod n. Allkiri on vigane, kui see ei ole.

Miks neid samme tegema? Oleme vahele tõend, kuid saate lugeda üksikasju siin. Olgem järgima retsept ja näha, kuidas see toimib. Meie muutujad taas:

Z = 17 (andmed)
Q = (52, 7) (avalik võti)

  1. Veenduge, et rand Säre 1 kuni n- 1. Kontrolli ja kontroll.

R: 1 <= 62 <79
s: 1 <= 47 <79

  1. Arvuta w:

W = s-1 mod n
w = 37

  1. Arvuta u:

U = zw mod n
u = 76

  1. Arvuta v:

V = rw mod n
v = 3

  1. Arvutatakse punkti (x, y):

(X, y) = ug + VQ

Olgem murda punkt kahekordistamine ja lisaks sellele uGand vQseparately.

UG = 76g
UG = 2 (2 (G + 2 (G + 2 (2 (2G)))))

Istuge hetkeks tähelepanuta, et kasutades rühmituse trikk me vähendada 75 järjestikust Lisaks toimingud vaid kuus operatsioonide punkti kahekordistamine ja kaks operatsiooni punkti lisaks. Need trikid tulevad mugav, kui numbrid saada tõesti suur.

Töö meie tee seest välja:

UG = 2 (2 (G + 2 (G + 2 (2 (2 (2, 22))))))
UG = (62, 4)

Ja nüüd VQ:

VQ = 3Q
VQ = (11, 20)

Haara need kokku:

(x, y) = ug + VQ
(x, y) = (62, 63)

On selge samm 5 on osa tööst. Sest viimane samm,

  1. Veendu, et r = x mod n

R = x mod n
62 = 62

Meie Signatuur on kehtiv!

Järeldus

Neile teist, kes nägid kõik võrrandid ja vahele põhja, mida oleme lihtsalt õppinud?

Oleme välja töötanud mõned intuitsiooni sügavat matemaatilist seost, mis eksisteerib avaliku ja erasektori võtmed. Oleme näinud, kuidas isegi kõige lihtsamaid näiteid matemaatika taga allkirju ja kontrollimise kiiresti saab keeruline, ja me saame hinnata tohutu keerukus, mis tuleb kaasata, kui seotud parameetrid on 256-bitine numbrid. Oleme näinud, kuidas targad kohaldamise lihtsaim matemaatilisi saab luua ühe suuna "lõksu uks" funktsioone vaja säilitada teabe asümmeetria, mis määratleb omandiõiguse Bitcoin. Ja meil on taasleitud usaldust stabiilsuses süsteemi tingimusel, et me hoolikalt kaitsta teadmisi meie isiklikud võtmed.

Teisisõnu, see on põhjus, miks see on tavaliselt öelnud, et Bitcoin on "tagatud matemaatika".

Kui te riputada läbi keeruline bitti, me loodame, et see andis teile usku, et võtta järgmine samm ja proovida matemaatika ise (modulaarne aritmeetiline kalkulaator teeb lõpliku väljaga matemaatika palju lihtsam). Leidsime, et läheb läbi etappe allkirjastamise ja andmete kontrollimiseks käsitsi annab sügavama arusaama krüptograafia, mis võimaldab Bitcoin unikaalne omandivormist.

See artikkel on uuesti siin autori luba. Algselt avaldatud Chain.com. Autor annab eriline tänu Steven Phelps abi käesolevale artiklile.

Bitcoin ProtocolCryptography

Seotud uudised


Post Bitcoin

CoinDeski kõige mõjukamad aastal 2018 Blockchainis: Pieter Wuille

Post Bitcoin

Bitcoin pealkirjades: Putin ja Deloitte joonistavad suvemadukid

Post Bitcoin

Austraalia advokaadid, Bitcoini rühmad kutsuvad selgust määrusele

Post Bitcoin

Philly Fed juhataja: Bitcoinil on vähe rahapoliitika takistusi

Post Bitcoin

Mis siis, kui üks Bitcoin ei ole nagu teised? Mõtlemiskonverentsil arutleti vaheldumisi

Post Bitcoin

Inside IC3: kuidas Cornell edendab Bitcoini teadust

Post Bitcoin

Miks Bitcoini juhtimine on konkurents (ja see on hea asi)

Post Bitcoin

Top 5 USA osariigid Bitcoini sularahaautomaatide jaoks

Post Bitcoin

Bitcoini Fond ametlikult käivitab rahvusvahelised peatükid

Post Bitcoin

New Bitcoini Fondi juhatuse liikmed püüavad Bitcoini kaitsta Kanadas

Post Bitcoin

Bitfury siseneb Bitcoini kuritegevuse vastasele ettevõttele

Post Bitcoin

Luxury Yacht Service teeb oma esimese Bitcoin broneerimine