Disenrollment of Parties in Secret Shares
Within a secret share infrastructure, we have a number of parties, and which receive secret shares. When we bring back these shares, we can rebuild a secret value (such as encryption key). But, what happens when you need to disenroll parties from the secret share? For this, we need to redeal the shares, without revealing the original share. So, let’s look at a basic disenrollment scheme.
Lagrange interpretation constants
Shamir’s secret sharing method generates a number of shares, of which a threshold defines the number of shares which can be used to re-build the message. With this, we define a threshold value (t) and where we have n shares. For a threshold of 3, we create a polynomial which is in the form of:
f(x)=a+bx+cx² (mod p)
The secret is a . With three parties involved we then create shares for the split with f(x=1), f(x=2) and f(x=3), and where f(x=0) is the secret. With these shares, we use Lagrange interpretation constants to rebuild the secret value (f(x=0)). For each party this is computed with:
In Python, this can be coded as:
def coef(i,n):
num=1
denom=1
for x in range(1, n+1):
if (x!=i):
num=num*x
denom=denom*(i-x)
return(num/denom)