モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)
目次目次を開く/閉じる

GnuPG チートシート

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2020/02/12
最終更新最終更新
2022/06/19
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    Pythonでデータ解析と自動化ツールを開発しています。DjangoでのWeb開発も得意です!

    0
    ステッカーを贈るとは?

    ファイルやメールの暗号化を行うための PGP (Pretty Good Privacy) の別実装である GNU Privacy Guard (GnuPG, GPG) について基本的なコマンドを記載します。通信の暗号化を行う SSL/TLS と区別します。例えば Thunderbird では GnuPG を利用するための Enigmail というアドオンが存在します。2020 年の夏には、GnuPG とは別の PGP 実装である OpenPGP が標準サポートされる予定です。

    鍵の作成

    GPG のインストール

    apt update && apt install -y gpg
    

    秘密鍵と公開鍵のペアを作成、秘密鍵にパスワードを設定

    gpg --gen-key
    
    Real name: myname
    Email address: myname@gmail.com
    

    公開鍵と秘密鍵のペアは二つ作成されます。参考 Using OpenPGP subkeys in Debian development

    pubsec に対して、それぞれ subssb (Secret SuBkey) が subkey です。

    公開鍵の一覧

    gpg --list-keys --with-subkey-fingerprints
    
    /root/.gnupg/pubring.kbx
    ------------------------
    pub   rsa3072 2020-02-12 [SC] [expires: 2022-02-11]
          6B9911CA3B1A3357D7C18FC09FD02D27A10CE40A
    uid           [ultimate] myname <myname@gmail.com>
    sub   rsa3072 2020-02-12 [E] [expires: 2022-02-11]
          56DD07F4E89478108AC8F9BA8E29C0A8270D3619
    

    秘密鍵の一覧

    gpg --list-secret-keys --with-subkey-fingerprints
    
    /root/.gnupg/pubring.kbx
    ------------------------
    sec   rsa3072 2020-02-12 [SC] [expires: 2022-02-11]
          6B9911CA3B1A3357D7C18FC09FD02D27A10CE40A
    uid           [ultimate] myname <myname@gmail.com>
    ssb   rsa3072 2020-02-12 [E] [expires: 2022-02-11]
          56DD07F4E89478108AC8F9BA8E29C0A8270D3619
    

    6B9911CA3B1A3357D7C18FC09FD02D27A10CE40A56DD07F4E89478108AC8F9BA8E29C0A8270D3619 は公開鍵のハッシュです。Key ID ともよばれます。鍵のペアを識別するためには Key ID または uid myname <myname@gmail.com> を利用します。

    gpg --fingerprint 6B9911CA3B1A3357D7C18FC09FD02D27A10CE40A
    gpg --fingerprint 56DD07F4E89478108AC8F9BA8E29C0A8270D3619
    gpg --fingerprint "myname <myname@gmail.com>"
    

    出力はすべて同じです。

    pub   rsa3072 2020-02-12 [SC] [expires: 2022-02-11]
          6B99 11CA 3B1A 3357 D7C1  8FC0 9FD0 2D27 A10C E40A
    uid           [ultimate] myname <myname@gmail.com>
    sub   rsa3072 2020-02-12 [E] [expires: 2022-02-11]
    

    公開鍵をインターネットに公開

    ファイルをやり取りする相手に、何らかの方法で自分の公開鍵を渡す必要があります。ただし、PGP の枠組みにおいて SSL/TLS の認証局に相当するものは存在していないため、第三者に自分の公開鍵を署名してもらう必要はありません。利便性のため公開鍵を共有するための Web サービスがいくつか存在します。よく利用されるものの一つが keyserver.ubuntu.com です。

    以下のコマンドでアップロードできます。

    gpg --keyserver keyserver.ubuntu.com --send-key 6B9911CA3B1A3357D7C18FC09FD02D27A10CE40A
    

    しばらくすると公開されます

    別の PC で公開鍵をダウンロードするためには以下のようにします。

    gpg --keyserver keyserver.ubuntu.com --recv-keys 6B9911CA3B1A3357D7C18FC09FD02D27A10CE40A
    
    gpg: directory '/root/.gnupg' created
    gpg: keybox '/root/.gnupg/pubring.kbx' created
    gpg: /root/.gnupg/trustdb.gpg: trustdb created
    gpg: key 9FD02D27A10CE40A: public key "myname <myname@gmail.com>" imported
    gpg: Total number processed: 1
    gpg:               imported: 1
    

    公開鍵は pub と sub の両方がダウンロードされています。

    root@6eb0420fdcfb:/# gpg --list-keys --with-subkey-fingerprints
    /root/.gnupg/pubring.kbx
    ------------------------
    pub   rsa3072 2020-02-12 [SC] [expires: 2022-02-11]
          6B9911CA3B1A3357D7C18FC09FD02D27A10CE40A
    uid           [ unknown] myname <myname@gmail.com>
    sub   rsa3072 2020-02-12 [E] [expires: 2022-02-11]
          56DD07F4E89478108AC8F9BA8E29C0A8270D3619
    

    秘密鍵は keyserver にアップロードされておらず、ダウンロードもされていません。

    root@6eb0420fdcfb:/# gpg --list-secret-keys
    root@6eb0420fdcfb:/#
    

    鍵のファイル出力

    公開鍵と秘密鍵はファイル出力して共有することもできます。秘密鍵をバックアップして別の PC に保存する際にも利用します。-a で ascii 出力できます。

    公開鍵 (subkey を含む)

    gpg -a --export 6B9911CA3B1A3357D7C18FC09FD02D27A10CE40A > pub.txt
    gpg --import pub.txt
    

    秘密鍵と公開鍵 (subkey を含む)

    gpg -a --export-secret-key 6B9911CA3B1A3357D7C18FC09FD02D27A10CE40A > sec.txt
    gpg --import sec.txt
    

    暗号化、復号

    通信相手の公開鍵を import しておき、それを用いて暗号化します。今回は簡単のため、受信する uid に自分を指定しています。

    echo hello > hello.txt
    gpg --recipient myname@gmail.com --encrypt hello.txt
    

    受信したユーザは自分の秘密鍵で復号します。

    gpg --decrypt hello.txt.gpg
    
    gpg: encrypted with 3072-bit RSA key, ID 8E29C0A8270D3619, created 2020-02-12
          "myname <myname@gmail.com>"
    hello
    

    実際には更に送信者の秘密鍵で署名し、受信したユーザは送信者の公開鍵で署名を検証します。

    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    Pythonでデータ解析と自動化ツールを開発しています。DjangoでのWeb開発も得意です!

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事

      • 使い所が難しいマイナーな運用コマンド
        コマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
        けんちゃんけんちゃん12/1/2022に更新
        いいねアイコン画像0
      • ipコマンドの基本的な使い方
        ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
        こもれびさんこもれびさん3/8/2017に更新
        いいねアイコン画像0
      • プロセス関連のコマンド
        サムネイル画像-7b5901f600
        プロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
        kenken12/27/2021に更新
        いいねアイコン画像0
      • rpmとyumのチートシート
        サムネイル画像-f69c6665b8
        rpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
        まるたんまるたん3/2/2022に更新
        いいねアイコン画像0
      • メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識
        メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...
        しおまめしおまめ9/30/2017に更新
        いいねアイコン画像0