Esiste un modello di algoritmo per proteggere qualsiasi contenuto nel web per garantire che io sia il primo a crearlo?

29

Alcuni anni fa c'era questo hacker (non ricordo chi fosse) che rivelasse una vulnerabilità in un dato sistema, ma per assicurarsi che nessuno si fosse preso il merito, ha creato una specie di chiave PGP.

Quello che ho capito in quel momento è che ha creato una chiave per assicurarsi che fosse lui a scoprirlo, ma non ha rivelato chi fosse in realtà, ha appena creato un meccanismo per essere in grado di dimostrare che era lui quello che creato la divulgazione.

Ok. Ho capito come funzionano gli algoritmi e la crittografia. Ma ancora non capisco come sia possibile creare una chiave per proteggere un determinato contenuto divulgato nel web per dimostrare che tu sei colui che l'ha creato per primo! Sono solo parole!

È davvero possibile? Quale dovrebbe essere il processo per assicurarti di dimostrarlo empiricamente? L'ho capito correttamente o probabilmente mi sono perso qualcosa riguardo a questo caso?

Spero che questa domanda sia abbastanza specifica, fondamentalmente è solo come proteggere un contenuto che hai creato nel web (un paragrafo, un codice, una parola, ecc.) e assicurarti di essere colui che lo ha creato per primo , all'interno di un determinato contesto.

Con la mia conoscenza, non vedo come sia possibile, ma sono incuriosito se esiste un modo pratico per farlo. C'è?

    
posta Fagner Brack 15.12.2014 - 14:05
fonte

7 risposte

1

I probably missed something regarding this case?

Penso che il pezzo che ti manca sia un'entità fidata.

Quando si hash il file con il contenuto che si desidera certificare, è possibile mostrare al mondo che si è il proprietario di questo documento, senza divulgare questo documento. Questo è tutto molto bene, ma come puoi dimostrare di avere questo documento in un momento specifico in passato?

Questo è il Timestamping di fiducia. Ecco un estratto da wikipedia :

The technique is based on digital signatures and hash functions. First a hash is calculated from the data. A hash is a sort of digital fingerprint of the original data: a string of bits that is different for each set of data. If the original data is changed then this will result in a completely different hash. This hash is sent to the TSA*. The TSA concatenates a timestamp to the hash and calculates the hash of this concatenation. This hash is in turn digitally signed with the private key of the TSA. This signed hash + the timestamp is sent back to the requester of the timestamp who stores these with the original data (see diagram).

(*) Time Stamping Authority

Ho utilizzato il servizio Timestamping di Universign, che ha un bel set di strumenti per rendere l'intera operazione facile da eseguire. Ci sono molte aziende che offrono servizi simili.

È interessante notare che, come @JoelFan menziona, il bitcoin fornisce un modo per ottenere un'entità fidata che non è centralizzata (perché dovrei fidarmi di qualcuno?). La catena bitcoin fornisce una timeline (è possibile dimostrare che un documento incrostato nella catena bitcoin è stato creato prima di un altro in basso nella catena). A mio avviso, tuttavia, ti mancheranno comunque la data e l'ora effettive dell'evento.

Inoltre, Trusted Timestamping è un riferimento valido in contenzioso.

    
risposta data 17.12.2014 - 13:43
fonte
39

In passato, gli scienziati pubblicherebbero del loro lavoro per poter dire "Ho pensato a questa idea ". (guarda le sezioni "storia" e "creazione di priorità"). La cosa è che volevano essere in grado di prendersene il merito, ma anche dare altri scienziati a pubblicare i loro risultati se avessero avuto altre idee senza basarsi sull'idea originale .

