pgcrypto - real life examples to encrypt / decrypt

Started by Vikas Sharmaover 4 years ago12 messagesgeneral
Jump to latest
#1Vikas Sharma
shavikas@gmail.com

Dear Experts,

Could you please share some real life examples of using pgcrypto in
production?

I am planning to use it in our environment and wondering what could be the
best practice for its use.

Thank you. Regards
Vikas S

#2Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Vikas Sharma (#1)
Re: pgcrypto - real life examples to encrypt / decrypt

On 8/2/21 2:14 PM, Vikas Sharma wrote:

Dear Experts,

Could you please share some real life examples of using pgcrypto in
production?

I am planning to use it in our environment and wondering what could be
the best practice for its use.

I would start by doing a search on 'using pgcrypto', that will return
articles/blogs with pointers.

Thank you. Regards
Vikas S

--
Adrian Klaver
adrian.klaver@aklaver.com

#3Vikas Sharma
shavikas@gmail.com
In reply to: Adrian Klaver (#2)
Re: pgcrypto - real life examples to encrypt / decrypt

Thanks Adrian,

I will check them out.

Regards
Vikas S

On Mon, 2 Aug 2021 at 22:22, Adrian Klaver <adrian.klaver@aklaver.com>
wrote:

Show quoted text

On 8/2/21 2:14 PM, Vikas Sharma wrote:

Dear Experts,

Could you please share some real life examples of using pgcrypto in
production?

I am planning to use it in our environment and wondering what could be
the best practice for its use.

I would start by doing a search on 'using pgcrypto', that will return
articles/blogs with pointers.

Thank you. Regards
Vikas S

--
Adrian Klaver
adrian.klaver@aklaver.com

#4Luca Ferrari
fluca1978@gmail.com
In reply to: Vikas Sharma (#1)
Re: pgcrypto - real life examples to encrypt / decrypt

On Mon, Aug 2, 2021 at 11:14 PM Vikas Sharma <shavikas@gmail.com> wrote:

Dear Experts,

Could you please share some real life examples of using pgcrypto in production?

I am planning to use it in our environment and wondering what could be the best practice for its use.

It is not clear what you are going to do and which kind of encryption
you are going to use.
For a symmetric encryption this could be a starting point:

UPDATE secret
SET secret_text = pgp_sym_encrypt( clear_text,
'A-Strong-Secret-Password' );

I do remember there was an extension made to overtake pgcrypto, but
currently I don't remember the name.

Luca

#5Vikas Sharma
shavikas@gmail.com
In reply to: Luca Ferrari (#4)
Re: pgcrypto - real life examples to encrypt / decrypt

Thank you Luca,

For now I have seen the below:

pgp_pub_encrypt -- using public gpg key
pgp_pub_decrypt -- using secret gpg key

Select crypt('test', gen_salt('md5'));

Select PGP_SYM_DECRYPT(PGP_SYM_ENCRYPT('Some data','Secret
password','compress-algo=1, cipher-algo=aes256'),'Secret password');

My question is, can I use the gpg public/secret key instead of the 'Secret
password' in above PGP_Sym_encrypt/decrypt? I can create a wrapper
function to read the public/secret keys to hide it from appearing as clear
text.

still researching how to encrypt a column with sensitive data as a best
practice to use in OLTP production with minimal impact on performance.

Regards
Vikas S

On Tue, 3 Aug 2021 at 11:03, Luca Ferrari <fluca1978@gmail.com> wrote:

Show quoted text

On Mon, Aug 2, 2021 at 11:14 PM Vikas Sharma <shavikas@gmail.com> wrote:

Dear Experts,

Could you please share some real life examples of using pgcrypto in

production?

I am planning to use it in our environment and wondering what could be

the best practice for its use.

It is not clear what you are going to do and which kind of encryption
you are going to use.
For a symmetric encryption this could be a starting point:

UPDATE secret
SET secret_text = pgp_sym_encrypt( clear_text,

'A-Strong-Secret-Password' );

I do remember there was an extension made to overtake pgcrypto, but
currently I don't remember the name.

Luca

#6Luca Ferrari
fluca1978@gmail.com
In reply to: Vikas Sharma (#5)
Re: pgcrypto - real life examples to encrypt / decrypt

On Tue, Aug 3, 2021 at 1:03 PM Vikas Sharma <shavikas@gmail.com> wrote:

My question is, can I use the gpg public/secret key instead of the 'Secret password' in above PGP_Sym_encrypt/decrypt? I can create a wrapper function to read the public/secret keys to hide it from appearing as clear text.

I think you are looking for something like:

pgp_pub_encrypt( clear_text,
dearmor( '-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----' ) );

still researching how to encrypt a column with sensitive data as a best practice to use in OLTP production with minimal impact on performance.

Clearly, as you add more stuff to do, performances will be lower. I
strongly recommend you to analyze if column encryption is really what
you need for your purposes, because in my little experience it is
often too much work with regard to other approaches (e.g., disk and
backup encryption).

Luca

#7Joe Conway
mail@joeconway.com
In reply to: Luca Ferrari (#6)
Re: pgcrypto - real life examples to encrypt / decrypt

On 8/3/21 8:43 AM, Luca Ferrari wrote:

On Tue, Aug 3, 2021 at 1:03 PM Vikas Sharma <shavikas@gmail.com> wrote:

My question is, can I use the gpg public/secret key instead of the 'Secret password' in above PGP_Sym_encrypt/decrypt? I can create a wrapper function to read the public/secret keys to hide it from appearing as clear text.

I think you are looking for something like:

pgp_pub_encrypt( clear_text,
dearmor( '-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----' ) );

still researching how to encrypt a column with sensitive data as a best practice to use in OLTP production with minimal impact on performance.

Clearly, as you add more stuff to do, performances will be lower. I
strongly recommend you to analyze if column encryption is really what
you need for your purposes, because in my little experience it is
often too much work with regard to other approaches (e.g., disk and
backup encryption).

Generally agreed. This topic is vast and complex and probably beyond
what most people want to discuss by typing (at least for me) ;-)

That said, you might find this extension written by Bruce Momjian useful:

https://momjian.us/download/pgcryptokey/

HTH,

Joe
--
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development

#8Vikas Sharma
shavikas@gmail.com
In reply to: Joe Conway (#7)
Re: pgcrypto - real life examples to encrypt / decrypt

Thanks you Guys,

These are very helpful pointers. I will go away and see how much depth I do
need.

Regards
Vikas S.

On Tue, 3 Aug 2021 at 14:36, Joe Conway <mail@joeconway.com> wrote:

Show quoted text

On 8/3/21 8:43 AM, Luca Ferrari wrote:

On Tue, Aug 3, 2021 at 1:03 PM Vikas Sharma <shavikas@gmail.com> wrote:

My question is, can I use the gpg public/secret key instead of the

'Secret password' in above PGP_Sym_encrypt/decrypt? I can create a wrapper
function to read the public/secret keys to hide it from appearing as clear
text.

I think you are looking for something like:

pgp_pub_encrypt( clear_text,
dearmor( '-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----' ) );

still researching how to encrypt a column with sensitive data as a best

practice to use in OLTP production with minimal impact on performance.

Clearly, as you add more stuff to do, performances will be lower. I
strongly recommend you to analyze if column encryption is really what
you need for your purposes, because in my little experience it is
often too much work with regard to other approaches (e.g., disk and
backup encryption).

Generally agreed. This topic is vast and complex and probably beyond
what most people want to discuss by typing (at least for me) ;-)

That said, you might find this extension written by Bruce Momjian useful:

https://momjian.us/download/pgcryptokey/

HTH,

Joe
--
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development

#9Reid Thompson
Reid.Thompson@omnicell.com
In reply to: Vikas Sharma (#8)
Re: pgcrypto - real life examples to encrypt / decrypt

someone mentioned an alternative earlier that they couldn't remember -- i think it may have been pgsodium that they were thinking of https://github.com/michelp/pgsodium

#10Theodore M Rolle, Jr.
stercor@gmail.com
In reply to: Reid Thompson (#9)
Re: pgcrypto - real life examples to encrypt / decrypt

How do those of us who compile PostgreSQL from source get libsodium into
the mix?

On Fri, Aug 6, 2021 at 2:27 PM Reid Thompson <Reid.Thompson@omnicell.com>
wrote:

someone mentioned an alternative earlier that they couldn't remember -- i
think it may have been pgsodium that they were thinking of
https://github.com/michelp/pgsodium

-- 
 GnuPG/PGP key: 0xDD4276BA
 +-----------------------------------------------------------------------------------------------------+
 | 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510          |
 |   58209 74944[59230 78164]06286 20899 86280
+----------------------------------|
 |   34825 34211 70679*82148 08651 32823 06647 |    May the spirit
       |
 |   09384 46095 50582 23172 53594 08128 48111  |      of π spread
       |
 |   74502 84102 70193 85211 05559 64462 29489 |    around the world.
  |
 |   54930 38196 44288 10975 66593 34461 28475 |      PI VOBISCUM!
 |
 |   38196 44288 10975 66593 34461 28475 64823
+---------------------------------|
 |   37867 83165 27120 19091 45648 56692 34603 48610 45432 6648...         |
 +----------------------------------------------------------------------------------------------------+
#11Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Theodore M Rolle, Jr. (#10)
Re: pgcrypto - real life examples to encrypt / decrypt

On 8/6/21 12:23 PM, Theodore M Rolle, Jr. wrote:

How do those of us who compile PostgreSQL from source get libsodium into
the mix?

Have your package manager install it.

OR

https://doc.libsodium.org/

On Fri, Aug 6, 2021 at 2:27 PM Reid Thompson <Reid.Thompson@omnicell.com
<mailto:Reid.Thompson@omnicell.com>> wrote:

someone mentioned an alternative earlier that they couldn't remember
-- i think it may have been pgsodium that they were thinking of
https://github.com/michelp/pgsodium
<https://github.com/michelp/pgsodium&gt;

--
 GnuPG/PGP key: 0xDD4276BA
 +-----------------------------------------------------------------------------------------------------+
 | 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510          |
 |   58209 74944[59230 78164]06286 20899 86280
+----------------------------------|
 |   34825 34211 70679*82148 08651 32823 06647 |    May the spirit
           |
 |   09384 46095 50582 23172 53594 08128 48111  |      of π spread
           |
 |   74502 84102 70193 85211 05559 64462 29489 |    around the world.
      |
 |   54930 38196 44288 10975 66593 34461 28475 |      PI VOBISCUM!
     |
 |   38196 44288 10975 66593 34461 28475 64823
+---------------------------------|
 |   37867 83165 27120 19091 45648 56692 34603 48610 45432 6648...
    |
 +----------------------------------------------------------------------------------------------------+

--
Adrian Klaver
adrian.klaver@aklaver.com

#12Luca Ferrari
fluca1978@gmail.com
In reply to: Reid Thompson (#9)
Re: pgcrypto - real life examples to encrypt / decrypt

On Fri, Aug 6, 2021 at 8:27 PM Reid Thompson <Reid.Thompson@omnicell.com> wrote:

someone mentioned an alternative earlier that they couldn't remember -- i think it may have been pgsodium that they were thinking of https://github.com/michelp/pgsodium

Yes, thanks. For some reason I was remembering "selenium" something...

Luca