Password storage·Salt·Slow KDF 단계별 흐름 Server는 왜 비밀번호를 암호화해 보관하지 않고 slow KDF 결과를 저장할까요? Registration 때 사용자별 random salt를 생성합니다. → Password와 salt를 Argon2id·bcrypt·scrypt·PBKDF2 같은 slow KDF에 입력합니다. → Database에는 salt·cost parameter·KDF output만 저장합니다. → Login 때 제출된 password로 같은 계산을 다시 수행해 결과를 비교합니다. → Salt는 같은 password의 stored value를 다르게 하고 rainbow-table 재사용을 막습니다. → 느린 KDF 비용은 database 유출 후 offline guessing 한 번 한 번을 비싸게 만듭니다. Server는 왜 비밀번호를 암호화해 보관하지 않고 slow KDF 결과를저장할까요? 화살표를 왼쪽에서 오른쪽으로 따라가며 입력·처리·결과를 확인하세요. 1 Registration때 사용자별 randomsalt를 생성합니다. 2 Password와salt를Argon2id·bcrypt·scrypt·PBKDF2같은 slow KDF에입력합니다. 3 Database에는salt·costparameter·KDFoutput만저장합니다. 4 Login 때 제출된password로 같은계산을 다시 수행해결과를 비교합니다. 5 Salt는 같은password의stored value를다르게 하고rainbow-table재사용을 막습니다. 6 느린 KDF 비용은database 유출 후offlineguessing 한 번한 번을 비싸게만듭니다. 시험 읽기 순서 등장 주체 또는 입력 → 처리 규칙 → 보안 효과 → 조건과 한계