Author

Topic: Dimostrare l'esistenza di un idea/testo/foto/brano in un determinato periodo (2) (Read 5538 times)

newbie
Activity: 16
Merit: 10
Esistono molti servizi oggi come oggi, ad esempio ascribe.io è eccellente. Dedicato al mondo dell'arte.
legendary
Activity: 2450
Merit: 1008
Ci sono servizi che, permettendo un drag&drop dei file, sono in grado di verificare al momento se l'hash è già stato aggiunto in blockchain  e quando, ma ovviamente il file deve essere esattamente identico, senza modifiche alcune, e questo crea un po' di problemi in termini di flow di lavoro e aggiornamento.
È evidente che, essendo tutto basato su degli hash, basta anche cambiare un solo carattere e la verifica fallisce. Non c'è soluzione a questo problema, se non creare un nuovo hash, inserirlo in blockchain, e collegare in qualche modo (anche solo con un appunto personale) il nuovo hash al vecchio, in modo tale da poter dimostrare che il nuovo file non è altro che una nuova versione del precedente.

Tieni presente in ogni caso che, al momento, non mi risulta alcun caso concreto in cui una prova di questo tipo sia stata sottoposta ad un tribunale italiano (e quindi non è garantita l'efficacia dal punto di vista pratico di tutela del diritto d'autore).

Ciao!
newbie
Activity: 30
Merit: 0
Ottimo post (as usual) ed interessante argomento.
Tralascio la parte in cui ci si addentra nel discorso privacy, per concentrarmi invece nella circostanza in cui un soggetto vuole palesemente dimostrare che una determinata opera è sua (pensiamo ad un disegno in computer grafica). La procedura descritta, compresa quella del video, è molto efficiente ed utile anche senza avere troppa esperienza(chi ne ha anche di meno, può sempre sfruttare i servizi messi a disposizione).
Casomai è la procedura inversa che è un po' più complicata, e sinceramente non ho capito come farla manualmente. Ci sono servizi che, permettendo un drag&drop dei file, sono in grado di verificare al momento se l'hash è già stato aggiunto in blockchain  e quando, ma ovviamente il file deve essere esattamente identico, senza modifiche alcune, e questo crea un po' di problemi in termini di flow di lavoro e aggiornamento.
Conoscete altri servizi che svolgono questa funzione ?
legendary
Activity: 2450
Merit: 1008
Ho letto solo ora questa guida, e un po' velocemente, ma

questo video mi sembra molto più lineare (fa esattamente quello che avrei fatto io). Così di prima battuta mi sfugge il senso dei punti 3 e 4, ma sarà sicuramente per l'ora Cheesy

Ottimo lavoro!
staff
Activity: 4270
Merit: 1209
I support freedom of choice
staff
Activity: 4270
Merit: 1209
I support freedom of choice
Mi era sfuggito il tuo messaggio.

Mettiamo ad esempio che un pittore all'inizio abbia voluto dimostrare di essere lui l'autore del quadro, e per farlo sia fatto un selfie con a fianco il quadro, e abbia usato l'hash di questa foto per fare l'operazione.


Processo inverso

1 ) Si dice persona a cui si vuole dare la dimostrazione, di guardare l'OP_RETURN di una certa transazione.
In questa transazione si troverà un certo hash.

2 ) Si prenderà la firma fatta al punto 3 della guida (che ci si era salvati a parte il giorno della transazione), e si mostra che l'hash nell'OP_RETURN corrisponde a quella firma.

3 ) Si mostra la foto con il selfie e il suo relativo hash.
Non si è ancora dimostrato nulla qui, perchè quella foto potrei averla fatta il giorno prima con una copia qualunque del quadro.

4 ) A questo punto si afferma: "Guarda, io possiedo la chiave privata per poter fare quella firma, presente nell'OP_RETURN a quella X data", e si darà intanto la chiave pubblica / indirizzo Bitcoin a chi si vuole dare la dimostrazione.

5 ) Lui verificherà che quell'indirizzo Bitcoin corrisponde alla firma. Ora vuole appunto la prova tu puoi firmare, e cioè che hai la chiave privata.

6 ) Si decide qualcosa li per li da firmare, tipo "oggi io Pippo, in data xx/xx/xx ore xx/xx sono qui con Pluto per verificare la che possieda la chiave privata", oppure l'hash di una foto fatta li in quel momento.

7 ) Tu prenderai il testo/l'hash della foto, quella cosa scelta in quel momento, e la firmerai, con la tua chiave privata. Darai poi tale firma a chi deve controllare.

8 ) Lui prenderà la firma, e verificherà che la chiave pubblica usata per firmare l'hash nell'OP_RETURN e quella da te appena fatta corrispondono, e quindi sei tu proprietario di quella precedente transazione.
Quindi quella foto a fianco al quadro esisteva già/veramente al momento della transazione.


