I'm writing a program that allows two users to communicate over E2E encrypted chat with a secret they have agreed upon in the past.
The process works as follows:
- A key is derived from the secret using Argon2id, where the salt is hardcoded in the application.
- The key is used to encrypt the user's message using
crypto_secretbox
from NaCl. - The message is sent to the server and downloaded by the other user.
- The user on the receiving end decrypts the message using the same key derived in the same way.
As I understand it, in a password hashing system, a unique salt per password prevents attacks where the bad guys have pre-computed the hashes for a ton of different passwords.
Would there be any advantage for my application to use a different salt for each user (possibly generated by the server)?