Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use different m.room_key.withheld codes for "user not verified" from "device not verified" #2621

Open
richvdh opened this issue Nov 14, 2024 · 1 comment

Comments

@richvdh
Copy link
Member

richvdh commented Nov 14, 2024

It is possible to configure clients not to share message keys with unverified devices, including devices belonging to unverified users.

For example, Element-Web exposes this option (at both the global and room level):

image

When this happens, an m.room_key.withheld message is sent to the recipient, using a withheld code m.unverified.

The problem with this is that the recipient of such a message cannot easily tell whether the key was withheld because their device is not verified, or because there has been no cross-user verification.

We think we should introduce more explicit "withheld" codes to distinguish between the two cases.

Note that rolling this out will take some time: we'll first have to update as many clients as we can to understand the new codes; only after some time will we be able to start sending the new codes.

@richvdh richvdh added Team: Crypto T-Feature Request to add a new feature which does not exist right now A-E2EE labels Nov 14, 2024
@richvdh
Copy link
Member Author

richvdh commented Nov 14, 2024

Some more thoughts:

Once we update Element Web to force verification on login/load (element-hq/element-web#28464), the only plausible reason to receive an m.unverified will be because the users aren't verified.

So maybe we could just assume that if you receive an m.unverified, it's because the sender is in paranoid mode and hasn't verified our user, and we don't really need separate codes?

[I don't really like that, because (a) there is the chance that the sender had an out-of-date copy of our device keys so thinks that the device is unverified; (b) it just feels way more robust for the sender to be more explicit about the reason for not sending keys]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant