Pregunta

Supongamos que un grupo quiere cifrar cierta información y luego comparte la clave de cifrado entre los miembros del grupo de una manera que requiere el consenso del grupo para descifrar la información.Me interesan una variedad de escenarios donde la amplitud del consenso varía desde la unanimidad hasta la mayoría absoluta.Una técnica útil puede aplicarse a claves simétricas, claves privadas o ambas.

Podría intentar implementar mi propio método, como estoy seguro que muchos miembros de SO podrían hacerlo.Pero a los efectos de esta pregunta, me interesa solo en métodos que han sido ampliamente publicados y han resistido el escrutinio de criptoanalistas expertos.Las citas de revistas son buenas, pero la interpretación de fuentes académicas también es muy útil.

¿Fue útil?

Solución

Siempre me ha fascinado esta técnica de compartir secretos.He visto código que lo implementa en Internet, pero nunca he visto aplicaciones reales. El secreto compartido de Shamir El artículo de Wikipedia enlaza con algún código real, así como con el artículo académico original.

Otros consejos

Lo que usted describe suena mucho a "división secreta" (Sección 12.1.Introducción a la criptografía.Trappe y Washington.2ª ed) La idea básica es que puedes crear un polinomio que incluya tu "secreto" (una clave) como un punto en la recta.Puedes repartir "acciones" eligiendo otros puntos de este polinomio.Dos puntos definen una recta de la forma f(x) = ax + b, tres puntos definen un polinomio de la forma f(x) = ax^2 + bx + c, y cuatro puntos definen algo de la forma f(x) = ax^3 + bx^2 + cx + d, y así sucesivamente.Puedes elegir un polinomio que incluya tu secreto como un punto y un grado para el polinomio suficiente para que N personas puedan reconstruirlo.

Ésta es la idea básica que se conoce como el "esquema del umbral de Shamir".

Ver wikipedia en División secreta y El secreto compartido de Shamir La página de Wikipedia tiene algunos enlaces a implementaciones de esta idea, incluido el código GPL para ventanas y UNIX.

Esto es fácil de implementar con códigos de corrección de errores.Podrías utilizar una herramienta de línea de comandos como par2 (que por cierto no es exactamente apropiado para este propósito específico, ya que genera bloques de recuperación de diferentes tamaños).Digamos que tiene (n+m) votantes y desea un quórum de n votos.Generas n claves privadas K₁∘, K₂, ...Kn, y generar m bloques ECC adicionales Pₓ del mismo tamaño.De esa manera, n bloques son suficientes para reconstituir el cifrado K₁∘K₂∘...∘Kn

Vaya aquí para una discusión sobre la base matemática del intercambio secreto de Shamir y una breve discusión sobre el tipo de aplicaciones prácticas que tiene.Desplácese hacia abajo en la página hasta las notas de la conferencia sobre polinomios e intercambio de secretos.Probablemente sea una v.descripción general básica de la zona, pero debería ser bastante interesante para usted.Notas de matemáticas discretas

Lotus Notes proporciona una implementación práctica de 'Contraseñas de silo' mediante la cual el acceso a algún recurso (datos/información/documento) se bloquea en una 'identificación compartida' - La identificación (parte de un sistema PKI certificado, creo que basado en RSA) está configurada con 2 o más (creo que hasta 16) contraseñas de usuario individuales.El certificador/administrador establece un esquema según el cual cualquier número de contraseñas de las disponibles o todas las contraseñas son necesarias para "abrir" la identificación para su uso activo.Este proceso se usa comúnmente para bloquear certificados de organización u OU para que 2 de 5 o 3 de 5 administradores/funcionarios corporativos otorguen acceso y así garantizar que se pueda controlar el uso/acceso a certificados de alto nivel y se evite el personal administrativo ausente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top