Spring Security - DelegatingPasswordEncoder
1.DelegatingPasswordEncoder |
-Spring Security에서 지원하는 PasswordEncoder 구현 객체를 생성해주는 컴포넌트
-DelegatingPasswordEncoder를 통해 애플리케이션에서 사용할 PasswordEncoder를 결정하고, 결정된 PasswordEncoder로 사용자가 입력한 패스워드를 단방향으로 암호화 해줌
-장점
● DelegatingPasswordEncoder를 사용해 다양한 방식의 암호화 알고리즘을 적용할 수 있음
● 암호화 알고리즘을 특별히 지정하지 않는다면 Spring Security에서 권장하는 최신 암호화 알고리즘을 사용하여 패스워드를 암호화할 수 있도록 지원함
● 패스워드 검증에 있어서도 레거시 방식의 암호화 알고리즘으로 암호화된 패스워드의 검증을 지원함
● Delegating(대리,위임) 이라는 표현에서 알 수 있듯 나중에 암호화 방식을 변경하고 싶다면 언제든지 변경할 수 있음
1-1.간단한 패스워드 암호화 기술
-해시(Hash) 알고리즘
● 단방향 암호화를 위한 핵심 알고리즘
● 한 번 암호화되면 복호화되기 어려움
● DB에 암호화 되어 저장되는 패스워드 자체는 사용자가 입력한 패스워드와 비교해 올바른 패스워드를 입력했는지 검증하는 용도이기 때문에 다시 복호화할 필요가 없으므로 패스워드 암호화에 해시 알고리즘은 자주 사용됨
-MD5(Message Digest 5)
● 다이제스트(Digest)는 원본 메시지를 암호화한 메시지를 의미함
● 단방향 알고리즘이지만 복호화된 사례가 종종 발견되어 지금은 거의 사용하지 않음
-SHA(Secure Hash Algorithm)
● 해시된 문자열을 만들어내기 위해 비트 회전 연산이 추가된 방식(해시된 문자열의 비트 값을 회전하면서 반복적으로 해시 처리를 하는 것)
-Work Factor를 추가한 Hash 알고리즘
● Work Factor는 공격자가 해시 된 메시지를 알아내는 데 더 느리게 더 비용이 많이 들게 해주는 특정 요소를 의미함
● PBKDF2, bcrypt, scrypt 알고리즘이 그 예시
- 내용 출처 : code states