|
1 | 1 | --- |
2 | 2 | meta: |
3 | 3 | title: Cryptographic details of Scaleway Key Manager |
4 | | - description: This document details the cryptographic mechanisms of Scaleway Key Manager with adherence to ANSSI-PA-079 recommendations |
| 4 | + description: This page describes the cryptographic mechanisms used by Scaleway Key Manager, in accordance with ANSSI-PA-079 recommendations. |
5 | 5 | content: |
6 | 6 | h1: Cryptographic details of Scaleway Key Manager |
7 | | - paragraph: This document details the cryptographic mechanisms of Scaleway Key Manager with adherence to ANSSI-PA-079 recommendations |
| 7 | + paragraph: This page describes the cryptographic mechanisms used by Scaleway Key Manager, in accordance with ANSSI-PA-079 recommendations. |
8 | 8 | tags: key-manager security |
| 9 | +categories: |
| 10 | + - identity-and-access-management |
9 | 11 | dates: |
10 | | - validation: 2025-04-30 |
11 | | - posted: 2025-04-30 |
| 12 | + validation: 2025-05-12 |
| 13 | + posted: 2025-05-12 |
12 | 14 | --- |
13 | 15 |
|
14 | 16 | ## Cryptographic primitives |
15 | 17 |
|
16 | 18 | ### Random number generation |
17 | 19 |
|
18 | | -#### Generating KEKs |
| 20 | +#### Key encryption key (KEK) generation |
19 | 21 |
|
20 | | -Scaleway Key Manager uses a **Cryptographically Secure Pseudorandom Number Generator (CSPRNG)** |
21 | | -to generate both keying material for managed keys and cryptographic unique IVs. |
| 22 | +Scaleway Key Manager uses a **C**ryptographically **S**ecure **P**seudorandom **N**umber **G**enerator (CSPRNG) to generate both keying material for managed keys and cryptographically unique initialization vectors (IVs). |
22 | 23 |
|
23 | | -The CSPRNG relies on recent Linux provided ChaCha-based PRNG, which is seeded with high-entropy and unpredictable sources: |
24 | | - - Timing variations from hardware events |
25 | | - - True Random Number Generators (TRNGs), such as the `RDSEED`/`RDRAND` instructions on AMD64 family processors |
| 24 | +This CSPRNG is based on the ChaCha-based pseudorandom number generator provided by modern Linux kernels. It is seeded with high-entropy, unpredictable sources, such as: |
| 25 | + |
| 26 | +- Timing variations from hardware events |
| 27 | +- True Random Number Generators (TRNGs), including the `RDSEED` and `RDRAND` instructions available on AMD64 processors |
26 | 28 |
|
27 | 29 | <Message type="note"> |
28 | | -Conforms to ANSSI-PA-079 R14. |
| 30 | + Complies with ANSSI-PA-079 Recommendation R14. |
29 | 31 | </Message> |
30 | 32 |
|
31 | | -<Message type="warning"> |
32 | | -That section does not apply to key imported by users via the Bring Your Own Key (BYOK) mechanism. |
| 33 | +<Message type="important"> |
| 34 | + The information in the section above does not apply to keys imported via the Bring Your Own Key (BYOK) mechanism. |
33 | 35 | </Message> |
34 | 36 |
|
35 | 37 |
|
36 | 38 | #### Customer-provided KEKs (BYOK) |
37 | 39 |
|
38 | | -Scaleway's Key Manager supports Bring Your Own Key (BYOK), so customer can import their |
39 | | -own key material without relying on Scaleway to generate keys for them. In this case, |
40 | | -the user has the responsibility to provide a strong key material. |
| 40 | +Scaleway Key Manager supports Bring Your Own Key (BYOK), allowing customers to import their own key material. In this model, Scaleway does not generate keys on behalf of the customer. Instead, the responsibility for generating strong key material lies with the user. |
41 | 41 |
|
42 | | -The provided material is not used as is. It is derived using the **HKDF algorithm with SHA2-256** |
43 | | -as the hash algorithm, with secure random bytes injected as salt. |
| 42 | +Imported key material is is not used directly, but processed using the **HKDF algorithm with SHA-256** as the hash function, incorporating secure random bytes as salt. |
44 | 43 |
|
45 | 44 | ### Symmetric encryption |
46 | 45 |
|
47 | | -Scaleway Key Manager uses **AES-256-GCM** (AES with 256-bit key in Galois Counter Mode) with |
48 | | -authenticated associated data (AEAD) to encrypt and decrypt user-provided payload. |
49 | | - |
50 | | -To reduce the risk of key overuse, plaintext payloads cannot exceed 64 KiB. |
| 46 | +Scaleway Key Manager uses **AES-256-GCM** (AES with a 256-bit key in Galois/Counter Mode) with authenticated associated data (AEAD) for encrypting and decrypting user payloads. |
51 | 47 |
|
52 | | -For each encryption operation, a 96-bit Initialization Vector (IV) |
53 | | -is generated using the CSPRNG described in the previous section. |
| 48 | +To reduce the risk of key overuse, plaintext payloads are limited to a maximum size of 64 KiB. a unique 96-bit initialization vector (IV) is generated using the CSPRNG described in the section above. |
54 | 49 |
|
55 | 50 | <Message type="note"> |
56 | | -Conforms to ANSSI-PA-079 R1, R4, R12. |
| 51 | + Complies with ANSSI-PA-079 Recommendations R1, R4, and R12. |
57 | 52 | </Message> |
58 | 53 |
|
59 | | -<Message type="warning"> |
60 | | -The Key Manager uses AES-256-GCM algorithm internally, but this does not constrain users to the same algorithm for their DEKs. |
61 | | -We recommend using cryptographic libraries like Tink, which handle DEK management with robust and reviewed algorithms. |
62 | | -Scaleway provides a Tink integrations for Go and Python, which is the preferred integration method. |
63 | | - - [Tink Python integration](https://github.com/scaleway/tink-py-scwkms) |
64 | | - - [Ting Go integration](https://github.com/scaleway/tink-go-scwkms) |
| 54 | +<Message type="important"> |
| 55 | + While Key Manager internally uses AES-256-GCM, this does not restrict users to the same algorithm for their data encryption keys (DEKs). |
| 56 | + We recommend using cryptographic libraries like Tink, which handle DEK management with robust and reviewed algorithms. |
| 57 | + Scaleway provides Tink integrations for Go and Python, which is the preferred integration method. |
| 58 | + |
| 59 | + - [Tink Python integration](https://github.com/scaleway/tink-py-scwkms) |
| 60 | + - [Ting Go integration](https://github.com/scaleway/tink-go-scwkms) |
65 | 61 |
|
66 | 62 | </Message> |
0 commit comments