O esquema de compartilhamento de segredos de Shamir

Vamos considerar um cenário em que é necessário garantir a segurança de um cofre bancário. Ele é considerado absolutamente impenetrável sem a chave que lhe é entregue no primeiro dia de trabalho. Seu objetivo é guardar essa chave de forma segura.

Suponha que você decidiu manter a chave com você o tempo todo, fornecendo acesso ao cofre conforme necessário. Mas você rapidamente perceberá que essa solução não escala bem na prática, porque sempre que for abrir o cofre, é necessário estar fisicamente presente. E quanto às férias que lhe prometeram? Além disso, há uma questão ainda mais assustadora: e se você perder a única chave?

Com a ideia de férias em mente, você decidiu fazer uma cópia da chave e confiá-la a outro funcionário. No entanto, você percebe que isso também não é ideal. Ao duplicar o número de chaves, você também duplicou as possibilidades de roubo da chave.

Desesperado, você destrói o duplicado e decide dividir a chave original ao meio. Agora, você pensa, duas pessoas de confiança com fragmentos da chave precisam estar fisicamente presentes para juntar a chave e abrir o cofre. Isso significa que o ladrão precisa roubar dois fragmentos, o que é duas vezes mais difícil do que roubar uma chave só. No entanto, em breve você percebe que esse esquema não é muito melhor do que ter apenas uma chave, porque se alguém perder metade da chave, a chave completa não pode ser recuperada.

O problema pode ser resolvido com uma série de chaves e fechaduras adicionais, mas com esse método, rapidamente será necessário muitas chaves e fechaduras. Você decide que no esquema ideal a chave deve ser dividida de tal forma que a segurança não dependa completamente de uma única pessoa. Você também conclui que deve haver um determinado limiar de fragmentos, para que, ao perder um fragmento (ou se a pessoa se ausentar de férias), a chave inteira permaneça funcional.

Como dividir um segredo

Sobre esse tipo de esquema de gerenciamento de chaves, Adi Shamir pensou em 1979, quando publicou seu trabalho “Como dividir um segredo”. O artigo explica brevemente o que é chamado de O esquema de compartilhamento de segredos de Shamir esquema de limiar para a divisão eficaz de um valor secreto (por exemplo, uma chave criptográfica) em O esquema de compartilhamento de segredos de Shamir partes. Então, quando e somente quando pelo menos O esquema de compartilhamento de segredos de Shamir do O esquema de compartilhamento de segredos de Shamir partes são reunidas, o segredo pode ser facilmente recuperado. O esquema de compartilhamento de segredos de Shamir.

Do ponto de vista da segurança, uma característica importante deste esquema é que o invasor não deve saber absolutamente nada se ele não tiver pelo menos O esquema de compartilhamento de segredos de Shamir partes. Mesmo a posse de O esquema de compartilhamento de segredos de Shamir partes não deve fornecer nenhuma informação. Chamamos isso de segurança semântica.

Interpolação polinomial

O esquema de threshold de Shamir O esquema de compartilhamento de segredos de Shamir é baseado na concepção de interpolação polinomial.Se você não está familiarizado com esse conceito, na verdade, ele é bem simples. De modo geral, se você já desenhou pontos em um gráfico e, em seguida, conectou-os com linhas ou curvas, você já o utilizou!

O esquema de compartilhamento de segredos de Shamir
Através de dois pontos, é possível traçar um número ilimitado de polinômios de grau 2. Para escolher um único deles, é necessário um terceiro ponto. Ilustração: Wikipedia

Vamos considerar um polinômio de grau um, O esquema de compartilhamento de segredos de Shamir. Se você quiser traçar essa função no gráfico, quantos pontos você precisa? Bem, sabemos que é uma função linear, que forma uma linha e, portanto, são necessárias pelo menos duas pontos. Em seguida, vamos considerar uma função polinomial de grau dois, O esquema de compartilhamento de segredos de Shamir. Esta é uma função quadrática, portanto, para traçar o gráfico, são necessários pelo menos três pontos. E quanto a um polinômio de grau três? Pelo menos quatro pontos. E assim por diante.

