¿Existe algún patrón de algoritmo para proteger cualquier contenido en la web para garantizar que soy el primero que lo creó?

29

Hace unos años hubo un pirata informático (no recuerdo quién era) que reveló por completo una vulnerabilidad en un sistema determinado, pero para asegurarse de que nadie se atribuyera eso, creó algún tipo de clave PGP.

Lo que entendí en ese momento es que él creó una clave para asegurarse de que él fue quien la descubrió, pero no reveló quién era en realidad, solo creó un mecanismo para poder probar que él fue quien creó la divulgación. .

Okay. Entiendo cómo funcionan los algoritmos y la criptografía. ¡Pero todavía no entiendo cómo puede crear una clave para proteger un contenido dado revelado en la web para demostrar que usted fue quien lo creó primero! ¡Son solo palabras!

¿Es realmente posible? ¿Cuál debería ser el proceso para garantizar que pueda probarlo empíricamente? ¿Lo entendí correctamente o probablemente me perdí algo con respecto a este caso?

Espero que esta pregunta sea lo suficientemente específica, básicamente es solo cómo proteger un contenido que creaste en la web (un párrafo, un código, una palabra, etc.) y asegurarte de que eres tú quien lo creó primero, dentro de un contexto dado

Con mi conocimiento, no veo cómo eso es posible, pero estoy intrigado si hay una forma práctica de hacerlo. ¿Esta ahí?

Fagner Brack
fuente
9
¿Tal vez preguntar en crypto.stackexchange.com sería una mejor idea?
Eufórico
55
@FagnerBrack - No copie / pegue. Solo marque la pregunta para la migración 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!Hay una diferencia entre demostrar que creaste algo y demostrar que fuiste el primero en crear algo. La clave PGP puede probar que el hacker envió el informe de vulnerabilidad. No hay garantía de que la vulnerabilidad no haya sido descubierta o informada antes que él, pero al menos puede demostrar que la había denunciado en una fecha determinada.
Doval
2
Hubo una historia sobre un matemático que descubrió una prueba y aún no quería publicarla, pero tampoco quería que alguien más obtuviera crédito. Entonces, en cambio, publicó las letras de las oraciones de la prueba ordenadas alfabéticamente. Olvidé cómo se llamaba.
Paul
3
@Paul - ese sería Robert Hooke, Hooke's Law en.wikipedia.org/wiki/Hooke's_law
James McLeod

Respuestas:

1

¿Probablemente me perdí algo sobre este caso?

Creo que lo que te falta es una entidad confiable.

Cuando hash el archivo con el contenido que desea certificar, puede mostrar al mundo que usted es el propietario de este documento, sin revelarlo. Todo esto está muy bien, pero ¿cómo puede probar que tuvo este documento en algún momento específico en el pasado?

De esto se trata Trusted Timestamping. Aquí hay un extracto de Wikipedia :

La técnica se basa en firmas digitales y funciones hash. Primero se calcula un hash a partir de los datos. Un hash es una especie de huella digital de los datos originales: una cadena de bits que es diferente para cada conjunto de datos. Si se cambian los datos originales, esto dará como resultado un hash completamente diferente. Este hash se envía a la TSA *. La TSA concatena una marca de tiempo en el hash y calcula el hash de esta concatenación. Este hash se firma digitalmente con la clave privada de la TSA. Este hash firmado + la marca de tiempo se envía de vuelta al solicitante de la marca de tiempo que los almacena con los datos originales (ver diagrama).

(*) Autoridad de sellado de tiempo

He estado utilizando el servicio de sellado de tiempo de Universign, que tiene un buen conjunto de herramientas para hacer que toda la operación sea fácil de realizar. Hay muchas compañías que ofrecen servicios similares.

Es interesante notar que, como mencionó @JoelFan, que bitcoin proporciona una forma de obtener una entidad confiable que no está centralizada (¿por qué debería confiar en alguien?). La cadena de bitcoin proporciona una línea de tiempo (puede probar que un documento incrustado en la cadena de bitcoin se creó antes que otro más abajo en la cadena). Sin embargo, a mi entender, aún se perdería la fecha y hora efectiva del evento.

Además, Trusted Timestamping es una referencia válida en litigios.

mika
fuente
2
Hay fechas y horas incrustadas en los encabezados de bloque en bitcoin ... aunque el protocolo no las aplica, generalmente se confía en que sean al menos precisas (es decir, dentro de 1 día de precisión) ... también es posible inspeccionar toda la cadena de bloques desde el bloque en cuestión hasta hoy para asegurarse de que las fechas y las horas estén aumentando monotónicamente
JoelFan
Lamento tardar demasiado en aceptar una respuesta. El hacker probablemente usó una entidad confiable, no pude encontrar una manera razonable de proteger la autoría del contenido sin una entidad confiable.
Fagner Brack
39

Antiguamente, los científicos publicaban anagramas de su trabajo para poder decir "Pensé en esta idea". (mire las secciones de 'historia' y 'establecimiento de prioridades'). La cuestión es que querían poder atribuirse el crédito, pero también darles a otros científicos que publiquen sus resultados si tenían otras ideas sin construir sobre la idea original. .

