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_EncryptionPUB_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_1SLT_TMP_2SLT_TMP_2SLT_Auth_2, email address, SEC_PWD_AuthSEC_PWDSYM_AccountM_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.