Git GPG暗号化

Git GPG暗号化
GitGPG
2019年2月15日 更新

GPG紹介

GPG(GNU Privacy Guard)というのは暗号化ツールです。

Gitでソースを管理し、暗号したいアイテムがあれば、使いましょう!

その仕組みはAESで公開鍵とプライベート鍵を使って、対象アイテムを解読し、共有していくことです。

上記によって、チームでGPGを使う時が、プライベート鍵と公開鍵の管理は各メンバーが知っておかないといけないことです。

インストール

ここはMacを例して行っていきます。

まずはGPGツールをインストールしていきます。

$ brew install gnupg gnupg2 pinentry-mac
$ mkdir ~/.gnupg
$ echo "pinentry-program /usr/local/bin/pinentry-mac" >>~/.gnupg/gpg-agent.conf

その後はGit暗号化ツールをインストールしていきます。

名前が git-crypt になります。

$ brew install git-crypt

手順

インストール完了しましたら。

各コマンドで確認を行ってください。

$ gpg -h
$ git crypt -h

ペア鍵作成

ペア鍵というのは公開鍵と対応しているプライベート鍵です。

$ gpg --generate-key
$ gpg --output ファイル名前.gpg --export [設定のメールアドレス]
$ gpg --output ファイル名_secret.gpg --export-secret-key 登録したメールアドレス

GitCrypt初期化

git-cryptを使って、コミットとともに自動的に暗号化していくため、下記で登録していたメールアドレスを追加します。

$ git crypt init
$ git crypt add-gpg-user [設定のメールアドレス]

注意: .git-crypt/keys/default/0/ ディレクトリ内に公開鍵を配置して、コミットしています。

配置

.gitattributes のルールを作成

ファイルパス filter=git-crypt diff=git-crypt

対象のファイルやパスのファイルに対して、git上の動作を定義しました。

検証

対象ファイルをエディターで開いていて、うまく開けないならば暗号化されたことを証明します、また、下記のコマンドで暗号化と解読化の切り替えできます。

$ git crypt unlock
ファイルを見えるようになります

$ git crypt lock
ファイルが他人に見えない

Git管理

モダンの開発だと、基本的にGithubを使われていて、公式に従えば、うまく登録できると思います。

参考として、github gpgを登録できるらしいので、必要を情報を作成して登録すればいいと思います。

$ gpg --armor --export 登録したメールアドレス | pbcopy
$ open https://github.com/settings/gpg/new

メンバー追加

受け取った他者の公開鍵は、下記のようにインポートできます。

$ gpg --import 他人のgpgファイル

GnuPGでは、公開鍵はこのままでは信用したことにならず、インポートした鍵を信頼する手続きを行います。

$ gpg --sign-key 他人のメールアドレス