Our system is a storage for short-lived short secrets (less than 10 characters) generated by 3rd parties on behalf of our users. The secrets are encrypted by the 3rd parties with the users’ public keys.

Our system stores both the encrypted secrets as well as the users’ passphrase-protected private and public keys until the users need the secrets.

When a user needs their secret, we send them the encrypted secret along with their passphrase-protected private key. Only the user knows the passphrase and therefore only the user can decrypt the private key and then use it to decrypt the secret. Note that decryption is done client-side, so our system never sees the passphrase or the decrypted secret.

The question is: how secure is this, given that we store both the encrypted secrets and the public and password-protected private keys together. We want our system to be relatively hacker-proof (ie it should take more than a day to decrypt the secrets by brute force).

1 Answer 1


This system is a secure as the passphrases. If they are easy to guess, your security is weak. If, however, the passphrases are randomly generated with a cryptographically secure PRNG and long enough, you can achieve a good theoretical security. Your generated passphrases should have at least 2^128 possible combinations. This is notwithstanding any implementation flaw or other vulnerabilities in your software.

  • 2
    The RSA keys should also be of a secure size. 2048 or 4096-bit
    – RoraΖ
    Mar 15, 2017 at 15:32
  • This means around 20 random char or a dozen random words. Isn't that too long to remember or type? Or should they store the pass on their client machine?
    – inf3rno
    Oct 30, 2017 at 0:29
  • 1
    @inf3rno An easy to remember password is an easy to guess (by an adversary) password.You should use a password manager to store them, and use copy-paste to type them. The password manager can be secured by a hardware token or by a long passphrase that is hard to remember (or both).
    – A. Hersean
    Oct 30, 2017 at 12:25

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .