Esquema de partición del secreto de Shamir

Consideremos un escenario en el que es necesario garantizar la seguridad de un almacén bancario. Se considera absolutamente impenetrable sin la clave que se te entrega desde el primer día de trabajo. Tu objetivo es conservar la clave de manera segura.

Supongamos que decidiste mantener la clave contigo en todo momento, permitiendo el acceso al almacén según sea necesario. Pero rápidamente te darás cuenta de que esta solución no se escala bien en la práctica, porque cada vez para abrir el almacén se requiere tu presencia física. ¿Y qué pasa con aquellas vacaciones que te prometieron? Además, hay una pregunta aún más inquietante: ¿qué pasaría si pierdes la única clave?

Pensando en las vacaciones, decidiste hacer una copia de la clave y confiarla a otro empleado. Sin embargo, entiendes que eso tampoco es ideal. Al duplicar el número de claves, también duplicaste las oportunidades de robo de la clave.

Desesperado, destruyes el duplicado y decides dividir la clave original en dos. Ahora, piensas, dos personas de confianza con fragmentos de la clave deben estar físicamente presentes para reunir la clave y abrir el almacén. Esto significa que el ladrón necesita robar ambos fragmentos, lo cual es el doble de difícil que robar una sola clave. Sin embargo, pronto te das cuenta de que este esquema no es mucho mejor que tener un solo clave, porque si alguien pierde la mitad de la clave, la clave completa no puede ser recuperada.

El problema se puede resolver con una serie de claves y cerraduras adicionales, pero con este enfoque se requerirán rápidamente muchas claves y cerraduras. Decides que en el esquema ideal, la clave debe dividirse para que la seguridad no dependa completamente de una sola persona. También concluyes que debe existir un umbral de cantidad de fragmentos, de modo que, al perder un fragmento (o si alguien se va de vacaciones), la clave completa permanezca funcional.

Cómo dividir un secreto

Este tipo de esquema de gestión de claves fue pensado por Adi Shamir en 1979, cuando publicó su trabajo "Cómo dividir un secreto". En el artículo se explica brevemente la llamada Esquema de partición del secreto de Shamir esquema umbral para la efectiva división de un valor secreto (por ejemplo, una clave criptográfica) en Esquema de partición del secreto de Shamir partes. Luego, cuando y solo cuando al menos Esquema de partición del secreto de Shamir de Esquema de partición del secreto de Shamir partes están reunidas, se puede recuperar fácilmente el secreto. Esquema de partición del secreto de Shamir.

Desde una perspectiva de seguridad, una propiedad importante de este esquema es que un atacante no debe aprender nada en absoluto si no tiene al menos Esquema de partición del secreto de Shamir fragmentos. Incluso la posesión de Esquema de partición del secreto de Shamir fragmentos no debe proporcionar ninguna información. Llamamos a esta propiedad seguridad semántica.

Interpolación polinómica

El esquema de umbral de Shamir Esquema de partición del secreto de Shamir se basa en la concepción de interpolación polinómica. Si no estás familiarizado con este concepto, en realidad es bastante simple. En general, si alguna vez has trazado puntos en un gráfico y luego los has conectado con líneas o curvas, ¡ya has utilizado este concepto!

Esquema de partición del secreto de Shamir
A través de dos puntos, se puede trazar un número ilimitado de polinomios de grado 2. Para elegir uno de ellos de manera única, se necesita un tercer punto. Ilustración: Wikipedia

Consideremos un polinomio de grado uno, Esquema de partición del secreto de Shamir. Si deseas graficar esta función, ¿cuántos puntos necesitas? Bueno, sabemos que es una función lineal que forma una línea y, por lo tanto, se necesitan al menos dos puntos. Luego consideremos una función polinómica de grado dos, Esquema de partición del secreto de Shamir. Esta es una función cuadrática, por lo que se requieren al menos tres puntos para graficarla. ¿Qué hay de un polinomio de grado tres? Al menos cuatro puntos. Y así sucesivamente.

Lo realmente asombroso de esta propiedad es que, dado el grado de una función polinómica y al menos Esquema de partición del secreto de Shamir puntos, podemos derivar puntos adicionales para esta función polinómica. A esta extrapolación de esos puntos adicionales la llamamos interpolación polinómica.

Composición de secretos

Es posible que ya hayas comprendido que aquí entra en juego el ingenioso esquema de Shamir. Supongamos que nuestro secreto Esquema de partición del secreto de Shamir — es Esquema de partición del secreto de Shamir. Podemos convertir Esquema de partición del secreto de Shamir en un punto en un gráfico Esquema de partición del secreto de Shamir y crear una función polinómica de grado Esquema de partición del secreto de Shamir, que satisfaga este punto. Recordemos que Esquema de partición del secreto de Shamir será nuestro umbral de fragmentos requeridos, por lo que si establecemos el umbral en tres fragmentos, debemos elegir una función polinómica de grado dos.

Nuestro polinomio tendrá la forma Esquema de partición del secreto de Shamir, donde Esquema de partición del secreto de Shamir y Esquema de partición del secreto de Shamir — números enteros positivos seleccionados al azar. Simplemente estamos construyendo un polinomio de grado Esquema de partición del secreto de Shamir, donde el coeficiente libre Esquema de partición del secreto de Shamir es nuestro secreto Esquema de partición del secreto de Shamir, y cada uno de los siguientes Esquema de partición del secreto de Shamir los miembros tienen un coeficiente positivo elegido al azar. Si regresamos al ejemplo inicial y suponemos que Esquema de partición del secreto de Shamir, entonces obtendremos una función Esquema de partición del secreto de Shamir.

En este punto, podemos generar fragmentos conectando Esquema de partición del secreto de Shamir números enteros únicos en Esquema de partición del secreto de Shamir, donde Esquema de partición del secreto de Shamir (porque ese es nuestro secreto). En este ejemplo, queremos distribuir cuatro fragmentos con un umbral de tres, así que generamos puntos al azar Esquema de partición del secreto de Shamir y enviamos un punto a cada una de las cuatro personas de confianza, los custodios de la clave. También les informamos que Esquema de partición del secreto de Shamir, ya que se considera información pública y es necesaria para la recuperación Esquema de partición del secreto de Shamir.

Recuperación del secreto

Ya hemos discutido el concepto de interpolación polinómica y cómo se basa en el esquema de umbral de Shamir Esquema de partición del secreto de Shamir. Cuando cualquiera de las tres de las cuatro personas de confianza quiere recuperar Esquema de partición del secreto de Shamir, solo necesitan interpolar Esquema de partición del secreto de Shamir con sus puntos únicos. Para ello, pueden definir sus puntos Esquema de partición del secreto de Shamir y calcular el polinomio de interpolación de Lagrange usando la siguiente fórmula. Si la programación te resulta más comprensible que las matemáticas, pi es esencialmente un operador para, que multiplica todos los resultados, y la sigma es para, que suma todo.

Esquema de partición del secreto de Shamir

Esquema de partición del secreto de Shamir

Al Esquema de partición del secreto de Shamir podemos resolver esto de la siguiente manera y devolver nuestra función polinómica original:

Esquema de partición del secreto de Shamir

Dado que sabemos que Esquema de partición del secreto de Shamir, la recuperación Esquema de partición del secreto de Shamir se realiza simplemente:

Esquema de partición del secreto de Shamir

Uso de la aritmética entera insegura

Aunque hemos aplicado con éxito la idea principal de Shamir Esquema de partición del secreto de Shamir, aún tenemos un problema que hemos ignorado hasta este momento. Nuestra función polinómica utiliza aritmética entera insegura. Ten en cuenta que por cada punto adicional que el atacante obtiene en el gráfico de nuestra función, quedan menos posibilidades para otros puntos. Puedes verlo tú mismo al graficar con un aumento en el número de puntos para la función polinómica usando aritmética entera. Esto es contraproducente para nuestro objetivo de seguridad, porque un atacante no debería aprender absolutamente nada, hasta que tenga al menos Esquema de partición del secreto de Shamir fragmentos.

Para demostrar cuán débil es el esquema de aritmética entera, consideremos un escenario en el que un atacante obtuvo dos puntos Esquema de partición del secreto de Shamir y conoce la información pública, que Esquema de partición del secreto de Shamir. De esta información, puede deducir Esquema de partición del secreto de Shamir, igual a dos, y conectar en la fórmula los valores conocidos Esquema de partición del secreto de Shamir y Esquema de partición del secreto de Shamir.

Esquema de partición del secreto de Shamir

Luego, el atacante puede encontrar Esquema de partición del secreto de Shamir, al calcular Esquema de partición del secreto de Shamir:

Esquema de partición del secreto de Shamir

Dado que hemos definido Esquema de partición del secreto de Shamir como números enteros positivos seleccionados al azar, hay un número limitado de posibles Esquema de partición del secreto de Shamir. Con esta información, el atacante puede deducir Esquema de partición del secreto de Shamir, ya que cualquier cosa mayor que 5 hará Esquema de partición del secreto de Shamir negativo. Esto resulta ser cierto, ya que hemos definido Esquema de partición del secreto de Shamir

Luego, el atacante puede calcular los posibles valores Esquema de partición del secreto de Shamir, reemplazando Esquema de partición del secreto de Shamir en Esquema de partición del secreto de Shamir:

Esquema de partición del secreto de Shamir

Con un conjunto limitado de opciones para Esquema de partición del secreto de Shamir se hace evidente lo fácil que es adivinar y verificar valores Esquema de partición del secreto de Shamir. Aquí hay solo cinco opciones.

La solución al problema de la aritmética entera insegura

Para mitigar esta vulnerabilidad, Shamir sugiere utilizar aritmética modular, reemplazando Esquema de partición del secreto de Shamir en Esquema de partición del secreto de Shamir, donde Esquema de partición del secreto de Shamir y Esquema de partición del secreto de Shamir — el conjunto de todos los números primos.

Recordemos rápidamente cómo funciona la aritmética modular. Un reloj con manecillas es un concepto familiar. Utiliza un reloj que es Esquema de partición del secreto de Shamir. Una vez que la manecilla de la hora pasa por el doce, vuelve al uno. Una propiedad interesante de este sistema es que, simplemente mirando el reloj, no podemos deducir cuántas vueltas ha dado la manecilla. Sin embargo, si sabemos que la manecilla ha pasado por el 12 cuatro veces, podemos determinar completamente cuántas horas han pasado usando una simple fórmula Esquema de partición del secreto de Shamir, donde Esquema de partición del secreto de Shamir — este es nuestro divisor (aquí Esquema de partición del secreto de Shamir), Esquema de partición del secreto de Shamir — es el cociente (cuántas veces el divisor cabe exactamente en el número original, aquí Esquema de partición del secreto de Shamir), y Esquema de partición del secreto de Shamir — es el residuo que típicamente devuelve la operación de módulo (aquí Esquema de partición del secreto de Shamir). Conocer todos estos valores nos permite resolver la ecuación para Esquema de partición del secreto de Shamir, pero si omitimos el cociente, nunca podremos recuperar el valor original.

Se puede demostrar cómo esto mejora la seguridad de nuestro esquema aplicando el esquema a nuestro ejemplo anterior y utilizando Esquema de partición del secreto de Shamir. Nuestra nueva función polinómica Esquema de partición del secreto de Shamir, y los nuevos puntos Esquema de partición del secreto de Shamir. Ahora, los guardianes de la clave pueden nuevamente usar la interpolación polinómica para recuperar nuestra función, solo que esta vez las operaciones de suma y multiplicación deben acompañarse de reducción módulo Esquema de partición del secreto de Shamir (p.ej. Esquema de partición del secreto de Shamir).

Usando este nuevo ejemplo, supongamos que el atacante conocía dos de estos nuevos puntos, Esquema de partición del secreto de Shamir, y la información pública Esquema de partición del secreto de Shamir. Esta vez, el atacante, basándose en toda la información que tiene, deduce las siguientes funciones, donde Esquema de partición del secreto de Shamir — el conjunto de todos los números enteros positivos, y Esquema de partición del secreto de Shamir representa el coeficiente del módulo Esquema de partición del secreto de Shamir.

Esquema de partición del secreto de Shamir

Ahora, nuestro agresor vuelve a encontrar Esquema de partición del secreto de Shamir, calculando Esquema de partición del secreto de Shamir:

Esquema de partición del secreto de Shamir

Luego, vuelve a intentar deducir Esquema de partición del secreto de Shamir, reemplazando Esquema de partición del secreto de Shamir en Esquema de partición del secreto de Shamir:

Esquema de partición del secreto de Shamir

Esta vez tiene un problema serio. En la fórmula faltan valores Esquema de partición del secreto de Shamir, Esquema de partición del secreto de Shamir y Esquema de partición del secreto de Shamir. Dado que hay una cantidad infinita de combinaciones de estas variables, no puede obtener más información.

Consideraciones de seguridad

El esquema de distribución secreta de Shamir ofrece seguridad desde el punto de vista de la teoría de la información. Eso significa que las matemáticas son resistentes incluso ante un atacante con potencia computacional ilimitada. Sin embargo, el esquema aún presenta varios problemas conocidos.

Por ejemplo, el esquema de Shamir no genera fragmentos verificables, es decir, las personas pueden presentar fragmentos falsificados y obstaculizar la recuperación del secreto correcto. Un guardián hostil de fragmentos con suficiente información incluso puede generar otro fragmento, alterando Esquema de partición del secreto de Shamir a su conveniencia. Este problema se resuelve con esquemas de distribución secreta verificables, como el esquema de Feldman.

Otro problema es que la longitud de cualquier fragmento es igual a la longitud del secreto correspondiente, por lo que es fácil determinar la longitud del secreto. Este problema se soluciona mediante una rellenado del secreto con números arbitrarios hasta una longitud fija.

Finalmente, es importante señalar que nuestras preocupaciones sobre la seguridad pueden ir más allá del propio esquema. En aplicaciones criptográficas reales, a menudo existe la amenaza de ataques a través de canales colaterales, donde los atacantes intentan extraer información útil del tiempo de ejecución de la aplicación, la memoria caché, fallas, etc. Si esto es preocupante, se deben considerar cuidadosamente medidas de seguridad durante el desarrollo, como funciones y búsqueda con un tiempo de ejecución constante, evitar el almacenamiento en memoria en disco y pensar en una serie de otras cosas que van más allá de este artículo.

Demo

En esta página hay una demostración interactiva del esquema de distribución de secretos de Shamir. La demostración se realiza sobre la base de la biblioteca ssss-js, que en sí misma es un puerto de JavaScript de un programa popular ssssTenga en cuenta que el cálculo de valores grandes Esquema de partición del secreto de Shamir, Esquema de partición del secreto de Shamir y Esquema de partición del secreto de Shamir puede tardar un tiempo.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster