On Wed, Jul 31, 2019 at 04:58:49PM +0900, Masahiko Sawada wrote: > On Wed, Jul 31, 2019 at 3:29 PM Masahiko Sawada <sawada.m...@gmail.com> wrote: > > > > > > For WAL encryption, before flushing WAL we encrypt whole 8k WAL page > > and then write only the encrypted data of the new WAL record using > > pg_pwrite() rather than write whole encrypted page. So each time we > > encrypt 8k WAL page we end up with encrypting different data with the > > same key+nonce but since we don't write to the disk other than space > > where we actually wrote WAL records it's not a problem. Is that right? > > Hmm that's incorrect. We always write an entire 8k WAL page even if we > write a few WAl records into a page. It's bad because we encrypt > different pages with the same key+IV, but we cannot change IV for each > WAL writes as we end up with changing also > already-flushed-WAL-records. So we might need to change the WAL write > so that it write only WAL records we actually wrote.
Uh, I don't understand. We use the LSN to write the 8k page, and we use a different nonce scheme for the WAL. The LSN changes each time the page is modified. The 8k page in the WAL is encrypted just like the rest of the WAL. -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + As you are, so once was I. As I am, so you will be. + + Ancient Roman grave inscription +