I see that many relational database systems offer asymmetric (private/public key) cryptography functions. For example, PostgreSQL offers the pgcrypto module, which supports OpenPGP (RFC 4880) encryption. Given that access to an RDBMS and a specific database is typically protected and restricted, I cannot see the usefulness of this functionality. I appreciate that symmetric encryption of database fields guards their confidentiality, if the database leaks without the corresponding keys (which can presumably exist only transiently in the application server's memory). However, I fail to see what asymmetric cryptography can add. Some scenarios I can think of are the following.
- Have one database client write data with the public key, and another one, running in a more secure environment, read and process data using the private key.
- Store data that arrives to the application server already encrypted using the employed public key and exactly the same encryption method.
None of the two uses cases seems particularly compelling to me. Am I missing something? How are database fields encrypted with asymmetric cryptography used in practice, and what is the underlying threat model?