099. SHA-1 (Secure Hash Algorithm 1)
⚠️ 이 문서는 MD5가 처참하게 뚫린 후 미국 국가안보국(NSA)이 이를 대체하기 위해 개발하여 15년 넘게 전 세계 웹사이트 인증서(SSL)의 표준으로 쓰였으나, 결국 구글 연구팀에 의해 충돌 취약점이 완전히 입명되어 강제 은퇴당한 비운의 해시 함수인 SHA-1을 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: SHA-1은 MD5의 구조(머클-담가드)를 물려받으면서도 지문의 길이를 128비트에서 160비트로 늘려, 무차별 대입과 생일 공격에 대한 저항성을 수학적으로 훨씬 강화한 대중적인 2세대 해시 함수다.
- 가치: 1995년 발표 이후 HTTPS 인터넷 통신, 깃(Git)의 커밋 무결성 확인 등 전 세계 IT 인프라의 90% 이상에서 표준 서명 알고리즘으로 채택되며 디지털 세상의 절대적인 신뢰 인프라로 맹활약했다.
- 한계: 2017년, 구글과 CWI 연구소팀이 슈퍼컴퓨터를 동원해 내용이 전혀 다른 두 개의 PDF 파일이 완벽하게 동일한 SHA-1 해시값을 뱉어내게 만드는 **'SHAttered' 공격을 실증(충돌 증명)**하면서, 보안 표준으로서의 사망 선고를 확정 지었다.
Ⅰ. 개요 및 탄생 배경 (Context & Necessity)
1990년대 초중반, MD5가 "조만간 털릴 것 같다"는 학계의 불길한 예측이 감돌자, 미국 국가안보국(NSA)은 서둘러 대체재 개발에 착수했다. 그 결과 1993년 SHA-0를 내놨다가 몰래 구조를 살짝 고쳐서 1995년에 확정 발표한 것이 바로 **SHA-1 (Secure Hash Algorithm 1)**이다.
핵심 설계 철학은 "지문의 길이를 늘린다"였다. 해커가 생일 공격(Birthday Attack)으로 똑같은 해시값을 가지는 가짜 문서를 만들려면 지문 길이의 절반 루트, 즉 $2^{128/2} = 2^{64}$ 번의 시도가 필요했던 MD5와 달리, SHA-1은 지문 길이를 160비트로 늘려 공격 난이도를 $2^{80}$ (MD5보다 65,000배 어려움)으로 대폭 끌어올렸다. 당시 1990년대의 컴퓨터 성능으로는 우주가 멸망할 때까지 풀어낼 수 없는 난공불락의 수치였고, 전 세계는 안도하며 모든 SSL/TLS 인증서를 SHA-1으로 찍어내기 시작했다.
📢 섹션 요약 비유: 도둑이 128자리 자물쇠(MD5)를 쉽게 따는 법을 알아내자, 정부가 급하게 두께를 좀 더 키운 160자리 새 자물쇠(SHA-1)를 은행과 관공서에 쫙 깔아주며 "이건 절대 못 뚫는다"고 선언한 것입니다.
Ⅱ. 구조적 취약점과 구글의 SHAttered 사건
2005년부터 중국의 천재 암호학자 왕샤오윈 교수가 "SHA-1도 수학적으로 $2^{69}$ 번만 연산하면 충돌(Collision)을 찾을 수 있다"는 치명적 논문을 발표했다. 학계는 발칵 뒤집혔다. 하지만 이론일 뿐, 당시의 막대한 컴퓨팅 파워를 쏟아부어 실제로 똑같은 해시를 가진 두 문서를 만들어낸(실증) 사람은 없었다.
"이론상 뚫렸지만, 돈이 너무 들어서 해커가 진짜 뚫진 못할 거야." 이 안일한 타협은 2017년 구글(Google)에 의해 처참하게 산산조각 났다.
🔥 2017년 SHAttered (산산조각) 프로젝트
- 구글과 네덜란드 CWI 연구소는 무려 110대의 막강한 GPU 서버를 1년 내내 미친 듯이 돌렸다.
- 그 결과, 눈으로 보기엔 색깔과 내용이 완전히 다른 **A라는 PDF 파일(빨간색 문서)**과 **B라는 PDF 파일(파란색 문서)**을 공개했다.
- 놀랍게도 이 두 파일을 SHA-1 믹서기에 넣었을 때, 단 1비트의 오차도 없이 완벽하게 똑같은
38762cf7f55934b34d179ae6a4c80cadccbb7f0a라는 **동일한 해시값(충돌)**이 튀어나왔다!
┌────────────────────────────────────────────────────────────────────────────┐
│ SHAttered 사태: SHA-1의 강한 충돌 저항성 붕괴 시각화 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ [ 구글이 공개한 충돌 실증 파일 2개 ] │
│ │
│ 📄 정상 PDF 문서 (월세 10만 원 계약서) │
│ └─ (SHA-1 해시) ──▶ [ 38762C... (160비트) ] ◀── 똑같음!! │
│ │ │
│ 📄 악성 PDF 문서 (월세 1000만 원 계약서) │
│ └─ (SHA-1 해시) ──▶ [ 38762C... (160비트) ] ───┘ │
│ │
│ ★ 파국적 결과: 해커가 정상 계약서로 집주인의 '전자서명'을 받은 뒤, │
│ 그 서명을 떼어다 악성 계약서에 찰싹 붙여서 은행에 내밀면, 은행 서버는 │
│ "해시값이 똑같네? 정상 문서군!" 하고 돈을 내주는 완벽한 위조가 성립됨! │
└────────────────────────────────────────────────────────────────────────────┘
[다이어그램 해설] 암호학에서 해시의 '충돌 저항성'이 뚫렸다는 것은, 디지털 서명(Digital Signature)의 신뢰가 원천적으로 붕괴했다는 뜻이다. 서명은 원본 문서 통째로 하는 것이 아니라, 문서를 압축한 '해시값'에다 도장을 찍는 것이기 때문이다. 해시값이 같은 가짜 문서(B)를 만들 수 있다면, 해커는 정상 문서(A)의 결재 도장을 훔쳐다 B에 복붙하는 위조의 신(God)이 되어버린다.
- 📢 섹션 요약 비유: 구글이 전 세계를 향해 "똑같은 쌍둥이 지문을 가진 서로 다른 두 사람을 만들어냈어!"라고 폭탄선언을 한 것입니다. 이제 지문 인식기(SHA-1)만 통과하면 은행 금고가 열리는데, 도둑이 주인과 똑같은 지문을 가진 실리콘 손가락을 복제해 낸 셈이니 지문 인식기 자체를 버려야 하는 상황이 왔습니다.
Ⅲ. 실무적 대학살: Chrome과 인터넷의 강제 교체
SHAttered 발표 전후로, 전 세계의 거대 테크 기업들은 "더 이상 SHA-1을 쓴 인증서(SSL/TLS)는 믿을 수 없다"고 선언하며 무자비한 강제 퇴출 작전에 돌입했다.
- 웹 브라우저의 접속 차단 (Death Penalty)
- Chrome, Firefox, Edge 등은 웹사이트가 SHA-1으로 서명된 인증서를 들고 나오면, 자물쇠 마크를 붉은색 경고 마크(안전하지 않음)로 띄워버리고 화면 접속 자체를 강제로 차단해 버렸다. 수백만 개의 구형 웹사이트 관리자들이 울며 겨자 먹기로 인증서를 상위 버전(SHA-256)으로 다시 사서 달아야 했다.
- 버전 관리 시스템(Git)의 충격
- 개발자들이 소스코드를 관리하는
Git은 각 코드의 저장 버전(Commit)을 구별하기 위해 SHA-1 지문(예:commit a8b9c...)을 쓴다. - 구글의 발표로 "해커가 악성코드를 숨긴 커밋을 정상 커밋과 똑같은 SHA-1 번호로 속여치기 할 수 있다"는 우려가 제기되었고, 리누스 토르발스(Git 창시자)는 이를 막기 위한 패치(SHA-1 충돌 감지 로직)를 긴급 적용해야만 했다. (최종적으로 Git은 SHA-256 체제로 마이그레이션 중이다.)
- 개발자들이 소스코드를 관리하는
Ⅳ. 결론 및 세대 교체 (SHA-2의 시대)
"인간이 만든 믹서기는 컴퓨터의 진화 속도를 이길 수 없다." SHA-1은 160비트라는 방패를 들고 15년 동안 눈부시게 인터넷의 신뢰를 지켜냈으나, 클라우드와 GPU 병렬 연산이라는 폭주 기관차 앞에서는 결국 산산조각(SHAttered) 나고 말았다. NIST와 보안 업계는 이 사태를 겪으며, 160비트를 넘어 무려 256비트의 길이로 경우의 수를 우주 단위로 뻥튀기한 안전한 후계자 **SHA-256(SHA-2 패밀리)**을 현재 전 세계의 절대 표준으로 굳건히 강제하고 있다.
📌 관련 개념 맵
- 전신 (해결 대상): MD5 (128비트, 충돌 붕괴)
- 후계자 (현재 표준): SHA-2 패밀리 (SHA-256, SHA-512)
- 치명적 취약점: 충돌 저항성(Collision Resistance) 실증 완료 (구글 SHAttered 공격)
- 피해를 보는 보안 요소: 전자서명(Digital Signature), PKI(공인인증서 체계), 무결성 검증
👶 어린이를 위한 3줄 비유 설명
- MD5 자물쇠가 허접해서, 두께를 더 키우고 복잡하게 만든 160자리짜리 최신 자물쇠(SHA-1)를 온 동네 은행과 컴퓨터에 달아놨어요.
- 한동안 끄떡없었는데, 구글이라는 아주 부자 회사가 어마어마하게 비싸고 빠른 컴퓨터 수백 대를 가져와서 1년 내내 망치로 때리고 열쇠를 맞춰봤죠.
- 결국 구글이 "야! 1년 때리니까 열리는데? 쌍둥이 가짜 열쇠 만들었어!"라고 증명해 버려서, 전 세계 사람들이 깜짝 놀라 다 같이 SHA-256이라는 새로운 강철 자물쇠로 싹 갈아치우게 되었답니다!