¿Cómo se puede verificar la autenticidad del texto sin servicios de terceros?

3

Hay una persona que quiere establecer un sistema que le permita publicar textos en cualquier lugar y hacer que sea verificable que sea el verdadero origen de ese texto. Solo el primer mensaje no es verificable pero establecerá el sistema.

Ejemplo:

"Hola, soy la Sra. X y te voy a silbar algunas cosas interesantes. Para evitar compromisos y demostrar que un texto que puedas encontrar en cualquier lugar de la web es mío, usaré el siguiente método ..."

Algo que me viene a la mente es esto:

1) Crear par de claves

2) Publique el privado y mantenga la clave pública en secreto

3) Anuncie: el siguiente texto tendrá la Base64 del texto encriptado "qué maravilloso día" debajo de él.

4) La próxima vez: publique el mensaje: anuncie el siguiente texto de verificación que se encuentra, cifre el texto "qué día tan maravilloso" con la clave pública y baséelo en 64 - póngalo debajo del mensaje.

Ahora, si alguien quiere verificar, descifrarán el texto de la verificación utilizando la clave privada conocida, etc.

¿Funcionaría algo como esto? ¿O hay un método simple establecido?

Posibles vectores de ataque: - Intercambio de clave privada publicada. - use Base64 (cifrado (TEXTO)) segundos después del verdadero texto publicado y haga que no se pueda distinguir cuál es el verdadero

    
pregunta Raffael 15.12.2013 - 17:58
fuente

3 respuestas

2

Está utilizando la analogía "cifrar con la clave privada". No hagas eso, solo provocará confusión.

Lo que quieres es un esquema de firma digital . Dicho esquema consta de tres algoritmos:

  • Generación de claves: este algoritmo produce un nuevo par de claves, con una clave pública Kp y una clave privada K s . La clave pública, como su nombre lo dice, se puede hacer pública , es decir, se revela al mundo en general, y esto no revela la clave privada (aunque la clave privada todavía está matemáticamente vinculada a la clave pública). ).

  • Generación de firmas: dado un mensaje m , se produce una firma s , utilizando la clave privada K < sub> s .

  • Verificación de firma: aparece un mensaje m , un valor de firma s y la clave pública K p , el algoritmo de verificación devuelve "verdadero" o "falso", dependiendo de si la firma coincide con el mensaje para esa clave pública o no.

La firma es sonido si lo que produce el algoritmo de generación de firma es declarado válido por el algoritmo de verificación de firma. La firma es segura si no es factible, sin saber Ks , para producir un par (m, s) que el algoritmo de verificación declarará válido para la clave pública Kp .

Desafortunadamente, cuando se describió el primer algoritmo de firma viable, se dijo que la idea del algoritmo era "cifrado asimétrico al revés": la firma se generó al "cifrar el mensaje con la clave privada" "(o, de manera equivalente, intercambiando claves privadas y públicas, es decir, haciendo que la clave privada sea pública y viceversa). Esto fue desafortunado porque:

  • No todos los algoritmos de firma se pueden ver como "cifrado asimétrico invertido". Esta analogía solo funciona para RSA.
  • De hecho, la analogía tampoco funciona para RSA; funciona solo para el núcleo matemático de RSA, pero no con el "RSA completo", que también incluye elementos como el relleno, que son cruciales para la seguridad pero rompen la analogía del "cifrado inverso".

La descripción del "cifrado a la inversa" es una forma generalizada de "explicar firmas" y, al hacerlo, difunde la confusión. No caigas en esa trampa.

Un algoritmo de firma parece corresponder con lo que estás imaginando. El autor incluiría su clave pública en el primer mensaje. Luego, cada mensaje posterior se firmará con la clave privada correspondiente, y todos podrán verificar esa firma en relación con la clave pública en el primer mensaje.

Sin embargo, tenga en cuenta que la autoría es la combinación de dos conceptos:

  • Responsabilidad: "Sí, estoy dispuesto a afirmar que escribí estas palabras y estaré sujeto a ellas".
  • Exclusividad: "Todas las demás personas que afirman haber escrito estas palabras son mentirosos asquerosos".

Una firma asegurará ambas cosas solo si las personas tienen una manera de asegurarse de que lo que ven como "primer mensaje" es realmente el primer mensaje verdadero, es decir, contiene la clave pública correcta. Otra persona que Y quería reclamar la autoría de los mismos textos podría publicar su propio "primer mensaje" con su propia clave pública y firmar (con su propia clave privada) lo que X publique. El público en general tendrá dificultades para descubrir quién escribió el texto primero . Para establecer una verdadera autoría (en ese sentido), se pueden utilizar timestamps (además de las firmas, no las reemplazamos) .

    
respondido por el Thomas Pornin 23.12.2013 - 15:47
fuente
3

Puede usar esquemas de compromiso como las cadenas hash de una vía o los árboles Merkle para este propósito para proporcionar autenticación.

    
respondido por el jingyang 16.12.2013 - 06:13
fuente
3

Parece que hay un malentendido considerable aquí.
En el cifrado asimétrico, la clave privada DEBE mantenerse privada (por definición), y la clave pública debe publicarse (nuevamente, por definición).

Parece que lo que está buscando es una firma digital , que funciona en base a ese esquema simple.

En pocas palabras, una firma digital toma un hash de los datos que desea firmar, luego realiza un "cifrado" asimétrico en el hash, usando la tecla private . Para la validación, cualquier otra persona puede descifrar el hash cifrado, utilizando la clave pública del autor, tomar un hash nuevo de los datos recibidos y comparar los hashes.
Esto garantiza que los datos no se hayan cambiado desde que abandonó el autor (integridad) y que el autor es el propietario de la clave privada correspondiente (autenticidad).

De Wikipedia:

  

Una firma digital es un esquema matemático para demostrar la autenticidad de un mensaje o documento digital. Una firma digital válida le da al destinatario un motivo para creer que el mensaje fue creado por un remitente conocido, por lo que el remitente no puede negar haber enviado el mensaje (autenticación y no repudio) y que el mensaje no se modificó en tránsito (integridad).

Entonces, asumiendo que tiene una manera de iniciar este escenario, publicando de manera segura su clave pública (y sí, esta es la parte difícil), es muy sencillo implementar el esquema que está buscando. (Solo recuerde utilizar un algoritmo estándar, no intente implementar esto usted mismo ...)

    
respondido por el AviD 23.12.2013 - 11:23
fuente

Lea otras preguntas en las etiquetas