tidy up
All checks were successful
Release to Production / build_and_release (push) Successful in 17s
All checks were successful
Release to Production / build_and_release (push) Successful in 17s
This commit is contained in:
parent
40fa68b587
commit
ceb2425fe9
30
emailflow.md
30
emailflow.md
@ -1,27 +1,33 @@
|
||||
# Email Flow
|
||||
|
||||
In creating an email flow that maintains PRIVACY and SECURITY whilst also being convenient to use, the following principles were observed:
|
||||
In creating an email flow that maintains PRIVACY and SECURITY whilst also being convenient to use, the following principles are observed:
|
||||
|
||||
- Keypair must be generated client-side
|
||||
- Keypair must be protected by a long and complex password
|
||||
- Keypair must be protected by a strong password
|
||||
- It must be possible to change the password
|
||||
- It must remain possible to work offline
|
||||
- It must be possible to work offline
|
||||
- Network traffic must not contain identifying metadata
|
||||
|
||||
All of the above is achieved using a high level signup flow as follows:
|
||||
All of the above are achieved using a high level signup flow as follows:
|
||||
|
||||
1. User provides email and complex password
|
||||
2. These are used to encrypt a locally generated keypair into a backup
|
||||
1. User provides email and long (min 21 chars) password
|
||||
2. These are used to encrypt a locally generated keypair
|
||||
3. Email address, Public Key and encrypted backup are sent to the server
|
||||
4. Account is validated
|
||||
4. Email address is validated
|
||||
5. Account is activated
|
||||
|
||||
The password is only used to encrypt/decrypt the local backup and is never stored or sent anywhere.
|
||||
The password is only used to encrypt/decrypt the local backup and is never stored or sent outside of the browser
|
||||
|
||||
When perforing a login, the flow is:
|
||||
When perforing a regular login, the flow is:
|
||||
|
||||
1. Generate a temporary key pair for secure server communication
|
||||
2. Validate the email
|
||||
3. Provide the encrypted keypair for the user to unlock
|
||||
1. Validate the email
|
||||
2. Provide the encrypted keypair for the user to unlock
|
||||
|
||||
When performing a password reset:
|
||||
|
||||
1. Change the pasword locally
|
||||
2. Re-encrypt the keypair using the new password
|
||||
3. Send the new backup to the server
|
||||
|
||||
|
||||
All key signing / encryption operations happen on client side using [private class properties](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_properties).
|
||||
|
Loading…
x
Reference in New Issue
Block a user