[보안] 안전한 암호화 기법 (Secure Salted Password Hashing)
뿌리튼튼 CS/etc2016. 11. 7. 20:24
비밀번호 저장시
1. 충분히 긴 길이의 랜덤 salt 를 생성한다. (java.security.SecureRandom 사용할 것)
2. 생성된 salt 에 타깃 pw 를 붙이고 해싱한다.
3. salt 와 결과 hash 를 둘다 유저 테이블에 있는 각각의 컬럼에 나란히 저장한다.
비밀번호 검증시
1. 유저 테이블에서 해당 유저의 salt 와 결과 hash 를 가져온다.
2. salt 뒤에 검증할 pw 를 붙이고 같은 해싱 기법으로 해싱한다.
3. hash 결과를 비교하여 일치하면 true, 아니면 false
주의
1. salt 는 유저마다, 패스워드마다 고유해야 한다. (The salt needs to be unique per-user per-password.)
2. 한번이라도 사용된 salt 는 절대 재사용하면 안된다.
3. salt 의 길이는 충분히 길어야 한다. 결과 hash 와 같은 길이로 하는 것이 가장 좋다.
4. salt 값은 유저 테이블에 결과 hash 와 나란히 저장되어야 한다.
출처
https://crackstation.net/hashing-security.htm