- Argon2 알고리즘

 

1. saltLength (바이트 단위):

  • 해시에 사용되는 salt의 길이를 지정합니다.
  • salt는 임의의 데이터이며, 암호 해싱 공격을 방지하는 데 중요한 역할을 합니다.
  • 일반적으로 128 바이트 길이의 salt를 사용하는 것이 좋습니다.

2. hashLength (바이트 단위):

  • 생성된 해시의 길이를 지정합니다.
  • 해시 길이는 암호화된 비밀번호의 출력 길이를 나타냅니다.
  • 일반적으로 256 바이트 길이의 해시를 사용하는 것이 좋습니다.

3. parallelism:

  • 병렬 처리 수준을 지정합니다.
  • Argon2는 병렬 처리가 가능하여 해싱 속도를 높일 수 있습니다.
  • 하드웨어 성능에 따라 적절한 값을 설정해야 합니다.
  • 일반적으로 1에서 4 사이의 값을 사용하는 것이 좋습니다.

4. memory (KB):

  • Argon2 알고리즘에 의해 사용되는 메모리 양을 지정합니다.
  • 메모리 요구 사항은 공격자가 해시를 깰 때 필요한 리소스 양을 결정합니다.
  • 하드웨어 성능과 보안 요구 사항에 따라 적절한 값을 설정해야 합니다.
  • 일반적으로 1024에서 16384 사이의 값을 사용하는 것이 좋습니다.

5. iterations:

  • 해시를 계산하는 데 사용되는 반복 횟수를 지정합니다.
  • 반복 횟수가 많을수록 해싱 속도는 느려지지만 보안 강도는 높아집니다.
  • 하드웨어 성능과 보안 요구 사항에 따라 적절한 값을 설정해야 합니다.
  • 일반적으로 3에서 10 사이의 값을 사용하는 것이 좋습니다.

참고:

  • Argon2 알고리즘은 BCrypt 알고리즘보다 느리므로 인증 성능에 영향을 미칠 수 있습니다.
  • Argon2PasswordEncoder는 Spring Security 5.5 이전 버전에서는 사용할 수 없습니다.

- Bcrypt 알고리즘

 

Spring Security 5.3 버전 이하는 BCrypt 알고리즘의 솔팅 방식이 SHA1PRNG 요건데,
5.3 버전 이상의 SecureRandom 보다 안전하지 못하다.
Spring security 5.0 이상 부터는 setSaltSource를 이용해 솔팅 방식을 변경해줄 수 있다.

떄문에 5.0 이상이라면 setSaltSoruce를 통해 SecureRandom으로 바꿔주는 것이 더 안정적.

+ Recent posts