GnuPG

2022-08-13 (土) 09:29:55

GnuPG とは

名称

  • GNU Privacy Guard
  • GNU PG
  • GPG

概要

動作環境

  • Unix
  • Windows
  • macOS

実装する機能

サポートする暗号化アルゴリズム

共通鍵暗号方式

公開鍵暗号方式

ハッシュ関数

デジタル署名

操作(Liniux)

インストール

  • Debian系
    apt-get install gnupg2

公開鍵の管理

  • 鍵ペアの作成
    • プロンプトで鍵の種類・鍵長/楕円曲線・有効期限を選択して作成 ※ver.2.1.17以降
      gpg --full-generate-key
      gpg --full-gen-key
      →~/.gnupg ディレクトリにキーリング(鍵)が作成される(公開鍵: pubring.kbx/秘密鍵: trustdb.gpg)
      gpg --full-generate-key --expert
      gpg --full-gen-key --expert
      →鍵の種類などの選択で全ての選択肢を表示する
    • デフォルトのパラメータで作成:プロンプトで名前とメールアドレスを入力して作成 ※標準的な方法
      gpg --gen-key
      gpg --generate-key
    • プロンプトで質問に答える必要ない
      quick-generate-key <user-id>
      quick-gen-key
  • 作成済の鍵を確認
    • 公開鍵を確認
      gpg --list-keys
      gpg --list-keys --keyid-format short ※8文字
      gpg --list-keys --keyid-format long ※16文字
      gpg --list-public-keys
      gpg -k
    • 秘密鍵を確認
      gpg --list-secret-keys
      gpg -K
      > [E=encryption, S=signing, C=certification, A=authentication]
  • 鍵の変更
    gpg --edit-key <pubkey-ID>
    gpg --edit-key --expert <pubkey-ID> ※鍵の種類などの選択で全ての選択肢を表示する場合
    > key <subkey-ID> ※操作するSub鍵を選択
    > addkey ※Sub鍵の追加
    > delkey※Sub鍵の削除
    > save ※保存
    
    gpg --edit-key <pubkey-ID> addkey ※Sub鍵の追加
  • 鍵の失効証明書の作成
    gpg -o <revoke-filename> --gen-revoke <email-address>
  • 鍵を無効にする ※失効証明書のファイルを使う
    gpg --import <revoke-filename>
  • 鍵サーバで公開鍵を検索する
    gpg --search-keys <names>
  • 公開鍵に署名をする ※署名対象の鍵の名称を指定する
    gpg --lsign-key <name>

ファイルの暗号化(公開鍵)

  • 公開鍵をエクスポート
    gpg -o <(out)pubkey-filename> -a --export <email-address>
  • 公開鍵をインポート
    gpg --import <pubkey-filename>
  • インポートした公開鍵に署名
    gpg --sign-key <email-address>
  • ファイルを暗号化(公開鍵)
    gpg -e -a -r <email-address> <target-file-name>
  • ファイルを復号(暗号鍵)
    gpg <encrypted-file-name>

ファイルの暗号化(共通鍵)

  • ファイルを暗号化  gpg -c <file-name>
  • ファイルを復号
    gpg <file-name>
    gpg --decrypt <encrypted-file-name>

ファイルの署名

  • ファイルに署名 ※署名ファイルを作成
    • バイナリのOpenPGP形式(拡張子.pgp)
      gpg -s <filename>
      gpg --sign <filename>
    • ASCII形式(拡張子.asc)
      gpg -s -a <filename>
    • 出力するファイル名を指定
      gpg -o <(out)signed-filename> --sign <target-filename>
    • 元データを含めた署名ファイル
      gpg --clear-sign <filename>
  • 署名情報のみのファイルを作成
    • バイナリのOpenPGP形式(拡張子.sig)
      gpg --detach-sign <filename>
    • ASCII形式(拡張子.asc)
      gpg --detach-sign -a <filename>
  • 署名されたファイルを検証
    • 署名ファイルを検証
      gpg --verify <signed-filename.gpg>
      gpg --verify <signed-filename.asc>
    • 署名情報のみのファイルを検証 ※同一フォルダに元データのファイルを配置しておく必要がある
      gpg --verify <signed-filename.sig>
      gpg --verify <signed-filename.sig> <renamed-datafile> ※元データのファイル名を変更した場合
  • 署名されたファイルから元データを復元
    gpg <signed-filename.gpg>

署名のフォーマット

ASCIIのOpenPGP形式

-----BEGIN PGP MESSAGE-----
-----END PGP MESSAGE-----

関連サイト

関連ツール

  • GPG Tools
    • GPG Suite

関連用語