Penso che ci sia un modo più semplice per spiegarlo, ma per ora c'è questo Cheesy
hero member
Activity: 484
Merit: 500
Ciao HostFast, ho letto il procedimento con cui arrivi a popolare l'OP_RETURN e mi è chiaro, non mi è invece chiaro il procedimento "inverso":

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

Volendo spiegarlo passo-passo, come applico questa dimostrazione?
staff
Activity: 4270
Merit: 1209
I support freedom of choice
Penso che sarebbe interessante da usare contro quelle persone che di abitudine piace rimangiarsi la parola.
Registrarle e buttare l'hash dell'audio sulla Blockchain Grin
staff
Activity: 4270
Merit: 1209
I support freedom of choice
Mettendo in coda l'hash del file e la firma (non l'hash della firma) fatta con un indirizzo bitcoin, vengono fuori 97 byte Tongue (se rimaniamo nella sfera Bitcoin)
Sfora di 17 byte dagli 80!
Se fosse possibile, ci potrebbero essere dei servizi che automaticamente e abbastanza velocemente troverebbero tutti i file firmati dandogli anche solo la chiave pubblica, o cercare se un file è già stato rivendicato dandogli solo il suo hash.
hero member
Activity: 588
Merit: 500
Secondo me entrambe le opzioni sono utili, senza firma è piu' immediato, con la firma richiede un passaggio non banale aggiuntivo.

C'è da dire che qui lo fanno con i bitcoin, perchè siamo nell'argomento, ma non è necessario siano proprio i bitcoin.
Uno potrebbe sbizzarrirsi ed usare anche metodi più "semplici".


Per dirne uno al volo, io scelgo una password (davvo) il cui hash sha è "e61af0cf9eef2f0e447572b722039fb787d5abee22e0df716b377596913b6894"

Il mio file invece ha hash "a2242ead55c94c3deb7cf2340bfef9d5bcaca22dfe66e646745ee4371c633fc8".

In blockchain metto la somma dei due hash magari separati da un punto (sto inventando), quindi hash di: "e61af0cf9eef2f0e447572b722039fb787d5abee22e0df716b377596913b6894.a2242ead55c94c 3deb7cf2340bfef9d5bcaca22dfe66e646745ee4371c633fc8"

che viene
"8f8c6123b079983e36e05aaef8b1beeeaf424d47936ea9734fba7939751030c8".

In questo modo ho dimostrato tramite blockchain la proprietà temporale del file, e tramite il fatto che solo io conosco la password per creare quell'hash, la proprietà fisica.
Certo, è un metodo meno sicuro di firmarlo con una chiave bitcoin perchè la chiave è molto più lunga e articolata... ma è molto piu facile e penso anche comprensibile dalla maggior parte degli utenti.
legendary
Activity: 2506
Merit: 1120
Gdassori mi ha fatto notare che però, mettendo direttamente l'hash del file (come in Proofofexistence), è poi da fuori possibile scoprire subito se un file è già stato rivendicato, non sapendo però da chi.
Col sistema della guida invece, uno che volesse scoprire se un file è stato rivendicato, dovrebbe farsi un giro di vari siti di autori (più o meno "anonimi")
Tali autori dovrebbero mostrare le relative chiavi pubbliche, hash dei file e relative transazioni.



Secondo me entrambe le opzioni sono utili, senza firma è piu' immediato, con la firma richiede un passaggio non banale aggiuntivo. Comunque il fatto che si possa sapere che è già stato pubblicato potrebbe essere un deterrente ad azioni legali costose per entrambe le parti ... in ogni caso il file che contiene l'hash dovrebbe essere noto e non si è certo obbligati a pubblicarlo. Si noti che basta pubblicare l'hash di un file di testo che contiene altri hash ...
staff
Activity: 4270
Merit: 1209
I support freedom of choice
Gdassori mi ha fatto notare che però, mettendo direttamente l'hash del file (come in Proofofexistence), è poi da fuori possibile scoprire subito se un file è già stato rivendicato, non sapendo però da chi.
Col sistema della guida invece, uno che volesse scoprire se un file è stato rivendicato, dovrebbe farsi un giro di vari siti di autori (più o meno "anonimi")
Tali autori dovrebbero mostrare le relative chiavi pubbliche, hash dei file e relative transazioni.


staff
Activity: 4270
Merit: 1209
I support freedom of choice
legendary
Activity: 2506
Merit: 1120
Proofofexistence è già segnalato nella precedente guida linkata all'inizio Wink
Appunto, uno legge di non leggerla e se lo perde :-)
staff
Activity: 4270
Merit: 1209
I support freedom of choice
Proofofexistence è già segnalato nella precedente guida linkata all'inizio Wink

