JP Coders

Published on

Linux・gpgコマンドでファイルの暗号化・復号化をする方法とよく使うオプションの使い方

Linuxパソコン・サーバーにおける、gpgはpgpから派生した暗号化ソフトウェアのひとつで、数多くのプロジェクトで使用されている、もっとも多く利用されている暗号化ソフトウェアのひとつです。 公開鍵暗号はパスワードだけで保護したファイルやアーカイブよりも安全性が高いため、セキュリティを要求される場合はgpgのようなものを使うと良いでしょう。

パスワードでの簡易的な暗号化

gpg --symmetric doc.txt
# or
gpg -c doc.txt

パスワードでの簡易的な暗号化 ( バッチ )

gpg -c --batch --passphrase "password" doc.txt

パスワード暗号化gpgファイルの復号化

gpg --decrypt doc.txt.gpg
# or
gpg -d doc.txt.gpg

tar圧縮ファイルの暗号化

gpg -c --batch --passphrase "password" backup.tar.gz

gpgキーの生成 ( 以下より、便宜上メールアドレスとパスワードは{{email}};{{password}}で表記 )

cat << 'EOT' > gen-key.txt
Key-Type: 1
Key-Length: 2048
Subkey-Type: 1
Subkey-Length: 2048
Name-Real: yuis
Name-Email: {{email}}
Expire-Date: 0
Passphrase: {{password}}
EOT

# with passphrase by prompt
# %ask-passphrase

# more info: [GPG Cheat Sheet](http://irtfweb.ifa.hawaii.edu/~lockhart/gpg/)

gpg --batch --gen-key gen-key.txt

# or interactively
# gpg --gen-key

生成されたキーの検証

$ gpg --list-key "yuis <{{email}}>"
pub   2048R/13BF6B9D 2019-08-08
uid                  yuis <{{email}}>
sub   2048R/13206DBB 2019-08-08

$ gpg --export "yuis <{{email}}>" | wc
      6      31    1462
$ gpg --export | wc
     16      88    3833

ファイルの暗号化

echo hogehoge > file.txt

gpg --encrypt --recipient '{{email}}' file.txt

ファイルの復号化 ( ローカルサーバー )

gpg -d file.txt.gpg
# enter passphrase
hogehoge

gpg公開鍵および秘密鍵の削除

gpg --delete-secret-keys "05EDCB38"
gpg --delete-keys "05EDCB38"

# or in bulk
gpg --delete-secret-and-public-keys 05EDCB38

# or by username
# gpg --delete-secret-and-public-keys test hogehoge

gpg公開鍵および秘密鍵の共有 - ファイルへ出力

gpg --export > public.key
gpg --export-secret-keys > private.key

gpg公開鍵および秘密鍵の共有 - リモートサーバーでインポート

# // 秘密鍵ファイル;公開鍵ファイル;file.txt.gpgファイルをリモートサーバーへコピー

$ gpg --list-keys
$

$ gpg --import ~/rsync/public.key
gpg: key 7D...D8: public key "yuis <{{email}}>" imported
gpg: Total number processed: 1
gpg:               imported: 1

$ gpg --list-keys
/home/yuis/.gnupg/pubring.kbx
-----------------------------
pub   rsa2048 2019-08-08 [SCEA]
      D6...D8
uid           [ unknown] yuis <{{email}}>
sub   rsa2048 2019-08-08 [SEA]

$ gpg --import ~/rsync/private.key
gpg: key 7D...D8: "yuis <{{email}}>" not changed
gpg: key 7D...D8: secret key imported
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg:       secret keys read: 1
gpg:   secret keys imported: 1

ファイルの復号化 ( リモートサーバー )

$ gpg -d ~/rsync/file.txt.gpg
gpg: encrypted with 2048-bit RSA key, ID DF2...66, created 2019-08-08
      "yuis <{{email}}>"
hogehoge

Authors
  • avatar
  • Name
  • 情報技術者 / Z世代プログラマー / 米大学院にてデータサイエンスを学ぶ

  • ITプロフェッショナルとして活動しています。React.js等のモダンなウェブ制作・アプリ開発を得意としており、Java・Python・Rust等のプログラミング言語を用いたソフトウェア開発全般を行っています。

お手伝いできますか? 🤝

他の方法でのご連絡をご希望ですか?
web制作ご依頼受付中

本記事で掲載している情報やコードは執筆時点のものであり、動作を保証するものではありません。 自己責任のもと、プログラムの実行や情報の利用にあたってはご注意ください。


本記事には提携する企業の広告が含まれる場合があります。