Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Utilizing Shamir's Secret Sharing Algorithm for Secure Key Vault Access #1757

Closed
ImanSharaf opened this issue Oct 16, 2023 · 11 comments
Closed
Assignees
Labels
1) Discussion ongoing Issue is opened and assigned but no clear proposal yet _5.0 - prep This needs to be addressed to prepare 5.0

Comments

@ImanSharaf
Copy link
Collaborator

The current iteration of OWASP ASVS does not have a control or recommendation regarding the use of Shamir's Secret Sharing algorithm to manage access to key vaults. In sensitive scenarios, utilizing Shamir’s algorithm allows the distribution of access among multiple parties, ensuring no single individual can access the key vault.

Example Use Case:
Consider a financial institution that maintains a key vault for encrypting sensitive customer data. To avoid the risk associated with a single individual having access, the institution can employ Shamir's Secret Sharing algorithm to divide the access key into multiple shares. A predefined number of these shares are required to reconstruct the original key and access the vault, thereby distributing the responsibility and enhancing security.

@ImanSharaf ImanSharaf added the 1) Discussion ongoing Issue is opened and assigned but no clear proposal yet label Oct 17, 2023
@Sjord
Copy link
Contributor

Sjord commented Oct 18, 2023

If this would become a requirement, the requirement should probably be "only allow access to a key vault with consent of at least two persons", instead of "use Shamir's Secret Sharing Algorithm".

I think this could be a useful security measure in some cases, which certain companies should consider, but I would not require it.

@elarlang
Copy link
Collaborator

Ping for @jmanico and @tghosth

@tghosth
Copy link
Collaborator

tghosth commented Oct 23, 2023

This feels too specific to be covered for ASVS. It might be relevant for something like a secret vault cheat sheet but I think it is too detailed for ASVS.

@tghosth tghosth added the _5.0 - prep This needs to be addressed to prepare 5.0 label Oct 23, 2023
@elarlang
Copy link
Collaborator

@ImanSharaf - any arguments why it should be as separate requirement or some alternative solutions to mention/spotlight in other requirements?

@ImanSharaf
Copy link
Collaborator Author

@tghosth I believe Shamir's Secret Sharing can be too specific and we can have a more general thing such as "avoid the risk associated with a single individual having access to the key vault".

@elarlang I believe that works too.

@tghosth
Copy link
Collaborator

tghosth commented Oct 31, 2023

@ImanSharaf do you have a specific requirement that you think should be modified for this?

@ImanSharaf
Copy link
Collaborator Author

ImanSharaf commented Nov 6, 2023

I want to say that we can modify 6.4.1 and add "avoid the risk associated with a single individual having access to the key vault" but it makes it an L3 requirement. Can we have a separate requirement for this?

@jmanico
Copy link
Member

jmanico commented Nov 6, 2023

I want to say that we can modify 6.4.1 and add "avoid the risk associated with a single individual having access to the key vault" but it makes it an L3 requirement. Can we have a separate requirement for this?

Key management is really challenging. May I suggest that we focus on what to do, instead of what not to do? "Shamir's Secret Sharing" is just one method and there are many other ways to do really good scalable key management like https://code.cash.app/app-layer-encryption and similar.

There is also Blakley's secret sharing and many other sharing algorithms that are solid.

Also, Secret Sharing (SSS) Is not always needed. If you are in a scenario where you need to distribute trust among multiple parties and can't afford to have a single point of failure or a single trusted entity, SSS might be the better choice.

Sometimes, envelope encryption is just fine. If you are looking to manage encryption keys for data at rest and want the convenience of using cloud provider services with built-in auditing and compliance features, envelope encryption would be more suitable.

Also: Beyond SSS and envelope encryption, there are other key management strategies to consider, like hardware security modules (HSMs), cloud HSM, or multi-cloud key management systems, which provide hardware-backed key storage and cryptographic operations.

@tghosth
Copy link
Collaborator

tghosth commented Nov 8, 2023

Are we sure that there is a specific risk here?

As I see it, the risk which we are trying to prevent is that a single person with enough access to get to the secret vault directly steals a key.

Firstly, I don't think it should be possible to extract the keys from the vault anyway.

Secondly, generally the multi person operation is a one-time thing as the application needs to be able to access the secret vault on an ongoing basis. Someone with this level of internal access would probably be able to access the vault via the application anyway rendering the control less valuable.

As such, I am concerned that we are mandating a very specific requirement but I'm not sure that there is a specific risk we are addressing. It feels to me like the secret sharing mechanism would be useful in certain use cases but not as something that is universally mandated

@tghosth
Copy link
Collaborator

tghosth commented Jan 25, 2024

@ImanSharaf @jmanico what are your thoughts on my previous comment? Reproduced below:

Are we sure that there is a specific risk here?

As I see it, the risk which we are trying to prevent is that a single person with enough access to get to the secret vault directly steals a key.

Firstly, I don't think it should be possible to extract the keys from the vault anyway.

Secondly, generally the multi person operation is a one-time thing as the application needs to be able to access the secret vault on an ongoing basis. Someone with this level of internal access would probably be able to access the vault via the application anyway rendering the control less valuable.

As such, I am concerned that we are mandating a very specific requirement but I'm not sure that there is a specific risk we are addressing. It feels to me like the secret sharing mechanism would be useful in certain use cases but not as something that is universally mandated

@ImanSharaf
Copy link
Collaborator Author

ImanSharaf commented Feb 8, 2024

We can close this.

@elarlang elarlang closed this as completed Feb 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1) Discussion ongoing Issue is opened and assigned but no clear proposal yet _5.0 - prep This needs to be addressed to prepare 5.0
Projects
None yet
Development

No branches or pull requests

5 participants