-
Notifications
You must be signed in to change notification settings - Fork 9
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
Add KMS driver guide to 3.x docs #835
base: main
Are you sure you want to change the base?
Conversation
The Canton protocol relies on a number of cryptographic operations such as | ||
asymmetric encryption and digital signatures. To maximize the | ||
operational security of a Canton node the corresponding private keys should not | ||
be stored or processed in cleartext. A Key Management System (KMS) or Hardware | ||
Security Module (HSM) allows us to perform such cryptographic operations where | ||
the private key resides securely inside the KMS/HSM. All nodes in Canton can | ||
make use of a KMS. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Canton protocol relies on a number of cryptographic operations such as | |
asymmetric encryption and digital signatures. To maximize the | |
operational security of a Canton node the corresponding private keys should not | |
be stored or processed in cleartext. A Key Management System (KMS) or Hardware | |
Security Module (HSM) allows us to perform such cryptographic operations where | |
the private key resides securely inside the KMS/HSM. All nodes in Canton can | |
make use of a KMS. | |
The Canton protocol relies on cryptographic operations such as | |
asymmetric encryption and digital signatures. To maximize the | |
operational security of a Canton node the corresponding private keys should not | |
be stored or processed in cleartext. A Key Management System (KMS) or Hardware | |
Security Module (HSM) allows you to perform cryptographic operations where | |
the private key resides securely inside the KMS/HSM. All nodes in Canton can | |
make use of a KMS. |
make use of a KMS. | ||
|
||
AWS KMS and Google Cloud KMS are supported as of Canton v2.7. To broaden the | ||
support of other KMSs and HSMs, Canton v2.9 introduces a plugin approach, called |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
support of other KMSs and HSMs, Canton v2.9 introduces a plugin approach, called | |
support of other KMSs and HSMs, Canton v2.9 introduces a plug-in approach, called |
run with a KMS driver. An implementation needs to be developed for the JVM, | ||
currently only Scala is supported. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
run with a KMS driver. An implementation needs to be developed for the JVM, | |
currently only Scala is supported. | |
run with a KMS Driver. Currently, the KMS Driver is only available in a Scala implementation. |
1. Driver Factory: Implements how a driver is instantiated and the main entry | ||
point for Canton to load a driver. | ||
|
||
2. KMS Driver: The actual KMS driver API that offers cryptographic operations | ||
based on the KMS. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
1. Driver Factory: Implements how a driver is instantiated and the main entry | |
point for Canton to load a driver. | |
2. KMS Driver: The actual KMS driver API that offers cryptographic operations | |
based on the KMS. | |
- Driver Factory: Implements how a driver is instantiated; the main entry | |
point for Canton to load a driver. | |
- KMS Driver: Offers cryptographic operations based on the KMS. |
change to either the factory or driver APIs will result in a new major version | ||
of those APIs. The current and only version is **v1**, which is part of the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
change to either the factory or driver APIs will result in a new major version | |
of those APIs. The current and only version is **v1**, which is part of the | |
change to either the factory or driver APIs results in a new major version | |
of those APIs. The current and only version is **v1**, which is part of the |
failed with a ``KmsDriverException``. When the exception's flag retryable is | ||
true the caller side, i.e., Canton, performs a retry with exponential | ||
backoff. This behavior is suitable for transient errors, such as network issues, | ||
resource exhaustion etc. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
resource exhaustion etc. | |
resource exhaustion, etc. |
The major part of the implementation is the ``v1.KmsDriver`` that is specific to | ||
the KMS/HSM to be integrated with. The supported key and algorithm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The major part of the implementation is the ``v1.KmsDriver`` that is specific to | |
the KMS/HSM to be integrated with. The supported key and algorithm | |
The major part of the implementation is the ``v1.KmsDriver`` specific to | |
the KMS/HSM to be integrated with. The supported key and algorithm |
:end-before: user-manual-entry-end: AwsKmsDriverTest | ||
|
||
Generating new keys can be expensive when running tests during | ||
development, in particular when using cloud-based KMSs. To mitigate this, the test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
development, in particular when using cloud-based KMSs. To mitigate this, the test | |
development, particularly with cloud-based KMSs. To mitigate this, the test |
KmsDriverFactoryTest | ||
^^^^^^^^^^^^^^^^^^^^ | ||
|
||
The test suite for the KMS driver factory is structured similarly to the above: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test suite for the KMS driver factory is structured similarly to the above: | |
The test suite for the KMS Driver factory is structured similarly to the above: |
Run Canton with a KMS Driver | ||
---------------------------- | ||
|
||
Configure Canton to run with a KMS driver, for example, for a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Configure Canton to run with a KMS driver, for example, for a | |
Configure Canton to run with a KMS Driver, for example, for a |
No description provided.