O esquema de compartición secreta de Shamir

Considere un escenario no que necesite protexer unha bóveda bancaria. Considérase absolutamente inexpugnable sen chave, que se lle entrega o primeiro día de traballo. O teu obxectivo é almacenar de forma segura a chave.

Digamos que decides manter a chave contigo en todo momento, proporcionando acceso ao almacenamento segundo sexa necesario. Pero axiña entenderás que tal solución non se escala ben na práctica, porque a túa presenza física é necesaria cada vez que abres o almacenamento. E as vacacións que che prometeron? Ademais, a pregunta é aínda máis aterradora: e se perdes a túa única chave?

Tendo en conta as túas vacacións, decides facer unha copia da chave e confiala a outro empregado. Non obstante, entendes que isto tampouco é o ideal. Ao duplicar o número de chaves, tamén duplicas as posibilidades de roubo de chaves.

Desesperado, destrúes o duplicado e decides dividir a clave orixinal pola metade. Agora, pensarías que dúas persoas de confianza con fragmentos de chave terían que estar fisicamente presentes para recoller a chave e abrir a bóveda. Isto significa que un ladrón necesita roubar dúas pezas, o que é dúas veces máis difícil que roubar unha chave. Non obstante, pronto entenderás que este esquema non é moito mellor que só unha chave, porque se alguén perde media chave, a chave completa non se pode recuperar.

O problema pódese resolver cunha serie de chaves e bloqueos adicionais, pero este enfoque requirirá rapidamente много chaves e pechaduras. Vostede decide que o deseño ideal sería compartir a chave para que a seguridade non dependa totalmente dunha persoa. Tamén conclúe que debe haber algún limiar para o número de fragmentos para que, se se perde un fragmento (ou se unha persoa vai de vacacións), toda a chave siga funcionando.

Como compartir un segredo

Este tipo de esquema de xestión de claves foi pensado por Adi Shamir en 1979 cando publicou o seu traballo "Como compartir un segredo". O artigo explica brevemente o chamado O esquema de compartición secreta de Shamir esquema de limiar para dividir de forma eficiente un valor secreto (como unha clave criptográfica). O esquema de compartición secreta de Shamir pezas. Entón, cando e só cando polo menos O esquema de compartición secreta de Shamir de O esquema de compartición secreta de Shamir as pezas están montadas, pode facilmente restaurar o segredo O esquema de compartición secreta de Shamir.

Desde o punto de vista da seguridade, unha propiedade importante deste esquema é que o atacante non debería saber absolutamente nada a menos que teña polo menos O esquema de compartición secreta de Shamir pezas. Incluso a presenza O esquema de compartición secreta de Shamir partes non deben proporcionar ningunha información. Chamámoslle esta propiedade seguridade semántica.

Interpolación polinómica

Esquema de limiar de Shamir O esquema de compartición secreta de Shamir construído arredor do concepto interpolación polinómica. Se non estás familiarizado con este concepto, en realidade é bastante sinxelo. De feito, se algunha vez debuxaches puntos nun gráfico e despois os conectaches con liñas ou curvas, xa o utilizaches!

O esquema de compartición secreta de Shamir
A través de dous puntos pódese debuxar un número ilimitado de polinomios de grao 2. Para elixir o único deles, necesitas un terceiro punto. Ilustración: Wikipedia

Considere un polinomio de grao un, O esquema de compartición secreta de Shamir. Se queres representar esta función nun gráfico, cantos puntos necesitas? Ben, sabemos que esta é unha función lineal que forma unha liña e, polo tanto, necesita polo menos dous puntos. A continuación, considere unha función polinómica de grao dous, O esquema de compartición secreta de Shamir. Esta é unha función cuadrática, polo que son necesarios polo menos tres puntos para representar a gráfica. Que tal un polinomio de grao tres? Polo menos catro puntos. E así por diante.

O realmente interesante desta propiedade é que, dado o grao da función polinómica e polo menos O esquema de compartición secreta de Shamir puntos, podemos derivar puntos adicionais para esta función polinómica. Chamamos a extrapolación destes puntos adicionais interpolación polinómica.

Inventando un segredo

Quizais xa te deches conta de que aquí é onde entra en xogo o intelixente esquema de Shamir. Digamos o noso segredo O esquema de compartición secreta de Shamir - É O esquema de compartición secreta de Shamir. Podemos virar O esquema de compartición secreta de Shamir a un punto da gráfica O esquema de compartición secreta de Shamir e crea unha función polinómica con grao O esquema de compartición secreta de Shamir, que satisface este punto. Lembremos iso O esquema de compartición secreta de Shamir será o noso limiar de fragmentos necesarios, polo que se establecemos o limiar en tres fragmentos, debemos escoller unha función polinómica de grao dous.

O noso polinomio terá a forma O esquema de compartición secreta de Shamironde O esquema de compartición secreta de Shamir и O esquema de compartición secreta de Shamir — Enteiros positivos seleccionados aleatoriamente. Só estamos construíndo un polinomio con grao O esquema de compartición secreta de Shamir, onde o coeficiente libre O esquema de compartición secreta de Shamir - Este é o noso segredo O esquema de compartición secreta de Shamir, e para cada unha das seguintes O esquema de compartición secreta de Shamir termos hai un coeficiente positivo seleccionado aleatoriamente. Se volvemos ao exemplo orixinal e asumimos que O esquema de compartición secreta de Shamir, entón obtemos a función O esquema de compartición secreta de Shamir.

Neste punto podemos xerar fragmentos conectando O esquema de compartición secreta de Shamir enteiros únicos en O esquema de compartición secreta de Shamironde O esquema de compartición secreta de Shamir (porque é o noso segredo). Neste exemplo, queremos distribuír catro fragmentos cun limiar de tres, polo que xeramos puntos aleatoriamente O esquema de compartición secreta de Shamir e enviar un punto a cada unha das catro persoas de confianza, os custodios da chave. Tamén o avisamos á xente O esquema de compartición secreta de Shamir, xa que se considera información pública e é necesaria para a súa recuperación O esquema de compartición secreta de Shamir.

Recuperando o segredo

Xa comentamos o concepto de interpolación polinómica e como subxace ao esquema de limiar de Shamir O esquema de compartición secreta de Shamir. Cando tres dos catro administradores queiran restaurar O esquema de compartición secreta de Shamir, só precisan interpolar O esquema de compartición secreta de Shamir cos seus propios puntos únicos. Para iso, poden determinar os seus puntos O esquema de compartición secreta de Shamir e calcula o polinomio de interpolación de Lagrange mediante a seguinte fórmula. Se a programación é máis clara para ti que as matemáticas, entón pi é esencialmente un operador for, que multiplica todos os resultados, e sigma é for, que suma todo.

O esquema de compartición secreta de Shamir

O esquema de compartición secreta de Shamir

En O esquema de compartición secreta de Shamir podemos resolvelo así e devolver a nosa función polinómica orixinal:

O esquema de compartición secreta de Shamir

Xa que o sabemos O esquema de compartición secreta de Shamir, recuperación O esquema de compartición secreta de Shamir feito simplemente:

O esquema de compartición secreta de Shamir

Usando aritmética de enteiros inseguros

Aínda que aplicamos con éxito a idea básica de Shamir O esquema de compartición secreta de Shamir, quedamos cun problema que ata agora ignoramos. A nosa función polinómica usa aritmética de enteiros inseguros. Teña en conta que por cada punto adicional que obtén un atacante na gráfica da nosa función, hai menos posibilidades para outros puntos. Podes ver isto cos teus propios ollos cando representas un número crecente de puntos para unha función polinómica usando a aritmética enteira. Isto é contraproducente para o noso obxectivo de seguridade declarado, porque o atacante non debe saber absolutamente nada ata que o teña polo menos O esquema de compartición secreta de Shamir fragmentos.

Para demostrar o débil que é o circuíto aritmético enteiro, considere un escenario no que un atacante obtivo dous puntos O esquema de compartición secreta de Shamir e coñece información pública que O esquema de compartición secreta de Shamir. Desta información pode deducir O esquema de compartición secreta de Shamir, igual a dous, e conecte os valores coñecidos na fórmula O esquema de compartición secreta de Shamir и O esquema de compartición secreta de Shamir.

O esquema de compartición secreta de Shamir

O atacante pode entón atopar O esquema de compartición secreta de Shamir, contando O esquema de compartición secreta de Shamir:

O esquema de compartición secreta de Shamir

Xa que temos definido O esquema de compartición secreta de Shamir como enteiros positivos seleccionados aleatoriamente, hai un número limitado de posibles O esquema de compartición secreta de Shamir. Usando esta información, un atacante pode deducir O esquema de compartición secreta de Shamir, xa que calquera cousa maior que 5 servirá O esquema de compartición secreta de Shamir negativa. Isto resulta ser certo xa que o determinamos O esquema de compartición secreta de Shamir

O atacante pode entón calcular os posibles valores O esquema de compartición secreta de Shamirsubstituíndo O esquema de compartición secreta de Shamir в O esquema de compartición secreta de Shamir:

O esquema de compartición secreta de Shamir

Con opcións limitadas para O esquema de compartición secreta de Shamir queda claro o fácil que é seleccionar e comprobar os valores O esquema de compartición secreta de Shamir. Só hai cinco opcións aquí.

Resolver o problema con aritmética de enteiros inseguros

Para eliminar esta vulnerabilidade, Shamir suxire usar aritmética modular, substituíndo O esquema de compartición secreta de Shamir en O esquema de compartición secreta de Shamironde O esquema de compartición secreta de Shamir и O esquema de compartición secreta de Shamir - o conxunto de todos os números primos.

Lembremos rapidamente como funciona a aritmética modular. Un reloxo con agullas é un concepto familiar. Ela usa un reloxo que é O esquema de compartición secreta de Shamir. En canto a agulla das horas pasa das doce, volve á unha. Unha propiedade interesante deste sistema é que simplemente mirando o reloxo non podemos deducir cantas revolucións fixo a agulla das horas. Non obstante, se sabemos que a agulla das horas pasou 12 catro veces, podemos determinar completamente o número de horas que pasaron usando unha fórmula sinxela O esquema de compartición secreta de Shamironde O esquema de compartición secreta de Shamir é o noso divisor (aquí O esquema de compartición secreta de Shamir), O esquema de compartición secreta de Shamir é o coeficiente (cantas veces o divisor entra no número orixinal sen resto, aquí O esquema de compartición secreta de Shamir), e O esquema de compartición secreta de Shamir é o resto, que normalmente devolve unha chamada de operador de módulo (aquí O esquema de compartición secreta de Shamir). Coñecer todos estes valores permítenos resolver a ecuación para O esquema de compartición secreta de Shamir, pero se perdemos o coeficiente, nunca poderemos restaurar o valor orixinal.

Podemos demostrar como isto mellora a seguridade do noso esquema aplicando o esquema ao noso exemplo anterior e usando O esquema de compartición secreta de Shamir. A nosa nova función polinómica O esquema de compartición secreta de Shamir, e os novos puntos O esquema de compartición secreta de Shamir. Agora os encargados das chaves poden volver usar a interpolación polinómica para reconstruír a nosa función, só que esta vez as operacións de suma e multiplicación deben ir acompañadas de redución de módulo. O esquema de compartición secreta de Shamir (por exemplo: O esquema de compartición secreta de Shamir).

Usando este novo exemplo, supoñamos que o atacante aprendeu dous destes novos puntos, O esquema de compartición secreta de Shamir, e información pública O esquema de compartición secreta de Shamir. Nesta ocasión, o atacante, baseándose en toda a información que ten, saca as seguintes funcións, onde O esquema de compartición secreta de Shamir é o conxunto de todos os enteiros positivos, e O esquema de compartición secreta de Shamir representa o coeficiente do módulo O esquema de compartición secreta de Shamir.

O esquema de compartición secreta de Shamir

Agora o noso atacante volve atopar O esquema de compartición secreta de Shamir, calculando O esquema de compartición secreta de Shamir:

O esquema de compartición secreta de Shamir

Despois volve tentalo O esquema de compartición secreta de Shamirsubstituíndo O esquema de compartición secreta de Shamir в O esquema de compartición secreta de Shamir:

O esquema de compartición secreta de Shamir

Esta vez ten un grave problema. Faltan valores de fórmula O esquema de compartición secreta de Shamir, O esquema de compartición secreta de Shamir и O esquema de compartición secreta de Shamir. Dado que hai un número infinito de combinacións destas variables, non pode obter ningunha información adicional.

Consideracións de seguridade

O esquema de compartición secreta de Shamir suxire seguridade desde o punto de vista da teoría da información. Isto significa que as matemáticas son resistentes mesmo contra un atacante con capacidade de cálculo ilimitada. Non obstante, o circuíto aínda contén varios problemas coñecidos.

Por exemplo, o esquema de Shamir non crea fragmentos a revisar, é dicir, as persoas poden presentar libremente fragmentos falsos e interferir coa recuperación do segredo correcto. Un garda fragmento hostil con información suficiente podería incluso producir outro fragmento cambiando O esquema de compartición secreta de Shamir ao seu criterio. Este problema resólvese usando esquemas de compartición de segredos verificables, como o esquema de Feldman.

Outro problema é que a lonxitude de calquera fragmento é igual á lonxitude do segredo correspondente, polo que a lonxitude do segredo é fácil de determinar. Este problema pódese resolver por trivial acolchado secreto con números arbitrarios ata unha lonxitude fixa.

Finalmente, é importante ter en conta que as nosas preocupacións de seguridade poden estenderse máis alá do propio deseño. Para as aplicacións criptográficas do mundo real, adoita existir a ameaza de ataques de canle lateral nos que un atacante tenta extraer información útil do tempo de execución da aplicación, a caché, os fallos, etc. Se isto é un problema, durante o desenvolvemento débese considerar coidadosamente o uso de medidas de protección como funcións e buscas en tempo constante, evitando que a memoria se garde no disco e outras consideracións que están fóra do alcance deste artigo.

Demostración

En Esta páxina Hai unha demostración interactiva do esquema de compartición secreta de Shamir. Demostración baseada na biblioteca ssss-js, que é un porto de JavaScript do popular programa FAQ. Teña en conta que calcular valores grandes O esquema de compartición secreta de Shamir, O esquema de compartición secreta de Shamir и O esquema de compartición secreta de Shamir pode levar un tempo.

Fonte: www.habr.com

Engadir un comentario