Topic

Salted Hash (솔트 기법을 적용한 해시)

JackerLab 2025. 3. 24. 06:44
728x90
반응형

개요

Salted Hash(솔트 기법을 적용한 해시)는 해시 함수에 추가적인 보안 요소(Salt)를 결합하여 해시 충돌과 무차별 대입 공격(Brute Force Attack)을 방지하는 암호화 기법입니다. 본 글에서는 Salted Hash의 개념, 필요성, 주요 원리, 구현 방법 및 활용 사례를 살펴보겠습니다.


1. 개념 및 정의

Salted Hash란?

Salted Hash는 패스워드 또는 기타 중요한 데이터를 해시 처리할 때, 무작위 값(Salt)을 추가하여 보안성을 높이는 기법입니다.

용어 설명
Hashing 입력값을 고정된 길이의 암호화된 문자열로 변환하는 과정
Salt 무작위 문자열을 해시 연산 전에 추가하여 보안성을 높이는 값
Salted Hash 해싱 전에 Salt를 추가하여 보안 강도를 높인 해시 값

해시 함수 자체는 단방향이므로 복호화가 어렵지만, 해시된 값이 동일하면 원래의 입력값이 동일함을 알 수 있습니다. 이를 방지하기 위해 Salt를 사용하여 같은 입력값이라도 서로 다른 해시 값을 생성합니다.


2. 필요성 및 보안 강화 효과

왜 Salted Hash가 필요한가?

일반적인 해시 함수만 사용하면 해시 충돌 및 무차별 대입 공격에 취약할 수 있습니다. Salted Hash를 적용하면 다음과 같은 보안 이점이 있습니다.

보안 위협 설명 Salt 적용 효과
무차별 대입 공격 (Brute Force) 공격자가 가능한 모든 조합을 해싱하여 패스워드를 찾는 공격 Salt로 인해 사전 계산된 해시 목록(레인보우 테이블)이 무력화됨
레인보우 테이블 공격 미리 계산된 해시 값 리스트를 이용하여 패스워드를 유추하는 기법 Salt를 추가하면 같은 패스워드라도 다른 해시 값이 생성되어 방어 가능
해시 충돌 공격 서로 다른 입력값이 동일한 해시 값을 갖는 경우 발생 무작위 Salt로 인해 충돌 가능성이 줄어듦

3. 주요 원리 및 구성 요소

Salted Hash는 다음과 같은 과정을 거쳐 생성됩니다.

Salted Hash 생성 과정

  1. Salt 생성: 무작위 문자열(Salt) 생성
  2. 해싱: 입력 데이터(예: 패스워드)에 Salt를 추가한 후 해시 함수 적용
  3. 저장: 해시된 값과 함께 Salt도 안전하게 저장
  4. 검증: 로그인 시 동일한 Salt를 사용하여 입력값을 해싱한 후 저장된 해시와 비교
단계 설명
1. 입력값 준비 사용자 패스워드 입력
2. Salt 생성 무작위 값(Salt) 생성
3. 해싱 (Salt + 패스워드)를 결합하여 해시 함수 적용
4. 저장 해시 값과 Salt를 함께 저장
5. 검증 로그인 시 동일한 Salt를 사용하여 해시 연산 후 비교

4. 기술 요소

Salted Hash에 사용되는 주요 해시 알고리즘

알고리즘 설명 특징
SHA-256 256비트의 해시 값을 생성하는 암호학적 해시 함수 빠른 연산 속도, 강력한 보안성
bcrypt Salt 적용 및 연산 비용 조절이 가능한 해시 함수 반복 횟수 조정 가능하여 보안성 향상
PBKDF2 반복 연산을 통해 연산 비용을 증가시켜 보안 강화 키 스트레칭(Key Stretching) 지원
Argon2 메모리 비용을 증가시켜 GPU 기반 공격 방어 최신 보안 표준 (2015년 Password Hashing Competition 우승)

이 중 bcrypt, PBKDF2, Argon2는 Salt를 기본적으로 포함하며, 암호 저장에 널리 사용됩니다.


5. 장점 및 단점 비교

항목 장점 단점
Salt 적용 동일한 패스워드라도 서로 다른 해시 값을 생성하여 보안성 증가 추가 저장 공간 필요
bcrypt 사용 연산 비용 조정이 가능하여 무차별 대입 공격 방어 강화 속도가 상대적으로 느림
Argon2 사용 메모리 비용 증가로 GPU 기반 공격 방어 연산 부담 증가

6. 주요 활용 사례 및 고려사항

활용 사례

  1. 사용자 패스워드 보호: 웹 애플리케이션 로그인 시스템에서 Salted Hash 사용
  2. 암호화된 데이터 저장: 금융 및 의료 데이터 보호를 위한 보안 저장 방식
  3. API 키 및 인증 토큰 보호: 접근 제어를 위한 보안 해시 적용

고려사항

  • Salt 길이를 충분히 확보(최소 16바이트 이상 권장)
  • 보안성이 높은 해시 알고리즘 선택(bcrypt, Argon2 등)
  • Salt를 개별적으로 저장하여 모든 계정의 해시 값을 다르게 설정
  • 주기적인 보안 업데이트 및 취약점 점검 수행

7. 결론

Salted Hash는 보안성을 강화하기 위해 반드시 적용해야 하는 암호화 기법입니다. 일반적인 해시 함수만 사용할 경우 레인보우 테이블 공격, 무차별 대입 공격에 취약할 수 있으므로, Salt를 적용하여 더욱 안전한 환경을 구축해야 합니다. bcrypt, PBKDF2, Argon2와 같은 보안성이 높은 해시 알고리즘을 선택하고, 적절한 Salt 관리 정책을 수립하는 것이 중요합니다.

728x90
반응형