Greetings, * Sasasu (i...@sasa.su) wrote: > On 2021/10/19 00:37, Robert Haas wrote: > >I think what we ought to be doing at > >this point is combining our efforts to try to get some things > >committed which make future work in this area committed - like that > >patch to preserve relfilenode and database OID, or maybe some patches > >to drive all of our I/O through a smaller number of code paths instead > >of having every different type of temporary file we write reinvent the > >wheel. > > A unified block-based I/O API sounds great. Has anyone tried to do this > before? It would be nice if the front-end tools could also use these API.
The TDE patch from Cybertec did go down this route, but the API ended up being rather different which menat a lot of changes in other parts of the system. If we can get a block-based temporary file method that maintains more-or-less the same API, that'd be great, but I'm not sure that we can really do so and I am not entirely convinced that we should make the TDE effort depend on an otherwise quite independent effort of making all temp files usage be block based. > As there are so many threat models, I propose to do the TDE feature by a set > of hooks. those hooks are on the critical path of IO operation, add the > ability to let extension replace the IO API. and also load extension when > initdb, single-mode, and in front-end tools. > This sounds Like using $LD_PRELOAD to replace pread(2) and pwrite(2), which > widely used in folder based encryption. but the hook will pass more context > (filenode, tableoid, blocksize, and many) to the under layer, this hook API > will look like object_access_hook. > then implement the simplest AES-XTS. and put it to contrib. provide a tool > to deactivate AES-XTS to make PostgreSQL upgradeable. > > I think this is the most peaceful method. GCM people will not reject this > just because XTS. and XTS people will satisfied(maybe?) with the complexity. > for performance, just one more long-jump compare with current AES-XTS code. I agree with Robert- using hooks for this really isn't realistic. Where would you store the tag for GCM without changes in core, for starters..? Certainly wouldn't make sense to provide GCM only to throw the tag away. Even between XTS and GCM, to say nothing of other possible methods, there's going to be some serious differences that a single hook-based API wouldn't be able to address. Thanks, Stephen
signature.asc
Description: PGP signature