Para completar la respuesta de @Terry:
El intercambio secreto de Shamir funciona con valores en un campo determinado (el concepto matemático). En la práctica, si acepta que no realizará más de 255 recursos compartidos (es decir, 1 < k & leq; n & leq; 255 ), entonces es conveniente trabajar en GF (256) , el campo con 256 elementos. Esto significaría que realmente compartes cada byte independientemente de los demás, y por lo tanto puedes "compartir" cualquier secreto que encaje en una secuencia de bytes (así que, realmente, cualquier cosa que encaje) un ordenador). Y es bastante eficiente.
Como cada recurso compartido tiene la misma longitud que los datos secretos, es posible que desee optimizar las cosas un poco con el cifrado. Esto significa que si desea compartir un gran valor secreto S (por ejemplo, un video de 3 gigabytes), entonces:
- Cree una clave aleatoria de 128 bits K .
- Cifre S con K y un buen cifrado simétrico; el valor cifrado se almacena en un área común donde cada participante puede recuperarlo.
- Aplica el intercambio secreto de Shamir en K .
De esta manera, cada titular de acciones solo tiene que recordar algo que es del tamaño de K (16 bytes, cabe fácilmente en varios lugares, por ejemplo, una tarjeta inteligente o incluso un cerebro humano), mientras que el secreto el valor S puede almacenarse y distribuirse de manera arbitraria y grande (ya que está cifrado, puede mostrarse al público en general, por ejemplo, transferirse con una red de igual a igual).
Ahora, para elegir los valores compartidos, es un problema interesante. Si tiene n acciones y un umbral de k , la descripción normal del esquema de Shamir implica que cada acción es esencialmente aleatoria. La división secreta genera los recursos compartidos, y los accionistas solo pueden obtenerlos.
Los cálculos se pueden extender de forma trivial a un esquema en el que la mayoría de las acciones de k-1 se eligen arbitrariamente. Por lo tanto, algunas acciones deben ser aleatorias.
Los recursos compartidos elegidos por el usuario tienen sentido cuando se deben recordar los recursos compartidos, es decir, son contraseñas . Pero las contraseñas están sujetas a fuerza bruta. Por ejemplo, si un atacante obtuvo k-1 acciones y sabe que una de las otras acciones es una contraseña, puede ejecutar una ataque del diccionario en ese recurso compartido adicional, es decir, probar contraseñas potenciales (para cada contraseña, volver a calcular el secreto compartido con esa contraseña como recurso compartido adicional, y ver si el resultado" tiene sentido "). Esto desafortunadamente debilita todo el sistema.
De hecho, una gran propiedad del esquema de Shamir es que es incondicionalmente segura , lo que significa que resiste a los atacantes con poder de computación arbitrario, incluidas las computadoras que aún no se han inventado (siempre y cuando la fuente de la aleatoriedad utilizada en la división es realmente aleatoria). Esto simplifica el análisis de seguridad, en particular para el almacenamiento a largo plazo, donde tiene que predecir cuánta potencia de computación tendrán los atacantes dentro de décadas. Pero si inserta contraseñas en la mezcla, esta seguridad incondicional se evapora como rocío bajo el sol de la mañana.