Closed Bug 1911138 Opened 1 year ago Closed 1 year ago

Add a UUID to ArchiveEncryptionState on creation that is persisted to encState.json

Categories

(Firefox :: Profile Backup, task, P3)

task

Tracking

()

RESOLVED WONTFIX

People

(Reporter: mconley, Assigned: mconley, NeedInfo)

References

(Blocks 1 open bug)

Details

(Whiteboard: [fidefe-device-migration])

Attachments

(2 obsolete files)

This UUID is the key that will be used to differentiate between multiple encryption states that might exist across multiple synced devices. This way, a backup created on synced device A won't get confused and try to use a recovery code stored for synced device B.

This ID is necessary so that if signed into an account, we can store
a mapping of ArchiveEncryptionState ID with the generated recoveryCode
to be stored in end-to-end encrypted synced data.

This is a schema change, but because we're not actually shipping this
change yet, I felt it didn't warrant a schema bump. Because of this,
any prior ArchiveEncryptionStates will now produce encrypted backups
that cannot be recovered from (since they won't include the ID). Testers
are encouraged to disable and re-enable encryption in order to generate
a working ArchiveEncryptionState, and regenerate any backups being
used for testing.

Assignee: nobody → mconley
Status: NEW → ASSIGNED
Attachment #9418622 - Attachment is obsolete: true
Attachment #9418623 - Attachment is obsolete: true

djackson pointed out that we can just use a serialized version of the public key object as the unique ID, which means we don't need a new UUID field. Nice!

Status: ASSIGNED → RESOLVED
Closed: 1 year ago
Resolution: --- → WONTFIX

Hm, however, given a backup file, and a mapping of public keys to recovery codes... how do we check which public key / recovery code matches the backup? Do we just try each one?

We (intentionally) did not include the public key within the backup: https://searchfox.org/mozilla-central/rev/45d6f8bf028e049f812aa26dced565d50068af5d/browser/components/backup/content/ArchiveJSONBlock.1.schema.json#18-37

So do we just try to do the confirmation routine with each known recovery code? Or is there a better way of comparing the public keys with the information within the backup to see which one matches up?

Flags: needinfo?(djackson)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: