Git 3.0의 SHA-256 기본값 변경 논란과 보안 신뢰성
Git 3.0's upcoming SHA-256 default will be a costly mistake
Hacker NewsGit 3.0 버전에서 기본 해싱 알고리즘을 기존의 SHA-1에서 더 강력한 SHA-256으로 변경할 예정입니다.
Git이 기본 해싱 알고리즘을 업그레이드하는 것은 보안 강화의 중요한 단계이지만, 이 기사는 기술적 변화보다 콘텐츠의 출처를 확인하는 신뢰 메커니즘이 더 중요하다고 강조해요.
- SHA-1이 이론적으로 충돌 공격(collision attack)에 취약하다는 연구 결과가 나오면서, 업계 전반의 보안 강화를 위해 알고리즘 교체가 추진되고 있습니다.
- 다만, 전문가는 해싱 자체보다 GPG 서명이나 신뢰할 수 있는 출처를 통한 검증 등 소스 트러스트 메커니즘이 근본적인 보안 요소라고 지적합니다.
- 실제 코드베이스의 위협은 복잡한 해시 충돌 공격보다는 유지보자 대상 사회 공학적 기법이나 의존성 패키지 탈취 같은 방식으로 발생하는 경우가 훨씬 흔하고 쉽습니다.
Git은 콘텐츠 주소 지정 데이터베이스(content addressable database) 방식으로 작동하며, 저장되는 모든 내용에 대해 해시 값을 계산하여 키로 사용합니다. 이 과정에서 Git은 오랫동안 SHA-1을 기본 해싱 알고리즘으로 사용해 왔습니다. 그러나 SHA-1이 2017년 등 공개된 충돌 공격(collision attacks)의 대상이 되면서 이론적으로 취약하다는 지적이 나왔고, 이에 대응하여 다가오는 Git 3.0 버전은 기본 해싱 알고리즘을 SHA-1에서 더 강력한 SHA-256으로 변경할 계획입니다.
다만, 필자는 기술적 보안 강화에 앞서 신뢰의 근본적인 원칙에 주목해야 한다고 주장합니다. 해싱이 암호학적 무결성(cryptographic integrity)을 제공하는 것은 맞지만, 소스 코드 관리 시스템에서 '신뢰'는 본질적으로 콘텐츠가 어디에서 오는지('where do you pull from?')와 같은 출처 인증 메커니즘에 기반한다고 지적합니다. 따라서 해시 알고리즘의 변경만으로는 근본적인 신뢰 문제를 해결하기 어렵다는 것입니다.
또한, 실제 코드베이스에 악성 코드를 주입하는 가장 현실적이고 쉬운 공격 경로는 복잡한 해시 충돌을 계산하려는 시도보다 훨씬 간단합니다. 예를 들어, 수백만 개의 프로젝트가 사용하는 의존성 패키지(dependency package)의 유지보자를 사회 공학적으로 속여 접근 권한을 얻거나 패키지를 탈취하는 방식이 훨씬 쉽고 성공 가능성이 높다고 분석했습니다.
Git이 해싱 알고리즘을 바꾸는 이유는 무엇인가요?
SHA-1이 충돌 공격의 대상이 되면서 이론적으로 취약하다는 지적이 나왔기 때문에, 더 강력한 SHA-256으로 변경할 계획이에요.
해시 알고리즘 변경만으로 보안이 충분한가요?
필자는 '신뢰'는 콘텐츠의 출처 인증 메커니즘에 기반한다고 지적하며, 단순히 해싱 알고리즘을 바꾸는 것만으로는 근본적인 신뢰 문제를 해결하기 어렵다고 말해요.
실제 코드베이스의 위협은 어떤 방식으로 발생하나요?
복잡한 해시 충돌 공격보다, 수백만 개의 프로젝트가 사용하는 의존성 패키지의 유지보자를 사회 공학적으로 속이거나 패키지를 탈취하는 방식이 훨씬 쉽고 성공 가능성이 높다고 분석했어요.