Key Rotation

Goal:

Rotate control keys (and optionally device keys) without losing the identity. You can replace control and/or auth keys without changing attributes or policies.

Inputs:

Steps:

  1. Authorize
  2. Update key set
  3. Rebuild keys_root
keys_root_1 = MerkleRoot(updated_key_leaves)

Compute new commitment

identity_commitment_2 = H(
version,
keys_root_1,
attributes_root_1,
policies_root_0
)

Emit StateTransition

StateTransition {
previous_commitment = identity_commitment_1
new_commitment      = identity_commitment_2
diff                = "keys_rotated"
signed_by           = old_control_key or recovery_key
timestamp
}
  1. Vault generates new Control Key(s).
  2. Old keys are marked as expired or revoked in the Key Tree.