Given an application that has to acquire private keys (mainly RSA ones) from a Key Management System (KMS
), which could be a Hardware Security Module (HSM
), what could be the best way to implement that kind of client if there's no way to know in advance the KMS
implementation the application will have to deal with?
Sub-questions arise from the main one:
- Is there a unified client library that tries to close the gap between different implementation?
- One that targets
KMIP
(Key Management Interoperability Protocol) implementations at least would be a good example. - What language is it for? The more a same library aims, the better.
- Is there one for
Java
(what my application will run on, but I'm trying to keep the question open)?
- One that targets
- If there's none or little that aims multiple server implementations, are there specific clients for specific implementations? I'm thinking mostly about the most used ones amongst
SMBs
(Small and medium size businesses) and big companies.- What language is it for? The more a same library aims, the better.
- Are there some for
Java
?
- If none of those actually exist or if there's no client library for the implementation most needed, what would be the best way to design the application to be easily adaptable in the future to other implementations while focusing on a first one?
- I guess it would be a good idea to focus on a
KMIP
compliant one first?
- I guess it would be a good idea to focus on a
- Are there actual samples of working code out there on the internet? Even
UML
diagrams? This kind of resources feels quite scarce. - Am I just foolish to think all that exists and all of those implementations actually use
RESTful
APIs and everything has to be implemented on the client-side to adapt to every kind of server implementations?
Bonus question:
Is Google's Cloud Key Management Service
KMIP
compliant or not? It doesn't appear to be the case but I couldn't actually manage to find a clear yes
nor a clear no
.