]> granicus.if.org Git - php/commitdiff
Relax argon2 mem_cost down to 64k, bump time_cost to 4
authorSara Golemon <pollita@php.net>
Tue, 9 Jul 2019 15:18:13 +0000 (11:18 -0400)
committerSara Golemon <pollita@php.net>
Tue, 9 Jul 2019 15:36:48 +0000 (11:36 -0400)
ext/sodium/sodium_pwhash.c
ext/sodium/tests/php_password_hash_argon2i.phpt
ext/sodium/tests/php_password_hash_argon2id.phpt
ext/standard/php_password.h
ext/standard/tests/password/password_needs_rehash_argon2.phpt

index d615a24ab6e2f8d93213b0445481f35576b2ea50..7b7f574e173a9138c2b78c872f6e306560fb6000 100644 (file)
@@ -29,7 +29,6 @@
 #if SODIUM_LIBRARY_VERSION_MAJOR > 9 || (SODIUM_LIBRARY_VERSION_MAJOR == 9 && SODIUM_LIBRARY_VERSION_MINOR >= 6)
 
 /**
- * OPSLIMIT and MEMLIMIT are taken from libsodium's MODERATE values.
  * MEMLIMIT is normalized to KB even though sodium uses Bytes in order to
  * present a consistent user-facing API.
  *
@@ -37,8 +36,8 @@
  *
  * When updating these values, synchronize ext/standard/php_password.h values.
  */
-#define PHP_SODIUM_PWHASH_MEMLIMIT (256 << 10)
-#define PHP_SODIUM_PWHASH_OPSLIMIT 3
+#define PHP_SODIUM_PWHASH_MEMLIMIT (64 << 10)
+#define PHP_SODIUM_PWHASH_OPSLIMIT 4
 #define PHP_SODIUM_PWHASH_THREADS 1
 
 static zend_string *php_sodium_argon2_hash(const zend_string *password, zend_array *options, int alg) {
index 9ce6c7399eee2e6d462c709d277180ddaea81bda..4522e6d1753a0b5f571110176f0834f2f5fc1b94 100644 (file)
@@ -36,38 +36,38 @@ foreach([1, 2, 4] as $mem) {
 --EXPECTF--
 Argon2 provider: string(%d) "%s"
 Using password: string(44) "%s"
-Hash: string(97) "$argon2i$v=19$m=262144,t=3,p=1$%s$%s"
+Hash: string(96) "$argon2i$v=19$m=65536,t=4,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(97) "$argon2i$v=19$m=262144,t=6,p=1$%s$%s"
+Hash: string(96) "$argon2i$v=19$m=65536,t=8,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(98) "$argon2i$v=19$m=262144,t=12,p=1$%s$%s"
+Hash: string(97) "$argon2i$v=19$m=65536,t=16,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(97) "$argon2i$v=19$m=524288,t=3,p=1$%s$%s"
+Hash: string(97) "$argon2i$v=19$m=131072,t=4,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(97) "$argon2i$v=19$m=524288,t=6,p=1$%s$%s"
+Hash: string(97) "$argon2i$v=19$m=131072,t=8,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(98) "$argon2i$v=19$m=524288,t=12,p=1$%s$%s"
+Hash: string(98) "$argon2i$v=19$m=131072,t=16,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(98) "$argon2i$v=19$m=1048576,t=3,p=1$%s$%s"
+Hash: string(97) "$argon2i$v=19$m=262144,t=4,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(98) "$argon2i$v=19$m=1048576,t=6,p=1$%s$%s"
+Hash: string(97) "$argon2i$v=19$m=262144,t=8,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(99) "$argon2i$v=19$m=1048576,t=12,p=1$%s$%s"
+Hash: string(98) "$argon2i$v=19$m=262144,t=16,p=1$%s$%s"
 bool(true)
 bool(false)
index e6d4c1ee80a966e3c3423648912d38914656cbc0..db5145718b8f5275e7283d2b45ce0fffee957980 100644 (file)
@@ -36,38 +36,39 @@ foreach([1, 2, 4] as $mem) {
 --EXPECTF--
 Argon2 provider: string(%d) "%s"
 Using password: string(44) "%s"
-Hash: string(98) "$argon2id$v=19$m=262144,t=3,p=1$%s$%s"
+Hash: string(97) "$argon2id$v=19$m=65536,t=4,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(98) "$argon2id$v=19$m=262144,t=6,p=1$%s$%s"
+Hash: string(97) "$argon2id$v=19$m=65536,t=8,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(99) "$argon2id$v=19$m=262144,t=12,p=1$%s$%s"
+Hash: string(98) "$argon2id$v=19$m=65536,t=16,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(98) "$argon2id$v=19$m=524288,t=3,p=1$%s$%s"
+Hash: string(98) "$argon2id$v=19$m=131072,t=4,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(98) "$argon2id$v=19$m=524288,t=6,p=1$%s$%s"
+Hash: string(98) "$argon2id$v=19$m=131072,t=8,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(99) "$argon2id$v=19$m=524288,t=12,p=1$%s$%s"
+Hash: string(99) "$argon2id$v=19$m=131072,t=16,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(99) "$argon2id$v=19$m=1048576,t=3,p=1$%s$%s"
+Hash: string(98) "$argon2id$v=19$m=262144,t=4,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(99) "$argon2id$v=19$m=1048576,t=6,p=1$%s$%s"
+Hash: string(98) "$argon2id$v=19$m=262144,t=8,p=1$%s$%s"
 bool(true)
 bool(false)
 Using password: string(44) "%s"
-Hash: string(100) "$argon2id$v=19$m=1048576,t=12,p=1$%s$%s"
+Hash: string(99) "$argon2id$v=19$m=262144,t=16,p=1$%s$%s"
 bool(true)
 bool(false)
+
index ce3fdba6bbc4d2f25f4d6a62f7ec3402fbc08ce1..97a6bf63a21ec2a8c64fe200f4f77ee71eaf7aa3 100644 (file)
@@ -34,14 +34,11 @@ PHP_MSHUTDOWN_FUNCTION(password);
 
 #if HAVE_ARGON2LIB
 /**
- * OPSLIMIT and MEMLIMIT are taken from libsodium's MODERATE values.
- * Threads are fixed at 1 by libsodium.
- *
  * When updating these values, synchronize ext/sodium/sodium_pwhash.c values.
  * Note that libargon expresses memlimit in KB, while libsoidum uses bytes.
  */
-#define PHP_PASSWORD_ARGON2_MEMORY_COST (256 << 10)
-#define PHP_PASSWORD_ARGON2_TIME_COST 3
+#define PHP_PASSWORD_ARGON2_MEMORY_COST (64 << 10)
+#define PHP_PASSWORD_ARGON2_TIME_COST 4
 #define PHP_PASSWORD_ARGON2_THREADS 1
 #endif
 
index 9552be1dc924a1f8feed561273e864086916339d..69588d02ad4a371e9696e00fa2da9d7d07240e16 100644 (file)
@@ -10,24 +10,20 @@ if (!defined('PASSWORD_ARGON2ID')) die('skip password_hash not built with Argon2
 
 $hash = password_hash('test', PASSWORD_ARGON2I);
 var_dump(password_needs_rehash($hash, PASSWORD_ARGON2I));
-var_dump(password_needs_rehash($hash, PASSWORD_ARGON2I, ['memory_cost' => 1<<17]));
-var_dump(password_needs_rehash($hash, PASSWORD_ARGON2I, ['time_cost' => 4]));
-var_dump(password_needs_rehash($hash, PASSWORD_ARGON2I, ['threads' => 4]));
+var_dump(password_needs_rehash($hash, PASSWORD_ARGON2I, ['memory_cost' => PASSWORD_ARGON2_DEFAULT_MEMORY_COST * 2]));
+var_dump(password_needs_rehash($hash, PASSWORD_ARGON2I, ['time_cost' => PASSWORD_ARGON2_DEFAULT_TIME_COST + 1]));
 
 $hash = password_hash('test', PASSWORD_ARGON2ID);
 var_dump(password_needs_rehash($hash, PASSWORD_ARGON2ID));
-var_dump(password_needs_rehash($hash, PASSWORD_ARGON2ID, ['memory_cost' => 1<<17]));
-var_dump(password_needs_rehash($hash, PASSWORD_ARGON2ID, ['time_cost' => 4]));
-var_dump(password_needs_rehash($hash, PASSWORD_ARGON2ID, ['threads' => 4]));
+var_dump(password_needs_rehash($hash, PASSWORD_ARGON2ID, ['memory_cost' => PASSWORD_ARGON2_DEFAULT_MEMORY_COST * 2]));
+var_dump(password_needs_rehash($hash, PASSWORD_ARGON2ID, ['time_cost' => PASSWORD_ARGON2_DEFAULT_TIME_COST + 1]));
+
 echo "OK!";
-?>
 --EXPECT--
 bool(false)
 bool(true)
 bool(true)
-bool(true)
 bool(false)
 bool(true)
 bool(true)
-bool(true)
 OK!