IT/개발자 면접

Spring Security 암호화 방식

Collin 2023. 12. 16. 08:55
반응형

 

 

Spring Security는 다양한 암호화 방식을 지원하며, 주요한 몇 가지 방식과 각각의 특징을 살펴보겠습니다.

 

1. BCrypt (Recommended):

  • 장점:
    • 안전한 해시 함수를 사용하여 보안성이 높음.
    • Salt(솔트) 값을 사용하여 레인보우 테이블 공격에 대비함.
  • 단점:
    • 연산이 높아 시간이 오래 걸릴 수 있음.
// Spring Security에서 BCrypt 사용 예제
String password = "user_password";
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String hashedPassword = passwordEncoder.encode(password);

2. SHA-256:

  • 장점:
    • 빠른 연산 속도.
    • 단방향 해시 함수로서 데이터 무결성 검증에 용이.
  • 단점:
    • Salt를 사용하지 않으면 레인보우 테이블에 취약.
// Spring Security에서 SHA-256 사용 예제
String password = "user_password";
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hashedPassword = digest.digest(password.getBytes(StandardCharsets.UTF_8));

 

3. Argon2 (Recent Recommendation):

  • 장점:
    • 메모리 집약적이어서 ASIC 및 GPU 공격에 강함.
    • 쓰레드 및 메모리를 조절할 수 있어 높은 유연성 제공.
  • 단점:
    • 아직까지는 상대적으로 새로운 방식이어서 널리 사용되지 않을 수 있음.
// Spring Security에서 Argon2 사용 예제
String password = "user_password";
Argon2PasswordEncoder passwordEncoder = new Argon2PasswordEncoder();
String hashedPassword = passwordEncoder.encode(password);

 

4. PBKDF2 (Password-Based Key Derivation Function 2):

  • 장점:
    • 솔트 및 반복 횟수 조절이 가능.
    • HMAC 함수를 사용하여 보안성이 높음.
  • 단점:
    • 일반적으로는 느린 연산 속도.
// Spring Security에서 PBKDF2 사용 예제
String password = "user_password";
Pbkdf2PasswordEncoder passwordEncoder = new Pbkdf2PasswordEncoder();
String hashedPassword = passwordEncoder.encode(password);

 

참고 사항:

  • 최근에는 BCrypt와 Argon2가 주로 사용되며, Argon2는 메모리 집약적인 특성 때문에 고도의 보안이 필요한 경우에 권장됩니다.
  • 암호화 방식 선택은 보안 요구사항, 성능, 하드웨어 리소스 등을 고려하여 결정해야 합니다.
  • Spring Security에서는 주로 BCrypt를 사용하며, 설정에 따라 간단한 변경으로 다른 방식으로 전환할 수 있습니다.
반응형

'IT > 개발자 면접' 카테고리의 다른 글

Spring MVC Model  (0) 2023.12.17
Redis 란?  (0) 2023.12.15
마이크로서비스(Microservices)  (0) 2023.12.14
Git Flow 와 GitHub Flow , Branch 전략  (0) 2023.12.13
Java Checked Exception과 Unchecked Exception  (0) 2023.12.12