Translate

CERTIFICAZIONE in ethernity wall

Qualsiasi documento informatico può produrre un identificativo univoco di sè stesso tale per cui non esiste altro documento che produce lo stesso identificativo e se sì effettuano modifiche di qualsiasi tipo al documento l’identificativo riproducibile non potrà essere più lo stesso di prima. Questo identificativo viene ad essere quindi la testimonianza che il documento non è stato alterato nel tempo se ricavando nuovamente l’identificativo questo è uguale a quello originario.
L’operazione per ricavare l’identificativo è detta hashing e l’identificativo è detto Hash.
Se si inserisce l’Hash di un documento Nella Blockchain, e ci sono alcuni modi per farlo, si ha la prova dell’esistenza dell’Hash prima di una determinata data.
Siccome quell’Hash può essere ricavato dallo stesso documento anni dopo con la stessa operazione se e solo se il documento non è stato alterato, questo fatto può essere usato come prova inconfutabile:
  1. che il documento esisteva prima di una certa data
  2. che il contenuto del documento non è stato alterato dal momento in cui il suo Hash fu ricavato e inciso nella Blockchain.

IL PROCEDIMENTO UTILIZZATO

Abbiamo preso il Bilancio e la relazione Integrativa e ne abbiamo ricavato un PDF. Abbiamo utilizzato il servizio “Notarize” di Eternity Wall per “scolpire” l’hash del documento nellaBlockchain.
Per non abusare dello spazio sulla Blockchain Il servizio Notarize utilizza Un sistema di certificazione multipla, cioè certifica tutti i documenti che ne fanno richiesta in una certa data in un unica transazione incidendo non l’hash di un singolo documento sulla blockchain ma l’Hash di un RETICOLO DI HASH  ricavato dai documenti da certificare.
La verifica diventa meno immediata ma ugualmente affidabile in quanto è impossibile modificare uno qualsiasi dei documenti certificati senza compormettere il reticolo e quindi l’hash radice che si trova in forma definitiva sulla blockchain.
Perché la verifica dia esito positivo è necessario che il documento produca lo stesso hash dell’istante in cui è entrato nel reticolo e che questo hash assieme ad alcuni altri del reticolo possano produrre l’“Hash radice” che troviamo inciso nella transazione confermata all’interno della Blockchain.

COME ABBIAMO CERTIFICATO IL BILNCIO CON NOTARIZE



Abbiamo mandato una mail al servizio “Notarize” di eternitywall.it e abbiamo ricevuto dal servizio una mail di risposta con un testo che riportava l’hash calcolato del file PDF che avevamo inviato al servizio: b69e3c95e30d6deca14f513e8c0e46c075be8980aa0ad139321ba8214a4e4b99 : assobit-bilanncio-e-relazione-2015.pdf 
e tre file in formato json che contenevano elementi del Merkle tree. Il file che ci interessava aveva il seguente contenuto:
{ "status": "ok", "txHash": "58ccb4d55fa183a498145deb6db28d1f5044170ec7bc26333b72cd5cbef1166b", "merkle": { "root": "bc4587f7734e9d575a93e9daaf6d64c6af2ce07171742056674cd24c7a448973", "leaves": ["0f11e6a697ceb3ea664ce5ac29ba94d8579570a7389e07ec55c363104f405fd0", "b69e3c95e30d6deca14f513e8c0e46c075be8980aa0ad139321ba8214a4e4b99"] } }

Con queste componenti possiamo dimostrare a chiunque in futuro che il documento esisteva prima del 22 di marzo del 2016 e che da allora il contenuto non è cambiato infatti l’hash del documento non è altro che una delle “leaves” (foglie) del merkle tree il cui Merkle root è stato scritto nella transazione bitcoin con ID: 
 58ccb4d55fa183a498145deb6db28d1f5044170ec7bc26333b72cd5cbef1166bSottoforma di OP_RETURN. Nei dettagli della transazione, analizzando l’output troviamo infatti:
OP_RETURN 455743bc4587f7734e9d575a93e9daaf6d64c6af2ce07171742056674cd24c7a448973
I primi sei bytes dell’OP_RETURN sono il “marchio di fabbrica del servizio” cioè “EWC” in formato esadecimale (455743) mentre la restante parte della stringa è costituita dal merkle root (bc4587f7734e9d575a93e9daaf6d64c6af2ce07171742056674cd24c7a448973] che è stato ottenuto anche dall’hash del nostro documento inviato al sevizio.
E’ impossibile alterare il file del nostro bilancio senza alterarne l’hash e senza compromettere l’intero merkle tree la cui root e stata “scolpita” nella Blockchain per sempre all’interno di una transazione certificata dalla Blockchainil 22/3/2016. Per verificare la consistenza del documento si possono seguire le istruzioni riportate sul sito.

Link per la verifica : https://bitproof.io/

\\\\\\\\\\\\\\\\\\


Inizio:

1) Prendere un file / testo / musica / immagine / frase

2) Calcolare il suo sha256:
- http://hash.online-convert.com/sha256-generator
- http://www.slavasoft.com/hashcalc/
Ne trovate tanti altri su Google di software/servizi per calcolarlo.

3) Prendere l'hash in esadecimale e firmarlo con la propria chiave privata di indirizzo Bitcoin. (prendete solo la stringa esadecimale come risultato)
- Electrum
- Bitcoin Core
- https://brainwallet.github.io (sign/verify) - Sorgente: https://github.com/brainwallet/brainwallet.github.io

Al posto della chiave privata di indirizzo Bitcoin va bene anche da una coppia di chiavi ECDSA presa ad esempio da qua:
http://kjur.github.io/jsrsasign/sample-ecdsa.html - Sorgente: https://github.com/kjur/jsrsasign

4) Prendere poi "la firma" e calcolare il suo sha256:

In sostanza avrete fatto questo:
sha256(firma(sha256(file)))

5) Mettere quest'ultimo in un OP_RETURN.
E' possibile farlo da qui (Advanced Options):
https://coinb.in/#newTransaction - Sorgente: https://github.com/OutCast3k/coinbin/
Potete inviare anche zero bitcoin nella transazione con l'OP_RETURN e i bitcoin altrove, verso altri indirizzi.

Se qualcuno vuole la dimostrazione che possedevate quel file in un dato momento, dovrete mostrare:
- La transazione con l'OP_RETURN (il timestamp)
- L'indirizzo Bitcoin / Chiave pubblica
- La relativa firma (il cui hash è presente nell'OP_RETURN - Punto 4)
- L'hash del file


Se anche il file è stato dato a qualcuno, ma non è di pubblico dominio, chi eventualmente avrà quel file (anche trovato per caso) potrà comunque verificare la corrispondenza.

Con la chiave privata potrete quindi anche firmare eventuali aggiornamenti del file, magari se si tratta di un contratto o un passaggio di proprietà del file.


Se avete suggerimenti su come indicare meglio alcune cose in questa guida, o proprio a suggerimenti su altri usi, scrivete pure :D