Re: [Proposal] Table-level Transparent Data Encryption (TDE) and KeyManagement Service (KMS) - Mailing list pgsql-hackers
From | Nico Williams |
---|---|
Subject | Re: [Proposal] Table-level Transparent Data Encryption (TDE) and KeyManagement Service (KMS) |
Date | |
Msg-id | 20180702221253.GA6568@localhost Whole thread Raw |
In response to | Re: [Proposal] Table-level Transparent Data Encryption (TDE) and KeyManagement Service (KMS) (Alvaro Hernandez <aht@ongres.com>) |
List | pgsql-hackers |
On Mon, Jul 02, 2018 at 06:56:34PM +0300, Alvaro Hernandez wrote: > On 21/06/18 21:43, Nico Williams wrote: > >Incidentally, PG w/ pgcrypto and FDW does provide everything one needs > >to be able to implement client-side crypto: > > > > - use PG w/ FDW as a client-side proxy for the real DB > > - use pgcrypto in VIEWs with INSTEAD OF triggers in the proxy > > - access the DB via the proxy > > Sounds a bit hackish, but it could work. I doubt however the acceptance > of a solution like this, given the number of "moving parts" and operational > complexity associated with it. Well, you could use SQLite3 instead as the client. Like how GDA does it. I do wish there was a libpostgres -- a light-weight postgres for running an in-process RDBMS in applications without having to have a separate set of server processes. That would work really well for a use case like this one where you're really going to be using FDW to access the real data store. If your objection is to an RDBMS in the application accessing real data via FDW, well, see all the commentary about threat models. You really can't protect against DBAs without client-side crypto (and lots of bad trade-offs). You can do the crypto in the application, but you start to lose the power of SQL. Anyways, I don't think client-side crypto is the best answer to the DBA threat -- access reduction + auditing is easier and better. In any case, spinning up a postgres instance just for this use case is easy because it wouldn't have any persistent state to keep locally. > >Any discussion of cryptographic applications should start with a > >discussion of threat models. This is not a big hurdle. > > You already mentioned that there are also "business criteria" to > consider here, and they are important. And there are even more to consider. The threat model *is* a business criterion. What are the threats you want to protect against? Why aren't you interested in these other threats? These are *business* questions. Of course, one has to understand the issues, including intangibles. For example, reputation risk is a huge business concern, but as an intangible it's easy to miss. People have a blind spot for intangibles. > For instance, cases where (1) and even (2) under your proposed threat model > cannot be fixed by external (device/filesystem) encryption. Consider for > example the managed database services provided by the cloud vendors. While > (all?) of them provide transparent disk encryption, are they trust-able? Do Databases won't be your only cloud security issue. At some point you're either using things like SGX or, while you wait for practical, high- performance homomorphic cryptgraphic computing, you'll settle for using the power of contracts and contract law -- contract law is a *business* tool. At some point there's not much difference between an insider you can fire and an insider at a vendor who can fire them (and which vendor you can fire as well), especially when you can use contract law to get the vendor to do special things for you, like show you how they do things, reduce admin access, let you audit them, and so on. > business want to rely on their encryption scheme, key management, and how > they respond from requests to hand off encryption keys? I believe > self-contained solutions are very worth, also because of this. I don't, because client-side crypto to deal with this is just so very unsatisfactory. Besides, what happens when first you move the DB into the cloud and put a lot of effort into client-side crypto, then you move the clients into the same cloud too? And anyways, what was proposed by OP is *server-side* crypto, which clearly does not help at all in this case. Nico --
pgsql-hackers by date: