{"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 firma digitale in blockchain","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dall'idea alla realizzazione: modifichiamo lo schema esistente della firma digitale su curva ellittica affinch\u00e9 sia deterministica, e offriamo sulla sua base funzioni per ottenere numeri pseudocasuali verificabili all'interno della blockchain.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oracolo casuale basato su 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, nel blockchain di Waves sono stati <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.wavesplatform.com\/smart-accounts-finally-activated-on-waves-mainnet-8bb7c7b67beb\">attivati i primi smart contract<\/a><\/noindex>, \u00e8 emersa immediatamente 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 pu\u00f2 fidare.<\/p>\n<p><\/p>\n<p>Riflettendo su questa questione, sono giunto alla conclusione definitiva: qualsiasi blockchain \u00e8 una gabbia, ottenere una fonte attendibile di entropia in un sistema chiuso \u00e8 impossibile.<\/p>\n<p><\/p>\n<p>Ma un'idea mi \u00e8 piaciuta: se <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\">un oracolo casuale<\/a><\/noindex> Quando si genera una firma dei dati dell'utente con un algoritmo deterministico, l'utente pu\u00f2 sempre verificare tale firma tramite la chiave pubblica e sar\u00e0 certo che il valore ottenuto \u00e8 unico. Un oracolo, per quanto desideri, non pu\u00f2 modificare nulla; l'algoritmo fornisce un risultato chiaro. In sostanza, l'utente registra il risultato, ma non lo conosce fino a quando l'oracolo non lo pubblica. Di conseguenza, non ci si pu\u00f2 fidare dell'oracolo, ma si pu\u00f2 verificare il risultato del suo lavoro. Se la verifica ha successo, tale firma pu\u00f2 essere considerata fonte di entropia per un numero pseudo-casuale.<\/p>\n<p><\/p>\n<p>Nella piattaforma blockchain Waves viene utilizzato uno schema di firma <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/EdDSA\">EdDSA<\/a><\/noindex> una variante <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, mentre S viene calcolato sulla base del messaggio da firmare, della chiave privata e dello stesso numero casuale utilizzato per R. Si ottiene quindi che non esiste una dipendenza unica; per lo stesso messaggio dell'utente esistono molte firme valide.<\/p>\n<p><\/p>\n<p>\u00c8 chiaro che una firma del genere non possa essere utilizzata come fonte di numeri pseudocasuali, poich\u00e9 \u00e8 indeterminata e, quindi, facilmente suscettibile a manipolazioni da parte di un oracolo.<\/p>\n<p><\/p>\n<p>Tuttavia, come si \u00e8 scoperto, \u00e8 possibile renderla deterministica.<\/p>\n<p><\/p>\n<p>Avevo grandi speranze in <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/draft-irtf-cfrg-vrf-04\">una funzione casuale verificabile (VRF)<\/a><\/noindex>, ma dopo aver esaminato la teoria, ho dovuto rinunciare a questa opzione. Sebbene la VRF offra una versione deterministica della firma e della sua prova, nell'algoritmo c'\u00e8 un punto strano che apre un buco nero per le manipolazioni da parte dell'oracolo. In particolare, durante il 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 nel contempo tenere un database delle corrispondenze tra k e i dati firmati, per poter sempre ricalcolare correttamente il risultato dal punto di vista del VRF. Se vedete un'estrazione basata su VRF senza rivelare la chiave privata, potete dibattere: sottolineare la necessit\u00e0 di rivelare la chiave oppure 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 e ottenuto il supporto degli analisti locali, \u00e8 nata la schematizzazione del funzionamento 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 \u00e8 risultato piuttosto semplice; per ottenere determinismo \u00e8 necessario fissare il valore di R prima che il messaggio da firmare venga generato. Se R \u00e8 fisso ed \u00e8 parte del messaggio da firmare, questo garantisce ulteriormente che R sia fissato nel messaggio stesso. Il valore di S \u00e8 univocamente determinato dal messaggio dell'utente e, di conseguenza, pu\u00f2 essere utilizzato come sorgente per numeri pseudocasuali.<\/p>\n<p><\/p>\n<p>In questo schema, non importa come venga fissato R; rimane sotto la responsabilit\u00e0 dell'oracolo. \u00c8 importante che S sia univocamente definito 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 fisso, si noti che <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jedisct1\/libsodium\/issues\/170\">R riutilizzato<\/a><\/noindex> nella firma di messaggi diversi rivela univocamente la chiave privata nello schema EdDSA. Per il proprietario dell'oracolo, \u00e8 estremamente importante escludere la possibilit\u00e0 di riutilizzare R per firmare messaggi diversi dell'utente. Ci\u00f2 significa che, in qualsiasi manovra o collusione, l'oracolo correr\u00e0 sempre il rischio di perdere la propria chiave privata.<\/p>\n<p><\/p>\n<p>In sintesi, l'oracolo deve fornire agli utenti due funzioni: l'inizializzazione, che registra il valore R, e la firma, che restituisce il valore S. La coppia R, S rappresenta una firma standard verificabile del messaggio utente contenente un valore R fisso e dati casuali dell'utente.<\/p>\n<p><\/p>\n<p>Si pu\u00f2 obiettare che questo schema per la blockchain non \u00e8 altro che un comune <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/348838\/\">schema commit-rivelazione<\/a><\/noindex>. In effetti, s\u00ec, \u00e8 proprio cos\u00ec. Ma ci sono alcuni punti da considerare. Innanzitutto, l'oracolo lavora sempre con la stessa chiave in tutte le operazioni, il che \u00e8 utile nei contratti. In secondo luogo, c'\u00e8 il rischio di perdita della chiave privata da parte dell'oracolo in caso di comportamento non corretto; ad esempio, se l'oracolo consente di effettuare campionamenti del risultato, bastano solo due campionamenti per scoprire la chiave privata e ottenere accesso completo al portafoglio. In terzo luogo, una firma nativamente verificabile sulla blockchain, che \u00e8 la fonte di casualit\u00e0, \u00e8 un'idea elegante.<\/p>\n<p><\/p>\n<p>Per sei mesi l'idea di implementazione \u00e8 rimasta nella mia testa, finch\u00e9 non \u00e8 finalmente 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 andare avanti!<\/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 realizzato<\/a><\/noindex> sulla blockchain di Waves in modalit\u00e0 richiesta-risposta utilizzando transazioni di trasferimento tra l'utente e l'oracolo. A tale proposito, \u00e8 stato installato nello spazio dell'oracolo uno script che controlla il funzionamento in stretta conformit\u00e0 con la logica descritta sopra. Le transazioni dell'oracolo vengono verificate ripristinando l'intera catena di interazioni con l'utente. Nella verifica del valore finale sono coinvolte tutte e quattro le transazioni, il contratto intelligente le incastra in un rigoroso filo di controllo, verificando passo dopo passo tutti i valori e non lasciando spazio per eventuali manipolazioni.<\/p>\n<p><\/p>\n<p>Ancora una volta, per essere chiaro. L'oracolo non opera semplicemente seguendo lo schema proposto. Il suo funzionamento \u00e8 completamente controllato a livello di blockchain da un <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/master\/vecro.ride\">contratto intelligente bloccante<\/a><\/noindex>. Un passo da iguino, e la transazione semplicemente non andr\u00e0 a buon fine. Quindi, se la transazione \u00e8 entrata nella blockchain, l'utente non deve nemmeno controllare nulla, poich\u00e9 \u00e8 gi\u00e0 stata verificata da centinaia di nodi della rete.<\/p>\n<p><\/p>\n<p>Attualmente, nella rete principale di Waves \u00e8 attivo 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 a un esempio di configurazione<\/a><\/noindex>). Il codice corrente \u00e8 sviluppato in 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 gi\u00e0 parlato in precedenza<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>Per utilizzare il servizio oracolo, \u00e8 necessario:<\/p>\n<p><\/p>\n<ul>\n<li>Confermare R;\n<ul>\n<li>Inviare almeno 0.005 Waves all'alias oracolo init@vecr;<\/li>\n<li>Ricevere l'R-code nel campo attachment nel trasferimento di 1 token R-vecr dall'oracolo all'utente;<\/li>\n<\/ul>\n<\/li>\n<li>Ricevere la firma;\n<ul>\n<li>Inviare almeno 0.005 Waves all'alias oracolo random@vecr, e specificare OBBLIGATORIAMENTE nel campo attachment l'R-code ricevuto in precedenza e ulteriori dati utente;<\/li>\n<li>Ricevere l'S-code nel campo attachment nel trasferimento di 1 token S-vecr dall'oracolo all'utente;<\/li>\n<\/ul>\n<\/li>\n<li>Utilizzare l'S-code come fonte di numero pseudocasuale.<\/li>\n<\/ul>\n<p><\/p>\n<p>Particolarit\u00e0 dell'attuale implementazione:<\/p>\n<p><\/p>\n<ul>\n<li>Le Waves inviate all'oracolo vengono utilizzate come commissione per la transazione inversa all'utente, fino a un massimo di 1 Waves;<\/li>\n<li>L'R-code \u00e8 la concatenazione del byte del simbolo \u2018R\u2019 e di 32 byte del valore R in codifica base58;<\/li>\n<li>L'R-code nell'attachment deve essere presente per primo, i dati utente seguono l'R-code;<\/li>\n<li>L'S-code \u00e8 la concatenazione del byte del simbolo \u2018S\u2019 e di 32 byte del valore S in codifica base58;<\/li>\n<li>S \u00e8 il risultato della divisione modulo, pertanto non \u00e8 possibile utilizzare S come un vero numero pseudocasuale a 256 bit (questo numero pu\u00f2 essere considerato al massimo un numero pseudocasuale a 252 bit);<\/li>\n<li>La soluzione pi\u00f9 semplice \u00e8 utilizzare l'hash di S-code come numero pseudocasuale.<\/li>\n<\/ul>\n<p><\/p>\n<p>Esempio di ottenimento di 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 di 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 di R-code e dei dati utente 'random': <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz\">https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz<\/a><\/noindex><\/li>\n<li>Ottenimento di 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 usarlo senza problemi. Dal punto di vista dell'utente medio, manca un'interfaccia grafica comoda, ma questo richieder\u00e0 del tempo.<\/p>\n<p><\/p>\n<p>Sar\u00f2 felice di rispondere a 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.0.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.0.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 nella blockchain | ProHoster","description":"Dall'idea alla realizzazione: modifichiamo lo schema esistente di firma digitale su curva ellittica affinch\u00e9 sia deterministico, e forniamo funzioni per ottenere verifiche nell'ambito della 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}]}}