Secret Santa: implementación que no requiere que un participante confíe en el servidor

3

En el espíritu navideño leí Cryptographic Secret Santa de MathOverflow, y luego seguí el enlace a otro página titulada Cryptographic Secret Santa .

En esta última página, el autor explica un algoritmo que usaría para asignar Secret Santas sin necesidad de confianza a una autoridad central.

Al final, sin embargo, el autor escribe:

  

Aunque es factible que este mecanismo, utilizado por un grupo de amigos piratas informáticos, se implemente con herramientas de línea de comandos (pgp, ssh-keygen) y listas de correo electrónico para publicación. Es muy recomendable tener algún tipo de aplicación (web). aplicación) para que sea más fácil para los amigos que no son hackers unirse al juego.

Ahora, cuando llegamos a la noción de aplicación web, la ausencia de la necesidad de confiar desaparece de la ventana: tendrá que confiar en la aplicación web. Incluso si tiene el código fuente, no puede estar seguro de que la aplicación web esté compilada a partir de la misma versión del código fuente disponible para usted.

En este punto, salgamos del ámbito de lo práctico y consideremos el caso puramente teórico. Supongamos que todos los clientes realizan su propio cifrado, descifrado, firma y verificación, por lo que no necesitan confiar en el servidor.

En este caso teórico, la idea descrita en el artículo podría funcionar, pero hay al menos un problema que puedo detectar.

  

Para asegurarse de que este proceso sea correcto donde cada participante tenga una y solo una clave pública anónima publicada. El número de claves debe ser igual al número de participantes, y cada uno debe confirmar que él / ella ha publicado la clave y que se encuentra en la lista (aunque nunca señala cuál es).

     

Al final de la publicación, debemos tener una lista asociada con las claves públicas de identidad y los nombres de los participantes, y una lista separada de claves públicas anónimas que solo cada participante sepa cuál es su clave pública, pero no la otros.

De esta manera, parece que las claves deben enviarse de forma anónima, pero luego una parte anónima puede proporcionar claves redundantes y no habrá manera de saber qué claves son legítimas y cuáles son enviadas por un participante malintencionado. Tenga en cuenta que una persona que fue invitada a participar legítimamente todavía puede enviar varias claves anónimas de manera malintencionada, y nadie lo sabría, es decir, si al servidor no se le puede confiar la información de qué clave anónima es

Como tal, parece que esto desglosa todo el algoritmo propuesto.

Preguntas:

  • ¿Mi razonamiento es bueno y el algoritmo no es bueno en el sentido de que no hay forma de confiar en la aplicación web si la usamos como se describe?
  • ¿Existe una "solución fácil" que permita que funcione?
pregunta Andrew Savinykh 19.12.2017 - 06:29
fuente

1 respuesta

0

Siempre necesita una forma segura de distribuir claves públicas. Creo que el documento asume que eres capaz de hacer esto.

Sin embargo, tener ese mecanismo no significa que pueda confiar en una sola entidad. Puedes confiar en que te dé mi clave pública, pero no confías en mí para no manipular el secreto de santa. Por eso, esto sigue siendo útil: confías en que cada persona te pase sus claves públicas, pero esta es la única confianza que debes tener.

    
respondido por el Hector 19.12.2017 - 10:02
fuente

Lea otras preguntas en las etiquetas