Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
da9fc259
Commit
da9fc259
authored
Nov 03, 2005
by
Tom Lane
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pgcrypto documentation polishing from Marko Kreen, and a small amount
of copy-editing from myself.
parent
8bd1cbb8
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
25 deletions
+29
-25
contrib/pgcrypto/README.pgcrypto
contrib/pgcrypto/README.pgcrypto
+29
-25
No files found.
contrib/pgcrypto/README.pgcrypto
View file @
da9fc259
pgcrypto - cryptographic functions for PostgreSQL
=================================================
Marko Kreen <marko@l-t.ee>
// Note: this document is in asciidoc format.
1. Installation
-----------------
...
...
@@ -17,6 +18,13 @@ The `make installcheck` command is important. It runs regression tests
for the module. They make sure the functions here produce correct
results.
Next, to put the functions into a particular database, run the commands in
file pgcrypto.sql, which has been installed into the shared files directory.
Example using psql:
psql -d DBNAME -f pgcrypto.sql
2. Notes
----------
...
...
@@ -71,7 +79,7 @@ are NULL. This may create security risks on careless usage.
~~~~~~~~~~~~~~~~~~~~~~~~~~~
The `digest_exists()`, `hmac_exists()` and `cipher_exists()` functions
are deprecated. The plan is to remove th
ose
in PostgreSQL 8.2.
are deprecated. The plan is to remove th
em
in PostgreSQL 8.2.
2.4. Security
...
...
@@ -140,7 +148,7 @@ MD5 or SHA1 in following respects:
1. They are slow. As the amount of data is so small, this is only
way to make brute-forcing passwords hard.
2. Include random 'salt' with result, so that users having same
password would have different crypted passwords. This also
password would have different crypted passwords. This
is
also
additional defense against reversing the algorithm.
3. Include algorithm type in the result, so passwords hashed with
different algorithms can co-exist.
...
...
@@ -198,7 +206,7 @@ Accepted types are: `des`, `xdes`, `md5` and `bf`.
Same as above, but lets user specify iteration count for some
algorithms. The higher the count, the more time it takes to hash
t
i
password and therefore the more time to break it. Although with
t
he
password and therefore the more time to break it. Although with
too high count the time to calculate a hash may be several years
- which is somewhat impractical.
...
...
@@ -217,9 +225,9 @@ a odd number.
Notes:
- Original DES crypt was designed to have the speed of 4 hashes per
second on the hardware that time.
- Slower tha
t 4 hashes per second would probably damper
usability.
- Faster tha
t
100 hashes per second is probably too fast.
second on the hardware
of
that time.
- Slower tha
n 4 hashes per second would probably dampen
usability.
- Faster tha
n
100 hashes per second is probably too fast.
- See next section about possible values for `crypt-bf`.
...
...
@@ -230,7 +238,7 @@ Here is a table that should give overview of relative slowness
of different hashing algorithms.
* The goal is to crack a 8-character password, which consists:
1. Only
from
lowercase letters
1. Only
of
lowercase letters
2. Numbers, lower- and uppercase letters.
* The table below shows how much time it would take to try all
combinations of characters.
...
...
@@ -248,7 +256,6 @@ crypt-md5 2681 2.6 years 2625 years
crypt-des 362837 7 days 19 years
sha1 590223 4 days 12 years
md5 2345086 1 day 3 years
password 143781000 25 mins 18 days
------------------------------------------------------------
* The machine used is 1.5GHz Pentium 4.
...
...
@@ -256,8 +263,6 @@ password 143781000 25 mins 18 days
John the Ripper v1.6.38 `-test` output.
* MD5 numbers are from mdcrack 1.2.
* SHA1 numbers are from lcrack-20031130-beta.
* MySQL password() numbers are from my own tests.
(http://grue.l-t.ee/~marko/src/mypass/)
* `crypt-bf` numbers are taken using simple program that loops
over 1000 8-character passwords. That way I can show the speed with
different number of rounds. For reference: `john -test` shows 213
...
...
@@ -265,12 +270,12 @@ password 143781000 25 mins 18 days
accordance to the fact that the `crypt-bf` implementation in pgcrypto
is same one that is used in John the Ripper.)
Note that
the
"try all combinations" is not a realistic exercise.
Note that "try all combinations" is not a realistic exercise.
Usually password cracking is done with the help of dictionaries, which
contain both regular words and various mutations of them. So, even
somewhat word-like passwords
will
be cracked much faster than the above
somewhat word-like passwords
could
be cracked much faster than the above
numbers suggest, and a 6-character non-word like password may escape
cracking. Or
may
not.
cracking. Or not.
5. PGP encryption
...
...
@@ -292,7 +297,7 @@ When encrypting with password:
1. Given password is hashed using String2Key (S2K) algorithm. This
is rather similar to `crypt()` algorithm - purposefully slow
and with random salt - but i
s
produces a full-length binary key.
and with random salt - but i
t
produces a full-length binary key.
2. If separate session key is requested, new random key will be
generated. Otherwise S2K key will be used directly as session key.
3. If S2K key is to be used directly, then only S2K settings will be put
...
...
@@ -378,10 +383,10 @@ Options are described in section 5.7.
pgp_key_id(key or msg bytea) RETURNS text
It shows you either key ID if given PGP public or secret key. Or it
gives the key ID
w
hat was used for encrypting the data, if given
gives the key ID
t
hat was used for encrypting the data, if given
encrypted message.
It can return 2 special key ID
'
s:
It can return 2 special key IDs:
SYMKEY::
The data is encrypted with symmetric key.
...
...
@@ -410,8 +415,8 @@ with CRC and additional formatting.
5.8. Options for PGP functions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Option are named to be similar to GnuPG. Values should be given after
equal sign, different
options from each other with commas. Example:
Option
s
are named to be similar to GnuPG. Values should be given after
an equal sign; separate
options from each other with commas. Example:
pgp_sym_encrypt(data, psw, 'compress-also=1, cipher-algo=aes256')
...
...
@@ -458,7 +463,7 @@ convert-crlf::
Applies: pgp_sym_encrypt, pgp_pub_encrypt, pgp_sym_decrypt, pgp_pub_decrypt
disable-mdc::
Do not protect data with SHA-1. Only good reason to use
is
this
Do not protect data with SHA-1. Only good reason to use this
option is to achieve compatibility with ancient PGP products, as the
SHA-1 protected packet is from upcoming update to RFC2440. (Currently
at version RFC2440bis-14.) Recent gnupg.org and pgp.com software
...
...
@@ -481,7 +486,7 @@ s2k-mode::
Which S2K algorithm to use.
Values:
0 -
Dangerous! Without salt.
0 -
Without salt. Dangerous!
1 - With salt but with fixed iteration count.
3 - Variable iteration count.
Default: 3
...
...
@@ -536,7 +541,7 @@ Export ascii-armored secret key:
gpg -a --export-secret-keys KEYID > secret.key
You need to use `dearmor()` on them before giving
giving
them to
You need to use `dearmor()` on them before giving them to
pgp_pub_* functions. Or if you can handle binary data, you can drop
"-a" from gpg.
...
...
@@ -596,7 +601,7 @@ Supported algorithms:
Modes:
* `cbc` - next block depends on previous. (default)
* `ecb` - each block i
n
encrypted separately.
* `ecb` - each block i
s
encrypted separately.
(for testing only)
Padding:
...
...
@@ -694,5 +699,4 @@ http://www.cs.ut.ee/~helger/crypto/[]::
Collection of cryptology pointers.
// $PostgreSQL: pgsql/contrib/pgcrypto/README.pgcrypto,v 1.13 2005/08/13 02:06:20 momjian Exp $
// $PostgreSQL: pgsql/contrib/pgcrypto/README.pgcrypto,v 1.14 2005/11/03 02:54:07 tgl Exp $
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment