프로젝트 소개
git-crypt는 git 저장소 내 파일의 투명한 암호화 및 복호화를 제공하는 명령줄 도구입니다. 보호 대상으로 지정된 파일은 커밋 시 자동으로 암호화되고 체크아웃 시 자동으로 복호화되므로, 팀은 전체 저장소를 잠그지 않고도 공개 콘텐츠와 비공개 콘텐츠가 섞인 저장소를 공유할 수 있습니다.
주요 기능은 다음과 같습니다:
- git 필터를 통한 투명한 암호화 및 복호화로, 초기 설정 후에는 사용자가 git을 평소처럼 사용할 수 있습니다.
- 파일의 SHA-1 HMAC에서 파생된 합성 IV를 사용하는 CTR 모드의 AES-256으로, 결정적 선택 평문 공격에 대해 의미론적 보안을 제공합니다.
- GPG 기반 키 공유를 통한 다중 사용자 협업 지원. 공개 키는 git-crypt add-gpg-user로 추가합니다.
- GPG 없이도 안전하게 키를 배포할 수 있는 대칭 키 내보내기 기능.
- 우아한 성능 저하: 비밀 키가 없는 개발자도 저장소를 클론하고 커밋할 수 있습니다.
구성은 .gitattributes 파일을 통해 이루어지며, 이 파일에서 암호화할 파일이나 패턴을 지정합니다. 패턴 형식은 .gitignore와 유사하며 와일드카드와 디렉터리 패턴을 지원합니다. .gitattributes 파일 자체는 암호화되면 안 되며, 민감한 파일을 추가하기 전에 규칙을 미리 마련해야 합니다.
보안 고려 사항: git-crypt는 고정 IV를 사용하는 ECB 또는 CBC를 사용하는 다른 투명한 git 암호화 시스템보다 안전합니다. 그러나 파일 이름, 커밋 메시지, 심볼릭 링크 대상 또는 기타 메타데이터는 암호화하지 않습니다. 또한 파일이 변경된 시점, 파일의 길이, 두 파일이 동일하다는 사실도 숨기지 않습니다. 과거 데이터의 맥락에서 본질적으로 복잡한 문제이므로, 이전에 부여한 암호화 저장소에 대한 접근 권한을 철회하는 기능도 지원하지 않습니다.
제한 사항은 다음과 같습니다: 저장소의 대부분 또는 전체 파일을 암호화하는 데는 적합하지 않으며(개인 키나 API 자격 증명과 같은 몇 가지 민감한 파일을 선택적으로 암호화하는 데 더 적합), 암호화된 파일은 압축할 수 없어 작은 변경에도 전체 파일을 저장해야 하며, Atlassian SourceTree 및 GitHub for Mac 같은 일부 타사 git GUI에서는 안정적으로 작동하지 않을 수 있습니다. git-crypt로 암호화된 파일은 패치 자체가 암호화되지 않는 한 git-apply로 패치를 적용할 수 없습니다.
최신 버전은 2025-09-23에 출시된 0.8.0입니다. 이 프로젝트는 버그가 없고 안정적인 것을 목표로 하지만 아직 완전한 성숙도에 도달하지 않았으며, 버전 1.0 이전에는 하위 호환성이 깨지는 변경 사항이 도입될 수 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.