SHAttered 공격
SHAttered 공격
개요
SHAttered 공격은 2017년 2월, 암스테르담에 위치한 CWI 아인트호번(Centrum Wiskunde &atica)과 메릴랜드 대학교의 연구자들이 공동으로 발표한, 암호학적 해시 함수 SHA-1(Secure Hash Algorithm 1)에 대한 첫 번째 실용적인 충돌 공격(collision attack)입니다. 이 공격은 SHA-1이 더 이상 안전한 해시 함수로 사용될 수 없음을 입증하였으며, 정보 보안 분야에서 SHA-1의 퇴출을 앞당기는 결정적인 계기가 되었습니다.
SHA-1은 1995년 미국 국립표준기술연구소(NIST)에 의해 표준으로 채택되어, 디지털 서명, SSL/TLS 인증서, 소프트웨어 버전 관리(Git 등)와 같은 다양한 시스템에서 널리 사용되었습니다. 그러나 2005년부터 이론적인 취약점이 제기되었고, SHAttered 공격은 이러한 이론을 실질적인 현실로 구현한 첫 번째 사례입니다.
SHA-1과 충돌 공격의 의미
SHA-1이란?
SHA-1은 입력 데이터를 고정된 160비트(20바이트)의 해시 값으로 변환하는 암호학적 해시 함수입니다. 이상적인 해시 함수는 다음 세 가지 특성을 가져야 합니다:
- 원상 복구 불가능성(Pre-image resistance): 해시 값으로부터 원래 입력을 유추할 수 없음.
- 제 2원상 복구 불가능성(Second pre-image resistance): 주어진 입력에 대해 다른 입력이 동일한 해시를 생성할 수 없음.
- 충돌 저항성(Collision resistance): 서로 다른 두 입력이 동일한 해시 값을 가지는 경우를 찾기 어려워야 함.
SHAttered 공격은 이 중 충돌 저항성을 위반한 것입니다.
충돌 공격이란?
충돌 공격은 두 서로 다른 입력 값이 동일한 해시 출력을 생성하도록 만드는 공격 방식입니다. 이는 단순한 우연이 아니라, 공격자가 의도적으로 두 문서(또는 파일)를 만들어 해시값이 같게 만드는 것을 의미합니다.
예를 들어, A 문서와 B 문서가 완전히 다르지만 SHA-1 해시 값이 동일하다면, A 문서에 서명된 디지털 서명이 B 문서에도 유효하게 적용될 수 있어 보안에 치명적인 문제를 초래합니다.
SHAttered 공격의 기술적 개요
공격의 핵심 원리
SHAttered 공격은 선택된 전처리 기반 충돌 공격(chosen-prefix collision attack)의 변형으로, 공격자는 두 개의 서로 다른 PDF 파일을 생성하여 동일한 SHA-1 해시 값을 가지도록 만들었습니다. 이 두 파일은 시각적으로 다르지만, 해시 값은 완전히 동일합니다.
- 공격에 소요된 계산량: 약 2^63.1 회의 계산 (기존 예상보다 10만 배 이상 효율적)
- 사용된 컴퓨팅 자원: 6,500년 이상의 CPU 시간과 110년 이상의 GPU 시간 (분산 컴퓨팅 활용)
- 실제 구현 결과: 두 개의 PDF 파일이 동일한 해시를 가지며, 하나는 "A=0", 다른 하나는 "A=1"이라는 내용을 명시적으로 포함
이 공격은 단순한 이론적 실험이 아니라, 실제로 동작하는 증명(proof-of-concept)으로 제시되었습니다.
공격의 단계
- 접두사 선택(Prefix Selection): 공격자가 두 문서의 시작 부분(예: 헤더)을 고정합니다.
- 충돌 블록 생성: 중간에 삽입되는 특정 데이터 블록을 조작하여 해시 연산의 내부 상태를 조작.
- 후속 데이터 조정: 충돌 블록 이후의 데이터를 조정하여 전체 해시가 일치하도록 함.
- 완성된 파일 생성: 최종적으로 두 개의 시각적으로 다른 PDF 파일 생성.
이 과정은 차분 암호 분석(differential cryptanalysis) 기법을 기반으로 하며, SHA-1의 내부 구조에서 발생할 수 있는 특정 비트 차이의 전파 경로를 정밀하게 제어합니다.
SHAttered 공격의 영향
산업계 반응
SHAttered 공격 발표 이후, 주요 기술 기업과 표준 기관들은 SHA-1의 사용 중단을 촉진했습니다.
- Google: 공격을 공동 개발한 기관 중 하나로, 두 개의 PDF 파일을 공개하며 시각적 차이를 보여줌.
- Microsoft, Mozilla, Google Chrome: 2017년 이후 SHA-1 기반 SSL 인증서를 더 이상 신뢰하지 않도록 브라우저 업데이트.
- NIST: 2011년부터 SHA-1 사용 제한을 권고했으며, SHAttered 이후 이를 강력히 재확인.
Git과 소프트웨어 관리 시스템
Git은 내부적으로 객체 식별에 SHA-1을 사용하지만, 충돌 공격이 실용적인 위협이 되기 어렵다는 이유로 즉각적인 전환을 하지 않았습니다. 그러나 이 공격 이후 Git 커뮤니티는 SHA-256 기반의 새로운 해시 체계(Git with SHA-256)를 개발 중이며, 점진적인 전환을 추진하고 있습니다.
대응 및 대체 방안
SHA-1 사용 중단 권고
- 디지털 서명, 인증서, 보안 통신 프로토콜 등 보안이 중요한 분야에서는 SHA-1 사용을 즉시 중단해야 함.
- 기존에 SHA-1을 사용하는 시스템은 SHA-2(SHA-256, SHA-384 등) 또는 SHA-3로 마이그레이션 필요.
권장 대체 해시 함수
| 해시 함수 | 출력 길이 | 보안 수준 | 비고 |
|---|---|---|---|
| SHA-256 | 256비트 | 높음 | 현재 가장 널리 사용됨 |
| SHA-384 | 384비트 | 매우 높음 | 고보안 시스템용 |
| SHA-3 | 가변 | 높음 | 구조가 SHA-1/2와 다름, 미래 지향적 |
참고 자료 및 관련 문서
- SHAttered 공식 웹사이트 – 공격의 설명과 샘플 파일 제공
- Stevens, M., Bursztein, E., Karpman, P., et al. (2017). The First Collision for Full SHA-1. CRYPTO 2017.
- NIST Special Publication 800-107: Recommendations for Applications Using Approved Hash Algorithms
- Git Security Advisory on SHA-1: https://github.blog/2017-03-20-sha-1-collision-detection/
결론
SHAttered 공격은 암호학 역사에서 중요한 전환점으로 평가되며, 이론적 취약점이 현실적인 위협으로 전환될 수 있음을 입증한 사례입니다. 이는 단순히 SHA-1의 퇴출을 의미하는 것을 넘어, 암호 알고리즘에 대한 지속적인 평가와 사전적 대응의 중요성을 일깨워주는 교훈을 제공합니다. 데이터 보호를 위한 시스템 설계 시, 사용되는 암호학적 기법의 수명 주기와 최신 연구 동향을 지속적으로 모니터링해야 할 필요성이 강조됩니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.