버전 관리 시스템 깃(Git)이 다가오는 3.0 버전에서 기본 콘텐츠 해시 함수를 SHA-1에서 SHA-256으로 전환할 계획을 발표했습니다. 이는 2017년 SHA-1의 암호학적 취약점(충돌 공격)이 공개된 이후 보안 강화를 위한 조치로 보이지만, 개발자 커뮤니티에서는 이 전환이 가져올 막대한 비용과 혼란에 대한 우려가 커지고 있습니다.
깃은 파일 내용을 해시(SHA-1)로 변환하여 고유한 식별자로 사용하고, 이 해시를 키로 콘텐츠를 저장하는 '콘텐츠 주소 지정 데이터베이스' 방식으로 작동합니다. SHA-1은 2005년 깃 개발 당시 리누스 토르발스가 선택한 알고리듬으로, 속도가 빠르고 우연한 충돌 가능성이 극히 낮아 지난 18년간 안정적으로 사용되어 왔습니다. 그러나 2017년 'SHAttered' 공격 등 의도적인 충돌 생성이 가능해지면서 암호학적 취약점이 드러났고, 이에 깃 개발팀은 더 강력한 SHA-256으로의 기본값 전환을 추진하게 된 것입니다. 하지만 이 전환은 기존 SHA-1 기반 저장소와 호환되지 않는 새로운 저장소 형식을 만들고, 서명, 커밋 링크, 서브모듈, 해시 길이를 가정한 수많은 내부 도구에 광범위한 변경을 요구하게 됩니다. 구글(Google) 같은 대규모 사용자조차도 시스템 전체 설정을 SHA-1로 유지하는 방안을 검토할 정도로 전환 비용이 만만치 않습니다.
이러한 문제에 대한 대안으로, SHA-1을 콘텐츠 조회용 키로 유지하면서 트리 콘텐츠의 독립적인 강력한 해시(예: SHA-256 또는 BLAKE3)를 서명에 포함하는 방식이 제안되고 있습니다. 이 방식은 기존 저장소 형식을 변경하지 않고도 콘텐츠 검증을 강화할 수 있으며, 서명 시점에만 추가 해시 계산 비용이 발생합니다. 예를 들어, 크로미움(Chromium) 프로젝트의 35GB, 210만 개 파일을 5초 만에 체크섬 계산하는 개념 증명(PoC)이 성공적으로 시연되기도 했습니다. 이는 깃의 핵심 철학인 '콘텐츠 무결성'과 '신뢰'를 분리하여, SHA-1은 콘텐츠 식별자로, 강력한 해시는 서명을 통한 신뢰성 검증에 활용함으로써 생태계 전반의 대규모 전환 없이도 보안을 강화할 수 있다는 의미입니다. 궁극적으로는 SHA-1을 신뢰 수단으로 사용하지 않되, 기존 생태계는 유지하는 유연한 접근 방식이 필요하다는 논의가 이어지고 있습니다.