Con GPG, ¿puede la tercera parte verificar que el mensaje se haya cifrado con una clave pública específica?

0

Bob está enviando el mensaje X a Alice. Encripta X con la clave pública de Alice usando gpg y envía su mensaje encriptado (texto cifrado).

Más tarde, Alice afirma que Bob cometió un error y que el texto cifrado no se creó con su clave pública.

¿Puede Bob demostrar a un tercero que el mensaje cifrado está de hecho cifrado con la clave pública de Alice?

El mensaje cifrado resultante es diferente cada vez que el mensaje X es igual ( ¿Encriptar el mismo archivo con GnuPG y la misma clave producirá el mismo texto cifrado? ) para que el tercero no pueda simplemente cifrarlo De nuevo y comapre los resultados. ¿Hay alguna otra manera?

Si es posible, indique cómo ejecutar esto en el software existente.

EDITAR: Alice no está cooperando. X puede ser revelada a un tercero (pero mejor si es posible sin)

    
pregunta urza.cc 09.12.2018 - 17:31
fuente

3 respuestas

2

No.

Si no conoce la clave privada, no hay forma de verificar si un mensaje cifrado con PGP está encriptado con una clave pública específica, incluso si se conoce el mensaje de texto simple.     

respondido por el Moonsik Park 09.12.2018 - 17:53
fuente
1

Tal vez más o menos.

El paquete pk-encrypted-sk en PGP (consulte rfc4880 5.1 ) normalmente contiene el 64- bit 'long' keyid de la clave del destinatario; esto tiene la intención de ayudar al destinatario a usar la clave de descifrado correcta si tiene más de una, y ayudar al destinatario a identificar qué paquete de etiqueta-1 (si corresponde) es para ellos en un mensaje cifrado para múltiples destinatarios. Puede suprimirse sustituyendo el cero si se desea. Esto puede ser mostrado por cualquier número de herramientas de análisis / depuración de PGP, incluyendo gpg --list-packets .

Si se acusa a Bob de cometer un error, no de haber engañado o haber mentido sobre el envío del mensaje, y no usó --hidden-recipient o similar de GnuPG, probablemente sea suficiente. Si se acusa a Bob de cometer un delito (incluso contributivo), podría ser útil que, cuando se enviara el mensaje (o al menos antes de cualquier disputa) lo firmara, lo hubiera marcado la TSA, o ambas cosas, pero tendría que ser más Específico sobre el caso o rango de posibles casos a ser manejados. (ObSecStack: ¿cuál es tu modelo de amenaza?)

Suponiendo que el blob de la tecla aún esté disponible o se pueda obtener, por ejemplo. desde un servidor de claves, esto casi "prueba" qué clave utilizó Bob. Actualmente es difícil, pero no imposible, generar una clave falsa (segunda preimagen) para un keyid largo. (Es fácil para los keyids 'cortos' de 32 bits que se usan a menudo para la selección o 'verificación' de manual , consulte enlace . ) Es práctico generar colisiones para 64 bits, pero eso requeriría que Alice se confunda a sabiendas en una afirmación falsa; ver más arriba sobre el modelo de amenaza.

Sin embargo, eso no constituye una prueba de que la clave utilizada fue (o aún lo es) de Alice; es muy posible que Bob haya cometido un error. ¿Qué razón o evidencia usó para elegir esa clave para cifrar?

  • Tener una llave con el nombre de Alice NO es una prueba de que sea su clave, son triviales de falsificar.

  • Tener una clave con el nombre de Alice que fue firmada por otras partes confiables es una mejor evidencia, pero no absoluta: con suficiente esfuerzo, alguien podría haberse hecho pasar por Alicia para que se firmara una clave falsa.

  • Incluso si Alice realmente le dio a Bob esta clave, ¿puede probar (1) que lo hizo y (2) después de eso, en todo momento lo mantuvo en el dispositivo o en el almacenamiento que nadie más podría haber manipulado? ?

Nota: similar a ¿Es posible probar qué clave pública se utilizó para cifrar un mensaje? que cubre un rango más amplio que solo PGP.

    
respondido por el dave_thompson_085 10.12.2018 - 07:58
fuente
-1

Descargo de responsabilidad: esta respuesta es incorrecta, tal como se describe en los comentarios a continuación.

Tengo que contradecir parcialmente la respuesta de Moonsik Park.

Si Bob todavía tiene el texto simple de X, y el tercero (Theo) conoce la clave pública de Alice, Bob puede entregar X a Theo, y Theo puede cifrar X con la clave pública de Alice y comparar los resultados con el texto cifrado Bob envió a Alice.

Sin embargo, usted afirma que Alice no está cooperando, por lo que Alice siempre puede afirmar que el mensaje que recibió no es el que Bob afirma haber enviado. A menos que haya una prueba externa de que el texto cifrado que Bob afirma haber enviado es idéntico al que recibió Alice, realmente no hay forma de validar que Alice haya recibido ningún mensaje específico, o incluso ningún mensaje.

    
respondido por el WolfgangGroiss 10.12.2018 - 11:34
fuente

Lea otras preguntas en las etiquetas