Ad esempio Gallileo ha pubblicato SMAISMRMILMEPOETALEVMIBVNENVGTTAVIRAS che era un anagramma di altissimvm planetam tergeminvm obseravi che tradotto dal latino recita "Ho osservato il pianeta più alto in una triplice forma". Ha sbagliato - Saturno (il "pianeta più alto" conosciuto all'epoca) non è composto da tre parti. Cinquanta anni dopo, Christiaan Huygens pubblicò AAAAAAA CCCCC D EEEEE H IIIIIII LLLL MM NNNNNNNNNNN OOOO PP Q RR S TTTTT UUUUU che in latino è Annulo cingitur, tenui, plano, nusquam cohaerente, ad eclipticam inclinato che si traduce in "È circondato da un sottile anello piatto che non lo tocca ed è inclinato contro l'eclittica".

Mentre quelli sono pezzi storici ora di interesse, mostrano un concetto importante allora - fornendo un "hash" che è facile dire "questo hash codifica questo testo". È facile passare dal testo conosciuto all'anagramma o all'hash, ma è difficile capire di cosa si tratta se non si sa di cosa si tratta in primo luogo.

Con i meccanisimatici moderni, abbiamo altri modi per fare gli hash. Molti di questi sono strettamente correlati alla crittografia. Esiste la funzione di hash crittografica . L'idea è, tuttavia, che è facile passare dal testo che conosci all'hash, ma è difficile passare dall'hash al testo che non conosci.

E così, se hai un programma potresti pubblicare un hash del programma che qualcosa e poi quando sei pronto a rivelarlo (probabilmente dopo l'azienda lo corregge o un periodo di tempo dopo), puoi pubblicare il codice vero e tutti possono vedere che, sì, questo codice corrisponde all'hash.

    
risposta data 15.12.2014 - 14:21
fonte
30

Puoi farlo abbastanza facilmente. Se hai un testo normale text , chiave segreta S e chiave pubblica P fai S(text) e ottieni cipher .

Ora puoi pubblicare cipher e P ma non S . Pertanto, tutti possono decrittografare cipher con P eseguendo P(cipher) . Se ora vuoi dimostrare che sei tu quello che ha creato cipher (e quindi% originaletext), puoi pubblicare S , oppure - se non vuoi che qualcuno sappia S - tu puoi creare un altro S("I was really the one who found the text first") e pubblicarlo. Perché non c'è modo di creare un codice crittografato con P(cipher) che si traduce in un testo significativo.

Ecco come puoi provarlo.

    
risposta data 15.12.2014 - 14:18
fonte
21

È possibile hash i dati che si desidera timestamp e trasformarli in un indirizzo Bitcoin. Questo è noto come timestamp attendibile . Effettuando un piccolo pagamento (un satoshi, o 0,00000001 BTC), il pagamento viene memorizzato sulla blockchain insieme all'indirizzo a cui hai pagato.

Poiché solo l'hash è memorizzato nella blockchain di Bitcoin, nessuno può sapere quali dati sono stati memorizzati, ma dati i dati pre-hash è possibile provare che i dati sono stati creati prima del blocco che contiene il pagamento effettuato a quell'indirizzo.

    
risposta data 15.12.2014 - 19:22
fonte
1

Un modo molto semplice per stabilire che sei il primo a pubblicare qualcosa, senza rivelare chi sei immediatamente ma avendo la possibilità di farlo in seguito:

  1. Pubblicalo su una fonte pubblica ben nota (lì tutti possono vedere che l'hai pubblicato)
  2. In questa pubblicazione, aggiungi una riga: originariamente pubblicata su gg / mm / aaaa dal proprietario di [email protected]

Non è necessario crittografare nulla.

Naturalmente c'è la possibilità che tu non voglia pubblicare ancora i tuoi risultati. In tal caso è necessario criptare tutto tranne la linea con l'indirizzo email. Tuttavia, ora potrebbe essere più difficile ottenere questo pubblicato su un sito famoso.

    
risposta data 15.12.2014 - 16:49
fonte
0

Questa è una presa diversa sulla risposta di valenterry.

Ecco come lo faresti usando PGP:

Genera una coppia di chiavi pubblica / privata.

  1. Mantieni la chiave privata e assicurati che rimanga segreta.
  2. Cifra la tua idea con la tua chiave pubblica: P (idea)
  3. Hai messo P (idea) da qualche parte che è attendibile (non da te, ma in generale) e registrerà il tempo.
  4. Quando hai bisogno di dimostrare che hai fatto l'idea prima, ottieni il timestamp dal momento in cui hai archiviato i dati e decifri i tuoi dati con la tua chiave segreta. S (P (idea)) = > idea

Questo metodo non richiede il rilascio della chiave segreta, che in generale è una cattiva idea. Certo, puoi sempre creare una nuova coppia di chiavi PGP - non costa nulla, ma non devi incautamente consegnare chiavi segrete se vuoi essere credibile.

La parte più difficile è dimostrare il tempo, ma in termini di documentazione di una vulnerabilità, non abbiamo bisogno di una soluzione al 100% a prova di proiettile e verificabile, abbiamo solo bisogno di qualcosa che sia "abbastanza buono". I log di un provider di cloud storage (dropbox, rackspace, google, ecc.) Sono probabilmente abbastanza buoni, supponendo che implementino un servizio sicuro.

Vale anche la pena notare che essendo il primo con un'idea e un timestamp non ha mai significato che tu sia stata la prima persona a pensare all'idea. Se qualcuno ci ha pensato prima di te ma non ha mai registrato l'idea con un meccanismo di timestamping, allora non può dimostrare di averlo fatto prima di te. Quindi, se stiamo cercando di capire chi l'ha fatto per primo, e tutto ciò che sappiamo è il momento in cui l'hai inventato, allora dobbiamo supporre che tu l'abbia inventato prima (l'altra persona potrebbe vomitare bugie).

    
risposta data 16.12.2014 - 15:29
fonte
-1

Ugh, così tante di queste risposte mancano il punto.

1) Ciò che l'hacker non ha avuto nulla a che fare con la crittografia.

2) Ciò che l'hacker non ha avuto nulla a che fare con il tempo (il timestamp, ecc.)

Cosa ha fatto l'hacker Significa pubblicamente il documento di rilascio. Quando si firma un messaggio PGP (un'e-mail, un documento word, ecc.), Si crea un hash che è la somma dell'hash del documento firmato e della propria chiave privata. Ora, per dimostrare che sei il creatore del documento, devi solo "mostrare" la chiave privata, come presumibilmente solo l'autore lo sa. Crittograficamente parlando, puoi "mostrare" che sei in possesso della chiave privata senza mostrare effettivamente la chiave stessa.

Quindi, in effetti, ha firmato digitalmente il documento. L'unica persona che può copiare quella firma, è qualcuno con la sua chiave privata. Non c'è niente da dire che il documento sia stato fatto oggi, o ieri, o che sia stato il primo esempio di esistere mai. Nessuna quantità di data / ora di hashing o qualsiasi altra cosa cambierà quella.

L'unico modo per firmare digitalmente qualcosa IN TEMPO, è usare la blockchain a la bitcoin. Non potrebbe esserci moneta digitale senza verifica del tempo - il fatto che la persona A abbia inviato denaro alla persona B è irrilevante a meno che non sappiamo quando. Non puoi entrare in un negozio con un pezzo di carta e dire "mia mamma mi ha mandato $ 100 una volta. Vorrei comprare del pane", perché una ricevuta di una transazione non significa che il denaro ti appartiene ancora. Potresti averlo dato a qualcun altro nel frattempo. La blockchain risolve questo problema facendo sì che un gran numero di persone (i minatori bitcoin) siano d'accordo sul fatto che la transazione sia avvenuta in un dato momento (e poi registrando per sempre quella volta nella blockchain).

    
risposta data 17.12.2014 - 22:06
fonte