Re: storing an explicit nonce - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: storing an explicit nonce
Date
Msg-id 20211012123259.GB19310@momjian.us
Whole thread Raw
In response to Re: storing an explicit nonce  (Stephen Frost <sfrost@snowman.net>)
Responses Re: storing an explicit nonce
List pgsql-hackers
On Tue, Oct 12, 2021 at 08:25:52AM -0400, Stephen Frost wrote:
> Greetings,
> 
> * Bruce Momjian (bruce@momjian.us) wrote:
> > On Tue, Oct 12, 2021 at 08:40:17AM +0300, Ants Aasma wrote:
> > > On Mon, 11 Oct 2021 at 22:15, Bruce Momjian <bruce@momjian.us> wrote:
> > > 
> > >     > Yes, that's the direction that I was thinking also and specifically with
> > >     > XTS as the encryption algorithm to allow us to exclude the LSN but keep
> > >     > everything else, and to address the concern around the nonce/tweak/etc
> > >     > being the same sometimes across multiple writes.  Another thing to
> > >     > consider is if we want to encrypt zero'd page.  There was a point
> > >     > brought up that if we do then we are encrypting a fair bit of very
> > >     > predictable bytes and that's not great (though there's a fair bit about
> > >     > our pages that someone could quite possibly predict anyway based on
> > >     > table structures and such...).  I would think that if it's easy enough
> > >     > to not encrypt zero'd pages that we should avoid doing so.  Don't recall
> > >     > offhand which way zero'd pages were being handled already but thought it
> > >     > made sense to mention that as part of this discussion.
> > > 
> > >     Yeah, I wanted to mention that.  I don't see any security difference
> > >     between fully-zero pages, pages with headers and no tuples, and pages
> > >     with headers and only a few tuples.  If any of those are insecure, they
> > >     all are.  Therefore, I don't see any reason to treat them differently.
> > > 
> > > 
> > > We had to special case zero pages and not encrypt them because as far as I can
> > > tell, there is no atomic way to extend a file and initialize it to Enc(zero) in
> > > the same step.
> > 
> > Oh, good point.  Yeah, we will need to handle that.
> 
> Not sure what's meant here by 'handle that', but I don't see any
> particular reason to avoid doing exactly the same for zero pages with
> TDE in core..?  I don't think there's any reason we need to make things
> complicated to ensure that we encrypt entirely empty pages.

I thought he was saying that when you extend a file, you might have to
extend it with all zeros, rather than being able to extend it with
an actual encrypted page of zeros.  For example, I think when a page is
corrupt in storage, it reads back as a fully zero page, and we would
need to handle that.  Are you saying we already have logic to handle
that so we don't need to change anything?

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  If only the physical world exists, free will is an illusion.




pgsql-hackers by date:

Previous
From: Stephen Frost
Date:
Subject: Re: storing an explicit nonce
Next
From: Stephen Frost
Date:
Subject: Re: storing an explicit nonce