Por ejemplo, Gallileo publicó SMAISMRMILMEPOETALEVMIBVNENVGTTAVIRAS, que era un anagrama de altissimvm planetam tergeminvm obseravi que traducido del latín dice " Observé el planeta más alto en tres formas". Se equivocó: Saturno (el planeta "más alto" conocido en ese momento) no está formado por tres partes. Cincuenta años más tarde, Christiaan Huygens publicó AAAAAAA CCCCC D EEEEE H IIIIIII LLLL MM NNNNNNNNN OOOO PP Q RR S TTTTT UUUUU que en latín es Annulo cingitur, tenui, plano, nusquam cohaerente, ad eclipticam inclato que se traduce como "Está rodeado por una delgada delgada". anillo plano que no lo toca y está inclinado contra la eclíptica ".

Si bien esos son fragmentos históricos que ahora son de interés, muestran un concepto importante en ese momento: proporcionar un 'hash' que es fácil de decir "este hash codifica este texto". Es fácil pasar del texto conocido al anagrama o al hash, pero es difícil descubrir qué es si no sabes qué es en primer lugar.

Con los mecanicistas modernos, tenemos otras formas de hacer hashes. Muchos de ellos están muy relacionados con la criptografía. Existe la función hash criptográfica . La idea es, sin embargo, que es fácil pasar del texto que conoce al hash, pero es difícil pasar del texto al hash que no conoce.

Y así, si usted tiene un programa que podría publicar un hash del programa que hace algo y luego, cuando usted está listo para revelarla (posiblemente después de las correcciones de la empresa o de un período de tiempo más adelante), puede publicar el código real y todos pueden ver que sí, este código coincide con el hash.


fuente
1
Muy buena historia sobre el uso de hash antes de la era digital :)
mika
30

Puedes hacerlo bastante fácil. Si tiene un texto sin formato text, una clave secreta Sy una clave pública, Plo hace S(text)y obtiene el cipher.

Ahora puedes publicar ciphery Pno S. Por lo tanto, todos pueden descifrar el ciphercon Phaciendo P(cipher). Si ahora quiere demostrar que usted fue quien creó el cipher(y, por lo tanto, el original text), puede publicarlo So, si no quiere que nadie conozca S, puede crear otro S("I was really the one who found the text first")y publicarlo. Debido a que no hay forma de crear un cifrado que se descifre con P(cipher)eso, se obtiene un texto significativo.

Así es como puedes probarlo.

valenterry
fuente
13
¿Cómo ayuda esto? Cualquiera que pueda descifrar el cifrado puede volver a publicar de la misma manera con su propia clave secreta y no tiene forma de probar qué parte publicó primero y cuál copió de la otra sin confiar en un registro de tiempo de publicación de terceros.
R ..
2
@R .. El contenido en Internet generalmente tiene una fecha asociada (por ejemplo, publicaciones en el foro). Si hay varias personas que afirman ser los inventores / descubridores originales, simplemente verifique las fechas.
Paul
2
También puede incluir algún contenido en el texto sin formato que se cifra mediante P (contenido). El verdadero propietario de S podrá descifrar esa información adicional, mientras que un repositorio no podrá hacerlo.
Dancrumb
10
@Paul: Pero entonces el cifrado es irrelevante. Es equivalente a simplemente publicar su contenido de texto sin formato y confiar en la fecha.
R ..
2
@R .. la idea es que, sin saberlo S, es muy difícil encontrar un texto cipher2que P(cipher2)no sea galimatías. Con Sesto es trivial, como S("the text you want")= cipher2. Hacer lo contrario equivale a derrotar el método criptográfico.
congusbongus
21

Es posible mezclar los datos que desea marcar con el tiempo y convertirlos en una dirección de Bitcoin. Esto se conoce como marca de tiempo confiable . Al hacer un pequeño pago (un satoshi o 0.00000001 BTC), el pago se almacena en la cadena de bloques junto con la dirección a la que pagó.

Dado que solo el hash se almacena en la cadena de bloques de Bitcoin, nadie puede decir qué datos almacenó, pero dados los datos pre-hash puede probar que los datos se crearon antes del bloque que contiene el pago realizado a esa dirección.

JoelFan
fuente
1

Una manera muy simple de establecer que eres el primero en publicar algo, sin revelar quién eres de inmediato, pero teniendo la opción de hacerlo más tarde:

  1. Publíquelo en una fuente pública conocida (allí todos pueden ver que lo publicó)
  2. En esta publicación, agregue una línea: Publicado originalmente en dd / mm / aaaa por el propietario de [email protected]

No es necesario encriptar nada.

Por supuesto, existe la posibilidad de que aún no desee publicar sus resultados. En ese caso, debe cifrar todo excepto la línea con la dirección de correo electrónico. Sin embargo, ahora puede ser más difícil publicar esto en un sitio de renombre.

Dennis Jaheruddin
fuente
44
¿Qué sucede si el "sitio reconocido" cambia la fecha o el correo electrónico de publicación? Puede suceder debido a malas intenciones, incluso si el sitio está pirateado. (Ok, estoy siendo bastante paranoico aquí, pero ese es el punto. Si hay una forma en que otra persona además del autor original cambia la prueba, entonces su solución no es realmente determinista). El punto aquí no es confiar solo en testigos humanos, sino de una manera que cualquiera pueda confirmar la autoría de cierta manera sin que su contenido tenga que ser "publicado" o "patentado" por una entidad confiable.
Fagner Brack
@FagnerBrack, arxiv.org ha demostrado ser suficiente para casi 1 millón de trabajos de investigación.
Brian S
1
¿Puedo poner cualquier cosa allí o debería pasar por una revisión por pares y solo se autorizará bajo restricciones específicas? Esta pregunta no está dirigida directamente a trabajos de investigación, se trata de la posibilidad de lograr el mismo resultado (o equivalente) de manera programática.
Fagner Brack
2
Use archive.org para publicar, como arXiv, es un repositorio confiable y de larga duración, pero a diferencia de arXiv, es gratis cargar contenido allí. La marca de tiempo en cualquier cosa que publique allí se consideraría muy confiable.
Steve Midgley
1
Estoy de acuerdo, la fama es la única forma de difundir el conocimiento de manera rápida y confiable.
Bigstones
0

Esta es una versión diferente de la respuesta de Valenterry.

Así es como lo haría con PGP:

Genere un par de claves pública / privada.

  1. Mantiene la clave privada y se asegura de que permanezca en secreto.
  2. Cifras tu idea con tu clave pública: P (idea)
  3. Pones P (idea) en algún lugar de confianza (no por ti, sino en general) y registrará la hora.
  4. Cuando necesita probar que hizo la idea primero, obtiene la marca de tiempo de cuando almacenó los datos y descifra sus datos con su clave secreta. S (P (idea)) => idea

Este método no requiere liberar su clave secreta, que en general es una mala idea. De acuerdo, siempre puedes hacer un nuevo par de claves PGP: no cuesta nada, pero no debes entregar imprudentemente claves secretas si quieres ser creíble.

La parte más difícil es probar el tiempo, pero en términos de documentar una vulnerabilidad, no necesitamos una solución 100% a prueba de balas y verificable en la corte, solo necesitamos algo que sea 'suficientemente bueno'. Los registros de un proveedor de almacenamiento en la nube (dropbox, rackspace, google, etc.) probablemente sean lo suficientemente buenos, suponiendo que implementen un servicio seguro.

También vale la pena señalar que ser el primero con una idea y su marca de tiempo nunca ha significado que haya sido la primera persona en pensar en la idea. Si alguien lo pensó antes que usted pero nunca registró la idea con un mecanismo de marca de tiempo, entonces no puede demostrar que lo hizo antes que usted. Entonces, si estamos tratando de descubrir quién lo hizo primero, y todo lo que sabemos es el momento en que se le ocurrió, entonces debemos suponer que se le ocurrió primero (la otra persona podría estar mintiendo).

Shaz
fuente
-1

Ugh, muchas de estas respuestas están perdiendo el punto.

1) Lo que hizo el hacker no tuvo nada que ver con el cifrado.

2) Lo que hizo el hacker no tuvo nada que ver con el tiempo (la marca de tiempo, etc.)

Lo que hizo el hacker fue firmar públicamente el documento de lanzamiento. Cuando PGP firma algo (un correo electrónico, un documento de Word, etc.), crea un hash que es la suma del hash del documento que se firma y su propia clave privada. Ahora, para demostrar que usted es el creador del documento, solo necesita "mostrar" la clave privada, ya que presumiblemente solo el autor lo sabe. Hablando criptográficamente, puede "demostrar" que posee la clave privada sin mostrar la clave en sí.

Entonces, en efecto, firmó digitalmente el documento. La única persona que puede copiar esa firma es alguien con su clave privada. No hay nada que decir que el documento se hizo hoy, o ayer, o que fue la primera instancia en existir. Ninguna cantidad de marcas de tiempo de hashing o lo que sea que cambie eso.

La única forma de firmar digitalmente algo A TIEMPO es usar blockchain a la bitcoin. No podría haber moneda digital sin verificación de tiempo: el hecho de que la persona A haya enviado dinero a la persona B es irrelevante a menos que sepamos cuándo. No puede ir a una tienda con un trozo de papel y decir "mi madre me envió $ 100 una vez. Me gustaría comprar un poco de pan", porque un recibo de una transacción no significa que el dinero todavía le pertenece. Es posible que se lo haya dado a otra persona en el ínterin. La cadena de bloques resuelve este problema al lograr que un gran número de personas (mineros de bitcoins) estén de acuerdo en el hecho de que la transacción se realizó en un momento determinado (y luego registrando ese tiempo en la cadena de bloques para siempre).

JJ
fuente
2
esto no parece ofrecer nada sustancial sobre cuestiones planteadas y se explica en 6 respuestas anteriores (en particular, mucho se escribió sobre el sellado de tiempo de confianza, y bitcoin enfoque ya se presentó)
mosquito