このプロジェクトについて
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暗号化システムよりも安全です。ただし、ファイル名、コミットメッセージ、シンボリックリンクのターゲット、その他のメタデータは暗号化されません。ファイルがいつ変更されたか、ファイルの長さ、2つのファイルが同一であるという事実も隠されません。また、過去に付与した暗号化リポジトリへのアクセスを取り消すことには対応していません。これは履歴データの文脈では本質的に複雑なためです。
制限事項は次のとおりです: リポジトリ内の大部分またはすべてのファイルを暗号化する用途には適していません(秘密鍵やAPI認証情報など、少数の機密ファイルを選択的に暗号化するのに適しています)。暗号化されたファイルは圧縮できないため、小さな変更でもファイル全体を保存する必要があります。また、Atlassian SourceTreeやGitHub for Macなど、一部のサードパーティ製git GUIでは確実に動作しない場合があります。git-cryptで暗号化されたファイルは、パッチ自体が暗号化されていない限り、git-applyでパッチを適用することはできません。
最新バージョンは0.8.0で、2025-09-23にリリースされました。このプロジェクトはバグがなく信頼性が高いことを目指していますが、まだ完全な成熟には達しておらず、バージョン1.0より前に後方互換性のない変更が導入される可能性があります。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.