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í.