matrix-org / matrix-org/matrix-spec
Spec doesn't explicitly forbid changing the ed25519 signing key of a device
Nobody has claimed this yet.
- Dominant language
- HTML
- Stars
- 330
- Forks
- 150
- Avg merge
- 2h 21m
- Merged PRs (30d)
- 3
Description
**Link to problem area**: https://spec.matrix.org/unstable/client-server-api/#device-keys
**Issue**
Devices for e2ee have an ed25519 signing key and a curve25519 identity key. The ed25519 key is meant to be permanent, but the strongest statement in the spec seems to be "[...] device keys, which are long-lived [...]", which isn't all that strong. In practice, most SDKs ([matrix-rust-sdk](https://github.com/matrix-org/matrix-rust-sdk/blob/main/crates/matrix-sdk-crypto/src/identities/device.rs#L936), [mautrix-go](https://github.com/mautrix/go/blob/main/crypto/devicelist.go#L355)) already reject changes to device signing keys, so this is just a spec omission
The spec should probably also specify that the signing key can't be safely changed even by logging out and back in, because that will still fail if a client is offline for the entire time between the logout and relogin.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Device Keys section linked in the issue, then compare the existing behavior in matrix-rust-sdk's device.rs and mautrix-go's devicelist.go. Update the specification to make the signing key's immutability explicit, including across logout and re-login, and confirm the wording covers the offline-client case.
Written by the indexing model from the issue text.
Assessment
- Domain
- cryptography, documentation
- Issue type
- Documentation
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 78/100