147 / 736SSS

Shamir Secret Sharing

Compartición de secretos por umbral de Shamir

Una copia de seguridad puede dividirse de modo que basten algunas partes para recuperarla. La misma regla se aplica a quien las obtenga sin tu permiso.

Shamir Secret Sharing es un método matemático que convierte un secreto en varias participaciones distintas. Una cantidad elegida de antemano permite reconstruirlo; en el esquema ideal, una cantidad menor no revela ni siquiera una parte. Adi Shamir publicó el método en 1979. En Bitcoin, puede tratarse de los datos secretos necesarios para recuperar una cartera. No consiste en cortar una Seed Phrase en trozos: las participaciones se calculan y solo tienen sentido dentro del esquema correspondiente.

Una cartera es una aplicación o un dispositivo para recibir y enviar bitcoin. Anna quiere una copia de seguridad que resista la pérdida de algunos registros. Elige tres de cinco: se crean cinco participaciones distintas y cualesquiera tres válidas del mismo conjunto recuperan el secreto. Puede perder dos, pero no tres. La cantidad necesaria se llama umbral; en general, k de n significa necesitar k participaciones de las n creadas y permite perder n−k. Pero el umbral no reconoce el consentimiento de Anna. Si otra persona consigue tres participaciones, o sus titulares colaboran, recupera el mismo secreto. Un umbral menor facilita la recuperación, pero también reduce el grupo capaz de hacerla sin Anna. [1] [6]

Guardar los cinco archivos en una sola cuenta en la nube aporta poco: perderla o sufrir una intrusión afecta a todos a la vez. Una copia de seguridad exige una distribución sensata, dejar anotados el método y sus parámetros, y comprobar la recuperación en un dispositivo de confianza. Si el plan también debe servir a los herederos, estos necesitan saber qué buscar y cómo tratarlo con seguridad. Volver a dividir aleatoriamente el mismo secreto S genera un conjunto nuevo; no se mezclan participaciones antiguas y nuevas. Sin embargo, un conjunto antiguo suficiente sigue recuperando S. Repartirlo de nuevo no revoca una copia utilizable que ya se haya filtrado ni cambia el secreto. [1] [4]

Una recuperación normal reúne de nuevo todo el secreto en un dispositivo. Si está comprometido, un atacante puede obtenerlo en ese momento. Si el secreto es una Private Key, un valor numérico secreto con el que se crea una firma digital para autorizar un gasto, quien posea esa clave podrá firmar después sin más participaciones. Multisig exige, en cambio, varias firmas según las condiciones de ese gasto. También existe la firma por umbral: mediante un protocolo adicional de MPC, un cálculo conjunto seguro entre varios participantes, las participaciones pueden contribuir a una firma sin reunir la clave completa. NIST distingue estas situaciones. Una participación de Shamir, por sí sola, no establece ese protocolo de firma. [3] [5] [6]

Dos programas cuyo nombre incluya Shamir no tienen por qué leer las participaciones del otro. Deben coincidir las operaciones matemáticas, la codificación de los valores, los identificadores y la pertenencia al conjunto. SLIP-39 es un estándar concreto basado en este método: añade una lista de palabras, metadatos o información auxiliar, grupos, cifrado y comprobaciones de errores. El principio general no es, por tanto, una instrucción para dividir a mano una Seed Phrase existente. Antes de confiar una cartera a esa copia, hay que conocer el formato compatible y comprobar que el procedimiento previsto realmente la recupera. [2]

En tres de cinco, está claro qué supone perder dos participaciones. Una dañada o falsificada, sin embargo, puede hacer que el cálculo básico devuelva otro secreto en lugar de avisar de que faltan participaciones. El método no autentica su origen ni demuestra la honestidad de quien las creó. La detección y corrección de errores, y verifiable secret sharing, que permite comprobar que el reparto se realizó correctamente, son capas adicionales con sus propios supuestos. SLIP-39 añade, por ejemplo, una suma de comprobación y una huella de verificación llamada digest. Eso no implica que todas las aplicaciones de Shamir Secret Sharing tengan las mismas comprobaciones ni que una suma correcta pruebe un origen fiable. [2] [5]

En el esquema ideal, menos de k participaciones completas no dan al atacante información nueva sobre S, aunque disponga de capacidad de cálculo ilimitada. Una participación no es un tercio visible de las palabras originales. Esta propiedad requiere buena aleatoriedad: los números del reparto se eligen de forma independiente y con igual probabilidad. Números predecibles, su reutilización o una fuga de la memoria del dispositivo cambian la situación. Los datos de comprobación adicionales, como el digest de SLIP-39, también deben evaluarse por separado. Y una contraseña original débil no deja de ser adivinable por otras vías por haber dividido su copia. [1] [2]

Tomemos el pequeño secreto S=5 y la regla f(x)=5+3*x mod 17. mod 17 significa quedarse con el resto de dividir por 17. Tres participaciones son los pares (1,8), (2,11), (3,14): el primer número indica una posición y el segundo, el valor calculado. Los dos primeros permiten obtener el incremento 3 y el secreto original 8−3=5. Cualquiera de los tres pares posibles recupera ese mismo cinco. El punto (1,8) por sí solo admite cualquier S de 0 a 16 si se elige a=8−S mod 17 como incremento. Estos números pequeños ilustran la idea; no son un diseño de copia para una cartera real. [1]

La regla general es f(x)=S+a1*x+…+a(k−1)*x^(k−1). Esta expresión es un polinomio; S es el secreto y los demás coeficientes son elementos independientes y uniformemente aleatorios de un cuerpo finito, un entorno con reglas precisas de suma y multiplicación. Una participación es (x,f(x)), con cada x distinto y no nulo: x=0 revelaría S directamente. A partir de k puntos, la interpolación de Lagrange calcula f(0), el secreto. Dos copias del mismo punto no aportan información nueva. En el cuerpo primo GF(p), la división ordinaria se sustituye por multiplicar por el inverso modular, cuyo producto con el divisor es 1. GF(256) tampoco opera como los simples restos módulo 256: confundirlos sería un error. [1]

Para obtener la imagen más completa, lee esta entrada junto con SLIP-39, Multisig, Seed Phrase, Private Key, Bitcoin Inheritance Plan. También enlazan con esta entrada SLIP-39, FROST.

DOC · 001Adi Shamir — How to Share a Secret (1979)Fuente primaria DOC · 002SLIP-0039 — Shamir Secret-Sharing for Mnemonic CodesEspecificación DOC · 003NIST — Multi-Party Threshold CryptographyFuente primaria DOC · 004Trezor — Multi-share BackupDocumentación DOC · 005NISTIR 8214 — Threshold Schemes for Cryptographic PrimitivesFuente primaria DOC · 006Bitcoin Developer Guide — WalletsDocumentación
Revisado: Fuentes primero · No es asesoramiento financiero