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


29

Qualche anno fa c'era questo hacker (non ricordo chi fosse) che rivelava completamente una vulnerabilità in un determinato sistema, ma per assicurarsi che nessuno si prendesse il merito, creò una sorta di chiave PGP.

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

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

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

Spero che questa domanda sia abbastanza specifica, fondamentalmente è proprio come proteggere un contenuto che hai creato nel web (un paragrafo, un codice, una parola, ecc.) E assicurarti di essere quello che l'ha creato per primo, all'interno di un contesto dato.

Con le mie conoscenze non vedo come sia possibile, ma sono incuriosito se esiste un modo pratico per farlo. È lì?


9
Forse chiedere a crypto.stackexchange.com sarebbe un'idea migliore?
Euforico,

5
@FagnerBrack - Non copiare / incollare. Basta contrassegnare la domanda per la migrazione a crypto SE.
mouviciel,

10
But I still don't understand how you can create a key to protect a given content disclosed in the web to prove you are the one who created it first! It is just words!C'è una differenza tra dimostrare che hai creato qualcosa e dimostrare che sei stato il primo a creare qualcosa. La chiave PGP può dimostrare che l'hacker ha inviato il rapporto di vulnerabilità. Non è garantito che la vulnerabilità non sia stata scoperta o segnalata prima di lui, ma può almeno dimostrare di averlo segnalato in una determinata data.
Doval,

2
C'è stata una storia su un matematico che ha scoperto una prova e non voleva ancora pubblicarla, ma non voleva che qualcun altro ricevesse credito. Così ha pubblicato le lettere di frase della prova in ordine alfabetico. Ho dimenticato come si chiamava.
Paolo,

3
@Paul - sarebbe Robert Hooke, la legge di Hooke en.wikipedia.org/wiki/Hooke's_law
James McLeod

Risposte:


1

Probabilmente mi sono perso qualcosa riguardo a questo caso?

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

Quando si esegue l'hashing del file con il contenuto che si desidera certificare, è possibile dimostrare al mondo di essere il proprietario di questo documento, senza divulgare questo documento. Va tutto benissimo, ma come puoi provare di avere questo documento in un momento specifico del passato?

Questo è il timestamp affidabile. Ecco un estratto da Wikipedia :

La tecnica si basa su firme digitali e funzioni hash. Innanzitutto viene calcolato un hash dai dati. Un hash è una sorta di impronta digitale dei dati originali: una stringa di bit diversa per ogni set di dati. Se i dati originali vengono modificati, ciò comporterà un hash completamente diverso. Questo hash viene inviato a TSA *. La TSA concatena un timestamp all'hash e calcola l'hash di questa concatenazione. Questo hash è a sua volta firmato digitalmente con la chiave privata della TSA. Questo hash firmato + il timestamp viene rispedito al richiedente del timestamp che li memorizza con i dati originali (vedi diagramma).

(*) Autorità di timestamp

Ho usato il servizio di 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 menzionato da @JoelFan, quel bitcoin fornisce un modo per ottenere un'entità fidata che non è centralizzata (perché dovrei fidarmi di qualcuno?). La catena di bitcoin fornisce una linea temporale (puoi provare che un documento incrostato nella catena di bitcoin è stato creato prima che un altro più in basso nella catena). Per quanto ne so, tuttavia, mancheresti comunque la data e l'ora effettive dell'evento.

Inoltre, il timestamp affidabile è un riferimento valido nel contenzioso.


2
Ci sono date-date incorporate nelle intestazioni di blocco in bitcoin ... anche se non sono applicate dal protocollo, in genere si ritiene che siano accurate almeno "ballpark" (cioè entro una precisione di 1 giorno) ... è anche possibile ispezionare l'intera blockchain dal blocco in questione fino ad oggi per assicurarsi che le date siano in aumento monotonicamente
JoelFan

Mi spiace impiegare troppo tempo per accettare una risposta. L'hacker probabilmente ha utilizzato un'entità attendibile, non sono riuscito a trovare un modo ragionevole per proteggere la paternità dei contenuti senza un'entità attendibile.
Fagner Brack,

39

In passato, gli scienziati avrebbero pubblicato anagrammi del loro lavoro per poter dire "Ho pensato a questa idea". (guarda le sezioni "storia" e "definizione delle priorità") Il fatto è che volevano essere in grado di prendersene il merito, ma anche dare ad altri scienziati la possibilità di 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 triplice forma". Ha sbagliato - Saturno (il pianeta "più alto" conosciuto all'epoca) non è composto da tre parti. Cinquant'anni dopo, Christiaan Huygens ha pubblicato AAAAAAA CCCCC D EEEEE H IIIIIII LLLL MM NNNNNNNNN OOOO PP Q RR S TTTTT UUUUU che in latino è Annulo cingitur, tenui, plano, nusquam cohaerente, ad eclipticam inclinato che si traduce in un " anello piatto che non lo tocca ed è inclinato contro l'eclittica. "

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

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

E così, se si dispone di un programma si potrebbe pubblicare un hash del programma che fa qualcosa e poi quando si è pronti a rivelare che (eventualmente dopo le correzioni società o un periodo di tempo più tardi), è possibile pubblicare il codice vero e tutti possono vedere che, sì, questo codice corrisponde a quell'hash.


1
Un bel po 'di storia sull'uso dell'hash prima dell'era digitale :)
mika,

30

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

Ora puoi pubblicare ciphere Pnon S. Pertanto, tutti possono decifrare il ciphercon Pfacendo P(cipher). Se ora vuoi provare che sei tu quello che ha creato cipher(e quindi l'originale text), puoi pubblicare So, se non vuoi che nessuno sappia S, puoi crearne un altro S("I was really the one who found the text first")e pubblicarlo. Perché non c'è modo di creare un codice decrittografato con P(cipher)quel risultato in un testo significativo.

È così che puoi provarlo.


13
In che modo aiuta? Chiunque sia in grado di decrittografare il codice può semplicemente ripubblicare allo stesso modo con la propria chiave segreta e non si ha modo di provare quale parte ha pubblicato per prima e quale ha copiato dall'altra senza fidarsi di un record di terze parti sui tempi di pubblicazione.
R ..

2
@R .. I contenuti su Internet di solito hanno una data associata (ad esempio: post sul forum). Se ci sono più persone che dichiarano di essere gli inventori / scopritori originali, allora basta controllare le date.
Paul,

2
È inoltre possibile includere alcuni contenuti nel testo in chiaro crittografato tramite P (contenuto). Il vero proprietario di S sarà in grado di decrittografare tali informazioni aggiuntive, mentre un reposter non sarà in grado di farlo.
Dancrumb,

10
@Paul: Ma allora la crittografia è irrilevante. È equivalente a pubblicare solo i tuoi contenuti in chiaro e fare affidamento sulla data.
R ..

2
@R .. l'idea è che, senza saperlo S, è molto difficile trovare un pezzo di testo cipher2che P(cipher2)non sia incomprensibile. Con Sesso è banale, come S("the text you want")= cipher2. Fare il contrario equivale a sconfiggere il metodo crittografico.
congusbongus,

21

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

Dal momento che solo l'hash è archiviato sulla blockchain Bitcoin, nessuno può dire quali dati sono stati archiviati, ma dati i dati pre-hash puoi provare che i dati sono stati creati prima del blocco che contiene il pagamento effettuato a quell'indirizzo.


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 pubblicato il giorno gg / mm / aaaa dal proprietario di xxx@gmail.com

Non c'è bisogno di crittografare nulla.

Naturalmente c'è la possibilità che tu non voglia ancora pubblicare i tuoi risultati. In tal caso, è necessario crittografare tutto tranne la riga con l'indirizzo e-mail. Tuttavia, ora potrebbe essere più difficile pubblicarlo su un sito rinomato.


4
Cosa succede se il "sito rinomato" modifica la data o l'e-mail di pubblicazione? Può succedere a causa di cattive intenzioni anche se il sito è stato violato. (Ok, sono abbastanza paranoico qui, ma questo è il punto. Se c'è un modo in cui qualcun altro oltre all'autore originale cambia la prova, allora la tua soluzione non è davvero deterministica). Il punto qui non è fare affidamento solo sui testimoni umani, ma in modo tale che chiunque possa confermare la paternità in un certo modo senza che i tuoi contenuti debbano essere "pubblicati" o "brevettati" da un'entità fidata.
Fagner Brack,

@FagnerBrack, arxiv.org si è dimostrato sufficiente per quasi 1 milione di articoli di ricerca.
Brian S,

1
Posso mettere qualsiasi cosa lì o dovrebbe passare attraverso una revisione tra pari e sarà autorizzata solo con vincoli specifici? Questa domanda non è diretta direttamente ai documenti di ricerca, riguarda la possibilità di ottenere lo stesso risultato (o equivalente) in modo programmatico.
Fagner Brack,

2
Usa archive.org per pubblicare - come arXiv, è un repository affidabile e di lunga durata, ma a differenza di arXiv è libero di caricare contenuti lì. Il timestamp su qualsiasi cosa pubblichi lì sarebbe considerato molto affidabile.
Steve Midgley,

1
Sono d'accordo, la fama è l'unico modo per diffondere la conoscenza in modo rapido e affidabile.
bigstones,

0

Questa è una versione diversa della 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. Crittografi la tua idea con la tua chiave pubblica: P (idea)
  3. Metti P (idea) da qualche parte di cui ti fidi (non da te, ma in generale) e registrerai il tempo.
  4. Quando devi dimostrare di aver creato l'idea per prima, ottieni il timestamp da quando hai archiviato i dati e decifrali 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 dovresti distribuire incautamente chiavi segrete se vuoi essere credibile.

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

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


-1

Ugh, molte di queste risposte mancano di punto.

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

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

Ciò che l'hacker ha fatto è stato pubblicamente firmare il documento di rilascio. Quando PGP firma qualcosa (un'e-mail, un documento word, ecc.), Si crea un hash che è la somma dell'hash del documento che si sta firmando e la propria chiave privata. Ora, per dimostrare che sei il creatore del documento, devi solo "mostrare" la chiave privata, poiché presumibilmente solo l'autore lo sa. Dal punto di vista crittografico, puoi "dimostrare" di essere in possesso della chiave privata senza effettivamente mostrare 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'è nulla da dire che il documento è stato realizzato oggi, o ieri, o è stato il primo esempio di esso mai esistito. Nessuna quantità di timestamp di hashing o altro lo cambierà.

L'unico modo per firmare digitalmente qualcosa IN TIME, è usare la blockchain alla bitcoin. Non ci potrebbe essere valuta digitale senza la verifica del tempo - il fatto che la persona A abbia inviato denaro alla persona B è irrilevante se non sappiamo quando. Non puoi andare 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 i soldi ti appartengano ancora. Nel frattempo potresti averlo dato a qualcun altro. La blockchain risolve questo problema facendo in modo che un gran numero di persone (minatori di bitcoin) concordino sul fatto che la transazione è avvenuta in un determinato momento (e quindi registrando quel tempo nella blockchain per sempre).


2
questo non sembra offrire nulla di sostanziale rispetto ai punti formulati e spiegati nelle precedenti 6 risposte (in particolare, molto è stato scritto sul timestamp affidabile, e l'approccio bitcoin era già stato presentato)
moscerino del
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.