O que é realmente legal sobre essa propriedade é que, dado o grau da função polinomial e, pelo menos, O esquema de compartilhamento de segredos de Shamir pontos, podemos derivar pontos adicionais para essa função polinomial. A extrapolação desses pontos adicionais chamamos de interpolação polinomial..

Criação de segredos

Você provavelmente já percebeu que aqui entra em jogo o inteligente esquema de Shamir. Suponha que nosso segredo O esquema de compartilhamento de segredos de Shamir seja O esquema de compartilhamento de segredos de Shamir. Podemos transformar O esquema de compartilhamento de segredos de Shamir em um ponto no gráfico O esquema de compartilhamento de segredos de Shamir e criar uma função polinomial de grau O esquema de compartilhamento de segredos de Shamir, que satisfaça esse ponto. Lembre-se de que O esquema de compartilhamento de segredos de Shamir será nosso limite de fragmentos requeridos, então se definirmos o limite em três fragmentos, devemos escolher uma função polinomial de grau dois.

Nosso polinômio terá a forma O esquema de compartilhamento de segredos de Shamir, onde O esquema de compartilhamento de segredos de Shamir e O esquema de compartilhamento de segredos de Shamir - números inteiros positivos escolhidos aleatoriamente. Estamos apenas construindo um polinômio de grau O esquema de compartilhamento de segredos de Shamir, onde o coeficiente livre O esquema de compartilhamento de segredos de Shamir é nosso segredo O esquema de compartilhamento de segredos de Shamir, e cada um dos fragmentos subsequentes O esquema de compartilhamento de segredos de Shamir o membros têm um coeficiente positivo escolhido aleatoriamente. Se voltarmos ao exemplo original e supormos que O esquema de compartilhamento de segredos de Shamir, então obteremos a função O esquema de compartilhamento de segredos de Shamir.

Neste ponto, podemos gerar os fragmentos, conectando O esquema de compartilhamento de segredos de Shamir números inteiros únicos em O esquema de compartilhamento de segredos de Shamir, onde O esquema de compartilhamento de segredos de Shamir (porque esse é o nosso segredo). Neste exemplo, queremos distribuir quatro fragmentos com o limite três, portanto, geramos aleatoriamente os pontos O esquema de compartilhamento de segredos de Shamir e enviamos um ponto para cada uma das quatro pessoas de confiança, os guardiões da chave. Também informamos às pessoas que O esquema de compartilhamento de segredos de Shamir, pois isso é considerado informação pública e é necessário para a recuperação O esquema de compartilhamento de segredos de Shamir.

Recuperação do segredo

Já discutimos o conceito de interpolação polinomial e que ele está na base do esquema de limite de Shamir O esquema de compartilhamento de segredos de Shamir. Quando quaisquer três dos quatro indivíduos de confiança desejam recuperar O esquema de compartilhamento de segredos de Shamir, eles precisam apenas interpolar O esquema de compartilhamento de segredos de Shamir com seus pontos únicos. Para isso, podem determinar seus pontos O esquema de compartilhamento de segredos de Shamir e calcular o polinômio de interpolação de Lagrange, usando a seguinte fórmula. Se você entende programação melhor do que matemática, então pi é basicamente o operador para, que multiplica todos os resultados, e sigma é para, que soma tudo.

O esquema de compartilhamento de segredos de Shamir

O esquema de compartilhamento de segredos de Shamir

Ao O esquema de compartilhamento de segredos de Shamir podemos resolver isso da seguinte forma e retornar nossa função polinomial original:

O esquema de compartilhamento de segredos de Shamir

Como sabemos que O esquema de compartilhamento de segredos de Shamir, a recuperação O esquema de compartilhamento de segredos de Shamir é feita simplesmente:

O esquema de compartilhamento de segredos de Shamir

Uso de aritmética inteira insegura

Embora tenhamos aplicado com sucesso a ideia central de Shamir O esquema de compartilhamento de segredos de Shamir, ainda temos um problema que ignoramos até agora. Nossa função polinomial usa aritmética inteira insegura. Note que para cada ponto adicional que um atacante obtém no gráfico de nossa função, resta menos oportunidades para outros pontos. Você pode ver isso por si mesmo ao construir o gráfico com um número crescente de pontos para uma função polinomial usando aritmética inteira. Isso é contraproducente para nosso objetivo declarado de segurança, porque um invasor não deve saber absolutamente nada até que tenha pelo menos O esquema de compartilhamento de segredos de Shamir fragmentos.

Para demonstrar o quão fraca é a esquema de aritmética inteira, consideremos um cenário em que um invasor obteve dois pontos O esquema de compartilhamento de segredos de Shamir e sabe a informação pública, que O esquema de compartilhamento de segredos de Shamir. A partir dessa informação, ele pode deduzir O esquema de compartilhamento de segredos de Shamir, igual a dois, e conectar os valores conhecidos na fórmula O esquema de compartilhamento de segredos de Shamir e O esquema de compartilhamento de segredos de Shamir.

O esquema de compartilhamento de segredos de Shamir

Em seguida, o invasor pode encontrar O esquema de compartilhamento de segredos de Shamir, calculando O esquema de compartilhamento de segredos de Shamir:

O esquema de compartilhamento de segredos de Shamir

Uma vez que definimos O esquema de compartilhamento de segredos de Shamir como números inteiros positivos escolhidos aleatoriamente, há um número limitado de possíveis O esquema de compartilhamento de segredos de Shamir. Com essa informação, o invasor pode deduzir O esquema de compartilhamento de segredos de Shamir, uma vez que qualquer coisa maior do que 5 tornará O esquema de compartilhamento de segredos de Shamir negativo. Isso se revela verdadeiro, pois definimos O esquema de compartilhamento de segredos de Shamir

Então o invasor pode calcular os valores possíveis O esquema de compartilhamento de segredos de Shamir, substituindo O esquema de compartilhamento de segredos de Shamir em O esquema de compartilhamento de segredos de Shamir:

O esquema de compartilhamento de segredos de Shamir

Com um conjunto limitado de opções para O esquema de compartilhamento de segredos de Shamir torna-se claro o quão fácil é ajustar e verificar os valores O esquema de compartilhamento de segredos de Shamir. Aqui, existem apenas cinco opções.

Solução para o problema da aritmética inteira insegura

Para eliminar essa vulnerabilidade, Shamir propõe o uso de aritmética modular, substituindo O esquema de compartilhamento de segredos de Shamir para O esquema de compartilhamento de segredos de Shamir, onde O esquema de compartilhamento de segredos de Shamir e O esquema de compartilhamento de segredos de Shamir — o conjunto de todos os números primos.

Vamos lembrar rapidamente como funciona a aritmética modular. Relógios de ponteiro são uma ideia familiar. Eles utilizam horas que são O esquema de compartilhamento de segredos de Shamir. Assim que o ponteiro das horas passa das doze, ele retorna a uma. Uma propriedade interessante desse sistema é que, simplesmente olhando para o relógio, não conseguimos deduzir quantas voltas o ponteiro das horas deu. Contudo, se soubermos que o ponteiro das horas passou por 12 quatro vezes, podemos determinar completamente a quantidade de horas passadas usando uma fórmula simples O esquema de compartilhamento de segredos de Shamir, onde O esquema de compartilhamento de segredos de Shamir — esse é o nosso divisor (aqui O esquema de compartilhamento de segredos de Shamir), O esquema de compartilhamento de segredos de Shamir — é o coeficiente (quantas vezes o divisor se encaixa no número original sem resto, aqui O esquema de compartilhamento de segredos de Shamir), e O esquema de compartilhamento de segredos de Shamir — é o resto, que geralmente é retornado pela chamada do operador de módulo (aqui O esquema de compartilhamento de segredos de Shamir). Conhecer todos esses valores nos permite resolver a equação para O esquema de compartilhamento de segredos de Shamir, mas se perdermos o coeficiente, nunca conseguiremos recuperar o valor original.

Podemos demonstrar como isso melhora a segurança de nosso esquema, aplicando o esquema ao nosso exemplo anterior e usando O esquema de compartilhamento de segredos de Shamir. Nossa nova função polinomial O esquema de compartilhamento de segredos de Shamir, e os novos pontos O esquema de compartilhamento de segredos de Shamir. Agora os guardiões da chave podem usar novamente a interpolação polinomial para recuperar nossa função, apenas desta vez as operações de adição e multiplicação devem ser acompanhadas de redução pelo módulo O esquema de compartilhamento de segredos de Shamir (e.g. O esquema de compartilhamento de segredos de Shamir).

Usando este novo exemplo, suponha que o invasor descobriu dois desses novos pontos, O esquema de compartilhamento de segredos de Shamir, e as informações públicas O esquema de compartilhamento de segredos de Shamir. Desta vez, o atacante, com base em todas as informações disponíveis, extrai as seguintes funções, onde O esquema de compartilhamento de segredos de Shamir — é o conjunto de todos os números inteiros positivos, e O esquema de compartilhamento de segredos de Shamir representa o coeficiente do módulo O esquema de compartilhamento de segredos de Shamir.

O esquema de compartilhamento de segredos de Shamir

Agora nosso criminoso novamente encontra O esquema de compartilhamento de segredos de Shamir, calculando O esquema de compartilhamento de segredos de Shamir:

O esquema de compartilhamento de segredos de Shamir

Em seguida, ele tenta extrair novamente O esquema de compartilhamento de segredos de Shamir, substituindo O esquema de compartilhamento de segredos de Shamir em O esquema de compartilhamento de segredos de Shamir:

O esquema de compartilhamento de segredos de Shamir

Desta vez, ele tem um sério problema. Faltam valores na fórmula O esquema de compartilhamento de segredos de Shamir, O esquema de compartilhamento de segredos de Shamir e O esquema de compartilhamento de segredos de Shamir. Como há um número infinito de combinações dessas variáveis, ele não pode obter mais informações.

Considerações de segurança

O esquema de compartilhamento de segredo de Shamir oferece segurança sob a perspectiva da teoria da informação. Isso significa que a matemática é robusta mesmo contra um atacante com poder computacional ilimitado. No entanto, o esquema ainda contém alguns problemas conhecidos.

Por exemplo, o esquema de Shamir não cria fragmentos verificáveis, ou seja, as pessoas podem livremente apresentar fragmentos falsos e dificultar a recuperação do segredo correto. Um guardião hostil de fragmentos com informações suficientes pode até gerar um outro fragmento, alterando O esquema de compartilhamento de segredos de Shamir ao seu critério. Este problema é resolvido com esquemas verificáveis de compartilhamento de segredo, como o esquema de Feldman.

Outro problema é que o comprimento de qualquer fragmento é igual ao comprimento do respectivo segredo, tornando fácil determinar o tamanho do segredo. Este problema é resolvido com uma preenchimento do segredo com números aleatórios até um comprimento fixo.

Finalmente, é importante notar que nossas preocupações de segurança podem ir além do próprio esquema. Para aplicações criptográficas reais, frequentemente existe a ameaça de ataques por canais laterais, onde um atacante tenta extrair informações úteis do tempo de execução do aplicativo, cache, falhas, etc. Se isso for uma preocupação, medidas de proteção, como funções e buscas com tempo de execução constante, devem ser cuidadosamente consideradas durante o desenvolvimento, prevenir a gravação de memória em disco, e pensar em uma série de outras coisas que vão além deste artigo.

Demonstração

Sobre nesta página há uma demonstração interativa do esquema de compartilhamento de segredo de Shamir. A demonstração é baseada na biblioteca ssss-js, que é um porto JavaScript do popular programa ssss. Observe que o cálculo de grandes valores O esquema de compartilhamento de segredos de Shamir, O esquema de compartilhamento de segredos de Shamir e O esquema de compartilhamento de segredos de Shamir pode levar algum tempo.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster