diff options
author | lloyd <[email protected]> | 2010-06-15 20:15:52 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2010-06-15 20:15:52 +0000 |
commit | 72f7d1292bf9a38013e9f69a7db4fa262064795c (patch) | |
tree | 0f168cf718ef85a334faacb1bfc4bbbd66a97dd8 | |
parent | 6565cf0df1ed88a818aecf6de7635531e05c0871 (diff) |
Increase the iteration count and salt size used for encrypted
private keys.
For the older PBES1, we can only increase the iteration
count (from 2048 to 10000); the salt is fixed by the standard to
64 bits. This is probably OK, since PBES1 is also limited to
(at best) 64-bit encryption keys and thus is pretty unsafe
anyway.
For PBES2, increase the iteration count (also 2048 to 10000) and
increase the size of the salt from 64 bits to 96 bits.
This will only affect keys which are encrypted by a version after
this revision.
-rw-r--r-- | doc/log.txt | 1 | ||||
-rw-r--r-- | src/pbe/pbes1/pbes1.cpp | 2 | ||||
-rw-r--r-- | src/pbe/pbes2/pbes2.cpp | 4 |
3 files changed, 4 insertions, 3 deletions
diff --git a/doc/log.txt b/doc/log.txt index 87d40ab7c..76ee9dae8 100644 --- a/doc/log.txt +++ b/doc/log.txt @@ -1,5 +1,6 @@ * 1.9.9-dev, ????-??-?? + - Increase default iteration counts for private key encryption * 1.9.8, 2010-06-14 - Add support for wide multiplications on 64-bit Windows diff --git a/src/pbe/pbes1/pbes1.cpp b/src/pbe/pbes1/pbes1.cpp index 36cfaa6b4..a3e08d679 100644 --- a/src/pbe/pbes1/pbes1.cpp +++ b/src/pbe/pbes1/pbes1.cpp @@ -93,7 +93,7 @@ void PBE_PKCS5v15::set_key(const std::string& passphrase) */ void PBE_PKCS5v15::new_params(RandomNumberGenerator& rng) { - iterations = 2048; + iterations = 10000; salt.resize(8); rng.randomize(salt, salt.size()); } diff --git a/src/pbe/pbes2/pbes2.cpp b/src/pbe/pbes2/pbes2.cpp index 79d4dfadf..4a28193e1 100644 --- a/src/pbe/pbes2/pbes2.cpp +++ b/src/pbe/pbes2/pbes2.cpp @@ -97,10 +97,10 @@ void PBE_PKCS5v20::set_key(const std::string& passphrase) */ void PBE_PKCS5v20::new_params(RandomNumberGenerator& rng) { - iterations = 2048; + iterations = 10000; key_length = block_cipher->MAXIMUM_KEYLENGTH; - salt.resize(8); + salt.resize(12); rng.randomize(salt, salt.size()); iv.resize(block_cipher->BLOCK_SIZE); |