{"id":95846,"date":"2020-10-04T01:42:23","date_gmt":"2020-10-03T23:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2"},"modified":"2020-10-04T01:42:23","modified_gmt":"2020-10-03T23:42:23","slug":"mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2","title":{"rendered":"Kas on v\u00f5imalik genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kas on v\u00f5imalik genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 2\" src=\"\/wp-content\/uploads\/2020\/10\/fc42fe5e99ce4412a0ce99eb63629a42.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Tere, Habr!<\/p>\n<p>V <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/near\/blog\/521090\/\">esimeses osas<\/a><\/noindex> Artiklis arutasime, miks v\u00f5ib olla vajalik genereerida juhuslikke numbreid osalejatele, kes ei usalda \u00fcksteist, millised n\u00f5uded sellistele juhuslike arvu generaatoritele esitakse, ja vaatasime kaht l\u00e4henemist nende rakendamiseks.<\/p>\n<p>Selles artikli osas vaatame l\u00e4hemalt veel \u00fcht l\u00e4henemist, mis kasutab piirsigneeringuid.<\/p>\n<h3>Veidi kr\u00fcptograafiast<\/h3>\n<p>Kuna piirsigneeringute toimimise m\u00f5istmiseks on vajalik pisut p\u00f5hiteadmisi kr\u00fcptograafiast. Kasutame kahte kontseptsiooni: skalaare, ehk lihtsalt numbreid, mida t\u00e4histame v\u00e4ikeste t\u00e4htedega (<em>x, y<\/em>) ja punkte elliptilisel k\u00f5veral, mida t\u00e4histame suurte t\u00e4htedega.<\/p>\n<p>Piirsigneeringute p\u00f5hialuste m\u00f5istmiseks pole vaja teada, kuidas elliptilised k\u00f5verad t\u00f6\u00f6tavad, v\u00e4lja arvatud m\u00f5ned p\u00f5hiasjad:<\/p>\n<ol>\n<li>\n<p>Elliptilise k\u00f5vera punktide kokkulaskmine ja skalaari korrutamine on v\u00f5imalik (skalaari korrutamist t\u00e4histame kui <em>xG<\/em>, kuigi notaatsioon <em>Gx<\/em> \u0442\u043e\u0436\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435). \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u043a\u0430\u043b\u044f\u0440 &#8212; \u044d\u0442\u043e \u0442\u043e\u0447\u043a\u0430 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p>Teades ainult punkti <em>G<\/em> ja selle korrutist skalaari <em>xG<\/em> ei saa arvutada <em>x<\/em>.<\/p>\n<\/li>\n<\/ol>\n<p>Kasutame ka pol\u00fcnoomi kontseptsiooni <em>p(x)<\/em> aste <em>k<\/em>-1. Eelk\u00f5ige kasutame j\u00e4rgmist pol\u00fcnoomide omadust: kui teame v\u00e4\u00e4rtust <em>p(x) <\/em>k\u00f5igile <em>k <\/em>erinevatele <em>x <\/em>(ja meil pole rohkem teavet <em>p(x)<\/em>), saame arvutada <em>p(x) <\/em>k\u00f5igile teistele <em>x<\/em>.<\/p>\n<p>Huvitav, et iga pol\u00fcnoomi <em>p(x)<\/em> ja mingi punkt k\u00f5veral <em>G<\/em>, teades v\u00e4\u00e4rtust <em>p(x)G<\/em> k\u00f5igile <em>k<\/em> erinevate v\u00e4\u00e4rtuste <em>x<\/em>, saab samuti arvutada <em>p(x)G<\/em> k\u00f5igil <em>x<\/em>.<\/p>\n<p>Seda teavet piisab, et s\u00fcveneda detailidesse, kuidas t\u00f6\u00f6tavad l\u00e4ve allkirjad ja kuidas neid kasutada juhuslike arvude genereerimiseks.<\/p>\n<h3>L\u00e4ve allkirjad p\u00f5hinev juhuslike arvude generaator<\/h3>\n<p>Oletame, et <em>n<\/em> osalejad soovivad genereerida juhuslikku arvu, ja me tahame, et \u00fcksk\u00f5ik milline <em>k<\/em> nendest oleks piisav, et genereerida number, kuid et pahatahtlikud isikud, kes kontrollivad <em>k<\/em>-1 v\u00f5i v\u00e4hem osalejat, ei saa ennustada ega m\u00f5jutada genereeritud numbrit.<\/p>\n<p><img decoding=\"async\" alt=\"Kas on v\u00f5imalik genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 2\" src=\"\/wp-content\/uploads\/2020\/10\/00d54b3b0ca237a1551cdbdc35688099.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Oletame, et selline pol\u00fcnoom eksisteerib <em>p(x)<\/em> aste <em>k<\/em>-1, mis esimene osaleja teab <em>p(1)<\/em>, teine teab <em>p(2), <\/em>ja nii edasi (<em>n<\/em>-ne teab <em>p(n)<\/em>). Samuti oletame, et m\u00f5nes eelnevalt m\u00e4\u00e4ratud punktis <em>G<\/em> teavad k\u00f5ik <em>p(x)G <\/em>k\u00f5igi v\u00e4\u00e4rtuste <em>x<\/em>. Me nimetame <em>p(i)<\/em> \u201cprivaatseks komponendiks\u201d <em>i<\/em>-ndast osalejast (sest ainult <em>i<\/em>-ne osaleja teab seda), ja <em>p(i)G<\/em> \u201cavalikuks komponendiks\u201d <em>i<\/em>-ndast osalejast (sest k\u00f5ik osalejad teavad seda). Nagu te m\u00e4letate, teadmine <em>p(i)G <\/em>ei ole piisav, et taastada <em>p(i).<\/em><\/p>\n<p>Sellise pol\u00fcnoomi loomine nii, et ainult <em>i-<\/em>ne osaleja ja keegi muu ei teaks oma privaatset komponenti \u2013 see on protokolli k\u00f5ige keerulisem ja huvitavam osa, mida uurime allpool. Kui oletame, et selline pol\u00fcnoom meil on ja k\u00f5ik osalejad teavad oma privaatseid komponente.<\/p>\n<p>Kuidas me saame kasutada sellist pol\u00fcnoomi juhusliku numbri genereerimiseks? Esiteks vajame me mingit j\u00e4rjekorda, mis ei ole varem kasutatud sisendina genereerijale. Bloochain\u2019i puhul on viimase bloki hash <em>h<\/em> &#8212; \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u041f\u0443\u0441\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0445\u043e\u0442\u044f\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <em>h <\/em>n\u00e4iteks seemnena. Esmalt konverteerivad osalejad <em>h<\/em> punkt, k\u00f5veral kasutades mis tahes eelnevalt m\u00e4\u00e4ratud funktsiooni:<\/p>\n<p><em>H = skalaariPunkt(h)<\/em><\/p>\n<p>Seej\u00e4rel arvutab iga osaleja <em>i<\/em> v\u00e4lja ja avaldab <em>Hi = p(i)H, <\/em>mida nad saavad teha, sest nad teavad<em> p(i) ja H. <\/em>Paljastamine<em> H<\/em>i ei luba teistel osalejatel taastada -nda osaleja privaatset komponenti, seega v\u00f5ib \u00fchte komplekti privaatsetest komponentidest kasutada plokist plokki. Seet\u00f5ttu tuleb allpool kirjeldatud keerukat pol\u00fcnoomide loomise algoritmi t\u00e4ita ainult \u00fcks kord. <em>i<\/em>osalejad paljastasid<\/p>\n<p>Kui <em>k<\/em> k\u00f5ik saavad arvutada <em>Hi = p(i)H, <\/em>x =<em> H<\/em>p(x)H <em>t\u00e4nu pol\u00fcnoomide omadusele, millest me eelmisel jaosal r\u00e4\u00e4kisime. Sel hetkel arvutavad k\u00f5ik osalejad<\/em> k\u00f5igile <em>x<\/em> H0 = p(0)H, <em>ja see ongi tulemuseks olev juhuslik number. Pange t\u00e4hele, et keegi ei tea <\/em>p(0),<em> ja seega on ainus viis arvutada <\/em>p(0)H \u2013<em> see on interpoleerimine <\/em>p(x)H,<em> mis on v\u00f5imalik ainult siis, kui <\/em>v\u00e4rtused<em> k <\/em>p(i)H<em> on tuntud. Iga v\u00e4iksema hulga paljastamine <\/em>ei anna mingit teavet<em> on tuntud. Iga v\u00e4iksema hulga paljastamine <\/em>p(0)H.<em> p(0)H.<\/em><\/p>\n<p><img decoding=\"async\" alt=\"Kas on v\u00f5imalik genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 2\" src=\"\/wp-content\/uploads\/2020\/10\/a91219381018f90f73b0a92976c92c79.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\u00dclaltoodud generaatoril on k\u00f5ik omadused, mida me soovime: s\u00e4ilitajad, kes kontrollivad ainult <em>k-<\/em>1 osalejat v\u00f5i v\u00e4hem, ei oma mingit teavet ega m\u00f5ju v\u00e4ljundile, samas kui igasugused <em>k<\/em> osalejad saavad arvutada tulemuse ning iga alamhulk <em>k<\/em> osalejad j\u00f5uavad alati sama tulemusele sama algv\u00e4\u00e4rtuse puhul.<\/p>\n<p>On \u00fcks probleem, mida me eelnevalt ettevaatlikult m\u00f6\u00f6da vaatasime. Et interpoleerimine toimiks, on oluline, et v\u00e4\u00e4rtus<em> H<\/em>i, mille iga osaleja avaldas, <em>i<\/em> oleks t\u00f5epoolest v\u00f5rdsed <em>p(i)H.<\/em> Kuna keegi peale <em>i<\/em>-nda osaleja ei tea <em>p(i), <\/em>ei saa keegi peale <em>i-<\/em>-nda osaleja kinnitada, et <em>Tere <\/em>t\u00f5epoolest arvutatakse \u00f5igesti, ja ilma mingi kr\u00fcptograafilise t\u00f5endita \u00f5igsusest<em> H<\/em>i, v\u00f5iks k\u00fcberkurjategija avaldada m\u00f5nda v\u00e4\u00e4rtust kui <em>Tere, <\/em>ja juhuslikult m\u00f5jutada juhusliku arvu generaatori v\u00e4ljundit.<em>:<\/em><\/p>\n<p><img decoding=\"async\" alt=\"Kas on v\u00f5imalik genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 2\" src=\"\/wp-content\/uploads\/2020\/10\/694a86666806c49edb6e44dd9ec26b0f.png\" style=\"display:block;margin: 0 auto;\" \/>Erinevad H_1 v\u00e4\u00e4rtused, mille esimene osaleja saadab, viivad erinevate tulemuste H_0-ni.<\/p>\n<p>On v\u00e4hemalt kaks viisi t\u00f5estada<em> H<\/em>i korrektsust, vaatame neid hiljem, kui k\u00e4sitleme pol\u00fcnoomi genereerimist.<\/p>\n<h3>Pol\u00fcnoomi genereerimine<\/h3>\n<p>Eelmises jaotises eeldasime, et meil on selline pol\u00fcnoom <em>p(x)<\/em> aste <em>k<\/em>-1, et osaleja <em>i<\/em> teab <em>p(i)<\/em>, ja mitte keegi teine ei tea selle t\u00e4henduse kohta mingit teavet. J\u00e4rgmises l\u00f5igus peame samuti tagama, et teatud eelnevalt m\u00e4\u00e4ratletud punktile <em>G<\/em> k\u00f5ik teavad <em>p(x)G <\/em>k\u00f5igile<em> x<\/em>.<\/p>\n<p>Selles osas eeldame, et igal osalejal on kohalikult mingi privaatv\u00f5ti <em>xi, <\/em>nii et vastav avalik v\u00f5ti on k\u00f5igile tuntud<em> X<\/em>i.<\/p>\n<p>\u00dcks v\u00f5imalik pol\u00fcnoomi genereerimise protokoll on j\u00e4rgmine:<\/p>\n<p><img decoding=\"async\" alt=\"Kas on v\u00f5imalik genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 2\" src=\"\/wp-content\/uploads\/2020\/10\/ccd8afbc3c88a7f5a03714aeb6593361.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<ol>\n<li>\n<p>Iga osaleja <em>i<\/em> loob kohalikult suvalise pol\u00fcnoomi <em>pi(x) astme k-1. <\/em>Seej\u00e4rel saadavad nad iga\u00fchele osalejale<em> j <\/em>v\u00e4\u00e4rtus<em> p<\/em>i(j), kr\u00fcpteerituna avaliku v\u00f5tmega <em>Xj. <\/em>Nii teavad ainult<em> i-<\/em>j-<em> <\/em>ja<em> osalejaid<\/em>j-<em> <\/em>i(j). Osaleja<em> p<\/em>avalikult kuulutab samuti <em>i<\/em> pi(j)G <em>kaasa arvatud. <\/em>k\u00f5igile<em> j <\/em>alates<em> 1 <\/em>kuni<em> k <\/em>K\u00f5ik osalejad kasutavad teatud konsensust, et valida<\/p>\n<\/li>\n<li>\n<p>osalejad, kelle pol\u00fcnoome kasutatakse. Kuna m\u00f5ned osalejad v\u00f5ivad olla v\u00f5rgu\u00fchenduseta, ei saa me oodata, kuni k\u00f5ik<em> k <\/em>osalejad avaldavad pol\u00fcnoome. Selle sammu tulemus on kogum<em> n <\/em>mille hulka kuulub v\u00e4hemalt<em> <\/em><strong><em>Z<\/em><\/strong><em> <\/em>pol\u00fcnoome, mis loodi sammul (1)<em> k <\/em>Osalejad veenduvad, et neile tuntud v\u00e4\u00e4rtused<em>.<\/em><\/p>\n<\/li>\n<li>\n<p>i(j) vastavad avalikult kuulutatud<em> p<\/em>pi(j)G. <em>P\u00e4rast seda sammu on <\/em>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0432<em> <\/em><strong><em>Z <\/em><\/strong>peavad j\u00e4\u00e4ma ainult pol\u00fcnoomid, mille puhul on edastatud privaatsed<em> p<\/em>pi(j)G. <em>P\u00e4rast seda sammu on<\/em><\/p>\n<\/li>\n<li>\n<p>Iga osaleja<em> j <\/em>arvutab oma privaatkomponendi<em> p(j) <\/em>nagu summa<em> p<\/em>i(j) k\u00f5igi jaoks <em>i<\/em> \u00fches <strong><em>Z<\/em><\/strong>. Iga osaleja arvutab ka k\u00f5ik v\u00e4\u00e4rtused <em>p(x)G <\/em>nagu summa <em>pi(x)G k\u00f5igi i jaoks <\/em>\u00fches<em> <\/em><strong><em>Z<\/em><\/strong><em>.<\/em><\/p>\n<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Kas on v\u00f5imalik genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 2\" src=\"\/wp-content\/uploads\/2020\/10\/a7a92dba3b9de7a376c415fc6c330c46.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Pange t\u00e4hele, et<em> p(x) \u2013 <\/em>see on t\u00f5epoolest pol\u00fcnoom astmest<em> k-1, <\/em>sest see on eraldi osade summa<em> p<\/em>i(x), millest iga\u00fcks on pol\u00fcnoom astmest <em>k<\/em>-1. Siis, t\u00e4helepanu, et kuigi igal osalejal on <em>j<\/em> teab <em>p(j), <\/em>ei ole neil mingit teavet <em>p(x)<\/em> kuna <em>x \u2260 j<\/em>. T\u00f5epoolest, et seda v\u00e4\u00e4rtust arvutada, peavad nad teadma k\u00f5iki <em>pi(x), <\/em>ja seni, kuni osaleja<em> j <\/em>ei tea v\u00e4hemalt \u00fchte valitud pol\u00fcnoomi, ei ole neil piisavalt teavet<em> p(x).<\/em><\/p>\n<p>See on kogu pol\u00fcnoomi genereerimise protsess, mis oli vajalik eelnevates jaotistes. Sammud 1, 2 ja 4 on \u00fcsnagi ilmsed. Kuid samm 3 ei ole nii triviaalne.<\/p>\n<p>Konkreetsemalt, peame suutma t\u00f5estada, et kr\u00fcpteeritud<em> p<\/em>i(j) vastavad t\u00f5eliselt avaldatud <em>P\u00e4rast seda sammu on <\/em>Kui me ei saa seda t\u00f5estada, v\u00f5ib r\u00fcndaja<em> i <\/em>saata pr\u00fcgi asemel<em> p<\/em>i(j) osalejale <em>j<\/em>, ja osaleja <em>j <\/em>ei saa t\u00f5elist v\u00e4\u00e4rtust <em>pi(j), <\/em>ja ei saa arvutada oma privaatkomponenti<em>.<\/em><\/p>\n<p>On olemas kr\u00fcptograafiline protokoll, mis v\u00f5imaldab luua t\u00e4iendava s\u00f5numi<em> proof<\/em>i(j), nii et iga osaleja, kellel on mingi v\u00e4\u00e4rtus <em>e, <\/em>ja samuti<em> proofi(j) <\/em>ja<em> p<\/em>i(j)G, v\u00f5ib kohapeal veenduda, et <em>e<\/em> \u2013 see on t\u00f5epoolest <em>pi(j), <\/em>osaleja v\u00f5tmega kr\u00fcptitud<em> j. <\/em>Kahjuks on sellise t\u00f5endi suurus uskumatult suur ja arvestades, et tuleb avaldada<em> O(nk) <\/em>selliseid t\u00f5endeid, pole neid selle eesm\u00e4rgi saavutamiseks v\u00f5imalik kasutada.<\/p>\n<p>Kohas, et t\u00f5estada, et <em>pi(j) <\/em>vastab<em> p<\/em>i(j)G, saame pol\u00fcnoomi genereerimise protokollis eraldada v\u00e4ga pika ajavahemiku, mille jooksul k\u00f5ik osalejad kontrollivad saadud kr\u00fcptitud <em>pi(j), <\/em>ja kui dekr\u00fcpteeritud s\u00f5num ei vasta avalikule<em> p<\/em>i(j)G, siis avaldavad nad kr\u00fcptograafilise t\u00f5endi, et saadud kr\u00fcptitud s\u00f5num on vale. T\u00f5estada, et s\u00f5num <em>ei <\/em>vastab <em>pi(G)<\/em> kaugel lihtsam, kui t\u00f5estada, et see vastab. Tuleb m\u00e4rkida, et see n\u00f5uab, et iga osaleja ilmuks v\u00f5rku v\u00e4hemalt korra ajavahemiku jooksul, mis on ette n\u00e4htud selliste t\u00f5endite esitamiseks, ja p\u00f5hineb eeldusega, et kui nad avaldasid sellise t\u00f5endi, saavutab see k\u00f5ikidele teistele osalejatele sellel samal ajavahemikul.<\/p>\n<p><img decoding=\"async\" alt=\"Kas on v\u00f5imalik genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 2\" src=\"\/wp-content\/uploads\/2020\/10\/f7d92f18c75aa6161a9e3f1724b57426.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Kui osaleja ei ilmu v\u00f5rku selle ajavahemiku jooksul ja tal on t\u00f5epoolest v\u00e4hemalt \u00fcks vale komponent, siis ei saa see konkreetne osaleja osaleda edasises numbrite genereerimises. Protokoll t\u00f6\u00f6tab siiski j\u00e4tkuvalt, kui on v\u00e4hemalt <em>k<\/em> osalejat, kes on saanud ainult \u00f5iged komponendid v\u00f5i on suutnud j\u00e4tta vale t\u00f5endi ette n\u00e4htud ajavahemiku jooksul.<\/p>\n<h3>H_i \u00f5iguse t\u00f5endid<\/h3>\n<p>Viimane osa, mida on veel arutada, on see, kuidas t\u00f5estada avaldatud<em> H<\/em>i, nimelt et <em>Hi = p(i)H, <\/em>ilma avamiseta<em> p(i).<\/em><\/p>\n<p>K\u00e4idame meeles, et v\u00e4\u00e4rtused<em> H, G, p(i)G <\/em>on avalikud ja k\u00f5igile teada.<em> <\/em>Saamisel operatsioon<em> p(i) <\/em>teades<em> p(i)G <\/em>ja<em> G <\/em>nimetatakse diskrreetseks logaritmiks v\u00f5i<em> dlog, <\/em>ja me tahame t\u00f5estada, et:<\/p>\n<p><em>dlog(p(i)G, G) = dlog(H<\/em>i, <em>H<\/em>)<\/p>\n<p>ilma avaldamiseta <em>p(i)<\/em>. T\u00f5estuskonstruktsioonid selliste t\u00f5endite jaoks eksisteerivad, n\u00e4iteks<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Proof_of_knowledge#Schnorr_protocol\"> <u>Schnorr Protokoll<\/u><\/a><\/noindex>.<\/p>\n<p>Sellise konstruktsiooni korral saadab iga osaleja koos <em>Tere <\/em>t\u00f5endi korrektsuse kohta vastavalt konstruktsioonile.<\/p>\n<p>Kui juhuslik number on genereeritud, peavad osalejad sageli seda kasutama, erinevalt neist, kes selle genereerisid. Sellistele osalejatele tuleb koos numbriga saata k\u00f5ik <em>Tere<\/em> ja lisat\u00f5endid.<\/p>\n<p>Uudishimulik lugeja v\u00f5ib k\u00fcsida: kuna l\u00f5plik juhuslik number on<em> H<\/em>0, ja <em>p(0)G \u2013 <\/em>see on avalik teave, miks on iga eraldi jaoks t\u00f5end vajalik<em> H<\/em>i, miks mitte saata t\u00f5end, et<\/p>\n<p>dlog(<em>p(0)G, G) = dlog(H<\/em>0, <em>H<\/em>)<\/p>\n<p>Probleem on selles, et Schnorr Protokolliga ei saa sellist t\u00f5endit luua, sest keegi ei tea v\u00e4\u00e4rtust <em>p(0)<\/em>, mis on vajalik t\u00f5endi loomiseks, ja veelgi enam, kogu juhuslikkuse generaator p\u00f5hineb h\u00fcpoteesil, et keegi ei tea seda v\u00e4\u00e4rtust. Seet\u00f5ttu on vajalikud k\u00f5ik v\u00e4\u00e4rtused <em>Tere <\/em>ja nende individuaalsed t\u00f5endid, et t\u00f5estada korrektsust.<em> H<\/em>0.<\/p>\n<p>Kuid kui elliptiliste k\u00f5verate punktidel oleks mingisugune tehe, mis on semantilises m\u00f5ttes sarnane korrutamisele, oleks t\u00f5estamine triviaalne. <em>H0 <\/em>me lihtsalt veenduksime, et<\/p>\n<p><em>H<\/em>0 \u00d7 <em>G<\/em> = <em>p(0)G \u00d7 H<\/em><\/p>\n<p>Kui valitud k\u00f5ver toetab <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@VitalikButerin\/exploring-elliptic-curve-pairings-c73c1864e627\"><u>elliptilisi k\u00f5vera paaritusi<\/u><\/a><\/noindex>, siis see t\u00f5estus toimib. Sel juhul<em> H<\/em>0 ei ole mitte ainult juhuslike arvude generaatori v\u00e4ljund, mida v\u00f5ib kontrollida iga osaleja, kes teab <em>G, H<\/em> ja <em>p(0)G. H<\/em>0 on ka allkiri s\u00f5numil, mis kasutati seemnena, kinnitades, et <em>k<\/em> ja <em>n <\/em>osalejad on selle s\u00f5numi allkirjastanud. Seega, kui <em>seeme \u2013 <\/em>see on ploki hash plokiahelas, siis <em>H0<\/em> \u2013 on see samal ajal mitme allkiri plokil ja v\u00e4ga hea juhuslik number.<\/p>\n<h4>Kokkuv\u00f5tteks<\/h4>\n<p>See artikkel on osa tehniliste artiklite seeriast blogis <noindex><a rel=\"nofollow\" href=\"https:\/\/near.org\">NEAR<\/a><\/noindex>. NEAR on plokiahela protokoll ja platvorm detsentraliseeritud rakenduste arendamiseks, millel on r\u00f5hk arendamise lihtsusele ja l\u00f5ppkasutajate jaoks kasutamise lihtsusele.<\/p>\n<p>Protokolli kood on avatud, meie teostus on kirjutatud Rustis, selle leiate <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nearprotocol\/nearcore\">siin<\/a><\/noindex>.<\/p>\n<p>Vaata, milline n\u00e4eb v\u00e4lja NEAR-i arendamine, ja katseta online-IDE-s. <noindex><a rel=\"nofollow\" href=\"https:\/\/examples.near.org\">siit<\/a><\/noindex>.<\/p>\n<p>J\u00e4lgi k\u00f5iki uudiseid eesti keeles <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/near_protocol\">Telegrami grupis<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/vk.com\/nearprotocol\">VKontakte grupis.<\/a><\/noindex>, aga inglise keeles ametlikul <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/NEARProtocol\">Twitteris<\/a><\/noindex>.<\/p>\n<p>Kohtumiseni!<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/near\/blog\/521700\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438, \u0437\u0430\u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043a \u0442\u0430\u043a\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95847,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95846","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438, \u0437\u0430\u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043a \u0442\u0430\u043a\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.\u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438.\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u0427\u0430\u0441\u0442\u044c 2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438, \u0437\u0430\u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043a \u0442\u0430\u043a\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.\u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438.\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-03T23:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-03T23:42:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kas juhuslike numbrite genereerimine on v\u00f5imalik, kui me ei usalda \u00fcksteist? Osa 2 | ProHoster","description":"Tere, Habr! Artikli esimeses osas arutasime, miks v\u00f5ib olla vajalik genereerida juhuslikke numbreid osalejatele, kes ei usalda \u00fcksteist, millised n\u00f5uded nendele juhuslike numbrite generaatoritele esitatakse ning vaatasime kahte l\u00e4henemist nende rakendamiseks. Artikli selles osas k\u00e4sitleme p\u00f5hjalikult veel \u00fcht l\u00e4henemist, mis kasutab l\u00e4ve allkirjastamist. Natuke kr\u00fcptograafiast. Selleks, et m\u00f5ista, kuidas l\u00e4ve","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u0427\u0430\u0441\u0442\u044c 2 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438, \u0437\u0430\u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043a \u0442\u0430\u043a\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.\u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438.\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-03T23:42:23+00:00","article:modified_time":"2020-10-03T23:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95846","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:56:24","updated":"2022-09-30 13:54:48"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/95846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=95846"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/95846\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/95847"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=95846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=95846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=95846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}