반응형
📝평문 저장
- 비밀번호를 그대로 저장
- 구현이 간단하지만 보안에 매우 취약하다
📝단순 해싱
- 해시 함수를 이용해 해시값으로 변환하여 저장
- 평문에 비해 보안이 향상되지만 무차별 대입 공격에 취약하며 동일한 비밀번호가 동일 해시값을 가짐으로 레인보우 테이블 공격에 취약하다
📝솔팅
- 비밀번호에 무작위 값(Salt)을 추가한 후 해시 함수로 변환
- 동일 비밀번호도 서로 다른 해시 값을 가져 레인보우 테이블 공격 방지 가능하지만 빠른 해시 함수는 무차별 대입 공격에 취약하다
📝키 스트레칭
- 비밀번호에 무작위 값을 추가한 이후 해시 함수를 여러번 실행시킨다
- 주로 CPU 사용량을 증가시켜 해시 계산 속도를 늦추는 데 중점을 둡니다
- 최근 일반적 장비로는 1초에 50억개 이상의 해시값을 비교할 수 있지만 키 스트레칭을 적용하면 장비에서 1초에 5번정도만 비교가 가능하다. 즉, 무차별 대입 공격에 강하지만 나도 저장해야하기 때문에 서버에 부담이 된다.
- PBKDF2 (Password-Based Key Derivation Function 2)
- 비밀번호와 솔트를 결합한 후 여러 번 반복하여 해시 값을 생성합니다.
- bcrypt
- 키 스트레칭을 구현하며, 비교적 느리게 설계되어 공격자가 비밀번호를 추측하는 속도를 늦춥니다.
- PBKDF2 (Password-Based Key Derivation Function 2)
📝메모리 집약적 함수
- 메모리 집약적 함수는 해시 계산 과정에서 많은 메모리 및 CPU를 사용하도록 설계되어, 하드웨어 가속 공격에 대한 저항력을 높입니다.
- Argon2
- 비밀번호 해시를 생성하는 최신 알고리즘으로, 메모리와 연산 시간을 조절할 수 있으며, 다양한 공격에 대해 강력한 보안을 제공합니다.
- scrypt
- bcrypt와 유사하지만, 메모리 사용량을 증가시켜 더욱 강력한 보안을 제공합니다.
- Argon2
반응형