피드로 돌아가기
Dev.toSecurity
원문 읽기
알고리즘 특성에 따른 Cryptographic Hash 선택 전략 및 Password Hashing 설계 원칙
Hash Functions Explained: MD5, SHA-1, SHA-256, and When to Use Each
AI 요약
Context
데이터 무결성 검증과 보안 인증을 위한 Hash Function의 필요성 증대. 하지만 Collision 발생 가능성과 연산 속도 차이로 인해 기존 MD5, SHA-1과 같은 레거시 알고리즘의 보안적 한계 노출.
Technical Solution
- Collision Resistance 확보를 위해 128-bit(MD5)에서 256-bit(SHA-256) 이상의 Digest Length로 전환하는 설계 적용
- 64-bit CPU 환경의 연산 효율성을 고려하여 대용량 파일 처리 시 64-bit word operation을 수행하는 SHA-512 채택
- SHA-2의 Merkle–Damgård 구조적 취약점에 대비한 Defence-in-depth 전략으로 내부 구조가 다른 SHA-3 도입
- Password Hashing 시 GPU를 이용한 Brute-force 공격 방어를 위해 연산 속도를 의도적으로 늦춘 bcrypt, Argon2, scrypt의 Work Factor 적용
- 단순 데이터 무결성 검증(Checksum)과 보안 인증(Security-critical) 목적을 분리하여 알고리즘을 차등 적용하는 아키텍처 구성
실천 포인트
- 일반적인 보안 목적의 Hash 필요 시 SHA-256을 기본 표준으로 채택 - 64-bit 아키텍처 기반의 대용량 데이터 처리 시 SHA-512의 성능 벤치마크 검토 - 비밀번호 저장 시 SHA-256 등 일반 Hash 대신 Argon2 또는 bcrypt와 같은 Memory-hard 알고리즘 필수 적용 - 파일 무결성 확인 등 비보안 영역에서만 MD5 사용 제한