Nulles zināšanu pierādījumi, Zcash un Ethereum
3. daļa no sērijas “Privātums blokķēdē”.
Šīs sērijas trešajā daļā es koncentrēšos uz nulles zināšanu pierādījumiem, kas ir pamats lielākai finanšu un datu konfidencialitātei kriptovalūtās, tostarp Zcash un Ethereum.
Bārā jūs nejauši apspriežat privātuma iespējas ar saviem patroniem. Viens kungs zvēr pie Dash’s PrivateSend. Cits kolēģis piedāvā pārdot jums vislabāko Monero. Bārmene ir Ethereum fane — viņa nav uztraukusies par privātumu, jo tā ir “on the roadmap”. Starp mikseriem, zvana parakstiem un galvenajiem mezgliem jūs skaļi domājat, vai ir kāds labāks rīks datu un finanšu privātuma nodrošināšanai.
Bāra galā plāns, nedaudz plikpaurīgs vīrietis izskatās kā viņš gribētu pievienoties sarunai. Tu pamani un smaidi. Vīrietis nervozi noliecas pret tevi, norij un pieklusinātā tonī saka …
“… nulles zināšanu pierādījumi.”(“…zero-knowledge proofs.”)
“… nulles zināšanu pierādījumi.”
Nulles zināšanu pārbaude ir neērta tēma.
Pārsvarā viņi ir neērti, jo liek cilvēkiem justies stulbiem vai liek cilvēkiem uztraukties, ka viņiem liks izskatīties stulbiem. Gan kriptogrāfi, gan izstrādātāji cīnās ar šo tēmu.
Nulles zināšanu pārbaude ir kriptogrāfijas rīku kategorija ar daudzām dažādām garšām. Kā jēdziens tie nav biedējoši, un to izpratnei ir vērts veltīt nedaudz laika.
Tāpat kā vairumam lietu, arī tēmai ir slāņi, kurus var atlobīt un izpētīt. Neliela līdzība var būt tāls ceļš, lai saprastu, kas ir nulles zināšanu pierādījumi un ko viņi var darīt.
Briesmas no svešinieka
Iedomājieties, ka jūs satiekat kādu uz ielas, un viņi apgalvo, ka pazīst jūsu māti — viņa atrodas slimnīcā, un jums tūlīt jāiekāpj kopā ar viņu, lai dotos pie viņas. Jūs esat marinādē. Jūs uztraucaties par savu māti, taču tagad jums vajadzētu justies nopietnām “svešām briesmām”.
Jums jāpārbauda, vai šis svešinieks patiesībā ir ģimenes draugs, kuram varat uzticēties. Tātad jūs tos nopratināt, uzdodot jautājumus, uz kuriem viņiem būtu jāspēj atbildēt tikai tad, ja viņi patiešām ir tuvu ģimenei.
Pieņemot, ka uzdodat labus jautājumus, tikko izgudrots protokols ir nulles zināšanu pierādījuma piemērs. Jūs, verificētājs, pārbaudāt, vai svešinieks vai sakāmvārds patiešām zina jūsu māti. Jūs to darāt interaktīvi, izdomājot jautājumus, kuriem iepriekš grūti sagatavoties, ja vien sakāmvārds nav tas, par kuru viņi apgalvo.
Tieši tā. Nulles zināšanu pierādījums ir tad, kad sakāmvārds pārliecina verificētāju, ka viņiem ir kādas slepenas zināšanas, neatklājot zināšanas tieši verificētājam. Mūsu piemērā zināšanas nevar tieši atklāt, jo mums nav vienkārša veida, kā “sērijveidot” un dalīties ar cilvēku zināšanām, piemēram, satikties ar savu māti — tikai verbālās un vizuālās valodas brīvie tuvinājumi.
Izaicinājums / atbilde
Labs kopēja nulles zināšanu pierādījuma piemērs ir kriptogrāfisks izaicinājuma-atbildes protokols.
Jūsu draugs Zooko tvītoja, ka viņam vienkārši ir bijusi brīnišķīga pica, neskatoties uz ilgo un balsīgo naidīgumu pret ogļhidrātiem. Ja esat noraizējies, ka viņa konts ir uzlauzts, jūs nosūtāt DM, lūdzot viņu šifrēt¹ ziņojumu “Jā, es tiešām tikko apēdu veselu picu. Uz tā nebija pat gaļas! ” ar savu privāto atslēgu. Ja šifrēto tekstu, ko viņš sūta, var atšifrēt, izmantojot viņa zināmo publisko atslēgu, jūs zināt, ka viņam joprojām ir piekļuve savam Twitter kontam².
Svarīgs punkts šajā piemērā ir tas, ka jūs kā verificētājs izvēlējāties ziņojumu. Ja sakāmvārds būtu izvēlējies ziņojumu un Zooko konts būtu apdraudēts, uzbrucējs varētu izmantot jebkuru iepriekšējo ziņojumu, kuru Zooko bija šifrējis ar savu pieejamo privāto atslēgu. Piemēram, pieņemsim, ka Zooko kādu laiku agrāk bija likumīgi šifrējis ziņojumu “Es mīlu gaļu”, un uzbrucējam bija piekļuve šifrētajam un parastajam tekstam. Uzbrucējs kā sakāmvārds varēja izmantot šo ziņojumu, apmānot verificētāju tā sauktajā atkārtotā uzbrukumā.
Tātad, kamēr Zooko vēl nekad nav šifrējis šo ziņojumu, jūs esat labs. Praksē ziņojumā ir jāiekļauj arī nonce vai nejaušs skaitlis, lai pārliecinātos, ka tas ir unikāls — vai vēl labāk, izmantojiet paraksta algoritmu, kas jums to nodrošina, nevis asimetrisku šifrēšanu.
Lai gan vairums nulles zināšanu pierādījumu ir līdzīgi interaktīvi, un verificētājam ir nepieciešams kaut kā nopratināt sakāmvārdu, ir varianti, kuros sakāmvārdim nav jāatbild uz pārbaudītāja izaicinājumu. Apsveriet, piemēram, piekļuves pierādīšanu failam. Sludinātājs var publicēt faila jaukšanu. Verificētājs var būt pārliecināts, ka sakāmvārdam ir piekļuve failam, jo aprēķina dēļ nav iespējams citādi nākt klajā ar šo hash.
Ir jābūt skaidram, ka nulles zināšanu pierādījumi neatrisina privātumu. Tā vietā viņi veido blokus privātumu saglabājošām sistēmām. Dažādi nulles zināšanu pierādījumu veidi var nodrošināt atšķirīgu šo sistēmu funkcionalitāti.
zk-SNARKs
Kad kriptovalūtas telpā esošie cilvēki saka “nulles zināšanu pierādījumi”, viņi parasti atsaucas uz noteiktu pierādījumu veidu — zk-SNARKs.
Matemātiku, kas ir zk-SNARKs pamatā, ir grūti saprast, taču, ja vien jūs tos neieviešat, neuzbrūkat viņiem vai neesat pārāk paranoisks, lai to uztvertu kriptogrāfa vārdā, varat izlaist matemātiku un koncentrēties uz to, ko viņi dara.
Parunāsim par vārdu. “Zk” nozīmē nulles zināšanas. Apbrīnojami ir tas, ka datorzinātnēs ir virkne citu “snarku”, tostarp teorēmu sakāmvārds un grafika veids, kā arī ārpus datorzinātnes, ieskaitot iedomātas radības, videospēles un sarkastiskas piezīmes.
Šis konkrētais SNARK nozīmē īsu, neinteraktīvu, adaptīvu zināšanu argumentu³.
Jūs varat lasīt “kodolīgs” kā “pietiekami efektīvs, lai to varētu aprēķināt saprātīgā laikā”, kas ir īpaši svarīgi pārbaudei.
“Neinteraktīvs” nozīmē, ka SNARKs neprasa, lai verificētājs nopratinātu sakāmvārdu. Tā vietā sakāmvārds var iepriekš publicēt savus pierādījumus, un verificētājs var pārliecināties, ka tie ir pareizi, līdzīgi kā faila jaukšanai.
Visbeidzot, “adaptīvs zināšanu arguments” attiecas uz zināšanu pierādījumu par kādu aprēķinu.
Ko tas precīzi nozīmē? Iedomājieties, ka jūsu matemātikas skolotājs dod jums sarežģītu aritmētisko problēmu. Tā vietā, lai sniegtu atbildi (un parādītu savu darbu!), Zk-SNARKs ļauj jums pierādīt, ka zināt atbildi, patiesībā to nedalot.
Tas ir veikls triks, taču ir daži iebildumi.
SNARK ir intensīvs resursu patēriņš. Kā redzēsim apspriežot Zcash, daži no aprēķiniem apgrūtina noteiktus lietošanas gadījumus, tostarp mobilo un mazjaudas ierīču lietošanu, lai gan nesenie sasniegumi šajā telpā ir bijuši iepriecinoši.
Ir arī jautājums par piekļuves zaudēšanu noslēpumam. SNARKs ļauj lietotājam pierādīt, ka viņam ir piekļuve noslēpumam, taču viņam joprojām ir pienākums saglabāt noslēpuma integritāti un pieejamību. Mēs sīkāk apspriedīsim šo ierobežojumu, kad Ethereum apspriedīsim SNARK.
Tomēr vissvarīgākais SNARKs strukturālais trūkums ir tā sauktais iestatīšanas posms.
Iestatīšanas fāze
Katram problēmu veidam, kuru vēlaties atrisināt ar SNARKs, ir iepriekšējs saziņas posms, ko sauc par iestatīšanas fāzi. Šajā fāzē ķēde vai aprēķins, kuru vēlaties pierādīt, ir fiksēts. Šī ierobežojuma dēļ SNARK nav piemēroti, lai izpildītu patvaļīgus Turinga pilnīgus viedos līgumus — katram jaunam līgumam būtu nepieciešams jauns iestatīšanas posms.
Lai to padarītu konkrētāku, katrai matemātikas skolotāja problēmai ir nepieciešama atsevišķa iestatīšanas fāze. Var būt viens pievienošanai un cits pavairošanai. Kad esat pabeidzis iestatīšanas fāzi starp jums un savu skolotāju, lai to pievienotu, tā vairs nav jāatkārto katru reizi, kad jums rodas papildu problēma. Jebkuras jauna veida problēmas prasa jaunu iestatīšanu.
Iestatīšanas fāzē ir vēl viens ievērības cienīgs aspekts. Šajā posmā tiek ģenerēts noslēpums, kas ļauj publicēt viltus pierādījumus, tos neatklājot. Divu pušu iestatījumos tas ir pareizi — verificētājs (jūsu matemātikas skolotājs) ģenerē noslēpumu, un, kamēr verificētājs neizpauž noslēpumu ar sakāmvārdu (jūs), tiek saglabāta drošība.
Ja vēlaties publiski izmantot konkrētu shēmu ar vairāk nekā vienu verificētāju, ir jābūt “uzticamai iestatīšanai”. Tā vietā, lai viens verificētājs ģenerētu (un, cerams, iznīcinātu!) Pierādījumu izgatavošanas noslēpumu, cilvēku grupa var ģenerēt noslēpumu kopā. Kamēr viens no šiem cilvēkiem ir godīgs un iznīcina viņu noslēpuma daļu, uzstādīšanas drošība tiek garantēta.
Lai iegūtu detalizētāku, tomēr ļoti pieejamu SNARKs ievadu, skatiet Christian Lundkvist “Intro to zk-SNARKs with piemers”. Lai uzzinātu vairāk par matemātiku, skatiet Zcash paskaidrotāju “zkSNARKs īsumā” vai Vitālika Buterina sēriju “Zk-SNARKs: Zem pārsega”.
Zcash
Mēs esam apsprieduši zk-SNARKs vairāk nekā pietiekami detalizēti, lai runātu par tā visaugstākā profila lietojumprogrammu Zcash.
Zcash ir privātumu saglabājoša kriptonauda, kuras pamatā ir zk-SNARKs. Faktiski tas ir veidots uz vienas konkrētas SNARK shēmas, Zcash darījumu verificētāja, ar savu uzticamo iestatījumu. Zcash lietotāji var publicēt darījumus ar publiskām summām, sūtītājiem un saņēmējiem, tāpat kā Bitcoin. Viņi var arī izvēlēties publicēt pierādījumus tam, ka privāts darījums atbilst Zcash tīkla noteikumiem, slēpjot sūtītāju, saņēmēju un summu. Zcash valodā runājot, tos sauc par pasargātiem darījumiem.
Kā privātuma monēta Zkašs bieži salīdzina Monero. Abiem projektiem ir ļoti atšķirīga pieeja privātumam.
Lai gan Monero zvana paraksti par katru darījumu piedāvā ticamu deniabēšanu, anonimitātes kopas lielums ir fiksēts — visvairāk Monero zvana parakstu dalībnieku rekords ir 4500.
Tomēr Zcash aizsargātajiem darījumiem ir noteikta anonimitāte, kas aptver visas monētas, kas tiek izmantotas aizsargātā darījumā. Šī ir fundamentāli stingrāka privātuma garantija nekā tās, kuras piedāvā gredzenveida paraksti.
Kā jau tika apspriests iepriekš, Zcash arī pārmanto zk-SNARKs negatīvās puses.
Lai izveidotu valūtu, kompleksā iestatīšanas ceremonijā pulcējās kriptogrāfu un labi zināmu kopienas locekļu grupa. Uzticēšanās Zcash drošībai nozīmē, ka uzticēšanās šiem dalībniekiem nesadarbojās un nebija spiesta nodot savu daļu ģenerētajā noslēpumā. Ja akcijas joprojām pastāvētu, ikviens, kam ir piekļuve, varētu izgatavot viltotas monētas, lai gan uzbrucējs joprojām nevarēja atmaskot darījumus. Pīters Tods, drošības eksperts, kurš ir cieši saistīts ar Bitcoin, dalījās savā ziņojumā par savu dalību ceremonijā. Ir vērts izlasīt.
SNARKs veiktspējas raksturojums nozīmē arī to, ka privātos darījumus nevar aprēķināt ar mazāk jaudīgām ierīcēm, piemēram, populāro Ledger aparatūras maku.
Kopš sākotnējās izlaišanas Zcash komanda ir guvusi ievērojamus panākumus. Gaidāmajā Sapling tīkla jauninājumā lietotāji redzēs ievērojamus veiktspējas uzlabojumus.
Ethereum
Līdz šim šajā sērijā mēs esam koncentrējušies uz finanšu privātumu. Zcash ir augsta līmeņa lietojumprogramma finanšu telpā, taču nulles zināšanu pierādījumi ir arī lielisks rīks, kas palīdz nodrošināt datu konfidencialitāti.
Ethereum ir visaugstākā līmeņa viedo līgumu blokķēdes ieviešana. Diemžēl līdz šim privātuma stāsts ir slikts. Visa informācija par viedo līgumu ir publiski pieejama Ethereum blokķēdē vai pilna mezgla atmiņā. Visi fonda sūtītāji un saņēmēji, visi darījumu dati, izpildītais kods un katra līguma mainīgā lielums ir redzami ikvienam novērotājam, kurš vēlas to meklēt.
Šodien Ethereum noslēgtie līgumi, kuriem jāsaglabā datu privātums, balstās uz drošām saistībām. Šīs vienkāršās shēmas ļauj lietotājam apņemties ievērot slepenu vērtību, publicējot tās hash bloku ķēdē, vēlāk atklājot noslēpumu vai nu blokķēdē, vai ārpus ķēdes.
Diemžēl pašas par sevi šīs jaukšanas / atklāšanas konstrukcijas ir neticami ierobežotas. Viņus izmanto azartspēlēs un vienkāršā digitālo aktīvu apmaiņā, taču tie nav pietiekami izteiksmīgi, lai nodrošinātu lielāku privāto datu izmantošanu.
Nākamajā Ethereum protokola jauninājumā Metropolis viedo līgumu izstrādātāji iegūs jaunu privātuma rīku — iespēju efektīvi pārbaudīt zk-SNARK uz ķēdes.
Ko mēs varam darīt ar SNARKs iespējotu Ethereum? Atsevišķus līguma mainīgos var faktiski padarīt par privātiem. Tā vietā, lai slepeno informāciju glabātu ķēdē, to var glabāt pie lietotājiem, kuri pierāda, ka viņi izturas saskaņā ar līguma noteikumiem, izmantojot SNARK. Katram no šiem lietojumiem ir nepieciešama sava uzticama iestatīšana, taču, tiklīdz pastāv ķēde, to var viegli klonēt.
Iedomājieties ERC20 līdzīgu Tokens, kas nepublicē atsevišķu turētāju atlikumus, vienlaikus saglabājot publisku un paredzamu Token piedāvājumu, vai kreditēšanas platformu, kas aizdevuma nosacījumus uztur privātus.
Kamēr jūsu līguma datiem ir sarakste 1 pret 1 ar līguma lietotāju un lietotājiem var uzticēties piekļuvi slepenībai, zk-SNARKs ir lieliska pieeja.
Tas, ko jūs nevarat sasniegt ar SNARKs vietnē Ethereum, ir autonoms privātums, kas ir atsevišķi no lietotāja. SNARKs Ethereum paļaujas uz partiju, kas darbojas ārpus ķēdes, noslēpumu. Bez partijas, kas nav saistīta ar ķēdi, nav kur sekot līdzi noslēpumam, padarot pierādījumus bezjēdzīgus.
Privātums bez lietotājiem
Daudzām patērētāju lietojumprogrammām tas nav smags slogs. Galu galā daudzi publiskajā blokķēdes telpā ir filozofiski saskaņoti ar lietotāju privātās informācijas kontroles saglabāšanu.
Ir arī citi vērtīgi privātu datu par Ethereum izmantošanas veidi gan patērētājiem, gan uzņēmumiem. Dažas idejas, kuras Ethereum būtu grūti vai neiespējami īstenot:
- Uzlabota decentralizēta pārvaldība. Autonomās organizācijas nevar glabāt privātu informāciju, nedeleģējot lietotājam kā “slepenam turētājam”
- Autonoma tirdzniecība vairākās ķēdes biržās, ieskaitot 0x projektu.
- Līgumi, kas uztur tikai ķēdes aktīvu “glabāšanu”. Apsveriet Ethereum līgumu, kuram, piemēram, nepieciešama tikai Bitcoin maku glabāšana.
- Deleģēta piekļuve identitātei, medicīniskajiem dokumentiem vai citai privātai informācijai. SNARKs neļauj veikt jebkādu piekļuves kontroli privātiem datiem, pieprasot lietotājiem dalīties ar privāto informāciju ārpus ķēdes.
Privāto privātumu publiskajos blokķēdēs, īpaši autonomo privātumu, ir grūti. Nākamajā ierakstā mēs apspriedīsim privātās un atļautās ķēdes, kā arī citas pieejas datu privātuma uzturēšanai.
Paldies Laurai Wallendal, Corbin Pon, Brayton Williams un James Prestwich par agrīnu šī stāsta melnrakstu pārskatīšanu.
[1] Jā, es zinu, ka jūs vienkārši izmantojat parakstu. Mēģiniet atkārtot uzbrukumus izskaidrot ar parakstu pieejamā valodā — jums ir jāpaskaidro deterministiskie paraksti, kas ir nedaudz daudz šim jau tā izteiksmīgajam ierakstam.
[2] Vai arī, hakeris ir ieguvis piekļuvi gan Twitter kontam, gan privātajai atslēgai. Yikes.
[3] Kā sākotnēji aprakstīts Bitansky et al.
Uzzināt vairāk
Tulkojis: nowhere #6182