はじめに

こんにちは!今回はgpgコマンドについて解説します。

gpgは、ファイルやテキストを暗号化・署名するコマンドです。GnuPGの略で、セキュアなファイル送受信やデータ保護に欠かせません。機密情報を扱うサーバー管理者や、セキュアな通信が必要な現場で毎日使われるコマンドですね。

「ファイルの鍵をかける機」って感じです。

gpgコマンドとは

gpgは、公開鍵暗号を使ってファイルやテキストを暗号化・署名するコマンドです。“GNU Privacy Guard"の略ですね。

パスワードとは異なり、公開鍵と秘密鍵のペアを使います。公開鍵は誰にでも配布でき、秘密鍵は自分だけが持つ。これで、信頼できる人だけがファイルを復号化できたり、ファイルが改ざんされていないことを確認できたりします。情報セキュリティの基本中の基本ですね。

基本構文

1
gpg [オプション] [ファイル]

様々なオプションで暗号化、復号化、署名操作を行います。

主なオプション

オプション 説明
-c 対称鍵で暗号化(パスワード暗号化)
-d ファイルを復号化
--encrypt 公開鍵で暗号化
--decrypt ファイルを復号化
--sign ファイルに署名
--verify 署名を検証
-r 受信者の公開鍵を指定
--list-keys 公開鍵一覧を表示
--gen-key 鍵ペアを生成
-a ASCII形式で出力
-o 出力ファイルを指定

使用例

例1: 対称鍵で暗号化(パスワード暗号化)

1
gpg -c document.txt

実行結果:

1
2
3
Enter passphrase:
(パスワード入力)
Repeat passphrase:

-cでパスワード暗号化。document.txt.gpgが作成される。

例2: 暗号化ファイルを復号化

1
gpg -d document.txt.gpg

実行結果:

1
2
3
4
gpg: CAST5 encryption will be used
Enter passphrase:
(パスワード入力)
(ファイル内容が標準出力に表示)

-dで復号化。パスワード入力が必要。

例3: 復号化してファイルに保存

1
gpg -d document.txt.gpg -o document.txt

実行結果:

1
2
Enter passphrase:
(ファイル document.txt に復号化内容が保存)

-oで出力先を指定。

例4: 鍵ペアを生成

1
gpg --gen-key

実行結果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
Please select what kind of key you want:
  (1) RSA and RSA (default)
  (2) DSA and Elgamal
  ...
Your selection? 1

RSA modulus length (1024, 2048, 4096): 2048

Please specify how long the key should be valid:
  (0) Key does not expire
  ...

Real name: John Doe
Email address: [email protected]
Comment: My key

You need a passphrase...

対話的に鍵ペアを生成。数分かかることもある。

例5: 公開鍵一覧を表示

1
gpg --list-keys

実行結果:

1
2
3
4
5
6
7
pub   2048R/ABC12345 2026-01-03
uid                  John Doe <[email protected]>
sub   2048R/XYZ67890 2026-01-03

pub   2048R/DEF45678 2026-01-02
uid                  Alice Smith <[email protected]>
sub   2048R/UVW23456 2026-01-02

保持している公開鍵を一覧表示。

例6: 秘密鍵一覧を表示

1
gpg --list-secret-keys

実行結果:

1
2
3
sec   2048R/ABC12345 2026-01-03
uid                  John Doe <[email protected]>
ssb   2048R/XYZ67890 2026-01-03

秘密鍵一覧を表示。自分の鍵のみ表示。

例7: ファイルに署名

1
gpg --sign document.txt

実行結果:

1
2
Enter passphrase:
(秘密鍵のパスワード入力)

document.txt.gpgが作成。署名付きファイル。

例8: クリアテキスト署名(テキスト化)

1
gpg --clearsign document.txt

実行結果:

1
2
Enter passphrase:
(document.txt.asc が作成)

署名付きでありながら、元のテキストが読める形式。

例9: 公開鍵をASCII形式でエクスポート

1
gpg -a -o public.key --export [email protected]

実行結果:

1
(public.key に公開鍵が保存)

他者に配布する公開鍵をテキスト形式でエクスポート。

例10: 署名を検証

1
gpg --verify document.txt.asc

実行結果:

1
2
3
gpg: Signature made Fri 03 Jan 2026
gpg:                using RSA key ABC12345
gpg: Good signature from "John Doe <[email protected]>"

署名が有効か確認。改ざんされていない証拠。

Tips・注意点

パスワード暗号化の安全性

1
2
3
4
5
# 安全:対称鍵暗号化
gpg -c document.txt

# より安全:公開鍵暗号化
gpg --encrypt -r [email protected] document.txt

公開鍵暗号化の方が、複数の受信者に安全に送信できる。

鍵の定期的なバックアップ

1
gpg --export-secret-keys [email protected] > secret_backup.gpg

秘密鍵を失うと、復号化不可になるため、バックアップは必須。

信頼の輪(Web of Trust)

1
gpg --sign-key [email protected]

公開鍵の信頼度を管理。本当に本人の鍵か確認することが重要。

実践的な使い方

機密ファイルの安全な転送

1
2
3
4
5
6
7
# 相手の公開鍵をインポート
gpg --import alice_public.key

# ファイルを暗号化
gpg --encrypt -r [email protected] confidential.txt

# 暗号化ファイルを相手に送信

公開鍵がある場合、その鍵で暗号化。相手だけが復号化可能。

設定ファイルの暗号化バックアップ

1
2
3
4
#!/bin/bash
CONFIG="/etc/important.conf"
BACKUP="important.conf.gpg"
gpg -c -o "$BACKUP" "$CONFIG"

重要な設定ファイルをパスワード保護。

ソースコードへの署名

1
2
3
gpg --clearsign release.txt
git add release.txt.asc
git commit -m "Release signed"

リリース情報に署名。改ざん防止とトレーサビリティ確保。

まとめ

gpgコマンドのポイント:

  • ファイルやテキストを暗号化・署名
  • -c: パスワード暗号化(シンプル)
  • –encrypt: 公開鍵暗号化(複数受取人対応)
  • –decrypt/-d: ファイル復号化
  • –sign: ファイルに署名
  • –verify: 署名検証
  • –gen-key: 鍵ペア生成
  • –list-keys: 公開鍵一覧
  • よく使う組み合わせ: gpg -c, gpg -d, gpg --encrypt -r

情報セキュリティの基本。データ保護と本人確認が同時にできる強力なツールです。覚えておいて損はありませんよ!