Skip to content

Commit 65a77d1

Browse files
committed
document the threat model of the Role password fingerprint
The fingerprint is a keyed hash, not a password hash with a work factor. Without the key it reveals nothing about the password. With the key an attacker can test guesses offline at `HMAC-SHA256` speed, so the key Secret is a credential.
1 parent 3163512 commit 65a77d1

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

docs/role.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,16 @@ The Helm chart grants `create` on Secrets through a `Role` and `RoleBinding` in
6565
- If the key Secret is lost, the operator generates a new key and re-applies every `Role` password once.
6666
- After the upgrade to the version that introduced the fingerprint, every existing `Role` gets one password update, because its status has no fingerprint yet.
6767

68+
**Threat model:**
69+
70+
The fingerprint is a keyed hash. It is not a password hash with a work factor, such as `bcrypt` or `PBKDF2`.
71+
72+
- Without the key, the fingerprint reveals nothing about the password. A reader of the `Role` status alone cannot attack it. This includes a backup of etcd and a user with `get` on `Role` resources.
73+
- With the key, an attacker can test password guesses offline at `HMAC-SHA256` speed. Treat the key Secret as a credential. Keep the number of principals with `get` on Secrets in the operator namespace small.
74+
- An attacker who reads the key Secret can usually also read the password Secrets that the `Role` resources reference. In that case the fingerprint adds no exposure that the attacker does not already have.
75+
- The operator never writes the password, its `SCRAM-SHA-256` verifier, or the key into the `Role` status.
76+
- To retire a key, delete the key Secret. The operator generates a new key and re-applies every `Role` password once. Every old fingerprint then becomes meaningless.
77+
6878
#### `passwordEncryption`
6979

7080
| Value | Behavior |

0 commit comments

Comments
 (0)