{"id":32343,"date":"2019-10-31T21:46:27","date_gmt":"2019-10-31T18:46:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne\/"},"modified":"2019-10-31T21:46:27","modified_gmt":"2019-10-31T18:46:27","slug":"cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","title":{"rendered":"Oracolo casuale basato su una firma digitale in blockchain","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dall'idea all'implementazione: modifichiamo lo schema esistente della firma digitale su curva ellittica affinch\u00e9 sia deterministico e forniamo, sulla sua base, funzioni per ottenere numeri pseudocasuali verificabili nella blockchain.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oracolo casuale basato su una firma digitale in blockchain\" src=\"\/wp-content\/uploads\/2019\/04\/91c321aa895498263f80f586aa336956.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ideya\">Idea<\/h1>\n<p><\/p>\n<p>Nell'autunno del 2018, nella blockchain di Waves furono <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.wavesplatform.com\/smart-accounts-finally-activated-on-waves-mainnet-8bb7c7b67beb\">attivati i primi smart contract<\/a><\/noindex>, subito si pose la questione della possibilit\u00e0 di ottenere <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB\">numeri pseudocasuali<\/a><\/noindex>, di cui ci si possa fidare.<\/p>\n<p><\/p>\n<p>Riflettendo su questa questione, giunsi infine alla conclusione: qualsiasi blockchain \u00e8 una cella, ottenere una sorgente affidabile di entropia in un sistema chiuso \u00e8 impossibile.<\/p>\n<p><\/p>\n<p>Ma c'era un'idea che mi piaceva: se un <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BE%D1%80%D0%B0%D0%BA%D1%83%D0%BB\">oracolo casuale<\/a><\/noindex> dovesse firmare i dati degli utenti con un algoritmo deterministico, allora l'utente potrebbe sempre verificare tale firma con la chiave pubblica e sarebbe certo che il valore ottenuto \u00e8 unico. L'oracolo, per quanto desideri, non pu\u00f2 cambiare nulla; l'algoritmo fornisce un risultato univoco. Di fatto, l'utente fissa il risultato, ma non lo conosce fino a che l'oracolo non lo pubblica. Si arriva cos\u00ec alla conclusione che non si debba affidarsi all'oracolo, ma verificare il risultato del suo lavoro. In tal modo, nel caso di una verifica positiva, tale firma pu\u00f2 essere considerata una fonte di entropia per un numero pseudocasuale.<\/p>\n<p><\/p>\n<p>Nella piattaforma blockchain di Waves viene utilizzato uno schema di firma <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/EdDSA\">EdDSA<\/a><\/noindex> una versione <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/EdDSA#Ed25519\">Ed25519<\/a><\/noindex>. In questo schema, la firma \u00e8 composta dai valori R e S, dove R dipende da un valore casuale e S \u00e8 calcolato sulla base del messaggio firmato, della chiave privata e dello stesso numero casuale di R. Risulta quindi che non esiste una dipendenza univoca; per lo stesso messaggio degli utenti esistono molte firme valide.<\/p>\n<p><\/p>\n<p>\u00c8 evidente che una firma di questo tipo non pu\u00f2 essere usata pura come fonte di numeri pseudocasuali, poich\u00e9 non \u00e8 deterministica e, pertanto, pu\u00f2 essere facilmente soggetta a manipolazioni da parte dell'oracolo.<\/p>\n<p><\/p>\n<p>Ma, come si \u00e8 scoperto, renderla deterministica \u00e8 in realt\u00e0 possibile.<\/p>\n<p><\/p>\n<p>Riponevo grandi speranze nella <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/draft-irtf-cfrg-vrf-04\">funzione casuale verificabile (VRF)<\/a><\/noindex>, ma dopo aver studiato la parte tecnica, abbiamo dovuto rinunciare a questa opzione. Sebbene il VRF offra un'opzione deterministica per la firma e la sua prova, c'\u00e8 una stranezza nell'algoritmo che apre una falla per le manipolazioni da parte dell'oracolo. In particolare, nel calcolo del valore k (<noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/draft-irtf-cfrg-vrf-04#section-5.1\">sezione 5.1<\/a><\/noindex>) viene utilizzata una chiave privata, che rimane sconosciuta all'utente; quindi l'utente non pu\u00f2 verificare la correttezza del calcolo di k, il che significa che l'oracolo pu\u00f2 utilizzare qualsiasi valore k desideri e allo stesso tempo tenere un database delle corrispondenze k e dei dati firmati, per poter sempre rieseguire il risultato corretto dal punto di vista del VRF. Se vedete un'estrazione basata su VRF senza rivelare la chiave privata, potete fare il saputello: segnalare la necessit\u00e0 di rivelare la chiave o di escluderla dal calcolo di k; in tal caso, la chiave privata si riveler\u00e0 automaticamente alla prima firma. In generale, come gi\u00e0 detto, \u00e8 uno schema strano per un oracolo casuale.<\/p>\n<p><\/p>\n<p>Dopo aver riflettuto un po' e avendo il supporto di analisti locali, \u00e8 nata la schematizzazione del lavoro di VECRO.<\/p>\n<p><\/p>\n<p>VECRO \u00e8 l'acronimo di Verifiable Elliptic Curve Random Oracle, che in italiano significa oracolo casuale verificabile su curve ellittiche.<\/p>\n<p><\/p>\n<p>Tutto si \u00e8 rivelato abbastanza semplice; per ottenere una determinazione \u00e8 necessario fissare il valore R prima della comparsa del messaggio firmato. Se R \u00e8 fissato ed \u00e8 parte del messaggio firmato, il che garantisce ulteriormente la fissazione di R nel messaggio stesso, il valore S \u00e8 determinato in modo univoco dal messaggio dell'utente e, pertanto, pu\u00f2 essere utilizzato come sorgente per numeri pseudocasuali.<\/p>\n<p><\/p>\n<p>In uno schema del genere non importa come viene fissato R; resta nella responsabilit\u00e0 dell'oracolo. \u00c8 importante che S sia definito in modo univoco dall'utente, ma il suo valore non \u00e8 noto fino a quando l'oracolo non lo pubblica. Proprio come volevamo!<\/p>\n<p><\/p>\n<p>Parlando di R fissato, notate che <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jedisct1\/libsodium\/issues\/170\">R riutilizzato<\/a><\/noindex> La firma di vari messaggi rivela inequivocabilmente la chiave privata nello schema EdDSA. Per il proprietario dell'oracolo diventa estremamente importante escludere la possibilit\u00e0 di riutilizzare R per firmare messaggi diversi dell'utente. Cio\u00e8, in qualsiasi manipolazione o cospirazione, l'oracolo correr\u00e0 sempre il rischio di perdere la propria chiave privata.<\/p>\n<p><\/p>\n<p>Pertanto, l'oracolo deve fornire agli utenti due funzioni: l'inizializzazione, che fissa il valore di R, e la firma, che restituisce il valore di S. In questo caso, la coppia R, S \u00e8 una firma verificabile convenzionale del messaggio dell'utente che contiene un valore fisso di R e dati arbitrary dell'utente.<\/p>\n<p><\/p>\n<p>Si potrebbe obiettare che questo schema per la blockchain non \u00e8 altro che una normale <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/348838\/\">schema commit-rivelazione<\/a><\/noindex>. In sostanza, s\u00ec, lo \u00e8. Ma ci sono alcuni dettagli. In primo luogo, l'oracolo lavora sempre con la stessa chiave in tutte le operazioni, ad esempio \u00e8 comodo utilizzarlo nei contratti. In secondo luogo, c'\u00e8 il rischio di perdita della chiave privata da parte dell'oracolo in caso di comportamento scorretto, ad esempio, se l'oracolo consente di fare campionamenti dei risultati, allora basta fare solo due campionamenti per scoprire la chiave privata e avere accesso completo al portafoglio. In terzo luogo, la firma nativamente verificabile nella blockchain, che \u00e8 la fonte di casualit\u00e0, \u00e8 affascinante.<\/p>\n<p><\/p>\n<p>Per sei mesi l'idea di implementazione ha rodato nella mia testa, finch\u00e9 finalmente non \u00e8 emersa la motivazione sotto forma di <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/waves-lab\/waves-labs-announces-first-grant-recipients-7568f01fec22\">un grant da Waves Labs<\/a><\/noindex>. Con un grande grant arriva una grande responsabilit\u00e0, quindi il progetto deve essere realizzato!<\/p>\n<p><\/p>\n<h1 id=\"realizaciya\">Implementazione<\/h1>\n<p><\/p>\n<p>Quindi, in questo progetto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\">VECRO \u00e8 stato implementato<\/a><\/noindex> sulla blockchain di Waves in modalit\u00e0 richiesta-risposta tramite transazioni di trasferimento tra l'utente e l'oracolo. A questo punto, nel conto dell'oracolo \u00e8 stato impostato uno script che controlla il funzionamento rigorosamente in conformit\u00e0 con la logica descritta sopra. Le transazioni dell'oracolo passano una verifica con il ripristino dell'intera catena di interazione con l'utente. Nella verifica del valore finale partecipano tutte e quattro le transazioni, il contratto intelligente le intreccia su un rigoroso filo di verifica, controllando passo dopo passo tutti i valori e non lasciando spazio per alcuna manipolazione.<\/p>\n<p><\/p>\n<p>Ancora una volta, per rimanere impresso e rendere tutto pi\u00f9 chiaro. L'oracolo non funziona semplicemente secondo lo schema proposto. Il suo funzionamento \u00e8 completamente controllato a livello di blockchain. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/master\/vecro.ride\">un contratto intelligente a prova di errore<\/a><\/noindex>. Un passo a sinistra e la transazione semplicemente non passer\u00e0. Quindi, se la transazione \u00e8 entrata nella blockchain, l'utente non deve nemmeno controllare nulla, perch\u00e9 tutto \u00e8 gi\u00e0 stato verificato da centinaia di nodi della rete.<\/p>\n<p><\/p>\n<p>Attualmente, nella rete principale di Waves \u00e8 stato lanciato un VECRO (puoi avviarne uno tuo, non \u00e8 difficile, basta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/master\/config.sample.php\">dare un'occhiata all'esempio di configurazione<\/a><\/noindex>). Il codice attuale funziona su PHP (su <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\">WavesKit<\/a><\/noindex>, di cui <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446110\/\">ho parlato in precedenza<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>Per utilizzare il servizio dell'oracolo \u00e8 necessario:<\/p>\n<p><\/p>\n<ul>\n<li>Fissare R;\n<ul>\n<li>Inviare un minimo di 0.005 Waves all'alias dell'oracolo init@vecr;<\/li>\n<li>Ricevere il R-code nel campo attachment nel trasferimento di 1 token R-vecr dall'oracolo all'utente;<\/li>\n<\/ul>\n<\/li>\n<li>Ottenere la firma;\n<ul>\n<li>Inviare un minimo di 0.005 Waves all'alias dell'oracolo random@vecr, e  \u00e8 OBBLIGATORIO indicare nel campo attachment il R-code ottenuto in precedenza e ulteriori dati dell'utente;<\/li>\n<li>Ricevere il S-code nel campo attachment nel trasferimento di 1 token S-vecr dall'oracolo all'utente;<\/li>\n<\/ul>\n<\/li>\n<li>Utilizzare il S-code come fonte di numero pseudo-casuale.<\/li>\n<\/ul>\n<p><\/p>\n<p>Aspetti della implementazione attuale:<\/p>\n<p><\/p>\n<ul>\n<li>Le Waves inviate all'oracolo vengono utilizzate come commissione per il trasferimento all'utente, fino a un massimo di 1 Waves;<\/li>\n<li>Il R-code \u00e8 la concatenazione del byte del carattere 'R' e 32 byte del valore R in codifica base58;<\/li>\n<li>Il R-code nell'attachment deve trovarsi per primo, i dati dell'utente seguono il R-code;<\/li>\n<li>Il S-code \u00e8 la concatenazione del byte del carattere 'S' e 32 byte del valore S in codifica base58;<\/li>\n<li>S \u00e8 il risultato di una divisione modulo, quindi non si pu\u00f2 usare S come un numero pseudo-casuale a 256 bit (questo numero pu\u00f2 essere considerato al massimo un numero pseudo-casuale a 252 bit);<\/li>\n<li>L'opzione pi\u00f9 semplice \u00e8 utilizzare l'hash del S-code come numero pseudo-casuale.<\/li>\n<\/ul>\n<p><\/p>\n<p>Esempio di ottenimento del S-code:<\/p>\n<p><\/p>\n<ul>\n<li>Inizializzazione: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/8gc8jwM7JrPNehoDs7NVyos7BsufYktvkwVW1B6FAY6\">https:\/\/wavesexplorer.com\/tx\/8gc8jwM7JrPNehoDs7NVyos7BsufYktvkwVW1B6FAY6<\/a><\/noindex><\/li>\n<li>Ottenimento del R-code: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/9eB25SbzEwvHEbm8pcKj7MGDrYv1u3Fxpj696FkJ96hd\">https:\/\/wavesexplorer.com\/tx\/9eB25SbzEwvHEbm8pcKj7MGDrYv1u3Fxpj696FkJ96hd<\/a><\/noindex><\/li>\n<li>Richiesta del risultato della firma del R-code e dei dati dell'utente 'random': <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz\">https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz<\/a><\/noindex><\/li>\n<li>Ottenimento del S-code: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/C5VrFLQcprbA1KXAToaNvMP4Kg2rq43NkwWuADAA7wXX\">https:\/\/wavesexplorer.com\/tx\/C5VrFLQcprbA1KXAToaNvMP4Kg2rq43NkwWuADAA7wXX<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Dal punto di vista tecnico, l'oracolo \u00e8 completamente pronto per l'uso, puoi tranquillamente utilizzarlo. Dal punto di vista dell'utente medio, manca un'interfaccia grafica comoda, ma dovremo aspettare.<\/p>\n<p><\/p>\n<p>Sar\u00f2 felice di rispondere alle domande e accettare suggerimenti, grazie.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/449340\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b. \u0418\u0434\u0435\u044f \u041e\u0441\u0435\u043d\u044c\u044e 2018 \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 Waves \u0431\u044b\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c. \u041b\u043e\u043c\u0430\u044f \u0433\u043e\u043b\u043e\u0432\u0443 \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24158,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32343","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430.\" \/>\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\/it\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\udd47C\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043e\u0440\u0430\u043a\u0443\u043b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne\" \/>\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=\"2019-10-31T18:46:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:46:27+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\udd47Oracolo casuale basato su firma digitale nel blockchain | ProHoster","description":"Dall'idea alla realizzazione: modifichiamo lo schema esistente della firma digitale su curva ellittica affinch\u00e9 sia deterministico e forniamo, sulla sua base, funzioni per ottenere verifiche all'interno del blockchain.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\udd47C\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043e\u0440\u0430\u043a\u0443\u043b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 | ProHoster","og:description":"\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","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":"2019-10-31T18:46:27+00:00","article:modified_time":"2019-10-31T18:46:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32343","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":"2026-01-21 10:26:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:00:23","updated":"2026-01-21 10:26:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/32343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=32343"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/32343\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/24158"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=32343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=32343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=32343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}