On 23/08/2016 10:17, Richard Newman wrote: > Maybe we could build an escrow service that's still in control of > the user, > for example by splitting the recovery key using shamir's secret > sharing and > assigning each part to a recovery step, with a threshold of 3 to > reconstruct > the recovery key. > > That's hard to do in practice, but solutions that doesn't depend on > perfect > infrastructure security will make everyone sleep better at night. > > If I understand you correctly, that's what I'm suggesting; Apple's > recovery service isn't able to access the key itself without the user's > secret answers. > > My understanding of their process is: > > * Take the FileVault recovery key. > * Take three user questions; store them on the server. > * Take three user answers. Stretch them into a key, kR, presumably with > a salt (stored) and associated with the user or device in some way. > FileVault is associated with a particular disk and probably with some > other particular hardware components, so there are other reproducible > inputs here. > * Encrypt the recovery key with kR. > * Store the result on the server. > * Throw away kR. > > Recovery is: > > * Identify as the user. > * Retrieve the questions. > * Solicit the answers and collect other fixed inputs (e.g., disk ID). > * Compute and validate kR. > * Request the encrypted recovery key. > * Decrypt it with kR. > > > In a sense, this is exactly what we do for `crypto/keys` on the Sync > server: we store the keys that you use to decrypt Sync records, and we > store them wrapped by kB, which is a key derived from a secret you know.
It's also basically how we store kB. It's not derived directly from your password, it's a fully-entropy key that's wrapped with a key derived from your password for storage. Ryan _______________________________________________ Sync-dev mailing list Sync-dev@mozilla.org https://mail.mozilla.org/listinfo/sync-dev