NejauÅ”s orÄkuls, kura pamatÄ ir digitÄlais paraksts blokÄ·ÄdÄ
No idejas lÄ«dz realizÄcijai: modificÄjam esoÅ”o eliptiskÄs lÄ«knes digitÄlÄ paraksta shÄmu, lai tÄ bÅ«tu deterministiska, un uz tÄs pamata nodroÅ”inÄm funkcijas blokÄ·Ädes ietvaros pÄrbaudÄmu pseidogadÄ«juma skaitļu iegÅ«Å”anai.
PÄrdomÄjot Å”o jautÄjumu, es beidzot nonÄcu pie secinÄjuma: jebkura blokÄ·Äde ir Ŕūna; slÄgtÄ sistÄmÄ nav iespÄjams iegÅ«t uzticamu entropijas avotu.
Bet viena ideja man tomÄr patika: ja nejauÅ”s orÄkuls parakstÄ«s lietotÄja datus ar deterministisku algoritmu, tad lietotÄjs vienmÄr varÄs pÄrbaudÄ«t Å”Ädu parakstu, izmantojot publisko atslÄgu, un bÅ«s pÄrliecinÄts, ka iegÅ«tÄ vÄrtÄ«ba ir unikÄla. OrÄkuls, lai cik ļoti tas gribÄtos, neko mainÄ«t nespÄj, algoritms rada nepÄrprotamu rezultÄtu. BÅ«tÄ«bÄ lietotÄjs ieraksta rezultÄtu, bet nezina to, kamÄr orÄkuls to nepublicÄ. IzrÄdÄs, ka orÄkulam var neuzticÄties nemaz, bet gan pÄrbaudÄ«t tÄ darba rezultÄtu. Tad veiksmÄ«gas verifikÄcijas gadÄ«jumÄ Å”Ädu parakstu var uzskatÄ«t par pseidogadÄ«juma skaitļa entropijas avotu.
Waves blokÄ·Ädes platforma izmanto parakstu shÄmu EdDSA iespÄja Ed25519. Å ajÄ shÄmÄ paraksts sastÄv no vÄrtÄ«bÄm R un S, kur R ir atkarÄ«gs no nejauÅ”as vÄrtÄ«bas, un S tiek aprÄÄ·inÄts, pamatojoties uz parakstÄmo ziÅojumu, privÄto atslÄgu un to paÅ”u nejauÅ”o skaitli kÄ R. IzrÄdÄs, ka nav unikÄlas atkarÄ«bas vienam un tam paÅ”am LietotÄja ziÅojumam ir daudz derÄ«gu parakstu.
AcÄ«mredzot tÄ«rÄ veidÄ Å”Ädu parakstu nevar izmantot kÄ pseidogadÄ«juma skaitļu avotu, jo tas nav deterministisks un tÄpÄc orÄkuls ar to var viegli manipulÄt.
Bet, kÄ izrÄdÄ«jÄs, to faktiski ir iespÄjams padarÄ«t deterministisku.
Man bija lielas cerÄ«bas PÄrbaudÄma izlases funkcija (VRF), bet pÄc aparatÅ«ras izpÄtes man nÄcÄs atteikties no Ŕīs iespÄjas. Lai gan VRF piedÄvÄ deterministisku paraksta versiju un tÄ pierÄdÄ«jumu, algoritmÄ ir dÄ«vaina vieta, kas atver melno caurumu manipulÄcijÄm ar orÄkulu. Proti, aprÄÄ·inot k vÄrtÄ«bu (5.1. sadaļa) tiek izmantota privÄtÄ atslÄga, kas lietotÄjam paliek nezinÄma, kas nozÄ«mÄ, ka lietotÄjs nevar pÄrbaudÄ«t k aprÄÄ·ina pareizÄ«bu, kas nozÄ«mÄ, ka orÄkuls var izmantot jebkuru k vÄrtÄ«bu un tajÄ paÅ”Ä laikÄ uzturÄt atbilstÄ«bas datu bÄzi. no k un parakstÄ«tajiem datiem, lai vienmÄr varÄtu pÄrrÄÄ·inÄt pareizo rezultÄtu no VRF viedokļa. Ja redzat zÄ«mÄjumu, kas balstÄ«ts uz VRF, neatklÄjot privÄto atslÄgu, varat bÅ«t gudrs: norÄdiet, ka atslÄga ir jÄatklÄj, vai arÄ« izslÄdz to no k aprÄÄ·ina, tad privÄtÄ atslÄga automÄtiski atklÄsies, kad parÄdÄ«sies pirmais paraksts. . VispÄr, kÄ jau minÄts, dÄ«vaina shÄma nejauÅ”am orÄkulam.
PÄc nelielas pÄrdomÄÅ”anas un vietÄjo analÄ«tiÄ·u atbalsta saÅemÅ”anas radÄs VECRO darba shÄma.
VECRO ir saÄ«sinÄjums vÄrdam Verifificable Eliliptic Curve Random Oracle, kas krievu valodÄ nozÄ«mÄ pÄrbaudÄms nejauÅ”s orÄkuls eliptiskajÄs lÄ«knÄs.
Viss izrÄdÄ«jÄs diezgan vienkÄrÅ”i; lai panÄktu determinismu, pirms parakstÄmÄ ziÅojuma parÄdÄ«Å”anÄs ir jÄfiksÄ R vÄrtÄ«ba. Ja R ir piesaistÄ«ts un ir daļa no parakstÄ«tÄ ziÅojuma, kas vÄl vairÄk nodroÅ”ina, ka R ir parakstÄ«ta ziÅojumÄ, S vÄrtÄ«bu unikÄli nosaka lietotÄja ziÅojums, un tÄpÄc to var izmantot kÄ pseidogadÄ«juma skaitļu avotu.
Å ÄdÄ shÄmÄ nav nozÄ«mes tam, kÄ R tiek fiksÄts; tas paliek orÄkula atbildÄ«ba. Ir svarÄ«gi, lai S bÅ«tu unikÄli noteikts lietotÄjs, bet tÄ vÄrtÄ«ba nav zinÄma, kamÄr orÄkuls to nepublicÄ. Viss, ko gribÄjÄm!
RunÄjot par fiksÄto R, Åemiet vÄrÄ to atkÄrtoti izmantots R parakstot dažÄdus ziÅojumus, tas unikÄli atklÄj privÄto atslÄgu EdDSA shÄmÄ. OrÄkula Ä«paÅ”niekam kļūst ÄrkÄrtÄ«gi svarÄ«gi novÄrst iespÄju atkÄrtoti izmantot R dažÄdu lietotÄju ziÅojumu parakstÄ«Å”anai. Tas nozÄ«mÄ, ka ar jebkuru manipulÄciju vai slepenu vienoÅ”anos orÄkuls vienmÄr riskÄs pazaudÄt savu privÄto atslÄgu.
KopumÄ orÄkulam ir jÄnodroÅ”ina lietotÄjiem divas funkcijas: inicializÄcija, kas fiksÄ vÄrtÄ«bu R, un paraksts, kas atgriež vÄrtÄ«bu S. Å ajÄ gadÄ«jumÄ pÄris R, S ir parastais pÄrbaudÄms lietotÄja ziÅojuma paraksts, kas satur fiksÄtu. vÄrtÄ«ba R un patvaļīgi lietotÄja dati.
Var apgalvot, ka Ŕī blokÄ·Ädes shÄma nav nekas vairÄk kÄ parasta apÅemÅ”anÄs-paplaÅ”inÄÅ”anas shÄma. BÅ«tÄ«bÄ jÄ, tÄ ir viÅa. Bet ir vairÄkas nianses. PirmkÄrt, orÄkuls vienmÄr darbojas ar vienu un to paÅ”u atslÄgu visÄs darbÄ«bÄs, piemÄram, to ir Ärti izmantot lÄ«gumos. OtrkÄrt, pastÄv risks, ka orÄkuls pazaudÄs privÄto atslÄgu, ja tas uzvedas nepareizi, piemÄram, orÄkuls ļauj veikt rezultÄta paraugus, tad pietiek veikt tikai divus testus, lai noskaidrotu privÄto atslÄgu un iegÅ«tu pilnu piekļuvi makam. TreÅ”kÄrt, paraksts, kas ir sÄkotnÄji pÄrbaudÄms blokÄ·ÄdÄ un ir nejauŔības avots, ir skaists.
SeÅ”us mÄneÅ”us galvÄ virmoja ideja par realizÄciju, lÄ«dz beidzot formÄ parÄdÄ«jÄs motivÄcija dotÄcija no Waves Labs. Ar lielu dotÄciju nÄk liela atbildÄ«ba, tÄpÄc projekts bÅ«s klÄt!
IevieŔana
TÄtad Å”ajÄ projektÄ VECRO tika ieviests Waves blokÄ·ÄdÄ pieprasÄ«juma-atbildes režīmÄ, izmantojot pÄrsÅ«tÄ«Å”anas darÄ«jumus starp lietotÄju un orÄkulu. TajÄ paÅ”Ä laikÄ oracle kontÄ tiek instalÄts skripts, kas kontrolÄ darbu stingri saskaÅÄ ar iepriekÅ” aprakstÄ«to loÄ£iku. Oracle darÄ«jumi tiek pÄrbaudÄ«ti un tiek atjaunota visa lietotÄja mijiedarbÄ«bas Ä·Äde. Visi Äetri darÄ«jumi ir iesaistÄ«ti galÄ«gÄs vÄrtÄ«bas pÄrbaudÄ; viedais lÄ«gums tos savieno ar stingru pÄrbaudes pavedienu, pÄrbaudot visas vÄrtÄ«bas soli pa solim un neatstÄjot vietu nekÄdÄm manipulÄcijÄm.
KÄrtÄjo reizi nolikt malÄ un padarÄ«t skaidrÄku. OrÄkuls nedarbojas tikai saskaÅÄ ar piedÄvÄto shÄmu. TÄs darbu blokÄ·Ädes lÄ«menÄ« pilnÄ«bÄ kontrolÄ izveidotais cieÅ”i ar gudru lÄ«gumu. PakÄpieties pa kreisi, un darÄ«jums vienkÄrÅ”i nenotiks. TÄtad, ja darÄ«jums ir iekļauts blokÄ·ÄdÄ, lietotÄjam pat nekas nav jÄpÄrbauda; simtiem tÄ«kla mezglu jau visu ir pÄrbaudÄ«juÅ”i viÅa vietÄ.
NosÅ«tiet vismaz 0.005 Waves uz orÄkula alias random@vecr, kÄ arÄ« OBLIGÄTI jÄnorÄda iepriekÅ” saÅemtais R-kods un papildus lietotÄja dati pielikuma laukÄ;
OrÄkulam nosÅ«tÄ«tie viļÅi tiek izmantoti kÄ komisijas maksa par atgrieÅ”anas darÄ«jumu lietotÄjam, maksimÄli lÄ«dz 1 Wave;
R-kods ir 'R' rakstzÄ«mes baita un 32 baitu bÄzes58 kodÄtas R vÄrtÄ«bas savienoÅ”ana;
R-kodam pielikumÄ jÄbÅ«t pirmajam, lietotÄja dati nÄk pÄc R-koda;
S-kods ir rakstzÄ«mes "S" baita un 32 baitu bÄzes58 kodÄtas S vÄrtÄ«bas savienoÅ”ana;
S ir modulo dalÄ«Å”anas rezultÄts, tÄpÄc S nevar izmantot kÄ pilnu 256 bitu pseidogadÄ«juma skaitli (Å”o skaitli var uzskatÄ«t par maksimÄli 252 bitu pseidogadÄ«juma skaitli);
VienkÄrÅ”ÄkÄ iespÄja ir izmantot S-koda hash kÄ pseidogadÄ«juma skaitli.
No tehniskÄ viedokļa orÄkuls ir pilnÄ«bÄ gatavs darbam, to var droÅ”i lietot. No vidusmÄra lietotÄja lietoÅ”anas viedokļa trÅ«kst Ärta grafiskÄ interfeisa, tas bÅ«s jÄpagaida.
Es labprÄt atbildÄÅ”u uz jautÄjumiem un pieÅemÅ”u komentÄrus, paldies.