HACKER Q&A
📣 scrubs

Two specific Postgres encrypt questions


HN,

(A) What are the recommended ways to encode Postrgres data at rest (tables+indexes+rows)? The Postgres documentation suggests options [0], but I have no familiarity with any. I prefer to not purchase something.

(B) When configuring Postgres with TLS/SSL, one needs to make private keys [1] which can lead to a prompt for a PEM pass phrase. Once all done with Postgres running, do I need to retain the PEM passkey? (The private key itself needs to be retained, of course).

[0] https://www.postgresql.org/docs/18/encryption-options.html

[1] openssl genrsa -aes256 -out Enter PEM pass phrase: ...


  👤 stop50 Accepted Answer ✓
You are missunderstanding the transport encryption(everything related to authentication and pg_hba.conf) and the encrytion of the data at rest.

You want the encryption at rest. For that you have 3 Options:

1. Encryption in the application.

2. Use of pgcrypto as documented.

3. Encryption of the partition where postgres stores the data via LUKS or similar.

For 1. and 2. it means that indices for encrypted columns become useless and are only a waste of cpu time.

2. has the problem of transitting the key at the start of the connection, so it needs to be encrypted(tls encryption).

Its a bit of an fault with the documentation since it mixes the two types of encryption up.