Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
git-crypt — Git에서 투명 파일 암호화 | Kitploit
도구/GitHubGitHub/agwa/git-crypt
Authentication & AuthorizationEncryption/Decryption ToolsData ExfiltrationCryptographySecret DetectionSupply Chain Security
GitHubagwa/git-crypt

git-crypt

Git에서 투명 파일 암호화

저장소 보기
9.8k53811개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

git-crypt - git의 투명한 파일 암호화

git-crypt는 git 저장소 내 파일의 투명한 암호화 및 복호화를 가능하게 합니다. 보호하기로 선택한 파일은 커밋 시 암호화되고, 체크아웃 시 복호화됩니다. git-crypt를 사용하면 공개 및 비공개 콘텐츠가 혼합된 저장소를 자유롭게 공유할 수 있습니다. git-crypt는 우아하게 저하(gracefully degrade)되므로, 비밀 키가 없는 개발자도 암호화된 파일이 있는 저장소를 클론하고 커밋할 수 있습니다. 이를 통해 코드와 동일한 저장소에 비밀 자료(예: 키 또는 비밀번호)를 저장할 수 있으며, 전체 저장소를 잠글 필요가 없습니다.

git-crypt는 Andrew Ayer ([email protected])가 작성했습니다. 자세한 내용은 https://www.agwa.name/projects/git-crypt를 참조하세요.

git-crypt 빌드하기

INSTALL.md 파일을 참조하세요.

git-crypt 사용하기

저장소가 git-crypt를 사용하도록 구성:

root@kitploit:~
cd repo
git-crypt init

.gitattributes 파일을 생성하여 암호화할 파일을 지정:

root@kitploit:~
secretfile filter=git-crypt diff=git-crypt
*.key filter=git-crypt diff=git-crypt
secretdir/** filter=git-crypt diff=git-crypt

.gitignore 파일과 마찬가지로 와일드카드와 일치할 수 있으며 저장소에 체크인해야 합니다. .gitattributes에 대한 자세한 내용은 아래를 참조하세요. .gitattributes 파일 자체(또는 .gitignore, .gitmodules 같은 다른 git 파일)를 실수로 암호화하지 않도록 주의하세요. 민감한 파일을 추가하기 전에 .gitattributes 규칙이 적용되어 있는지 확인하세요. 그렇지 않으면 해당 파일이 암호화되지 않습니다!

GPG를 사용하여 저장소를 다른 사람(또는 자신)과 공유:

root@kitploit:~
git-crypt add-gpg-user USER_ID

USER_ID는 키 ID, 전체 지문, 이메일 주소 또는 GPG에 공개 키를 고유하게 식별하는 모든 것일 수 있습니다(gpg 매뉴얼 페이지의 "HOW TO SPECIFY A USER ID" 참조). 참고: git-crypt add-gpg-user는 저장소 루트의 .git-crypt 디렉터리에 GPG로 암호화된 키 파일을 추가하고 커밋합니다.

또는 대칭 비밀 키를 내보낼 수 있으며, 이를 협업자에게 안전하게 전달해야 합니다(GPG 필요 없음, 저장소에 파일이 추가되지 않음):

root@kitploit:~
git-crypt export-key /path/to/key

암호화된 파일이 있는 저장소를 클론한 후 GPG로 잠금 해제:

root@kitploit:~
git-crypt unlock

또는 대칭 키 사용:

root@kitploit:~
git-crypt unlock /path/to/key

이것으로 모든 설정이 완료됩니다. git-crypt 설정 후(git-crypt init 또는 git-crypt unlock을 사용하여) git을 정상적으로 사용할 수 있습니다. 암호화 및 복호화가 투명하게 이루어집니다.

현재 상태

최신 버전의 git-crypt는 0.8.0이며, 2025-09-23에 출시되었습니다. git-crypt는 버그가 없고 안정적이어야 하며, 충돌, 오작동 또는 기밀 데이터 노출이 없어야 합니다. 그러나 아직 성숙 단계에 도달하지 않았으므로 문서화, 기능, 사용 편의성이 충분하지 않습니다. 또한 버전 1.0 이전에는 하위 호환성이 깨지는 변경 사항이 도입될 수 있습니다.

보안

git-crypt는 다른 투명한 git 암호화 시스템보다 더 안전합니다. git-crypt는 파일의 SHA-1 HMAC에서 파생된 합성 IV(synthetic IV)와 함께 CTR 모드에서 AES-256을 사용하여 파일을 암호화합니다. 이 작동 모드는 결정적 선택 평문 공격(deterministic chosen-plaintext attack) 하에서 증명 가능한 의미론적 안전성(semantically secure)을 제공합니다. 즉, 암호화가 결정적이지만(git이 파일이 변경되었는지 여부를 구별할 수 있도록 필요함), 두 파일이 동일한지 여부 이상의 정보를 누출하지 않습니다. 투명한 git 암호화를 위한 다른 제안은 고정 IV를 사용하는 ECB 또는 CBC를 사용합니다. 이러한 시스템은 의미론적으로 안전하지 않으며 정보를 누출합니다.

제한 사항

git-crypt는 git 필터에 의존하며, 이 필터는 암호화를 염두에 두고 설계되지 않았습니다. 따라서 git-crypt는 저장소의 대부분 또는 모든 파일을 암호화하는 데 최적의 도구가 아닙니다. git-crypt가 가장 빛을 발하는 곳은 저장소의 대부분이 공개되어 있지만, 암호화해야 할 몇 가지 파일(예: *.key라는 개인 키 또는 API 자격 증명이 있는 파일)이 있는 경우입니다. 전체 저장소를 암호화하려면 git-remote-gcrypt와 같은 시스템을 사용하는 것을 고려하세요. (참고: git-remote-gcrypt의 보안을 보증하지 않습니다.)

git-crypt는 파일 이름, 커밋 메시지, 심볼릭 링크 대상, gitlinks 또는 기타 메타데이터를 암호화하지 않습니다.

git-crypt는 파일 변경 여부, 파일 길이 또는 두 파일이 동일하다는 사실을 숨기지 않습니다(위의 "보안" 섹션 참조).

git-crypt는 이전에 부여된 암호화된 저장소에 대한 액세스 권한을 철회하는 것을 지원하지 않습니다. 이는 다중 사용자 GPG 모드(add-gpg-user를 보완하는 del-gpg-user 명령이 없음)와 대칭 키 모드(키 회전 지원 없음) 모두에 적용됩니다. 이는 과거 데이터의 맥락에서 본질적으로 복잡한 문제이기 때문입니다. 예를 들어, 기록의 어느 시점에서 키가 교체되었더라도 이전 키를 가진 사용자는 이전 저장소 기록에 계속 액세스할 수 있습니다. 이 문제는 https://github.com/AGWA/git-crypt/issues/47에서 더 자세히 논의됩니다.

git-crypt로 암호화된 파일은 압축할 수 없습니다. 암호화된 파일에 가장 작은 변경이 있더라도 git은 델타 대신 변경된 전체 파일을 저장해야 합니다.

git-crypt는 개별 파일 내용을 SHA-1 HMAC으로 보호하지만, 전체 저장소가 변조로부터 보호되지 않으면 git-crypt를 안전하게 사용할 수 없습니다(저장소를 변조할 수 있는 공격자는 .gitattributes 파일을 변경하여 암호화를 비활성화할 수 있습니다). 필요한 경우 무결성을 위해 git-crypt에만 의존하지 말고 서명된 태그와 같은 git 기능을 사용하세요.

git-crypt로 암호화된 파일은 패치 자체가 암호화되지 않는 한 git-apply로 패치를 적용할 수 없습니다. 암호화된 패치를 생성하려면 git diff --no-textconv --binary를 사용하세요. 또는 patch 명령을 사용하여 git 외부에서 일반 텍스트 패치를 적용할 수 있습니다.

git-crypt는 Atlassian SourceTree 및 GitHub for Mac과 같은 일부 타사 git GUI에서 안정적으로 작동하지 않습니다. 파일이 암호화되지 않은 상태로 남을 수 있습니다.

Gitattributes 파일

.gitattributes 파일은 gitattributes(5) 매뉴얼 페이지에 문서화되어 있습니다. 파일 패턴 형식은 .gitignore에서 사용하는 형식과 동일하며, gitignore(5) 매뉴얼 페이지에 문서화되어 있습니다. 단, 디렉터리만 지정(예: /dir/)하는 것은 그 아래의 모든 파일을 암호화하기에 충분하지 않습니다.

또한 dir/* 패턴은 dir/의 하위 디렉터리에 있는 파일과 일치하지 않습니다. 전체 하위 트리 dir/를 암호화하려면 dir/**를 사용하세요:

root@kitploit:~
dir/** filter=git-crypt diff=git-crypt

.gitattributes 파일은 암호화되지 않아야 하므로 와일드카드가 실수로 일치하지 않도록 하세요. 필요한 경우 다음과 같이 .gitattributes를 암호화에서 제외할 수 있습니다:

root@kitploit:~
.gitattributes !filter !diff
도구 다운로드