-
Notifications
You must be signed in to change notification settings - Fork 14
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
Key reset for EX #2415
Comments
Note to make the reset less destructive as possible we should ensure that all clients have a local copy of what is in the backup (import all in background at least once) #2446 |
The proposal looks sane to me. We need to estimate the work. What is the expected time for this? Should we wait for #2446 to be landed to be as less destructive as possible? Should we add this reset flow to the app backup settings? |
Generally speaking, yes, all clients should have a copy of all the secrets. But the scenario we are mainly looking at right now is that you're trying to sign-in an EX device but you don't have other devices to verify with and have lost your recovery key. In this case this doesn't help, does it? We should therefore not wait for it landing. Priority should be on the non-MAS flow as this is what most users are confronted with today.
As we've already made device verification mandatory on EX, we'd like to see this land as soon as possible. The designs are expected to be finished this week. |
I have updated the OP. The designs are now final and this is ready for engineering. |
Heads-up, the designs for this feature have just been update to reflect the latest thinking on terminology. |
SDK PR is here: matrix-org/matrix-rust-sdk#3670 |
Question: what should happen if the client already has a copy of the secure backup key? It is not obvious to me that we should delete the existing key backup in that case, since it will mean that all existing room keys have to be re-backed-up. (Possibly it depends on the reason for the reset: if it is simply that the user has forgotten the 4S recovery key, then there is no need to reset the key backup. OTOH if the user suspects that the key backup is compromised in some way, then the existing backup should be deleted too.) |
Also: it seems like this issue is specific to the pre-verification flow, in which the client can be assumed not to have any of the secrets (backup decryption key, secret cross-signing keys) -- or at least, not the secret cross-signing keys. There is a second potential flow, in which a client may have some or all of those secrets, but the user wants to reset their Key storage (4S) because they have forgotten their passphrase. In this case, we should not reset the cross-signing keys if we can avoid it, because it will undo any user or device verifications that have taken place. EA classic (at least) does expose this second flow. I don't think EW does, despite the presence of two ill-defined "Reset" buttons on its setting page, though as element-hq/element-web#27841 points out, arguably it should. |
This has now been implemented on iOS in element-hq/element-x-ios#3107 based on the Rust FFI API exposed in matrix-org/matrix-rust-sdk#3759 We had to make few changes from the original designs though (see videos attached to the iOS PR):
|
Nice one, looks great, thanks!
Please stick to the designs. The MAS screen will be adopted soon. cc @sandhose |
Good catch. For the legacy flow this is fine. For the OIDC flow we intentionally didn't add yet another confirmation dialog as you already confirm it on the MAS screen. In this case I don't think we should show it. |
Please don't consider this a blocker. The next MAS release (before the EX launch) will have the new design. You can just go ahead and adopt the flow assuming that the new design is already available. |
This PR will take care of the tweaks we talked about yesterday, including adding a logout button on the identity confirmation screen. |
@pmaier1 can we consider this feature complete? All the tasks are done |
Everything seems ok. I am closing this issue. Thanks all. The feature is going to be useful in an EX world. |
Yep, the feature looks and works nicely, IMO. Thanks everybody, great work 👏 |
I think that this is feature is specifically for the case where you forgot things and don't have any secrets on your current device.
AFAIK that flow is exposed as just disabling "recovery" and re-enabling it, which will not delete your cross-signing identity, though it will delete your room key backup. |
Story
As a user I have to be able to reset my encryption ("crypto identity") for that I am able to use the app when I sign-in a new session and have no other device or recovery key to verify the device with.
Concept
As we have two authentication modes today (legacy password auth / OIDC), we have to support two different flows for key reset that are outlined in the technical concept below.
Priority should be on 1 as MAS has not been rolled-out widely yet and most users fall into this category.
Leads
Tech: @stefanceriu
Design: @americanrefugee / @amshakal
Designs
Remarks
As per document and designs above the entry point for crypto identity reset is the session verification screen from where the user can chose to use the "Can't confirm" option to proceed with the reset.
The session verification screen:
Use another device
option if this is the last sessionUse recovery key
option if recovery hasn't been previously set upResetting itself can be done in 2 different ways based on the session type:
For both flows the following stand:
Scope
Android
iOS
Web
Rust
The text was updated successfully, but these errors were encountered: