Skip to content

Commit ff63695

Browse files
committed
encrypt-data: Don't recommend AES-CBC
CBC is not recommended any more due to vulnerability to padding oracle attacks. Promote secretbox instead.
1 parent 552ac50 commit ff63695

File tree

1 file changed

+2
-5
lines changed

1 file changed

+2
-5
lines changed

content/en/docs/tasks/administer-cluster/encrypt-data.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@ resources:
5858
Each `resources` array item is a separate config and contains a complete configuration. The
5959
`resources.resources` field is an array of Kubernetes resource names (`resource` or `resource.group`)
6060
that should be encrypted. The `providers` array is an ordered list of the possible encryption
61-
providers. Only one provider type may be specified per entry (`identity` or `aescbc` may be provided,
62-
but not both in the same item).
61+
providers. Only one provider type may be specified per entry (`identity` or `aescbc` may be provided, but not both in the same item).
6362

6463
The first provider in the list is used to encrypt resources going into storage. When reading
6564
resources from storage each provider that matches the stored data attempts to decrypt the data in
@@ -78,9 +77,9 @@ read that resource will fail until it is deleted or a valid decryption key is pr
7877
Name | Encryption | Strength | Speed | Key Length | Other Considerations
7978
-----|------------|----------|-------|------------|---------------------
8079
`identity` | None | N/A | N/A | N/A | Resources written as-is without encryption. When set as the first provider, the resource will be decrypted as new values are written.
81-
`aescbc` | AES-CBC with PKCS#7 padding | Strongest | Fast | 32-byte | The recommended choice for encryption at rest but may be slightly slower than `secretbox`.
8280
`secretbox` | XSalsa20 and Poly1305 | Strong | Faster | 32-byte | A newer standard and may not be considered acceptable in environments that require high levels of review.
8381
`aesgcm` | AES-GCM with random nonce | Must be rotated every 200k writes | Fastest | 16, 24, or 32-byte | Is not recommended for use except when an automated key rotation scheme is implemented.
82+
`aescbc` | AES-CBC with PKCS#7 padding | Weak | Fast | 32-byte | Not recommended due to CBC's vulnerability to padding oracle attacks.
8483
`kms` | Uses envelope encryption scheme: Data is encrypted by data encryption keys (DEKs) using AES-CBC with PKCS#7 padding, DEKs are encrypted by key encryption keys (KEKs) according to configuration in Key Management Service (KMS) | Strongest | Fast | 32-bytes | The recommended choice for using a third party tool for key management. Simplifies key rotation, with a new DEK generated for each encryption, and KEK rotation controlled by the user. [Configure the KMS provider](/docs/tasks/administer-cluster/kms-provider/)
8584

8685
Each provider supports multiple keys - the keys are tried in order for decryption, and if the provider
@@ -215,5 +214,3 @@ and restart all `kube-apiserver` processes. Then run:
215214
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
216215
```
217216
to force all secrets to be decrypted.
218-
219-

0 commit comments

Comments
 (0)