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
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user