matrix-org / matrix-org/matrix-spec

Spec doesn't explicitly forbid changing the ed25519 signing key of a device

Open Beginner friendly
#2,442 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-E2EE clarification spec-omission
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.