Šis raksts ir fragments no grāmatas The Layman’s Guide to Bitcoin autors Logans Brutše un šeit tiek atkārtoti publicēts ar autora atļauju.
Kriptogrāfija ir zinātne par matemātisko funkciju piemērošanu datiem, lai garantētu to drošību.
Daudzas populāras fantastikas nozīmē, ka jebkuru sistēmu var uzlauzt, ja vien jums ir pietiekami labs hakeris. Šī “Holivudas uzlaušana” nedarbojas reālajā pasaulē – hakerim sistēmā ir jāatrod ievainojamība, piemēram, atbloķēta servera telpa, viegli uzminama parole, neaizsargāts tīkla ports vai “aizmugurējā durvis”. instalēts kā iekšējs darbs, lai vēlāk iegūtu nesankcionētu piekļuvi.
Lai gan tā ir taisnība, mēs nekad nevaram garantēt, ka konkrētajai sistēmai nav ievainojamības – galu galā sistēmas izveido nepilnīgi cilvēki -, tomēr viedoklis, ka “visu var uzlauzt”, ir nepatiesa. Kopš 90. gadu sākuma mums ir bijusi piekļuve kriptogrāfijas metodēm, kuras vienkārši nav pasargātas no uzlaušanas. Tas ir šādu metožu pielietojums, kas dažkārt var atstāt vietu ekspluatācijai.
Kriptogrāfiju nevar uzlauzt, lai ģenerētu viltotu kriptogrāfisko parakstu (definēts drīz), tāpat kā matemātiku nevar uzlauzt, lai iegūtu 2 + 2 = 5 – lai gan gan kriptogrāfiju, gan matemātiku var izmantot nepareizi. Ja sistēma, kas izmanto kriptogrāfiju, neizdodas, tas ir tāpēc, ka dizainers nepareizi lietoja kriptogrāfiju. Tas nav tāpēc, ka kriptogrāfija nedarbojās, vai tāpēc, ka kāds kriptogrāfiju “uzlauzis” – tāpat kā nav matemātikas vaina, ja jūsu banka nepareizi apstrādā jūsu kontu, vai e-pasta vaina, kad mamma lejupielādē nepazīstamu pielikumu un saņem datorvīrusu . Šī ir svarīga atšķirība, jo Bitcoin ļoti tieši ir izveidotās kriptogrāfijas pielietojums.
Kriptogrāfija nav jauna, nepārbaudīta tehnoloģija. Visas Bitcoin izmantotās kriptogrāfijas metodes ir izmantotas kopš interneta darbības sākuma, un tās ir būtiskas daudziem ikdienas izmantotajiem ikdienas protokoliem. Datorzinātnieki kriptogrāfijas zinātni uzskata par uzticamu un būtisku tāpat kā NASA raķešu zinātni – par uzticamu un būtisku.
Atslēgu pāri: kriptogrāfijas stūrakmens
Atslēgu pāri ir blokķēdēs izmantotās kriptogrāfijas stūrakmens. Atslēgu pārim ir divas daļas: privātā un publiskā atslēga. Šīs atslēgas patiesībā ir nekas cits kā ļoti lieli skaitļi ar specifiskām matemātiskām attiecībām, ko izmanto paroļu un lietotājvārdu vietā.
Jūs rīkotos ar tādu publisko atslēgu kā jūsu vārds vai lietotājvārds: vairumā gadījumu jūs to kopīgojat ar visiem, kas lūdz, un tie, kuriem tā ir, var to izmantot, lai atsauktos vai sazinātos ar jums. Tas ir saistīts ar jūsu reputāciju (vai Bitcoin gadījumā – ar jūsu darījumu vēsturi), tāpēc jums varētu būt vairākas publiskās atslēgas (un līdz ar to arī vairākas atslēgu pāres), kuras izmantojat dažādiem mērķiem. Publisko atslēgu var izmantot, lai atsauktos uz kontu vai skatītu to, taču pats par sevi nevar autorizēt nekādas darbības ar šo kontu.
Privātā atslēga ir jāizturas kā pret paroli: to nedrīkst koplietot ar citiem, un to izmanto, lai autentificētu noteiktas darbības, piemēram, BTC nosūtīšanu.
Bet starp privāto atslēgu un paroli ir būtiska atšķirība. Lai izmantotu paroli, tā ir jānosūta personai vai serverim, lai to varētu salīdzināt ar viņu ierakstiem. Jums jāuzticas, ka pēc paroles nosūtīšanas tā tiks izturēta atbildīgi. Turpretī privāto atslēgu var izmantot, lai autentificētu sevi, to nenosūtot nekur. Vienīgā vieta, kur tā jebkad tiek glabāta vai tieši izmantota, ir jūsu vietējā ierīcē.
Tas ir svarīgi, jo, ja jūs varat autentificēties, nenosūtot savu noslēpumu nekur, jūs varat pilnībā kontrolēt tā drošību – jūs neesat neaizsargāts pret citu sistēmu drošības pārtraukumiem. Šī ir būtiska daļa no tā, kas padara Bitcoin neuzlaužamu. Pašā Bitcoin nav paroļu vai privāto atslēgu, lai uzbrucējs varētu kompromitēt, un tomēr lietotāji joprojām var autentificēt darījumus.
Bet kā jūs varētu izmantot privāto atslēgu darījuma autentificēšanai, ja nekad privāto atslēgu nekur nesūtāt? Atbilde ir saistīta ar matemātiskajām attiecībām starp privāto un publisko atslēgu: kriptogrāfiskajiem parakstiem.
Kriptogrāfiskie paraksti
Kriptogrāfisko parakstu ģenerēšanai un apstiprināšanai ir vairākas dažādas metodes, un matemātiskās teorēmas, kas ļauj tām strādāt, ir tālu ārpus šī raksta darbības jomas. Tiem, kas nezina kriptogrāfiju, šeit aprakstītais process sākotnēji varētu izklausīties pilnīgi neiespējams. Es skaidri atceros, ka man bija šāds iespaids, kad pirms četriem gadiem sāku pētīt Bitcoin.
Pagaidām es vienkārši vēlreiz atzīmēšu, ka šīs tehnoloģijas tiek izmantotas daudzos izplatītos interneta protokolos un ir izveidota informācijas zinātnes sastāvdaļa.
Iedomājieties divus cilvēkus – Alisi un Bobu, kuri jau klātienē ir tirgojuši publiskās atslēgas. Alise vēlas nosūtīt Bobam ziņojumu, taču Bobs ir ļoti aizdomīgs cilvēks un neuzticas, ka ziņa tiešām nākusi no Alises, ja vien viņš bez jebkādām šaubām nevar to pierādīt matemātiski. Lai atvieglotu šo pierādījumu, viņi piekrīt izmantot kriptogrāfisko parakstu.
Lai ģenerētu parakstu, Alise izmanto sava datora parakstu ģenerēšanas algoritmu, kas kā ievadi izmanto viņas privāto atslēgu un pilnīgu ziņojumu, un ģenerē kriptogrāfisko parakstu. Pēc tam viņa nosūta Bobam šo ziņojumu / parakstu kombināciju – bet, kas ir pats galvenais, nesūta viņai privāto atslēgu.
Kad Bobs saņem ziņojumu un parakstu, viņam ir jāizmanto papildu parakstu apstiprināšanas algoritms. Šis algoritms kā ievadi ņem ziņojumu un parakstu un nosaka publiski atslēgu pāra atslēga, kuru Alise izmantoja, lai ģenerētu parakstu. Kad Bobs redz savu algoritmu izvadi Alises publisko atslēgu, viņš matemātiski ir pierādījis, ka parakstam jābūt ģenerētam ar Alises atslēgu pāri, kaut arī viņš nezina un nevar aprēķināt Alises atslēgu pāra privāto pusi..
Īsāk sakot, šis kriptogrāfiskā paraksta process ļauj Bobam pārbaudīt, vai ziņojumu nav izveidojusi vai modificējusi kāda trešā puse, un tam jābūt ģenerētam ar Alises privāto atslēgu, nezinot (vai nevarot) zināt viņas privāto atslēgu. Viņam ir nepieciešama tikai ziņu / parakstu kombinācija un viņas publiskā atslēga.
Intuitīvi tas šķiet neiespējami, un jūs varētu justies tā, it kā kaut ko pārprastu. Ja Alises privātās un publiskās atslēgas ir tik cieši saistītas un Alise izmantoja savu privāto atslēgu, lai ģenerētu Boba saņemto parakstu, kā tas ir, ka viņš var iegūt viņas publisko atslēgu, bet nevar atrast viņas privāto atslēgu? Atbilde uz to prasa daudz dziļāku matemātikas izpratni nekā lielākajai daļai cilvēku, un tā ir tālu ārpus šīs grāmatas darbības jomas.
Tomēr uz šo paņēmienu paļaujas un to lieto katru dienu, un kriptogrāfijas kopienā tas tiek uzskatīts par cietu. Apmeklējot vietni un tās adrese sākas ar https, “s” norāda, ka vietne ir sevi apstiprinājusi ar kriptogrāfisko parakstu. Jūsu dators izmantoja parakstu validācijas algoritmu, tāpat kā Bobs iepriekš minētajā piemērā, lai pārliecinātos, ka vietne patiešām nāk no pareizā taustiņu pāra. Šis kriptogrāfiskais paraksts ir balstīts, lai nodrošinātu, ka jebkāda turpmāka mijiedarbība starp jums un vietni ir šifrēta un autentiska. Ja šis tests neizdosies, mūsdienu pārlūkprogrammas jūs brīdinās un atzīmēs vietni kā bīstamu.
Pietiekami milzīgi skaitļi
Iepriekš es īsi minēju, ka privātās un publiskās atslēgas darbojas kā lietotājvārdi un paroles, taču patiesībā tie nav nekas cits kā ārkārtīgi lieli skaitļi ar īpašām matemātiskām attiecībām. Ņemot to vērā, man bieži uzdod šādus jautājumus:
“Vai kādam nevar vienkārši likt datoram uzminēt vai saskaitīt virkni numuru un izmēģināt tos kā privātās atslēgas? Vai viņi galu galā nedarbosies ar kāda mērķa atslēgas pāra privāto atslēgu un tādējādi neiegūs kontroli pār šo identitāti? ” Patiešām, Bitcoin gadījumā tas ļautu uzbrucējam nozagt naudu, kas ir kāda atslēgu pāra rokās.
Tas ir labs jautājums, un tomēr tas nenotiek. Kā minēts iepriekš, ir vairākas Bitcoin adreses ar miljoniem dolāru vērtu BTC, kas gadiem ilgi nav pārvietojies – kaut arī viss, kas būtu vajadzīgs tās nozagšanai, ir pareizā privātā atslēga – pareizais milzīgais skaits! Ja jūs varētu uzminēt privāto atslēgu šīm adresēm, naudu varat nosūtīt jebkur. Atšķirībā no paroles, jūs varat pārbaudīt privātās atslēgas lokāli savā datorā, un serveris neierobežo to skaitu, cik reizes vai cik ātri jūs tos mēģināt..
Kāpēc tad neviens vēl nav nozadzis šos līdzekļus? Atbilde slēpjas gandrīz absurda izmēra skaitļos, kas tiek izmantoti kā privātās atslēgas. Viņi ir pietiekami milzīgs.
Sāksim ar vienkāršu domu eksperimentu. Iedomājieties, ka jūsu privātā atslēga bija tieši tik liela, ka, ja visi pasaules datori darbotos kopā, viņiem būtu vajadzīgas pilnas 24 stundas, lai to bruteforce uzminētu. Ja privātajai atslēgai pievienosiet tikai vēl vienu ciparu, datoriem būs jāveic desmit reizes vairāk permutāciju, tāpēc vienas dienas vietā būtu nepieciešamas 10 dienas. Vēl seši cipari to novestu līdz 27 000 gadiem.
Katrā ziņā privātās atslēgas ģenerēšana – kas prasa tikai iespēju izveidot nejaušus skaitļus – paliek nenozīmīga. Privātās atslēgas izmantošana parakstu ģenerēšanai, kā arī šo parakstu pārbaude pret publisko atslēgu arī paliek skaitļošanas ziņā vienkārša. Bet darbs, kas nepieciešams privātās atslēgas uzminēšanai, ar katru papildu ciparu pieaug eksponenciāli. Lai padarītu privātās atslēgas “neaizsargātas” pret brutālu spēku uzminēšanu, mums jāpievieno tikai pietiekami daudz ciparu – mums tie jāpadara tikai pietiekami.
Tātad, cik milzīgs, tas ir pietiekami milzīgs? Bitcoin izmantotās privātās atslēgas ir 256 bitu veseli skaitļi, kas ir skaitlis, kas ir septiņdesmit seši cipari garš. Šī skaitļa lieluma jauda ir neticama. Šī ilustrācija lielā mērā atvasināta no Brūsa Šneiera grāmatas Lietišķā kriptogrāfija, un tas ir pārliecinoši pietiekami milzīgu skaitļu demonstrējums.
Pirmkārt, atzīstiet, ka termodinamikas otrā likuma specifiskās sekas ir tādas, ka ir nepieciešama minimālā enerģija, lai mainītu vienu bināru informācijas bitu (mainot 1 uz 0 vai vise-versa). Tas nozīmē, ka jebkuram skaitļošanas procesam ir nepieciešams minimāls enerģijas patēriņš, neatkarīgi no izmantotās aparatūras.
Tagad pieņemsim, ka jūs varējāt izmantot visu saules enerģijas daudzumu, lai darbinātu tikai speciāli izstrādātu datoru, kura uzdevums ir skaitīt vai uzminēt privātos taustiņus, cerot atrast atslēgu pāra privāto atslēgu (kas varētu kontrolēt BTC).
Izmantojot nedaudz matemātikas un termodinamikas, jūs atradīsit, ka pilnīgi efektīvs dators var saskaitīt 2178 vērtības, ņemot vērā visu saules enerģijas gada jaudu. Sadalot šo vērtību iespējamo privāto atslēgu skaitā, 2256, mēs konstatēsim, ka šis hipotētiskais dators spēs uzminēt vai skaitīt tikai caur 0,000000000000000000000003% no kopējā iespējamo privāto atslēgu skaita – ņemot vērā visu saules enerģijas gada jaudu.
Turklāt tas ir tikai skaitīšana un neietver daudz sarežģītāku uzdevumu faktiski pārbaudīt katru privāto atslēgu, lai noskaidrotu, vai tā atbilst pareizajai publiskajai atslēgai. Tātad 0,000000000000000000000003% iespējamībā šis dators viena gada beigās patiešām notika ar pareizo privāto atslēgu, un to pat neapzinās..
Šiem skaitļiem nav nekāda sakara ar ierīču tehnoloģiju; tie ir maksimumi, kas ir iespējami saskaņā ar termodinamikas likumiem, kas ir izveidoti kopš 1930. gadiem. Un tie stingri norāda, ka nežēlīgi spēka uzbrukumi 256 bitu atslēgām (kuras Bitcoin izmanto) būs neiespējami, kamēr datori netiks būvēti no kaut kā cita, nevis no matērijas un aizņems kaut ko citu, nevis kosmosu.
Tas ir pietiekami milzīgu skaitļu spēks. Nav svarīgi, cik hakeris ir labs. Ja vien viņš nevar vienu gadu izmantot trīs simti sešstiljonu saules vai trīs simti sešstundu gadu, viņa dators pat nevar skaitīt izmantojot visas privātās atslēgas – nemaz nerunājot par to testēšanu vai citādu izmantošanu.
Lai padziļināti apskatītu Bitcoin un kriptogrāfiju, paņemiet Logana Brutša grāmatu, The Layman’s Guide to Bitcoin.