In cryptography, secret sharing schemes are schemes that split shares of a given secret among a set of trusted participants. This secret could be a very important piece of information that may be needed in the future but needs to be kept private and secure. These shares are completely useless on their own, however, when put together reconstruct the secret and make it apparent. As a thought experiment; think of secret sharing schemes as a puzzle where the puzzle pieces are split among ten players but are completely blank. The image that the puzzle creates is only visible once all the pieces are put together. This article discusses a well known approach: Shamir’s Secret Sharing (SSS).
The kind of data that is best suited for a secret sharing algorithm is information that must be kept absolutely private, but must also be stored securely and never lost. Typically, you’d use secret sharing for access keys to accounts with highly sensitive information in them. The goal is to spread the key out from one geographic location into multiple — so that in order to compromise a system, you’d need to compromise devices in distinct locations first. There are multiple kinds of secret sharing algorithms: the one we’ll be discussing is Shamir’s Secret Sharing (SSS).
Adi Shamir’s scheme is a securely encrypted secret sharing scheme that requires some or all participants are needed to reconstruct a secret. Shamir’s Secret Sharing allows for a hierarchical schema where some participants may be more trustworthy than another. For example; when running Shamir’s scheme for a private key and sharing it among friends and family, one could grant family members greater authority in the scheme and friends lesser authority in the scheme.
Considering the nature of how Shamir’s scheme is built, a threshold parameter can be specified during the creation of the scheme. Instead of requiring that every single share is present to reconstruct a key like a puzzle, Shamir’s scheme requires a threshold number of shares. The value of this threshold is at the discretion of the secret sharer. The secret sharer could choose to require every single share for reconstruction of the key or three-quarters of all shares held by participants.
Shamir’s Secret Sharing has the following properties:
- Dynamic: The scheme allows for a secret owner to amend the rules of a given secret securely. This means a person sharing a secret among a set of participants could use their status as the secret owner to create more splits of a key and distribute those to more participants if he or she so chose. Or, the secret owner could remove some participants remotely from the scheme — all while leaving the other participants in the secret sharing scheme completely unaffected.
- Secure: Shamir’s scheme is cryptanalytically unbreakable in its encryption model in that no holder of a share can uncover the shared secret without first gaining access to the threshold number of secret shares. The secret will be kept absolutely secure and confidential from participants in the scheme. Only the secret sharer will see the original data from the deconstruction and reconstruction of the data.
With such properties, Shamir’s Secret Sharing could have a wide array of use cases for the preservation of sensitive data. Two examples that we’ll discuss are the secure and private preservation of private keys or passwords and images of sensitive balance restoration keys.
In our implementation of Shamir’s Secret Sharing we introduce a mobile application that lets users assign friends and family as guardians of their secret. We see private keys to cryptocurrency balances and seed phrases for the recovery of wallets as some of the best-suited secrets to utilize Shamir’s Secret Sharing for.
Shamir’s Secret Sharing is an intriguing cryptography scheme that is a useful tool for decentralizing custody of sensitive data. However, it is not suited for the maintenance of just any secretive data. Since the scheme entails assigning participants to store shares of a secret, these participants need to be trusted. While the encryption scheme renders it impossible for participants to derive anything from the share they receive, multiple participants could collude together to meet the threshold requirement of shares and uncover that secret. Therefore, it is important that people you share a secret with using an implementation of Shamir’s Secret Sharing are trustworthy.
Using an application built on Shamir’s Secret Sharing doesn’t beg the question of whether or not it’s a greater layer of security for the storage of a secret — but rather, whether or not a specific situation is suitable for decentralized and trusted custody of a secret.
In future articles, we will describe how Shamir’s Secret Sharing is implemented inside the Vault12 platform.