Blakley Secret Sharing

If you want to find out about other secret sharing methods using Shamir’s Secret Shares and with Chinese Remainder Theory, click here.

Photo by Kristina Flour on Unsplash

Blakley Secret Sharing

If you want to find out about other secret sharing methods using Shamir’s Secret Shares and with Chinese Remainder Theory, click here.

With secret sharing, we distribute n secret shares and then define that t of these shares can rebuild a secret. The value of t is known as the threshold. In this article I will use the example here. Blakley wrote about the method in 1979 [1]:

In Blakley’s method, we define a secret x, and then construct a number of hyperplanes. For example, we could define each share with a unique hyperplane of the form:

z = a x + b y + c (mod p)

We first define the secret value of x, and then select values of a, b and c for the secrets. If we have three secret shares, we would have:

a1 x + b1 y — z = -c1 (mod p) 
a2 x + b2 y — z = -c2 (mod p)
a3 x + b3 y — z = -c3 (mod p)

and to recover the secret, we need to find x. Now we can have a matrix form of:

If we take this example:

z = 4 x + 19 y + 68 (mod 73)
z = 52 x + 27 y + 10 (mod 73)
z = 36 x +65 y + 18 (mod 73)

We can arrange in the form:

We can then solve this for x, y and z with:

import numpy as np
from sympy import Matrix
p=73
A = np.array([[4, 19, -1], [52, 27, -1], [36, 65, -1]]) 
B = np.array([-68, -10, -18]) 

A = Matrix(A)
A = A.inv_mod(p)
print (A)
x = np.dot(A,B) % p
print (x)

A sample run shows that the secret is 42:

A= [[ 4 19 -1]
[52 27 -1]
[36 65 -1]]
B= [-68 -10 -18]
Inverse A (mod p) Matrix([[2, 36, 35], [70, 67, 9], [23, 30, 19]])
x= 42 y= 29 z= 57

A demo is defined here:

https://asecuritysite.com/shares/sss_bl?val1=97

References

[1] Blakley, G. R. (1979, June). Safeguarding cryptographic keys. In 1979 International Workshop on Managing Requirements Knowledge (MARK) (pp. 313–318). IEEE [here].