Git 3.0의 SHA-256 기본값 전환은 큰 대가를 치를 실수가 될 것

2 hours ago 2

Git 3.0은 기본 콘텐츠 해시를 SHA-1에서 SHA-256으로 변경할 계획이지만, 실질적인 보안 이익에 비해 저장소와 도구 생태계의 전환 비용이 지나치게 크다는 비판을 받음 암호학적 무결성과 신뢰는 다름: 해시 충돌을 만들 수 있어도 피해자가 악성 객체를 받아 실행하도록 해야 하며, 실제 코드 신뢰는 코드의 출처와 접근 권한 관리에 크게 의존함 새 기본값은 서로 호환되지 않는 저장소 형식을 늘리고, 기존 프로젝트 전환 시 서명, 커밋 링크, 서브모듈, 해시 길이를 가정한 도구에 광범위한 변경을 요구함 대안은 SHA-1을 콘텐츠 조회용 키로 유지하면서 트리 콘텐츠의 독립적인 강한 해시를 서명에 포함하는 방식임. 저장 형식 전체를 바꾸지 않고 콘텐츠 검증을 강화할 수 있음 독립 체크섬 방식의 개념 증명은 Chromium의 35GB, 210만 파일을 5초에 처리함. 다만 검증 범위는 해당 헤더와 서명이 있는 객체이며, 신뢰가 전체 과거 이력으로 전파되지는 않음 Git의 콘텐츠 주소 지정과 SHA-1 Git은 콘텐츠 주소 지정 데이터베이스로, 콘텐츠의 해시를 키로 사용하고 콘텐츠 자체를 값으로 저장함 같은 콘텐츠는 어디서나 같은 해시를 가지므로 동일한 파일 내용을 중복 저장하지 않음 커밋은 이전 커밋의 해시를 포함하므로, 과거 객체 하나를 바꾸면 그 뒤에 이어지는 해시도 바뀜 최신 커밋의 해시는 앞선 수많은 파일, 트리, 커밋의 무결성과 연결됨 SHA-1은 Linus가 2005년 Git을 시작할 때 선택한 해시 함수로, 상대적으로 빠르고 서로 다른 파일의 우연한 충돌은 현실적으로 거의 불가능함 알려진 범위에서는 지금까지 생성된 방대한 Git 객체에서 우연한 충돌 사례가 없음 160비트 출력의 생일 한계에 따르면, 단일 프로젝트에서 무작위 파일 약 1.4 × 10²⁴개 규모가 되어야 우연한 충돌을 고려할 수준에 도달함 SHA-1이 깨졌다는 말의 범위 2017년 SHAttered, 2020년 SHA-1 is a Shambles 등 충돌 공격이 공개되면서 SHA-1은 암호학적으로 부분적으로 깨진 것으로 간주됨 여기서 깨졌다는 말은 충분한 자금과 GPU를 투입하면 특정 형태의 서로 다른 콘텐츠를 의도적으로 같은 해시로 만들 수 있다는 뜻임 정상적인 서로 다른 파일이 우연히 충돌한다는 뜻은 아님 오늘날 수만 달러 규모의 비용으로 의도적인 충돌을 만들 수 있는 성질이 SHA-1에는 있고 SHA-256에는 없음 관련 기술적 ...

Read Entire Article