|
1 | 1 | # Cryptography
|
2 | 2 |
|
3 | 3 | Various Cryptographic technologies are used to enable secure Snap Store Proxy operation.
|
4 |
| -Below is an outline of the various functions that use cryptographic technologies, |
| 4 | +Below are the functionalities of the Snap Store Proxy that use cryptographic technologies, |
5 | 5 | and the details of the cryptographic technologies used.
|
6 | 6 |
|
| 7 | +- **Signing assertions**: the Snap Store Proxy signs various |
| 8 | +[assertions](https://ubuntu.com/core/docs/reference/assertions). |
| 9 | +The key ID of the signing key is encoded with SHA3-384, and the assertion is signed with RSA. |
| 10 | + |
| 11 | +- **Hash of artefacts**: the Snap Store Proxy generates many hashes of an uploaded artefact |
| 12 | +using SHA3-384, SHA256 and SHA512 to ensure the uniqueness and integrity of the artefact. |
| 13 | + |
| 14 | +- **OCI charm resources credentials**: an OCI runtime |
| 15 | +(e.g. [microk8s](https://microk8s.io/docs)) must authenticate against the Snap Store Proxy |
| 16 | +in order to download the OCI [charm resources](https://juju.is/docs/juju/charm-resource). |
| 17 | +The credentials are encoded as JWT that are signed with RSA. |
| 18 | + |
| 19 | +- **Signing nonce**: A nonce is used as additional security for REST API access. |
| 20 | +RSA is used to sign and verify the nonce. |
| 21 | + |
| 22 | + |
7 | 23 | | Function | Exposed | Technology | Package/Library |
|
8 |
| -|------------------------------|---------|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
9 |
| -| Signing assertions | Yes | SHA3-384, RSA 4096/8192 | [snapd](https://github.com/canonical/snapd), [lp-signing](https://launchpad.net/lp-signing) | |
10 |
| -| Hash of artefacts | Yes | SHA3-384, SHA256, SHA512 | [review-tools](https://launchpad.net/review-tools) | |
11 |
| -| OCI charm resources password | Yes | RSA 4096, JWT | [cryptography](https://github.com/pyca/cryptography), [pyjwt](https://github.com/jpadilla/pyjwt), [py-macaroon-bakery](https://github.com/go-macaroon-bakery/py-macaroon-bakery) | |
12 |
| -| Nonce signing | Yes | RSA 4096 | [cryptography](https://github.com/pyca/cryptography), [pem](https://github.com/hynek/pem) | |
| 24 | +|---------------------------------|---------|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
| 25 | +| Signing assertions | Yes | SHA3-384, RSA 4096/8192 | [snapd](https://github.com/canonical/snapd), [lp-signing](https://launchpad.net/lp-signing) | |
| 26 | +| Hash of artefacts | Yes | SHA3-384, SHA256, SHA512 | [review-tools](https://launchpad.net/review-tools) | |
| 27 | +| OCI charm resources credentials | Yes | RSA 4096, JWT | [cryptography](https://github.com/pyca/cryptography), [pyjwt](https://github.com/jpadilla/pyjwt), [py-macaroon-bakery](https://github.com/go-macaroon-bakery/py-macaroon-bakery) | |
| 28 | +| Signing nonce | Yes | RSA 4096 | [cryptography](https://github.com/pyca/cryptography), [pem](https://github.com/hynek/pem) | |
0 commit comments