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 {