Document how to deal with regular passphrase rotation/rollover
Marco Ricci

Marco Ricci commited on 2026-04-05 21:50:47
Zeige 6 geänderte Dateien mit 24 Einfügungen und 2 Löschungen.


Once more, the quality is "first draft" level, but the main points are
all present.
... ...
@@ -49,7 +49,6 @@
49 49
 ### How-tos
50 50
 
51 51
 * How to choose a good service name
52
-* How to deal with regular passphrase rotation/rollover (→ [TODO][BASIC_SETUP_PASSPHRASE])
53 52
 
54 53
 ### Reference
55 54
 
... ...
@@ -4,6 +4,8 @@ title: How-to overview
4 4
 
5 5
 * [How to setup `derivepassphrase vault` with an SSH key][SSH_KEY]
6 6
 * [How to deal with "supported" and "unsupported" special characters][SUPPORTED_SPECIAL_CHARACTERS]
7
+* [How to deal with regular passphrase rotation/rollover][PASSPHRASE_ROTATION]
7 8
 
8 9
 [SSH_KEY]: ssh-key.md
9 10
 [SUPPORTED_SPECIAL_CHARACTERS]: supported-special-characters.md
11
+[PASSPHRASE_ROTATION]: passphrase-rotation.md
... ...
@@ -0,0 +1,18 @@
1
+# How to deal with regular passphrase rotation/rollover
2
+
3
+`derivepassphrase vault` can only store one configuration per service name, and thus also generate only one passphrase per service name.
4
+If a different passphrase is to be derived for a certain service *and* the previous derived passphrase(s) should remain accessible ("passphrase rotation"/"passphrase rollover"), we recommend using a set of *related service names* to designate the respective iterations of the service.
5
+
6
+We recommend different choices of related service names, depending on whether the passphrase rotation is *regular* or *irregular*:
7
+
8
+  - For regular passphrase rotation, we recommend appending a suffix to the service name that indicates the "period" for this iteration of the service (including the period length).
9
+
10
+    For example, for monthly iteration, the service name would then be suffixed with the year and month, zero-filled: `-2025-06`, `:2024/09`, `@202603`, etc.
11
+    For yearly iteration, the suffix would just contain the year: `-2025`, `:2024`, `@2026`.
12
+
13
+    For quarterly iteration, the suffix would also contain a `Q` to indicate quarterly rotation: `-2025Q2`, `:2024Q3`, `@2026Q1`, etc.
14
+    (Weekly and fortnightly rotation work similarly, with indicators `W` and `WW`, respectively, and with zero-filling.)
15
+
16
+  - For irregular passphrase rotation (e.g. after a password reset), we recommend using a counter: `@3`, `:5`, `c12`, etc.
17
+
18
+These recommendations ensure that the set of related service names sorts *naturally*, i.e., that the *last* entry is the *latest* entry.
... ...
@@ -263,7 +263,7 @@ So some part of the configuration---generally the service name---needs to change
263 263
 
264 264
 !!! abstract "Further reading"
265 265
 
266
-    → How to deal with regular passphrase rotation (TODO)
266
+    → [How to deal with regular passphrase rotation/rollover][PASSPHRASE_ROTATION]
267 267
 
268 268
 We choose to append a very coarse timestamp to the "base" service name `work`: the 4-digit year, a `Q`, and the "quarter" number (1, 2, 3 or 4).
269 269
 As of October 2024, this leads to the final service name `work-2024Q4`.
... ...
@@ -306,3 +306,4 @@ As a next step, you may want to [configure the accounts to use a master SSH key
306 306
 
307 307
 [BASIC_SETUP_SSH_KEY]: basic-setup-ssh-key.md "Tutorial: Using a master SSH key with derivepassphrase vault on existing accounts"
308 308
 [SUPPORTED_SPECIAL_CHARACTERS]: ../how-tos/supported-special-characters.md
309
+[PASSPHRASE_ROTATION]: ../how-tos/passphrase-rotation.md
... ...
@@ -101,6 +101,7 @@ nav:
101 101
     - how-tos/index.md
102 102
     - how-tos/ssh-key.md
103 103
     - how-tos/supported-special-characters.md
104
+    - how-tos/passphrase-rotation.md
104 105
   - Reference:
105 106
     - reference/index.md
106 107
     - Man pages:
... ...
@@ -16,6 +16,7 @@ nav:
16 16
     - how-tos/index.md
17 17
     - how-tos/ssh-key.md
18 18
     - how-tos/supported-special-characters.md
19
+    - how-tos/passphrase-rotation.md
19 20
   - Reference:
20 21
     - reference/index.md
21 22
     - Man pages:
22 23