Skip to content
Prev Previous commit
Next Next commit
Add definitions of the various K dirctly in option 3
rather than referring to option 2
  • Loading branch information
dbkr committed Oct 31, 2018
commit 3f282affe307cb1c9e65b660b59e22ff5803235f
2 changes: 1 addition & 1 deletion proposals/1687-encrypted-recovery-keys.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ This option, however, allows the server to obtain K<sup>-1</sup> by obtaining an

### Option 3

The backup encryption private key and a private key, K<sup>-1</sup><sub>p</sub> and K<sup>-1</sup><sub>p</sub>' are generated as above. Another private key, K<sup>-1</sup><sub>r</sub> is generated also by a secure random number generator and encoded to give the recovery key as above. K<sup>-1</sup><sub>r</sub>' is generated by XORing K<sup>-1</sup><sub>r</sub> with K<sup>-1</sup>. Both K<sup>-1</sup><sub>p</sub>' and K<sup>-1</sup><sub>r</sub>' are stored in the `private_key` in the backup under keys `passphrase_counterpart` and `recovery_key_counterpart` respectively.
The backup encryption private key, K<sup>-1</sup>, and a private, passphrase-derived key, K<sup>-1</sup><sub>p</sub> are generated as above.The passphrase key counterpart, K<sup>-1</sup><sub>p</sub>', is also generated as above from the K<sup>-1</sup> XOR K<sup>-1</sup><sub>p</sub>. Another private key, K<sup>-1</sup><sub>r</sub> is generated also by a secure random number generator and encoded to give the recovery key as above. K<sup>-1</sup><sub>r</sub>' is generated by XORing K<sup>-1</sup><sub>r</sub> with K<sup>-1</sup>. Both K<sup>-1</sup><sub>p</sub>' and K<sup>-1</sup><sub>r</sub>' are stored in the `private_key` in the backup under keys `passphrase_counterpart` and `recovery_key_counterpart` respectively.

To change the passphrase, the client starts a new backup version as in option 1 (generating a new K<sup>-1</sup>), but additionally computes a new K<sup>-1</sup><sub>r</sub>' by XORing K<sup>-1</sup><sub>r</sub> with the new K<sup>-1</sup>. This refreshes all keys, but allows the user to keep the same recovery key for their backup, on the assumption that the recovery key itself has not been compromised. If it has, the client generates a new backup with a completely fresh recovery key instead.

Expand Down