¿Qué esquemas de encriptación requieren dos o 3 claves privadas para leer un mensaje?

4

Me gustaría cifrar algunos datos para que solo se puedan leer si dos o tres personas usan un secreto privado para descifrar los datos.

  

¿Cuál es la forma mejor / más moderna de lograr el descifrado de varias personas?

Algunos pensamientos en los que estoy pensando

  • X personas tiene N caracteres de una contraseña que tiene X * N caracteres de longitud

  • Vuelva a cifrar el mensaje con PGP o con algún PKI / RSA, etc.

  • Una mezcla de lo anterior ...

La amenaza contra la que quiero evitar es el descifrado o la modificación forzados de un mensaje cifrado sin la presencia de todas las partes.

    
pregunta random65537 22.03.2012 - 18:31
fuente

2 respuestas

6

Hay el intercambio secreto de Shamir , pero no involucra a PKI. Más bien, es más como asegurarse de que todas las contraseñas deben estar involucradas para desbloquear el secreto. El secreto, en este caso, podría ser una clave singular (privada o simétrica).

No conozco ninguna implementación ampliamente aceptada del esquema, aparte de los pocos éxitos que obtienes de Google.

    
respondido por el logicalscope 22.03.2012 - 21:21
fuente
5

Respuesta corta
Utilice el XOR de varias claves como la clave de cifrado real. Entregue cada una de esas claves a las partes. Para descifrar, cada uno debe revelar su clave, XOR todos los valores juntos, descifrar.

Respuesta larga

  • X personas tienen N caracteres de una contraseña que tiene X * N caracteres de longitud

El problema con este esquema es que si las personas X-1 se juntan, solo necesitan la fuerza bruta de N caracteres (la última parte del recurso compartido). Dependiendo de sus parámetros, esto podría ser alcanzable.

Lo que realmente quieres es un método en el que si menos de X personas intentan descifrar, no tienen información adicional sobre la clave de cifrado secreta. Una forma fácil de lograr esto sería dar a cada una de las partes X una cadena de caracteres X * N que es completamente aleatoria. A continuación, establezca la clave de cifrado secreta al XOR de estas cadenas. Si las partes de X-1 intentan descifrar, deberán forzar una cadena aleatoria de caracteres X * N, lo que no sería factible si establece los parámetros correctamente (por ejemplo, X * N tiene una longitud de 128 bits y utiliza AES-128 para el cifrado).

  • Vuelva a cifrar el mensaje con PGP o con algún PKI / RSA, etc.

PKI nunca debe usarse para cifrado masivo (cifrar un mensaje largo). La PKI se usa normalmente (en este escenario) para distribuir una clave.

Ahora, supongamos que modifica esto para usar PKI para distribuir X claves secretas de longitud X * N (igual que arriba). Luego, envía C = E (K1, E (K2, E (... E (Kn, M)))). Esto funcionaría, pero la sobrecarga computacional es bastante grande si n es grande. Para 2 o 3 partes, esto probablemente estaría bien.

Descifrado de umbral

Lo anterior solo es válido si requiere que todas las X personas estén presentes para descifrar. ¿Qué pasaría si solo lo quisieras de tal manera que t fuera de X? Esto es cuando podría usar Shamir Secret Sharing (vea la respuesta de logicalscope).

Tenga en cuenta que Shamir Secret Sharing funcionará si t == X, pero no es tan simple como el método que describí.

    
respondido por el mikeazo 23.03.2012 - 01:37
fuente

Lea otras preguntas en las etiquetas