SHA 패밀리 완벽 가이드:SHA-1, SHA-256, SHA-3의 차이와 선택

브라우저 주소창의 HTTPS 자물쇠 아이콘, Git 커밋의 40자리 해시값, 다운로드 페이지의 'SHA-256 체크섬'——이 모든 것의 배경에는 SHA 패밀리가 있습니다. SHA(Secure Hash Algorithm)는 현재 가장 주류인 암호화 해시 표준이지만, 단일 알고리즘이 아닌 알고리즘 패밀리입니다. 각 버전의 차이를 이해하는 것은 모든 개발자에게 필수적인 기초 지식입니다.

1. SHA의 유래

SHA는 NSA(미국 국가안보국)가 설계하고 NIST(미국 국립표준기술연구소)가 FIPS(연방 정보처리 표준)로 발표했습니다. 발전 역사:

  • 1993년:SHA-0 발표, 설계 결함으로 즉시 철회
  • 1995년:SHA-1 발표, 160비트 출력
  • 2001년:SHA-2 패밀리 발표 (SHA-256, SHA-512 등)
  • 2015년:SHA-3(Keccak)이 FIPS 202로 표준화
SHA ≠ 암호화
MD5와 마찬가지로 SHA는 단방향 해시 함수이며 암호화 알고리즘이 아닙니다. SHA 해시값에서 원본 데이터를 복원하는 것은 불가능합니다.

2. SHA-1:역사 속으로

SHA-1은 한때 인터넷 보안의 근간이었지만, 2017년 Google과 CWI 암스테르담 연구원이 「SHAttered」 공격을 발표했습니다:내용이 다르지만 SHA-1이 동일한 두 PDF 파일을 성공적으로 생성했습니다. 이는 암호학 역사상 최초의 실용적인 SHA-1 충돌 공격이었습니다.

이후 주요 브라우저, CA(인증 기관), Git은 모두 SHA-1을 더 이상 사용하지 않기로 했습니다.

3. SHA-2 패밀리:현대 표준

SHA-2는 출력 크기로 명명된 6개 멤버로 구성된 패밀리입니다. SHA-256이 가장 널리 사용되는 이유:

  • 충분한 보안 마진:256비트 출력이 128비트 충돌 저항성 제공
  • 하드웨어 가속 지원:현대 x86 및 ARM에 SHA-256 전용 명령어 내장
  • 광범위한 생태계 지원:모든 주요 언어 표준 라이브러리 및 TLS 스택 지원

4. SHA-3:완전히 새로운 설계 철학

SHA-3은 SHA-2의 개선판이 아닌 완전히 다른 아키텍처를 가진 새 알고리즘입니다. Keccak으로도 알려져 있으며, 「스펀지 구조」를 채택하여 길이 확장 공격에 본질적으로 면역입니다.

5. SHA 패밀리 전체 비교

알고리즘출력 길이보안성속도권장 사용 사례
SHA-1160 bit취약 (SHAttered 2017)빠름새 시스템에서 사용 불가
SHA-256256 bit안전 (알려진 충돌 없음)중간 (HW 가속)TLS·인증서·코드 서명·일반 용도
SHA-512512 bit안전 (더 높은 마진)64비트에서 SHA-256보다 빠름고보안 요구 사항·64비트 시스템
SHA3-256256 bit안전 (다른 설계)느린 편길이 확장 공격 저항·설계 다양성

6. 사용 사례별 선택 가이드

  • TLS/HTTPS 인증서 → SHA-256 (SHA-1은 모든 브라우저에서 거부)
  • 코드 서명 및 소프트웨어 배포 → SHA-256
  • 파일 무결성 검증 → SHA-256
  • 패스워드 저장 → SHA 사용 불가, bcrypt/Argon2 사용
  • 메시지 인증 코드 (MAC) → HMAC-SHA256

7. 계산 예제

# 커맨드라인 (Linux/macOS)
sha256sum file.txt        # Linux
shasum -a 256 file.txt    # macOS

# PHP
hash('sha256', 'hello')

# Python
import hashlib
hashlib.sha256(b'hello').hexdigest()
hashlib.sha3_256(b'hello').hexdigest()  # SHA-3

# JavaScript (Node.js)
const crypto = require('crypto')
crypto.createHash('sha256').update('hello').digest('hex')

8. 요약

SHA 패밀리의 진화는 암호학 연구의 지속적인 발전을 반영합니다. SHA-1은 충돌 공격으로 역사 속으로 사라졌고, SHA-256은 현대 보안 인프라의 핵심입니다. SHA-512는 고보안 요구 사항이나 64비트 환경에서 장점이 있으며, SHA-3은 완전히 새로운 스펀지 구조로 설계 다양성을 제공합니다. 이러한 차이를 이해함으로써 시스템 설계와 기술 선택에서 더 정확한 판단을 내릴 수 있습니다.