Since the passphrase you choose at registration time is used during the encryption process (although indirectly), it’s vital that it’s never sent or stored on the server in an easily crackable form. To help with this goal, Insomnia uses the Secure Remote Passwords (SRP) encrypted key exchange protocol.
You can read more about the exact SRP implementation that Insomnia paid plans use in RFC-2945.
For a detailed description of SRP, see Mozilla’s Node SRP.
These are the steps taken on the client during account creation.
SYM_Account
, SLT_Auth_1
, SLT_Auth_2
, SLT_Encryption
PUB_Account
/PRV_Account
keypair for RSA-OAEP SHA-256SEC_PWD_Auth
using the following steps
SLT_Auth1
with email address using HKDF SHA-256 to form a new salt SLT_TMP_1
SLT_TMP_2
SLT_TMP_2
SLT_Auth_2
, email address, SEC_PWD_Auth
SEC_PWD
SYM_Account
M_Account
object to server for creationOnce the account is created, the server will send a verification email to the user. Once the user receives this email, they can attempt to log in.
These are the steps taken on the client during login.
SEC_PWD_Auth
using same steps as in Account CreationSLT_Auth_2
to perform SRP exchangeK
locally to use as session keyNow that we know how signup and authentication are performed, we can talk about data encryption.