Cosa rende la Blockchain Universa così sicura? HashID

In questo articolo ci tufferemo un po’ più a fondo all’interno della sicurezza della Blockchain Universa. Cosa rende il suo utilizzo così sicuro? Come vengono protetti i dati nella blockchain?

Nei precedenti articoli abbiamo comparato la velocità e i costi del protocollo della Blockchain Universa, con quelli di Bitcoin ed Ethereum. Nel caso te li fossi persi, vai a dare un’occhiata qui.

Universa Today è gestito grazie all’aiuto da parte della community. Se volessi dare il tuo contributo, sentiti libero/a di contattare @starnold su Telegram. Come puoi vedere gli articoli sono tradotti in varie lingue, ma più mani rendono il lavoro più leggero.

La Sicurezza della Blockchain Universa

Prima di tutto, devi capire uno degli aspetti chiave di una blockchain: l’immutabilità e la fiducia senza il bisogno di rivolgersi a terze parti fidate. Ma come può un protocollo avere tali caratteristiche senza qualcuno che stia dietro le quinte a controllare un processo o un pagamento? Nel mondo delle blockchains, il controllo è realizzato da una rete di nodi.

I nodi della rete raggiungono il consenso di un protocollo blockchain. Questi registrano un dato che ha la necessità di essere (diventare) immutabile. L’esempio più semplice sono i soldi: Tu vuoi che i tuo soldi digitali siano tuoi. Si dovrebbe impedire che un estraneo possa reclamare il possesso dei tuoi soldi. Questo è possibile per via di due aspetti:

  • La rete contiene il registro distribuito (con ogni singolo nodo in possesso di una copia del registro stesso);
  • La Crittografia.

I nodi controllano i dati di tutti i peer nella rete. Ogni nodo detiene/controlla i propri dati e quando si deve decidere su una richiesta di consenso, ogni nodo vota.

Nel caso si trattasse di denaro, i nodi convalidano e controllano il bilancio di tutti i partecipanti alla rete. Questo bilancio, nella Blockchain Universa, è solo un numero (l’importo) nello smart contract. Poiché la rete è un sistema distribuito e decentralizzato, i nodi raggiungono un consenso (90 +%) sui dati. Questo impedisce alle singole entità di imbrogliare.

Il Protocollo della Blockchain Universa ha diversa interessanti aspetti che garantiscono una rete sicura. I dati aziendali sensibili non vengono archiviati in modo poco brillante e inconsapevole in aree sconosciute del globo. Sono crittografati e regolati da pratiche di sicurezza organizzative. Ciò consente alle aziende di affidare ad una blockchain processi aziendali sensibili o privati. È qui che entra in gioco il secondo aspetto della sicurezza: la crittografia.

Crittografia

La crittografia è la chiave di questo successo. Esistono diversi modi per crittografare i dati. La rete Bitcoin, ad esempio, utilizza la funzione hash SHA-256 mentre l’algoritmo di crittografia in Ethereum è Keccak. Entrambi appartengono a una famiglia di hashing in qualche modo diversa. SHA-256 è una funzione della famiglia SHA-2 mentre Keccak della SHA3.

È interessante notare come l’implementazione di Ethereum sia fondamentalmente un algoritmo SHA3. But as it appeared just some little time before the SHA3 was officially accepted, it differs from it (in some minor constants).

L’algoritmo Keccak in Ethereum è sostanzialmente uguale ad uno standard SHA3, sebbene non sia compatibile a livello binario Cosa che può causare seri problemi, ad esempio quando si utilizzano implementazioni hardware o altre soluzioni conformi agli standard.

Per ora sono più o meno sicuri da usare, anche se si possono già trovare una serie di attacchi e problemi.

Una funzione hash cambia alcuni input in una classificazione. È una funzione a senso unico praticamente impossibile da invertire. Capisci bene che la parte di informazioni “hashata” può essere trasferita attraverso Internet in modo molto sicuro.

Se prendiamo la parola “universa” e la hashiamo con la funzione SHA-256, il risultato è una stringa come questa:

E7A3A82B5C33F35CAEFF7EB092B3A8A963DC83C7CB8E2EF8B1A2916A4ED6D1DE

Ma se cambiamo un po’ l’input in “un1versa”, l’output (o l’hash) sarà completamente diverso. Non è possibile dedurre l’input confrontando questi due output. Il nuovo hash sarà:

2D21258B9EF1CD7EA29F65AE161B7E453A628BD6033929D1F608ECE81F1D71C3

Puoi provare e testarlo tu stesso su diversi siti web. Come puoi vedere, entrambi gli hash sembrano completamente diversi, mentre l’input è quasi lo stesso; questo è noto anche come il cosiddetto “effetto valanga”. Una piccola modifica nell’input provoca un grande cambiamento nell’output

Ma.. Se in futuro l’algoritmo pottesse presentare un punto debole, non sarebbe possibile garantire che i dati vengano archiviati in modo sicuro. Universa risolve questa potenziale vulnerabilità con il cosiddetto HashID

Bitcoin, Ethereum e Universa

Bitcoin ed Ethereum usano entrambi un singolo hash ciascuno di famiglie diverse. Universa Blockchain utilizza tre diverse funzioni hash crittografiche di tre diverse famiglie di algoritmi e fondamentalmente combina i loro risultati in una complessa funzione hash, prendendo tutte le migliori qualità da tre algoritmi indipendenti.

Le funzioni hash utilizzate sono:

  • SHA-512/256
  • SHA3-256 (256 bits)
  • Streebog (256 bits)

Tutti questi sono standardizzati in tutto il mondo. SHA-512, ad esempio, è stato standardizzato dal governo federale degli Stati Uniti nel 2002. Anche il governo giapponese e l’Unione Europea accettano questa tecnica crittografica. Inoltre, Streebog è stato standardizzato dalla Federazione Russa nel 2012.

È uno dei cosiddetti algoritmi “GOST”. GOST significa GOsudarstvenniy STandard, “Stato Standard”. In Russia non esistono standard più “standardizzati” dei GOST; e gli standard GOST coprono tutto, dalle tecnologie/industrie e fino alla produzione e manipolazione degli alimenti.

Quindi, per chiarire:

  • La Blockchain Universa utilizza tre differenti funzioni hash;
  • Queste appartengono a famiglie di algoritmi completamente diverse;
  • Sono sviluppate da tre team di crittografi significativamente diversi e utilizzano concetti e primitivi crittografici piuttosto diversi;
  • Se una delle funzioni di hash affronterà vulnerabilità in futuro, i dati non saranno (diverranno) di dominio pubblico.

HashID in pratica

Come ricorderete dagli articoli precedenti, il protocollo della Blockchain Universa si basa sulla verifica dello stato di un contratto. Non esegue le “app decentralizzate”.

È possibile leggere lo stato di un contratto sottoforma di un lungo codice. Ti ricordi l’hash da ‘universa’ a ‘un1versa’? Tali stringhe possono essere facilmente verificate dai nodi di una blockchain. Ma se si tenta di modificare alcune informazioni dall’input (se si desidera rivendicare la proprietà di un contratto, ad esempio), l’ID del contratto cambierà enormemente. I nodi non lo riconosceranno come “APPROVATO”. Puoi scoprire di più riguardo questo argomento sul sito della Knowledge Base.

Quindi mettiamo in pratica questo metodo di hashing con HashID per vedere cosa succede. Prendiamo ad esempio lo smart contract originale del token UTN.

Se controlli lo smart contract nell’universaexplorer puoi vedere l’ID del contratto root:

NPo4dIkNdgYfGiNrdExoX003+lFT/d45OA6GifmcRoTzxSRSm5c5jDHBSTaAS+QleuN7ttX1rTvSQbHIIqkcK/zWjx/fCpP9ziwsgXbyyCtUhLqP9G4YZ+zEY/yL/GVE

E’ una stringa di 128 simboli. Ma prima di passare da uno smart contract a questo piccolo pezzo di testo, sono successe molte cose “dietro le quinte”. La stringa racchiude molte informazioni. Rappresenta lo stato di uno smart contract. Ma questa stringa riflette in realtà l’intero contenuto di uno smart contract (o della sua revisione). L’unica cosa che i nodi devono fare è verificare se questo stato è valido (quindi “APPROVATO”). In caso contrario, potrebbero comunicare questo contratto come DECLINATO, REVOCATO o NON DEFINITO.

L’unica cosa che un nodo memorizza è la definizione del suo stato:

“il contratto con lo stato NPo4dIkNdgYfGiNrdExoX003+lFT/d45OA6GifmcRoTzxSRSm5c5jDHBSTaAS+QleuN7ttX1rTvSQbHIIqkcK/zWjx/fCpP9ziwsgXbyyCtUhLqP9G4YZ+zEY/yL/GVE ora è VALIDO”

Quindi torniamo allo smart contract UTN con l’ID di 128 simboli.

Smart contracts

Ogni qual volta che una prima (o una nuova) revisione dello smart contract viene registrata nella rete Universa, ciascun nodo riceve il corpo di questo contratto (o la sua revisione). Dopo aver verificato il corpo dei contratti con numerosi controlli di convalida, se il nodo decide che lo smart contract è valido e deve essere registrato, inizia l’elaborazione del corpo di questo contratto utilizzando l’algoritmo HashID. Ognuna delle tre diverse funzioni hash in HashID esegue la scansione dell’intero contratto e genera una stringa di 256 bit (32 byte). Quindi, se lo fai tre volte con tre diverse funzioni hash, otterrai un risultato di 3 x 256 = 768 bit (96 byte). Questo output è codificato in Base64, che contiene A-Z, a-z, 0-9, e i caratteri + e /.

La particolarità della codifica Base64 è che ogni gruppo di 3 byte di qualsiasi dato binario è codificato come 4 simboli della rappresentazione Base64. Pertanto, ogni HashID viene solitamente visualizzato come 96 x 4 / 3 = 128 simboli. E questo è il numero da cui siamo partiti: l’HashID di uno smart contract è una stringa di 128 simboli. E anche solo un singolo bit o lettera alterata (occasionalmente o intenzionalmente) nello smart contract, provoca cambiamenti significativi nel risultato di ciascuno dei tre componenti. Ognuno dei tre componenti cambierà in modo diverso, usando algoritmi diversi; il che porta a un cambiamento incredibilmente imprevedibile nel risultato HashID: la qualità più desiderata dai buoni hash crittografici.

HashID in Universa

L’HashID include tutte le informazioni sullo smart contract (“revisionato”). Ma ora è archiviato in modo compatto e non reversibile. Ogni nodo memorizza la consapevolezza che “il contratto è codificato con alcuni HashID APPROVATI specifici”.

Quindi ad un certo punto, alcuni utenti potrebbero decidere di utilizzare questo smart contract (ad es. fare una nuova revisione). Per fare ciò, l’utente carica il corpo dello smart contract originale sulla rete. L’HashID di questo smart contract verrà nuovamente ricalcolato. Fintanto che le informazioni nel contratto intelligente sono valide e invariate, il calcolo HashID avrà lo stesso valore di quello memorizzato come “APPROVATO” dai nodi della rete. Quindi i nodi lo considereranno approvato e consentiranno al cliente di utilizzarlo. Ciò offre ai dati un livello di sicurezza enorme, conservando solo una piccola quantità di dati anziché l’intero corpo del contratto.

Sommario

Abbiamo iniziato questo articolo parlando di immutabilità e fiducia senza la necessità di terze parti. Come si può ottenere tutto questo?

Il protocollo Universa Blockchain utilizza un hashing a tre algoritmi per archiviare in modo sicuro e privato l’input di una transazione (lo smart contract) nella blockchain. Se la stringa di 128 simboli è valida, i nodi elaboreranno il pagamento/ transazione/revisione. Poiché l’HashID è costituito da funzioni di hashing di tre famiglie di algoritmi completamente differenti, ai dati viene garantita una maggiore sicurezza nel caso in cui vengano rilevate in ognuna di esse alcune vulnerabilità in futuro. Inoltre, poiché questi algoritmi sono standardizzati in diversi paesi, è possibile per Universa essere conforme agli standard in tutti.

La stringa di 128 simboli è verificata da tutti i nodi della blockchain. Se la riconoscono come valida (e tutte le altre modifiche come legali), la transazione verrà aggiunta al DAG. Ora il contratto viene archiviato in modo immutabile, sicuro, privato in modo affidabile e senza la necessità di una qualsiasi terza parte fidata.

Help translating this post to Inglese Tedesco Francese Olandese Spagnolo Croato Russo. Contact @starnold to participate!

Related posts

Identità degli Smart Contracts Universa (e Ricardiani)

Arnold

Crittografia Asimmetrica nella Blockchain Universa

Arnold

Cosa rende la Blockchain Universa così economica?

Arnold

Leave a Comment