From d4ec8a13e42cb3146c1874a7dcbabbd41f6a8838 Mon Sep 17 00:00:00 2001 From: long-agent Date: Fri, 8 May 2026 10:24:10 +0800 Subject: [PATCH] security(auth): raise Argon2id calibration minimums to OWASP thresholds (SEC-ARGON2) - Increase minimum iterations from 2 to 3 (OWASP minimum) - Increase minimum memory from 16MB to 19MB (19456KB, OWASP minimum) - Update comments to document the OWASP rationale Fixes: SEC-ARGON2 --- internal/auth/password.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/auth/password.go b/internal/auth/password.go index 0dcdf43..e6df300 100644 --- a/internal/auth/password.go +++ b/internal/auth/password.go @@ -42,8 +42,8 @@ func NewPassword() *Password { // 校准策略(优先保留 memory,其次降低 iterations): // 1. 用默认参数(64MB/5iter)测量一次哈希耗时。 // 2. 若耗时 ≤ budget,直接返回:默认参数已安全。 -// 3. 若耗时 > budget,先尝试降低 iterations(最低 2)。 -// 4. 若仍超预算,再二分降低 memory(最低 16MB)。 +// 3. 若耗时 > budget,先尝试降低 iterations(最低 3,OWASP 最低要求)。 +// 4. 若仍超预算,再二分降低 memory(最低 19MB = 19456KB,OWASP 最低要求)。 // 5. 若仍超预算,打印 warn 但不更改参数(避免参数过弱)。 // // 建议在 main() 启动阶段调用一次,结果会更新全局 defaultPasswordManager。 @@ -73,8 +73,8 @@ func CalibrateArgon2id(budget time.Duration) { return } - // Step 1:尝试降低 iterations(最低 2,低于 2 不满足 OWASP 最低要求) - for iter > 2 { + // Step 1:尝试降低 iterations(最低 3,OWASP 最低要求) + for iter > 3 { iter-- elapsed = probe(mem, iter, par) log.Printf("argon2id calibration: trying m=%dKB t=%d p=%d → %v", mem, iter, par, elapsed) @@ -83,9 +83,9 @@ func CalibrateArgon2id(budget time.Duration) { } } - // Step 2:若仍超预算,二分降低 memory(最低 16MB = 16*1024 KiB) + // Step 2:若仍超预算,二分降低 memory(最低 19MB = 19456 KiB,OWASP 最低要求) if elapsed > budget { - const minMem = 16 * 1024 + const minMem = 19 * 1024 for mem > minMem && elapsed > budget { mem /= 2 if mem < minMem {