Aller au contenu principal

Proactive secret sharing


Proactive secret sharing


Proactive secret sharing is an underlying technique in Proactive Security Protocols. It is a method to update distributed keys (shares) in a secret sharing scheme periodically such that an attacker has less time to compromise shares and as long as the attacker visits less than a threshold or a quorum group, the system remains secure. This contrasts to a non-proactive scheme where if the threshold number of shares are compromised during the lifetime of the secret, the secret is compromised. The model which takes time constraints into account was originally suggested as an extension of the notion of Byzantine fault tolerance where redundancy of sharing allows robustness into the time domain (periods) and was proposed by Rafail Ostrovsky and Moti Yung in 1991. The method has been used in the areas of cryptographic protocols in secure multi-party computation and in threshold cryptosystems.

Motivation

If the players (holders of the shared secret) store their shares on insecure computer servers, an attacker could crack in and steal/learn the shares. Since it is not often practical to change the secret, the un-compromised (honest) (Shamir-style) shares should be updated in a way that they generate the same secret, yet the old shares are invalidated. There is also a need to recover shares of previously corrupted servers, and the community of honest server is needed to perform the recovery. This assures the longevity of the secure and recoverable sharing, or secure and correct secure computation protocols. If one needs to maintain sharing while changing the number of servers or the threshold, then proactive method with share recovery enables this, as was originally shown by Frankel and others. The ability of distributing the secret (codeword) and then recovering the distributed shares as the proactive secret sharing method does, was recognized as much needed in storage systems around 2010, and in reaction, coding theorists renamed the method, further refined it, and formalized is as `regenerating codes' and `locally recoverable codes.'

Mathematics

This follows somewhat the work in. In order to update the shares, the dealers (i.e., the persons who gives out the shares; and in a distributed system it is all participants one at a time) generates a new random polynomial with constant term zero and calculates for each remaining player a new ordered pair, where the x-coordinates of the old and new pairs are the same. Each player then adds the old and new y-coordinates to each other and keeps the result as the new y-coordinate of the secret.

  • The dealer constructs a random polynomial over a field of degree k 1 {\displaystyle k-1} where k {\displaystyle k} is the threshold
  • Each player gets the share x i 0 = f 0 ( i ) {\displaystyle x_{i}^{0}=f^{0}(i)} where i { 1 , . . . , n } {\displaystyle i\in \{1,...,n\}} , n {\displaystyle n} is the number of players, and x i 0 {\displaystyle x_{i}^{0}} is the share for player i {\displaystyle i} at time interval 0 {\displaystyle 0}
  • The secret can be reconstructed via interpolation of k {\displaystyle k} shares
  • To update the shares, all parties need to construct a random polynomial of the form δ i ( z ) = δ i , 1 z 1 + δ i , 2 z 2 + . . . + δ i , k z k 1 {\displaystyle \delta _{i}(z)=\delta _{i,1}z^{1}+\delta _{i,2}z^{2}+...+\delta _{i,k}z^{k-1}}
  • Each player i {\displaystyle i} sends all other players u i , j = δ i ( j ) {\displaystyle u_{i,j}=\delta _{i}(j)}
  • Each player updates their share by x i t + 1 = x i t + u 1 , i t + . . . + u n , i t {\displaystyle x_{i}^{t+1}=x_{i}^{t}+u_{1,i}^{t}+...+u_{n,i}^{t}} where t {\displaystyle t} is the time interval in which the shares are valid

All of the non-updated shares the attacker accumulated become useless. An attacker can only recover the secret if he can find enough other non-updated shares to reach the threshold. This situation should not happen because the players deleted their old shares. Additionally, an attacker cannot recover any information about the original secret from the update process because it only contains random information.

The dealer can change the threshold number while distributing updates, but must always remain vigilant of players keeping expired shares as in. However this is a somewhat limited view since the original methods gives the community of server the ability to be the re-sharing dealer and the regenerator of lost shares.

Example

The following example has 2 shares and a threshold of 2 with 2 players and 1 dealer. Since shares and polynomials are only valid for a certain time period, the time period they are valid is denoted with a superscript.

  • All parties agree on a finite field: Z 11 {\displaystyle Z_{11}}
  • The dealer establishes a secret: s = 6 Z 11 {\displaystyle s=6\in Z_{11}}
  • The dealer constructs a random polynomial over Z 11 {\displaystyle Z_{11}} of degree 2 - 1 (threshold of 2)
    • f 0 ( x ) = 6 + 2 × x {\displaystyle f^{0}(x)=6+2\times x}
    • note f 0 ( 0 ) = s = 6 {\displaystyle f^{0}(0)=s=6}
  • Player 1 gets share x 1 0 = f 0 ( 1 ) = 6 + 2 × 1 = 8 {\displaystyle x_{1}^{0}=f^{0}(1)=6+2\times 1=8} and player 2 gets share x 2 0 = f 0 ( 2 ) = 6 + 2 × 2 = 10 {\displaystyle x_{2}^{0}=f^{0}(2)=6+2\times 2=10}
  • To reconstruct the secret, use x 1 0 {\displaystyle x_{1}^{0}} and x 2 0 {\displaystyle x_{2}^{0}}
    • Since f 0 ( x ) {\displaystyle f^{0}(x)} is a line, we can use point slope form to interpolate
    • m = ( f 0 ( 2 ) f 0 ( 1 ) ) / ( 2 1 ) = ( x 2 0 x 1 0 ) / ( 2 1 ) = ( 10 8 ) / ( 2 1 ) = 2 / 1 = 2 {\displaystyle m=(f^{0}(2)-f^{0}(1))/(2-1)=(x_{2}^{0}-x_{1}^{0})/(2-1)=(10-8)/(2-1)=2/1=2}
    • b = f 0 ( 1 ) m = x 1 0 2 = 8 2 = 6 {\displaystyle b=f^{0}(1)-m=x_{1}^{0}-2=8-2=6}
    • f 0 ( x ) = b + m × x = 6 + 2 × x {\displaystyle f^{0}(x)=b+m\times x=6+2\times x}
    • f 0 ( 0 ) = 6 + 2 × 0 = 6 = s {\displaystyle f^{0}(0)=6+2\times 0=6=s}
  • To update the shares, all parties need to construct random polynomials of degree 1 such that the free coefficient is zero
    • Player 1 constructs δ 1 0 ( z ) = δ 1 , 1 0 × z 1 = 2 × z 1 {\displaystyle \delta _{1}^{0}(z)=\delta _{1,1}^{0}\times z^{1}=2\times z^{1}}
    • Player 2 constructs δ 2 0 ( z ) = δ 2 , 1 0 × z 1 = 3 × z 1 {\displaystyle \delta _{2}^{0}(z)=\delta _{2,1}^{0}\times z^{1}=3\times z^{1}}
  • Each player evaluates their polynomial and shares some information with other players
    • Player 1 computes u 1 , 1 0 = δ 1 0 ( 1 ) = 2 {\displaystyle u_{1,1}^{0}=\delta _{1}^{0}(1)=2} and u 1 , 2 0 = δ 1 0 ( 2 ) = 4 {\displaystyle u_{1,2}^{0}=\delta _{1}^{0}(2)=4} in Z 11 {\displaystyle Z_{11}}
    • Player 1 sends Player 2 u 1 , 2 0 {\displaystyle u_{1,2}^{0}}
    • Player 2 computes u 2 , 1 0 = δ 2 0 ( 1 ) = 3 {\displaystyle u_{2,1}^{0}=\delta _{2}^{0}(1)=3} and u 2 , 2 0 = δ 2 0 ( 2 ) = 6 {\displaystyle u_{2,2}^{0}=\delta _{2}^{0}(2)=6} in Z 11 {\displaystyle Z_{11}}
    • Player 2 sends Player 1 u 2 , 1 0 {\displaystyle u_{2,1}^{0}}
  • Each player updates their share by x i 1 = x i 0 + u 1 , i 0 + u 2 , i 0 {\displaystyle x_{i}^{1}=x_{i}^{0}+u_{1,i}^{0}+u_{2,i}^{0}}
    • Player 1 computes x 1 1 = x 1 0 + u 1 , 1 0 + u 2 , 1 0 = 8 + 2 + 3 = 2 Z 11 {\displaystyle x_{1}^{1}=x_{1}^{0}+u_{1,1}^{0}+u_{2,1}^{0}=8+2+3=2\in Z_{11}}
    • Player 2 computes x 2 1 = x 2 0 + u 1 , 2 0 + u 2 , 2 0 = 10 + 4 + 6 = 9 Z 11 {\displaystyle x_{2}^{1}=x_{2}^{0}+u_{1,2}^{0}+u_{2,2}^{0}=10+4+6=9\in Z_{11}}
  • Confirm updated shares generate same original secret
    • Use x 1 1 {\displaystyle x_{1}^{1}} and x 2 1 {\displaystyle x_{2}^{1}} to reconstruct the polynomial f 1 ( x ) {\displaystyle f^{1}(x)}
    • Since f 1 ( x ) {\displaystyle f^{1}(x)} is a line, we can use point slope
    • m = ( f 1 ( 2 ) f 1 ( 1 ) ) / ( 2 1 ) = ( x 2 1 x 1 1 ) / ( 2 1 ) = ( 9 2 ) / ( 2 1 ) = 7 / 1 = 7 {\displaystyle m=(f^{1}(2)-f^{1}(1))/(2-1)=(x_{2}^{1}-x_{1}{1})/(2-1)=(9-2)/(2-1)=7/1=7}
    • b = f 1 ( 1 ) m = x 1 1 7 = 2 7 = 5 = 6 {\displaystyle b=f^{1}(1)-m=x_{1}^{1}-7=2-7=-5=6}
    • f 1 ( x ) = b + m × x = 6 + 7 × x {\displaystyle f^{1}(x)=b+m\times x=6+7\times x}
    • f 1 ( 0 ) = 6 + 7 × 0 = 6 = s {\displaystyle f^{1}(0)=6+7\times 0=6=s}

See also

  • Key (cryptography)
  • Key generation
  • Key distribution
  • Key management
  • Shamir's Secret Sharing

References

Collection James Bond 007

Text submitted to CC-BY-SA license. Source: Proactive secret sharing by Wikipedia (Historical)



ghbass