Using Shamir secret sharing, one is starting with a secret and end up with a number of shares based on a polynomial.
For example:
INPUT: secret: 123456
Shares:4 Threshhold:2
OUTPUT (4 shares calculated):
8017f1267477aa02cf0e6c6b36c29
802fd24948eab5d04fd84912dd801
8038336c5c9e4fd1c0d5157acb419
804e4486f0114ba54e7403f0cad51
My question is whether one can start with both a secret and a string - representing ultimately a share in the end state - and work his way into finding the rest of the shares?
For example:
INPUT: secret: 123456
Shares:4 Threshhold:2 Future Share: 8017f1267477aa02cf0e6c6b36c29
OUTPUT (Shares Calculated):
802fd24948eab5d04fd84912dd801
8038336c5c9e4fd1c0d5157acb419
804e4486f0114ba54e7403f0cad51
At the end you can express safely a secret in the form of shares as before - only this time you provided one of the shares as input to the process?
The benefit I see in the above process is in sharing secrets with a structure and very low entropy i.e. a Credit card number or a username. Splitting the secret in shares and sending them encrypted will still leave them vulnerable to brute force attack due to the inherent structure of the secret.
If though you:
- use Diffie–Hellman key exchange for sharing 1 secret and use it as one of the future shares
- produce the rest $t - 1$ shares
- send the $t - 1$ shares encrypted
might this make the process more secure?