해시 알고리즘
- 임의의 길이를 가진 입력 값을 고정된 길이의 해시 값 또는 해시 코드로 변환하는 함수
- 결과 값의 길이가 고정되어 있음
- 해시 값은 입력 값에 대해 고유 식별자 역할을 함
※ 단, 충돌 가능성이 존재하기 때문에 완벽한 고유성을 보장하지 않으나, 이러한 충돌이 발생한 확률은 매우 낮도록 설계됨
- 일방향성 (One-way Property)
: 해시 값을 통해 원 입력 값을 역으로 추론하는 것이 거의 불가능함
- 계산 속도 빠름
MD5 (Message Digest 5)
- 길이 : 128비트
- SHA에 비해 충돌 공격에 취약함
→ 현재는 보안에 민감한 애플리케이션에 사용하지 않음
※ 충돌 공격
: 두 개의 서로 다른 입력 값이 같은 해시 값을 만들어 내는 공격
- 길이 : 128비트
SHA (Secure Hash Algorithm)
i. SHA-1
· 길이 : 160비트
· 보안성이 약화되어 더 이상 권장되지 않음
ii. SHA-2
· 현재 가장 널리 사용됨
· SHA-256 : 256비트 / 블록체인 및 보안 인증서에서 많이 사용됨
· SHA-512 : 512비트 / 데이터 저장 시 높은 보안성이 요구될 때 사용됨
iii. SHA-3
· 가장 최신 버전
· 강력한 충돌 저항성과 보안성 제공
bcrypt
- 비밀번호 저장에 특화된 해싱 함수
- 기존 시스템과의 호환성이 뛰어남
- CPU 공격 방어
- 고유한 랜덤 데이터(Salt)를 추가하여, 동일한 비밀번호라도 다른 해시 값을 생성함
→ 레인보우 테이블 공격 방어
: 해시 값을 역추적하여 원래의 입력 값을 알아내는 것
- 슬로우 해싱 (Slow Hashing)
: 의도적으로 연산을 느리게 만듦
→ 공격자가 대량의 해시를 빠르게 계산하지 못하도록 함
- 비용 인자 설정 가능
: 하드웨어 성능이 개선되더라도, 해싱 과정을 의도적으로 느리게 만들 수 있음
→ 브루트 포스 공격 방어
: 가능한 모든 입력 값을 하나씩 대입하여 비밀번호를 찾아내는 것
scrypt
- 비밀번호 저장에 특화된 해싱 함수
- 병렬 공격 방어
- bcrypt에 비해 보안성이 높음
- GPU/ASIC 공격 방어
'CS' 카테고리의 다른 글
[CS] CI/CD (3) | 2024.11.27 |
---|---|
[CS] 웹 보안(Web Security)과 주요 취약점 (0) | 2024.11.25 |
[CS] 캐싱 유형 (0) | 2024.11.24 |
[CS] 백엔드 개발자 로드맵 따라가기 (진행중) (0) | 2024.11.23 |
[CS] 캐싱 전략 (0) | 2024.11.21 |