Key management with tests

Started by Bruce Momjianover 5 years ago464 messageshackers
Jump to latest
#1Bruce Momjian
bruce@momjian.us

I have completed the key management patch with tests created by Stephen
Frost. Original patch by Masahiko Sawada. It requires the hex
reorganization patch first. The key patch is now 2.1MB because of the
tests, so attaching it here seems unwise:

https://github.com/postgres/postgres/compare/master...bmomjian:hex.diff
https://github.com/postgres/postgres/compare/master...bmomjian:key.diff

I will add it to the commitfest. I think we need to figure out how much
of the tests we want to add.

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

The usefulness of a cup is in its emptiness, Bruce Lee

#2Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#1)
Re: Key management with tests

On Thu, Dec 31, 2020 at 11:50:47PM -0500, Bruce Momjian wrote:

I have completed the key management patch with tests created by Stephen
Frost. Original patch by Masahiko Sawada. It requires the hex
reorganization patch first. The key patch is now 2.1MB because of the
tests, so attaching it here seems unwise:

https://github.com/postgres/postgres/compare/master...bmomjian:hex.diff
https://github.com/postgres/postgres/compare/master...bmomjian:key.diff

I will add it to the commitfest. I think we need to figure out how much
of the tests we want to add.

I am getting regression test errors using OpenSSL 1.1.1d 10 Sep 2019
with zero-length input data (no -p), while Stephen is able for those
tests to pass. This needs more research, plus I think higher-level
tests.

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

The usefulness of a cup is in its emptiness, Bruce Lee

#3Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#2)
Re: Key management with tests

On Fri, Jan 1, 2021 at 01:07:50AM -0500, Bruce Momjian wrote:

On Thu, Dec 31, 2020 at 11:50:47PM -0500, Bruce Momjian wrote:

I have completed the key management patch with tests created by Stephen
Frost. Original patch by Masahiko Sawada. It requires the hex
reorganization patch first. The key patch is now 2.1MB because of the
tests, so attaching it here seems unwise:

https://github.com/postgres/postgres/compare/master...bmomjian:hex.diff
https://github.com/postgres/postgres/compare/master...bmomjian:key.diff

I will add it to the commitfest. I think we need to figure out how much
of the tests we want to add.

I am getting regression test errors using OpenSSL 1.1.1d 10 Sep 2019
with zero-length input data (no -p), while Stephen is able for those
tests to pass. This needs more research, plus I think higher-level
tests.

I have found the cause of the failure, which I added as a C comment:

/*
* OpenSSL 1.1.1d and earlier crashes on some zero-length plaintext
* and ciphertext strings. It crashes on an encryption call to
* EVP_EncryptFinal_ex(() in GCM mode of zero-length strings if
* plaintext is NULL, even though plaintext_len is zero. Setting
* plaintext to non-NULL allows it to work. In KW/KWP mode,
* zero-length strings fail if plaintext_len = 0 and plaintext is
* non-NULL (the opposite). OpenSSL 1.1.1e+ is fine with all options.
*/
else if (cipher == PG_CIPHER_AES_GCM)
{
plaintext_len = 0;
plaintext = pg_malloc0(1);
}

All the tests pass now. The current src/test directory is 19MB, and
adding these tests takes it to 23MB, or a 20% increase. That seems like
a lot. It is testing 128-bit and 256-bit keys --- should we do fewer
tests, or just test 256, or use gzip to compress the tests by 50%?
(Does every platform have gzip?)

My next step is to add the high-level tests.

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

The usefulness of a cup is in its emptiness, Bruce Lee

#4Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Bruce Momjian (#3)
Re: Key management with tests

On 2021-Jan-07, Bruce Momjian wrote:

All the tests pass now. The current src/test directory is 19MB, and
adding these tests takes it to 23MB, or a 20% increase. That seems like
a lot. It is testing 128-bit and 256-bit keys --- should we do fewer
tests, or just test 256, or use gzip to compress the tests by 50%?
(Does every platform have gzip?)

So the tests are about 95% of the patch ... do we really need that many
tests?

--
�lvaro Herrera

#5Bruce Momjian
bruce@momjian.us
In reply to: Alvaro Herrera (#4)
Re: Key management with tests

On Thu, Jan 7, 2021 at 04:08:49PM -0300, �lvaro Herrera wrote:

On 2021-Jan-07, Bruce Momjian wrote:

All the tests pass now. The current src/test directory is 19MB, and
adding these tests takes it to 23MB, or a 20% increase. That seems like
a lot. It is testing 128-bit and 256-bit keys --- should we do fewer
tests, or just test 256, or use gzip to compress the tests by 50%?
(Does every platform have gzip?)

So the tests are about 95% of the patch ... do we really need that many
tests?

No, I don't think so. Stephen imported the entire NIST test suite. It
was so comperhensive, it detected several OpenSSL bugs for zero-length
strings, which I already reported, but we would never be encrypting
zero-length strings, so there wasn't a lot of value to it.

Anyway, I think we need to figure out how to trim. The first part would
be to figure out whether we need 128 _and_ 256-bit tests, and then see
what items are really useful. Stephen, do you have any ideas on that?
We currently have 10296 tests, and I think we could get away with 100.

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

The usefulness of a cup is in its emptiness, Bruce Lee

#6Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#3)
Re: Key management with tests

On Thu, Jan 7, 2021 at 10:02:14AM -0500, Bruce Momjian wrote:

My next step is to add the high-level tests.

Here is the high-level script, and the log output. I used the
pg_upgrade test.sh as a model.

It uses "CFE DEBUG" lines that are already in the code to compare the
initdb encryption with the other initdb decryption and pg_ctl
decryption. It was easier than I thought.

What it does not do is to test the file descriptor passing from
/dev/tty, or the sample scripts. This seems acceptable to me since I
test them and they rarely change.

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

The usefulness of a cup is in its emptiness, Bruce Lee

Attachments:

test.shapplication/x-shDownload
logtext/plain; charset=us-asciiDownload
#7Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#5)
Re: Key management with tests

Greetings,

* Bruce Momjian (bruce@momjian.us) wrote:

On Thu, Jan 7, 2021 at 04:08:49PM -0300, Álvaro Herrera wrote:

On 2021-Jan-07, Bruce Momjian wrote:

All the tests pass now. The current src/test directory is 19MB, and
adding these tests takes it to 23MB, or a 20% increase. That seems like
a lot. It is testing 128-bit and 256-bit keys --- should we do fewer
tests, or just test 256, or use gzip to compress the tests by 50%?
(Does every platform have gzip?)

So the tests are about 95% of the patch ... do we really need that many
tests?

No, I don't think so. Stephen imported the entire NIST test suite. It
was so comperhensive, it detected several OpenSSL bugs for zero-length
strings, which I already reported, but we would never be encrypting
zero-length strings, so there wasn't a lot of value to it.

I ran the entire test suite locally to ensure everything worked, but I
didn't actually include all of it in the PR which you merged- I had
already reduced it quite a bit by removing all 'additional
authenticated data' test cases (which the tests will automatically skip
and which we haven't implemented support for in the common library
wrappers) and by removing the 192-bit cases. This reduced the overall
test set by about 2/3rd's or so, as I recall.

Anyway, I think we need to figure out how to trim. The first part would
be to figure out whether we need 128 _and_ 256-bit tests, and then see
what items are really useful. Stephen, do you have any ideas on that?
We currently have 10296 tests, and I think we could get away with 100.

Yeah, it's probably still too much, but I don't have any particularly
justifiable suggestions as to exactly what we should remove or what we
should keep.

Perhaps it'd make sense to try and cover the cases that are more likely
to be issues between our wrapper functions and OpenSSL, and not stress
too much about constantly testing cases that should really be up to
OpenSSL. As such, I'd propose:

- Add back in some 192-bit tests, so we cover all three bit lengths.
- Add back in some additional authenticated test cases, just to make
sure that, until/unless we implement support, the test code properly
skips over those.
- Keep tests for various length plaintext/ciphertext (including 0-byte
cases, so we make sure those work, since they really should).
- Keep at least one test for each length of tag that's included in the
test suite.

I'm not sure how many tests we'd end up with from that, but my swag /
gut feeling is that it'd probably be on the order of 100ish and a small
enough set that it won't dwarf the rest of the patch.

Would be nice if we had a way for some buildfarm animal or something to
pull in the entire suite and test it, imv.. If anyone wants to
volunteer, I'd be happy to explain how to make that happen (it's not
hard though- download/unzip the files, drop them in the directory,
update the test script to add all the files into the array).

Thanks,

Stephen

#8Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#3)
Re: Key management with tests

Greetings Bruce,

* Bruce Momjian (bruce@momjian.us) wrote:

On Fri, Jan 1, 2021 at 01:07:50AM -0500, Bruce Momjian wrote:

On Thu, Dec 31, 2020 at 11:50:47PM -0500, Bruce Momjian wrote:

I have completed the key management patch with tests created by Stephen
Frost. Original patch by Masahiko Sawada. It requires the hex
reorganization patch first. The key patch is now 2.1MB because of the
tests, so attaching it here seems unwise:

https://github.com/postgres/postgres/compare/master...bmomjian:hex.diff
https://github.com/postgres/postgres/compare/master...bmomjian:key.diff

I will add it to the commitfest. I think we need to figure out how much
of the tests we want to add.

I am getting regression test errors using OpenSSL 1.1.1d 10 Sep 2019
with zero-length input data (no -p), while Stephen is able for those
tests to pass. This needs more research, plus I think higher-level
tests.

I have found the cause of the failure, which I added as a C comment:

/*
* OpenSSL 1.1.1d and earlier crashes on some zero-length plaintext
* and ciphertext strings. It crashes on an encryption call to
* EVP_EncryptFinal_ex(() in GCM mode of zero-length strings if
* plaintext is NULL, even though plaintext_len is zero. Setting
* plaintext to non-NULL allows it to work. In KW/KWP mode,
* zero-length strings fail if plaintext_len = 0 and plaintext is
* non-NULL (the opposite). OpenSSL 1.1.1e+ is fine with all options.
*/
else if (cipher == PG_CIPHER_AES_GCM)
{
plaintext_len = 0;
plaintext = pg_malloc0(1);
}

All the tests pass now. The current src/test directory is 19MB, and
adding these tests takes it to 23MB, or a 20% increase. That seems like
a lot. It is testing 128-bit and 256-bit keys --- should we do fewer
tests, or just test 256, or use gzip to compress the tests by 50%?
(Does every platform have gzip?)

Thanks a lot for working on this and figuring out what the issue was and
fixing it! That's great that we got all those cases passing for you
too.

Thanks again,

Stephen

#9Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#7)
Re: Key management with tests

On Fri, Jan 8, 2021 at 03:33:44PM -0500, Stephen Frost wrote:

No, I don't think so. Stephen imported the entire NIST test suite. It
was so comperhensive, it detected several OpenSSL bugs for zero-length
strings, which I already reported, but we would never be encrypting
zero-length strings, so there wasn't a lot of value to it.

I ran the entire test suite locally to ensure everything worked, but I
didn't actually include all of it in the PR which you merged- I had
already reduced it quite a bit by removing all 'additional
authenticated data' test cases (which the tests will automatically skip
and which we haven't implemented support for in the common library
wrappers) and by removing the 192-bit cases. This reduced the overall
test set by about 2/3rd's or so, as I recall.

Wow, so that was reduced!

Anyway, I think we need to figure out how to trim. The first part would
be to figure out whether we need 128 _and_ 256-bit tests, and then see
what items are really useful. Stephen, do you have any ideas on that?
We currently have 10296 tests, and I think we could get away with 100.

Yeah, it's probably still too much, but I don't have any particularly
justifiable suggestions as to exactly what we should remove or what we
should keep.

Perhaps it'd make sense to try and cover the cases that are more likely
to be issues between our wrapper functions and OpenSSL, and not stress
too much about constantly testing cases that should really be up to
OpenSSL. As such, I'd propose:

- Add back in some 192-bit tests, so we cover all three bit lengths.
- Add back in some additional authenticated test cases, just to make
sure that, until/unless we implement support, the test code properly
skips over those.
- Keep tests for various length plaintext/ciphertext (including 0-byte
cases, so we make sure those work, since they really should).
- Keep at least one test for each length of tag that's included in the
test suite.

Makes sense. I did a simplistic trim-down to 90 tests but it still was
40% of the patch; attached. The hex strings are very long.

I'm not sure how many tests we'd end up with from that, but my swag /
gut feeling is that it'd probably be on the order of 100ish and a small
enough set that it won't dwarf the rest of the patch.

Would be nice if we had a way for some buildfarm animal or something to
pull in the entire suite and test it, imv.. If anyone wants to
volunteer, I'd be happy to explain how to make that happen (it's not
hard though- download/unzip the files, drop them in the directory,
update the test script to add all the files into the array).

Yes, do we have a place to store more comprehensive tests outside of our
git tree? Has this been done before?

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

The usefulness of a cup is in its emptiness, Bruce Lee

Attachments:

cryptotest.tgzapplication/x-gtar-compressedDownload+1-2
#10Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#8)
Re: Key management with tests

On Fri, Jan 8, 2021 at 03:34:23PM -0500, Stephen Frost wrote:

All the tests pass now. The current src/test directory is 19MB, and
adding these tests takes it to 23MB, or a 20% increase. That seems like
a lot. It is testing 128-bit and 256-bit keys --- should we do fewer
tests, or just test 256, or use gzip to compress the tests by 50%?
(Does every platform have gzip?)

Thanks a lot for working on this and figuring out what the issue was and
fixing it! That's great that we got all those cases passing for you
too.

Yes, I was relieved. The pattern of when zero-length strings fail in
which modes is still very odd, but at least it reports an error, so it
isn't returning incorrect data.

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

The usefulness of a cup is in its emptiness, Bruce Lee

#11Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#9)
Re: Key management with tests

Greetings,

* Bruce Momjian (bruce@momjian.us) wrote:

On Fri, Jan 8, 2021 at 03:33:44PM -0500, Stephen Frost wrote:

Anyway, I think we need to figure out how to trim. The first part would
be to figure out whether we need 128 _and_ 256-bit tests, and then see
what items are really useful. Stephen, do you have any ideas on that?
We currently have 10296 tests, and I think we could get away with 100.

Yeah, it's probably still too much, but I don't have any particularly
justifiable suggestions as to exactly what we should remove or what we
should keep.

Perhaps it'd make sense to try and cover the cases that are more likely
to be issues between our wrapper functions and OpenSSL, and not stress
too much about constantly testing cases that should really be up to
OpenSSL. As such, I'd propose:

- Add back in some 192-bit tests, so we cover all three bit lengths.
- Add back in some additional authenticated test cases, just to make
sure that, until/unless we implement support, the test code properly
skips over those.
- Keep tests for various length plaintext/ciphertext (including 0-byte
cases, so we make sure those work, since they really should).
- Keep at least one test for each length of tag that's included in the
test suite.

Makes sense. I did a simplistic trim-down to 90 tests but it still was
40% of the patch; attached. The hex strings are very long.

I don't think we actually need to stress over the size of the test data
relative to the size of the patch- it's not like it's all that much perl
code. I can appreciate that we don't want to add megabytes worth of
test data to the git repo though.

I'm not sure how many tests we'd end up with from that, but my swag /
gut feeling is that it'd probably be on the order of 100ish and a small
enough set that it won't dwarf the rest of the patch.

Would be nice if we had a way for some buildfarm animal or something to
pull in the entire suite and test it, imv.. If anyone wants to
volunteer, I'd be happy to explain how to make that happen (it's not
hard though- download/unzip the files, drop them in the directory,
update the test script to add all the files into the array).

Yes, do we have a place to store more comprehensive tests outside of our
git tree? Has this been done before?

Not that I'm aware of.

Thanks,

Stephen

#12Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#2)
Re: Key management with tests

On Fri, Jan 1, 2021 at 01:07:50AM -0500, Bruce Momjian wrote:

On Thu, Dec 31, 2020 at 11:50:47PM -0500, Bruce Momjian wrote:

I have completed the key management patch with tests created by Stephen
Frost. Original patch by Masahiko Sawada. It requires the hex
reorganization patch first. The key patch is now 2.1MB because of the
tests, so attaching it here seems unwise:

https://github.com/postgres/postgres/compare/master...bmomjian:hex.diff
https://github.com/postgres/postgres/compare/master...bmomjian:key.diff

I will add it to the commitfest. I think we need to figure out how much
of the tests we want to add.

I am getting regression test errors using OpenSSL 1.1.1d 10 Sep 2019
with zero-length input data (no -p), while Stephen is able for those
tests to pass. This needs more research, plus I think higher-level
tests.

I know we are still working on the hex patch (dest-len) and the crypto
tests, but I wanted to post this so people can see where we are, and we
can get some current cfbot testing.

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

The usefulness of a cup is in its emptiness, Bruce Lee

Attachments:

hex.diff.gzapplication/gzipDownload
key.diff.gzapplication/gzipDownload+1-2
#13Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#12)
Re: Key management with tests

On Sat, Jan 9, 2021 at 01:17:36PM -0500, Bruce Momjian wrote:

On Fri, Jan 1, 2021 at 01:07:50AM -0500, Bruce Momjian wrote:

On Thu, Dec 31, 2020 at 11:50:47PM -0500, Bruce Momjian wrote:

I have completed the key management patch with tests created by Stephen
Frost. Original patch by Masahiko Sawada. It requires the hex
reorganization patch first. The key patch is now 2.1MB because of the
tests, so attaching it here seems unwise:

https://github.com/postgres/postgres/compare/master...bmomjian:hex.diff
https://github.com/postgres/postgres/compare/master...bmomjian:key.diff

I will add it to the commitfest. I think we need to figure out how much
of the tests we want to add.

I am getting regression test errors using OpenSSL 1.1.1d 10 Sep 2019
with zero-length input data (no -p), while Stephen is able for those
tests to pass. This needs more research, plus I think higher-level
tests.

I know we are still working on the hex patch (dest-len) and the crypto
tests, but I wanted to post this so people can see where we are, and we
can get some current cfbot testing.

Here is an updated version that covers all the possible
testing/configuration options.

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

The usefulness of a cup is in its emptiness, Bruce Lee

Attachments:

hex.diff.gzapplication/gzipDownload
hex..key.diff.gzapplication/gzipDownload+5-0
#14Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#13)
Re: Key management with tests

On Sat, Jan 9, 2021 at 08:08:16PM -0500, Bruce Momjian wrote:

On Sat, Jan 9, 2021 at 01:17:36PM -0500, Bruce Momjian wrote:

I know we are still working on the hex patch (dest-len) and the crypto
tests, but I wanted to post this so people can see where we are, and we
can get some current cfbot testing.

Here is an updated version that covers all the possible
testing/configuration options.

Does anyone know why the cfbot applied the patch listed second first
here?

http://cfbot.cputube.org/patch_31_2925.log

Specifically, it applied hex..key.diff.gz before hex.diff.gz. I assumed
it would apply attachments in the order they appear in the email.

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

The usefulness of a cup is in its emptiness, Bruce Lee

#15Thomas Munro
thomas.munro@gmail.com
In reply to: Bruce Momjian (#14)
Re: Key management with tests

On Sun, Jan 10, 2021 at 3:45 PM Bruce Momjian <bruce@momjian.us> wrote:

Does anyone know why the cfbot applied the patch listed second first
here?

http://cfbot.cputube.org/patch_31_2925.log

Specifically, it applied hex..key.diff.gz before hex.diff.gz. I assumed
it would apply attachments in the order they appear in the email.

It sorts the filenames (in this case after decompressing step removes
the .gz endings). That works pretty well for the patches that "git
format-patch" spits out, but it's a bit hit and miss with cases like
yours.

#16Bruce Momjian
bruce@momjian.us
In reply to: Thomas Munro (#15)
Re: Key management with tests

On Sun, Jan 10, 2021 at 06:04:12PM +1300, Thomas Munro wrote:

On Sun, Jan 10, 2021 at 3:45 PM Bruce Momjian <bruce@momjian.us> wrote:

Does anyone know why the cfbot applied the patch listed second first
here?

http://cfbot.cputube.org/patch_31_2925.log

Specifically, it applied hex..key.diff.gz before hex.diff.gz. I assumed
it would apply attachments in the order they appear in the email.

It sorts the filenames (in this case after decompressing step removes
the .gz endings). That works pretty well for the patches that "git
format-patch" spits out, but it's a bit hit and miss with cases like
yours.

OK, here they are with numeric prefixes. It was actually tricky to
figure out how to create a squashed format-patch based on another branch.

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

The usefulness of a cup is in its emptiness, Bruce Lee

Attachments:

01-hex.diff.gzapplication/gzipDownload
02-hex..key.diff.gzapplication/gzipDownload+1-1
#17Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Bruce Momjian (#16)
Re: Key management with tests

On Sun, Jan 10, 2021 at 11:51 PM Bruce Momjian <bruce@momjian.us> wrote:

On Sun, Jan 10, 2021 at 06:04:12PM +1300, Thomas Munro wrote:

On Sun, Jan 10, 2021 at 3:45 PM Bruce Momjian <bruce@momjian.us> wrote:

Does anyone know why the cfbot applied the patch listed second first
here?

http://cfbot.cputube.org/patch_31_2925.log

Specifically, it applied hex..key.diff.gz before hex.diff.gz. I assumed
it would apply attachments in the order they appear in the email.

It sorts the filenames (in this case after decompressing step removes
the .gz endings). That works pretty well for the patches that "git
format-patch" spits out, but it's a bit hit and miss with cases like
yours.

OK, here they are with numeric prefixes. It was actually tricky to
figure out how to create a squashed format-patch based on another branch.

Thank you for attaching the patches. It passes all cfbot tests, great.

Looking at the patch, it supports three algorithms but only
PG_CIPHER_AES_KWP is used in the core for now:

+/*
+ * Supported symmetric encryption algorithm. These identifiers are passed
+ * to pg_cipher_ctx_create() function, and then actual encryption
+ * implementations need to initialize their context of the given encryption
+ * algorithm.
+ */
+#define PG_CIPHER_AES_GCM          0
+#define PG_CIPHER_AES_KW           1
+#define PG_CIPHER_AES_KWP          2
+#define PG_MAX_CIPHER_ID           3

Are we in the process of experimenting which algorithms are better? If
we support one algorithm that is actually used in the core, we would
reduce the tests as well.

FWIW, I've written a PoC patch for buffer encryption to make sure the
kms patch would be workable with other components using the encryption
key managed by kmgr.

Overall it’s good. While the buffer encryption patch is still PoC
quality and there are some problems regarding nonce generation we need
to deal with, it easily can use the relation key managed by the kmgr
to encrypt/decrypt buffers.

Regards,

--
Masahiko Sawada
EnterpriseDB: https://www.enterprisedb.com/

Attachments:

0003-Poc-buffer-encryption.patchapplication/octet-stream; name=0003-Poc-buffer-encryption.patchDownload+306-8
#18Bruce Momjian
bruce@momjian.us
In reply to: Masahiko Sawada (#17)
Re: Key management with tests

On Mon, Jan 11, 2021 at 08:12:00PM +0900, Masahiko Sawada wrote:

On Sun, Jan 10, 2021 at 11:51 PM Bruce Momjian <bruce@momjian.us> wrote:

OK, here they are with numeric prefixes. It was actually tricky to
figure out how to create a squashed format-patch based on another branch.

Thank you for attaching the patches. It passes all cfbot tests, great.

Yeah, I saw that. :-) I head to learn a lot about how to create
squashed format-patches on non-master branches. I have now automated it
so it will be easy going forward.

Looking at the patch, it supports three algorithms but only
PG_CIPHER_AES_KWP is used in the core for now:

+/*
+ * Supported symmetric encryption algorithm. These identifiers are passed
+ * to pg_cipher_ctx_create() function, and then actual encryption
+ * implementations need to initialize their context of the given encryption
+ * algorithm.
+ */
+#define PG_CIPHER_AES_GCM          0
+#define PG_CIPHER_AES_KW           1
+#define PG_CIPHER_AES_KWP          2
+#define PG_MAX_CIPHER_ID           3

Are we in the process of experimenting which algorithms are better? If
we support one algorithm that is actually used in the core, we would
reduce the tests as well.

I think we are only using KWP (Key Wrap with Padding) because that is
for wrapping keys:

https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/mac/KWVS.pdf

I am not sure about KW. I think we are using GCM for the WAP/heap/index
pages. Stephen would know more.

FWIW, I've written a PoC patch for buffer encryption to make sure the
kms patch would be workable with other components using the encryption
key managed by kmgr.

Wow, it is a small patch --- nice.

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

The usefulness of a cup is in its emptiness, Bruce Lee

#19Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#18)
Re: Key management with tests

Greetings,

* Bruce Momjian (bruce@momjian.us) wrote:

On Mon, Jan 11, 2021 at 08:12:00PM +0900, Masahiko Sawada wrote:

Looking at the patch, it supports three algorithms but only
PG_CIPHER_AES_KWP is used in the core for now:

+/*
+ * Supported symmetric encryption algorithm. These identifiers are passed
+ * to pg_cipher_ctx_create() function, and then actual encryption
+ * implementations need to initialize their context of the given encryption
+ * algorithm.
+ */
+#define PG_CIPHER_AES_GCM          0
+#define PG_CIPHER_AES_KW           1
+#define PG_CIPHER_AES_KWP          2
+#define PG_MAX_CIPHER_ID           3

Are we in the process of experimenting which algorithms are better? If
we support one algorithm that is actually used in the core, we would
reduce the tests as well.

I think we are only using KWP (Key Wrap with Padding) because that is
for wrapping keys:

https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/mac/KWVS.pdf

Yes.

I am not sure about KW. I think we are using GCM for the WAP/heap/index
pages. Stephen would know more.

KW was more-or-less 'for free' and there were tests for it, which is why
it was included. Yes, GCM would be for WAL/heap/index pages, it
wouldn't be appropriate to use KW or KWP for that. Using KW/KWP for the
key wrapping also makes the API simpler- and therefore easier for other
implementations to be written which provide the same API.

FWIW, I've written a PoC patch for buffer encryption to make sure the
kms patch would be workable with other components using the encryption
key managed by kmgr.

Wow, it is a small patch --- nice.

I agree that the actual encryption patch, for just the main heap/index,
won't be too bad. The larger part will be dealing with all of the
temporary files we create that have user data in them... I've been
contemplating a way to try and make that part of the patch smaller
though and hopefully that will bear fruit and we can avoid having to
change a lof of, eg, reorderbuffer.c and pgstat.c.

There's a few places where we need to be sure to be updating the LSN for
both logged and unlogged relations properly, including dealing with
things like the magic GIST "GistBuildLSN" fake-LSN too, and we will
absolutely need to have a bit used in the IV to distinguish if it's a
real LSN or an unlogged LSN.

Although, another approach and one that I've discussed a bit with Bruce,
is to have more keys- such as a key for temporary files, and perhaps
even a key for logged relations and a different for unlogged.. Or
perhaps sets of keys for each which automatically are rotating every X
number of GB based on the LSN... Which is a big part of why key
management is such an important part of this effort.

Thanks,

Stephen

#20Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#19)
Re: Key management with tests

On Mon, Jan 11, 2021 at 12:54:49PM -0500, Stephen Frost wrote:

Although, another approach and one that I've discussed a bit with Bruce,
is to have more keys- such as a key for temporary files, and perhaps
even a key for logged relations and a different for unlogged.. Or

Yes, we have to make sure the nonce (computed as LSN/pageno) is never
reused, so if we have several LSN usage "spaces", they need different
data keys.

perhaps sets of keys for each which automatically are rotating every X
number of GB based on the LSN... Which is a big part of why key
management is such an important part of this effort.

Yes, this would avoid the need to failover to a standby for data key
rotation.

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

The usefulness of a cup is in its emptiness, Bruce Lee

#21Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#20)
#22Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#21)
#23Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#22)
#24Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#23)
#25Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#24)
#26Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Stephen Frost (#21)
#27Bruce Momjian
bruce@momjian.us
In reply to: Masahiko Sawada (#26)
#28Neil Chen
carpenter.nail.cz@gmail.com
In reply to: Stephen Frost (#25)
#29Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Bruce Momjian (#27)
#30Stephen Frost
sfrost@snowman.net
In reply to: Neil Chen (#28)
#31Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#16)
#32Bruce Momjian
bruce@momjian.us
In reply to: Masahiko Sawada (#29)
#33Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#32)
#34Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#32)
#35Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#34)
#36Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#35)
#37Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#35)
#38Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#36)
#39Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#38)
#40Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#39)
#41Andres Freund
andres@anarazel.de
In reply to: Masahiko Sawada (#17)
#42Neil Chen
carpenter.nail.cz@gmail.com
In reply to: Stephen Frost (#30)
#43Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#37)
#44Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#31)
#45Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#44)
#46Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#45)
#47Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#46)
#48David G. Johnston
david.g.johnston@gmail.com
In reply to: Robert Haas (#47)
#49Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#47)
#50Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#46)
#51Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#50)
#52Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#51)
#53Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#52)
#54Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#53)
#55Michael Paquier
michael@paquier.xyz
In reply to: Andres Freund (#54)
#56Tom Kincaid
tomjohnkincaid@gmail.com
In reply to: Andres Freund (#54)
#57Amit Kapila
amit.kapila16@gmail.com
In reply to: Tom Kincaid (#56)
#58Andres Freund
andres@anarazel.de
In reply to: Amit Kapila (#57)
#59Robert Haas
robertmhaas@gmail.com
In reply to: Andres Freund (#52)
#60Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#59)
#61Bruce Momjian
bruce@momjian.us
In reply to: Amit Kapila (#57)
#62Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#58)
#63Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#61)
#64Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#63)
#65Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#64)
#66Tom Kincaid
tomjohnkincaid@gmail.com
In reply to: Andres Freund (#64)
#67Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#65)
#68Robert Haas
robertmhaas@gmail.com
In reply to: Tom Kincaid (#66)
#69Tom Kincaid
tomjohnkincaid@gmail.com
In reply to: Andres Freund (#67)
#70Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#68)
#71Bruce Momjian
bruce@momjian.us
In reply to: Tom Kincaid (#69)
#72Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Bruce Momjian (#71)
#73Bruce Momjian
bruce@momjian.us
In reply to: Alvaro Herrera (#72)
#74Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#73)
#75Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#74)
#76Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#75)
#77Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#76)
#78Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#77)
#79Tom Kincaid
tomjohnkincaid@gmail.com
In reply to: Bruce Momjian (#77)
#80Bruce Momjian
bruce@momjian.us
In reply to: Tom Kincaid (#79)
#81Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Bruce Momjian (#80)
#82Stephen Frost
sfrost@snowman.net
In reply to: Masahiko Sawada (#81)
#83Tom Kincaid
tomjohnkincaid@gmail.com
In reply to: Stephen Frost (#82)
#84Moon, Insung
tsukiwamoon.pgsql@gmail.com
In reply to: Tom Kincaid (#83)
#85Bruce Momjian
bruce@momjian.us
In reply to: Masahiko Sawada (#81)
#86Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#82)
#87Bruce Momjian
bruce@momjian.us
In reply to: Tom Kincaid (#83)
#88Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#86)
#89Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#87)
#90Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#89)
#91Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#88)
#92Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#91)
#93Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#92)
#94Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#93)
#95Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#94)
#96Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#95)
#97Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#96)
#98Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#97)
#99Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#98)
#100Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#99)
#101Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#100)
#102Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#101)
#103Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#102)
#104Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#103)
#105Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Bruce Momjian (#102)
#106Stephen Frost
sfrost@snowman.net
In reply to: Alvaro Herrera (#105)
#107Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Stephen Frost (#106)
#108Stephen Frost
sfrost@snowman.net
In reply to: Alvaro Herrera (#107)
#109Bruce Momjian
bruce@momjian.us
In reply to: Alvaro Herrera (#107)
#110Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#108)
#111Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#103)
#112Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#111)
#113Neil Chen
carpenter.nail.cz@gmail.com
In reply to: Bruce Momjian (#102)
#114Bruce Momjian
bruce@momjian.us
In reply to: Neil Chen (#113)
#115Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#110)
#116Andres Freund
andres@anarazel.de
In reply to: Robert Haas (#115)
#117Robert Haas
robertmhaas@gmail.com
In reply to: Andres Freund (#116)
#118Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#115)
#119Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#117)
#120Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#116)
#121Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#118)
#122Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#121)
#123Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#122)
#124Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#123)
#125Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#119)
#126Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#121)
#127Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#123)
#128Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#127)
#129Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#123)
#130Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#125)
#131Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#129)
#132Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#128)
#133Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#130)
#134Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#132)
#135Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#133)
#136Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#131)
#137Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#134)
#138Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#135)
#139Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#136)
#140Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#138)
#141Andres Freund
andres@anarazel.de
In reply to: Stephen Frost (#126)
#142Andres Freund
andres@anarazel.de
In reply to: Stephen Frost (#129)
#143Andres Freund
andres@anarazel.de
In reply to: Stephen Frost (#136)
#144Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#139)
#145Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#139)
#146Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#140)
#147Stephen Frost
sfrost@snowman.net
In reply to: Andres Freund (#141)
#148Andres Freund
andres@anarazel.de
In reply to: Stephen Frost (#145)
#149Stephen Frost
sfrost@snowman.net
In reply to: Andres Freund (#142)
#150Andres Freund
andres@anarazel.de
In reply to: Stephen Frost (#133)
#151Stephen Frost
sfrost@snowman.net
In reply to: Andres Freund (#143)
#152Stephen Frost
sfrost@snowman.net
In reply to: Andres Freund (#150)
#153Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#152)
#154Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#144)
#155Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#145)
#156Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#153)
#157Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#155)
#158Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#157)
#159Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#158)
#160Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#158)
#161Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#160)
#162Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#161)
#163Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#161)
#164Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#163)
#165Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#154)
#166Antonin Houska
ah@cybertec.at
In reply to: Bruce Momjian (#154)
#167Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#149)
#168Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#167)
#169Bruce Momjian
bruce@momjian.us
In reply to: Antonin Houska (#166)
#170Stephen Frost
sfrost@snowman.net
In reply to: Stephen Frost (#168)
#171Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#168)
#172Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#169)
#173Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#167)
#174Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#171)
#175Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#172)
#176Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#173)
#177Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#167)
#178Andres Freund
andres@anarazel.de
In reply to: Antonin Houska (#166)
#179Andres Freund
andres@anarazel.de
In reply to: Stephen Frost (#163)
#180Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#131)
#181Neil Chen
carpenter.nail.cz@gmail.com
In reply to: Bruce Momjian (#176)
#182Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#173)
#183Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#178)
#184Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#179)
#185Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#180)
#186Bruce Momjian
bruce@momjian.us
In reply to: Neil Chen (#181)
#187Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#182)
#188Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#185)
#189Stephen Frost
sfrost@snowman.net
In reply to: Andres Freund (#188)
#190Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#177)
#191Andres Freund
andres@anarazel.de
In reply to: Stephen Frost (#189)
#192Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#188)
#193Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#187)
#194Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#192)
#195Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#193)
#196Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#184)
#197Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#183)
#198Robert Haas
robertmhaas@gmail.com
In reply to: Andres Freund (#191)
#199Andres Freund
andres@anarazel.de
In reply to: Robert Haas (#182)
#200Andres Freund
andres@anarazel.de
In reply to: Robert Haas (#198)
#201Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#198)
#202Robert Haas
robertmhaas@gmail.com
In reply to: Andres Freund (#199)
#203Stephen Frost
sfrost@snowman.net
In reply to: Andres Freund (#200)
#204Andres Freund
andres@anarazel.de
In reply to: Stephen Frost (#203)
#205Stephen Frost
sfrost@snowman.net
In reply to: Andres Freund (#204)
#206Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#195)
#207Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#190)
#208Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#203)
#209Andres Freund
andres@anarazel.de
In reply to: Stephen Frost (#205)
#210Stephen Frost
sfrost@snowman.net
In reply to: Andres Freund (#209)
#211Robert Haas
robertmhaas@gmail.com
In reply to: Andres Freund (#204)
#212Andres Freund
andres@anarazel.de
In reply to: Stephen Frost (#210)
#213Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#210)
#214Andres Freund
andres@anarazel.de
In reply to: Robert Haas (#211)
#215Stephen Frost
sfrost@snowman.net
In reply to: Andres Freund (#212)
#216Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Andres Freund (#214)
#217Andres Freund
andres@anarazel.de
In reply to: Stephen Frost (#215)
#218Andres Freund
andres@anarazel.de
In reply to: Alvaro Herrera (#216)
#219Stephen Frost
sfrost@snowman.net
In reply to: Andres Freund (#217)
#220Robert Haas
robertmhaas@gmail.com
In reply to: Andres Freund (#214)
#221Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#215)
#222Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#221)
#223Andres Freund
andres@anarazel.de
In reply to: Robert Haas (#220)
#224Neil Chen
carpenter.nail.cz@gmail.com
In reply to: Bruce Momjian (#186)
#225Neil Chen
carpenter.nail.cz@gmail.com
In reply to: Neil Chen (#224)
#226Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#219)
#227Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#221)
#228Stephen Frost
sfrost@snowman.net
In reply to: Andres Freund (#227)
#229Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#228)
#230Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#228)
#231Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#177)
#232vignesh C
vignesh21@gmail.com
In reply to: Bruce Momjian (#231)
#233Bruce Momjian
bruce@momjian.us
In reply to: vignesh C (#232)
#234Shruthi Gowda
gowdashru@gmail.com
In reply to: Stephen Frost (#222)
#235Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#234)
#236Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#235)
#237Stephen Frost
sfrost@snowman.net
In reply to: Tom Lane (#236)
#238Tom Lane
tgl@sss.pgh.pa.us
In reply to: Stephen Frost (#237)
#239Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#238)
#240Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#239)
#241Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#240)
#242Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#239)
#243Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#235)
#244Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#240)
#245Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#235)
#246Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#245)
#247Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#246)
#248Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#246)
#249Shruthi Gowda
gowdashru@gmail.com
In reply to: Bruce Momjian (#248)
#250Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#247)
#251Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#248)
#252Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#251)
#253Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#252)
#254Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#251)
#255Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#250)
#256Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#252)
#257Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#250)
#258Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#255)
#259Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#258)
#260Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#255)
#261Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#260)
#262Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#261)
#263Robert Haas
robertmhaas@gmail.com
In reply to: Robert Haas (#244)
#264Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#263)
#265Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#264)
#266Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#264)
#267Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#263)
#268Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#265)
#269Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#266)
#270Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#267)
#271Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#269)
#272Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#269)
#273Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#270)
#274Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#271)
#275Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#272)
#276Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#274)
#277Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#276)
#278Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#275)
#279Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#277)
#280Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#278)
#281Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#279)
#282Sasasu
i@sasa.su
In reply to: Bruce Momjian (#131)
#283Sasasu
i@sasa.su
In reply to: Sasasu (#282)
#284Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#246)
#285Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#284)
#286Bruce Momjian
bruce@momjian.us
In reply to: Sasasu (#282)
#287Ants Aasma
ants.aasma@cybertec.at
In reply to: Bruce Momjian (#286)
#288Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#285)
#289Bruce Momjian
bruce@momjian.us
In reply to: Ants Aasma (#287)
#290Stephen Frost
sfrost@snowman.net
In reply to: Ants Aasma (#287)
#291Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#290)
#292Robert Haas
robertmhaas@gmail.com
In reply to: Robert Haas (#291)
#293Antonin Houska
ah@cybertec.at
In reply to: Robert Haas (#292)
#294Bruce Momjian
bruce@momjian.us
In reply to: Ants Aasma (#287)
#295Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#294)
#296Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#294)
#297Robert Haas
robertmhaas@gmail.com
In reply to: Antonin Houska (#293)
#298Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#294)
#299Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#296)
#300Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#292)
#301Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#300)
#302Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#298)
#303Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#302)
#304Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#299)
#305Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#295)
#306Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#305)
#307Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#288)
#308Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#307)
#309Antonin Houska
ah@cybertec.at
In reply to: Bruce Momjian (#296)
#310Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#308)
#311Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#306)
#312Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#305)
#313Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#312)
#314Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#312)
#315Bruce Momjian
bruce@momjian.us
In reply to: Antonin Houska (#309)
#316Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#315)
#317Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#313)
#318Robert Haas
robertmhaas@gmail.com
In reply to: Andres Freund (#316)
#319Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#317)
#320Bruce Momjian
bruce@momjian.us
In reply to: Andres Freund (#316)
#321Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#318)
#322Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#317)
#323Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#321)
#324Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#321)
#325Ants Aasma
ants.aasma@cybertec.at
In reply to: Bruce Momjian (#306)
#326Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#318)
#327Bruce Momjian
bruce@momjian.us
In reply to: Ants Aasma (#325)
#328Robert Haas
robertmhaas@gmail.com
In reply to: Bruce Momjian (#323)
#329Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#324)
#330Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#327)
#331Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#328)
#332Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#328)
#333Ants Aasma
ants.aasma@cybertec.at
In reply to: Stephen Frost (#330)
#334Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#322)
#335Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#330)
#336Bruce Momjian
bruce@momjian.us
In reply to: Ants Aasma (#333)
#337Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#330)
#338Ashwin Agrawal
aagrawal@pivotal.io
In reply to: Robert Haas (#337)
#339Robert Haas
robertmhaas@gmail.com
In reply to: Ashwin Agrawal (#338)
#340Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#337)
#341Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#340)
#342Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#340)
#343Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#339)
#344Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#342)
#345Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#334)
#346Antonin Houska
ah@cybertec.at
In reply to: Stephen Frost (#344)
#347Stephen Frost
sfrost@snowman.net
In reply to: Antonin Houska (#346)
#348Sasasu
i@sasa.su
In reply to: Stephen Frost (#347)
#349Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#345)
#350Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#349)
#351Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#347)
#352Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#350)
#353Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#351)
#354Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#353)
#355Ants Aasma
ants.aasma@cybertec.at
In reply to: Bruce Momjian (#354)
#356Bruce Momjian
bruce@momjian.us
In reply to: Ants Aasma (#355)
#357Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#356)
#358Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#357)
#359Stephen Frost
sfrost@snowman.net
In reply to: Bruce Momjian (#358)
#360Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#359)
#361Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#344)
#362Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#353)
#363Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#362)
#364Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#363)
#365Ants Aasma
ants.aasma@cybertec.at
In reply to: Bruce Momjian (#360)
#366Bruce Momjian
bruce@momjian.us
In reply to: Ants Aasma (#365)
#367Ants Aasma
ants.aasma@cybertec.at
In reply to: Bruce Momjian (#366)
#368Stephen Frost
sfrost@snowman.net
In reply to: Ants Aasma (#367)
#369Bruce Momjian
bruce@momjian.us
In reply to: Ants Aasma (#367)
#370Ants Aasma
ants.aasma@cybertec.at
In reply to: Bruce Momjian (#369)
#371Stephen Frost
sfrost@snowman.net
In reply to: Ants Aasma (#370)
#372Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#371)
#373Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#310)
#374Antonin Houska
ah@cybertec.at
In reply to: Sasasu (#348)
#375Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#361)
#376Sadhuprasad Patro
b.sadhu@gmail.com
In reply to: Shruthi Gowda (#373)
#377Robert Haas
robertmhaas@gmail.com
In reply to: Sadhuprasad Patro (#376)
#378Shruthi Gowda
gowdashru@gmail.com
In reply to: Sadhuprasad Patro (#376)
#379Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#377)
#380Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#378)
#381Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#380)
#382tushar
tushar.ahuja@enterprisedb.com
In reply to: Robert Haas (#380)
#383tushar
tushar.ahuja@enterprisedb.com
In reply to: tushar (#382)
#384Shruthi Gowda
gowdashru@gmail.com
In reply to: Shruthi Gowda (#379)
#385Julien Rouhaud
rjuju123@gmail.com
In reply to: Shruthi Gowda (#384)
#386Shruthi Gowda
gowdashru@gmail.com
In reply to: Julien Rouhaud (#385)
#387Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#381)
#388Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#386)
#389Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#387)
#390Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#388)
#391Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#390)
#392Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#391)
#393Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#392)
#394Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#393)
#395Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#394)
#396Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#395)
#397Shruthi Gowda
gowdashru@gmail.com
In reply to: Tom Lane (#396)
#398Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#395)
#399Bruce Momjian
bruce@momjian.us
In reply to: Shruthi Gowda (#397)
#400Robert Haas
robertmhaas@gmail.com
In reply to: Shruthi Gowda (#398)
#401Shruthi Gowda
gowdashru@gmail.com
In reply to: Robert Haas (#400)
#402Antonin Houska
ah@cybertec.at
In reply to: Stephen Frost (#300)
#403Justin Pryzby
pryzby@telsasoft.com
In reply to: Shruthi Gowda (#401)
#404Andres Freund
andres@anarazel.de
In reply to: Robert Haas (#400)
#405Robert Haas
robertmhaas@gmail.com
In reply to: Andres Freund (#404)
#406Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#400)
#407Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#406)
#408Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#407)
#409Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#408)
#410Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#409)
#411Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#410)
#412Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#411)
#413Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#314)
In reply to: Robert Haas (#413)
In reply to: Peter Geoghegan (#414)
#416Matthias van de Meent
boekewurm+postgres@gmail.com
In reply to: Robert Haas (#413)
#417Fabien COELHO
coelho@cri.ensmp.fr
In reply to: Robert Haas (#413)
#418Andrey Borodin
amborodin@acm.org
In reply to: Matthias van de Meent (#416)
#419Robert Haas
robertmhaas@gmail.com
In reply to: Peter Geoghegan (#414)
#420Peter Eisentraut
peter_e@gmx.net
In reply to: Robert Haas (#419)
#421Robert Haas
robertmhaas@gmail.com
In reply to: Matthias van de Meent (#416)
#422Robert Haas
robertmhaas@gmail.com
In reply to: Peter Eisentraut (#420)
#423Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#422)
#424Stephen Frost
sfrost@snowman.net
In reply to: Andrey Borodin (#418)
#425Stephen Frost
sfrost@snowman.net
In reply to: Fabien COELHO (#417)
#426Robert Haas
robertmhaas@gmail.com
In reply to: Stephen Frost (#423)
#427Aleksander Alekseev
aleksander@timescale.com
In reply to: Robert Haas (#426)
#428Robert Haas
robertmhaas@gmail.com
In reply to: Aleksander Alekseev (#427)
#429Aleksander Alekseev
aleksander@timescale.com
In reply to: Robert Haas (#428)
#430Robert Haas
robertmhaas@gmail.com
In reply to: Aleksander Alekseev (#429)
#431Matthias van de Meent
boekewurm+postgres@gmail.com
In reply to: Robert Haas (#421)
In reply to: Robert Haas (#419)
#433Bruce Momjian
bruce@momjian.us
In reply to: Peter Geoghegan (#432)
In reply to: Bruce Momjian (#433)
#435Bruce Momjian
bruce@momjian.us
In reply to: Peter Geoghegan (#434)
In reply to: Bruce Momjian (#435)
#437Robert Haas
robertmhaas@gmail.com
In reply to: Matthias van de Meent (#431)
#438Matthias van de Meent
boekewurm+postgres@gmail.com
In reply to: Robert Haas (#437)
#439Robert Haas
robertmhaas@gmail.com
In reply to: Peter Geoghegan (#436)
In reply to: Robert Haas (#439)
#441Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Geoghegan (#440)
#442Robert Haas
robertmhaas@gmail.com
In reply to: Matthias van de Meent (#438)
In reply to: Tom Lane (#441)
In reply to: Robert Haas (#442)
#445Robert Haas
robertmhaas@gmail.com
In reply to: Peter Geoghegan (#443)
In reply to: Robert Haas (#445)
#447Robert Haas
robertmhaas@gmail.com
In reply to: Peter Geoghegan (#446)
In reply to: Robert Haas (#447)
#449Robert Haas
robertmhaas@gmail.com
In reply to: Peter Geoghegan (#448)
In reply to: Robert Haas (#449)
#451Robert Haas
robertmhaas@gmail.com
In reply to: Peter Geoghegan (#450)
In reply to: Robert Haas (#451)
In reply to: Peter Geoghegan (#452)
#454Robert Haas
robertmhaas@gmail.com
In reply to: Peter Geoghegan (#452)
#455Robert Haas
robertmhaas@gmail.com
In reply to: Peter Geoghegan (#453)
In reply to: Robert Haas (#454)
#457Michael Paquier
michael@paquier.xyz
In reply to: Robert Haas (#455)
In reply to: Robert Haas (#455)
#459Peter Eisentraut
peter_e@gmx.net
In reply to: Robert Haas (#430)
#460Robert Haas
robertmhaas@gmail.com
In reply to: Peter Eisentraut (#459)
#461Robert Haas
robertmhaas@gmail.com
In reply to: Peter Geoghegan (#456)
In reply to: Robert Haas (#461)
#463Robert Haas
robertmhaas@gmail.com
In reply to: Peter Geoghegan (#462)
#464Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#442)