Comunque si, buono il caso di voler preservare l'anonimato.
legendary
Activity: 2506
Merit: 1120
Questo passaggio e' necessario? In fondo basta dimostrare che si conosceva l'hash già alla data poi quale sia l'address perche' e' necesario?

Non basta scrivere nel documento chi sono gli attori coinvolti?
Si potrebbe, ma non è detto che si possa sempre fare.
Questo dovrebbe assicurare ogni possibilità.

Come si fa se non è possibile scrivere nel documento/foto?
Si potrebbe magari mettere l'hash di un file di testo con dentro scritti l'hash del file e le firme di eventuali attori?
Possiamo dire che se serve anonimato sul proprietario si mette una firma da address della quale si possiede il controllo, che in caso serva solo dimostrare l'esistenza del file che contiene quanto necessario per tutelarci la firma non sia essenziale?
Ti spiego perche' mi interessa: di fatto io potrei non avere neanche un BTC address o non vorrei avere la responsabilità di conservare anche la chiave privata ... possiamo "scroccare" una qualunque transazione per inserire l'hash del file e il risultato è lo stesso con costo e occupazione di spazio assolutamente trascurabili.

TI segnalo anche http://www.proofofexistence.com che mette anche a disposizione il codice sorgente ... https://github.com/maraoz/proofofexistence
staff
Activity: 4270
Merit: 1209
I support freedom of choice
Questo passaggio e' necessario? In fondo basta dimostrare che si conosceva l'hash già alla data poi quale sia l'address perche' e' necesario?

Non basta scrivere nel documento chi sono gli attori coinvolti?
Si potrebbe, ma non è detto che si possa sempre fare.
Questo dovrebbe assicurare ogni possibilità.

Come si fa se non è possibile scrivere nel documento/foto?
Si potrebbe magari mettere l'hash di un file di testo con dentro scritti l'hash del file e le firme di eventuali attori?
legendary
Activity: 2506
Merit: 1120
(...)
3) Prendere l'hash in esadecimale e firmarlo con la propria chiave privata di indirizzo Bitcoin. (prendete solo la stringa esadecimale come risultato)
(...)
Questo passaggio e' necessario? In fondo basta dimostrare che si conosceva l'hash già alla data poi quale sia l'address perche' e' necesario?

Non basta scrivere nel documento chi sono gli attori coinvolti?
staff
Activity: 4270
Merit: 1209
I support freedom of choice
Questo sistema può essere molto utile per dimostrare di essere gli originali ideatori di qualcosa, o mantenere una rilevanza storica.
Per capire meglio quando possa essere veramente importante questa funzionalità, consiglio la visione di questo video.
Bitcoin 101 - A Million Killer Apps - Part 2 - Blockchains & A Global Shared History
https://www.youtube.com/watch?v=Uci0Df7zO8c

Questa è la nuova versione della vecchia guida.
L'idea proviene dal progetto Bitproof.io.
Quanto è spiegato sotto è un modo manuale per ottenere circa lo stesso risultato.
Per chi volesse un metodo facile, veloce e userfriendly, consiglio appunto di affidarsi al servizio originale: Bitproof.io
Ma anche http://www.proofofexistence.com (immissione di solo hash non firmato) - Sorgente: https://github.com/maraoz/proofofexistence

Perchè la vecchia guida non va bene? Perchè non si usa anche il semplice brainwallet invece dell'OP_RETURN?
La giusta risposta dell'autore di Bitproof
Using a hash as a private key is not as efficient as using OP_RETURN because it will require more transactions. You'll have to send some coins to the derived public key to prove existence of the hash, then you'll eventually want to transfer the coins back (2 transactions = takes more space).
Using a hash as a public key will just "burn" the coins (which is bad - increases deflation).
OP_RETURN has been created for the purpose of storing data in the blockchain, the inputs become fees and are given to the miners (no money is lost).
- Usare l'hash come chiave privata non è efficiente quanto usare l'OP_RETURN, perchè richiederebbe più transazioni. Per dimostrare l'esistenza dell'hash servirebbe inviare dei bitcoin all'indirizzo generato, e fare un ulteriore transazione per riprenderseli. (più spazio sulla Blockchain)
- Usare l'hash come chiave pubblica porterebbe a perdere i bitcoin. (non avendo la chiave privata corrispondente)
- L'OP_RETURN è creato apposta con l'idea di memorizzare dati sulla Blockchain. I bitcoin inviati diventano fee che vengono inviati ai minatori. Nessun bitcoin va perso.
Da aggiungere poi che l'OP_RETURN potrà essere facilmente "ignorato", tramite il "pruning", rendendo più facile avere dei nodi più leggeri in fatto di spazio da occupare.


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 Cheesy
Jump to: