1

I have been looking into PGP, but do not want my users to have to worry about securely storing their own private keys. Therefore, I feel like maybe just symmetric encryption without private key would suffice.

What is the recommended way of doing so? Is it to use their passwords somehow? If I said users are tied to a role, and read permissions are based on that role, would it be simpler to just use some sort of shared symmetric key for each role?

Use case: It's transactions on a ledger, where the ledger is public and anyone can see it, but all the transaction information is currently stored in plaintext. I would like the transaction information to be encrypted for the user roles relevant to that type of transaction. Everyone can see that the transaction actually occurred, but the goal is just better security than letting everyone clearly see the full contents of every transaction.

Example: There is a Blue team and a Red team. When a Blue user uses the system, they are able to see a list of all transactions for both parties. This allows them to see that the Red team has indeed been transacting, but because they are not on the Red team and do not know the Red language, they cannot read exactly what was transacted, and only know that it occurred.

  • can store keys using cloud key management service
  • cannot expect users to manage their own keys with cold storage/paper wallets/etc.
  • works quietly under the hood, where users simply login with email and password, and should be able to view decrypted information relevant to their role
  • some transactions might be encrypted for multiple roles
1

I have been looking into PGP, but do not want my users to have to worry about securely storing their own private keys. Therefore, I feel like maybe just symmetric encryption without private key would suffice.

This feeling of yours doesn't seem to make sense since the users would still have to securely store the secret symmetric encryption key (or the password that generates the symmetric key). You do not seem to be gaining anything.

What is the recommended way of doing so? Is it to use their passwords somehow?

You can protect a symmetric key with a password (or generate it with a password). You can also protect a asymmetric private key with a password. So, again, not sure what you are gaining here?

For a practical option, you could use gpg, which gives you the option of password-based symmetric encryption/decryption. In this case, the symmetric key is generated from the password, which the user enters on the command line. However, you can also use gpg with a password-protected asymmetric private keys, the password for which the user enters on the command line. This is why the move to a symmetric key seems like you aren't gaining much if anything.

  • I am probably misunderstanding, but the users would still have to securely store the secret symmetric encryption key (or the password that generates the symmetric key) sounds ok to me. I can expect people to remember their password, and I can store public keys with their private user profile or in a key management service, couldn't I? I just thought it was bad practice to store a private key similarly, and I can't expect my users to manage their own. If GPG will allow multiple-recipients with symmetric keys, it sounds like the solution for me. What happens if their password changes? – atkayla Sep 12 '18 at 21:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.